remove: V10 momentum system - backtest proved it adds no value
- Removed v10 TradingView indicator (moneyline_v10_momentum_dots.pinescript) - Removed v10 penalty system from signal-quality.ts (-30/-25 point penalties) - Removed backtest result files (sweep_*.csv) - Updated copilot-instructions.md to remove v10 references - Simplified direction-specific quality thresholds (LONG 90+, SHORT 80+) Rationale: - 1,944 parameter combinations tested in backtest - All top results IDENTICAL (568 trades, $498 P&L, 61.09% WR) - Momentum parameters had ZERO impact on trade selection - Profit factor 1.027 too low (barely profitable after fees) - Max drawdown -$1,270 vs +$498 profit = terrible risk-reward - v10 penalties were blocking good trades (bug: applied to wrong positions) Keeping v9 as production system - simpler, proven, effective.
This commit is contained in:
@@ -197,33 +197,6 @@ export async function scoreSignalQuality(params: {
|
||||
reasons.push(`Volume breakout compensates for low ATR`)
|
||||
}
|
||||
|
||||
// v10 (Nov 26, 2025): SHORT-SPECIFIC MOMENTUM FILTER
|
||||
// Data analysis of 95 SHORTs revealed the REAL pattern:
|
||||
// - Winners: ADX 26.9, Price Position 37.8-64.2% (shorting at top!)
|
||||
// - Losers: ADX 20-25, Price Position 13.6-38.4% (shorting in chop at bottom!)
|
||||
// - Today's disaster: ADX 20.7, Price Pos 13.6% = both failed filters
|
||||
//
|
||||
// The winning formula: Catch shorts at the TOP with strong trend confirmation
|
||||
if (params.direction === 'short') {
|
||||
const hasStrongTrend = params.adx >= 23
|
||||
const atTopOfRange = params.pricePosition >= 60
|
||||
const atBottomWithVolume = params.pricePosition <= 40 && params.volumeRatio >= 2.0
|
||||
|
||||
if (!hasStrongTrend) {
|
||||
score -= 30
|
||||
reasons.push(`🚨 v10: SHORT in weak trend (ADX ${params.adx.toFixed(1)} < 23) → HIGH CHOP RISK (-30 pts)`)
|
||||
} else if (!atTopOfRange && !atBottomWithVolume) {
|
||||
score -= 25
|
||||
reasons.push(`🚨 v10: SHORT in mid-range (${params.pricePosition.toFixed(0)}%) without setup → TRAP ZONE (-25 pts)`)
|
||||
} else if (atTopOfRange) {
|
||||
score += 15
|
||||
reasons.push(`✅ v10: SHORT at top of range (${params.pricePosition.toFixed(0)}%) with ADX ${params.adx.toFixed(1)} → IDEAL SETUP (+15 pts)`)
|
||||
} else if (atBottomWithVolume) {
|
||||
score += 10
|
||||
reasons.push(`✅ v10: SHORT capitulation bounce (${params.pricePosition.toFixed(0)}%, vol ${params.volumeRatio.toFixed(2)}x) → VALID (+10 pts)`)
|
||||
}
|
||||
}
|
||||
|
||||
// Signal frequency penalties (check database for recent signals)
|
||||
const frequencyPenalties = {
|
||||
overtrading: 0,
|
||||
@@ -237,6 +210,7 @@ export async function scoreSignalQuality(params: {
|
||||
symbol: params.symbol,
|
||||
direction: params.direction,
|
||||
timeWindowMinutes: 30,
|
||||
timeframe: params.timeframe,
|
||||
})
|
||||
|
||||
// Penalty 1: Overtrading (3+ signals in 30 minutes)
|
||||
|
||||
Reference in New Issue
Block a user