OpenBB-finance/OpenBB · warning · EmptyDataError

No data found for the given symbol(s).

Error message

No data found for the given symbol(s).

What it means

EmptyDataError raised when the ticker extraction loop for futures info completed without exceptions but appended zero results — meaning every get_ticker_data task returned nothing usable. It distinguishes 'the API answered but gave nothing' from the transport failure case (263).

Source

Thrown at openbb_platform/providers/deribit/openbb_deribit/models/futures_info.py:213

        **kwargs: Any,
    ) -> list:
        """Extract data from the response."""
        # pylint: disable=import-outside-toplevel
        import asyncio  # noqa
        from openbb_core.provider.utils.errors import EmptyDataError, OpenBBError
        from openbb_deribit.utils.helpers import get_ticker_data

        result: list = []
        symbols = query.symbol.split(",")
        try:
            tasks = [get_ticker_data(symbol) for symbol in symbols]
            for task in asyncio.as_completed(tasks, timeout=10):
                result.append(await task)
        except Exception as e:  # pylint: disable=broad-except
            raise OpenBBError(f"Error fetching data: {e}") from e

        if not result:
            raise EmptyDataError("No data found for the given symbol(s).")

        return sorted(result, key=lambda x: symbols.index(x["instrument_name"]))

    @staticmethod
    def transform_data(
        query: DeribitFuturesInfoQueryParams,
        data: list,
        **kwargs: Any,
    ) -> list[DeribitFuturesInfoData]:
        """Transform the data."""
        return [DeribitFuturesInfoData(**d) for d in data]

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Re-fetch the instrument list (get_instruments) and re-confirm the symbol is still actively quoted.
  2. Use a perpetual (e.g. BTC-PERPETUAL) instead of dated contracts that expire.
  3. Treat EmptyDataError as a normal empty result in pipelines and skip/log rather than fail.
Defensive patterns

Strategy: try-catch

Validate before calling

# confirm the instrument is still actively quoted before the ticker call
from openbb_deribit.utils.helpers import get_instruments
names = {d["instrument_name"] for d in asyncio.run(get_instruments("all", "future"))}
symbols = [s for s in symbols if s in names]  # drop expired/rolled contracts

Try / catch

from openbb_core.provider.utils.errors import EmptyDataError
try:
    res = obb.derivatives.futures.info(symbol=s, provider="deribit")
except EmptyDataError:
    res = None  # contract likely expired between validation and fetch; refresh list

Prevention

When it happens

Trigger: All requested symbols resolved to instruments Deribit no longer returns ticker data for (just-expired contracts), or responses that were empty result objects. Because symbols were already validated in the query model, this path is rare and usually means the instrument expired between validation and the ticker call.

Common situations: Querying a contract on its expiry day, or a job that cached a symbol list hours/days earlier and replays it after Deribit rolled contracts.

Related errors


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