# RESEARCH_STATUS.md β€” RAID (UQO WP 40) Last update: 2026-11-02 (Phases 0–8 passed). Legend: βœ… verified by tests/artifacts Β· πŸ§ͺ implemented, validation pending Β· 🧭 experimental Β· β›” blocked Β· ⏳ planned Β· βœ– not implemented (deliberately). ## Phases | Phase | Gate | Status | Evidence | |---|---|---|---| | 0 Audit | scope & feasibility memo | βœ… passed 2026-11-02 | `docs/audit.md`, `docs/capabilities.md`, `docs/novelty_matrix.md`, `docs/risks.md`, `docs/PROGRESS.md` | | 1 Foundation | clean build + tests + docs | βœ… passed 2026-11-02 | `ctest` 26/26 (314 assertions), `pytest` 7/7, `docs/PROGRESS.md` Phase 1 | | 2 Data | offline synthetic tests + opt-in live tests | βœ… passed 2026-11-02 | offline `[findata]` 4/4, live `[live]` 2/2 (60 assertions), `docs/operations/findata.md` | | 3 Numerical primitives | accuracy + measured break-even | βœ… passed 2026-11-02 | `[metal]` 6 cases / 6 411 assertions; `experiments/results/bench_primitives_summary.json` (Metal wins: fused realized β‰₯ 39 k elements up to 3.4Γ—, GARCH NLL P=64 up to 7.9Γ—; CPU wins: rolling sums, GARCH P=1, small panels) | | 4 Econometrics (Tier A) | references + Monte Carlo | βœ… passed 2026-11-02 | R (highfrequency/rugarch) + statsmodels/arch references, `tests/simulation` Monte Carlo, `docs/methods/registry.md` | | 5 Extensions (Tier B) | per-feature specs + tests | βœ… passed 2026-11-02 (VAR/GFEVD/DY/LW only) | `tests/reference/test_var_reference.cpp` 184 assertions vs statsmodels | | 6 Benchmarking E1–E7 | every claim traceable | βœ… passed 2026-11-02 | `experiments/results/raw/*.jsonl` + manifests; `key_numbers.json`; `docs/PROGRESS.md` Phase 6 | | 7 Manuscript | reproducible build, no placeholders | βœ… passed 2026-11-02 | `paper/main.pdf` 30 p., 0 undefined refs, tables/figures generated from artifacts | | 8 Independent review | clean-checkout reproduction | βœ… passed 2026-11-02 | clean clone: cpu-only 49/49, Metal 55/55, paper 30 p./0 undefined, tables byte-identical; `.gitignore` defect found and fixed; `docs/RELEASE-CHECKLIST.md` | ## Methods registry (summary; full entries in `docs/methods/registry.md` from Phase 4) | Method | Tier | CPU FP64 | Metal FP32 | Reference software | Status | |---|---|---|---|---|---| | returns (log/arith), lag/lead, rolling windows, calendar-aware aggregation | A | βœ… | ⏳ (Phase 3) | numpy; exchange_calendars (calendar exact 2000–2026) | βœ… CPU | | RV, BPV, RSVΒ±, RQ, jump proxy, TriPV, rCov/rCorr | A | βœ… (numpy truth 1eβˆ’12) | βœ… fused kernel 1eβˆ’6 vs FP64 | highfrequency 1.0.3 (R comparison Phase 4) | βœ… CPU | | OLS/WLS/ridge, HC0–3, HAC, cluster, rolling OLS | A | βœ… (statsmodels 1eβˆ’9) | βœ… sufficient statistics 1eβˆ’6 (k ≀ 8) | statsmodels 0.15, scipy 1.18 | βœ… CPU | | HAR-RV, log-HAR, HAR-X, HARQ, rolling, batched | A | βœ… (highfrequency 1eβˆ’8, statsmodels 1eβˆ’9) | βœ… batched sufficient statistics | highfrequency 1.0.3, statsmodels 0.15 | βœ… | | GARCH(1,1), GJR, EGARCH (N, t), QMLE/Hessian/OPG SE, forecasts | A | βœ… (arch 8.0: loglik 5eβˆ’4, params 5 %) | βœ… batched NLL 2eβˆ’5 (grids) | arch 8.0 βœ…, rugarch 1.5.6 (Phase 4) | βœ… CPU | | Bootstrap (stationary / circular / iid), Monte Carlo harness | A | βœ… (theory + MC coverage) | ⏳ GPU replicas (E5) | theory (Politis–Romano) | βœ… | | VAR(p), FEVD, GFEVD, Diebold–Yilmaz (static, rolling), Ledoit–Wolf | B | βœ… (statsmodels 1eβˆ’9) | ⏳ (E4: batched covariance inputs) | statsmodels 0.15 | βœ… | | Realized GARCH, HEAVY, DCC, GARCH-MIDAS, FIGARCH, BVAR/VECM, Kalman, change-point | B | βœ– not implemented (deliberate: no experiment in E1–E7 needs them) | βœ– | β€” | βœ– | | Pre-averaging, realized kernels, MSRV, BNS test | C | βœ– (1-min bars) | | highfrequency | 🧭 only if validated | | Hawkes, order-flow, LOB methods | C | βœ– | βœ– | β€” | βœ– no admissible data (bars only) | ## Blockers - None at Phase 0. Seven cluster nodes unreachable (m2m16, M2M32, M2M32b, M4M36, m4ma, m4mb, m4mc): E7 reports them as not tested unless they come back. ## Headline measured results (laptop M5 Max unless stated; see `experiments/results/key_numbers.json`) - Metal vs CPU FP64 accuracy: realized measures ≀ 1.6eβˆ’7 relative on 233 k real session segments; bitwise reproducible. - Fused realized kernel: Metal wins from β‰ˆ 4e4 elements, 2.0–3.4Γ— at 4e6–4e7 (kernel level); 1.07–1.41Γ— at the estimator level on 40 M real returns (Amdahl: FP64 post-processing and conversion). - Batched GARCH likelihood grids: 5.1Γ— (E3, 888 Γ— 256) to 7.9Γ— (P = 64 microbenchmark); P = 1 β†’ CPU wins. - Rolling sums: CPU wins everywhere (negative result). Small panels (≀ 4e5 elements): ties or CPU. - Pipeline (E6): RAID 20 M bars/s vs Polars/DuckDB 14 M, pandas 0.9 M; GPU irrelevant at that stage. - E7: GPU gains largest on weakest CPUs (M2 4.0Γ—) and smallest on M5 (1.1Γ—). ## Next safe action (owner decisions) Read `paper/main.pdf`; decide on SSRN deposit and the target journal (JFEC / JFDS / JCF); optionally run the Linux CPU-only build and `pip wheel .`; optionally create a least-privilege FinData key for benchmark reruns.