OpenBB-finance/OpenBB · error · ValueError
Measure '{measure}' is only available for monthly frequency.
Error message
Measure '{measure}' is only available for monthly frequency. What it means
Raised by the US research-portfolios helper when measure is 'number_of_firms' or 'firm_size' together with frequency='annual'. Those two sheets exist only in the monthly files of the Fama/French research datasets, so the combination cannot be served.
Source
Thrown at openbb_platform/providers/famafrench/openbb_famafrench/utils/helpers.py:819
A tuple containing a list of pandas DataFrames and a list of metadata dictionaries.
In most scenarios, there will only be 1 DataFrame and 1 metadata dictionary.
Raises
------
ValueError
When an invalid combination of parameters or unsupported values are supplied.
"""
if frequency and frequency.lower() not in ["monthly", "annual", "daily"]:
raise ValueError(
f"Frequency {frequency} not supported. Choose from 'monthly', 'annual', or 'daily'."
)
if measure and measure not in ["value", "equal", "number_of_firms", "firm_size"]:
raise ValueError(
f"Measure {measure} not supported. "
+ "Choose from 'value', 'equal', 'number_of_firms', or 'firm_size'."
)
if measure in ["number_of_firms", "firm_size"] and frequency == "annual":
raise ValueError(
f"Measure '{measure}' is only available for monthly frequency."
)
if "Factor" in dataset:
measure = None
file = download_file(dataset)
table, desc = read_csv_file(file)
dfs, metadata = process_csv_tables(table, desc)
if frequency:
out_dfs = [
df
for df, meta in zip(dfs, metadata)
if meta["frequency"].lower() == frequency.lower()
]
out_metadata = [
meta for meta in metadata if meta["frequency"].lower() == frequency.lower()
]View on GitHub (pinned to 3e071fcc2c)
Solutions
- Use frequency='monthly' for 'number_of_firms' and 'firm_size'.
- In UIs, force monthly when either of those measures is selected.
- If you need annual firm counts, aggregate the monthly data client-side.
Example fix
// before obb.economy.famafrench.research_portfolios(measure='firm_size', frequency='annual') // after obb.economy.famafrench.research_portfolios(measure='firm_size', frequency='monthly')
Defensive patterns
Strategy: validation
Validate before calling
if measure in ('number_of_firms', 'firm_size'):
assert frequency != 'annual', f'{measure} is monthly-only' Prevention
- Constrain the frequency selector to monthly when firm_size or number_of_firms is chosen.
- Aggregate monthly firm data client-side if annual views are needed.
When it happens
Trigger: Calling a US portfolio endpoint with measure='number_of_firms' (or 'firm_size') and frequency='annual'.
Common situations: Defaulting every request to annual data; building a frequency selector that ignores the chosen measure.
Related errors
- Only annual frequency is available for 'ratios' measure.
- Invalid frequency: '{frequency}' for factor: '{factor}' in r
- Measure {measure} not supported. Choose from 'usd', 'local',
- Frequency {frequency} not supported. Choose from 'monthly',
- Measure {measure} not supported. Choose from 'value', 'equal
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/a4b5e2bbfef56ef0.
Report an issue: GitHub.