feat(fred): name the euro-area macro series (#1465)

- get_macro_indicators accepts ecb_deposit_rate, ecb_main_refi_rate, euro_hicp, euro_core_hicp, euro_real_gdp, germany_10y, france_10y and eur_usd
This commit is contained in:
Yijia-Xiao
2026-10-03 21:27:43 +00:00
parent c925f60328
commit b3ca569c4c
3 changed files with 35 additions and 2 deletions
+19
View File
@@ -58,6 +58,25 @@ class FredResolutionTests(unittest.TestCase):
self.assertEqual(fred._resolve_series_id("Fed Funds Rate"), "FEDFUNDS") self.assertEqual(fred._resolve_series_id("Fed Funds Rate"), "FEDFUNDS")
self.assertEqual(fred._resolve_series_id("10y-treasury"), "DGS10") self.assertEqual(fred._resolve_series_id("10y-treasury"), "DGS10")
def test_euro_area_aliases_map_to_series_ids(self):
# Euro-area context for non-US tickers (e.g. Euronext .PA): FRED mirrors
# the ECB policy rates, Eurostat HICP/GDP and OECD long-term yields.
expected = {
"ecb_deposit_rate": "ECBDFR",
"ecb_main_refi_rate": "ECBMRRFR",
"euro_hicp": "CP0000EZ19M086NEST",
"euro_core_hicp": "00XEFDEZ19M086NEST",
"euro_real_gdp": "CLVMNACSCAB1GQEA19",
"germany_10y": "IRLTLT01DEM156N",
"france_10y": "IRLTLT01FRM156N",
"eur_usd": "DEXUSEU",
}
for alias, series_id in expected.items():
with self.subTest(alias=alias):
self.assertEqual(fred._resolve_series_id(alias), series_id)
self.assertEqual(fred._resolve_series_id("ECB Deposit Rate"), "ECBDFR")
self.assertEqual(fred._resolve_series_id("euro-hicp"), "CP0000EZ19M086NEST")
def test_unknown_alias_is_treated_as_raw_series_id(self): def test_unknown_alias_is_treated_as_raw_series_id(self):
# Power users can pass any FRED series ID; we uppercase by convention. # Power users can pass any FRED series ID; we uppercase by convention.
self.assertEqual(fred._resolve_series_id("dgs30"), "DGS30") self.assertEqual(fred._resolve_series_id("dgs30"), "DGS30")
+5 -2
View File
@@ -229,7 +229,9 @@ def get_macro_indicators(
str, str,
"Macro indicator: a friendly alias such as 'cpi', 'core_pce', " "Macro indicator: a friendly alias such as 'cpi', 'core_pce', "
"'unemployment', 'fed_funds_rate', '10y_treasury', 'yield_curve', " "'unemployment', 'fed_funds_rate', '10y_treasury', 'yield_curve', "
"'real_gdp', 'vix', or a raw FRED series ID such as 'CPIAUCSL'.", "'real_gdp', 'vix', euro-area aliases such as 'ecb_deposit_rate', "
"'euro_hicp', 'euro_core_hicp', 'euro_real_gdp', 'germany_10y', "
"'france_10y', 'eur_usd', or a raw FRED series ID such as 'CPIAUCSL'.",
], ],
curr_date: Annotated[str, "Current date in yyyy-mm-dd format; the end of the window"], curr_date: Annotated[str, "Current date in yyyy-mm-dd format; the end of the window"],
look_back_days: Annotated[ look_back_days: Annotated[
@@ -239,7 +241,8 @@ def get_macro_indicators(
) -> str: ) -> str:
""" """
Retrieve a macroeconomic indicator time series from FRED (Federal Reserve Retrieve a macroeconomic indicator time series from FRED (Federal Reserve
Economic Data): policy rates, Treasury yields, inflation, labor, and growth. Economic Data): policy rates, Treasury yields, inflation, labor, and growth,
for the US and, through FRED's mirrored series, the euro area.
Returns the series title, units, frequency, the latest value, the change Returns the series title, units, frequency, the latest value, the change
over the window, and a recent observation table. Uses the configured over the window, and a recent observation table. Uses the configured
macro_data vendor. macro_data vendor.
+11
View File
@@ -76,6 +76,17 @@ MACRO_SERIES = {
"consumer_sentiment": "UMCSENT", "consumer_sentiment": "UMCSENT",
"housing_starts": "HOUST", "housing_starts": "HOUST",
"retail_sales": "RSAFS", "retail_sales": "RSAFS",
# Euro area (for non-US tickers such as Euronext .PA): FRED mirrors the ECB
# policy rates, Eurostat HICP and GDP, and OECD long-term government yields,
# so the same vintage pinning keeps euro-area data point-in-time.
"ecb_deposit_rate": "ECBDFR",
"ecb_main_refi_rate": "ECBMRRFR",
"euro_hicp": "CP0000EZ19M086NEST",
"euro_core_hicp": "00XEFDEZ19M086NEST",
"euro_real_gdp": "CLVMNACSCAB1GQEA19",
"germany_10y": "IRLTLT01DEM156N",
"france_10y": "IRLTLT01FRM156N",
"eur_usd": "DEXUSEU",
} }