feat: v9 SHORT quality improvements - momentum-based filtering
PROBLEM IDENTIFIED (Nov 26, 2025):
- Two v9 SHORT losses today: -$133.31 and -$153.98 (total -$287.29)
- Analysis of 95 historical SHORTs revealed counterintuitive patterns
- RSI filter was blocking the WRONG trades
DATA FINDINGS:
- RSI <35 SHORTs: 37.5% WR, -$655.23 (4 biggest disasters)
- Winning SHORTs: avg ADX 26.9, Price Position 19-64%
- Losing SHORTs: avg ADX 20.7, Price Position 13.6-65%
- Today's disaster: ADX 20.7, Price Pos 13.6%, RSI 46.2
ROOT CAUSE:
- v8 failed: Shorting oversold (RSI 25-35), caught falling knives
- v9 RSI filter: Blocked RSI <33 but allowed weak chop trades
- Real issue: Trend strength (ADX) + Entry timing (Price Position)
SOLUTION IMPLEMENTED:
1. REMOVED RSI filter for SHORTs entirely (was blocking wrong trades)
2. ADDED momentum-based filter:
- Requires ADX >= 23 (trending environment, not chop)
- Requires Price Position >= 60% (short at top of range) OR
- Price Position <= 40% with Volume >= 2.0x (capitulation breakdown)
- Penalty: -30 points if criteria not met
- Bonus: +10 points if momentum criteria met
EXPECTED IMPACT:
- Blocks today's disaster: ADX 20.7 <23, Price Pos 13.6% <60%
- Blocks 4 of top 6 worst losses (all weak trend or bottom-fishing)
- Enables catching massive downtrends at top of range
- Total potential savings: ~$776 from historical disasters
FILES CHANGED:
- lib/trading/signal-quality.ts (lines 118-156, 197-238)
Built and deployed: Nov 26, 2025 19:45 CET
Container restarted: trading-bot-v4