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 DeribitOptionsChainsQueryParams._validate_symbol when the uppercased symbol is not one of the six Deribit option underlyings: BTC, ETH, SOL, XRP, BNB, PAXG. This is a static allow-list (unlike the futures models which fetch symbols live), so it fails fast with no network dependency.
Source
Thrown at openbb_platform/providers/deribit/openbb_deribit/models/options_chains.py:34
from pydantic import Field, field_validator
class DeribitOptionsChainsQueryParams(OptionsChainsQueryParams):
"""Deribit Options Chains Query Parameters Model."""
__json_schema_extra__ = {
"symbol": {
"multiple_items_allowed": False,
"choices": DERIBIT_OPTIONS_SYMBOLS,
}
}
@field_validator("symbol", mode="before", check_fields=False)
@classmethod
def _validate_symbol(cls, v):
"""Validate the symbol."""
if v.upper() not in DERIBIT_OPTIONS_SYMBOLS:
raise ValueError(
f"Invalid Deribit symbol. Supported symbols are: {', '.join(DERIBIT_OPTIONS_SYMBOLS)}",
)
return v
class DeribitOptionsChainsData(OptionsChainsData):
"""Deribit Options Chains Data Model."""
__alias_dict__ = {
"contract_symbol": "instrument_name",
"change_percent": "price_change",
"underlying_symbol": "underlying_index",
"underlying_spot_price": "index_price",
"bid_size": "best_bid_amount",
"ask_size": "best_ask_amount",
"bid": "best_bid_price",
"ask": "best_ask_price",
"implied_volatility": "mark_iv",View on GitHub (pinned to 3e071fcc2c)
Solutions
- Use one of: BTC, ETH, SOL, XRP, BNB, PAXG.
- Note BNB, PAXG, SOL, XRP options are quoted in USDC internally — pass the underlying, not 'USDC'.
- Check the JSON schema choices via the query model's __json_schema_extra__ if building a dynamic UI.
Example fix
# before obb.derivatives.options.chains(symbol="AVAX", provider="deribit") # after obb.derivatives.options.chains(symbol="BTC", provider="deribit")
Defensive patterns
Strategy: validation
Validate before calling
DERIBIT_OPTION_UNDERLYINGS = {"BTC", "ETH", "SOL", "XRP", "BNB", "PAXG"}
sym = sym.strip().upper()
assert sym in DERIBIT_OPTION_UNDERLYINGS, f"use one of {sorted(DERIBIT_OPTION_UNDERLYINGS)}" Type guard
from typing import Literal, TypeGuard
OptionsUnderlying = Literal["BTC", "ETH", "SOL", "XRP", "BNB", "PAXG"]
def is_options_underlying(s: str) -> TypeGuard[OptionsUnderlying]:
return s.strip().upper() in {"BTC", "ETH", "SOL", "XRP", "BNB", "PAXG"} Prevention
- Expose the six underlyings as a dropdown/enum in UIs instead of free text.
- Pass the underlying asset only — never pair names like BTCUSDT.
- Upper-case user input before the call.
When it happens
Trigger: Passing 'BTCUSDT', 'AVAX', 'DOGE', or any underlying Deribit does not list options for. Lowercase input is fine (validator calls .upper()), but any non-listed asset fails.
Common situations: Assuming Deribit lists options for every crypto asset, reusing symbols from other option providers, or copy-paste of exchange-pair formats.
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/01bcc40498fc8286.
Report an issue: GitHub.