trading-platform/docs/02-definicion-modulos/OQI-003-trading-charts/requerimientos/RF-TRD-008-metricas-estadisticas.md
rckrdmrd a7cca885f0 feat: Major platform documentation and architecture updates
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>
2026-01-07 05:33:35 -06:00

16 KiB
Raw Permalink Blame History

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

  1. Cálculos:

    • Todas las métricas se calculan en tiempo real
    • Caché de métricas pesadas por 5 minutos
    • Recalcular al cerrar nuevo trade
  2. 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
  3. Valores por defecto:

    • Risk-free rate: 4% anual (para Sharpe)
    • Período por defecto: Último mes
    • Min trades para mostrar símbolo: 5
  4. 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

Referencias