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_datetimeView on GitHub (pinned to 3e071fcc2c)
Solutions
- Verify the symbol actually has listed options (check cboe.com/quotes/all-options)
- If the symbol is genuinely new, retry with use_cache=False to refresh the directory
- 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
- Pre-filter symbol universes against Cboe's company directory
- Pass use_cache=False for newly listed optionable names
- Treat this OpenBBError as non-optionable, not as a transport failure
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
- Error: Moneyness must be expressed as a percentage between 0
- Error: option_type must be either 'call' or 'put'
- No data to process!
- Error: No {target} field found.
- Last price must be provided for OTM/ITM options filtering, a
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/446fd87ef466e11d.
Report an issue: GitHub.