forked from chiki2bum2/SniperGold_ML
77 lines
3.4 KiB
Markdown
77 lines
3.4 KiB
Markdown
# P3-S25 — EXTERNAL DATA BASIS VALIDATION & INDEPENDENT POPULATION RECONCILIATION
| |||
| |||
```text
| |||
Session : P3-S25 — EXTERNAL DATA BASIS VALIDATION
| |||
Status : RESEARCH-ONLY DATA VALIDATION (no ML, no tuning, no calibration)
| |||
Policy : docs/CODE_VERIFICATION_AND_SILENT_BUG_POLICY_v1.md
| |||
Purpose : Determine whether the corrected SniperGold research population and
| |||
UTC-clock M30 construction remain valid when independently checked
| |||
against prepared external historical data.
| |||
Next : P3-S26 = NOT STARTED (requires explicit owner authorization)
| |||
```
| |||
| |||
## Mission (abridged)
| |||
| |||
Answer whether the current absence of a demonstrated predictive edge is
| |||
genuine, or whether residual historical-data/basis differences could still
| |||
explain part of the result. Do **NOT** recover a positive ML result; do **NOT**
| |||
optimize AUC; do **NOT** modify the model. Eliminate or quantify remaining
| |||
data-basis uncertainty.
| |||
| |||
## External data candidates (authoritative locations)
| |||
| |||
| Source | Path | Nature |
| |||
|---|---|---|
| |||
| Tickstory → MT5 tick CSV | `MQL5\Files\XAUUSD_mt5_ticks.csv` | plain-text tick CSV, NO header, ~34.5 GB, 722,941,870 rows, 2003-05-05 → 2026-08-20 |
| |||
| Dukascopy via Tickstory | `MQL5\Files\XAUUSD\` | `YYYY/Mon/day/NNh_ticks.bi5` compressed container (zstd/lz4), 204,152 files (~3.2 GB) |
| |||
| |||
Each source is treated **independently** (never merged).
| |||
| |||
## Phases implemented
| |||
| |||
```text
| |||
0 Mandatory preflight (documented in docs/P3_S25_EXTERNAL_DATA_BASIS_VALIDATION.md)
| |||
1 External data inventory -> s25_inventory.py
| |||
2 Data-quality gate -> s25_quality.py
| |||
3 Tick -> M15 independent oracle -> s25_oracle.py (ticks->M15 UTC buckets)
| |||
4 M15 -> M30 independent oracle -> s25_oracle.py (M15->M30 UTC buckets; 2 impls 100% agree)
| |||
5 Compare with corrected basis -> s25_parity.py
| |||
6 Data-basis classification -> s25_classify.py
| |||
7 Candidate Setup population replay (research basis) -> s25_replay.py (PART A)
| |||
8 External population replay -> s25_replay.py (PART B)
| |||
9 Identity-level reconciliation -> s25_reconcile.py
| |||
10 Difference attribution -> s25_attribution.py
| |||
11 Information-value test -> s25_classify.py (Question set + hierarchy)
| |||
12 Silent-bug / mutation testing -> s25_mutation.py
| |||
13 Reproducibility (run twice) -> s25_repro.py
| |||
```
| |||
| |||
## Hard authorization boundary
| |||
| |||
Authorized: inventory, DQ validation, independent UTC M15/M30 construction,
| |||
broker vs external comparison, corrected population replay, identity
| |||
reconciliation, machine-readable evidence, mutation testing, documentation.
| |||
NOT authorized: ML retraining/tuning, calibration, feature engineering/removal,
| |||
label/TP/SL/horizon changes, nonlinear models, deployment, trading, production
| |||
MQL5 changes.
| |||
| |||
## Deliverables
| |||
| |||
- `docs/P3_S25_EXTERNAL_DATA_BASIS_VALIDATION.md`
| |||
- `docs/P3_S25_EXTERNAL_DATA_POPULATION_RECONCILIATION.md`
| |||
- `docs/P3_S25_EXTERNAL_DATA_DECISION.md`
| |||
- `docs/SESSION_HANDOVER_2026-08-26_P3_S25_EXTERNAL_DATA_BASIS_VALIDATION.md`
| |||
- this namespace (`ml/p3/p3_s25_external_data_validation/`)
| |||
| |||
## Determinism & reproducibility
| |||
| |||
Every script is deterministic; evidence is machine-readable (JSON/CSV) with a
| |||
SHA-256 manifest generated by `s25_manifest.py`. The runner
| |||
(`s25_run_main.py`) can be executed twice; substantive outputs are
| |||
byte-identical except generated-UCT timestamps and explicit environment
| |||
metadata.
| |||
| |||
## Hard stop
| |||
| |||
Commit only research artifacts, push to `origin/main`, verify clean tree, and
| |||
record the final SHA. `P3-S26 = NOT STARTED`.
|