266 lines
11 KiB
Markdown
266 lines
11 KiB
Markdown
|
|
# SESSION HANDOVER — SNIPERGOLD_ML P3-S.4: FVG SPEC + CONFORMANCE
|
||
|
|
|
||
|
|
```text
|
||
|
|
Date : 2026-08-22 (session close)
|
||
|
|
Status : P3-S.4 COMPLETE — spec + conformance audit done; synthetic tests 20/20;
|
||
|
|
NOT yet committed (handover prepared before commit+push)
|
||
|
|
Forge : https://forge.mql5.io/chiki2bum2/SniperGold_ML
|
||
|
|
Checkpoint : P3-S.3 b6100f9c4ff631539bab4ba8c5416cae4d89564a (research content intact;
|
||
|
|
HEAD ahead by 3 documentation-only commits: eb8a818, 0ac6ed1, 85e3b48)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. SESSION OBJECTIVE
|
||
|
|
|
||
|
|
```text
|
||
|
|
Formal Specification + Code-Conformance Audit for FVG (Fair Value Gap).
|
||
|
|
|
||
|
|
Question answered:
|
||
|
|
Does the SniperGold code claiming to detect FVG really implement the
|
||
|
|
FVG definition established by the PROJECT SEMANTIC SPECIFICATION?
|
||
|
|
|
||
|
|
Questions NOT answered:
|
||
|
|
- Does FVG generate profit?
|
||
|
|
- Does FVG improve AUC / PF?
|
||
|
|
- Is the universal SMC FVG definition correct for every trader?
|
||
|
|
```
|
||
|
|
|
||
|
|
Principle: SPEC FIRST, CODE AUDIT SECOND. Human verification = CANCELLED.
|
||
|
|
No production code changes (Phase D). No ML / AUC / PF / backtest optimization.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. SOURCE MATERIAL (16 sources, reconciled)
|
||
|
|
|
||
|
|
```text
|
||
|
|
1 DESIGN.md (Algo Forge) docs/DESIGN.md (C/E agents, display)
|
||
|
|
2 DESAIN_MTF_v45.md Shared Projects\SniperGold_ML (v4.5 MTF FVG intent)
|
||
|
|
3 v4.3/v4.4 indicator Indicators\Downloads\SniperGold_SMC_ProPlus_v4_3/4_4.mq5
|
||
|
|
4 v4.5 indicator Indicators\Downloads\SniperGold_SMC_ProPlus_v4_5.mq5
|
||
|
|
5 Engine 2 FVG detector Include\AlgoForge\AF_Engine2_Agents.mqh:329-350 (AF_FindFVG)
|
||
|
|
6 Engine 2 C agent (context) AF_Engine2_Agents.mqh:492-575
|
||
|
|
7 Engine 2 E agent (entry) AF_Engine2_Agents.mqh:583-663
|
||
|
|
8 Engine 3 display collector Include\AlgoForge\AF_Engine2_Display.mqh:255-292 (AF_CollectFVG)
|
||
|
|
9 Engine 3 render Include\AlgoForge\AF_Engine3_Render.mqh:379-392
|
||
|
|
10 Engine 3 indicator Indicators\AlgoForge\AF_Engine3_Display.mq5
|
||
|
|
11 Unit test Experts\AlgoForge_Engine3_UnitTest.mq5:133-137
|
||
|
|
12 AF_Defines.mqh Include\AlgoForge\AF_Defines.mqh:31,53,58,61
|
||
|
|
13 FEATURE_CONTRACT docs/FEATURE_CONTRACT.md — NO FVG feature (0 refs)
|
||
|
|
14 EA runtime Experts\AlgoForge_Backtest_Baseline.mq5 — NO FVG (0 refs)
|
||
|
|
15 Python training ml/**/*.py — NO FVG (0 refs)
|
||
|
|
16 P3 docs P3-S.2 conformance; golden-dataset concept list
|
||
|
|
|
||
|
|
Three semantic layers separated:
|
||
|
|
INTENDED : FVG = imbalance ZONE; C agent = "which zone is price in"; E agent =
|
||
|
|
entry zone (ZONE + CONFIRMATION = setup); legacy chain
|
||
|
|
Sweep -> CHoCH -> OB/FVG within InpSeqWindow; display zones with
|
||
|
|
MIT filter + minimum size.
|
||
|
|
LEGACY : v4.3/v4.4/v4.5: 3-candle wick gap; minGap 0.25xATR (auto) or 0;
|
||
|
|
mitigation = full fill by wick; entry tap +-1 ATR on ANY unmitigated
|
||
|
|
zone; HTF projection (InpFVGTF); v4.5 per-TF MTF FVG (display).
|
||
|
|
CURRENT : Engine 2 AF_FindFVG = newest FVG ONLY, NO minGap, NO mitigation,
|
||
|
|
lookback 40 (C) / 20 (E); display AF_CollectFVG = newest N
|
||
|
|
unmitigated zones, minGap 0.02xATR, mitigation by close;
|
||
|
|
ML features / EA / training: FVG ABSENT.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. SPECIFICATION (docs/SMC_FVG_SPEC_v1.md)
|
||
|
|
|
||
|
|
```text
|
||
|
|
DEFINITION : 3-candle: bullish Low(C3) > High(C1), zone [High(C1), Low(C3)];
|
||
|
|
bearish High(C3) < Low(C1), zone [High(C3), Low(C1)];
|
||
|
|
C2 (gap candle) extremes unused in the zone bounds.
|
||
|
|
BOUNDARIES : WICK-BASED (High/Low of C1 & C3); no body rule; close not used.
|
||
|
|
MIN GAP : none in the definition (>= 1 tick); zero gap = NOT FVG;
|
||
|
|
consumer filters 0.02 ATR (display) / 0.25 ATR (legacy auto) /
|
||
|
|
none (Engine 2) = AMBIGUOUS (A-1).
|
||
|
|
DIRECTION : +1 bullish (up gap), -1 bearish (down gap), 0 none;
|
||
|
|
NO trend precondition (unlike CHoCH).
|
||
|
|
DISPLACEMENT: NOT REQUIRED BY CURRENT SPEC (geometric gap sufficient).
|
||
|
|
FORMATION : observable at C3 close (b <= t); newest closed bar eligible;
|
||
|
|
canonical timestamp = C3 open (A-5: legacy uses C2).
|
||
|
|
CLOSED-BAR : all inputs <= t; no future visibility (property-tested T15).
|
||
|
|
LIFECYCLE : ZONE (persistent); one zone per formation; no event stream;
|
||
|
|
no age expiry; one zone stays ONE zone (T14).
|
||
|
|
MITIGATION : full fill by wick (Low<=bot bull / High>=top bear); partial fill
|
||
|
|
NOT mitigation; display variant = close (A-2).
|
||
|
|
INVALIDATION: NOT MODELED (only mitigation terminates a zone).
|
||
|
|
OVERLAP : separate zones per formation; no merge/replace/dedup.
|
||
|
|
TIMEFRAME : Engine 2 per-TF independent (H4/M30/M15/M3); canonical project
|
||
|
|
FVG = SPECIFICATION AMBIGUOUS (A-3).
|
||
|
|
PARITY : FVG NOT an ML feature (contract f0-f18 has none) -> parity N/A.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. CONFORMANCE (docs/P3_S4_FVG_CONFORMANCE.md)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Detection semantics (E-1, E-2, E-4, E-5, E-7) : CONFORMING
|
||
|
|
geometry, wick boundaries, direction, no displacement, closed-bar/no-future.
|
||
|
|
Minimum gap (E-3) : SPECIFICATION AMBIGUOUS (A-1)
|
||
|
|
Formation timing (E-6) : PARTIALLY CONFORMING (BUG-P3S4-002)
|
||
|
|
Lifecycle zone (E-8) : CONFORMING (no event duplication)
|
||
|
|
Mitigation (E-9) : NON-CONFORMING (Engine 2,
|
||
|
|
BUG-P3S4-001) + AMBIGUOUS (A-2)
|
||
|
|
Invalidation (E-10) : CONFORMING (not modeled)
|
||
|
|
Overlap / multiple (E-11) : CONFORMING
|
||
|
|
Timeframe (E-12) : SPECIFICATION AMBIGUOUS (A-3)
|
||
|
|
Consumer semantics (E-14, E-15) : PARTIALLY CONFORMING
|
||
|
|
(BUG-P3S4-001/-002, A-6)
|
||
|
|
Runtime/training parity (E-13) : CONFORMING (N/A by absence)
|
||
|
|
|
||
|
|
VERDICT : PARTIALLY CONFORMING
|
||
|
|
(conformance to the project spec; NOT profitability/edge)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. SYNTHETIC TESTS
|
||
|
|
|
||
|
|
```text
|
||
|
|
Runner : ml/p3/smc_semantic/spec_tests_fvg.py
|
||
|
|
Cases : ml/p3/smc_semantic/spec_test_cases_fvg.json (20 cases)
|
||
|
|
Report : ml/p3/smc_semantic/output/spec_tests_fvg_report.json
|
||
|
|
|
||
|
|
Result : 20/20 PASS
|
||
|
|
FVG-T01..T20 (all required). spec_oracle (truth, from SPEC S-1..S-13) ==
|
||
|
|
expected in all cases. code_port (Engine-2 AF_FindFVG port, observation)
|
||
|
|
MATCHES spec in T01-T09/T14-T19; DIVERGES in:
|
||
|
|
T10/T11: spec newest-unmitigated = none (mitigated) vs code returns the
|
||
|
|
zone -> synthetic evidence for BUG-P3S4-001;
|
||
|
|
T12/T13: spec newest zone (C3 = newest closed bar) vs code returns an
|
||
|
|
older zone (1-bar lag + lookback) -> evidence for BUG-P3S4-002.
|
||
|
|
Expected derived from SPEC, NOT from production code.
|
||
|
|
Parity scan (T20): FEATURE_CONTRACT.md = 0 FVG refs; ml/**/*.py = 0 FVG refs
|
||
|
|
(excluding the spec test files) -> runtime/training parity N/A by absence.
|
||
|
|
NO AUC/PF/backtest/human annotation/ML on the test path.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. CONFIRMED BUGS (document-only; NOT fixed in P3-S.4)
|
||
|
|
|
||
|
|
```text
|
||
|
|
BUG-P3S4-001 [MEDIUM] CONFIRMED, NOT FIXED
|
||
|
|
Engine-2 AF_FindFVG (AF_Engine2_Agents.mqh:329-350) has NO mitigation filter:
|
||
|
|
the Context (weight 0.25) and Entry (zone tap) agents can consume a FULLY-FILLED
|
||
|
|
FVG as a current zone; it also returns ONLY the newest zone (older unmitigated
|
||
|
|
zones invisible), diverging from the legacy entry rule (all-unmitigated within
|
||
|
|
tap). NOT the f7/f9/f18 duplication class — FVG is a zone, but the mitigation
|
||
|
|
lifecycle is not respected.
|
||
|
|
Fix: apply the wick full-fill mitigation filter (S-9) to AF_FindFVG and clarify
|
||
|
|
the zone-selection rule.
|
||
|
|
|
||
|
|
BUG-P3S4-002 [LOW] DOCUMENTED
|
||
|
|
AF_FindFVG loop starts at i=1 (skips the newest closed bar as C3) -> 1-bar lag
|
||
|
|
vs legacy/display; C-agent lookback 40 vs E-agent lookback 20 (inconsistent).
|
||
|
|
Fix: start at i=0 (closed-bar lock) or document the maturity delay; unify the
|
||
|
|
lookback constant.
|
||
|
|
|
||
|
|
BUG-P3S4-003 [INFO] DOCUMENTED
|
||
|
|
FVG timestamp convention diverges: v4.4/v4.5 = middle candle (C2), Engine-3
|
||
|
|
display = C3, Engine 2 = none. Display-only; no ML impact.
|
||
|
|
|
||
|
|
BUG-P3S4-004 [INFO] DOCUMENTED
|
||
|
|
Minimum-gap filters diverge (none / 0.02 ATR / 0.25 ATR) — no canonical project
|
||
|
|
threshold (SPECIFICATION AMBIGUOUS A-1). NOT optimized in this session.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. SEMANTIC AMBIGUITIES
|
||
|
|
|
||
|
|
```text
|
||
|
|
1. Minimum gap filters (A-1) : none / 0.02 ATR / 0.25 ATR; no canonical value.
|
||
|
|
2. Mitigation trigger (A-2) : wick full-fill (legacy) vs close full-fill
|
||
|
|
(display) vs none (Engine 2).
|
||
|
|
3. Canonical timeframe (A-3) : Engine-2 M15 slot explicit; HTF FVG as M15
|
||
|
|
context / M3 FVG entry not defined (same class
|
||
|
|
as CHoCH G-4, sweep G-3).
|
||
|
|
4. Same-bar double condition (A-4): geometrically impossible; bull-first order;
|
||
|
|
unreachable.
|
||
|
|
5. Zone timestamp (A-5) : C2 (legacy) vs C3 (display) vs none (Engine 2).
|
||
|
|
6. Consumer zone scope (A-6) : Engine 2 newest-only vs legacy all-unmitigated.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. NO PRODUCTION CHANGE
|
||
|
|
|
||
|
|
```text
|
||
|
|
No production code was modified.
|
||
|
|
AF_FindFVG / AF_CollectFVG / v4.3 / v4.4 / v4.5 / Engine 2 / Engine 3 /
|
||
|
|
f7 / f8 / f9 / f10 / f11 / f18 / OB / CHoCH / Displacement / ML / EA :
|
||
|
|
NOT touched.
|
||
|
|
|
||
|
|
Only P3-S.4 research artifacts added (spec, conformance, tests, report, handover).
|
||
|
|
P3-S.3 / P3-S.2 artifacts (immutable) UNCHANGED
|
||
|
|
(git status: only new files, 0 modified).
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9. HUMAN VERIFICATION STATUS
|
||
|
|
|
||
|
|
```text
|
||
|
|
HUMAN VERIFICATION = CANCELLED
|
||
|
|
Human annotation is NOT part of the FVG validation path.
|
||
|
|
The human_package/ remains a historical artifact only.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 10. NEXT GATE
|
||
|
|
|
||
|
|
```text
|
||
|
|
After the FVG verdict (PARTIALLY CONFORMING):
|
||
|
|
OB -> Displacement -> MTF Alignment -> Candidate Setup.
|
||
|
|
DO NOT return to ML; DO NOT build a meta-label; DO NOT create new event labels;
|
||
|
|
DO NOT fix production bugs before the audit chain completes (BUG-P3S4-00x stay
|
||
|
|
documented until the semantic audit chain is finished).
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 11. CHECKPOINT & PROVENANCE (P3-S.4)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Forge HEAD (session start) : 85e3b48 (P3-S.3 research checkpoint b6100f9 intact;
|
||
|
|
ahead only by 3 documentation-only commits)
|
||
|
|
P3-S.3 spec (immutable) : docs/SMC_CHOCH_MSS_SPEC_v1.md
|
||
|
|
P3-S.2 spec (immutable) : docs/SMC_LIQUIDITY_SWEEP_SPEC_v1.md
|
||
|
|
FEATURE_CONTRACT : C44CC6F2... (P2-era) / 7b908b12... (committed)
|
||
|
|
P2.6 model (SHA-256) : 06df8452... (Include\SniperGold_ML_p26_corrected.mqh)
|
||
|
|
VERIFIED by file hash this session
|
||
|
|
symbol/tf : XAUUSD / M15 (2017-01-01 .. 2026-08-20)
|
||
|
|
Human verification : CANCELLED
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 12. P3-S.4 ARTIFACTS
|
||
|
|
|
||
|
|
```text
|
||
|
|
docs/SMC_FVG_SPEC_v1.md
|
||
|
|
docs/P3_S4_FVG_CONFORMANCE.md
|
||
|
|
ml/p3/smc_semantic/spec_tests_fvg.py
|
||
|
|
ml/p3/smc_semantic/spec_test_cases_fvg.json
|
||
|
|
ml/p3/smc_semantic/output/spec_tests_fvg_report.json
|
||
|
|
docs/SESSION_HANDOVER_2026-08-22_P3_S4_FVG.md (this document)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 13. COMMIT & PUSH STATUS
|
||
|
|
|
||
|
|
```text
|
||
|
|
NOT YET COMMITTED at handover write time.
|
||
|
|
Planned commit message:
|
||
|
|
research: P3-S.4 FVG formal spec + conformance audit (PARTIALLY CONFORMING)
|
||
|
|
Follow with: git push origin main; verify rev-parse HEAD == ls-remote origin HEAD;
|
||
|
|
working tree CLEAN.
|
||
|
|
```
|