SPB Git

Repository Public Research preview

Commit

révision scientifique complète (editorial board, 2026-10-17)

- Correction de l'alignement des cibles multi-jours (ret_5d / rv_fwd_5d étaient des fenêtres
  rétrospectives) ; tous les résultats hebdomadaires recalculés, résultats v1.1 rétractés
- Inférence des tris (Newey-West), double tri par portefeuilles, stratégies calendar-time avec
  turnover mesuré et coûts ; RQ2 sur échantillon commun, sans colinéarité, DM sur 30 titres ;
  RQ3 sans design singulier (NW(h)) ; FEVD Cholesky (deux ordres)
- Tables du papier générées (scripts/14) ; bibliographie 45 -> 97 références vérifiées (Crossref)
- Sections réécrites, v1.2 October 2026, main_anon recompilé ; docs/REVIEW-REPORT.md et
  docs/CHANGELOG-REVISION.md ; CSV v1.1 conservés dans results/_pre-revision-20261017/

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed · Oct 18, 2026 parent 9b4f0ec
158 changed files +14,374 −2,607 Browse files
158 changed files
modified Makefile +2 −1
@@ -23,7 +23,8 @@ ANALYSIS_SCRIPTS := \
23 23 scripts/09_portfolio_sorts.py \
24 24 scripts/10_robustness.py \
25 25 scripts/11_granger_var.py \
26 − scripts/13_extended_robustness.py
26 + scripts/13_extended_robustness.py \
27 + scripts/14_make_paper_tables.py
27 28
28 29 .PHONY: all pipeline extract figures paper clean-paper
29 30
modified README.md +68 −55
@@ -3,14 +3,16 @@
3 3
4 4 **UQO Working Paper No. 7** — *Evidence from 3.8 Billion Option Contracts*
5 5
6 −[![Paper](https://img.shields.io/badge/paper-PDF%20(29%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)
6 +[![Paper](https://img.shields.io/badge/paper-PDF%20(53%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)
7 7 [![Python](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](requirements.txt)
8 8 [![Data](https://img.shields.io/badge/data-3.83%20B%20contracts%20·%2011.5%20B%20OHLCV%20·%20DuckDB%20%2B%20parquet-4051b5)](data/raw/README.md)
9 −[![Reproducible](https://img.shields.io/badge/reproducible-28%2F28%20result%20files%20verified-2e7d32)](docs/AUDIT.md)
9 +[![Reproducible](https://img.shields.io/badge/reproducible-parquet%20pipeline%20%3C%202%20min-2e7d32)](docs/CHANGELOG-REVISION.md)
10 10 [![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)
11 11 [![Author](https://img.shields.io/badge/author-Simon--Pierre%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca)
12 12
13 −> **TL;DR** — 3.83 billion option contracts on 11,077 underlyings (2010–2025) are merged with 11.5 billion intraday OHLCV bars across stocks, ETFs, indices, futures, FX and crypto. Implied kurtosis, skewness and put–call ratios predict 5-day returns (kurtosis long–short **Sharpe 2.33**, t = 19.8); adding IV-surface features to HAR-RV raises 1-day RV forecast R² by **+23.3 %** (0.359 → 0.442) in every subperiod; the implied/realized correlation ratio predicts market stress at 5–20 days (t = 3.9–8.3); ATM IV Granger-causes RV in **100 %** of tickers and explains **73.8 %** of its 20-day FEVD. Everything survives HAC, double clustering, quantiles, winsorization, leave-one-year-out and a within-ticker placebo.
13 +> **TL;DR** — A daily panel of option-implied features and 5-minute realized variances for 69 liquid US underlyings (49 large stocks, 17 ETFs, 3 indices; 264,383 ticker-days, 2010–2025) is built from 3.83 billion option records. Option-implied features predict weekly returns in a statistically detectable but economically marginal way (R² **0.3 %** for stocks, 0.6 % ETFs, 1.0 % indices; only the 25δ skew survives two-way clustering; one strategy of fourteen is profitable after 10 bps, with t = 2.2). The IV surface raises the HAR-RV R² from **0.415 to 0.457** (1-day) and **0.421 to 0.515** (5-day) on a common sample, in every subperiod; out of sample the gain holds under MSE but not under QLIKE. The implied/realized correlation ratio predicts stress at 5–20 days (t 2.3–4.1); ATM IV Granger-causes RV in 100 % of tickers but explains **20–29 %** of its 20-day FEVD. Price magnets rejected; tree-based ML does not beat HAR-RV.
14 +>
15 +> ⚠️ **Version 1.2 (2026-10-17) corrects a target-alignment error in v1.1**: the 5-day "forward" targets were trailing windows (r_{t−3}+…+r_{t+1}). The v1.1 headline results (weekly R² 5–19 %, kurtosis Sharpe 2.33, R²_OOS 0.99) are withdrawn. See `docs/CHANGELOG-REVISION.md`.
14 16
15 17 ---
16 18
@@ -18,35 +20,38 @@
18 20
19 21 | Item | Value |
20 22 |---|---|
21 −| Version | 1.1 (May 2026) |
22 −| SSRN | [7626643](https://ssrn.com/abstract=7626643) — PRELIMINARY_UPLOAD 2026-10-17 (SSRN comments pending, see dashboard) |
23 −| Journal | — |
24 −| Code & data | reproducible from `scripts/` (raw DuckDB stores no longer available, derived parquets shipped) |
23 +| Version | **1.2 (October 2026)** — revised 2026-10-17 (editorial-board review; `docs/REVIEW-REPORT.md`, `docs/CHANGELOG-REVISION.md`) |
24 +| SSRN | [7626643](https://ssrn.com/abstract=7626643) — uploaded 2026-10-17 **with the v1.1 results; must be replaced by `paper/main.pdf` (v1.2)** |
25 +| Journal | target *Journal of Futures Markets* (double-anonymous; `paper/main_anon.pdf`); fallback JBF / JFM. Not yet submitted |
26 +| Code & data | parquet-only pipeline reproducible in < 2 min (`make pipeline`); raw DuckDB stores no longer available |
25 27
26 28 ## 🎯 What this paper does
27 29
28 −Five research questions on the information content of equity option markets, answered on the largest options panel assembled for this purpose:
30 +Five research questions on the information content of equity option markets, answered on a panel of 69 liquid underlyings:
29 31
30 −| RQ | Question | Headline result |
32 +| RQ | Question | Result (v1.2) |
31 33 |---|---|---|
32 −| **RQ1** | Do implied moments predict cross-sectional returns? | Weekly yes (R² 4.8–19.3 %), daily no; kurtosis L/S Sharpe **2.33** |
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 |
34 −| **RQ3** | Implied − realized correlation → market stress? | Correlation ratio predicts stress at 5–20 d (t: 3.91–8.30) |
35 −| **RQ4** | Greeks decay by DTE; max-OI "price magnets"? | Information rises with DTE; magnet hypothesis **rejected** (47.0 % < 50 %) |
36 −| **RQ5** | ML on the SPX surface vs the VIX? | HAR-RV beats RF/GBM and VIX out of sample; 2-week ATM IV = 50.8 % of importance |
34 +| **RQ1** | Do implied moments predict cross-sectional returns, and is it tradable? | Weekly R² 0.3 % (stocks) → 1.0 % (indices); daily ≈ 0; only Skew₂₅δ robust (t_DC 2.91, positive sign); best net strategy (ATM IV sort) Sharpe 0.34 at 10 bps |
35 +| **RQ2** | IV surface vs HAR-RV for RV forecasting? | In-sample +9.9 % (1-day) / +22.3 % (5-day) on a common sample, positive in 9/9 subperiods; OOS: better under MSE (14/30 tickers), worse under QLIKE (15/30); IV level alone best at 5 days |
36 +| **RQ3** | Implied − realized correlation → market stress? | Ratio predicts stress at 5/10/20 d (t_NW 3.27 / 4.13 / 2.33), Feb 2016–Dec 2025 |
37 +| **RQ4** | Greeks by DTE; max-OI "price magnets"? | RV fit rises with DTE (3.8 % → 9.5 %); magnet share 47.0 % < 50 % (frozen output) |
38 +| **RQ5** | ML on the SPX surface vs the VIX? | HAR-RV (R²_OOS 0.437) beats VIX (0.336), RF (0.143), GBM (0.095); 2-week ATM IV = 50.8 % of RF importance (frozen output) |
37 39
38 40 ## 🏆 Headline results
39 41
40 42 | Object | Estimate |
41 43 |---|---|
42 −| Option contracts / underlyings / period | 3.83 B / 11,077 / 2010–2025 |
43 −| Analysis panel | 264,383 ticker-days, 69 tickers |
44 −| Kurtosis-sorted long–short Sharpe (annualized) | **2.33** (t = 19.84) |
45 −| HAR-RV → HAR-RV + IV surface, 1-day R² | 0.359 → 0.442 (**+23.3 %**), COVID +19.4 % |
46 −| Implied/realized correlation → stress, t-stats (5/10/20 d) | 3.91–8.30 |
47 −| IV → RV Granger causality | 100 % of tickers (F = 62.4) |
48 −| RV FEVD explained by IV shocks at 20 d | 73.8 % |
49 −| Placebo R² (within-ticker permutation) | 0.0008 vs 0.053 actual |
44 +| Option records / underlyings / period | 3.83 B / 11,077 / 2010–2025 |
45 +| Analysis panel | 264,383 ticker-days, 69 tickers (119,081 with all ten predictors) |
46 +| 5-day return R², stocks / ETFs / indices / all | 0.29 % / 0.61 % / 1.01 % / 0.31 % |
47 +| Only predictor significant under two-way clustering (5-day) | Skew₂₅δ: +19 bps per SD, t_DC = 2.91 |
48 +| Best long-short sort (5-day, calendar time) | ATM IV: 13.6 %/yr, Sharpe 0.54 gross (t_NW 2.19), 0.34 net of 10 bps, break-even 27 bps |
49 +| HAR-RV → HAR-RV + IV surface, 1-day / 5-day R² (common sample) | 0.415 → 0.457 (+9.9 %) / 0.421 → 0.515 (+22.3 %) |
50 +| OOS (30 tickers): median MSE ratio / QLIKE ratio | 0.967 (DM>1.96: 14, <−1.96: 0) / 1.171 (DM>1.96: 0, <−1.96: 15) |
51 +| Implied/realized correlation ratio → stress, t_NW (5/10/20 d) | 3.27 / 4.13 / 2.33 |
52 +| IV → RV Granger causality | 100 % of tickers (mean F = 62.4) |
53 +| RV FEVD explained by IV shocks at 20 d (RV first / IV first) | 20.2 % / 28.5 % |
54 +| Placebo R² (within-ticker permutation) | 0.0004 vs 0.0031 actual |
50 55
51 56 ## 🗂 Repository layout
52 57
@@ -54,14 +59,15 @@ Five research questions on the information content of equity option markets, ans
54 59 options-implied-cross-asset/
55 60 ├── data/
56 61 │ ├── raw/ # external DuckDB stores (not shipped — see data/raw/README.md)
57 −│ └── processed/ # 5 derived parquets (authoritative surviving data)
62 +│ └── processed/ # 5 derived parquets (unchanged; forward targets re-derived at load time)
58 63 ├── src/wp7/ # analysis library (config, data_io, econometrics, forecasting, portfolio)
59 −├── scripts/ # numbered entry points 01–13 (table below)
60 −├── results/ # 41 CSV result tables (every paper table derives from these)
64 +├── scripts/ # numbered entry points 01–14 (table below)
65 +├── results/ # CSV result tables (every paper table derives from these)
66 +│ └── _pre-revision-20261017/ # v1.1 CSVs kept for audit
61 67 ├── figures/ # supplementary figures (the paper itself is tables-only)
62 −├── docs/ # AUDIT.md, CHANGES.md, verify/ (rerun logs + CSV comparator)
68 +├── docs/ # REVIEW-REPORT.md, CHANGELOG-REVISION.md, AUDIT.md, CHANGES.md, verify/
63 69 ├── Makefile # make pipeline | figures | paper | all
64 −└── paper/ # main.tex + preamble.tex + sections/ + appendix/ + references.bib → main.pdf
70 +└── paper/ # main.tex + preamble.tex + sections/ + tables/ (generated) + appendix/ + references.bib → main.pdf
65 71 ```
66 72
67 73 ## 🚀 Quick start
@@ -69,51 +75,56 @@ options-implied-cross-asset/
69 75 ```bash
70 76 python3 -m pip install -r requirements.txt # scripts bootstrap src/ themselves
71 77 make pipeline # scripts 02–13 (raw-dependent steps skip themselves gracefully)
78 +python3 scripts/14_make_paper_tables.py # regenerate paper/tables/*.tex from results/
72 79 make figures # supplementary figures from the result CSVs
73 −cd paper && make # latexmk → main.pdf
80 +cd paper && make # latexmk → main.pdf (latexmk -pdf main_anon.tex for the anonymous version)
74 81 ```
75 82
76 83 | Script | Question | Needs raw stores? |
77 84 |---|---|---|
78 85 | `01_extract_data.py` | raw → processed parquets | **yes (entirely)** |
79 −| `02_rq1_return_predictability.py` | RQ1 panel + Fama–MacBeth | no |
80 −| `03_rq2_rv_forecasting.py` | RQ2 HAR-RV vs IV surface | no |
81 −| `04_rq3_correlation_divergence.py` | RQ3 correlation divergence | stage 1 only |
86 +| `02_rq1_return_predictability.py` | RQ1 panel + Fama–MacBeth (NW) | no |
87 +| `03_rq2_rv_forecasting.py` | RQ2 HAR-RV vs IV surface, OOS, DM (30 tickers) | no |
88 +| `04_rq3_correlation_divergence.py` | RQ3 correlation divergence (3 specifications, NW) | stage 1 only |
82 89 | `05_rq4_greeks_decay_magnets.py` | RQ4 Greeks decay + magnets | part A; part B has a parquet fallback |
83 −| `06_rq5_ml_rv_forecast.py` | RQ5 ML vs VIX | **yes (entirely)** |
84 −| `07_descriptive_stats.py` | descriptive panels A–H | panels F, H only |
85 −| `08_subperiod_regime.py` | subperiods, regimes, rolling R² | section B only |
86 −| `09_portfolio_sorts.py` | portfolio sorts + double sorts | no |
87 −| `10_robustness.py` | NW / clustered SE / quantile / ticker R² | section E only |
88 −| `11_granger_var.py` | Granger, VAR, IRF, FEVD | no |
90 +| `06_rq5_ml_rv_forecast.py` | RQ5 ML vs VIX (code corrected, not re-run) | **yes (entirely)** |
91 +| `07_descriptive_stats.py` | descriptive panels A–H | panel H only |
92 +| `08_subperiod_regime.py` | subperiods, VIX regimes, rolling R² | no (VIX from the RQ3 parquet) |
93 +| `09_portfolio_sorts.py` | sorts, double sorts, calendar-time strategies + costs | no |
94 +| `10_robustness.py` | HC1 / NW(5,22) / double-clustered SE / controls / quantile / ticker R² | no |
95 +| `11_granger_var.py` | Granger, VAR, orthogonalized IRF / FEVD | no |
89 96 | `12_make_figures.py` | supplementary figures | no |
90 −| `13_extended_robustness.py` | winsorization / NW-lag sensitivity, Spearman ICs, decile sorts, leave-one-year-out, placebo | no |
97 +| `13_extended_robustness.py` | winsorization / NW lags / Spearman ICs / deciles / leave-one-year-out / placebo | no |
98 +| `14_make_paper_tables.py` | all LaTeX table fragments (`paper/tables/`) | no |
91 99
92 −Environment variables: `WP7_RAW_DATA_DIR` (raw DuckDB stores, default `data/raw/`), `WP7_RESULTS_DIR` (default `results/`).
100 +Environment variables: `WP7_RAW_DATA_DIR` (raw DuckDB stores, default `data/raw/`), `WP7_RESULTS_DIR` (default `results/`), `WP7_LEGACY_TARGETS=1` (reproduce the mis-aligned v1.1 targets, audit only).
93 101
94 102 ## 🗃 Data
95 103
96 −Options chains with Greeks (3.83 B contracts, 11,077 underlyings, 2010–2025) and 1-minute OHLCV bars (11.5 B rows) from the HF Market Data lake, stored as DuckDB; the five derived parquets in `data/processed/` (daily implied moments, surface features, realized measures, correlation panels, SPX surface) are shipped and sufficient for every table of the paper. The raw stores are no longer on this machine (`docs/AUDIT.md` §6.1).
104 +Options chains with Greeks (3.83 B records, 11,077 underlyings, 2010–2025) and 1-minute/5-minute OHLCV bars (11.5 B rows) from the HF Market Data lake, stored as DuckDB; the five derived parquets in `data/processed/` (daily implied features, surface features, realized measures, correlation panels, SPX magnet data) are shipped and sufficient for every table of the paper except the frozen RQ4-A and RQ5 outputs. The raw stores are no longer on this machine (`docs/AUDIT.md` §6.1). The analysis universe is a fixed, ex-post list of liquid names (survivorship bias acknowledged in the paper).
97 105
98 106 ## 🔬 Methodology
99 107
100 −1. **Implied moments** (ATM IV, skew, kurtosis, put–call ratios, term slope) per ticker-day from the option surface (`src/wp7/data_io.py`).
101 −2. **Return predictability**: panel and Fama–MacBeth regressions, quintile/decile sorts, double sorts (`econometrics.py`, `portfolio.py`).
102 −3. **RV forecasting**: HAR-RV augmented with surface features vs GARCH, by subperiod and VIX regime (`forecasting.py`).
103 −4. **Correlation divergence**: implied vs realized S&P 500 constituent correlation as a stress predictor.
104 −5. **Greeks decay & price magnets**: information by days-to-expiry; max-open-interest pinning test.
105 −6. **Granger / VAR / IRF / FEVD** between ATM IV and RV.
106 −7. **Robustness**: Newey–West (≤ 22 lags), double clustering, quantile regressions, winsorization, rank ICs, leave-one-year-out, within-ticker permutation placebo.
108 +1. **Implied features** (ATM IV 30/90 d, term slope, 25δ skew, smile-based skewness and kurtosis proxies, put–call ratios, net gamma) per ticker-day (`src/wp7/data_io.py`, `scripts/01`).
109 +2. **Forward targets**: strictly forward sums `Σ_{j=1..5} x_{t+j}` (`data_io.fix_forward_targets`).
110 +3. **Return predictability**: pooled OLS (HC1, NW, two-way clustering), Fama–MacBeth with NW, quintile/decile sorts with NW t-stats, calendar-time overlapping-cohort strategies with measured turnover and net-of-cost Sharpe ratios (`econometrics.py`, `portfolio.py`).
111 +4. **RV forecasting**: HAR-RV (RV_t, RV^(w), RV^(m)) vs IV models on a common sample; rolling OOS (500/250), MSE, QLIKE, R²_OOS, DM with NW variance (`forecasting.py`).
112 +5. **Correlation divergence**: equal-weight implied correlation (CBOE/Skintzi–Refenes analogue), 22-day realized correlation, LPM with NW(h).
113 +6. **Greeks decay & price magnets**: by DTE bucket; max-OI attraction test.
114 +7. **Granger / VAR**: per-ticker F-tests; bivariate VAR(5) with Cholesky-orthogonalized IRF/FEVD under both orderings.
115 +8. **Robustness**: subperiods, VIX regimes, controls, quantiles, ticker R², winsorization, NW lags, Spearman ICs, deciles, leave-one-year-out, placebo.
107 116
108 117 ## 🖼 Figures & tables inventory
109 118
110 −The paper is tables-only (41 CSV tables in `results/`, typeset in `paper/sections/results.tex`, `robustness.tex` and `appendix/`). Supplementary figures from `scripts/12_make_figures.py` are in `figures/`.
119 +The paper is tables-only: 27 table fragments generated by `scripts/14_make_paper_tables.py` into `paper/tables/` (plus the frozen raw-data inventory table typed in `sections/data.tex`). Supplementary figures from `scripts/12_make_figures.py` are in `figures/`.
111 120
112 121 ## ⚠️ Limitations
113 122
114 −- Raw option and OHLCV stores are not redistributable; raw-dependent steps (01, 06, parts of 04/05/07/08/10) cannot be re-run from this repository.
115 −- The 69-ticker analysis panel is liquidity-selected; results for thinly traded options may differ.
116 −- Weekly predictability is in-sample Sharpe before transaction costs.
123 +- Fixed ex-post universe of 69 liquid names (survivorship bias); results do not speak to small caps, where the literature locates most option-implied return predictability.
124 +- "Implied skewness/kurtosis" are smile-based proxies, not model-free risk-neutral moments; results are sensitive to tail trimming.
125 +- Long-short strategies are equal-weighted, not factor-adjusted; costs are proportional assumptions.
126 +- RQ4-A (Greeks by DTE) and RQ5 (ML) are frozen outputs of the original run (raw stores unavailable); only their 1-day components are reported.
127 +- RQ3 stress indicator is defined from the VIX, which is also a regressor; realized correlation available from Feb 2016 only.
117 128
118 129 ## 📝 Citation
119 130
@@ -125,7 +136,8 @@ The paper is tables-only (41 CSV tables in `results/`, typeset in `paper/section
125 136 type = {Working Paper},
126 137 number = {7},
127 138 year = {2026},
128 − month = {May}
139 + month = {October},
140 + note = {Version 1.2}
129 141 }
130 142 ```
131 143
@@ -137,6 +149,7 @@ Université du Québec en Outaouais (UQO), Gatineau, QC.
137 149
138 150 ## 🗒 Notes
139 151
140 −- Reproduction audit (2026-08-05): 28/28 regenerable result files re-run — 10 byte-identical, 15 within floating-point noise, 1 explained deviation (RQ3 collinearity), 2 newly regenerated; details in `docs/AUDIT.md` §7 and `docs/CHANGES.md`, evidence in `docs/verify/`.
141 −- The May 2026 flat version (`_old/`) is archived in `Recherche-UQO/_archives/versions-mai-2026/options-implied-cross-asset--_old/`; the original project is in `…/options-implied-cross-asset--hf-wp7-20260519/`.
142 −- Harmonisation 2026-10-17: canonical title page, bibliography style switched from apalike to aer, `pyproject.toml` dropped in favour of the pinned `requirements.txt`. The SSRN PDF (uploaded 2026-10-17) predates this cover; re-upload `paper/main.pdf`.
152 +- **Revision 2026-10-17 (v1.2)**: full editorial-board review — `docs/REVIEW-REPORT.md` (diagnosis, methodology verdicts, literature, maturity) and `docs/CHANGELOG-REVISION.md` (every corrected number, scripts re-run, items not re-executable). Pre-revision state: git tag `pre-revision-20261017`, `docs/main_pre-revision-20261017.pdf`, `results/_pre-revision-20261017/`. Bibliography 45 → 97 entries, all verified on Crossref (`docs/verify/crossref/`).
153 +- Reproduction audit of v1.0 (2026-08-05): `docs/AUDIT.md`, `docs/CHANGES.md`, evidence in `docs/verify/` (v1.1 logs and CSVs).
154 +- The May 2026 flat version is archived in `Recherche-UQO/_archives/versions-mai-2026/options-implied-cross-asset--_old/`; the original project is in `…/options-implied-cross-asset--hf-wp7-20260519/`.
155 +- Harmonisation 2026-10-17: canonical title page, bibliography style `aer`, pinned `requirements.txt`.
modified docs/AUDIT.md +3 −0
@@ -5,6 +5,9 @@ Contact: contact@spboucher.ai
5 5
6 6 # AUDIT — WP7 "Options-Implied Information Content" (source: `UQO/UQO_WP/hf-wp7-spb20260519`)
7 7
8 +> **Note (2026-10-17).** This audit describes the v1.0 → v1.1 restructuring. The scientific revision of 2026-10-17 (v1.2) found that the multi-day forward targets of the extraction step were mis-aligned and corrected several methodological issues; the regenerated results supersede the ones discussed below. See `REVIEW-REPORT.md` and `CHANGELOG-REVISION.md`.
9 +
10 +
8 11 Audit performed on 2026-08-05, **before any restructuring**. The full original tree is preserved
9 12 verbatim in [`_old/`](_old/).
10 13
added docs/CHANGELOG-REVISION.md +178 −0
@@ -0,0 +1,178 @@
1 +<!--
2 +Author: Simon-Pierre Boucher
3 +Contact: contact@spboucher.ai
4 +-->
5 +
6 +# CHANGELOG — Révision scientifique complète (editorial board, 2026-10-17)
7 +
8 +Papier : **WP 7 — The Options-Implied Information Content for Cross-Asset Return and Volatility
9 +Prediction** (`finance/options-implied-cross-asset`, dépôt `wp7_uqo.git`).
10 +État de départ figé : tag `pre-revision-20261017`, PDF `docs/main_pre-revision-20261017.pdf` (29 pages, v1.1).
11 +État d'arrivée : `paper/main.pdf` (53 pages, v1.2, October 2026), `paper/main_anon.pdf`.
12 +Rapport scientifique : `docs/REVIEW-REPORT.md`. Les CSV de résultats remplacés sont conservés dans
13 +`results/_pre-revision-20261017/` (41 fichiers, copie exacte du tag).
14 +
15 +Convention : **C** = correction (erreur démontrée), **A** = ajout/renforcement, **E** = éditorial.
16 +
17 +---
18 +
19 +## 1. Corrections majeures (avant → après, preuve)
20 +
21 +### C1 — Cibles multi-jours mal alignées (erreur de code, affecte toute la partie « weekly » du papier)
22 +- **Où** : `scripts/01_extract_data.py::compute_weekly_rv` (et `06_rq5_ml_rv_forecast.py` pour SPX).
23 + `ret_5d = daily_return.shift(-1).rolling(5).sum()` : la fenêtre `rolling` est **rétrospective**, donc
24 + `ret_5d(t) = r_{t-3} + r_{t-2} + r_{t-1} + r_t + r_{t+1}` — quatre termes passés/contemporains sur cinq.
25 + Idem pour `rv_fwd_5d` et `rv_fwd_22d` (RQ5).
26 +- **Preuve** : `data/processed/realized_vol.parquet` — 100 % des valeurs de `ret_5d` coïncident avec la
27 + définition fautive, 0,005 % avec la vraie somme forward ; corr(`ret_5d`, `daily_return_t`) = 0,42
28 + (contrôle exécuté le 2026-10-17, voir REVIEW-REPORT §4.1). `ret_1d` et `rv_fwd_1d` étaient corrects.
29 +- **Correction** : `src/wp7/data_io.py::forward_sum` / `fix_forward_targets` (somme strictement forward
30 + `sum_{j=1..5} x_{t+j}`, 5 observations exigées) appliquée par défaut dans `load_merged()` ; colonnes
31 + `ret_5d_legacy`, `rv_fwd_5d_legacy` conservées ; `WP7_LEGACY_TARGETS=1` reproduit v1.1. Parquets livrés **inchangés**.
32 +- **Conséquences chiffrées (v1.1 → v1.2)** :
33 +
34 +| Résultat | v1.1 | v1.2 |
35 +|---|---|---|
36 +| R² rendement 5 j, actions / ETF / indices / tous | 4,76 % / 12,4 % / 19,3 % / 5,29 % | **0,29 % / 0,61 % / 1,01 % / 0,31 %** |
37 +| Tri quintile kurtosis implicite, L/S 5 j | +44,0 %/an, Sharpe 2,33, t = 19,84 | **−6,1 %/an, Sharpe −0,33, t_NW = −1,66** |
38 +| Tri PC volume ratio | −30,3 %, Sharpe −2,48, t = −21,8 | +5,1 %, Sharpe 0,42, t_NW = 2,64 |
39 +| Tri skew 25δ | −37,5 %, Sharpe −1,87 | +5,9 %, Sharpe 0,31, t_NW = 1,54 |
40 +| Double tri IV × skew, cellule High IV/High skew | −47,8 bps/sem. (t = −6,17) | +34,0 bps (t = 2,59) ; différences H−L skew non significatives |
41 +| R² HAR-RV, cible RV 5 j | 0,888 | 0,421 (échantillon commun) |
42 +| R² HAR+IV, cible RV 5 j | 0,896 | 0,515 |
43 +| RQ5 R²_OOS HAR-RV 5 j / 22 j | 0,948 / 0,994 | **retirés** (non recalculables, données brutes absentes) |
44 +| Sous-périodes, R² 5 j | 3,1 %–14,4 % | 0,13 %–4,2 % |
45 +| Régimes VIX, R² 5 j | 2,7 %–19,8 % | 0,11 %–3,0 % |
46 +| Leave-one-year-out, R² 5 j | [4,7 %, 5,7 %] | [0,26 %, 0,53 %] |
47 +| Placebo | 0,0008 vs 0,0529 | 0,0004 vs 0,0031 |
48 +| IC Spearman 5 j kurtosis / PC vol | +0,098 (t 16,8) / −0,059 (t −13,8) | −0,019 (t −3,2) / +0,016 (t 3,9) |
49 +| Winsorisation : t kurtosis sans winsorisation | 13,8 | −0,47 |
50 +| Robustesse SE 5 j : # prédicteurs sig. HC1 / NW(5) / DC | 10 / 9 / 8 | 7 / 4 / 1 |
51 +
52 +### C2 — Inférence des tris et doubles tris
53 +- **Où** : `src/wp7/portfolio.py`. v1.1 : t = moyenne/(σ/√N) sur la série quotidienne de rendements 5 j
54 + **chevauchants** ; double tri : t calculé en empilant tous les titre-jours d'une cellule (ignore la dépendance
55 + transversale et le chevauchement).
56 +- **Après** : t Newey–West (h−1 = 4 retards) sur la série de portefeuille ; cellules du double tri = portefeuilles
57 + quotidiens, t NW sur la série, différences H−L sur séries de différences. L'ancien t est conservé (`t_statistic_iid`).
58 + Facteur d'inflation mesuré : 1,4–1,8.
59 +
60 +### C3 — Analyse de coûts de transaction
61 +- v1.1 : coûts appliqués au seul tri sur l'implied skewness avec un turnover **supposé** de 2/5 par jour.
62 +- v1.2 : implémentation calendar-time (Jegadeesh–Titman) de **chaque** stratégie (h = 1 et 5) : série
63 + quotidienne non chevauchante, turnover **mesuré** Σ|W_t − W_{t−1}|, coût de rentabilité nul, Sharpe net à
64 + 5/10/25/50 bps (`portfolio.calendar_time_long_short`, `results/calendar_time_strategies.csv`,
65 + `transaction_cost_analysis.csv`, Table 8). Seule la stratégie IV ATM garde un Sharpe net positif à 10 bps (0,34, t brut 2,19).
66 +
67 +### C4 — Comparaison de modèles RQ2 sur des échantillons différents + colinéarité exacte
68 +- v1.1 : HAR-RV R² = 0,359 sur 264 345 obs. vs HAR+IV R² = 0,442 sur 119 093 obs. (« +23,3 % ») ;
69 + « IV only » contenait `iv_atm_30d`, `iv_atm_90d` **et** `iv_term_slope = iv_atm_90d − iv_atm_30d` (dépendance
70 + linéaire exacte) → prévisions OOS explosives (R²_OOS médian −539, QLIKE 73 606 dans `rq2_oos_results.csv` v1.1,
71 + jamais rapportées) ; composante journalière HAR = RV_{t−1} au lieu de RV_t ; plancher QLIKE à 1e-10.
72 +- v1.2 : échantillon commun (119 093), RV_t comme composante journalière (éq. HAR du papier), blocs IV sans la pente,
73 + prévisions plancher = 1er centile de la cible d'entraînement, DM avec variance NW(h) pour les 30 titres (et non
74 + 4 titres choisis parmi 10). Résultat : HAR 0,415 → 0,457 (+9,9 %) à 1 j ; 0,421 → 0,515 (+22,3 %) à 5 j ;
75 + OOS : MSE ratio médian 0,967, DM > 1,96 pour 14/30, < −1,96 pour 0 ; **QLIKE ratio 1,17, pire pour 15/30**.
76 +- Omission réparée : v1.1 citait AAPL, AMD, CAT, COST (DM positifs) et taisait BA (−39 %, DM −6,4) et CSCO (−34 %, DM −3,8).
77 +
78 +### C5 — RQ3 : design singulier
79 +- v1.1 régressait sur `corr_divergence`, `corr_ratio`, `implied_corr`, `realized_corr` ensemble ;
80 + `corr_divergence = implied_corr − realized_corr` ⇒ X'X singulier, t « 0,00 » de la divergence = artefact (déjà
81 + signalé dans AUDIT.md §7). Erreurs-types HC1 sur un indicateur forward chevauchant.
82 +- v1.2 : trois spécifications séparées (ratio ; divergence ; composantes) + VIX + IV SPX, NW(h). Ratio :
83 + t = 3,27/4,13/2,33 (v1.1 : 4,07/8,30/3,91) ; divergence : 2,14/1,89/1,38. Période explicitée : fév. 2016–déc. 2025
84 + (la corrélation réalisée n'existe qu'à partir de 2016-02-02 ; N = 2 486).
85 +
86 +### C6 — FEVD non orthogonalisée
87 +- v1.1 : « parts » calculées à partir des IRF réduites à chocs unitaires (sans Σ) : 73,8 % à 20 j.
88 +- v1.2 : `econometrics.orthogonalized_irf_fevd` (Cholesky, deux ordres). Part de la variance de RV due aux chocs IV à 20 j :
89 + **20,2 % (RV d'abord) / 28,5 % (IV d'abord)** ; corrélation résiduelle moyenne 0,20 ; part de IV due à RV < 6 %.
90 +
91 +### C7 — Bibliographie
92 +- `ni2009does` (« Does option trading convey stock price information?, JF 60(3) 2009 ») : titre, revue, volume,
93 + pages erronés → remplacé par **Ni, Pearson & Poteshman (2005), JFE 78(1), 49–87**, DOI 10.1016/j.jfineco.2004.08.005.
94 +- `barbon2022option` (« JFE 143(1) 316–348 ») : aucune publication trouvée (Crossref) → @unpublished SSRN 3725454.
95 +- DOI ajoutés aux 45 entrées existantes ; titres complétés (Blair et al. 2001, Busch et al. 2011, Driessen et al. 2009,
96 + Easley et al. 1998, Patton & Sheppard 2015).
97 +
98 +### C8 — Chiffres du texte non reproductibles (signalés dans AUDIT/CHANGES v1.1, désormais régénérés)
99 +- Colonne HC1 de l'ancienne Table « robust_se » (kurtosis 25,87) et distribution R² par titre (5,9 % / 4,7 %)
100 + ne correspondaient à aucun CSV → toutes les tables sont désormais **générées** par `scripts/14_make_paper_tables.py`.
101 +
102 +---
103 +
104 +## 2. Éditorial et structure (E)
105 +- Toutes les tables du papier (27 fragments `paper/tables/*.tex`) sont générées depuis `results/` ; plus aucun nombre tapé
106 + à la main (sauf la table d'inventaire des données brutes, figée).
107 +- Introduction réécrite (contribution, résultats, paragraphe « Relation to the previous version ») ; revue de littérature
108 + restructurée (5 sous-sections, 52 références ajoutées, discussion des résultats contradictoires) ; données
109 + (univers fixe, biais de survie, proxys ≠ moments BKM, équation des cibles + note de bas de page sur l'erreur) ;
110 + méthodologie (équations FM, calendar-time, pertes MSE/QLIKE, DM, corrélation implicite dérivée, VAR/FEVD) ;
111 + résultats, robustesse, discussion, conclusion réécrits sur les nouveaux chiffres ; appendice (univers, crises,
112 + DM par titre, features SPX, importance RF).
113 +- Résumé, mots-clés, `\WPversion` 1.2, `\WPdate` October 2026 ; `main_anon.tex` régénéré.
114 +- Vocabulaire : « GARCH proxy » → « ARCH-type benchmark » ; « implied skewness/kurtosis » qualifiés de proxys.
115 +
116 +## 3. Références ajoutées (52, toutes vérifiées Crossref — `docs/verify/crossref/*.json|log`)
117 +Bakshi–Kapadia–Madan 2003 (10.1093/rfs/16.1.0101) ; Bakshi–Madan 2000 (10.1016/S0304-405X(99)00050-1) ;
118 +Britten-Jones–Neuberger 2000 (10.1111/0022-1082.00228) ; Jiang–Tian 2005 (10.1093/rfs/hhi027) ;
119 +Dennis–Mayhew 2002 (10.2307/3594989) ; Bali–Hovakimian 2009 (10.1287/mnsc.1090.1063) ; Rehman–Vilkov 2012 (SSRN 1301648) ;
120 +Conrad–Dittmar–Ghysels 2013 (10.1111/j.1540-6261.2012.01795.x) ; Bali–Murray 2013 (10.1017/S0022109013000410) ;
121 +Mixon 2007 (10.1016/j.jempfin.2006.06.003) ; Vasquez 2017 (10.1017/S002210901700076X) ; Borochin–Chang–Wu 2020
122 +(10.1016/j.jempfin.2020.06.003) ; Martin 2017 (10.1093/qje/qjw034) ; Martin–Wagner 2019 (10.1111/jofi.12778) ;
123 +Christoffersen–Jacobs–Chang 2013 (10.1016/B978-0-444-53683-9.00010-4) ; Chakravarty–Gulen–Mayhew 2004
124 +(10.1111/j.1540-6261.2004.00661.x) ; Muravyev–Pearson–Broussard 2013 (10.1016/j.jfineco.2012.09.003) ;
125 +Muravyev–Pearson–Pollet 2025 (10.1016/j.jfineco.2025.104153) ; Ni–Pan–Poteshman 2008 (10.1111/j.1540-6261.2008.01352.x) ;
126 +Ni–Pearson–Poteshman–White 2021 (10.1093/rfs/hhaa082) ; Golez–Jackwerth 2012 (10.1016/j.jfineco.2012.06.010) ;
127 +Baltussen–Da–Lammers–Martens 2021 (10.1016/j.jfineco.2021.04.029) ; Andersen–Bollerslev 1998 (10.2307/2527343) ;
128 +Andersen–Bollerslev–Diebold–Ebens 2001 (10.1016/S0304-405X(01)00055-1) ; Liu–Patton–Sheppard 2015
129 +(10.1016/j.jeconom.2015.02.008) ; Taylor–Yadav–Zhang 2010 (10.1016/j.jbankfin.2009.09.015) ; Prokopczuk–Wese Simen 2014
130 +(10.1016/j.jbankfin.2013.12.002) ; Kourtis–Markellos–Symeonidis 2016 (10.1002/fut.21792) ; Bollerslev–Patton–Quaedvlieg 2016
131 +(10.1016/j.jeconom.2015.10.007) ; Bollerslev 1986 (10.1016/0304-4076(86)90063-1) ; Hansen–Lunde 2005 (10.1002/jae.800) ;
132 +Patton 2011 (10.1016/j.jeconom.2010.03.034) ; Giacomini–White 2006 (10.1111/j.1468-0262.2006.00718.x) ; Clark–West 2007
133 +(10.1016/j.jeconom.2006.05.023) ; Hansen–Lunde–Nason 2011 (10.3982/ECTA5771) ; Poon–Granger 2003 (10.1257/jel.41.2.478) ;
134 +Skintzi–Refenes 2005 (10.1002/fut.20137) ; Pollet–Wilson 2010 (10.1016/j.jfineco.2010.02.011) ; Buraschi–Trojani–Vedolin 2014
135 +(10.1111/jofi.12095) ; Faria–Kosowski–Wang 2022 (10.1016/j.jbankfin.2021.106399) ; Bollerslev–Todorov 2011
136 +(10.1111/j.1540-6261.2011.01695.x) ; Granger 1969 (10.2307/1912791) ; Sims 1980 (10.2307/1912017) ; Kilian–Lütkepohl 2017
137 +(10.1017/9781108164818) ; Hansen–Hodrick 1980 (10.1086/260910) ; Jegadeesh–Titman 1993 (10.1111/j.1540-6261.1993.tb04702.x) ;
138 +Lo 2002 (10.2469/faj.v58.n4.2453) ; Novy-Marx–Velikov 2016 (10.1093/rfs/hhv063) ; Hou–Xue–Zhang 2020 (10.1093/rfs/hhy131) ;
139 +McLean–Pontiff 2016 (10.1111/jofi.12365) ; Chordia–Goyal–Saretto 2020 (10.1093/rfs/hhaa018) ; Ang–Hodrick–Xing–Zhang 2006
140 +(10.1111/j.1540-6261.2006.00836.x).
141 +Références retirées : `ni2009does` (remplacée). Total : 45 → **97 entrées, toutes citées, toutes vérifiées**.
142 +
143 +## 4. Réanalyses exécutées (laptop, Python 3.14 / pandas 3.0.2 / numpy 2.4.4 ; logs `docs/verify/logs-revision/`)
144 +
145 +| Script | Durée | Sorties (results/) |
146 +|---|---|---|
147 +| `02_rq1_return_predictability.py` (cibles corrigées, FM NW(4), coefficients bps, p exactes, Bonferroni) | 6 s | `rq1_regression_results.csv`, `rq1_meta.csv` |
148 +| `03_rq2_rv_forecasting.py` (échantillon commun, modèles non colinéaires, plancher OOS, DM NW 30 titres) | 2 s | `rq2_insample.csv`, `rq2_oos_results.csv`, `rq2_diebold_mariano.csv` |
149 +| `04_rq3_correlation_divergence.py` stage 2 (3 spécifications, NW(h)) | 1 s | `rq3_stress_prediction.csv`, `rq3_crisis_analysis.csv` |
150 +| `05_rq4_greeks_decay_magnets.py` partie B (parquet) | <1 s | `rq4_price_magnet.csv` (inchangé) |
151 +| `07_descriptive_stats.py` (+ panel F via VIX du parquet RQ3) | 1 s | `descriptive_*.csv` (A–G) |
152 +| `08_subperiod_regime.py` (RV : échantillon commun + winsorisation par titre ; régimes VIX recalculés) | 19 s | `subperiod_results.csv`, `regime_results.csv`, `rolling_r2.csv`, `pre_post_covid.csv` |
153 +| `09_portfolio_sorts.py` (t NW, double tri par portefeuilles, calendar-time + coûts) | 37 s | `portfolio_sort_results.csv`, `double_sort_iv_skew.csv`, `calendar_time_strategies.csv`, `transaction_cost_analysis.csv` |
154 +| `10_robustness.py` (+ HC1 et NW(22) dans la table ; VIX<30 recalculé) | 17 s | `robustness_*.csv` |
155 +| `11_granger_var.py` (FEVD Cholesky, deux ordres, corrélation résiduelle) | 3 s | `granger_causality.csv`, `var_results.csv`, `irf_results.csv`, `fevd_results.csv` |
156 +| `13_extended_robustness.py` (cibles corrigées ; LOYO avec HAR et Δ) | 15 s | `extended_*.csv` |
157 +| `14_make_paper_tables.py` (**nouveau**) | 1 s | `paper/tables/*.tex` (27 fragments) |
158 +| `12_make_figures.py` | 2 s | `figures/fig_*.{png,pdf}` (supplémentaires) |
159 +
160 +Durée totale < 2 min. Les sorties v1.1 remplacées sont dans `results/_pre-revision-20261017/`.
161 +
162 +## 5. Non modifié faute de données (données brutes DuckDB absentes)
163 +- `rq4_greeks_decay.csv` (RQ4 partie A) : conservé tel quel ; cibles 1 j correctes ; le papier ne rapporte plus que R² et t(IV)
164 + (les t des autres grecques, ±150, traduisent une colinéarité).
165 +- `rq5_model_comparison.csv`, `rq5_feature_importance.csv` : seules les lignes 1 j (VIX, HAR, RF, GBM) sont rapportées ;
166 + lignes OLS surface (MSE 1e60, colinéarité exacte) et cibles 5/22 j (erreur C1) retirées du papier. Le code de `06` est corrigé
167 + (cibles forward, RV_t) mais n'a pas pu être relancé.
168 +- `descriptive_options_quality.csv` (panel H) : inchangé.
169 +- Table d'inventaire des données brutes (`tab:data`) : chiffres figés de l'extraction originale.
170 +
171 +## 6. Fichiers dépôt
172 +- Nouveaux : `scripts/14_make_paper_tables.py`, `paper/tables/`, `results/calendar_time_strategies.csv`,
173 + `results/_pre-revision-20261017/`, `docs/REVIEW-REPORT.md`, `docs/CHANGELOG-REVISION.md`,
174 + `docs/verify/logs-revision/`, `docs/verify/crossref/`.
175 +- Modifiés : `src/wp7/{config,data_io,econometrics,forecasting,portfolio}.py`, `scripts/02,03,04,06,08,09,10,11,13`,
176 + toutes les sections LaTeX, `references.bib`, `main.tex`, `main_anon.tex`, `preamble.tex`, `README.md`.
177 +- Inchangés : `data/processed/*.parquet`, `paper/sections/titlepage*.tex`, `docs/AUDIT.md`, `docs/CHANGES.md`,
178 + `docs/verify/{logs,results}` (v1.1).
modified docs/CHANGES.md +3 −0
@@ -5,6 +5,9 @@ Contact: contact@spboucher.ai
5 5
6 6 # CHANGES — Restructuring report (2026-08-05)
7 7
8 +> **Note (2026-10-17).** Superseded for all multi-day results by the v1.2 revision (`REVIEW-REPORT.md`, `CHANGELOG-REVISION.md`): the 5-day targets used in v1.0/v1.1 were trailing, not forward, windows. The v1.1 result CSVs are preserved in `results/_pre-revision-20261017/`.
9 +
10 +
8 11 Source: `~/Desktop/UQO/UQO_WP/hf-wp7-spb20260519` (preserved verbatim in `_old/`).
9 12 Target: this repository (`~/Desktop/wp7_uqo`). **No original result or number was changed
10 13 anywhere.** Revision 1.1 (§6) *adds* new robustness analyses and references on the author's
added docs/REVIEW-REPORT.md +156 −0
@@ -0,0 +1,156 @@
1 +<!--
2 +Author: Simon-Pierre Boucher
3 +Contact: contact@spboucher.ai
4 +-->
5 +
6 +# REVIEW REPORT — Editorial board, révision scientifique complète (2026-10-17)
7 +
8 +**Papier** : WP 7 — *The Options-Implied Information Content for Cross-Asset Return and Volatility Prediction:
9 +Evidence from 3.8 Billion Option Contracts* (v1.1, May 2026 → v1.2, October 2026).
10 +**Board** : asset pricing, dérivés, microstructure, modélisation de la volatilité, économétrie financière.
11 +**Revue cible** : *Journal of Futures Markets* (repli : *Journal of Banking & Finance*, *Journal of Financial Markets*).
12 +**Journal des modifications** : `docs/CHANGELOG-REVISION.md`. **Preuves** : `docs/verify/logs-revision/`, `docs/verify/crossref/`,
13 +`results/_pre-revision-20261017/` (CSV v1.1).
14 +
15 +---
16 +
17 +## 1. Verdict d'ensemble
18 +
19 +Le manuscrit v1.1 reposait, pour toute sa partie « rendements hebdomadaires », sur une **erreur de code** : les cibles à 5 jours
20 +(rendement et variance réalisée) étaient construites avec une fenêtre `rolling` rétrospective appliquée à une série décalée
21 +d'un jour, soit `r_{t-3}+…+r_{t+1}` au lieu de `r_{t+1}+…+r_{t+5}`. Quatre des cinq termes étaient passés ou contemporains des
22 +caractéristiques optionnelles mesurées à la clôture de `t`. Les résultats phares — R² hebdomadaires de 5 à 19 %, Sharpe 2,33
23 +(t = 19,84) du tri sur la kurtosis implicite, « +23,3 % » de R² HAR+IV, R²_OOS de 0,99 à 22 jours — étaient des artefacts.
24 +L'alerte de l'orchestrateur (« un Sharpe de 2,33 sur des tris quintiles à 5 jours est une alerte rouge ») était fondée.
25 +
26 +La révision a (i) corrigé la construction des cibles et relancé toute la chaîne calculable depuis `data/processed/` ;
27 +(ii) corrigé cinq autres défauts méthodologiques démontrables (inférence des tris, échantillons non comparables et colinéarité
28 +exacte en RQ2, design singulier en RQ3, FEVD non orthogonalisée, cherry-picking des tests DM) ; (iii) ajouté une analyse de
29 +turnover et de coûts calendar-time pour les 14 stratégies ; (iv) vérifié les 45 références et en a ajouté 52 ; (v) réécrit
30 +l'ensemble du texte autour des résultats corrigés, avec un paragraphe explicite de rétractation des résultats v1.1.
31 +
32 +**Le papier corrigé est honnête et défendable, mais sa contribution change de nature** : il documente une prédictibilité
33 +transversale des rendements statistiquement détectable mais économiquement marginale dans le segment le plus liquide du marché,
34 +et une information réelle mais dépendante de la fonction de perte de la surface IV pour la variance réalisée. Voir §7 pour la
35 +maturité et les risques de rejet.
36 +
37 +## 2. Diagnostic par section (v1.1 → v1.2)
38 +
39 +| Section | Forces (v1.1) | Faiblesses / erreurs trouvées | Traitement |
40 +|---|---|---|---|
41 +| Titre / résumé | Question claire, base de données exceptionnelle | « 3.8 billion contracts » / « 11,077 underlyings » alors que 69 sous-jacents sont analysés ; chiffres phares faux (C1) ; « cross-asset » = 3 groupes actions/ETF/indices seulement | Résumé réécrit ; ampleur réelle de l'échantillon explicitée dès l'introduction ; titre conservé (décision d'auteur recommandée §7) |
42 +| Introduction | 5 RQ bien posées | Contribution « most comprehensive set of robustness checks » (promotionnel) ; aucun énoncé des résultats | Réécrite : contributions mesurées, résultats annoncés, paragraphe « Relation to the previous version » |
43 +| Littérature | Classiques présents | 37 réf. en « citation dump », pas de discussion des résultats contradictoires (Xing et al. vs Conrad et al.), rien sur coûts/multiplicité/réplication, rien sur Muravyev et al. ; 2 références fausses (Ni et al., Barbon–Buraschi) | 5 sous-sections, 97 réf. vérifiées, tensions discutées, pont explicite vers l'univers liquide |
44 +| Données | Tables descriptives correctes | Cibles 5 j fausses (C1) ; « implied skewness/kurtosis » présentés comme des moments alors que ce sont des proxys de smile ; N analysé (119 081) jamais distingué de N panel (264 383) ; univers fixe ex post (biais de survie) et entrées tardives (META 2021) non mentionnés ; outliers 1e40 du gamma | Équations des cibles et des composantes HAR, note de bas de page sur l'erreur, proxys qualifiés, N explicités, appendice univers |
45 +| Méthodologie | Équations HAR / magnet présentes | Composante journalière HAR = RV_{t−1} dans le code vs RV_t dans l'équation ; équation de corrélation implicite non dérivée ; aucune équation pour FM, tris, coûts, pertes, DM, VAR/FEVD ; « GARCH proxy » n'est pas un GARCH | Toutes les équations ajoutées (FM–NW, calendar-time, MSE/QLIKE, DM, ρ_impl dérivée, VAR/Cholesky/FEVD) ; code aligné sur l'équation HAR |
46 +| Résultats RQ1 | — | R² 5 j et tris artefactuels ; t des tris iid sur séries chevauchantes ; double tri avec t empilés ; pas de table de coefficients ; FM calculé mais jamais rapporté | Tables régénérées : panel, coefficients pooled + FM, tris (t_NW et t_iid), double tri par portefeuilles, calendar-time net de coûts |
47 +| Résultats RQ2 | Comparaison de 5 modèles | R² comparés sur 264k vs 119k obs. ; bloc IV exactement colinéaire ; OOS jamais tabulé (R²_OOS médians −500 cachés) ; DM rapportés pour 4 titres favorables sur 10 (BA et CSCO, négatifs et significatifs, omis) | Échantillon commun ; modèles non colinéaires ; table OOS (30 titres, MSE + QLIKE) ; DM pour les 30 titres en appendice |
48 +| Résultats RQ3 | Idée pertinente | Régression singulière (t = 0,00 de la divergence) ; HC1 sur indicateur chevauchant ; période (2016–2025) non dite | 3 spécifications, NW(h), période et taux de base explicités |
49 +| Résultats RQ4 | Test du « max pain » utile | t des grecques ±150 (colinéarité) présentés sans réserve ; erreur-type du 47 % absente | Table limitée au R² et au t(IV) ; erreur-type binomiale ; statut « frozen » annoncé |
50 +| Résultats RQ5 | Comparaison ML/VIX/HAR | Lignes OLS surface (MSE 1e60) omises silencieusement ; cibles 5/22 j fausses (R²_OOS 0,99) ; RF/GBM entraînés avant 2020 sans discussion | Table 1 j seulement, omissions expliquées, discussion (Christensen et al. 2023) |
51 +| Granger / VAR | Tests par titre | FEVD = carrés d'IRF réduites (pas une décomposition) ; « options = dominant information venue » non étayé | FEVD Cholesky deux ordres (20–29 %), corrélation résiduelle, interprétation prudente |
52 +| Robustesse | Batterie large | Entièrement calculée sur la cible fausse ; colonne HC1 et R² par titre non reproductibles (déjà signalé) ; quantiles « significatifs » sans erreurs-types | Tout régénéré ; HC1/NW5/NW22/DC ; sensibilité à la winsorisation désormais interprétée comme fragilité |
53 +| Discussion / conclusion | — | « Kurtosis risk premium », comparaison Sharpe 2,33 vs 1,0 (BTZ) et 0,8 (XZZ), « 73.8 % » : tout reposait sur les artefacts | Réécrites ; interprétation : les options prévoient les seconds moments, pas les premiers |
54 +
55 +## 3. Méthodologie — verdict motivé sur chaque point du §3 du master prompt
56 +
57 +| Point | Verdict | Motif / action |
58 +|---|---|---|
59 +| Spécification justifiée | Partiellement, maintenant oui | HAR-RV = référence standard ; pooled OLS justifié ; modèles IV redéfinis sans dépendance linéaire ; LPM de stress maintenu avec NW(h) (logit recommandé, non exécuté) |
60 +| Hypothèses d'estimation explicites | Oui (v1.2) | Winsorisation (par titre pour RV), standardisation, plancher des prévisions, fenêtres 500/250, ordre de Cholesky |
61 +| Variables correctement définies | **Non en v1.1** → corrigé | Cibles 5 j (C1) ; composante HAR ; proxys de moments requalifiés ; ρ_impl dérivée (approximation équipondérée explicitée) |
62 +| Effets fixes | Non pertinents tels quels | Les prédicteurs sont standardisés sur le panel ; FM (effets temps implicites) et R² par titre fournis ; effets fixes titre non ajoutés (recommandé §6) |
63 +| Dépendance temporelle/transversale | **Insuffisante en v1.1** → traitée | NW (h−1 ; 5 ; 22), double clustering, FM–NW, séries calendar-time non chevauchantes |
64 +| Erreurs-types | Corrigées | Tris : iid → NW ; double tri : empilé → portefeuilles ; RQ3 : HC1 → NW(h) ; DM : variance NW |
65 +| Construction de l'échantillon transparente | Oui (v1.2) | N panel vs N complet ; univers fixe ex post et biais de survie reconnus ; période RQ3 |
66 +| Robustesse ciblant de vraies menaces | Oui | Chevauchement, dépendance transversale, multiplicité (Bonferroni, Harvey et al.), queues (winsorisation, IC de rang), stabilité temporelle, placebo, coûts |
67 +| Interprétation des coefficients | Corrigée | bps par écart-type ; pp de probabilité ; parts de variance orthogonalisées |
68 +| Significativité statistique vs économique | Désormais centrale | R² 0,3 % « détectable mais marginal » ; Sharpe nets ; break-even ; IC < 0,04 |
69 +| Langage causal | Nettoyé | « Granger-cause » strictement temporel ; « dominant venue » retiré ; FEVD « informative but secondary » |
70 +
71 +## 4. Vérifications empiriques effectuées
72 +
73 +### 4.1 Diagnostic de l'erreur C1 (reproductible)
74 +```
75 +python3 -I - <<'EOF'
76 +import pandas as pd, numpy as np
77 +rv = pd.read_parquet('data/processed/realized_vol.parquet').sort_values(['ticker','trade_date'])
78 +g = rv.groupby('ticker')['daily_return']
79 +bug = g.transform(lambda x: x.shift(-1).rolling(5, min_periods=3).sum())
80 +fwd = g.transform(lambda x: x[::-1].rolling(5, min_periods=3).sum()[::-1].shift(-1))
81 +print(np.isclose(bug, rv['ret_5d'], equal_nan=True).mean()) # 1.000
82 +print(np.isclose(fwd, rv['ret_5d'], equal_nan=True).mean()) # 0.00005
83 +print(rv[['ret_5d','daily_return']].corr().iloc[0,1]) # 0.416
84 +EOF
85 +```
86 +`ret_1d` et `rv_fwd_1d` (shift(−1)) sont corrects : tous les résultats « 1 jour » de v1.1 sont confirmés.
87 +
88 +### 4.2 Cohérence des chiffres (v1.2)
89 +Toutes les tables sont générées par `scripts/14_make_paper_tables.py` ; les nombres du texte ont été relus contre les CSV
90 +(README, résumé, introduction, résultats, robustesse, conclusion). Aucun écart résiduel connu. Incohérences v1.1 relevées :
91 +abstract/README/texte alignés entre eux mais sur des valeurs fausses ; HAR+IV = 0,442 (Table RQ2) vs 0,483 (note LOYO)
92 +(winsorisation par titre vs poolée) — résolu par l'échantillon commun et la winsorisation par titre dans 03/08/13.
93 +
94 +### 4.3 Résultats corrigés (synthèse)
95 +- RQ1 : R² 5 j = 0,29 % (actions), 0,61 % (ETF), 1,01 % (indices) ; 1 j = 0,08 / 0,14 / 0,43 %. Seul le skew 25δ reste
96 + significatif en double clustering (t = 2,91) et en FM (t = 1,99), signe **positif** (Conrad et al. 2013) — contraire à Xing et al. (2010).
97 + Tris 5 j : IV ATM Sharpe 0,57 (t_NW 2,71), PC vol 0,42 (2,64), PC OI 0,42 (2,04), impl. skewness −0,49 (−2,41), kurtosis −0,33 (−1,66).
98 + Calendar-time : seule la stratégie IV ATM reste positive à 10 bps (Sharpe 0,34 ; break-even 27 bps) ; PC vol : turnover 51 %/j, break-even 3,8 bps.
99 +- RQ2 : échantillon commun 119 093 : HAR 0,415 → HAR+IV 0,457 (+9,9 %) à 1 j ; 0,421 → 0,515 (+22,3 %) à 5 j (IV seule 0,463 > HAR).
100 + OOS 30 titres : MSE ratio médian 0,967 (DM>1,96 : 14 ; <−1,96 : 0) ; **QLIKE ratio 1,17 (pire pour 15 titres)** ; à 5 j, IV seule
101 + meilleure sous les deux pertes.
102 +- RQ3 (fév. 2016–déc. 2025) : ratio t_NW = 3,27 / 4,13 / 2,33 ; divergence 2,14 / 1,89 / 1,38 ; R² 0,22 / 0,15 / 0,09.
103 +- RQ4 (figé) : R² RV 3,8 % → 9,5 % (3 m) → 8,2 % (6 m) ; magnet 47,0 % (ET 0,5 pp), 45,8–48,0 % par quintile.
104 +- RQ5 (figé, 1 j) : VIX 0,336 ; HAR 0,437 ; RF 0,143 ; GBM 0,095 ; importance 2 sem. 50,8 %.
105 +- Granger : IV→RV 100 % (F 62,4) ; RV→IV 61 % ; skew→RV 94 % ; return→skew 96 % ; IV→return 25 % ; PC→return 6 %.
106 + FEVD à 20 j : 20,2 % (RV d'abord) / 28,5 % (IV d'abord) ; corr. résiduelle 0,20.
107 +- Robustesse : sous-périodes R² 5 j 0,13–4,2 % ; HAR+IV > HAR dans les 9 sous-périodes (+4 % à +114 %) ; régimes VIX 0,11 → 3,0 % ;
108 + LOYO 0,26–0,53 % et Δ +9,2 à +19,5 % ; placebo 0,04 % vs 0,31 % ; sans winsorisation kurtosis t = −0,47 ; IC |ρ| ≤ 0,04.
109 +
110 +## 5. Littérature
111 +
112 +- **Vérifiées** : 45 entrées v1.1 via Crossref (`docs/verify/crossref/crossref_check*.json`) ; DOI ajoutés.
113 +- **Corrigées** : `ni2009does` → Ni, Pearson & Poteshman (2005, JFE 78(1), 49–87, 10.1016/j.jfineco.2004.08.005) ;
114 + `barbon2022option` → working paper SSRN 3725454 (aucune publication JFE trouvée) ; titres complétés (Blair et al., Busch et al.,
115 + Driessen et al., Easley et al., Patton & Sheppard).
116 +- **Ajoutées** : 52 (liste avec DOI dans CHANGELOG §3), intégrées à l'argument : moments model-free (BKM 2003, Bakshi–Madan,
117 + Britten-Jones–Neuberger, Jiang–Tian), signe du skew (Dennis–Mayhew, Bali–Hovakimian, Rehman–Vilkov, Conrad et al., Bali–Murray,
118 + Borochin et al., Vasquez, Mixon), découverte des prix et microstructure (Chakravarty et al., Muravyev et al. 2013/2025, Ni–Pan–Poteshman),
119 + bornes de Martin, prévision de volatilité (Andersen–Bollerslev, ABDE, Liu–Patton–Sheppard, Taylor et al., Prokopczuk–Wese Simen,
120 + Kourtis et al. [JFM], Bollerslev–Patton–Quaedvlieg, Hansen–Lunde, Patton 2011, Giacomini–White, Clark–West, MCS, Poon–Granger),
121 + corrélation (Skintzi–Refenes [JFM], Pollet–Wilson, Buraschi et al., Faria et al., Bollerslev–Todorov), pinning/gamma (Ni et al. 2005/2021,
122 + Golez–Jackwerth, Baltussen et al.), inférence et anomalies (Granger, Sims, Kilian–Lütkepohl, Hansen–Hodrick, Jegadeesh–Titman, Lo,
123 + Novy-Marx–Velikov, Hou–Xue–Zhang, McLean–Pontiff, Chordia–Goyal–Saretto, Ang et al. 2006).
124 +- Total : 97 entrées, 100 % citées, 0 non vérifiée.
125 +
126 +## 6. Analyses recommandées, NON exécutées
127 +
128 +1. **Univers point-in-time** incluant les petites capitalisations (où la littérature situe la prédictibilité) — nécessite les
129 + données brutes d'options (absentes du laptop).
130 +2. **Moments risque-neutres model-free (BKM 2003)** à maturité fixe, en remplacement des proxys de smile — données brutes requises.
131 +3. **Ajustement factoriel** (CAPM, FF5 + momentum) des stratégies long-short, en particulier du tri IV ATM — données de facteurs externes non téléchargées (règle du protocole).
132 +4. **Logit / probit** pour RQ3 et indicateur de stress défini sur les rendements réalisés (drawdown) plutôt que sur le VIX régresseur.
133 +5. **Model confidence set (Hansen–Lunde–Nason 2011)** et test Clark–West pour les modèles emboîtés en RQ2 ; HAR en logs ; HARQ ; correction de la prime de risque de variance (Prokopczuk–Wese Simen 2014).
134 +6. **Erreurs-types bootstrap** pour les régressions quantiles (seuls les coefficients sont rapportés).
135 +7. **Effets fixes titre** et prédicteurs standardisés dans la coupe (vs sur le panel) pour RQ1.
136 +8. **Re-exécution de RQ4-A et RQ5** avec les cibles corrigées (code corrigé, données brutes absentes) ; régulariser (ridge/LASSO) la surface SPX.
137 +9. **Bootstrap par blocs** des Sharpe calendar-time (Lo 2002) et coûts mesurés à partir des spreads effectifs.
138 +
139 +## 7. Maturité pour publication
140 +
141 +- **Forme** : standard UQO respecté ; 53 pages (27 tables générées) ; compilation propre (0 erreur, 0 référence/citation indéfinie,
142 + 0 overfull) ; version anonyme vérifiée (0 occurrence de Boucher/UQO/Outaouais/Gatineau).
143 +- **Fond** : les résultats sont désormais défendables et l'honnêteté sur la rétractation est un atout d'intégrité. Mais la contribution
144 + « rendements » est devenue un résultat largement **négatif** (prédictibilité marginale dans les grandes capitalisations, un seul
145 + prédicteur robuste au signe contre-intuitif, aucune stratégie nette robuste à la multiplicité). La contribution « volatilité »
146 + (surface IV vs HAR-RV, dépendance à la fonction de perte, IV seule gagnante à 5 j) et la partie corrélation implicite sont
147 + solides mais incrémentales par rapport à Busch et al. (2011), Taylor et al. (2010), Kourtis et al. (2016).
148 +- **Risques de rejet (JFM)** : (i) univers de 69 titres ex post avec biais de survie face à un titre annonçant 3,8 G de contrats ;
149 + (ii) proxys de moments plutôt que moments model-free ; (iii) absence d'ajustement factoriel et de coûts mesurés ;
150 + (iv) RQ4/RQ5 figés et non ré-exécutables ; (v) cinq questions hétérogènes dans un seul papier (un arbitre demandera de recentrer).
151 +- **Recommandations éditoriales** : (a) **retitrer** (« 3.8 Billion Option Contracts » survend l'échantillon analysé) ; (b) recentrer
152 + le papier sur RQ2 + Granger/VAR + RQ3 (volatilité et corrélation) et reléguer RQ1 en « evidence from the liquid segment » ;
153 + (c) retirer ou refaire RQ4-A/RQ5 avant soumission ; (d) **mettre à jour SSRN 7626643** (la version en ligne contient les résultats
154 + rétractés) ; (e) soumettre à JFM avec une lettre expliquant la correction.
155 +- **Niveau** : prêt pour re-dépôt SSRN et circulation comme working paper ; soumission JFM envisageable après (a)–(c), en acceptant
156 + un risque de rejet élevé sur l'originalité des résultats « rendements ».
added docs/verify/crossref/crossref_check.json +4529 −0
Large diff (4,530 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/crossref/crossref_check.log +93 −0
Large diff (93 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/crossref/crossref_check2.json +2006 −0
Large diff (2,007 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/crossref/crossref_check2.log +68 −0
Large diff (68 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/02_rq1_return_predictability.log +69 −0
Large diff (69 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/03_rq2_rv_forecasting.log +42 −0
Large diff (42 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/04_rq3_correlation_divergence.log +102 −0
Large diff (102 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/05_rq4_greeks_decay_magnets.log +35 −0
Large diff (35 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/07_descriptive_stats.log +118 −0
Large diff (118 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/08_subperiod_regime.log +82 −0
Large diff (82 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/09_portfolio_sorts.log +55 −0
Large diff (55 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/10_robustness.log +187 −0
Large diff (187 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/11_granger_var.log +65 −0
Large diff (65 lines) is not loaded by default to keep the page fast.Load diff
added docs/verify/logs-revision/13_extended_robustness.log +75 −0
Large diff (75 lines) is not loaded by default to keep the page fast.Load diff
modified figures/fig_irf.pdf +0 −0

Binary file not shown.

modified figures/fig_portfolio_sorts.pdf +0 −0

Binary file not shown.

modified figures/fig_portfolio_sorts.png +0 −0

Binary file not shown.

modified figures/fig_rolling_r2.pdf +0 −0

Binary file not shown.

modified figures/fig_rolling_r2.png +0 −0

Binary file not shown.

modified figures/fig_subperiod.pdf +0 −0

Binary file not shown.

modified figures/fig_subperiod.png +0 −0

Binary file not shown.

modified paper/appendix/appendix.tex +11 −83
Large diff (107 lines) is not loaded by default to keep the page fast.Load diff
modified paper/main.pdf +0 −0

Binary file not shown.

modified paper/main.tex +4 −9
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
modified paper/main_anon.pdf +0 −0

Binary file not shown.

modified paper/main_anon.tex +4 −9
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
modified paper/preamble.tex +1 −1
Large diff (8 lines) is not loaded by default to keep the page fast.Load diff
modified paper/references.bib +644 −27
Large diff (953 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/conclusion.tex +7 −9
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/data.tex +42 −72
Large diff (162 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/discussion.tex +17 −11
Large diff (39 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/introduction.tex +13 −10
Large diff (33 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/literature.tex +13 −13
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/methodology.tex +65 −30
Large diff (123 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/results.tex +67 −201
Large diff (281 lines) is not loaded by default to keep the page fast.Load diff
modified paper/sections/robustness.tex +44 −202
Large diff (264 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/app_tickers.tex +1 −0
Large diff (1 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_app_crises.tex +28 −0
Large diff (28 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_app_dm.tex +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_app_importance.tex +29 −0
Large diff (29 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_autocorr.tex +22 −0
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_calendar.tex +36 −0
Large diff (36 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_controls.tex +33 −0
Large diff (33 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_decile.tex +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_desc_groups.tex +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_dsort.tex +26 −0
Large diff (26 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_fevd.tex +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_granger.tex +29 −0
Large diff (29 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_ic.tex +29 −0
Large diff (29 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_loyo.tex +33 −0
Large diff (33 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_magnet.tex +24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_quantile.tex +27 −0
Large diff (27 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_robust_se.tex +42 −0
Large diff (42 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq1_coef.tex +31 −0
Large diff (31 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq1_panel.tex +24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq2_insample.tex +24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq2_oos.tex +36 −0
Large diff (36 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq3.tex +40 −0
Large diff (40 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq4.tex +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_rq5.tex +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_sorts.tex +34 −0
Large diff (34 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_subperiod.tex +28 −0
Large diff (28 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_vix_regime.tex +22 −0
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
added paper/tables/tab_winsor.tex +28 −0
Large diff (28 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_autocorrelations.csv +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_by_group.csv +5 −0
Large diff (5 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_correlation_matrix.csv +12 −0
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_coverage_by_year.csv +17 −0
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_cross_sectional_dispersion.csv +17 −0
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_options_quality.csv +17 −0
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_summary_stats.csv +24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/descriptive_vix_regimes.csv +6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/double_sort_iv_skew.csv +10 −0
Large diff (10 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_decile_sorts.csv +7 −0
Large diff (7 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_information_coefficients.csv +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_leave_one_year_out.csv +17 −0
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_newey_west_lags.csv +67 −0
Large diff (67 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_placebo.csv +12 −0
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/extended_winsorization_sensitivity.csv +6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/fevd_results.csv +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/granger_causality.csv +13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/irf_results.csv +401 −0
Large diff (401 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/portfolio_sort_results.csv +85 −0
Large diff (85 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/pre_post_covid.csv +9 −0
Large diff (9 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/regime_results.csv +16 −0
Large diff (16 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/robustness_double_clustered.csv +23 −0
Large diff (23 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/robustness_newey_west.csv +23 −0
Large diff (23 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/robustness_quantile_regression.csv +56 −0
Large diff (56 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/robustness_ticker_r2.csv +70 −0
Large diff (70 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/robustness_with_controls.csv +33 −0
Large diff (33 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rolling_r2.csv +121 −0
Large diff (121 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq1_meta.csv +13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq1_regression_results.csv +133 −0
Large diff (133 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq2_diebold_mariano.csv +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq2_insample.csv +11 −0
Large diff (11 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq2_oos_results.csv +301 −0
Large diff (301 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq3_crisis_analysis.csv +10 −0
Large diff (10 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq3_stress_prediction.csv +22 −0
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq4_greeks_decay.csv +13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq4_price_magnet.csv +6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq5_feature_importance.csv +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/rq5_model_comparison.csv +19 −0
Large diff (19 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/subperiod_results.csv +37 −0
Large diff (37 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/transaction_cost_analysis.csv +8 −0
Large diff (8 lines) is not loaded by default to keep the page fast.Load diff
added results/_pre-revision-20261017/var_results.csv +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added results/calendar_time_strategies.csv +15 −0
Large diff (15 lines) is not loaded by default to keep the page fast.Load diff
modified results/descriptive_correlation_matrix.csv +10 −10
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
modified results/descriptive_summary_stats.csv +2 −2
Large diff (8 lines) is not loaded by default to keep the page fast.Load diff
modified results/descriptive_vix_regimes.csv +5 −5
Large diff (11 lines) is not loaded by default to keep the page fast.Load diff
modified results/double_sort_iv_skew.csv +16 −10
Large diff (26 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_decile_sorts.csv +6 −6
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_information_coefficients.csv +10 −10
Large diff (23 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_leave_one_year_out.csv +17 −17
Large diff (34 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_newey_west_lags.csv +33 −33
Large diff (69 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_placebo.csv +11 −11
Large diff (23 lines) is not loaded by default to keep the page fast.Load diff
modified results/extended_winsorization_sensitivity.csv +5 −5
Large diff (11 lines) is not loaded by default to keep the page fast.Load diff
modified results/fevd_results.csv +21 −21
Large diff (42 lines) is not loaded by default to keep the page fast.Load diff
modified results/granger_causality.csv +11 −11
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
modified results/irf_results.csv +401 −401
Large diff (802 lines) is not loaded by default to keep the page fast.Load diff
modified results/portfolio_sort_results.csv +85 −85
Large diff (170 lines) is not loaded by default to keep the page fast.Load diff
modified results/pre_post_covid.csv +6 −6
Large diff (15 lines) is not loaded by default to keep the page fast.Load diff
modified results/regime_results.csv +16 −16
Large diff (32 lines) is not loaded by default to keep the page fast.Load diff
modified results/robustness_double_clustered.csv +22 −22
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
modified results/robustness_newey_west.csv +23 −23
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
modified results/robustness_quantile_regression.csv +55 −55
Large diff (111 lines) is not loaded by default to keep the page fast.Load diff
modified results/robustness_ticker_r2.csv +69 −69
Large diff (139 lines) is not loaded by default to keep the page fast.Load diff
modified results/robustness_with_controls.csv +32 −32
Large diff (65 lines) is not loaded by default to keep the page fast.Load diff
modified results/rolling_r2.csv +120 −120
Large diff (241 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq1_meta.csv +13 −13
Large diff (26 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq1_regression_results.csv +133 −133
Large diff (266 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq2_diebold_mariano.csv +61 −21
Large diff (82 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq2_insample.csv +11 −11
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq2_oos_results.csv +301 −301
Large diff (602 lines) is not loaded by default to keep the page fast.Load diff
modified results/rq3_stress_prediction.csv +40 −22
Large diff (62 lines) is not loaded by default to keep the page fast.Load diff
modified results/subperiod_results.csv +28 −28
Large diff (65 lines) is not loaded by default to keep the page fast.Load diff
modified results/transaction_cost_analysis.csv +71 −8
Large diff (79 lines) is not loaded by default to keep the page fast.Load diff
modified results/var_results.csv +21 −21
Large diff (42 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/02_rq1_return_predictability.py +29 −43
Large diff (137 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/03_rq2_rv_forecasting.py +107 −109
Large diff (252 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/04_rq3_correlation_divergence.py +35 −29
Large diff (80 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/06_rq5_ml_rv_forecast.py +10 −3
Large diff (26 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/08_subperiod_regime.py +19 −7
Large diff (63 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/09_portfolio_sorts.py +76 −79
Large diff (194 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/10_robustness.py +8 −2
Large diff (31 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/11_granger_var.py +27 −20
Large diff (84 lines) is not loaded by default to keep the page fast.Load diff
modified scripts/13_extended_robustness.py +9 −8
Large diff (31 lines) is not loaded by default to keep the page fast.Load diff
added scripts/14_make_paper_tables.py +601 −0
Large diff (601 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp7/config.py +18 −9
Large diff (39 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp7/data_io.py +80 −4
Large diff (112 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp7/econometrics.py +86 −12
Large diff (135 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp7/forecasting.py +14 −11
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp7/portfolio.py +151 −10
Large diff (195 lines) is not loaded by default to keep the page fast.Load diff
Menu

Theme