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 conExecStartPre=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
confidencesolo toma valores discretos (consistente con el hallazgo de fase00_auditde "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").