The fit now stops H bars before the split, so no training target reaches
into the test period, and every baseline in PDV_Evidence uses the same
purged rows. The determinant test in SolveBetas is relative, Sigma() and
Forecast() share one floor scaled by |b2|, and the comment boxes on the
target and ridge are corrected. README updated to match.
Guyon-Lekeufack path-dependent volatility ported to native MQL5.
sigma = b0 + b1*R1 + b2*sqrt(R2), where R1 and R2 are two-exponential
kernel sums over past signed and squared returns, implemented as four
running accumulators updated in O(1) per bar with no stored history.
CPdvModel calibrates nine parameters by splitting them: a Nelder-Mead
simplex over the six kernel parameters with the closed-form regression
for the three betas nested inside its objective. Features are causal,
the target is strictly forward, and the train/test cut is chronological.
PDV_Evidence scores the model out of sample against a constant, an EWMA
volatility and GARCH(1,1), and runs the b1-pinned-at-zero ablation that
isolates what the sign of the path is worth.