SPB Git

spb/wp12_uqo

Public
6.5 KB

# 📉 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

Paper Python Data Reproducible Institution Author

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:

text
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

text
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

bash
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

  1. Realized measures (src/wp12/realized_vol.py): RV, subsampled RV, realized kernel, BPV, jumps.
  2. Econometric models (models_econ.py): HAR family, GARCH family (arch).
  3. Machine learning (models_ml.py): penalized regressions, tree ensembles (XGBoost, LightGBM), LSTM (torch), SHAP attributions.
  4. Evaluation (evaluation.py): rolling out-of-sample, QLIKE/MSE, Diebold–Mariano, Model Confidence Set.
  5. Robustness (robustness.py): sampling frequency, window length, sub-periods, asset classes.
  6. 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

bibtex
@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 \WPabstract macro still holds the author's placeholder text — to be written with version 1.0.
Files · 8f335997f78516c2499d7a72aad1219a924cb75b
Menu

Theme