From c4dc7b92fe817279c555cd0377a7ce85fe83366a Mon Sep 17 00:00:00 2001 From: Tvishi Agarwal Date: Sun, 12 Apr 2026 19:51:08 +0000 Subject: [PATCH] govdata --- .github/workflows/update.yml | 2 ++ generate.py | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index ae0fd5e..4cb8dbc 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -44,6 +44,7 @@ jobs: env: FRED_API_KEY: ${{ secrets.FRED_API_KEY }} FINNHUB_API_KEY: ${{ secrets.FINNHUB_API_KEY }} + GOV_API_KEY: ${{ secrets.GOV_API_KEY }} run: python generate.py - name: Sync with remote main @@ -56,6 +57,7 @@ jobs: env: FRED_API_KEY: ${{ secrets.FRED_API_KEY }} FINNHUB_API_KEY: ${{ secrets.FINNHUB_API_KEY }} + GOV_API_KEY: ${{ secrets.GOV_API_KEY }} run: python generate.py - name: Commit and push data.json diff --git a/generate.py b/generate.py index ec65be0..0acab2c 100644 --- a/generate.py +++ b/generate.py @@ -19,6 +19,7 @@ import yfinance as yf # ─── CONFIG ────────────────────────────────────────────────────────────────── FRED_KEY = os.environ.get("FRED_API_KEY", "") FINNHUB_KEY = os.environ.get("FINNHUB_API_KEY", "") +GOV_KEY = os.environ.get("GOV_API_KEY", "") OUTPUT_FILE = "data.json" # ─── YIELD CURVE TICKERS (yfinance) ───────────────────────────────────────── @@ -139,6 +140,28 @@ FX_PAIRS = { } +def fetch_gov_data(endpoint, params=None): + """Fetch data from the government API.""" + if not GOV_KEY: + print(" GOV API key missing") + return None + + if params is None: + params = {} + + try: + base_url = "https://YOUR-GOV-API-ENDPOINT-HERE" + params["api_key"] = GOV_KEY + + r = requests.get(base_url + endpoint, params=params, timeout=15) + r.raise_for_status() + return r.json() + + except Exception as e: + print(f" Government API error ({endpoint}): {e}") + return None + + def fetch_fred(series_id, limit=5): """Fetch latest value from FRED API.""" if not FRED_KEY: @@ -450,6 +473,10 @@ def main(): "bond_etfs": {}, "news": [], "calendar": [], + "policy_rates": {}, + "macro": {}, + "sentiment": {}, + "scenarios": {}, } # 1. US YIELD CURVE from FRED (most reliable) @@ -636,6 +663,25 @@ def main(): }] print(f" Final calendar rows: {len(output['calendar'])}") + # 11. Government API data + print("\n[11] Fetching government data...") + gov_data = fetch_gov_data("/some/endpoint", params={"country": "US"}) + if gov_data: + output["policy_rates"]["US"] = gov_data.get("policy_rate") + + output["macro"]["US"] = { + "cpi": f"{gov_data.get('cpi_yoy')}%" if gov_data.get("cpi_yoy") is not None else "\u2014", + "cpiP": "\u2014", + "gdp": f"{gov_data.get('gdp_qoq')}%" if gov_data.get("gdp_qoq") is not None else "\u2014", + "gdpT": "QoQ", + "unemp": f"{gov_data.get('unemployment')}%" if gov_data.get("unemployment") is not None else "\u2014", + "unempT": "latest", + "stance": "\u2014", + "last": "\u2014", + "next": "\u2014", + "pricing": "\u2014", + } + # Write output output_path = Path(OUTPUT_FILE) with open(output_path, "w") as f: