OpenBB-finance/OpenBB · error · OpenBBError

Chart not found.

Error message

Chart not found.

What it means

Raised in the economic-indicators validator when the requested frequency (mapped from annual/quarter/month/day to A/Q/M/D) is not among the dataflow's available frequency values for the current country+indicator selection. Many IMF indicators are published at only one frequency, so requesting e.g. monthly for an annual-only series fails this cross-check.

Source

Thrown at openbb_platform/core/openbb_core/app/model/obbject.py:359

        -------
        Union[Dict[Hashable, Any], List[Dict[Hashable, Any]]]
            Dictionary of lists or list of dictionaries if orient is "records".
        """
        df = self.to_dataframe(index=None)

        results = df.to_json(
            orient="records",
            date_format="iso",
            date_unit="s",
        )

        return results  # type: ignore

    def show(self, **kwargs: Any) -> None:
        """Display chart."""
        # pylint: disable=no-member
        if not self.chart or not self.chart.fig:
            raise OpenBBError("Chart not found.")
        kwargs.setdefault("command_location", self._route or "")
        show_function: Callable = getattr(self.chart.fig, "show")
        show_function(**kwargs)

    @classmethod
    async def from_query(cls, query: "Query") -> "OBBject":
        """Create OBBject from query.

        Parameters
        ----------
        query : Query
            Initialized query object.

        Returns
        -------
        OBBject[ResultsType]
            OBBject with results.
        """

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Check the `available values` list in the error message and pick one of those frequencies.
  2. Use `frequency='all'` to fetch every frequency the indicator has and filter client-side.
  3. For batches, query each indicator without frequency first (or with 'all') rather than forcing one value.
  4. Use exact words annual/quarter/month/day or single letters A/Q/M/D — not variants like 'quarterly'.

Example fix

# before
res = obb.economy.economic_indicators(provider='imf', symbol='IFS::NGDP_XDC', country='USA', frequency='month')

# after
res = obb.economy.economic_indicators(provider='imf', symbol='IFS::NGDP_XDC', country='USA', frequency='quarter')
Defensive patterns

Strategy: try-catch

Try / catch

try:
    res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c, frequency=f)
except Exception as e:
    if "dimension 'frequency'" in str(e):
        # indicator not published at that frequency: fetch all and filter
        res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c, frequency='all')
    else:
        raise

Prevention

When it happens

Trigger: `symbol='IFS::NGDP_XDC', country='USA', frequency='month'` where GDP nominal is annual/quarter only; requesting 'day' for any standard IFS indicator; frequency values passed as raw letters ('Q') bypass the word map but are still checked against available values.

Common situations: Reusing one frequency across a batch of heterogeneous indicators; assuming daily because the API mentions D in its docs; word/letter mismatch such as 'quarterly' (not in the map, passed through as 'quarterly' and rejected).

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/eaa73602c71323c0. Report an issue: GitHub.