4.4 KiB
4.4 KiB
P2.6 CORRECTED BASELINE REPORT — SNIPERGOLD_ML
Date: 2026-08-21
Status: COMPLETE — baseline corrected TRUSTED; structural finding: offline→runtime gap gone, static MLP signal weak (~0.51) under runtime-consistent semantics
A. P2 Source Checkpoint
P2 commit : 8d330343af688e2de2b2a1d12ce19a582714709a (pushed, tree clean)
Feature contract : FEATURE_CONTRACT.md v1.0 (C44CC6F2B740C32D06F776BD7C3E669...)
Runtime SHA : BTTFBias fixed (GetBar(need-1-i)), dump 5F8AB5CB6EFD...
Dataset : Files\AlgoForge\Data\XAUUSD_*.npz (HFM XAUUSD, runtime-consistent)
B. Training
Model : MLP 19 -> 12 -> 2
Seed : 42
Train N : 99070
Validation N : 17483
Purge : 24 (H_LABEL) — max_train_end=148103 < min_test_start=148105 OK
Test N : 38828
Best epoch : 0
C. Metrics
VAL LONG : 0.5253
VAL SHORT : 0.5150
TEST LONG : 0.5105
TEST SHORT: 0.5063
D. Calibration (Platt, fitted on validation)
LONG : A=0.5724 B=0.0904
SHORT: A=0.4614 B=-0.1083
E. Runtime Parity (P2.5, model inference mechanism unchanged)
Feature parity : 17/19 exact, 14 documented exception rows (0.09%)
Prediction parity: PASS (2 exception rows, tol 6e-5 CSV rounding)
Exception rows : f0/f1 (2, daily-break cache), f13 (11, tick source), f18 (1 derived)
F. Same-Feed Runtime AUC (EA P26 mode 0, XAUUSD 2026.01.01-08.20)
LONG : 0.5019 (offline test 0.5105, d = -0.0086)
SHORT : 0.5165 (offline test 0.5063, d = +0.0102)
Sample: 11796 (bull 5902 / bear 5894)
Offline and runtime are CONSISTENT (Δ < 0.011) — the main P2.6 validation.
G. Cross-Feed AUC (old deployment feed)
Old runtime cross-feed (buggy EA + old freeze): LONG 0.5305 | SHORT 0.5487
P2.6 corrected runtime (same feed): LONG 0.5019 | SHORT 0.5165
Old offline baseline (XAUUSDc, buggy semantics): LONG 0.6582 | SHORT 0.6582 -> SUPERSEDED
H. Diagnosis (evidence-backed)
CLASSIFICATION: D — MODEL TRAINING DISTRIBUTION (semantics bug), not a feature/state/window bug.
Decisive evidence (SAME XAUUSD data, identical label/split/seed/architecture):
OLD py_full semantics : VAL 0.6483/0.6483 TEST 0.6710/0.6710 best_ep=43
CORRECTED semantics : VAL 0.5253/0.5150 TEST 0.5105/0.5063 best_ep=0
-> corrected semantics removes the signal (corrected f10/f11 ~constant 0:
mean 0.0045/0.0082 vs old 0.7113/0.9858; windowed structure sparser).
Old-gap conclusion (0.66 offline vs 0.53 runtime):
the old model was trained on features NEVER computed at runtime (lag-50 HTF bias,
EQH/EQL same-type+ATR@pivot, full-history structure) -> offline AUC INFLATED.
Runtime always computed near-corrected features -> honest AUC 0.53.
After P2.6, corrected offline (0.51) ≈ runtime (0.50-0.52) — GAP GONE.
I. Trade Backtest
NOT RUN (per protocol: AUC diagnosis first; PF is not evidence).
J. Evidence Status
TRUSTED : P2.6 corrected dataset (e85a08616191fb7ce4bbe79c1754228d...)
purged split (verified), reproducible training, clean calibration,
offline≈runtime (Δ<0.011), artifact hashed
SUPERSEDED : P1 baseline 0.6582/0.6582 & 0.6270/0.6207 (buggy semantics, non-runtime)
INCONCLUSIVE: no new verdict without evidence
K. Recommendation
1. Corrected static MLP baseline: TRUSTED as a runtime-consistent measurement,
but AUC ~0.51 = NO meaningful edge on the 24-bar ATR label.
2. Old 0.66 = semantics-bug artifact — DO NOT resurrect.
3. Next research question (not optimization): WHY corrected features lose the signal
— f10/f11 legacy v4.4 ~constant 0 (investigate whether legacy EQH/EQL is truly
inert, or the 24-bar label needs other features).
4. Do not proceed to LSTM/Regime until this failure mode is understood (P2.6 protocol).
5. P2.6 artifact: Include\SniperGold_ML_p26_corrected.mqh (tag v20260821_p26,
dataset hash metadata e85a0861...), status NOT YET DEPLOYED.
Artifact
Include\SniperGold_ML_p26_corrected.mqh (P2.6 model, tag v20260821_p26)
ml/parity/train_p26.py (corrected reproducible training)
ml/parity/compare_semantics.py (decisive OLD vs CORRECTED evidence)
ml/parity/runtime_auc_p26.py (runtime AUC, same feed)
ml/parity/AlgoForge_bt_prob_p26_XAUUSD_M15.csv
Experts/AlgoForge_Backtest_P26.mq5 (EA with p26 model include, runtime test)