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

  1. Use one of: BTC, ETH, SOL, XRP, BNB, PAXG.
  2. Note BNB, PAXG, SOL, XRP options are quoted in USDC internally — pass the underlying, not 'USDC'.
  3. 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

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


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