1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# ⚡ RAID — Research Architecture for Intraday Data34**UQO Working Paper No. 40** — *A Metal-Accelerated C++ Framework for Reproducible High-Frequency Financial Econometrics*56[](paper/)7[](CMakeLists.txt)8[-000000?logo=apple&logoColor=white)](backends/metal/)9[](pyproject.toml)10[-4051b5)](docs/audit.md)11[](https://uqo.ca)12[](mailto:simon-pierre.boucher@uqo.ca)1314> **TL;DR** — RAID asks whether heterogeneous high-frequency econometric workloads (realized measures, rolling/batched15> regressions, HAR, GARCH-family QML, block bootstrap) can be turned into batched, fused, streaming computation on Apple16> Silicon **without** losing estimator accuracy, inference validity or reproducibility. It is a C++20 library with a FP6417> CPU reference backend, an optional FP32 Metal backend (Apple GPUs have no FP64), nanobind Python bindings, a CLI, a18> FinData OS client, and a benchmark protocol that reports break-even points and the cases where the CPU wins.19> Status: Phase 1 (foundation) — see `RESEARCH_STATUS.md`. No performance numbers are claimed yet.2021---2223## 📌 Status2425| Item | Value |26|---|---|27| Version | 0.1.0 (November 2026) — Phases 0–1 |28| SSRN | not yet submitted |29| Journal | targets: J. Financial Econometrics, J. Financial Data Science, J. Computational Finance |30| Code & data | CPU core + tests build and pass on macOS 27 / Xcode 27.2; synthetic fixtures only in git; real bars via FinData OS (private license) |31| Ledger | `RESEARCH_STATUS.md` · `docs/PROGRESS.md` · `docs/DECISIONS.md` · `docs/risks.md` |3233## 🎯 What this paper does3435Three falsifiable questions. **RQ1** At what data and batch sizes does Metal beat an optimized multicore CPU, once I/O,36shader compilation, synchronization and transfers are counted? **RQ2** Does batched estimation raise throughput while37preserving statistical coverage and convergence? **RQ3** Can an Arrow/Parquet-to-estimator pipeline materially reduce38copies, memory pressure and end-to-end latency? Negative results are published. Tier A methods (returns, calendar-aware39aggregation, RV/BPV/RSV/RQ/jumps/rCov, OLS/WLS/ridge with HC/HAC/cluster inference, HAR family, GARCH/GJR/EGARCH with40Gaussian/Student-t QML, block bootstrap) are validated against R `highfrequency`/`rugarch` and Python41`statsmodels`/`arch`; GPU results are validated against the FP64 CPU reference with per-method tolerances.4243## 🏆 Headline results4445None yet — benchmarks (E1–E7) run in Phase 6; every number in the paper will point to a record under46`experiments/results/` listed in `experiments/manifests/`.4748## 🗂 Repository layout4950```51wp40_raid/52├── include/raid/{core,data,statistics,estimators,models,backend}/ # public C++20 headers53├── src/… backends/cpu/ backends/metal/{host,shaders}/ # implementations (Metal: Phase 3)54├── bindings/python/ python/raid/ cli/ # nanobind module, Python API, `raid` CLI55├── tests/{unit,property,reference,simulation,stress,integration}/ # Catch2 (reference = vs statsmodels/arch/highfrequency)56├── benchmarks/ experiments/{configs,scripts,results,manifests}/ # harness + tracked artifacts (Phase 6)57├── datasets/{synthetic,fixtures}/ # synthetic only; real data cached outside git58├── docs/ paper/ scripts/ .github/workflows/59```6061## 🚀 Quick start6263```bash64brew install cmake ninja eigen apache-arrow catch2 nlohmann-json # macOS65cmake --preset macos-release && cmake --build --preset macos-release # CPU + Metal + Arrow66ctest --preset macos-release # unit + reference tests67./build/macos-release/raid devices68./build/macos-release/raid validate datasets/fixtures/synthetic_bars_1m.csv69./build/macos-release/raid estimate realized datasets/fixtures/synthetic_bars_1m.csv --backend auto70uv venv --python 3.12 .venv && uv pip install --python .venv/bin/python -e ".[dev]" # Python package (nanobind)71```7273Linux / CPU-only: `cmake --preset cpu-only && cmake --build --preset cpu-only && ctest --preset cpu-only`.7475## 🗃 Data7677Market data come from the owner's **FinData OS** lakehouse (`https://findata.spboucher.ai/api/v1`, FirstRate Data under78a private-use license): 1-minute OHLCV bars (bar-open timestamps, extended 04:00–20:00 ET, regular 09:30–16:00 with the7916:00 closing print, zero-volume minutes absent at the source), dataset versions pinned via `X-Dataset-Version`. Raw80bars are never committed; `datasets/fixtures/` contains synthetic bars generated by `scripts/make_fixtures.py`.8182## 🔬 Methodology8384See `docs/methods/registry.md` (one entry per method: equations, conventions, reference software and tolerance) and85`docs/architecture/overview.md`.8687## 🖼 Figures & tables inventory8889To be generated in Phase 6–7 from `experiments/results/`.9091## ⚠️ Limitations9293Apple Metal has no FP64: GPU paths are FP32 with compensated reductions and FP64 combination on the CPU, and are only94valid where the documented tolerance is met. No tick/quote data: microstructure-noise and order-flow methods are out of95scope. Energy is reported only when measured.9697## 📖 Citation9899```bibtex100@techreport{boucher2026raid,101 title = {RAID: A Metal-Accelerated C++ Framework for Reproducible High-Frequency Financial Econometrics},102 author = {Boucher, Simon-Pierre},103 institution = {Université du Québec en Outaouais, Département des sciences administratives},104 type = {UQO Working Paper}, number = {40}, year = {2026}105}106```107108## 👤 Author & contact109110Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca — Département des sciences administratives, UQO.111112## 📝 Notes113114Directory name `wp40_raid` (charter requirement) instead of the usual slug; git remote `gitsrv:srv/git/wp40_uqo.git`.115