feat(ECR-007): Wyckoff Live Structure with Confirmed/Live isolation

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>
This commit is contained in:
jackyu66git
2026-08-07 03:14:19 +08:00
co-authored by Cursor
parent 1e60ab3bfa
commit 276481e02c
33 changed files with 2527 additions and 401 deletions
+2 -2
View File
@@ -43,9 +43,9 @@ def test_analyze_contract_keys_file():
)
)
keys = doc["required"] if isinstance(doc, dict) and "required" in doc else doc
for k in ("kline_data", "bi_list", "seg_list", "zs_list", "bsp_list"):
for k in ("kline_data", "bi_list", "seg_list", "zs_list", "bsp_list", "wyckoff"):
assert k in keys
if isinstance(doc, dict):
assert "include_wyckoff" in doc.get("optional_when", {})
assert "include_wyckoff" not in doc.get("optional_when", {})
for k in ("trading_range", "phases", "events", "volume_profile"):
assert k in doc.get("wyckoff_keys", [])