Files
OpenBB/openbb_platform/providers/cboe
dlee-bq 7f49354884 [BugFix] openbb-cboe: Fix cache lock so that concurrent callers in separate processes don't hang (#7796)
* fix cboe's cache lock so that concurrent callers in separate processes don't hang

* fix test coverage and ty check

* more test failure

* more test failure

* more Windows Python 3.10 test failure

* Move lint path filter into a job so required checks always report

lint-openbb-platform.yml used `on.pull_request.paths` to skip PRs that only
touch api/extensions/providers/obbject_extensions. A workflow skipped by a
trigger filter never reports its checks, so the required "General Code
Linting" and "Markdown Linting" checks stayed pending forever on those PRs.

Detect relevant changes in a `changes` job instead and gate the lint jobs with
a job-level `if:`. Skipped jobs report success, so required checks resolve.
The gate fails closed: if detection fails, the lint jobs still run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: dlee-bq <325002271+dlee-bq@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:50:40 +00:00
..
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00

OpenBB Cboe Provider Extension

This package adds the openbb-cboe provider and router extension to the Open Data Platform by OpenBB.

It implements the public market data published by Cboe Global Markets across its operating jurisdictions — US options, equities and futures, Cboe Europe indices, and the Cboe Australia (CXA) index series — as OpenBB Platform endpoints. No API key is required.

Installation

Install from PyPI with:

pip install openbb-cboe

To enable the Plotly options-analysis charts, install with the charting extra:

pip install "openbb-cboe[charting]"

Then build the Python static assets by running:

openbb-build

Quick Start

The fastest way to get started is by connecting to the OpenBB Workspace as a custom backend.

Start Server

openbb-api

This starts the FastAPI server over localhost on port 6900.

Add to Workspace

See the documentation here for more details. The extension ships an apps.json describing a ready-made dashboard with Indices, Equities, Volatility, and Options tabs.

Conditional Registration

The Cboe models implement OpenBB standard models — EquityQuote, IndexSnapshots, OptionsChains, and so on — which are normally served by the openbb-equity, openbb-index, openbb-etf, and openbb-derivatives extensions. When those are installed, Cboe registers as a provider under their existing commands and no Cboe-specific routes are added.

When they are absent, the same data is served from this extension's own router under /cboe/..., so installing openbb-cboe on its own still exposes every dataset. Each namespace resolves independently: installing only openbb-index moves the index models under obb.index.* while the equity, options, and futures commands stay under obb.cboe.*.

The bundled apps.json resolves its widget IDs the same way, and drops the Plotly options charts when openbb-charting is not installed.

Coverage

Endpoints

from openbb import obb

obb.cboe
# /cboe
#     equity
#         historical
#         quote
#         search
#         symbol_choices        <- utility endpoint serving choices to Workspace widgets
#     futures
#         curve
#         roots
#         settlement_prices
#     index
#         available
#         constituents
#         constituent_choices   <- utility endpoint
#         documents
#         historical
#         search
#         snapshots
#         symbol_choices        <- utility endpoint
#     options
#         chains
#         get_tickers           <- utility endpoint
#         smile                 <- Plotly chart widget, requires openbb-charting
#         spreads
#         stats                 <- Plotly chart widget, requires openbb-charting
#         straddle
#         strangle
#         surface               <- Plotly chart widget, requires openbb-charting
#         term_structure        <- Plotly chart widget, requires openbb-charting

Jurisdictions

Cboe operates markets in the US, UK/Europe, Canada, and Australia. This extension covers every jurisdiction that publishes a free market data feed:

  • United States — the delayed options chain with greeks, delayed equity and index quotes, the VIX futures term structure, futures settlement prices, and the complete daily history of all 941 Cboe-calculated indices.
  • Europe — the 178 Cboe Europe proprietary indices, their current levels, and current-day constituent quotes for the 57 indices that publish them.
  • Australia — the Cboe Australia (CXA) 200 index series, its current levels, and the full index composition with weights.

Datasets

  • Options chains — the delayed US options chain, carrying implied volatility, all five greeks, and DEX/GEX. Underlying quote data is returned in extra["results_metadata"].
  • Options analysis — long straddles, strangles, and all four vertical spreads priced at every expiration, plus IV smile/skew, a 3-D surface over DTE and strike (choose IV or any greek), open interest and volume statistics, and the price/IV term structure.
  • Index levels — daily history from each index's inception, sourced from Cboe's published per-symbol files. One-minute levels are available for the most recent session.
  • Index constituents — European indices return current-day constituent quotes; the Australian CXA indices return the index composition with weights, ISIN, SEDOL, GICS, float ratio, and free-float adjusted market capitalization.
  • Index reference — the full directory across all three jurisdictions, annotated with the Cboe Global Indices feed channel (CGI, MSTAR, FTSE, MSCI, CCCY, INAV, MAIN), plus a catalog of every published factsheet, methodology, governance, and constituents document.
  • Equities — delayed quotes with 30/60/90-day implied and realized volatility, daily and one-minute historical prices, and the Cboe US company directory.
  • Futures — the VIX (VX) term structure at mid-morning TWAP or end-of-day levels, the futures roots directory, and current or final settlement prices.

Example

from openbb import obb

# The full VIX history, from 1990.
vix = obb.cboe.index.historical(symbol="VIX", provider="cboe")

# Current levels for every Cboe Australia index.
au = obb.cboe.index.snapshots(region="au", provider="cboe")

# CXA 200 composition, with weights.
cxa = obb.cboe.index.constituents(symbol="X2C", provider="cboe")

# The delayed options chain, with greeks.
chains = obb.cboe.options.chains(symbol="SPY", provider="cboe")

# Long straddle pricing at every expiration.
straddle = obb.cboe.options.straddle(symbol="SPY")

# The VIX futures term structure as of two past sessions.
curve = obb.cboe.futures.curve(symbol="VX_EOD", date="2024-06-25,2024-06-26", provider="cboe")

# The methodology documents from the Cboe index documents catalog.
docs = obb.cboe.index.documents(category="Methodology", provider="cboe")

# Every document that applies to one index, factsheet first.
cxa_docs = obb.cboe.index.documents(symbol="X2C", provider="cboe")

When openbb-index and openbb-derivatives are installed, the same data is reached through the standard namespaces instead — obb.index.snapshots(provider="cboe"), obb.derivatives.options.chains(provider="cboe"), and so on.

Notes

Symbol directories are cached on disk for 24 hours. Pass use_cache=False to bypass the cache; the results of the endpoints themselves are never cached.

Cboe publishes index constituents only for its European and Australian series. The US indices are strategy, settlement, and box-rate indices rather than baskets, and Cboe publishes no component files for them beyond a handful of PDFs surfaced by obb.cboe.index.documents.