OpenBB-finance/OpenBB · error · ValueError

Invalid Deribit symbol. Supported symbols are

Error message

Invalid Deribit symbol. Supported symbols are: {', '.join(DERIBIT_OPTIONS_SYMBOLS)}

What it means

ValueError from get_options_symbols when the requested underlying is not in DERIBIT_OPTIONS_SYMBOLS = [BTC, ETH, SOL, XRP, BNB, PAXG]. Internal guard before mapping the underlying to a quote currency (BNB/PAXG/SOL/XRP -> USDC) and listing option instruments. The options.chains query model performs the same check earlier (error 267), so reaching this means get_options_symbols was called directly.

Solutions

  1. Pass one of BTC, ETH, SOL, XRP, BNB, PAXG (any case).
  2. If Deribit has newly listed option underlyings, upgrade the openbb-deribit package so the allow-list is refreshed.
  3. Prefer the public options.chains endpoint, which surfaces the same constraint at query-param validation time.

Example fix

# before
expiries = await get_options_symbols("AVAX")

# after
expiries = await get_options_symbols("BTC")
Defensive patterns

Strategy: validation

Validate before calling

UNDERLYINGS = {"BTC", "ETH", "SOL", "XRP", "BNB", "PAXG"}
assert symbol.strip().upper() in UNDERLYINGS, f"options underlyings are {sorted(UNDERLYINGS)}"

Type guard

def is_options_underlying(s: str) -> bool:
    return isinstance(s, str) and s.strip().upper() in {"BTC", "ETH", "SOL", "XRP", "BNB", "PAXG"}

Prevention

When it happens

Trigger: Directly calling get_options_symbols('AVAX'), ('bnb' is fine — it uppercases), or any crypto not in the six underlyings. Also reachable if new underlyings exist on Deribit but the static list hasn't been updated in this package version.

Common situations: Using the helper in custom scripts with symbols from other venues, or after Deribit lists a new underlying while the installed openbb-deribit version predates it.

Related errors


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

Appendix: source

Thrown at openbb_platform/providers/deribit/openbb_deribit/utils/helpers.py:119

async def get_options_symbols(symbol: OptionsSymbols = "BTC") -> dict:
    """
    Get a dictionary of contract symbols by expiry.

    Parameters
    ----------
    symbol : OptionsSymbols
        The underlying symbol to get options for. Default is "btc".

    Returns
    -------
    dict[str, str]
        A dictionary of contract symbols by expiry date.
    """
    # pylint: disable=import-outside-toplevel
    from pandas import to_datetime

    if symbol.upper() not in DERIBIT_OPTIONS_SYMBOLS:
        raise ValueError(
            f"Invalid Deribit symbol. Supported symbols are: {', '.join(DERIBIT_OPTIONS_SYMBOLS)}",
        )

    currency = (
        "USDC" if symbol.upper() in ["BNB", "PAXG", "SOL", "XRP"] else symbol.upper()
    )
    instruments = await get_instruments(currency, "option")
    expirations: dict = {}
    all_options = list(
        set(
            d.get("instrument_name")
            for d in instruments
            if d.get("instrument_name").startswith(symbol)
            and d.get("instrument_name").endswith(("-C", "-P"))
        )
    )
    for item in sorted(
        list(

View on GitHub (pinned to 3e071fcc2c)