OpenBB-finance/OpenBB · error · ValueError
Invalid Deribit symbol. Supported symbols are: {', '.join(DE
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.
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)
Solutions
- Pass one of BTC, ETH, SOL, XRP, BNB, PAXG (any case).
- If Deribit has newly listed option underlyings, upgrade the openbb-deribit package so the allow-list is refreshed.
- 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
- Prefer the options.chains router so validation happens at the query layer.
- Upgrade openbb-deribit when Deribit lists new underlyings.
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
- Invalid Deribit symbol. Supported symbols are: {', '.join(DE
- Invalid Deribit symbol, {symbol}. Supported symbols are: {',
- Symbol is required.
- Invalid Deribit symbol: {symbol}. Supported symbols are: {',
- Invalid symbol: {s}. Valid symbols are: {all_symbols}
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/7b082b79b0202743.
Report an issue: GitHub.