SPB Git

spb/wp7_uqo Public

UQO Working Paper No. 7 — Options-implied information for cross-asset return and volatility prediction: evidence from 3.8B option contracts.

Python 66.5% TeX 32.7% Makefile 0.8%
7.5 KB

# WP7 — The Options-Implied Information Content for Cross-Asset Return and Volatility Prediction

Evidence from 3.8 Billion Option Contracts

UQO Working Paper No. 7

Author Contact Institution

Paper Build References Python Reproduction Results

Key findings

Contracts Sample

Sharpe RV Granger FEVD Placebo


# About

Five research questions on the information content of equity option markets, answered with 3.83 billion option contracts (11,077 underlyings, 2010–2025) merged with 11.5 billion intraday OHLCV observations:

RQ Question Headline result
RQ1 Do implied moments predict cross-sectional returns? Weekly yes (R² 4.8–19.3%), daily no; kurtosis L/S Sharpe 2.33
RQ2 IV surface vs GARCH/HAR-RV for RV forecasting? HAR+IV improves 1-day R² by +23.3%, robust in all 9 subperiods
RQ3 Implied−realized correlation → market stress? Correlation ratio predicts stress at 5–20d ($t$: 3.91–8.30)
RQ4 Greeks decay by DTE; max-OI "price magnets"? Info rises with DTE; magnet hypothesis rejected (47.0% < 50%)
RQ5 ML on the SPX surface vs the VIX? HAR-RV beats RF/GBM and VIX OOS; 2w ATM IV = 50.8% of importance

# Author

Simon-Pierre Boucher · Département des sciences administratives, Université du Québec en Outaouais (UQO) · 📧 contact@spboucher.ai

# Repository layout

text
wp7_uqo/
├── README.md              this file
├── AUDIT.md               pre-restructuring audit + reproducibility map + flags
├── CHANGES.md             everything that was moved, renamed, refactored, rewritten
├── requirements.txt       pinned Python dependencies
├── pyproject.toml         optional `pip install -e .` of the wp7 package
├── Makefile               make pipeline | figures | paper | all
├── data/
│   ├── raw/               external DuckDB stores (not shipped — see data/raw/README.md)
│   └── processed/         5 derived parquets (authoritative surviving data)
├── src/wp7/               analysis library (config, data_io, econometrics,
│                          forecasting, portfolio)
├── scripts/               numbered entry points 01–13 (see below)
├── results/               41 CSV result tables (all paper tables derive from these)
├── figures/               supplementary figures (the paper itself is tables-only)
├── paper/                 LaTeX source: main.tex + preamble.tex + sections/ +
│                          appendix/ + references.bib  →  main.pdf (29 pp.)
├── _verify/               reproduction evidence: rerun logs + CSV comparator
└── _old/                  local byte-for-byte backup of the original (untracked)

# Setup

bash
python3 -m pip install -r requirements.txt

No installation of the wp7 package is required — every script bootstraps src/ onto its path. (Optional: pip install -e .)

# Reproducing the results

bash
make pipeline    # runs scripts 02–13 (skips raw-dependent steps gracefully)
make figures     # supplementary figures from the result CSVs
make paper       # compiles paper/main.pdf with latexmk + bibtex

The pipeline entry points, in execution order:

Script Question Needs raw stores?
01_extract_data.py raw → processed parquets yes (entirely)
02_rq1_return_predictability.py RQ1 panel + Fama-MacBeth no
03_rq2_rv_forecasting.py RQ2 HAR-RV vs IV surface no
04_rq3_correlation_divergence.py RQ3 correlation divergence stage 1 only
05_rq4_greeks_decay_magnets.py RQ4 Greeks decay + magnets part A; part B has a parquet fallback
06_rq5_ml_rv_forecast.py RQ5 ML vs VIX yes (entirely)
07_descriptive_stats.py descriptive panels A–H panels F, H only
08_subperiod_regime.py subperiods, regimes, rolling R² section B only
09_portfolio_sorts.py portfolio sorts + double sorts no
10_robustness.py NW / clustered SE / quantile / ticker R² section E only
11_granger_var.py Granger, VAR, IRF, FEVD no
12_make_figures.py supplementary figures no
13_extended_robustness.py winsorization/NW-lag sensitivity, Spearman ICs, decile sorts, leave-one-year-out, placebo no

The raw DuckDB stores no longer exist on this machine (see AUDIT.md §6.1); raw-dependent steps detect their absence and skip themselves. Every table in the paper is nonetheless backed by a shipped CSV in results/.

Reproduction status (2026-08-05): all 28 regenerable result files were re-run and compared against the originals — 10 byte-identical, 15 equal to floating-point noise, 1 explained deviation (collinearity-degenerate t-statistics, RQ3), and 2 files newly regenerated that were missing from the original archive. Full details in AUDIT.md §7 and CHANGES.md.

# Configuration

Environment variable Purpose Default
WP7_RAW_DATA_DIR location of the raw DuckDB stores data/raw/
WP7_RESULTS_DIR where scripts write result CSVs results/

# Paper

paper/main.tex (metadata + skeleton) → preamble.tex, one file per section under sections/, appendix under appendix/, BibTeX bibliography in references.bib (45 entries, all cited). Revision 1.1 adds four robustness subsections (estimator sensitivity, rank-based information coefficients, decile sorts, temporal stability + placebo) backed by scripts/13_extended_robustness.py. Build: make paper or cd paper && latexmk.


© 2026 Simon-Pierre Boucher · contact@spboucher.ai · Université du Québec en Outaouais