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
Key findings
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
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
python3 -m pip install -r requirements.txtNo installation of the wp7 package is required — every script bootstraps
src/ onto its path. (Optional: pip install -e .)
Reproducing the results
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 + bibtexThe 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.