Add multi-factor conviction gate to activation
Make "qualified" mean an edge candidate, not just R:R + confidence. The gate now also requires (all admin-configurable, defaults on): - high conviction: recommended_action LONG_HIGH / SHORT_HIGH only - clean read: risk_level Low (no contradicting signals) - probable primary target: best target probability >= min (default 60) - Shared predicate: app/services/qualification.py + frontend/src/lib/qualification.ts (mirrored) - Activation config extended (min_target_probability, require_high_conviction, exclude_conflicts) with bool-aware get/update + validation - /trades/performance switched to ?qualified_only=true, applying the full gate server-side; confidence breakdown stays unfiltered - Dashboard "Qualified", Signals "Qualified only" toggle, and Track Record all use the one gate; Admin gains the new controls Sentiment provider runtime config (prior change) included. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -289,7 +289,15 @@ class TestGetPerformanceStats:
|
||||
))
|
||||
await db_session.flush()
|
||||
|
||||
stats = await get_performance_stats(db_session, min_rr=2.0, min_confidence=70.0)
|
||||
# Gate on R:R + confidence only (conviction filters off for this test)
|
||||
config = {
|
||||
"min_rr": 2.0,
|
||||
"min_confidence": 70.0,
|
||||
"min_target_probability": 0.0,
|
||||
"require_high_conviction": False,
|
||||
"exclude_conflicts": False,
|
||||
}
|
||||
stats = await get_performance_stats(db_session, config=config)
|
||||
|
||||
# Overall covers only the qualified setup
|
||||
assert stats["overall"]["total"] == 1
|
||||
|
||||
Reference in New Issue
Block a user