📉 Forecasting Realized Volatility Across Asset Classes
UQO Working Paper No. 12 — HAR, GARCH, and Machine Learning in a Unified Multi-Asset Horse Race, 2013–2026
TL;DR — A single out-of-sample horse race of HAR-type, GARCH-type and machine-learning forecasts of realized volatility on 25 assets from five classes (ETFs, stocks, FX, crypto, futures), 2013–2026, with a common 5-minute subsampled RV target, rolling re-estimation, QLIKE/MSE losses, Diebold–Mariano tests, the Model Confidence Set and a volatility-timing economic-value exercise. Draft 0.1: data, literature and methodology sections are written; the empirical pipeline (scripts 03–09) has not yet produced the results, robustness and economic-value sections.
📌 Status
| Item | Value |
|---|---|
| Version | 0.1 — draft (August 2026); abstract is still a placeholder |
| SSRN | not yet submitted (wait for version 1.0) |
| Journal | — |
| Code & data | pipeline complete (scripts/01–09, tests/ 2 files); results not yet generated beyond results/tables/summary_stats.tex and the data figures |
🎯 What this paper does
Volatility-forecasting comparisons are usually run on one asset class with heterogeneous targets and evaluation designs. This paper fixes a single design — same RV estimator, same rolling window, same horizons (1, 5, 22 days), same losses — and runs it on 25 liquid instruments spanning equities, FX, crypto and futures:
RV_t^{(5min)} → {HAR-RV, HAR-RV-J, HAR-RV-CJ, GARCH(1,1), GJR, EGARCH, ridge/lasso, random forest, XGBoost, LightGBM, LSTM}
→ rolling OOS → QLIKE / MSE → DM tests, MCS → volatility-timing utility🏆 Headline results
To be filled after the pipeline run (scripts/03_run_models.py → 04_evaluate.py → 06_economic_value.py).
🗂 Repository layout
realized-volatility-horse-race/
├── config.yaml # universe, sample, RV settings, horizons, models, seeds
├── data/
│ ├── raw/ # parquet cache from HF Market Data (see data/raw/README.md) — not committed
│ └── processed/ # rv_<ticker>.parquet, panel.parquet, forecasts/ — not committed
├── src/wp12/ # api_client, data_pipeline, realized_vol, models_econ, models_ml, evaluation, robustness, backtest, plots
├── scripts/ # 01_download_data … 09_build_paper
├── tests/ # pytest: realized_vol, evaluation
├── results/ # tables/ (LaTeX fragments), reproduced/ (CSV)
├── figures/ # fig_rv_series, fig_measures, fig_acf
└── paper/ # main.tex + sections/ + references.bib → main.pdf🚀 Quick start
python3 -m pip install -r requirements.txt
python3 scripts/01_download_data.py # ≈ 1.6 GB of 1-min bars (HF Market Data API, config.yaml)
python3 scripts/02_build_rv.py # realized measures per ticker + panel
python3 scripts/03_run_models.py # rolling forecasts (parallel per ticker)
python3 scripts/04_evaluate.py && python3 scripts/05_robustness.py && python3 scripts/06_economic_value.py
python3 scripts/07_make_figures.py && python3 scripts/08_make_tables.py
cd paper && make # latexmk → main.pdf
python3 -m pytest tests/ # unit tests🗃 Data
1-minute and daily bars for 25 assets + VIX, 2013-01-01 → 2026-07-31, from the HF Market Data API; equities use regular trading hours, futures/FX/crypto their own sessions (config.yaml → sample). Headline RV = 5-minute subsampled realized variance (5 offset grids), with realized kernel (Parzen), bipower variation and jump components as alternatives.
🔬 Methodology
- Realized measures (
src/wp12/realized_vol.py): RV, subsampled RV, realized kernel, BPV, jumps. - Econometric models (
models_econ.py): HAR family, GARCH family (arch). - Machine learning (
models_ml.py): penalized regressions, tree ensembles (XGBoost, LightGBM), LSTM (torch), SHAP attributions. - Evaluation (
evaluation.py): rolling out-of-sample, QLIKE/MSE, Diebold–Mariano, Model Confidence Set. - Robustness (
robustness.py): sampling frequency, window length, sub-periods, asset classes. - Economic value (
backtest.py): volatility-timing strategies and utility gains.
🖼 Figures & tables inventory
| Figure | Content |
|---|---|
fig_rv_series |
realized volatility series by asset class |
fig_measures |
comparison of realized measures |
fig_acf |
autocorrelation of RV (long memory) |
Tables: results/tables/summary_stats.tex (panel summary). Forecast-evaluation tables pending.
⚠️ Limitations
- Results, robustness and economic-value sections are not yet written (draft 0.1).
- Crypto trades 24/7 and FX nearly so; day definitions differ across classes by construction.
📝 Citation
@techreport{boucher2026rvhorserace,
author = {Boucher, Simon-Pierre},
title = {Forecasting Realized Volatility Across Asset Classes: HAR, GARCH, and Machine Learning in a Unified Multi-Asset Horse Race, 2013--2026},
institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},
type = {Working Paper},
number = {12},
year = {2026},
month = {August}
}👤 Author & contact
Simon-Pierre Boucher — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC. 📧 simon-pierre.boucher@uqo.ca
🗒 Notes
- Harmonisation 2026-10-17: canonical title page, version
0.1, contact e-mail switched to UQO. The\WPabstractmacro still holds the author's placeholder text — to be written with version 1.0.