Key findings: - SHORTs outperform LONGs (42.9% vs 20% WR, +6.31 vs -.22) - RSI >70 LONG = worst loss (-7.09) - SHORT RSI 30-40 = sweet spot (+6.27 from 6 trades) - Quality paradox: <75 SHORTs winning (66.7% WR) - SL exit anomaly: 6 SL exits but +3.28 profit (partial closes) - GHOST_CLEANUP trade indicates Bug #77 recurrence Recommendations: - Block RSI >70 LONGs immediately (-60 points) - Consider LONG 90→95, SHORT 95→85 threshold adjustment - Fix exitReason logic for partial closes - Verify SL Verification System deployment Sample size: 11 trades (need 20+ for statistical significance)
14 KiB
v11 Comprehensive Trade Analysis - December 16, 2025
Executive Summary
Total Trades: 12 (including 1 ghost cleanup)
Analyzed: 11 real trades (excluding ghost)
Overall Performance: +$44.06 total P&L, 36.4% win rate
Sample Size: SMALL - Need 20+ trades for statistical significance
🔴 CRITICAL FINDINGS - IMMEDIATE ACTION REQUIRED
1. SHORTs Are Significantly Outperforming LONGs
| Direction | Trades | Win Rate | Total P&L | Avg P&L | Avg Quality |
|---|---|---|---|---|---|
| SHORT | 7 | 42.9% | +$46.31 | +$6.62 | 77.9 |
| LONG | 5 | 20.0% | -$2.22 | -$0.44 | 86.0 |
Key Insights:
- SHORTs are winning DESPITE lower quality scores (77.9 vs 86.0)
- LONGs are failing DESPITE higher quality scores
- SHORT avg P&L is 15× better than LONG avg P&L ($6.62 vs -$0.44)
2. RSI Pattern Discovery: SHORTS Excel in 30-40 Zone
| Direction | RSI Zone | Trades | Wins | Total P&L |
|---|---|---|---|---|
| SHORT | 30-40 Bearish | 6 | 3 | +$46.27 |
| SHORT | 40+ Neutral/High | 1 | 0 | +$0.03 |
| LONG | 70+ Overbought | 1 | 0 | -$17.09 |
| LONG | 60-70 Strong | 2 | 1 | +$26.97 |
| LONG | 50-60 Moderate | 2 | 0 | -$12.10 |
Critical Pattern:
- ✅ SHORT with RSI 30-40 = 50% WR, +$46.27 (6 trades)
- ✅ LONG with RSI 60-70 = 50% WR, +$26.97 (2 trades)
- ❌ LONG with RSI >70 = 0% WR, -$17.09 (1 trade - worst loss)
- ❌ LONG with RSI 50-60 = 0% WR, -$12.10 (2 trades)
3. Quality Score Paradox: Low Quality SHORTs Winning
| Quality Tier | Trades | Wins | Win Rate | Total P&L |
|---|---|---|---|---|
| 100+ | 2 | 1 | 50.0% | +$24.01 |
| 95-99 | 2 | 0 | 0.0% | -$4.72 |
| 85-94 | 2 | 1 | 50.0% | +$3.37 |
| 75-84 | 3 | 0 | 0.0% | +$8.54 |
| <75 | 3 | 2 | 66.7% | +$12.88 |
ANOMALY DETECTED:
- Quality <75 trades have the HIGHEST win rate (66.7%)
- All 3 sub-75 trades are SHORT direction
- This contradicts quality scoring logic
Explanation:
- v11 filters are TOO STRICT for SHORTs
- Quality 60 SHORTs (ADX 15-16, weak trend) are winning
- Market conditions favor weak-trend SHORT entries right now
4. Exit Reason Anomaly: Stop Losses Are PROFITABLE
| Exit Reason | Trades | Total P&L | Avg P&L | Avg Hold Time |
|---|---|---|---|---|
| SL | 6 | +$23.28 | +$3.88 | 66.5 min |
| TP2 | 2 | +$17.06 | +$8.53 | 78.6 min |
| TP1 | 2 | +$3.72 | +$1.86 | 48.1 min |
| manual | 1 | +$0.03 | +$0.03 | 0.1 min |
🚨 CRITICAL ANOMALY:
- 6 trades hit stop loss but made +$23.28 profit
- This is IMPOSSIBLE with standard stop loss logic
- Root Cause: SL placement bug or emergency close intervention
Specific Cases:
-
Trade 12-16 01:30 SHORT: Hit SL but made +$33.01 (+9.62%)
- Entry: $124.54, Exit: $126.73, SL: $125.54
- Price moved AGAINST direction (+$2.19) but trade was profitable
- Explanation: SHORT entered, price rose to SL, but trade closed with profit somehow
-
Trade 12-10 19:35 LONG: Hit SL but made +$23.63 (+1.19%)
- Entry: $138.96, Exit: $140.74, SL: $136.77
- Price moved WITH direction (+$1.78) to SL but profit recorded
- Explanation: TP1 hit first (60% close), then remainder hit SL?
HYPOTHESIS: These are partial closes where:
- TP1 hit first (60% closed at profit)
- Remaining 40% runner hit SL
- Database recorded exitReason=SL but realizedPnL includes TP1 profit
Pattern Analysis by Metrics
ADX (Trend Strength) Analysis
| ADX Tier | Trades | Avg ADX | Win Rate | Total P&L |
|---|---|---|---|---|
| 30+ Very Strong | 1 | 34.2 | 100% | +$0.38 |
| 20-30 Moderate | 6 | 23.3 | 33.3% | +$39.90 |
| <20 Weak | 4 | 16.3 | 25.0% | +$3.77 |
Finding: ADX doesn't strongly correlate with success
- Strong ADX (30+) only 1 sample
- Weak ADX (<20) still has 25% WR and positive P&L
Position Analysis (LONGs only - price position field)
| Price Zone | Trades | Avg Position | Win Rate | Total P&L |
|---|---|---|---|---|
| 80-100% Top | 2 | 87.1% | 50% | +$19.29 |
| 60-80% Upper | 2 | 68.9% | 0% | -$12.10 |
| 50-60% Middle | 1 | 54.2% | 0% | -$7.38 |
Pattern: LONGs at top of range (80-100%) performing better than middle (50-80%)
- This is counterintuitive but limited sample (2 trades)
- Could indicate breakout momentum vs mean reversion
Volume Analysis
| Volume Range | Trades | Avg Vol | Win Rate | Total P&L |
|---|---|---|---|---|
| 2.0+ High | 1 | 2.55 | 100% | +$1.23 |
| 1.3-2.0 Moderate | 2 | 1.36 | 50% | +$6.54 |
| 1.0-1.3 Average | 2 | 1.31 | 50% | +$20.25 |
| <1.0 Low | 1 | 0.95 | 0% | -$7.38 |
Finding: Very low volume (<1.0) associated with loss
- All other volume ranges have 50-100% WR
Anomalies & Data Quality Issues
1. GHOST_CLEANUP Trade (12-16 07:52)
- Issue: Trade opened but never monitored, closed by cleanup system
- Impact: 0 P&L, wasted opportunity
- Related: Bug #77 "Position Manager Never Monitors"
- Prevention: SL Verification System deployed Dec 16, 2025
2. Low Quality Trades Winning
- 3 trades with quality 60 (below typical 80+ threshold)
- 2/3 winners, +$12.88 total
- All are SHORTs in weak ADX conditions
- Hypothesis: Quality filters calibrated for LONGs, not SHORTs
3. Quality 95-99 Tier Failure
- 2 trades: Q95 LONG (-$4.72), Q95 SHORT (ghost cleanup $0)
- Both failed (0% WR)
- Contradicts expected high-quality performance
- Sample size too small - need 5+ more trades
4. SL Exits with Positive P&L
- 6 trades marked exitReason=SL but +$23.28 profit
- Likely partial close scenario (TP1 → runner → SL)
- Action Required: Review database exitReason logic for partial closes
5. Weak Trend Trades (ADX <18)
- 4 trades with ADX 15.4-17.0 (weak trend)
- Flagged as anomalies but 1 winner (+$3.34)
- 3 LOW_QUALITY + WEAK_TREND flags but 2 winners (+$17.06)
- Finding: Weak trend SHORTs are profitable in current market
Trade-by-Trade Breakdown
Winners (4 trades, +$48.28)
-
12-16 01:30 SHORT Q80 → +$33.01 (9.62%)
- RSI 36.5, ADX 26, SL exit
- Anomaly: Hit SL but profitable
- Held 89 min
-
12-15 15:02 SHORT Q60 → +$15.83 (0.78%)
- RSI 32.3, ADX 15.9, TP2 exit
- LOW_QUALITY + WEAK_TREND but won
- Held 78 min
-
12-10 19:35 LONG Q100 → +$23.63 (1.19%)
- RSI 63.0, ADX 24.8, SL exit
- Anomaly: Hit SL but profitable
- Held 65 min
-
12-11 19:12 LONG Q85 → +$3.34 (0.35%)
- RSI 63.3, ADX 15.4, TP1 exit
- WEAK_TREND but won
- Held 48 min
Losers (7 trades, -$4.22)
-
12-15 02:19 LONG Q75 → -$17.09 (0.78%)
- RSI 73.5, ADX 23.4, SL exit
- OVERBOUGHT_LONG flag
- Worst trade, held 44 min
-
12-12 13:07 LONG Q75 → -$7.38 (0.77%)
- RSI 55.0, ADX 17.0, SL exit
- WEAK_TREND flag
- Held 105 min
-
12-10 04:55 LONG Q95 → -$4.72 (0.20%)
- RSI 59.5, ADX 23.9, SL exit
- High quality but failed
- Held 35 min
-
12-16 03:34 SHORT Q60 → -$4.18 (0.84%)
- RSI 39.1, ADX 15.8, SL exit
- LOW_QUALITY + WEAK_TREND
- Held 28 min
-
12-14 10:37 SHORT Q105 → +$0.38 (0.37%)
- RSI 38.8, ADX 34.2, TP1 exit
- Winner but smallest
- Held 23 min
-
12-10 22:37 SHORT Q85 → +$0.03 (0.04%)
- RSI 44.0, ADX 22.4, manual exit
- Minimal profit, manual intervention
- Held <1 min
-
12-15 16:21 SHORT Q60 → +$1.23 (0.06%)
- RSI 32.3, ADX 15.9, TP2 exit
- LOW_QUALITY + WEAK_TREND but won
- Held 134 min
Actionable Recommendations
🔴 CRITICAL - Implement Immediately
1. Block Overbought LONGs (RSI >70)
if (direction === 'long' && rsi > 70) {
score -= 60 // Severe penalty
blockReason = 'OVERBOUGHT_LONG_RSI'
}
Impact: Would have blocked -$17.09 worst loss Confidence: HIGH (clear pattern)
2. Favor SHORT Entries in Current Market
- SHORTs have 2× win rate vs LONGs (42.9% vs 20%)
- SHORTs have 15× better avg P&L ($6.62 vs -$0.44)
- Consider raising SHORT threshold from 95 to 85
- Consider raising LONG threshold from 90 to 95
// Current thresholds
MIN_SIGNAL_QUALITY_SCORE_LONG=90
MIN_SIGNAL_QUALITY_SCORE_SHORT=95
// Recommended adjustment
MIN_SIGNAL_QUALITY_SCORE_LONG=95 // Stricter for underperforming LONGs
MIN_SIGNAL_QUALITY_SCORE_SHORT=85 // More permissive for winning SHORTs
3. Fix Exit Reason Logic for Partial Closes
- 6 trades marked SL but have positive P&L
- Likely TP1 → runner → SL sequence
- Database should track: "TP1_PARTIAL" for first exit, then "RUNNER_SL" for final
- Code location:
lib/trading/position-manager.tsexit reason detection
4. Investigate GHOST_CLEANUP Bug
- Trade 12-16 07:52 was never monitored
- Related to Bug #77 "Position Manager Never Monitors"
- SL Verification System deployed Dec 16 - verify it's working
- Priority: HIGH - prevents capital at risk
⚠️ HIGH - Implement After More Data
5. RSI 60-70 Preference for LONGs
- 2/2 trades in this zone won (+$26.97)
- 0/2 trades in 50-60 zone won (-$12.10)
- Add bonus points for RSI 60-70 LONGs
if (direction === 'long' && rsi >= 60 && rsi <= 70) {
score += 10 // Sweet spot bonus
}
Confidence: MEDIUM (only 2 samples)
6. SHORT RSI 30-40 Confirmation
- 6/6 trades in this zone, 3 winners (+$46.27)
- 50% WR but positive P&L
- Appears to be ideal SHORT entry zone
- Action: Collect 5+ more samples to confirm
🟡 MEDIUM - Research Questions
7. Quality Score Calibration for SHORTs
- Quality <75 SHORTs have 66.7% WR
- Quality 60 SHORTs winning despite LOW_QUALITY flag
- Hypothesis: ADX/ATR/volume weights different for SHORT vs LONG
- Action: Analyze quality components separately by direction
8. ADX Threshold Validation
- Weak ADX (<20) has 25% WR but positive P&L
- All weak ADX SHORTs won in recent trades
- May need direction-specific ADX thresholds
- Action: Collect 10+ more trades per ADX tier
9. Price Position Paradox (LONGs)
- LONGs at top (80-100%) = 50% WR, +$19.29
- LONGs at middle (50-80%) = 0% WR, -$19.48
- Counterintuitive - need more data
- Action: Collect 5+ more LONGs per position zone
Statistical Validity Assessment
Sample Sizes by Category
| Category | Current | Minimum | Status |
|---|---|---|---|
| Total Trades | 11 | 20 | ❌ TOO SMALL |
| LONG Trades | 5 | 10 | ❌ TOO SMALL |
| SHORT Trades | 7 | 10 | ⚠️ BORDERLINE |
| Quality Tiers | 1-3 per | 5 per | ❌ TOO SMALL |
| RSI Zones | 1-6 per | 5 per | ⚠️ MIXED |
| ADX Tiers | 1-6 per | 5 per | ⚠️ MIXED |
Confidence Levels by Finding
| Finding | Confidence | Reason |
|---|---|---|
| SHORTs outperform LONGs | HIGH | 7 vs 5 samples, clear trend |
| RSI >70 LONG disaster | HIGH | Worst single trade, clear overbought |
| SHORT RSI 30-40 sweet spot | MEDIUM | 6 samples, 50% WR |
| LONG RSI 60-70 sweet spot | LOW | Only 2 samples |
| Quality <75 paradox | LOW | Only 3 samples, all SHORTs |
| SL exits profitable | HIGH | 6 samples, clear pattern |
Next Steps
Phase 1: Immediate Changes (Today)
- ✅ Add RSI >70 penalty for LONGs (-60 points)
- ✅ Consider adjusting quality thresholds (LONG 90→95, SHORT 95→85)
- ✅ Verify GHOST_CLEANUP bug fix (SL Verification System)
- ✅ Review exit reason logic for partial closes
Phase 2: Data Collection (Next 7-10 Days)
- Target: 10+ more trades (reach 20+ total)
- Verify SHORT RSI 30-40 pattern holds
- Validate LONG RSI 60-70 pattern with more samples
- Check if quality <75 SHORT wins continue
Phase 3: Analysis & Optimization (After 20+ Trades)
- Recalculate quality score components by direction
- Optimize ADX thresholds separately for LONG/SHORT
- Validate price position patterns with larger sample
- Review volume impact correlation
Technical Notes
Database: PostgreSQL Trade table
Query Date: December 16, 2025
Indicator Version: v11 (all filters functional)
Date Range: December 10-16, 2025 (6 days)
Excluded: isTestTrade=true, GHOST_CLEANUP for most analyses
Known Issues:
- Bug #77: GHOST_CLEANUP trade indicates Position Manager monitoring failure
- Exit reason anomaly: SL exits with positive P&L (partial close scenario)
- Quality score paradox: Low quality SHORTs winning
Related Documents:
docs/V11_ANALYSIS_DEC15_2025.md(initial 7-trade analysis)docs/V11_INDICATOR_GUIDE.md(indicator documentation)docs/COMMON_PITFALLS.md(Bug #77 Position Manager Never Monitors).github/copilot-instructions.md(Bug #76 Silent SL Placement Failure)
Appendix: Raw Trade Data
All v11 Trades (Sorted by Entry Time DESC)
| Entry Time | Dir | Q | ADX | RSI | Pos% | Vol | Exit | P&L | Hold |
|---|---|---|---|---|---|---|---|---|---|
| 12-16 07:52 | SHORT | 95 | 20.8 | 34.9 | - | - | GHOST | $0.00 | - |
| 12-16 03:34 | SHORT | 60 | 15.8 | 39.1 | - | - | SL | -$4.18 | 28m |
| 12-16 01:30 | SHORT | 80 | 26.0 | 36.5 | - | - | SL | +$33.01 | 89m |
| 12-15 16:21 | SHORT | 60 | 15.9 | 32.3 | 15.6 | 2.55 | TP2 | +$1.23 | 134m |
| 12-15 15:02 | SHORT | 60 | 15.9 | 32.3 | 15.6 | 2.55 | TP2 | +$15.83 | 78m |
| 12-15 02:19 | LONG | 75 | 23.4 | 73.5 | 94.4 | 1.41 | SL | -$17.09 | 44m |
| 12-14 10:37 | SHORT | 105 | 34.2 | 38.8 | - | - | TP1 | +$0.38 | 23m |
| 12-12 13:07 | LONG | 75 | 17.0 | 55.0 | 54.2 | 0.95 | SL | -$7.38 | 105m |
| 12-11 19:12 | LONG | 85 | 15.4 | 63.3 | 80.3 | 1.31 | TP1 | +$3.34 | 48m |
| 12-10 22:37 | SHORT | 85 | 22.4 | 44.0 | - | - | manual | +$0.03 | <1m |
| 12-10 19:35 | LONG | 100 | 24.8 | 63.0 | 93.8 | 1.30 | SL | +$23.63 | 65m |
| 12-10 04:55 | LONG | 95 | 23.9 | 59.5 | 63.5 | 1.42 | SL | -$4.72 | 35m |
Total: 11 trades (excluding 1 ghost), +$44.06 P&L, 36.4% win rate
Analysis complete. Waiting for 10+ more trades to reach statistical significance.