forked from chiki2bum2/SniperGold_ML
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.*
|