OpenBB-finance/OpenBB · error · OpenBBError

{symbol} was not found in the Cboe options directory.

Error message

{symbol} was not found in the Cboe options directory.

What it means

Raised by the Cboe options_chains fetcher when the uppercased, cleaned symbol is not in the company directory fetched from Cboe (SYMBOLS.index after set_index on ticker). This is a pre-flight validation: symbols not listed as optionable companies on Cboe are rejected before any options URL is requested. It is an OpenBBError, i.e. a hard input error.

Source

Thrown at openbb_platform/providers/cboe/openbb_cboe/models/options_chains.py:73

        credentials: dict[str, str] | None,
        **kwargs: Any,
    ) -> dict:
        """Return the raw data from the Cboe endpoint."""
        # pylint: disable=import-outside-toplevel
        from openbb_cboe.utils.helpers import (
            TICKER_EXCEPTIONS,
            get_company_directory,
            get_index_directory,
        )
        from openbb_core.provider.utils.helpers import amake_request

        symbol = query.symbol.replace("^", "").split(",")[0].upper()
        INDEXES = await get_index_directory(use_cache=query.use_cache)
        SYMBOLS = await get_company_directory(use_cache=query.use_cache)
        INDEXES = INDEXES.set_index("index_symbol")

        if symbol not in SYMBOLS.index:
            raise OpenBBError(f"{symbol} was not found in the Cboe options directory.")

        quotes_url = (
            f"https://cdn.cboe.com/api/global/delayed_quotes/options/_{symbol}.json"
            if symbol in TICKER_EXCEPTIONS or symbol in INDEXES.index
            else f"https://cdn.cboe.com/api/global/delayed_quotes/options/{symbol}.json"
        )
        results = await amake_request(quotes_url)
        return results  # type: ignore

    @staticmethod
    def transform_data(
        query: CboeOptionsChainsQueryParams,
        data: dict,
        **kwargs: Any,
    ) -> AnnotatedResult[CboeOptionsChainsData]:
        """Transform the data to the standard format."""
        # pylint: disable=import-outside-toplevel
        from pandas import DataFrame, DatetimeIndex, Series, to_datetime

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Verify the symbol actually has listed options (check cboe.com/quotes/all-options)
  2. If the symbol is genuinely new, retry with use_cache=False to refresh the directory
  3. Catch OpenBBError and skip non-optionable symbols in batch jobs

Example fix

// before
chain = obb.equity.options.chains('FAKETICK', provider='cboe')  # OpenBBError

// after
chain = obb.equity.options.chains('AAPL', provider='cboe', use_cache=False)
Defensive patterns

Strategy: validation

Validate before calling

async def is_optionable(symbol: str, use_cache: bool = True) -> bool:
    from openbb_cboe.utils.helpers import get_company_directory
    sym = symbol.replace('^', '').split(',')[0].upper()
    d = await get_company_directory(use_cache=use_cache)
    return sym in set(d.index)

Type guard

async def is_optionable(symbol: str) -> bool:
    from openbb_cboe.utils.helpers import get_company_directory
    d = await get_company_directory(use_cache=False)
    return symbol.replace('^', '').upper() in set(d.index)

Try / catch

from openbb_core.app.model.abstract.error import OpenBBError
try:
    chain = obb.equity.options.chains(sym, provider='cboe')
except OpenBBError as e:
    if 'not found in the Cboe options directory' in str(e):
        chain = None  # symbol not optionable; skip

Prevention

When it happens

Trigger: Calling obb.equity.options.chains('NOTOPTIONABLE', provider='cboe') for a stock with no listed options; typo'd symbols; tickers not on Cboe's optionable list (many OTC/small caps). Note the directory is fetched with use_cache - a stale cache can also reject valid new listings.

Common situations: Small-cap or OTC symbols without options; recently listed options not yet in a cached directory; symbols containing '^' or commas handled by the normalization at the top of the function.

Related errors


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