204 lines
9 KiB
Markdown
204 lines
9 KiB
Markdown
|
|
# P3-S.17 DATASET AUDIT / LABEL VALIDATION — SNIPERGOLD_ML
|
||
|
|
|
||
|
|
```text
|
||
|
|
Date : 2026-08-23
|
||
|
|
Session : P3-S.17 — Dataset Audit / Label Validation
|
||
|
|
Status : AUDIT COMPLETE -> VERDICT = DATASET BLOCKED (real-data population
|
||
|
|
is EMPTY under the migrated proxy semantics; see §A/§B).
|
||
|
|
Baseline : P3-S.16 checkpoint 4b095443077539889f0ac6f0381881d6e4995c73
|
||
|
|
VERIFIED (local == origin/main, branch main, working tree CLEAN).
|
||
|
|
Scope : XAUUSD M15 2017-01-01..2026-08-20 (Files\\AlgoForge\\Data),
|
||
|
|
frozen P3-S.16 dataset/label contract.
|
||
|
|
Human verif: REMAINS CANCELLED (historical only). NO AUC/PF/backtest used.
|
||
|
|
Decision : DATASET BLOCKED — see §B (two blockers).
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## A. SESSION OBJECTIVE
|
||
|
|
|
||
|
|
Answer (P3-S.17):
|
||
|
|
> Does the frozen Candidate Setup + P3-S.16 label contract produce a real,
|
||
|
|
> deterministic, causally valid, reproducible training population on historical
|
||
|
|
> data, without reintroducing the overlap / look-ahead / label-misalignment
|
||
|
|
> problems of the legacy bar-level pipeline?
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## B. VERDICT — DATASET BLOCKED
|
||
|
|
|
||
|
|
Two independent blockers were found:
|
||
|
|
|
||
|
|
```text
|
||
|
|
BLOCKER 1 — EMPTY REAL-DATA POPULATION (primary):
|
||
|
|
The real-data Candidate Setup population is 0 observations across the
|
||
|
|
authorized XAUUSD M15 window (~194,985 bars). The frozen F3 chain did not
|
||
|
|
complete at any bar under the migrated real-data SMC semantics. Root-cause
|
||
|
|
primitive counts (§D) show the proxy sweep detection (84 onsets) and the
|
||
|
|
zone-unmitigated detection (69 bars) are far more selective than the frozen
|
||
|
|
runtime's F1/F2 detectors. The P3-S.16 contract MECHANICS are validated and
|
||
|
|
deterministic (unit tests 20/20, no leakage), but a real training population
|
||
|
|
cannot be built yet.
|
||
|
|
|
||
|
|
This must be resolved by RECONCILING the real-data SMC extraction with the
|
||
|
|
frozen MQL5 F3/F1/F2 detectors (AF_Engine2_Setup / AF_DetectSweep /
|
||
|
|
AF_DetectChoch / AF_FindFVG / AF_FindOrderBlock, closed-bar Engine-1 cache).
|
||
|
|
It is a FUTURE INTEGRATION/detector-reconciliation phase, NOT a silent
|
||
|
|
relaxation of gates to fabricate setups (forbidden by §29).
|
||
|
|
|
||
|
|
BLOCKER 2 — FROZEN P3-S.4 PARITY-GUARD COMPATIBILITY (secondary, structural):
|
||
|
|
The real-data setup extractor references "FVG" as a Candidate Setup
|
||
|
|
zone-type identifier. The frozen P3-S.4 spec suite asserts FVG is ABSENT
|
||
|
|
from the ml/ tree (scan_parity_absence: regex on ml/**/*.py == 0 hits).
|
||
|
|
Merging the extractor would flip P3-S.4 from 20/20 to 19/20 (FVG-T20).
|
||
|
|
The historical suite was NOT modified (correct per §31). The extractor
|
||
|
|
scripts are therefore NOT merged into main to preserve the frozen parity
|
||
|
|
invariant. This is a documented FUTURE DEPENDENCY: the setup-level FVG
|
||
|
|
zone-type namespace and the P3-S.4 parity-absence guard must be reconciled
|
||
|
|
by design in a future phase.
|
||
|
|
|
||
|
|
CONSEQUENCE: P3-S.17 cannot certify the dataset. Training must NOT start.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## C. WHAT WAS VALIDATED (the contract MECHANICS)
|
||
|
|
|
||
|
|
```text
|
||
|
|
- P3-S.16 unit tests re-run: 20/20 PASS (DS-T01..T16 + DS-17..20). Contract
|
||
|
|
observation unit, identity, entry=creation-bar-close, TP-before-SL WIN/LOSS/
|
||
|
|
UNRESOLVED/AMBIGUOUS, de-overlap, causality, no-leakage, reproducibility all
|
||
|
|
hold at the contract/test level.
|
||
|
|
- The extractor produced a deterministic, reproducible (identical re-run)
|
||
|
|
pipeline; NO look-ahead; entry = creation-bar close (M15); TP/SL at ATR(entry);
|
||
|
|
de-overlap by lead-setup-per-episode; UNRESOLVED never forced to LOSS.
|
||
|
|
- These confirm the P3-S.16 label CONTRACT is mechanically sound. What is
|
||
|
|
missing is a NON-EMPTY real-data Candidate Setup population, which requires
|
||
|
|
reconciling the frozen detectors (BLOCKER 1).
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## D. REAL-DATA POPULATION & ROOT-CAUSE AUDIT
|
||
|
|
|
||
|
|
Scope confirmed from the P3-S.16 handover/contract: **XAUUSD M15 2017-01-01 ..
|
||
|
|
2026-08-20** (194,985 bars; feeds clean per download_report: 0 dups, 0 bad
|
||
|
|
OHLC, 0 anomaly gaps).
|
||
|
|
|
||
|
|
```text
|
||
|
|
total Candidate Setups (raw) : 0
|
||
|
|
total observations (all) : 0
|
||
|
|
lead setups : 0
|
||
|
|
follow-on setups : 0
|
||
|
|
duplicate setup_ids : 0
|
||
|
|
invalid / excluded : 0
|
||
|
|
|
||
|
|
INTERMEDIATE SMC PRIMITIVE COUNTS (root-cause diagnostics):
|
||
|
|
sweep_event_onsets : 84 <-- extremely sparse (proxy liquidity-grab)
|
||
|
|
choch_event_bars_nonzero : 194792 <-- persistent CHoCH state (always present)
|
||
|
|
zone_active_bars : 75861
|
||
|
|
zone_unmitigated_bars : 69 <-- proxy mitigation over-marks (rarely unmitigated)
|
||
|
|
m15_entry_bars : 1418
|
||
|
|
h4_bias_bars : 194985
|
||
|
|
|
||
|
|
=> The dominant scarcity drivers are the SWEEP and UNMITIGATED-ZONE proxies.
|
||
|
|
The frozen F3 chain requires a FRESH sweep + CHoCH-after + ACTIVE UNMITIGATED
|
||
|
|
OB|FVG + M15 entry, all direction-compatible with H4/M30 gates. Under the
|
||
|
|
migrated proxies this never co-occurs. This is a detection-fidelity gap (proxy
|
||
|
|
vs frozen detectors), not a violation of the P3-S.16 label contract.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## E. AUDIT SECTION RESULTS (all measured)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Identity : 0 setups -> no duplicate IDs; causal-key uniqueness n/a (trivially
|
||
|
|
consistent). No split/merge faults observable on an empty set.
|
||
|
|
Entry : contract entry = creation-bar close (M15). No setups -> no entries.
|
||
|
|
Contract rule confirmed deterministic at the test level (DS-T05/T15).
|
||
|
|
TP/SL : k_tp/k_sl = 1.5/0.75 default candidate (OPEN param); ATR(entry)
|
||
|
|
reference. Not auditable on an empty population; open parameter
|
||
|
|
documented, not optimized.
|
||
|
|
Outcome : WIN/LOSS/UNRESOLVED/AMBIGUOUS all 0 (empty). Class semantics
|
||
|
|
validated at the contract/test level (DS-T07..T11/T16).
|
||
|
|
Censoring : n/a (empty). Rule (UNRESOLVED never forced to LOSS) confirmed by
|
||
|
|
DS-18.
|
||
|
|
Ambiguous : n/a (empty). Same-bar rule confirmed by DS-T10/DS-19.
|
||
|
|
De-overlap : rule deterministic (DS-T12/T13); empty here.
|
||
|
|
Lifetime : n/a (empty). Contract horizon = 16 (open param); not auto-tuned.
|
||
|
|
Feature : feature snapshot is a PROPOSAL (Store 2); no leakage by design
|
||
|
|
(DS-T14/T15). Not populated on empty set.
|
||
|
|
Leakage : ZERO LOOK-AHEAD at the contract/test level (DS-14/T15/T20). No
|
||
|
|
feature references future price.
|
||
|
|
Quality : source feed clean (download_report): 0 dup/not-increasing, 0 bad
|
||
|
|
OHLC, 0 anomaly gaps in the authorized feeds.
|
||
|
|
Reproducibility: identical re-run output (deterministic generator). Reproducible.
|
||
|
|
Temporal : split/purge rules defined (temporal, purge==horizon, no label-window
|
||
|
|
overlap, no future info); not exercised on an empty set.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## F. CONTRACT vs REAL DATA (classification per §27)
|
||
|
|
|
||
|
|
```text
|
||
|
|
observation_unit : PASS (contract) ; real-data population BLOCKED
|
||
|
|
identity : PASS (contract) ; n/a on empty real set
|
||
|
|
entry_timestamp : PASS (contract) ; deterministic
|
||
|
|
TP/SL : PASS (contract) ; open params, not optimized
|
||
|
|
horizon : PASS (contract) ; open param, no auto-tune
|
||
|
|
class_semantics : PASS (contract)
|
||
|
|
ambiguity : PASS (contract)
|
||
|
|
censoring : PASS (contract)
|
||
|
|
de-overlap : PASS (contract)
|
||
|
|
feature_timing : PASS (contract; proposal, no leakage)
|
||
|
|
provenance : PASS (contract enforces it)
|
||
|
|
reproducibility : PASS (deterministic re-run)
|
||
|
|
REAL-DATA POPULATION : FAIL / BLOCKED (0 observations; detection fidelity)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## G. EXPLICITLY UNCHANGED / NOT MODIFIED
|
||
|
|
|
||
|
|
```text
|
||
|
|
Candidate Setup runtime, F1, F2, F4 runtime MTF, FEATURE_CONTRACT.md,
|
||
|
|
SniperGold_ML.mqh, production .mq5/.mqh, legacy MLP : NONE changed.
|
||
|
|
NO historical spec suite modified. NO training. NO parameter optimization.
|
||
|
|
Human verification CANCELLED. No AUC/PF/profit/backtest used.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## H. WHY THE EXTRACTION SCRIPTS ARE NOT MERGED
|
||
|
|
|
||
|
|
```text
|
||
|
|
ml/p3/setup_dataset/real_setup_extractor.py and dataset_audit.py are the
|
||
|
|
session's working diagnostic scripts. They are NOT merged into main because:
|
||
|
|
1. they reference "FVG" as a setup zone-type, which flips the frozen P3-S.4
|
||
|
|
parity-absence guard (FVG-T20) from PASS to FAIL — a regression we must
|
||
|
|
NOT introduce (and must NOT fix by editing the historical suite),
|
||
|
|
2. they currently yield an EMPTY real-data population (BLOCKER 1).
|
||
|
|
Reconciling both is a FUTURE dependency (detector-fidelity + parity-namespace
|
||
|
|
reconciliation), out of scope for a single audit.
|
||
|
|
The committed evidence (this report + ml/p3/setup_dataset/output/p3_s17_
|
||
|
|
dataset_audit.json) records the audit outcome truthfully.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## I. NEXT GATE
|
||
|
|
|
||
|
|
```text
|
||
|
|
NOT training. Before any setup-level baseline (P3-S.18), a FUTURE phase must:
|
||
|
|
1. Reconcile the real-data SMC extraction with the frozen MQL5 F3/F1/F2
|
||
|
|
detectors to obtain a NON-EMPTY, faithful Candidate Setup population.
|
||
|
|
2. Reconcile the setup-level FVG zone-type namespace with the frozen P3-S.4
|
||
|
|
parity-absence guard (e.g., a designated research-namespace boundary) so
|
||
|
|
the guarded regression stays green.
|
||
|
|
3. Re-run P3-S.17 audit on the reconciled population.
|
||
|
|
P3-S.17 ends at this blocked, honestly-documented audit.
|
||
|
|
```
|
||
|
|
|
||
|
|
*End of P3-S.17 dataset audit / label validation. Verdict: DATASET BLOCKED.*
|