{"record":{"id":"45cf98975c419adc","repo":"OpenBB-finance/OpenBB","slug":"error-implied-volatility-field-not-found","errorCode":null,"errorMessage":"Error: 'implied_volatility' field not found.","messagePattern":"Error: 'implied_volatility' field not found\\.","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/provider/utils/options_chains_properties.py","lineNumber":1668,"sourceCode":"            The expiration date, or days until expiry, to use. Enter -1 for all expirations.\n            Large chains (SPY, SPX, etc.) may take a few seconds to process when using -1.\n        moneyness: float\n            The moneyness to target for calculating horizontal skew.\n        underlying_price: Optional[float]\n            Only supply this is if the underlying price is not a returned field.\n\n        Returns\n        --------\n        DataFrame\n            Pandas DataFrame with the results.\n        \"\"\"\n        # pylint: disable=import-outside-toplevel\n        from pandas import DataFrame, concat\n\n        data = self.dataframe\n        expiration: str = \"\"\n        if self.has_iv is False:\n            raise OpenBBError(\"Error: 'implied_volatility' field not found.\")\n\n        data = DataFrame(data[data.implied_volatility > 0])  # type: ignore\n        call_price_col = self._identify_price_col(data, \"call\", \"ask\")\n        put_price_col = self._identify_price_col(data, \"put\", \"ask\")\n\n        if not hasattr(data, \"underlying_price\") and underlying_price is None:\n            raise OpenBBError(\n                \"Error: underlying_price must be provided if underlying_price is not available\"\n            )\n\n        if moneyness is not None and date is None:\n            date = -1\n\n        if moneyness is None and date is None:\n            date = 30\n            moneyness = 20\n\n        if date is None:","sourceCodeStart":1650,"sourceCodeEnd":1686,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/provider/utils/options_chains_properties.py#L1650-L1686","documentation":"Raised by OptionsChainsData.skew() when the has_iv property reports that no implied_volatility field exists anywhere in the chains data. Skew is computed from the IV surface, so chains without IV cannot be processed. has_iv checks for an implied_volatility column with usable values.","triggerScenarios":"Calling chains.skew() on chains loaded from a provider that does not return implied_volatility (e.g. basic/quote-only providers), or after stripping the column via custom DataFrame manipulation.","commonSituations":"Using yfinance or thin crypto providers that omit IV; requesting historical dates for which IV was not computed; mixing manually built DataFrames into OptionsChainsData.","solutions":["Switch to a provider that supplies implied_volatility (e.g. cboe, deribit) for the symbol.","Verify before calling: 'implied_volatility' in chains.dataframe.columns and chains.dataframe.implied_volatility.notna().any().","If you have your own IV model, populate the column first: df['implied_volatility'] = computed_iv.","For historical analysis, choose a provider/date combination with EOD IV data."],"exampleFix":"# before\nskew_df = chains.skew()  # provider has no IV\n\n# after\ndata = obb.derivatives.options.chains('SPY', provider='cboe')\nchains = data.to_chains()\nskew_df = chains.skew()","handlingStrategy":"type-guard","validationCode":"if not chains.has_iv:\n    raise ValueError('provider returned no implied_volatility; switch provider')","typeGuard":"def has_iv(chains) -> bool:\n    return chains.has_iv  # True only when an implied_volatility column with usable values exists","tryCatchPattern":null,"preventionTips":["Check chains.has_iv before any IV-dependent call (skew, surface).","Standardize on providers that ship IV for the asset class (cboe equities, deribit crypto)."],"tags":["options","openbb","implied-volatility","provider"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}