OpenBB-finance/OpenBB · error · ValueError

Please provide data with only one symbol and columns for OHL

Error message

Please provide data with only one symbol and columns for OHLC.

What it means

Thrown by the Aroon charting view in the OpenBB technical extension when the OHLC data handed to the chart contains more than one unique value in the 'symbol' column. The technical indicator plotting backend (PlotlyTA) can only render indicators for a single instrument at a time, so the view rejects multi-symbol frames up front. The data comes either from kwargs['data'] (a DataFrame) or by converting the attached OBBject results to a DataFrame.

Source

Thrown at openbb_platform/extensions/technical/openbb_technical/technical_views.py:71

    def technical_aroon(**kwargs) -> tuple["OpenBBFigure", dict[str, Any]]:
        """Technical Aroon Chart."""
        # pylint: disable=import-outside-toplevel
        from openbb_charting.core.plotly_ta.ta_class import PlotlyTA
        from openbb_core.app.utils import basemodel_to_df
        from pandas import DataFrame

        if "data" in kwargs and isinstance(kwargs["data"], DataFrame):
            data = kwargs["data"]
        else:
            data = basemodel_to_df(
                kwargs["obbject_item"], index=kwargs.get("index", "date")
            )

        if "date" in data.columns:
            data = data.set_index("date")

        if "symbol" in data.columns and len(data.symbol.unique()) > 1:
            raise ValueError(
                "Please provide data with only one symbol and columns for OHLC."
            )

        symbol = kwargs.get("symbol", "")

        volume = kwargs.get("volume") is True
        title = f"Aroon Indicator & Oscillator {symbol}"

        length = kwargs.get("length", 25)
        scalar = kwargs.get("scalar", 100)
        symbol = kwargs.get("symbol", "")

        ta = PlotlyTA()
        fig = ta.plot(  # type: ignore
            data,
            dict(aroon=dict(length=length, scalar=scalar)),
            title,
            False,

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Filter the DataFrame to a single symbol before charting: data = data[data['symbol'] == 'AAPL']
  2. Fetch data for one symbol only: obb.equity.price.historical(symbol='AAPL')
  3. Loop over symbols and call the chart function once per symbol slice

Example fix

# before
res = obb.equity.price.historical(symbol='AAPL,MSFT')
res.charting()

# after
res = obb.equity.price.historical(symbol='AAPL')
res.charting()
Defensive patterns

Strategy: validation

Validate before calling

if 'symbol' in df.columns and df['symbol'].nunique() > 1:
    raise ValueError('chart one symbol at a time')
df = df[df['symbol'] == target_symbol] if 'symbol' in df.columns else df

Type guard

def is_single_symbol(df: pd.DataFrame) -> bool:
    return 'symbol' not in df.columns or df['symbol'].nunique() == 1

Try / catch

try:
    res.charting()
except ValueError as e:
    if 'only one symbol' in str(e):
        for sym, g in df.groupby('symbol'):
            chart_one(g)

Prevention

When it happens

Trigger: Calling obbject.charting() (or chart/technical/aroon route) on results of a multi-symbol query, e.g. obb.equity.price.historical(symbol='AAPL,MSFT') then charting it; or passing a DataFrame with a 'symbol' column containing 2+ distinct symbols via the data kwarg after 'date' is set as index.

Common situations: Developer fetches historical prices for a watchlist/basket in one OBB call and then calls .charting(); provider returns data for multiple symbols merged into one frame; user supplies their own multi-ticker DataFrame to the Aroon view.

Related errors


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