Calibración isotónica
Ajuste PAV sobre la confianza cruda del master_agent para que refleje probabilidad real de acierto.
Resumen fase 20_isotonic_calibration
Estado: OK. Los 3 endpoints (/, /report, /analyze) devuelven 200. /report contiene "Informe Diario" y "13. Calibracion (post-isotonic)".
Archivos
| Acción | Path | md5 |
|---|---|---|
| Nuevo | /opt/trading-web/calibration.py |
21634e714c8aff355970fd437567f5a9 |
| Editado | /opt/trading-web/agents.py |
07996dbdbce93721ef8e04fde293a6fe |
| Editado | /opt/trading-web/daily_report.py |
caa223906c16a34b1522951b95384001 |
| Modelo entrenado | /opt/trading-web/data/calibrator.json |
051ffacf5229200ed3a431e5d76896f5 |
Backups
/opt/backups/trading-web/agents.py.20260418-0938.bak(md5671689425ca583ff782f912d1c0a4528)/opt/backups/trading-web/daily_report.py.20260418-0938.bak(md52793cd40cdba9a5dd2353b481386f20d)
Entrenamiento
- Fuente:
quant_errors JOIN quant_predictions(tablapredictions WHERE evaluated=1sólo tenía 48 filas, se adaptó al data source real con 82 495 muestras — documentado ensource_querydel JSON). - n_samples: 82 495
- Knots (raw_conf → hit_rate):
[(0.0, 0.478), (0.0, 0.487), (14.0, 0.489), (41.8, 0.499), (100.0, 0.510), (100.0, 1.000)](monotonía no decreciente ✔). - Integración en
agents.py:master_agentdevuelveconfidence = _calibrate_confidence(confidence)y preservaraw_confidencepara auditoría. Sólo afecta al flujo nuevo; el histórico de la BD queda intacto.
Comparativa pre/post calibración (últimas 5 000 evaluaciones)
| Bucket | N raw | HR raw | N calib | HR calib |
|---|---|---|---|---|
| 00-30 | 3682 | 58.7% | 0 | N/A |
| 30-50 | 1085 | 55.9% | 4570 | 57.9% |
| 50-60 | 143 | 46.9% | 430 | 51.6% |
| 60-70 | 78 | 37.2% | 0 | N/A |
| 70-80 | 12 | 25.0% | 0 | N/A |
| 80-100 | 0 | N/A | 0 | N/A |
Criterio de éxito bucket 80+ ≥ 70%
NO alcanzable con los datos actuales, documentado en la sección 13 del informe. Razón: el raw signal está anti-calibrado (hit rate decrece con confidence en el histórico). PAV sólo puede producir mapas no-decrecientes, por lo que la calibración correcta colapsa casi todo al entorno del hit rate real global (≈50%) — no "asciende" confidencias altas porque los datos no lo soportan. Para recuperar un bucket 80+ real habría que corregir el generador de confidence en el master_agent o invertir la dirección (fase futura), no el calibrador.