Python 56.2%
TeX 43.7%
1from __future__ import annotations23import os4from datetime import date, datetime5from pathlib import Path67from dotenv import load_dotenv89load_dotenv()1011PROJECT_ROOT = Path(__file__).resolve().parents[1]1213DATA_RAW = PROJECT_ROOT / "data" / "raw"14DATA_RAW_POLY = DATA_RAW / "polymarket"15DATA_RAW_FRED = DATA_RAW / "fred"16DATA_RAW_YAHOO = DATA_RAW / "yahoo"17DATA_PROCESSED = PROJECT_ROOT / "data" / "processed"18FIGURES = PROJECT_ROOT / "figures"19TABLES = PROJECT_ROOT / "results" / "tables"20PAPER = PROJECT_ROOT / "paper"21LOGS = PROJECT_ROOT / "logs"2223GAMMA_API = "https://gamma-api.polymarket.com"24CLOB_API = "https://clob.polymarket.com"2526FRED_API_KEY = os.getenv("FRED_API_KEY", "")2728# ---------------------------------------------------------------------------29# Market registry30# ---------------------------------------------------------------------------3132FED_JUNE_2026_EVENT_ID = 10177233FED_JUNE_2026_MARKETS = {34 "50+ bps decrease": {"id": "906972", "token": "11088456156829969846055197785216933275644828685751065736355063877671766078668"},35 "25 bps decrease": {"id": "906973", "token": "65193234666628291664907888364936366210882855780775260579670618454938932816097"},36 "No change": {"id": "906974", "token": "30767812841387255642892182147223249245546960790037785428969725073478408781530"},37 "25 bps increase": {"id": "906975", "token": "54688507565884542490190759171719899637340549418956975710651891089424379775735"},38 "50+ bps increase": {"id": "906976", "token": "11019686559003253359318459636510036787285735855494197538476668773993811283380"},39}4041ELECTION_2024_EVENT_ID = 90319342ELECTION_2024_MARKETS = {43 # Token IDs are taken from event_903193.json by the cleaner; the entries below are44 # for reference only. (Revision 2026-10-17: the earlier file listed market 253596,45 # which is Ron DeSantis, under "Kamala Harris"; Harris is market 253597.)46 "Donald Trump": {"id": "253591", "token": "21742633143463906290569050155826241533067272736897614950488156847949938836455"},47 "Kamala Harris": {"id": "253597", "token": "69236923620077691027083946871148646972013979124138068211264286564397702153117"},48}4950FED_CLOSED_MARKETS = {51 "Dec 2025 - 50+ bps decrease": {"id": "570360"},52 "Jan 2026 - 50+ bps decrease": {"id": "601697"},53 "Jan 2026 - 25+ bps increase": {"id": "601700"},54 "Mar 2026 - 25+ bps increase": {"id": "654415"},55}5657KEY_BINARY_MARKETS = [58 {"id": "253591", "name": "Trump wins 2024", "category": "politics"},59 {"id": "253597", "name": "Harris wins 2024", "category": "politics"},60 {"id": "906974", "name": "Fed June no change", "category": "economics"},61]6263# ---------------------------------------------------------------------------64# FOMC meeting dates (2024–2026)65# ---------------------------------------------------------------------------6667FOMC_DATES = [68 date(2024, 1, 31), date(2024, 3, 20), date(2024, 5, 1),69 date(2024, 6, 12), date(2024, 7, 31), date(2024, 9, 18),70 date(2024, 11, 7), date(2024, 12, 18),71 date(2025, 1, 29), date(2025, 3, 19), date(2025, 5, 7),72 date(2025, 6, 18), date(2025, 7, 30), date(2025, 9, 17),73 date(2025, 10, 29), date(2025, 12, 17),74 date(2026, 1, 28), date(2026, 3, 18), date(2026, 5, 6),75 date(2026, 6, 17), date(2026, 7, 29), date(2026, 9, 16),76 date(2026, 10, 28), date(2026, 12, 16),77]7879CPI_RELEASE_DATES = [80 date(2024, 1, 11), date(2024, 2, 13), date(2024, 3, 12),81 date(2024, 4, 10), date(2024, 5, 15), date(2024, 6, 12),82 date(2024, 7, 11), date(2024, 8, 14), date(2024, 9, 11),83 date(2024, 10, 10), date(2024, 11, 13), date(2024, 12, 11),84 date(2025, 1, 15), date(2025, 2, 12), date(2025, 3, 12),85 date(2025, 4, 10), date(2025, 5, 13), date(2025, 6, 11),86 date(2025, 7, 15), date(2025, 8, 12), date(2025, 9, 10),87 date(2025, 10, 14), date(2025, 11, 12), date(2025, 12, 10),88 date(2026, 1, 14), date(2026, 2, 11), date(2026, 3, 11),89 date(2026, 4, 14), date(2026, 5, 12), date(2026, 6, 10),90]9192NFP_RELEASE_DATES = [93 date(2024, 1, 5), date(2024, 2, 2), date(2024, 3, 8),94 date(2024, 4, 5), date(2024, 5, 3), date(2024, 6, 7),95 date(2024, 7, 5), date(2024, 8, 2), date(2024, 9, 6),96 date(2024, 10, 4), date(2024, 11, 1), date(2024, 12, 6),97 date(2025, 1, 10), date(2025, 2, 7), date(2025, 3, 7),98 date(2025, 4, 4), date(2025, 5, 2), date(2025, 6, 6),99 date(2025, 7, 3), date(2025, 8, 1), date(2025, 9, 5),100 date(2025, 10, 3), date(2025, 11, 7), date(2025, 12, 5),101 date(2026, 1, 9), date(2026, 2, 6), date(2026, 3, 6),102 date(2026, 4, 3), date(2026, 5, 8), date(2026, 6, 5),103]104105ELECTION_KEY_DATES = {106 "Biden dropout": date(2024, 7, 21),107 "Trump assassination attempt": date(2024, 7, 13),108 "Harris-Trump debate": date(2024, 9, 10),109 "Election day": date(2024, 11, 5),110}111112YAHOO_TICKERS = ["SPY", "^TNX", "^VIX", "BTC-USD", "ETH-USD"]113YAHOO_START = "2024-01-01"114YAHOO_END = "2026-06-01"115116# ---------------------------------------------------------------------------117# Matplotlib style118# ---------------------------------------------------------------------------119120MPL_STYLE = {121 "font.family": "serif",122 "font.serif": ["Times New Roman", "DejaVu Serif"],123 "font.size": 10,124 "axes.titlesize": 11,125 "axes.labelsize": 10,126 "xtick.labelsize": 9,127 "ytick.labelsize": 9,128 "legend.fontsize": 9,129 "figure.figsize": (6.5, 4.0),130 "figure.dpi": 300,131 "savefig.dpi": 300,132 "savefig.bbox": "tight",133 "axes.spines.top": False,134 "axes.spines.right": False,135 "axes.grid": True,136 "grid.alpha": 0.3,137 "grid.linestyle": "--",138 "lines.linewidth": 1.2,139}140141JOF_COLORS = {142 "primary": "#1f4e79",143 "secondary": "#c0392b",144 "tertiary": "#27ae60",145 "quaternary": "#f39c12",146 "gray": "#7f8c8d",147 "light": "#bdc3c7",148}149