← Volver al índice · 10_pro_metrics

Métricas profesionales

Sharpe, Sortino, Calmar, MaxDrawdown, Profit Factor, Expectancy, hit-rate por bucket de confianza.

Section 12 is rendered live with real values. Final summary report:


Reporte fase 10_pro_metrics

Drift resuelto

Producción real de tokenstree.es no está en 212.227.107.245 (como decía CLAUDE.md) sino en 213.165.80.157 (PID 741, /opt/trading-web/venv/bin/python3 -u /opt/trading-web/app.py, gestionado por systemd unit trading-web.service puerto 7070). El servidor de la documentación tiene una copia desincronizada del repo. Se trabajó sobre la ruta correcta. Backup dir creado en 213.165.80.157:/opt/backups/trading-web/.

Archivos creados / modificados (en 213.165.80.157)

Acción Path md5
Nuevo /opt/trading-web/metrics_pro.py 547617c9203b7657a43d6260d0a86a9d
Editado /opt/trading-web/daily_report.py 2793cd40cdba9a5dd2353b481386f20d
Backup /opt/backups/trading-web/daily_report.py.20260418-0929.bak 2753f8015afba27489420a35fe2dcc1c (= original)

metrics_pro.py es nuevo (no requiere backup). Funciones expuestas: sharpe_ratio, sortino_ratio, calmar_ratio, max_drawdown, profit_factor, win_rate, expectancy, hit_rate_by_confidence_bucket. Pure-Python (math/statistics/collections). 28 asserts inline en if __name__ == "__main__"PASS en venv local y en /opt/trading-web/venv/bin/python3.

Despliegue y verificación

  • systemctl restart trading-web → arranque OK tras auto-retry (puerto 7070 tardó <15s en liberarse, comportamiento normal del unit con ExecStartPre=fuser -k).
  • POST https://tokenstree.es/api/report/generate{"status":"ok","email_sent":true,"report_length":7221} (HTTP 200).
  • GET / → 200, GET /report → 200.
  • Sección 12 confirmada en HTML renderizado.

Valores publicados en sección 12 (live)

N evaluaciones          : 2000 (ensemble, últimos 30 días)
Sharpe (anualizado, 252): 1.98
Sortino (anualizado)    : 2.97
Calmar                  : 0.55
Max Drawdown            : -63.43%
Profit Factor           : 1.28
Win Rate                : 56.20%
Expectancy / trade      : 0.124%   (proxy ±1% por hit/miss)

Hit rate por bucket de confianza:
  00-30   n=518   62.9%
  30-50   n=1068  59.7%
  50-60   n=0     N/A
  60-70   n=228   51.8%
  70-80   n=0     N/A
  80-100  n=186   22.6%

Hallazgos relevantes

  • Anti-calibración confirmada cuantitativamente: bucket 80-100 con 186 evaluaciones acierta solo 22.6%, mientras 00-30 acierta 62.9%. La señal de máxima confianza está sistemáticamente invertida — invertir las decisiones del modelo en el bucket alto sería una estrategia ganadora.
  • Buckets 50-60 y 70-80 vacíos: el confidence solo toma valores discretos (consistente con el hallazgo de fase 00_audit de "3 valores: 0.0, 33.3, 100.0", aunque ahora también aparecen valores intermedios).
  • MaxDD muy alto (-63%) es coherente con un Sharpe positivo pero rachas largas de losses al usar bet de tamaño fijo sin gestión de riesgo.
  • El proxy de retornos ±1% está documentado en el propio texto del informe (no se infla como "PnL real").