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
- Filter the DataFrame to a single symbol before charting: data = data[data['symbol'] == 'AAPL']
- Fetch data for one symbol only: obb.equity.price.historical(symbol='AAPL')
- 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
- Fetch one ticker per charting call
- Standardize on a helper that slices frames to a single symbol before chart views
- Keep the symbol column until after the slice, then drop it
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
- No close column found in dataframe
- Please make sure that the columns 'High', 'Low', and 'Close
- Error processing indicator {indicator.name}: {e}
- Unknown indicator: {indicator}
- Target column '{target}' not found in data. Choose from {cho
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/2f1a549a182e63b1.
Report an issue: GitHub.