from __future__ import annotations import os from datetime import date, datetime from pathlib import Path from dotenv import load_dotenv load_dotenv() PROJECT_ROOT = Path(__file__).resolve().parents[1] DATA_RAW = PROJECT_ROOT / "data" / "raw" DATA_RAW_POLY = DATA_RAW / "polymarket" DATA_RAW_FRED = DATA_RAW / "fred" DATA_RAW_YAHOO = DATA_RAW / "yahoo" DATA_PROCESSED = PROJECT_ROOT / "data" / "processed" FIGURES = PROJECT_ROOT / "figures" TABLES = PROJECT_ROOT / "results" / "tables" PAPER = PROJECT_ROOT / "paper" LOGS = PROJECT_ROOT / "logs" GAMMA_API = "https://gamma-api.polymarket.com" CLOB_API = "https://clob.polymarket.com" FRED_API_KEY = os.getenv("FRED_API_KEY", "") # --------------------------------------------------------------------------- # Market registry # --------------------------------------------------------------------------- FED_JUNE_2026_EVENT_ID = 101772 FED_JUNE_2026_MARKETS = { "50+ bps decrease": {"id": "906972", "token": "11088456156829969846055197785216933275644828685751065736355063877671766078668"}, "25 bps decrease": {"id": "906973", "token": "65193234666628291664907888364936366210882855780775260579670618454938932816097"}, "No change": {"id": "906974", "token": "30767812841387255642892182147223249245546960790037785428969725073478408781530"}, "25 bps increase": {"id": "906975", "token": "54688507565884542490190759171719899637340549418956975710651891089424379775735"}, "50+ bps increase": {"id": "906976", "token": "11019686559003253359318459636510036787285735855494197538476668773993811283380"}, } ELECTION_2024_EVENT_ID = 903193 ELECTION_2024_MARKETS = { "Donald Trump": {"id": "253591", "token": "21742633143463906290569050155826241533067272736897614950488156847949938836455"}, "Kamala Harris": {"id": "253596", "token": "69236923620165904972967806948244475009793726478846816743760350969833698291913"}, } FED_CLOSED_MARKETS = { "Dec 2025 - 50+ bps decrease": {"id": "570360"}, "Jan 2026 - 50+ bps decrease": {"id": "601697"}, "Jan 2026 - 25+ bps increase": {"id": "601700"}, "Mar 2026 - 25+ bps increase": {"id": "654415"}, } KEY_BINARY_MARKETS = [ {"id": "253591", "name": "Trump wins 2024", "category": "politics"}, {"id": "253596", "name": "Harris wins 2024", "category": "politics"}, {"id": "906974", "name": "Fed June no change", "category": "economics"}, ] # --------------------------------------------------------------------------- # FOMC meeting dates (2024–2026) # --------------------------------------------------------------------------- FOMC_DATES = [ date(2024, 1, 31), date(2024, 3, 20), date(2024, 5, 1), date(2024, 6, 12), date(2024, 7, 31), date(2024, 9, 18), date(2024, 11, 7), date(2024, 12, 18), date(2025, 1, 29), date(2025, 3, 19), date(2025, 5, 7), date(2025, 6, 18), date(2025, 7, 30), date(2025, 9, 17), date(2025, 10, 29), date(2025, 12, 17), date(2026, 1, 28), date(2026, 3, 18), date(2026, 5, 6), date(2026, 6, 17), date(2026, 7, 29), date(2026, 9, 16), date(2026, 10, 28), date(2026, 12, 16), ] CPI_RELEASE_DATES = [ date(2024, 1, 11), date(2024, 2, 13), date(2024, 3, 12), date(2024, 4, 10), date(2024, 5, 15), date(2024, 6, 12), date(2024, 7, 11), date(2024, 8, 14), date(2024, 9, 11), date(2024, 10, 10), date(2024, 11, 13), date(2024, 12, 11), date(2025, 1, 15), date(2025, 2, 12), date(2025, 3, 12), date(2025, 4, 10), date(2025, 5, 13), date(2025, 6, 11), date(2025, 7, 15), date(2025, 8, 12), date(2025, 9, 10), date(2025, 10, 14), date(2025, 11, 12), date(2025, 12, 10), date(2026, 1, 14), date(2026, 2, 11), date(2026, 3, 11), date(2026, 4, 14), date(2026, 5, 12), date(2026, 6, 10), ] NFP_RELEASE_DATES = [ date(2024, 1, 5), date(2024, 2, 2), date(2024, 3, 8), date(2024, 4, 5), date(2024, 5, 3), date(2024, 6, 7), date(2024, 7, 5), date(2024, 8, 2), date(2024, 9, 6), date(2024, 10, 4), date(2024, 11, 1), date(2024, 12, 6), date(2025, 1, 10), date(2025, 2, 7), date(2025, 3, 7), date(2025, 4, 4), date(2025, 5, 2), date(2025, 6, 6), date(2025, 7, 3), date(2025, 8, 1), date(2025, 9, 5), date(2025, 10, 3), date(2025, 11, 7), date(2025, 12, 5), date(2026, 1, 9), date(2026, 2, 6), date(2026, 3, 6), date(2026, 4, 3), date(2026, 5, 8), date(2026, 6, 5), ] ELECTION_KEY_DATES = { "Biden dropout": date(2024, 7, 21), "Trump assassination attempt": date(2024, 7, 13), "Harris-Trump debate": date(2024, 9, 10), "Election day": date(2024, 11, 5), } YAHOO_TICKERS = ["SPY", "^TNX", "^VIX", "BTC-USD", "ETH-USD"] YAHOO_START = "2024-01-01" YAHOO_END = "2026-06-01" # --------------------------------------------------------------------------- # Matplotlib style # --------------------------------------------------------------------------- MPL_STYLE = { "font.family": "serif", "font.serif": ["Times New Roman", "DejaVu Serif"], "font.size": 10, "axes.titlesize": 11, "axes.labelsize": 10, "xtick.labelsize": 9, "ytick.labelsize": 9, "legend.fontsize": 9, "figure.figsize": (6.5, 4.0), "figure.dpi": 300, "savefig.dpi": 300, "savefig.bbox": "tight", "axes.spines.top": False, "axes.spines.right": False, "axes.grid": True, "grid.alpha": 0.3, "grid.linestyle": "--", "lines.linewidth": 1.2, } JOF_COLORS = { "primary": "#1f4e79", "secondary": "#c0392b", "tertiary": "#27ae60", "quaternary": "#f39c12", "gray": "#7f8c8d", "light": "#bdc3c7", }