OpenBB-finance/OpenBB · error · OpenBBError
Error: No validated data was found.
Error message
Error: No validated data was found.
What it means
Raised by OptionsChainsData.dataframe when the DataFrame constructed from the validated model dump is empty after the underlying_price handling. It means the provider result object passed validation but contained zero usable rows (or everything was excluded by exclude_unset/exclude_none during the dump), so there is nothing to enrich.
Source
Thrown at openbb_platform/core/openbb_core/provider/utils/options_chains_properties.py:73
self.model_dump(
exclude_unset=True,
exclude_none=True,
)
)
if "underlying_price" not in chains_data.columns and not self.last_price:
raise OpenBBError(
"'underlying_price' was not returned in the provider data."
+ "\n\n Please set the 'last_price' property and try again."
+ "\n\n Note: This error does not impact the standard OBBject `to_df()` method."
)
# Add the underlying price to the DataFrame, or override the existing price.
if self.last_price:
chains_data["underlying_price"] = self.last_price
if chains_data.empty:
raise OpenBBError("Error: No validated data was found.")
if "dte" not in chains_data.columns and "eod_date" in chains_data.columns:
_date = to_datetime(chains_data.eod_date)
temp = DatetimeIndex(chains_data.expiration)
temp_ = temp - _date # type: ignore
chains_data["dte"] = [Timedelta(_temp_).days for _temp_ in temp_]
if "dte" in chains_data.columns:
chains_data = DataFrame(chains_data[chains_data.dte >= 0])
if "dte" not in chains_data.columns and "eod_date" not in chains_data.columns:
today = datetime.today().date()
chains_data["dte"] = chains_data.expiration - today
# Add the breakeven price for each option, and the DEX and GEX for each option, if available.
try:
_calls = DataFrame(chains_data[chains_data.option_type == "call"])
_puts = DataFrame(chains_data[chains_data.option_type == "put"])View on GitHub (pinned to 3e071fcc2c)
Solutions
- Check the raw result first: if res.results is empty or res.to_df().empty, skip the enriched access
- Confirm the symbol actually has listed options on the provider (try another provider to compare)
- Retry during market hours if the provider only populates chains intraday
Example fix
# before
df = res.dataframe # OpenBBError: No validated data was found.
# after
if not res.results:
raise ValueError(f"no options data returned for {symbol}")
df = res.dataframe Defensive patterns
Strategy: validation
Validate before calling
if not res.results:
raise ValueError(f"provider returned no options rows for {symbol}; skip enrichment")
# only now access res.dataframe Try / catch
from openbb_core.app.model.abstract.error import OpenBBError
try:
df = res.dataframe
except OpenBBError as e:
if "No validated data was found" in str(e):
df = res.to_df() # inspect the raw payload to diagnose
if df.empty:
return None # or retry with another provider
raise Prevention
- Check res.results / to_df().empty before any enriched access
- Verify the symbol has listed options before building analytics on it
- Retry against a second provider when the first returns an empty chain
When it happens
Trigger: Calling .dataframe on an OptionsChainsData built from an empty list of contracts; a provider returning an empty chains payload for a symbol with no listed options (some ETFs/OTM-only tickers); constructing OptionsChainsData(results=[]) manually in tests.
Common situations: Querying options for tickers without an options chain, pre-market/weekend when a provider returns an empty payload, or upstream API changes silently returning empty results that still pass validation.
Related errors
- 'underlying_price' was not returned in the provider data.
- Greeks are not available.
- Error: stat must be one of ['open_interest', 'volume', 'dex'
- Error: '{stat}' could not be generated because the underlyin
- Error: column '{column}' not found in data
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/d80b69731dafb535.
Report an issue: GitHub.