OpenBB-finance/OpenBB · error · ValueError
Invalid frequency: '{frequency}' for factor: '{factor}' in r
Error message
Invalid frequency: '{frequency}' for factor: '{factor}' in region: '{region}'. Valid frequencies are: {", ".join(intervals.keys())} What it means
Fama-French factors query-model validator: each (region, factor) pair supports only certain sampling frequencies (daily/monthly/annual depending on the file), stored in FACTOR_REGION_MAP[region]['intervals'][factor]. Supplying a frequency not in that dict raises this ValueError before any request is made.
Source
Thrown at openbb_platform/providers/famafrench/openbb_famafrench/models/factors.py:145
raise ValueError(
f"Invalid region: '{region}'. "
+ "Valid regions are: "
+ ", ".join(FACTOR_REGION_MAP.keys())
)
regional_factors = FACTOR_REGION_MAP[region]
if factor not in regional_factors.get("factors", {}):
raise ValueError(
f"Invalid factor: '{factor}' for region: '{region}'. "
+ "Valid factors are: "
+ ", ".join(regional_factors.get("factors", {}).keys())
)
if frequency:
intervals = regional_factors.get("intervals", {}).get(factor, {})
if frequency not in list(intervals):
raise ValueError(
f"Invalid frequency: '{frequency}' for factor: '{factor}'"
+ f" in region: '{region}'. "
+ "Valid frequencies are: "
+ ", ".join(intervals.keys())
)
return values
class FamaFrenchFactorsData(Data):
"""Fama-French Factors Data.
Source: https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html
"""
__alias_dict__ = {
"date": "Date",
"mkt_rf": "Mkt-RF",View on GitHub (pinned to 3e071fcc2c)
Solutions
- Use a frequency from the error message (intervals for that region+factor).
- Derive allowed frequencies from FACTOR_REGION_MAP[region]['intervals'][factor] before presenting choices.
- Most factor files are at least daily and monthly — fall back to one of those.
Example fix
# before
query = {'region': 'america', 'factor': '3_factors', 'frequency': 'weekly'}
# after
query = {'region': 'america', 'factor': '3_factors', 'frequency': 'monthly'} Defensive patterns
Strategy: validation
Validate before calling
from openbb_famafrench.models.factors import FACTOR_REGION_MAP
def freqs_for(region: str, factor: str) -> list[str]:
return list(FACTOR_REGION_MAP.get(region, {}).get('intervals', {}).get(factor, {}))
def freq_ok(region: str, factor: str, frequency: str) -> bool:
return frequency in freqs_for(region, factor) Try / catch
try:
res = await obb.economy.famafrench.factors(factor=f, region=r, frequency=frq, provider='famafrench')
except ValueError as e:
if 'Valid frequencies are' in str(e):
frq = freqs_for(r, f)[0]
res = await obb.economy.famafrench.factors(factor=f, region=r, frequency=frq, provider='famafrench')
else:
raise Prevention
- Populate frequency choices per (region, factor), not globally
- Default to 'monthly' or 'daily', which most factor files publish
When it happens
Trigger: frequency='annual' for a factor file published only daily/monthly; frequency='weekly' (rarely available anywhere); mixing a frequency that works for one factor with another factor in the same region.
Common situations: Assuming all factors offer all frequencies; defaulting jobs to annual without checking file availability; UIs with a static frequency dropdown.
Related errors
- Invalid region, '{region}', for factor '{factor}'. Only 'ame
- Invalid region: '{region}'. Valid regions are: {", ".join(FA
- Invalid factor: '{factor}' for region: '{region}'. Valid fac
- Invalid dataset, {dataset}
- Only annual frequency is available for 'ratios' measure.
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/4b7fd5cfda2389bc.
Report an issue: GitHub.