PaPP v2 Modello: calibrazione rev (isotonic) + curva precisione/copertura + soglia operativa
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
f4ec58440a
commit
afcae4fbf7
@@ -99,12 +99,15 @@ Modello/
|
||||
├── config_mr.yaml parametri del modello di mean-reversion
|
||||
├── src/
|
||||
│ ├── mr_labeling.py costruzione dei 3 target + maschere
|
||||
│ └── mr_train.py pool + walk-forward + LOSO + modelli finali
|
||||
│ ├── mr_train.py pool + walk-forward + LOSO + modelli finali
|
||||
│ └── mr_calibrate.py calibrazione + curva precisione/copertura
|
||||
└── results/
|
||||
├── mr_wf_<task>.csv metriche walk-forward per anno
|
||||
├── mr_loso_<task>.csv metriche leave-one-symbol-out
|
||||
├── mr_summary.json riepilogo medio
|
||||
└── mr_model_<task>.joblib modelli finali (non versionati)
|
||||
├── mr_wf_<task>.csv metriche walk-forward per anno
|
||||
├── mr_loso_<task>.csv metriche leave-one-symbol-out
|
||||
├── mr_precision_coverage.csv soglia -> copertura/precisione/lift
|
||||
├── mr_calibration_metrics.json Brier prima/dopo + LOSO
|
||||
├── mr_*.png grafici (affidabilita', precisione/copertura)
|
||||
└── mr_*.joblib modelli (non versionati)
|
||||
```
|
||||
|
||||
```bash
|
||||
@@ -112,12 +115,48 @@ pip install -r requirements.txt
|
||||
# copia in ./data i CSV crosses+bars dei 4 simboli (vedi data/README.md), poi:
|
||||
cd src
|
||||
python mr_train.py # usa ../config_mr.yaml
|
||||
python mr_calibrate.py # calibrazione + soglia operativa (sez. 8)
|
||||
```
|
||||
|
||||
## 8. Prossimi passi
|
||||
## 8. Calibrazione e soglia operativa (`src/mr_calibrate.py`)
|
||||
|
||||
Il modello `rev` **ordina** bene gli eventi, ma la probabilità grezza non è
|
||||
"vera" (vedi curva rossa sotto: un 0.55 grezzo corrispondeva a ~46% di rientri
|
||||
reali). La **calibrazione isotonica** la rende affidabile nella zona operativa
|
||||
(0.7–0.9) e migliora il Brier score da **0.198 → 0.189** (più basso = meglio).
|
||||
|
||||
Split temporale onesto: modello base su anni `< 2016`, calibratore su `2016–2017`,
|
||||
valutazione su `2018+` (mai visto). LOSO calibrato: AUC 0.67–0.70 su simbolo mai
|
||||
visto → regge.
|
||||
|
||||

|
||||
|
||||
### Curva precisione/copertura (test 2018+, base rate 73%)
|
||||
|
||||
Per ogni soglia di probabilità: **copertura** = quanti segnali tieni,
|
||||
**precisione** = tasso di rientro effettivo tra quelli tenuti.
|
||||
|
||||
| soglia | copertura | precisione | lift |
|
||||
|---|---|---|---|
|
||||
| 0.50 | 99% | 73.1% | 1.00 |
|
||||
| 0.70 | 85% | 76.2% | 1.04 |
|
||||
| **0.75** | **51%** | **81.2%** | **1.11** |
|
||||
| 0.80 | 42% | 82.2% | 1.13 |
|
||||
| 0.85 | 28% | 83.3% | 1.14 |
|
||||
| 0.90 | 6% | 87.0% | 1.19 |
|
||||
|
||||

|
||||
|
||||
**Soglia consigliata: ~0.75** → l'EA opera su ~metà dei setup di mean-reversion
|
||||
ma il tasso di rientro sale dal 73% all'**81%**. Chi vuole essere più selettivo
|
||||
usa 0.80–0.85 (precisione ~82–83%, copertura 28–42%). La soglia è un parametro:
|
||||
la tabella completa è in `results/mr_precision_coverage.csv`.
|
||||
|
||||
Nota: tra 0.70 e 0.75 la copertura crolla (85%→51%) perché lì si concentra la
|
||||
massa delle probabilità; è il punto in cui il filtro inizia a "mordere".
|
||||
|
||||
## 9. Prossimi passi
|
||||
|
||||
- **Calibrazione** delle probabilità di `rev` e scelta soglia operativa
|
||||
(precisione vs copertura) per l'EA.
|
||||
- Aggiungere altri major FX al pool per irrobustire ancora il LOSO.
|
||||
- **Fase 4**: export del modello `rev` in **ONNX** (skl2onnx) e inferenza in MT5
|
||||
come filtro dei segnali di mean-reversion.
|
||||
- **Fase 4**: export del modello `rev` **calibrato** in **ONNX** (skl2onnx) e
|
||||
inferenza in MT5 come filtro dei segnali di mean-reversion (soglia ~0.75).
|
||||
|
||||
Reference in New Issue
Block a user