diff --git a/services/mcp-macro/src/mcp_macro/cot_contracts.py b/services/mcp-macro/src/mcp_macro/cot_contracts.py new file mode 100644 index 0000000..6e110af --- /dev/null +++ b/services/mcp-macro/src/mcp_macro/cot_contracts.py @@ -0,0 +1,36 @@ +"""Costanti CFTC: ticker → contract_market_code per TFF e Disaggregated. + +I codici CFTC (`cftc_contract_market_code`) sono pubblici e stabili nel tempo. +Riferimento: https://www.cftc.gov/MarketReports/CommitmentsofTraders/ +""" +from __future__ import annotations + +CFTC_BASE_URL = "https://publicreporting.cftc.gov/resource" +TFF_DATASET_ID = "gpe5-46if" +DISAGG_DATASET_ID = "72hh-3qpy" + +# TFF: equity/financial. Mapping ticker → cftc_contract_market_code. +SYMBOL_TO_CFTC_CODE_TFF: dict[str, str] = { + "ES": "13874A", # E-mini S&P 500 + "NQ": "209742", # E-mini Nasdaq-100 + "RTY": "239742", # E-mini Russell 2000 + "ZN": "043602", # 10-Year T-Note + "ZB": "020601", # 30-Year T-Bond + "6E": "099741", # Euro FX + "6J": "097741", # Japanese Yen + "DX": "098662", # US Dollar Index +} + +# Disaggregated: commodities. +SYMBOL_TO_CFTC_CODE_DISAGG: dict[str, str] = { + "CL": "067651", # Crude Oil WTI + "GC": "088691", # Gold + "SI": "084691", # Silver + "HG": "085692", # Copper + "ZW": "001602", # Wheat + "ZC": "002602", # Corn + "ZS": "005602", # Soybeans +} + +ALL_TFF_SYMBOLS: list[str] = list(SYMBOL_TO_CFTC_CODE_TFF.keys()) +ALL_DISAGG_SYMBOLS: list[str] = list(SYMBOL_TO_CFTC_CODE_DISAGG.keys())