Add live.py lifecycle and event candidates; assemble confirmed vs live in engine; Summary partition; execution_signal source=confirmed only. Keep strategies untouched; do not lower Confirmed thresholds for Live. Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
WYCKOFF-LIVE-VALIDATION-001
Status: DRAFT(待确认执行后 FROZEN)
Depends on: WYCKOFF-LIVE-STRUCTURE-001(已 FROZEN)
Goal: 验证 Live 是否有预测价值,而非继续加事件规则
不做
- 不新增 BC / AR / ST / UT / UTAD(v1 已够)
- 不降低 Confirmed 门槛
- 不让 Execution 消费 Live
目标指标(先看演化,不看「准确率」口号)
1) Candidate → Confirmed 转化率
candidate_to_confirmed_rate = confirmed_count / candidate_count
按 event type 分组:Spring / SOS / LPS / UTAD。
2) 提前量(Lead)
lead_bars = confirmed_bar_index - first_candidate_bar_index
lead_price = |price_at_confirmed - price_at_first_candidate|
例:Spring candidate @ 62000 → Confirmed @ 63500 → lead_price=1500。
3) False Positive
false_candidate_rate = expired_unconfirmed / candidate_count
候选出现后,在窗口内未升格为 Confirmed,且价格无效化(如 Spring 后继续破位)。
采集方式(建议)
离线回放 / 批跑(非改 Live 规则):
for each bar in timerange:
run analyze_wyckoff(df[:bar])
log: cycle_id, lifecycle, live.candidates[], confirmed.events[]
输出:reports/wyckoff_live_validation_{symbol}_{tf}_{date}.json + 简表 CSV。
Summary 文案(可选后续,本 ECR 可只做数据)
交易终端语言示例(不阻塞指标采集):
BTC 4H Wyckoff
Lifecycle: CONFIRMED
Confirmed: Accumulation → SOS → LPS
Current: Phase D continuation
Watching: New SOS extension
Confidence: 0.60
Risk: Below LPS invalidation
验收
- 能对 BTC 4h(及可选 1h)跑出至少一类 Spring/SOS 的转化率与提前量
- 报告可复现(固定 timerange + seed/数据快照说明)
- 不修改 Confirmed / Live 检测逻辑(只读 + 日志)
Only Change(确认执行后)
scripts/或tests/下批跑采集脚本docs/notes或reports/输出样例- 可选:Summary 文案升级(独立小项)