OpenBB-finance/OpenBB · warning · EmptyDataError
The response was returned empty.
Error message
The response was returned empty.
What it means
Raised by the Cboe futures_curve fetcher when the DataFrame returned by get_vx_current/get_vx_by_date (Cboe volatility futures, VX) is empty. The helper downloads the VX EOD or AM settlement file; an empty frame means no settlement rows for the requested symbol type or date. It is an EmptyDataError.
Source
Thrown at openbb_platform/providers/cboe/openbb_cboe/models/futures_curve.py:90
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Return the raw data from the CBOE endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_cboe.utils.vix import get_vx_by_date, get_vx_current
symbol = "am" if query.symbol == "VX_AM" else "eod"
if query.date is not None:
data = await get_vx_by_date(
date=query.date, # type: ignore
vx_type=symbol,
use_cache=False,
)
else:
data = await get_vx_current(vx_type=symbol, use_cache=False)
if data.empty:
raise EmptyDataError("The response was returned empty.")
return data.to_dict("records")
@staticmethod
def transform_data(
query: CboeFuturesCurveQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[CboeFuturesCurveData]:
"""Transform data."""
return [CboeFuturesCurveData.model_validate(d) for d in data]
View on GitHub (pinned to 3e071fcc2c)
Solutions
- Use a recent trading day for the date parameter
- Try the other symbol variant (VX_AM vs VX/eod)
- Retry later if querying intraday during feed publication windows
- Catch EmptyDataError and report 'no settlement data for this date'
Example fix
// before curve = obb.derivatives.futures.curve(symbol='VX', provider='cboe', date='2026-08-09') # Sunday -> EmptyDataError // after curve = obb.derivatives.futures.curve(symbol='VX', provider='cboe', date='2026-08-13') # trading day
Defensive patterns
Strategy: validation
Validate before calling
from pandas.tseries.holiday import USFederalHolidayCalendar
from datetime import datetime, timedelta
def last_trading_day() -> str:
cal = USFederalHolidayCalendar()
d = datetime.now() - timedelta(days=1)
holidays = cal.holidays(start=d - timedelta(days=10), end=d)
while d.weekday() >= 5 or d in holidays:
d -= timedelta(days=1)
return d.strftime('%Y-%m-%d') Try / catch
try:
curve = obb.derivatives.futures.curve(symbol='VX', provider='cboe', date=d)
except EmptyDataError:
curve = None # no settlement published for this date/type Prevention
- Only pass trading-day dates to the date parameter
- Alternate between VX and VX_AM when one has no data
- Avoid querying during settlement publication windows
When it happens
Trigger: Calling obb.derivatives.futures.curve(symbol='VX', provider='cboe', date=...) where the date is a non-trading day, a date with no published settlement, or before the VX_AM data starts; querying on a weekend/holiday without a date (stale empty cache file).
Common situations: Weekend/holiday queries; historical dates predating the selected vx_type; Cboe feed files briefly empty right after rollover.
Related errors
- Error: No data to plot.
- OBBject Extension Error -> An OBBject extension that acts
- [Empty] -> {e}
- Error: No validated data was found.
- Expiration field not found in the data.
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/ece6318fea77c5bf.
Report an issue: GitHub.