fix: stop gating entries on minute-bar completeness

TRADING_MIN_QUALITY_SCORE 0.60 -> 0.20.

setup_evaluator.py:164 emits "quality_score": quality.score, where quality comes
from calculate_data_quality_score(bars). That module's own docstring reads "Data
quality scoring for minute-bar coverage and integrity" -- it measures whether the
bars are complete, not whether the setup is good. The name collision meant a
coverage metric has been gating live entries.

Tested against realised outcomes over 62 trades: r = 0.0845. Grade A averaged
+0.13%, grade B -0.71%, grade C -0.17% with an 80% win rate -- grade C beat grade
A. There is no signal in it. On 2026-09-14 it blocked SNDQ ("ready below quality
gate (score 0.56 < 0.60)") purely for gappy bars.

0.20 keeps it as a guard against genuinely broken data while removing it as a
setup filter. Renaming the field so the collision cannot recur is the proper fix
and is left for a follow-up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A2LepdJfPCfK5Q8uznjFBM
This commit is contained in:
momentum devandClaude Opus 5 committed 2026-09-16 20:01:57 -05:00
1 parent f7bec45c32
commit 42ca523053
1 file changed
+7 -1
+7 -1
View File
@@ -94,7 +94,13 @@ TRADING_DEFAULT_EQUITY=200
TRADING_MAX_RISK_DOLLARS=50000
TRADING_MIN_DAY_VOLUME=300000
TRADING_MIN_ENTRY_GAP_PCT=0.10
TRADING_MIN_QUALITY_SCORE=0.60
# 0.60 -> 0.20 (2026-09-16). This gates entries on setup_evaluator's quality_score,
# which is calculate_data_quality_score(bars) -- a MINUTE-BAR COVERAGE metric, not a
# setup metric ("Data quality scoring for minute-bar coverage and integrity"). Tested
# against realised outcomes over 62 trades it correlates r=0.0845, and grade C beat
# grade A. It blocked SNDQ on 2026-09-14 for having slightly gappy bars. Dropped to
# 0.20 so it only rejects genuinely broken data instead of acting as a setup filter.
TRADING_MIN_QUALITY_SCORE=0.20
# PREMARKET-RANGE RANK BOOST (2026-09-13). A name that already travelled >=15%
# premarket ran >=50% on the day 15.4% of the time vs 5.0% for the rest -- a 3.1x
# lift, the largest single predictor measured over 1,040 screened symbol-days.