# Validity Boundary — Market-State Gated Spring ## Definition (hard) ```text market_state in {accumulation, markup} -> allow Spring else -> block Spring ``` Spring 信号本体 = `V1_BASELINE`(FROZEN)。 Gate = Decision 层默认规则(state_set v1.1 = **PASS**)。 Soft-score / hard-score 阈值 **不进入默认规则**。 ## Validity statement Spring has positive expectancy under: 1. BTC market 2. Causal `market_state ∈ {accumulation, markup}` 3. 8h / 4h / 1h alignment 4. Trend-compatible (range already blocked in Baseline) Invalid under: 1. `distribution` 2. `range` 3. `markdown`(对 SPRING_LONG) 4. Ungated global trading ## Causal state (entry-time only) ``` bear & ema_slope >= -1% → accumulation bull & ema_slope > +0.5% → markup bull & ema_slope <= +0.5% → distribution bear & ema_slope < -1% → markdown else → range ``` ## Gate performance (net fee+slip) | Window | Baseline | Gated state_set | |--------|----------|-----------------| | 2023+ | n=20 PF 1.45 DD 7.9% | n=7 PF **1.34** DD **3.4%** | | full | n=47 PF 0.74 DD 26% | n=17 PF **0.92** DD **9.6%** | Confidence: **MEDIUM / defined-domain PASS**(full PF 仍 < 1)。 ## Negative-domain audit `scripts/wyckoff_negative_domain_audit_result.json` 对 Baseline 全部 `SPRING_LONG`(n=28)按因果状态拆 kept/blocked: | | n | PF | 含义 | |--|---|-----|------| | Kept | 15 | 1.09 | 全部在 markup | | Blocked | 13 | 0.58 | **100% bad domain** | | Blocked × distribution | 9 | **0.38** | 主杀伤区 | | Blocked × range | 4 | 1.14 | 样本小,非干净杀伤 | → Gate 主要过滤 **distribution 结构性失效**,符合威科夫「Spring 是吸筹事件而非形态」的边界叙事。 ## Default stack(LOCKED) ``` 8h causal market_state ↓ Decision: state_set Gate v1.1 ← LOCKED ↓ Frozen V1_BASELINE Spring / UTAD ``` ## Year/era robustness(冻结前确认) `scripts/wyckoff_gate_robustness_slices_result.json` - pre_2023 blocked:distribution share **87.5%**,blocked PF 0.37 - 多数年份 blocked 以 distribution 为首 - 2023+ blocked:distribution + range 并存;range **仅观察**,不改规则 - 不因 2023+ blocked 弱正 PF 或 range n=4 回滚 Gate **Primary invalidation domain = distribution(稳定)** **range = observation bucket only**