自动刷新改用 tail update 与 scrollToPosition 恢复视窗,避免 setData 后跳到最右;拆分 chart_tv 模块并扩展 analyze/recent API。同步威科夫分析、pipeline 增量构建及相关策略与配置。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.3 KiB
2.3 KiB
Validity Boundary — Market-State Gated Spring
Definition (hard)
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:
- BTC market
- Causal
market_state ∈ {accumulation, markup} - 8h / 4h / 1h alignment
- Trend-compatible (range already blocked in Baseline)
Invalid under:
distributionrangemarkdown(对 SPRING_LONG)- 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