Changes: - Updated roadmap status from 'planned' to 'complete' - Added checkmarks for implemented features: ✅ Position Manager tracks MFE/MAE every 2 seconds ✅ Database stores maxFavorableExcursion and maxAdverseExcursion ✅ Analytics dashboard displays avg MFE/MAE per indicator version ✅ Version comparison shows MFE/MAE trends ✅ Optimization API analyzes MFE vs TP1 rate - Added future enhancement note for distribution charts Evidence: - Position Manager: lib/trading/position-manager.ts (lines 53-55, 140, 1127+) - Database: Trade model with MFE/MAE fields - Analytics: app/analytics/page.tsx (lines 77-78, 566-579, 654-655) - Optimization API: app/api/optimization/analyze/route.ts User Request: 'i think we already have this implemented?' Confirmed: MAE/MFE tracking is fully operational
299 lines
12 KiB
TypeScript
299 lines
12 KiB
TypeScript
import { NextResponse } from 'next/server'
|
||
|
||
export async function GET() {
|
||
const roadmap = [
|
||
// Phase 1: Foundation (COMPLETE)
|
||
{
|
||
phase: 'Phase 1',
|
||
title: 'Core Trading System',
|
||
status: 'complete',
|
||
description: 'Drift Protocol integration, Position Manager, TP/SL automation, database tracking',
|
||
impact: 'Fully automated trading with position monitoring and exit management',
|
||
completed: 'Nov 2024',
|
||
items: [
|
||
'Drift SDK integration with transaction confirmation',
|
||
'Position Manager with 2-second monitoring loop',
|
||
'Database persistence with Prisma ORM',
|
||
'On-chain TP/SL order placement',
|
||
'Telegram notifications for trade events',
|
||
'n8n webhook integration for TradingView signals'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 1',
|
||
title: 'TP2-as-Runner System',
|
||
status: 'complete',
|
||
description: 'Configurable TP1 (60% default) + Runner (40%) with trailing stop',
|
||
impact: '5x larger runner position capturing extended trend moves',
|
||
completed: 'Nov 11, 2025',
|
||
items: [
|
||
'Configurable TP1 close percentage (TAKE_PROFIT_1_SIZE_PERCENT)',
|
||
'TP2 activates trailing stop instead of closing',
|
||
'Dynamic runner size calculation (100% - TP1%)',
|
||
'ATR-based trailing stop with profit acceleration',
|
||
'Settings UI shows dynamic runner percentage'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 1',
|
||
title: 'ATR-Based Risk Management',
|
||
status: 'complete',
|
||
description: 'Regime-agnostic TP/SL system adapting to market volatility',
|
||
impact: 'Auto-adjusts targets: bull markets expand, bear markets tighten',
|
||
completed: 'Nov 17, 2025',
|
||
items: [
|
||
'ATR × multipliers for TP1 (2.0x), TP2 (4.0x), SL (3.0x)',
|
||
'Safety bounds prevent extreme targets',
|
||
'Asset-agnostic (SOL vs BTC different ATR)',
|
||
'Fallback to fixed % when ATR unavailable',
|
||
'TradingView integration passes ATR field'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 1',
|
||
title: 'ADX-Based Adaptive Systems',
|
||
status: 'complete',
|
||
description: 'Trend-strength aware runner SL and trailing stop multipliers',
|
||
impact: 'Strong trends get wider trail, weak trends protect capital',
|
||
completed: 'Nov 19, 2025',
|
||
items: [
|
||
'Runner SL: ADX <20 = breakeven, 20-25 = -0.3%, >25 = -0.55%',
|
||
'Trailing stop multipliers: ADX >30 = 1.5×, 25-30 = 1.25×, <25 = 1.0×',
|
||
'Profit acceleration: >2% profit adds 1.3× multiplier',
|
||
'Backward compatible (trades without ADX use base values)',
|
||
'Graduated approach prevents binary decisions'
|
||
]
|
||
},
|
||
|
||
// Phase 2: Quality Filtering (COMPLETE)
|
||
{
|
||
phase: 'Phase 2',
|
||
title: 'Signal Quality Scoring System',
|
||
status: 'complete',
|
||
description: 'Multi-factor signal evaluation (ATR, ADX, RSI, Volume, Price Position)',
|
||
impact: '0-100 score filtering low-quality setups, data-driven optimization',
|
||
completed: 'Nov 11, 2025',
|
||
items: [
|
||
'Timeframe-aware scoring (5min vs daily thresholds)',
|
||
'Component breakdown stored in database',
|
||
'BlockedSignal table tracks filtered signals',
|
||
'Version tracking for scoring algorithm evolution',
|
||
'Anti-chop filter (-20 points for extreme sideways)'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 2',
|
||
title: 'Direction-Specific Quality Thresholds',
|
||
status: 'complete',
|
||
description: 'LONG 90+, SHORT 95+ based on historical win rate analysis',
|
||
impact: 'Blocks $847 in losses while missing only $210 in wins (+$637 net)',
|
||
completed: 'Nov 23, 2025',
|
||
items: [
|
||
'Historical analysis: Quality 90-94 shorts = 28.6% WR (-$553.76)',
|
||
'Historical analysis: Quality 90-94 longs = 71.4% WR (+$44.77)',
|
||
'Direction-specific ENV variables',
|
||
'Top 2 biggest losses (-$524.97) blocked by 95+ threshold',
|
||
'3:1 loss avoidance ratio validated (Nov 24 analysis)'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 2',
|
||
title: 'Adaptive Leverage System',
|
||
status: 'complete',
|
||
description: 'Quality-based position sizing (95+ = 15x, 90-94 = 10x)',
|
||
impact: 'Risk-adjusted positions: borderline signals get 33% less exposure',
|
||
completed: 'Nov 24, 2025',
|
||
items: [
|
||
'Quality threshold at 95 (configurable)',
|
||
'High quality: 15x leverage, Low quality: 10x leverage',
|
||
'Early quality calculation before position sizing',
|
||
'Logging shows adaptive leverage decisions',
|
||
'ENV configuration: USE_ADAPTIVE_LEVERAGE=true'
|
||
]
|
||
},
|
||
|
||
// Phase 3: Robustness (COMPLETE)
|
||
{
|
||
phase: 'Phase 3',
|
||
title: '5-Layer Database Protection',
|
||
status: 'complete',
|
||
description: 'Persistent logging, retry logic, orphan detection, auto-recovery',
|
||
impact: 'Zero data loss guarantee - all trades tracked even on failures',
|
||
completed: 'Nov 21, 2025',
|
||
items: [
|
||
'Persistent file logger (survives container restarts)',
|
||
'Retry + verification logic (3 attempts with backoff)',
|
||
'Orphan position detection on every startup',
|
||
'Retroactive record creation for missing trades',
|
||
'Telegram alerts for recovered positions'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 3',
|
||
title: 'Ghost Position Protection',
|
||
status: 'complete',
|
||
description: '3-layer ghost detection preventing unmonitored positions',
|
||
impact: 'Self-healing system catches state drift within 5 minutes',
|
||
completed: 'Nov 15, 2025',
|
||
items: [
|
||
'Layer 1: Drift API validation (every 5 minutes)',
|
||
'Layer 2: Death spiral detector (20+ failed close attempts)',
|
||
'Layer 3: Monitoring loop checks (every 40 seconds)',
|
||
'Automatic ghost cleanup with P&L calculation',
|
||
'No manual intervention required'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 3',
|
||
title: 'Rate Limit Handling',
|
||
status: 'complete',
|
||
description: 'Exponential backoff retry logic for Solana RPC operations',
|
||
impact: '99% of transient failures auto-recover, prevents missed trades',
|
||
completed: 'Nov 14, 2025',
|
||
items: [
|
||
'Retry with exponential backoff (5s → 10s → 20s)',
|
||
'Applies to all order operations (open, close, cancel)',
|
||
'Database logging of rate limit events',
|
||
'Analytics endpoint for monitoring patterns',
|
||
'Position Manager keeps monitoring on 429 errors'
|
||
]
|
||
},
|
||
|
||
// Phase 4: Data Collection (IN PROGRESS)
|
||
{
|
||
phase: 'Phase 4',
|
||
title: 'Multi-Timeframe Analysis',
|
||
status: 'in-progress',
|
||
description: 'Parallel data collection: 5min (execute) vs 15min/1H/4H/Daily (track)',
|
||
impact: 'Determine which timeframe has best win rate for live trading',
|
||
items: [
|
||
'BlockedSignalTracker monitors non-5min signals',
|
||
'Tracks price movements at 1/5/15/30 minute intervals',
|
||
'Detects if TP1/TP2/SL would have been hit',
|
||
'Records MFE/MAE for 30-minute window',
|
||
'Target: 50+ signals per timeframe before analysis'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 4',
|
||
title: 'Quality Threshold Validation',
|
||
status: 'in-progress',
|
||
description: 'Track quality-blocked signals to validate 90/95 thresholds',
|
||
impact: 'Data-driven proof if thresholds filter winners or losers',
|
||
items: [
|
||
'BlockedSignalTracker monitors QUALITY_SCORE_TOO_LOW signals',
|
||
'Same price tracking as multi-timeframe analysis',
|
||
'Target: 20-30 blocked signals over 2-4 weeks',
|
||
'Compare win rate vs executed trades in same range',
|
||
'Adjust thresholds if blocked signals >50% win rate'
|
||
]
|
||
},
|
||
|
||
// Phase 5: Enhancement (PLANNED)
|
||
{
|
||
phase: 'Phase 5',
|
||
title: 'Stop Hunt Revenge System',
|
||
status: 'complete',
|
||
description: 'Auto re-entry after high-quality stop-outs when price reverses',
|
||
impact: 'Capture reversals after stop hunts on quality 85+ signals',
|
||
completed: 'Nov 20, 2025',
|
||
items: [
|
||
'4-hour revenge window monitoring',
|
||
'Quality 85+ signals eligible',
|
||
'1.0× position size (same as original)',
|
||
'One revenge per stop hunt',
|
||
'30-second price checks for active stop hunts',
|
||
'Database tracking with StopHunt table'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 5',
|
||
title: 'MAE/MFE Analysis Dashboard',
|
||
status: 'complete',
|
||
description: 'Visualize Maximum Adverse/Favorable Excursion for TP/SL optimization',
|
||
impact: 'Data-driven adjustment of target distances based on actual price action',
|
||
items: [
|
||
'✅ Position Manager tracks MFE/MAE every 2 seconds',
|
||
'✅ Database stores maxFavorableExcursion and maxAdverseExcursion',
|
||
'✅ Analytics dashboard displays avg MFE/MAE per indicator version',
|
||
'✅ Version comparison shows MFE/MAE trends',
|
||
'✅ Optimization API analyzes MFE vs TP1 rate',
|
||
'⏳ Future: Distribution charts for optimal target identification'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 5',
|
||
title: 'Market Regime Detection',
|
||
status: 'planned',
|
||
description: 'Dynamic quality threshold adjustment based on ADX trends',
|
||
impact: 'Adapt to market conditions: raise thresholds in chop, lower in trends',
|
||
items: [
|
||
'Multi-timeframe ADX analysis (1H + 4H)',
|
||
'If ADX <20 on both: raise all thresholds +5 points',
|
||
'If ADX >25 on both: lower thresholds -5 points',
|
||
'Separate filters for range-bound vs trending markets',
|
||
'Telegram alerts when regime changes detected'
|
||
]
|
||
},
|
||
|
||
// Phase 6: Scaling (FUTURE)
|
||
{
|
||
phase: 'Phase 6',
|
||
title: 'Multi-Symbol Support',
|
||
status: 'planned',
|
||
description: 'Trade SOL, ETH, BTC simultaneously with independent configs',
|
||
impact: 'Diversification reduces single-asset risk, 3× opportunity frequency',
|
||
items: [
|
||
'Per-symbol enable/disable toggles',
|
||
'Independent position sizing and leverage',
|
||
'Separate quality thresholds per symbol',
|
||
'Symbol-specific cooldown periods',
|
||
'Drift market config for each asset'
|
||
]
|
||
},
|
||
{
|
||
phase: 'Phase 6',
|
||
title: 'High Availability Setup',
|
||
status: 'planned',
|
||
description: 'Failover system with health checks and automatic recovery',
|
||
impact: '99.9% uptime guarantee, no missed trades during restarts',
|
||
items: [
|
||
'Primary + backup bot instances',
|
||
'Database replication (primary/replica)',
|
||
'Health check monitoring (60-second intervals)',
|
||
'Automatic failover on primary failure',
|
||
'Telegram alerts for failover events',
|
||
'Systemd service for auto-restart'
|
||
]
|
||
},
|
||
|
||
// Phase 7: Intelligence (DISTANT FUTURE)
|
||
{
|
||
phase: 'Phase 7',
|
||
title: 'ML-Based Quality Scoring',
|
||
status: 'planned',
|
||
description: 'Machine learning model optimizes component weights based on outcomes',
|
||
impact: 'Automatic adaptation to changing market conditions',
|
||
items: [
|
||
'Collect 500+ trades with outcomes for training data',
|
||
'Feature engineering: ADX, ATR, RSI, Volume, Price Position',
|
||
'Train gradient boosting model (XGBoost/LightGBM)',
|
||
'Predict win probability instead of fixed score',
|
||
'Retrain monthly on new data',
|
||
'A/B test ML scores vs rule-based scores'
|
||
]
|
||
},
|
||
]
|
||
|
||
return NextResponse.json({
|
||
success: true,
|
||
roadmap,
|
||
stats: {
|
||
total: roadmap.length,
|
||
complete: roadmap.filter(item => item.status === 'complete').length,
|
||
inProgress: roadmap.filter(item => item.status === 'in-progress').length,
|
||
planned: roadmap.filter(item => item.status === 'planned').length,
|
||
}
|
||
})
|
||
}
|