Changes include: - Updated architecture documentation - Enhanced module definitions (OQI-001 to OQI-008) - ML integration documentation updates - Trading strategies documentation - Orchestration and inventory updates - Docker configuration updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
16 KiB
| id | title | type | status | priority | epic | project | version | created_date | updated_date |
|---|---|---|---|---|---|---|---|---|---|
| RF-TRD-008 | Métricas y Estadísticas | Requirement | Done | Alta | OQI-003 | trading-platform | 1.0.0 | 2025-12-05 | 2026-01-04 |
RF-TRD-008: Métricas y Estadísticas
Versión: 1.0.0 Fecha: 2025-12-05 Épica: OQI-003 - Trading y Charts Prioridad: P2 Story Points: 8
Descripción
El sistema debe proporcionar un dashboard completo de métricas y estadísticas de trading que permita a los usuarios evaluar su rendimiento, identificar fortalezas y debilidades, y tomar decisiones informadas para mejorar sus estrategias.
Requisitos Funcionales
RF-TRD-008.1: Dashboard Principal
El sistema debe mostrar un dashboard con secciones:
1. Performance Overview (Resumen de rendimiento) 2. Win Rate Analysis (Análisis de tasa de acierto) 3. Risk Metrics (Métricas de riesgo) 4. Time Analysis (Análisis temporal) 5. Symbol Performance (Rendimiento por símbolo) 6. Strategy Analysis (Análisis de estrategias)
RF-TRD-008.2: Performance Overview
Métricas principales:
| Métrica | Descripción | Cálculo |
|---|---|---|
| Total PnL | Ganancia/pérdida total | Suma de todos los PnL realizados |
| Total PnL % | Porcentaje de ganancia | (Total PnL / Balance inicial) × 100 |
| Total Trades | Número de trades | Count de trades cerrados |
| Win Rate | Tasa de acierto | (Winning trades / Total trades) × 100 |
| Profit Factor | Factor de beneficio | Gross profit / Gross loss |
| Sharpe Ratio | Rendimiento ajustado por riesgo | (Avg return - Risk free) / Std dev |
| Max Drawdown | Pérdida máxima desde pico | Max (Peak - Trough) |
| Current Streak | Racha actual | Victorias o derrotas consecutivas |
Visualización:
- Gráfico de equity curve (evolución del balance)
- Comparación vs Buy & Hold de BTC
- Heatmap de rendimiento mensual
RF-TRD-008.3: Win Rate Analysis
Desglose detallado:
interface WinRateAnalysis {
overall: {
winRate: number;
winningTrades: number;
losingTrades: number;
breakEvenTrades: number;
};
bySymbol: {
symbol: string;
winRate: number;
trades: number;
}[];
byTimeOfDay: {
hour: number;
winRate: number;
trades: number;
}[];
byDayOfWeek: {
day: string;
winRate: number;
trades: number;
}[];
byDuration: {
range: string; // "< 1h", "1-4h", "4-24h", "> 24h"
winRate: number;
trades: number;
}[];
}
Visualizaciones:
- Gráfico de barras: Win rate por símbolo
- Heatmap: Win rate por hora del día y día de semana
- Distribución: Win rate por duración de trade
RF-TRD-008.4: Risk Metrics
Métricas de gestión de riesgo:
| Métrica | Descripción | Target |
|---|---|---|
| Avg Risk per Trade | Riesgo promedio por trade | < 2% del balance |
| Max Risk per Trade | Riesgo máximo tomado | < 5% del balance |
| Risk/Reward Ratio | Ratio riesgo/recompensa | > 1:2 |
| Kelly Criterion | Tamaño óptimo de posición | Calculado |
| Consecutive Losses | Pérdidas máximas seguidas | Monitorear |
| Recovery Factor | Capacidad de recuperación | PnL / Max Drawdown |
| Exposure | Exposición total al mercado | < 80% del balance |
Cálculos específicos:
interface RiskMetrics {
avgRiskPerTrade: number; // Avg (entry - stopLoss) × quantity
maxRiskPerTrade: number; // Max riesgo tomado
avgRiskRewardRatio: number; // Avg (TP - entry) / (entry - SL)
kellyCriterion: number; // (Win% × AvgWin - Loss% × AvgLoss) / AvgWin
maxConsecutiveLosses: number; // Máximo de pérdidas seguidas
maxConsecutiveWins: number; // Máximo de victorias seguidas
recoveryFactor: number; // Total PnL / Max Drawdown
currentExposure: number; // Suma de margin usado / balance
}
RF-TRD-008.5: Time Analysis
Análisis temporal del trading:
Horarios de trading:
- Trades por hora del día (histogram)
- Performance por hora del día
- Mejores y peores horas
Días de la semana:
- Trades por día de semana
- Performance por día
- Mejores y peores días
Duración de trades:
- Distribución de duración
- Correlación duración vs PnL
- Trades más rápidos vs más lentos
Tendencias temporales:
- Win rate tendencia (última semana, mes, trimestre)
- PnL tendencia
- Volumen de trading tendencia
RF-TRD-008.6: Symbol Performance
Análisis por símbolo:
| Símbolo | Trades | Win Rate | Total PnL | Avg PnL | Best | Worst |
|---|---|---|---|---|---|---|
| BTCUSDT | 45 | 62.2% | +$1,234 | +$27.42 | +$456 | -$234 |
| ETHUSDT | 30 | 56.7% | +$567 | +$18.90 | +$234 | -$156 |
| BNBUSDT | 20 | 45.0% | -$123 | -$6.15 | +$89 | -$178 |
Métricas adicionales por símbolo:
- Mejor racha de victorias
- Peor racha de derrotas
- Duración promedio
- Volumen total operado
- Sharpe ratio individual
- Beta (correlación con BTC)
RF-TRD-008.7: Strategy Analysis
Para usuarios avanzados con tags de estrategia:
interface StrategyPerformance {
strategyTag: string;
trades: number;
winRate: number;
totalPnl: number;
avgPnl: number;
profitFactor: number;
sharpeRatio: number;
maxDrawdown: number;
}
Comparación de estrategias:
- Tabla comparativa de todas las estrategias
- Mejor estrategia por métrica
- Evolución de cada estrategia en el tiempo
RF-TRD-008.8: Advanced Analytics
Métricas avanzadas:
Calidad de ejecución:
- Slippage promedio vs esperado
- Fill rate de órdenes limit
- Tiempo promedio de ejecución
Eficiencia:
- Efficiency promedio (PnL / MFE)
- % de trades que alcanzaron MFE antes de cerrar
- % de trades cerrados prematuramente
Psicología de trading:
- Revenge trading detection (trades después de pérdidas)
- Overtrading detection (muchos trades seguidos)
- FOMO detection (entries en picos de precio)
RF-TRD-008.9: Comparaciones y Benchmarks
El sistema debe permitir comparar:
Con uno mismo:
- Rendimiento actual vs último mes
- Rendimiento actual vs mejor mes
- Métricas actuales vs promedio histórico
Con mercado:
- PnL vs Buy & Hold BTC
- PnL vs Buy & Hold ETH
- Sharpe ratio vs mercado
Visualización:
- Gráficos de líneas comparativos
- Tablas de métricas lado a lado
- % de diferencia destacado
RF-TRD-008.10: Filtros Temporales
Todas las métricas deben calcularse para:
- Hoy
- Última semana
- Último mes
- Últimos 3 meses
- Últimos 6 meses
- Último año
- Todo el tiempo
- Rango personalizado
RF-TRD-008.11: Exportación de Reportes
El sistema debe permitir exportar:
PDF Report:
- Resumen ejecutivo
- Gráficos principales
- Tablas de métricas
- Recommendations
Excel Spreadsheet:
- Múltiples hojas con métricas
- Datos raw para análisis custom
- Gráficos y tablas dinámicas
JSON:
- Todas las métricas en formato estructurado
- Para análisis programático avanzado
Datos de Salida
Dashboard Completo
interface TradingDashboard {
performance: PerformanceMetrics;
winRate: WinRateAnalysis;
risk: RiskMetrics;
time: TimeAnalysis;
symbols: SymbolPerformance[];
strategies: StrategyPerformance[];
advanced: AdvancedAnalytics;
comparison: ComparisonMetrics;
}
interface PerformanceMetrics {
totalPnl: number;
totalPnlPercent: number;
totalTrades: number;
winRate: number;
profitFactor: number;
sharpeRatio: number;
maxDrawdown: number;
maxDrawdownPercent: number;
currentStreak: {
type: 'winning' | 'losing';
count: number;
};
equityCurve: {
date: string;
balance: number;
pnl: number;
}[];
}
interface AdvancedAnalytics {
avgEfficiency: number;
avgSlippage: number;
limitFillRate: number;
avgExecutionTime: number;
// Detecciones
revengeTradingScore: number; // 0-100
overtradingScore: number; // 0-100
fomoScore: number; // 0-100
// Recomendaciones
recommendations: string[];
}
Reglas de Negocio
-
Cálculos:
- Todas las métricas se calculan en tiempo real
- Caché de métricas pesadas por 5 minutos
- Recalcular al cerrar nuevo trade
-
Mínimos:
- Requiere mínimo 10 trades para métricas confiables
- Sharpe ratio requiere mínimo 30 trades
- Comparaciones requieren datos de ambos períodos
-
Valores por defecto:
- Risk-free rate: 4% anual (para Sharpe)
- Período por defecto: Último mes
- Min trades para mostrar símbolo: 5
-
Privacidad:
- Solo el usuario ve sus métricas
- No se comparten métricas entre usuarios (MVP)
- Leaderboard opcional en futuro
Criterios de Aceptación
Escenario: Usuario ve dashboard de métricas
DADO que el usuario tiene 50 trades cerrados
CUANDO accede al dashboard de métricas
ENTONCES ve todas las secciones principales
Y todas las métricas están calculadas
Y los gráficos se renderizan correctamente
Escenario: Equity curve muestra evolución
DADO que el usuario tiene balance inicial $10,000
Y realizó 30 trades con balance final $11,500
CUANDO ve la equity curve
ENTONCES el gráfico empieza en $10,000
Y termina en $11,500
Y muestra cada trade como punto
Y se puede ver la línea de Buy & Hold BTC comparativa
Escenario: Win rate por símbolo
DADO que el usuario operó 3 símbolos
CUANDO ve análisis por símbolo
ENTONCES muestra tabla ordenada por PnL
Y cada símbolo tiene win rate calculado
Y se destacan mejores y peores símbolos
Escenario: Detección de overtrading
DADO que el usuario hizo 20 trades en 1 hora
CUANDO se calculan analytics avanzadas
ENTONCES overtrading score es alto (> 70)
Y aparece recomendación "Considere reducir frecuencia de trading"
Escenario: Exportar reporte PDF
DADO que el usuario está en dashboard
CUANDO hace click en "Exportar PDF"
ENTONCES se genera PDF con todas las métricas
Y incluye gráficos principales
Y tiene formato profesional
Escenario: Filtro temporal afecta métricas
DADO que el usuario selecciona "Última semana"
CUANDO las métricas se recalculan
ENTONCES solo considera trades de últimos 7 días
Y equity curve muestra solo ese período
Y comparación es vs semana anterior
Interfaz de Usuario
┌─────────────────────────────────────────────────────────┐
│ TRADING ANALYTICS DASHBOARD │
├─────────────────────────────────────────────────────────┤
│ Period: [Last Month ▼] [Export PDF ▼] │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ PERFORMANCE OVERVIEW │ │
│ ├─────────────────────────────────────────────────┤ │
│ │ Total PnL Win Rate Profit Factor │ │
│ │ +$3,456 (34%) 58.6% 2.45 │ │
│ │ │ │
│ │ Sharpe Ratio Max Drawdown Total Trades │ │
│ │ 1.85 -$456 (4.5%) 145 │ │
│ │ │ │
│ │ [Equity Curve Chart] │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌──────────────────────────┐ │
│ │ WIN RATE ANALYSIS │ │ RISK METRICS │ │
│ ├──────────────────────┤ ├──────────────────────────┤ │
│ │ Overall: 58.6% │ │ Avg Risk: 1.8% │ │
│ │ By Symbol: │ │ Max Risk: 4.2% │ │
│ │ BTC: 62% │ │ R:R Ratio: 1:2.3 │ │
│ │ ETH: 57% │ │ Kelly: 2.4% │ │
│ │ BNB: 45% │ │ Max DD: -4.5% │ │
│ │ │ │ │ │
│ │ [Win Rate Chart] │ │ [Risk Distribution] │ │
│ └──────────────────────┘ └──────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ SYMBOL PERFORMANCE │ │
│ ├─────────────────────────────────────────────────┤ │
│ │ Symbol │Trades│Win Rate│ PnL │Avg PnL│Best │ │
│ │─────────┼──────┼────────┼───────┼───────┼─────│ │
│ │ BTC │ 45 │ 62% │+$1,234│ +$27 │+$456│ │
│ │ ETH │ 30 │ 57% │ +$567 │ +$19 │+$234│ │
│ │ BNB │ 20 │ 45% │ -$123 │ -$6 │ +$89│ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Dependencias
- RF-TRD-007: Historial de Trades (fuente de datos)
- RF-TRD-006: Gestión de Posiciones (datos de riesgo)
- Chart.js o similar para gráficos
- Biblioteca de estadísticas (ej: mathjs)
Notas Técnicas
- Cachear métricas agregadas por 5 minutos
- Usar queries optimizadas con índices
- Implementar lazy loading para gráficos
- Generar PDFs en backend (puppeteer)
- Usar Web Workers para cálculos pesados
- Implementar virtualización en tablas largas
- Guardar snapshots de métricas mensuales
- Considerar materializar equity curve para performance
Fórmulas Importantes
Sharpe Ratio
Sharpe = (Avg Return - Risk Free Rate) / Std Dev of Returns
Profit Factor
Profit Factor = Gross Profit / Gross Loss
Max Drawdown
Max Drawdown = Max(Peak Value - Trough Value) / Peak Value
Kelly Criterion
Kelly % = (Win% × Avg Win - Loss% × Avg Loss) / Avg Win
Recovery Factor
Recovery Factor = Net Profit / Max Drawdown
Expectancy
Expectancy = (Win% × Avg Win) - (Loss% × Avg Loss)
Métricas a Trackear del Sistema
- Tiempo de cálculo de métricas
- Uso de caché (hit rate)
- Exportaciones de reportes por día
- Métricas más vistas
- Tiempo en dashboard
- Filtros más usados