# Data dictionary (WP47) Units: futures/ETF returns in **percent** (100 × log price change); factors and yields in **percentage points (pp)**; realized variances in **pp²** per yield day (multiply by 1e4 for bp²); timestamps are tz-aware (`America/New_York` after conversion; stored in UTC in Parquet). A "yield day" t runs from 15:30 ET on the previous FRED date to 15:30 ET on date t. ## `data/cache/contracts_1m/{ROOT}_{a}_{b}.parquet` (node only) — `01d_extract_contracts.py` FinData export of `market_bars.futures_contracts.1m.raw` for every expiry of the root (`symbol_as_reported` = `ROOT_MYY`, e.g. `ZN_M22`); standard bar columns (`timestamp_utc`, `open`, `high`, `low`, `close`, `volume`, …). 18 files, 326 MB. ## `data/cache/returns_1m.parquet` (node only) — `03_returns.py` | Column | Meaning | |---|---| | `ts` | bar open timestamp (UTC); the return accrues over [ts, ts+1 min] | | `ZT, ZF, ZN, TN, US, UB` | one-minute close-to-close log return (%) of the session's most-traded contract, within a segment; NaN at segment breaks (gap > 5 min, 17:00–18:00 ET break, session change, bounce-filtered prints) or when no bar exists | | `vol_` | bar volume (contracts) | | `act_` | active flag: the contract has a bar within the previous 15 minutes (used by `06` to zero-fill missing minutes; inactive minutes are dropped from the cross-section) | | `yday` | yield day the minute belongs to (date) | ## `data/cache/returns_daily.parquet` — `03_returns.py` `yday` (index) · ``: sum of minute returns within the yield day (%) · `n_`: number of non-missing minute returns · `nact_`: number of active minutes. ## `data/cache/factors_1m.parquet` (node only) — `06_intraday_factors.py` `ts` · `dL, dS, dC`: one-minute change in level, slope, curvature (pp), = Ŵ_q r_m with the quarter's OOS weights and no intercept; NaN when any required contract is inactive (no trade in the previous 15 minutes) · `yday` · `n_roots`: number of contracts in Ŵ_q. ## `data/cache/factors_daily_realized.parquet` (+ `results/metrics/factors_daily_realized.csv`) — `06_intraday_factors.py` Index `yday`. For k ∈ {1, 5, 30} minutes: `RV_L_km, RV_S_km, RV_C_km` realized variance (pp²; sum of squared k-minute changes); `cLS_km, cLC_km, cSC_km` realized covariances (pp²); `n_minutes` minutes with factors; `cum_dL, cum_dS, cum_dC` sum of minute changes over the yield day (pp). ## `data/cache/mimicking_oos_daily.parquet` — `04_mimicking.py` `date` · `factor` ∈ {level, slope, curvature} · `actual` daily CMT factor change (pp) · `pred_oos` Ŵ r + intercept · `pred_oos_nocst` Ŵ r (used for fidelity) · `quarter`. Variants: `mimicking_oos_daily_gsw.parquet`, `_sr3.parquet` (`04b`; columns `actual`, `pred`), `mimicking_oos_daily_cmt2y.parquet` (`04c`). ## `data/cache/har_preds_{L,S,C}_h{1,5,22}.parquet` — `08_har.py` `date` forecast origin · `har`, `garch`, `roll22` forecasts of the cumulative h-day realized variance (bp², from 5-minute RV) · `y` realized value (bp²). ## `results/metrics/events.csv` — `05_events_list.py` `date` · `type` ∈ {FOMC, CPI, EMP} · `scheduled` (False for the four unscheduled FOMC actions) · `time` release time ET (rule-based for FOMC; 08:30 for CPI/EMP) · `ts` tz-aware release timestamp. ## `results/metrics/event_windows.csv` — `07_events.py` One row per event with ≥ 80 % of the window minutes available. `regime` ∈ {2011_2015, 2016_2019, 2020_2021, 2022_2026} · `yday`. `w_` sum of minute changes over [−5, +25) minutes for c ∈ {dL, dS, dC, dSR (= dL + dS, short rate), dy3m, dy2, dy5, dy10, dy30 (implied yield changes from the NS loadings)} (pp) · `w15_`, `w90_` same over [−5, +15) and [−5, +90) for c ∈ {dL, dS, dC, dSR, dy2, dy10} · `share_` = w_c² / RV_c,1m of the yield day · `rvshare_` = Σ (minute changes)² in the window / RV_c,1m · `pre24h_`, `post24h_` cumulative change from −24 h to −6 min and from +25 min to +24 h (pp), c ∈ {dL, dS, dC, dSR, dy10}. `event_windows_placebo.csv`: `type`, `regime`, `w_` for up to three matched non-event days per event (same clock time). ## `results/metrics/*.json` `daily_factors_summary.json` (fit RMSE, moments, λ̂), `returns_diagnostics.json` (per-contract bars, roll days, breaks, jumps), `mimicking_weights_quarterly.json` (quarter, n_train, roots, weights incl. `const`, in-sample R²), `mimicking_fidelity.json` (OOS R², slope, RMSE by period/year; six-root in-sample), `mimicking_fidelity_robustness.json` (GSW, CMT ≥ 1y, SR3), `targets_and_spanning.json` (CMT ≥ 2y, cash ceiling, leave-one-out), `realized_correlations.json` (by period and sampling; FRED daily; mean RV by sampling), `noise_benchmark.json`, `etf_crossval.json`, `event_summary.json` (per type × regime: n, SDs in bp, SD ratios vs placebo with bootstrap CI, rvshare mean/CI/median, var_mix_LSC, var_dy_bp2, pre24h means), `event_paths.json` (RMS cumulative change −60…+120 min), `har_forecasts.json` (QLIKE, MSE, log-R², DM statistics), `intraday_periodicity.csv` (mean squared change by minute of day, bp² per minute, for all / non-event / event days and sub-periods). ## `data/cache/lp_events.parquet` — `13_irf.py` One row per scheduled event with a complete window and ≥ 10 subsequent yield days: `date`, `type`, `regime`, `shock_y2` (bp, implied 2-year change over [−5, +25)), `_m` cumulated change (bp) from −5 min to h ∈ {25, 60, 120, 240} min and `_d` to the end of yield day h ∈ {0, 1, 2, 5, 10} (pre-window part of day 0 removed), v ∈ {dL, dS, dC, dSR, dy2, dy10}. ## `results/figdata/` (aggregates for figures; leave the node) `sample_days.csv` (cumulative L/S/C/2y/10y in bp, minute by minute, four selected days) · `fidelity_by_year.csv` (OOS R² by year, CMT and GSW targets, 90 % day-resampling bands) · `event_paths_boot.csv` (RMS cumulative change −60…+120 min with 90 % event-bootstrap bands) · `event_heatmap_{FOMC,CPI,EMP}.csv` (rows = events, columns = minutes −30…+120, cumulative implied 2-year change in bp from −5 min) · `etf_fomc_pairs.csv` (FOMC-window L/S/C changes, ETF vs futures, bp) · `lp_irf.csv` (group, var, h, beta, lo, hi, se, n — local-projection coefficients) · `var_girf.csv` (regime, h, response, shock, cum, lo, hi — cumulative generalized IRFs in bp per one-SD shock) · `vol_connectedness_rolling.csv` (date, total, net_L, net_S, net_C — 250-day rolling Diebold–Yilmaz measures, %). ## Additional `results/metrics/*.json` `fidelity_cumulated_intraday.json` (R²/slope of daily CMT factor changes on the cumulated minute series: all days, ≥ 600 / < 600 minutes, by period; coverage shares) · `implied_yield_fidelity.json` (R² of implied Δy(τ) vs FRED CMT changes for 3m/1y/2y/5y/10y/30y; L+S vs 1-month bill; written by `12_text_macros.py`) · `irf.json` (`counts`: minutes/days with factors, SR3 median bars by year; `lp`: per type × regime and variable × horizon {beta, se_hc, ci, n, r2}; `var5m`: per regime lag order, n, residual SD/corr, FEVD, to/from/total connectedness, impact and 12-step cumulative GIRFs; `vol_connectedness`: FEVD, to/from/net/total, rolling summary) · `robustness_checks.json` (`rolling_3y_1530`, `expanding_1530`, `rolling_3y_1500`, `rolling_3y_1600` OOS R²; `rvshare_5m_denominator`; `fomc_time_check`). `returns_diagnostics.json` now reports `contracts_used`, `contract_switches` and `median_active_minutes_per_yday` instead of roll days.