{"record":{"id":"bc695dc4b27d3f39","repo":"OpenBB-finance/OpenBB","slug":"greeks-are-not-available","errorCode":null,"errorMessage":"Greeks are not available.","messagePattern":"Greeks are not available\\.","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/provider/utils/options_chains_properties.py","lineNumber":216,"sourceCode":"\n    @property\n    def total_volume(self) -> dict:\n        \"\"\"Return volume stats as a nested dictionary with keys: total, expiration, strike.\n\n        Both, \"expiration\" and \"strike\", contain a list of records with fields:\n        Calls, Puts, Total, Net Percent, PCR.\n        \"\"\"\n        return self._get_stat(\"volume\")\n\n    @property\n    def total_dex(self) -> dict:\n        \"\"\"Return Delta Dollars (DEX) as a nested dictionary with keys: total, expiration, strike.\n\n        Both, \"expiration\" and \"strike\", contain a list of records with fields:\n        Calls, Puts, Total, Net Percent, PCR.\n        \"\"\"\n        if not self.has_greeks:\n            raise OpenBBError(\"Greeks are not available.\")\n        return self._get_stat(\"DEX\")\n\n    @property\n    def total_gex(self) -> dict:\n        \"\"\"Return Gamma Exposure stats as a nested dictionary with keys: total, expiration, strike.\n\n        Both, \"expiration\" and \"strike\", contain a list of records with fields:\n        Calls, Puts, Total, Net Percent, PCR.\n        \"\"\"\n        if not self.has_greeks:\n            raise OpenBBError(\"Greeks are not available.\")\n        return self._get_stat(\"GEX\")\n\n    @staticmethod\n    def _identify_price_col(\n        df: \"DataFrame\",\n        option_type: Literal[\"call\", \"put\"],\n        bid_ask: Literal[\"bid\", \"ask\"],","sourceCodeStart":198,"sourceCodeEnd":234,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/provider/utils/options_chains_properties.py#L198-L234","documentation":"Raised by the OptionsChainsData.total_dex property. Delta Dollars (DEX) requires per-contract delta, which the provider did not include, so has_greeks is False; the property guards with that flag and raises OpenBBError instead of returning misleading zeros. The sibling total_gex property raises the identical message for Gamma Exposure.","triggerScenarios":"Calling result.total_dex (or total_gex) on a chains response from a provider that does not return greeks columns (delta/gamma), e.g. a delay-free quote-only provider or a provider without an options-greeks tier.","commonSituations":"Mixing providers: code written against a greeks-rich provider breaks when routed to a provider without them; free API tiers that omit greeks.","solutions":["Guard with result.has_greeks before accessing total_dex/total_gex","Switch to a provider that returns greeks for the symbol (e.g. deribit for crypto, tradier/intraday tiers for equities)","Compute exposure from to_df() output only for the columns that exist"],"exampleFix":"# before\ndex = res.total_dex  # OpenBBError: Greeks are not available.\n\n# after\ndex = res.total_dex if res.has_greeks else None\nif dex is None:\n    print(\"provider returned no greeks; skipping exposure stats\")","handlingStrategy":"validation","validationCode":"if res.has_greeks:\n    dex = res.total_dex\nelse:\n    dex = None  # or raise your own feature-missing error","typeGuard":"def can_compute_dex(res) -> bool:\n    return res.has_greeks and (\"underlying_price\" in res.dataframe.columns or res.last_price is not None)","tryCatchPattern":"from openbb_core.app.model.abstract.error import OpenBBError\n\ntry:\n    dex = res.total_dex\nexcept OpenBBError as e:\n    if \"Greeks are not available\" in str(e):\n        dex = None  # documented degradation: provider lacks greeks\n    else:\n        raise","preventionTips":["Branch every DEX/GEX/strangle computation on res.has_greeks","Choose providers that return delta for symbols where exposure stats matter","Write tests with both greeks-rich and greeks-free fixtures so missing coverage is explicit"],"tags":["options","greeks","dex","derivatives"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}