SniperGold_ML/docs/P3_S16_LABEL_CONTRACT.md

7.1 KiB

P3-S.16 LABEL CONTRACT — SNIPERGOLD_ML (Setup-Outcome)

Status   : AUTHORITATIVE LABEL CONTRACT for the FUTURE_L3_SETUP_OUTCOME target.
Scope    : Defines the setup-outcome label (TP-before-SL) for P3-S.16 and the
           future training phase. This is Store 3 (outcome) of the setup-level
           dataset contract. ORACLE for label computation in the generator.
Session  : P3-S.16 — Setup-Level Dataset / Label Contract Implementation.
Date     : 2026-08-23
Verbatim target: ONE Candidate Setup -> SETUP OUTCOME (TP-before-SL).
              SEPARATE from the legacy L1 directional-dRIFT label (§J).
Numeric selections: constants below are semantic candidates recorded as OPEN
              parameters; they must NOT be finalized by AUC/PF (session §29).
Provenance: P3-S.15 proposal §3; P3.2 (docs/P3_2_LABEL_FORENSIC.md)
           P3.2.2 (docs/P3_2_2_DEOVERLAP_SURVIVAL.md)
Human verification : REMAINS CANCELLED.

A. PRINCIPLE

The label must measure whether the expected setup outcome occurred BEFORE invalidation, not "future price direction." P3.2 (official classification B — LABEL IS MISALIGNED) established the 24-bar/0.75 ATR label measures directional drift (L1), not setup validation. P3.2.2 established the L3 (TP-before-SL) mechanism is viable on a discrete setup unit. This contract instantiates that mechanism on the CANONICAL Candidate Setup.


B. ENTRY (from dataset contract §D — repeated for the label)

entry_timestamp = CLOSE of the CANDIDATE_SETUP creation bar (M15).
entry_price     = creation_bar close (mid reference, contract §H).

C. OUTCOME CLASSES

WIN        : the TP level is reached BEFORE the SL level.
LOSS       : the SL level is reached BEFORE the TP level.
UNRESOLVED : neither TP nor SL is reached within the HORIZON (censored), OR
             there is insufficient future data (end of series / gap), OR the
             remaining path is not price-continuous enough to decide.
AMBIGUOUS  : the TP and SL are triggered within the SAME bar (same-bar
             conflict) — cannot be resolved without finer data; classified per
             the contract's deterministic rule (§F), never by arbitrary OHLC
             ordering.

D. TP / SL SEMANTICS (§11, §14)

TP_LEVEL = setup_direction * k_tp * ATR(entry)   above/below entry_price.
SL_LEVEL = setup_direction * k_sl * ATR(entry)   opposite to entry direction.

REFERENCE : ATR at ENTRY (causally available at entry; NOT post-entry
            recalculation — fixed at entry for the whole measurement).
ATR basis : rolling 14-bar M15 ATR ending at the entry bar (the project's
            contract ATR convention, FEATURE_CONTRACT §0).
SYMMETRY  : the contract allows BOTH symmetric (k_tp==k_sl) and asymmetric
            (k_tp!=k_sl) configurations, selected as an OPEN parameter; the
            DEFAULT CANDIDATE recorded from P3.2 evidence is asymmetric
            TP=1.5 ATR / SL=0.75 ATR (a 2:1 semantic R-R), with 1.0/1.0 as a
            symmetric robustness sensitivity.
            Explicitly: the choice of constants is OPEN (not AUC-optimized).

E. HORIZON (§13)

SEMANTIC BASIS (from P3.2/P3.2.2 lifetime evidence):
  - setup outcomes mostly occur within 1-8 M15 bars; ~90% within 8;
    >98% within 16; <= 24 adds only late SL (P3.2.2 §G).
  - the old 24-bar horizon FAR exceeded the setup lifetime and measured drift.

CONTRACT:
  PRIMARY HORIZON : H = 16 M15 bars (semantic: captures >98% of outcomes with
                    low censoring). Chosen on LIFETIME evidence, not metrics.
  ROBUSTNESS       : H = 8 (short) recorded as robustness; NOT a substitute.
  TIMEOUT          : if neither TP nor SL by bar H -> UNRESOLVED (censored).

H is recorded as an OPEN numeric parameter pending authorized confirmation,
but its SEMANTIC basis (setup lifetime <= ~16 bars) is fixed by evidence, not
optimization.

F. FIRST-HIT & SAME-BAR AMBIGUITY (§15, §17)

FIRST-HIT RULE : scan bars strictly AFTER the entry bar, in time order; the
                 FIRST bar in which either TP or SL is touched decides:
                   - TP only  -> WIN
                   - SL only  -> LOSS
                   - both     -> AMBIGUOUS (§F2)
                   - neither  -> continue until H; then UNRESOLVED.

SAME-BAR TP/SL (both touched within one bar):
  The contract does NOT assume intra-bar OHLC ordering (which touch came
  first is undecidable from OHLC without tick chronology). Rule:
    SAME-BAR AMBIGUOUS : classify AMBIGUOUS deterministically. It is neither
    WIN nor LOSS. (No arbitrary "open vs close first" assumption.)

VAILIATION: if the project later adopts lower-timeframe reconstruction or tick
chronology, that becomes a SEPARATE, authorized revision of THIS rule — it is
not decided by P3-S.16 and not improvised here.

G. CENSORING / UNRESOLVED (§16)

UNRESOLVED occurs EXACTLY when:
  (a) neither TP nor SL by bar H within available price data, OR
  (b) insufficient future data to reach H (end of series / history cut), OR
  (c) a market-closure / data-gap makes the path non-continuous (price cannot
      be traced between the last available bar and the next), so outcome cannot
      be causally determined.
RULE: UNRESOLVED is TRUE censoring. It is NEVER forced to LOSS. It is excluded
from any naive accuracy count and reported as its own class (or handled with
survival-style methods in a later phase).

H. INVALIDATION (secondary; recorded, not primary)

The canonical lifecycle can invalidate a setup (EXPIRED / INVALIDATED /
CONSUMED) BEFORE the TP/SL needle resolves. For the LABEL CONTRACT:
  - TP/SL (price) remains the PRIMARY outcome (P3.2.2 §I: SL is faster than
    structure invalidation; invalidation rarely precedes TP/SL).
  - a setup that is lifecycle-INVALIDATED before TP/SL is recorded with
    label_invalidated_early=True and the price outcome is still resolved by
    TP/SL; the invalidation is a SECONDARY diagnostic, not a label replacement.

I. LABEL CONTRACT STATUS

Semantics settled: WIN / LOSS / UNRESOLVED / AMBIGUOUS fully defined, with
entry, TP/SL, horizon, first-hit, same-bar ambiguity, censoring, missing-data,
and session/gap behavior defined (§B-§H).
OPEN parameters (semantically anchored, NOT optimized by AUC/PF):
  - k_tp / k_sl (default candidate 1.5/0.75; robustness 1.0/1.0),
  - H (primary 16, robustness 8),
  - W_m3 (frozen F3 placeholder) if used in features.
Classified accordingly in the final verdict as "CONTRACT COMPLETE WITH
OPEN PARAMETERS" — semantics fully settled.

J. LEGACY SEVERANCE

LEGACY_L1_BAR_DRIFT   : 24-bar / 0.75 ATR DIRECTION drift (never reused here).
FUTURE_L3_SETUP_OUTCOME: setup-outcome TP-before-SL (THIS contract).
Only the FUTURE_L3_SETUP_OUTCOME label is produced by the P3-S.16 generator.

K. REPRODUCIBILITY

Label computation is deterministic over (source price, setup identity, TP/SL
constants, H, ambiguity rule). A future dataset records the label-contract
version + generator version + constants hash for reproducibility (§24).

End of P3-S.16 label contract.