Shortcomings of the Original Study
Three corrections are driven by theory and carry the main weight of the contribution. The remainder are documented, scoped, or deferred. Every change is assessed as a before-and-after difference against the reproduced baseline, and not by whether a backtest score happened to improve.
Each correction is required to have a stated theoretical justification before its backtest result is examined. An improvement in the score is not, on its own, evidence that a change is correct, since overfitting produces exactly that symptom. The evaluation windows are held fixed, and the crash window is treated as an exhibit rather than a calibration target.
Principal corrections
include_expected_returns=FalseThe diversification effect reported in the original study (Figure 12) included expected returns in the value-at-risk calculation, which inflates the estimate. The error is acknowledged in the text (p. 35) but remains in the application.
Implemented The value-at-risk is now computed on centered returns. The resulting difference is small, often within the Monte Carlo simulation noise, though the calculation is correct in either case.
The original study tested unconditional coverage with the Kupiec test, named the Christoffersen test without implementing it, and observed clustering of exceedances in the Vol1 scenario. Its central claim, that intraday responsiveness produces independent exceedances, therefore remained untested.
Implemented The full sequence LRuc + LRind → LRcc now runs on the hit sequence the backtest already produces, without re-estimation or additional simulation. It flags the Vol2 scenario, which passes the Kupiec test but fails on independence.
The motivating example of the original study is a flash crash, yet the optimizer fails to converge on the 2020 crash (SLSQP errors, §7.1.3). As correlations rise toward one, Rt approaches singularity, a condition worsened by circuit-breaker halts that are recorded as zero returns.
Implemented Halt bars are detected and masked as missing data rather than zeros, (α,β) is reparameterized to admit a more robust optimizer, and a labelled CCC fallback preserves availability if the fit still fails. A conditioning diagnostic (r_cond) exposes the approach of |Rt| toward zero directly. N=30 pending The degeneracy is high-dimensional, so the decisive test is run on the full Dow-30 portfolio. That test is reported under Results.
Full shortcomings ledger
Every item from the original critique, with its disposition in this refactor.
| § | Shortcoming | Disposition | Status |
|---|---|---|---|
| 3.1 | Seasonality rescaling reinflates variances | Re-seasonalize the forecast rather than the returns (reseasonalize_forecast) | measuring |
| 3.2 | GARCH sample size (5–45 days vs. ~1000 recommended) | Documented; window-length sweep deferred | deferred |
| 3.3 | Portfolio-level DDOF via weighted average | Direct portfolio-level fit scoped, deferred | deferred |
| 3.4 | Diversification formula includes expected returns | Removed from the VaR calculation | done |
| 3.5 | Short 389-observation backtest windows | Noted; couples to the power of the independence test | documented |
| 3.6 | Gaussian copula, no alternatives tested | t-copula identified as an alternative specification | deferred |
| 3.7 | Flash-crash circular reasoning; optimizer failed | Convergence fix enables the crash backtest | N=30 pending |
| 3.10 | Multiple testing not corrected (four tests) | Attempt-counting and fixed evaluation windows | addressed |
| 3.11 | Global variables and code quality | Resolved by the seeded, tested module structure | done |