OpenBB-finance/OpenBB · error · OpenBBError

{messages}

Error message

{messages}

What it means

OpenBBError raised when every requested symbol produced a soft-failure message ('Symbol not found' or 'No data found for symbol') and none produced rows. The per-symbol messages collected during gather are aggregated into a single OpenBBError whose payload is the message list, so a multi-symbol market-cap request fails loudly instead of returning an empty frame.

Source

Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/historical_market_cap.py:131

                )

            if not response:
                msg = f"No data found for symbol: {symbol}"
                messages.append(msg)

            if response.get("historical_data"):
                data = response.get("historical_data", {})
                result = [
                    {"symbol": symbol, **item} for item in data if item.get("value")
                ]
                results.extend(result)

            return

        await asyncio.gather(*[get_one(symbol) for symbol in symbols])

        if messages and not results:
            raise OpenBBError(messages)

        if messages and results:
            for message in messages:
                warn(message)

        if not results:
            raise EmptyDataError("The response was returned empty.")

        return results

    @staticmethod
    def transform_data(
        query: IntrinioHistoricalMarketCapQueryParams, data: list[dict], **kwargs: Any
    ) -> list[IntrinioHistoricalMarketCapData]:
        """Return the transformed data."""
        return [
            IntrinioHistoricalMarketCapData.model_validate(d)
            for d in sorted(data, key=lambda x: x["date"])

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Check the messages list inside the error - it names each failing symbol and why.
  2. Validate each ticker with a quote/profile call before requesting market cap.
  3. Retry with only the symbols that resolve.
  4. For partial failures, request symbols individually and skip the ones that warn.

Example fix

# before
res = obb.equity.fundamental.market_cap(symbol='FOO,BAR', provider='intrinio')

# after - per-symbol isolation so good symbols survive
frames = []
for s in ['FOO', 'BAR']:
    try:
        frames.append(obb.equity.fundamental.market_cap(symbol=s, provider='intrinio').to_df())
    except Exception as e:
        print(f'skip {s}: {e}')
Defensive patterns

Strategy: try-catch

Validate before calling

# validate symbols exist before the batch call
valid = []
for s in symbols:
    try:
        obb.equity.price.quote(symbol=s, provider='intrinio')
        valid.append(s)
    except Exception:
        pass

Try / catch

from openbb_core.provider.exceptions import OpenBBError
try:
    res = obb.equity.fundamental.market_cap(symbol=','.join(syms), provider='intrinio')
except OpenBBError as e:
    bad = [m for m in str(e) if 'not found' in m]  # inspect messages list
    good = [s for s in syms if s not in bad]
    if good:
        res = obb.equity.fundamental.market_cap(symbol=','.join(good), provider='intrinio')

Prevention

When it happens

Trigger: equity/fundamental/market_cap(symbol='BAD1,BAD2', provider='intrinio') where each get_one hits 'Cannot look up this item/identifier combination' (mapped to 'Symbol not found: X') or returns an empty dict ('No data found for symbol: X'), so messages is non-empty and results is empty.

Common situations: Misspelled or delisted tickers in a batch; symbols not in Intrinio's universe; wrong asset class (crypto/forex ticker) passed to an equity endpoint; date range with no published market cap values.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/767c4f23432f2b29. Report an issue: GitHub.