Esplorazione dei parametri: assi letti dallo script, tetto di combinazioni
L'esplorazione dei parametri è il blocco «Parametri da esplorare» del backtest automatico nel Replay. Ogni asse è una chiave di parametro con un elenco di valori separati da virgola; il motore li espande come prodotto cartesiano, con un tetto di 400 combinazioni, e il walk-forward sceglie la migliore configurazione per ogni fetta.
Senzoukria · Documentazione · Aggiornato a settembre 2026
Dove trovarlo
- Dove
- Replay → Backtest automatico → «Walk-forward — trova la migliore configurazione» → Parametri da esplorare
- Assi predefiniti
- lookback 10, 20, 40 · stopTicks 20, 40, 80 · targetTicks 40, 80, 160 (27 combinazioni) finché lo script non viene letto
- Tetto rigido
- 400 combinazioni (MAX_COMBOS); oltre, l'esecuzione viene rifiutata, non troncata
- Criterio di selezione
- SQN per impostazione predefinita; Profit factor, Aspettativa per operazione o Sharpe per operazione
Che cosa fa
Un'esplorazione trasforma una strategia in una griglia di configurazioni. Ogni asse è una chiave di parametro e un elenco di valori digitati come «10, 20, 40». Il motore costruisce il prodotto cartesiano di tutti gli assi sopra i parametri di base della strategia (expandSweep), poi esegue un backtest per combinazione sulle stesse barre, in sequenza, così l'interfaccia resta utilizzabile mentre gira.
Dentro il walk-forward la griglia viene rivalutata sulla parte di addestramento di ogni fetta; la configurazione con il punteggio migliore viene poi testata sulla parte della fetta che non ha preso parte alla scelta. Il contatore sotto gli assi indica «{n} combinazioni × {folds} fette — circa {duration}», così conosci il costo prima di premere Lancia.
Gli assi sono proposti a partire dallo script stesso. Un lettore statico (parametresLus) analizza il sorgente cercando params.get("chiave", default), params["chiave"], params.chiave ?? default e alias lambda o arrow su una riga che incapsulano params. Gli script C++ non espongono params nell'ABI v1, quindi per loro non viene proposto nulla. Una chiave che lo script non legge mai mostra l'avviso «Questo script non legge mai “{key}”: esplorarlo restituirebbe risultati identici.»
Impostazioni
| Impostazione | Predefinito | Che cosa cambia |
|---|---|---|
| Fette | 4 (campo 2–12) | Numero di fold consecutivi e non sovrapposti; ogni fold si addestra sul proprio inizio e testa sulla propria fine |
| Quota di addestramento | 0,7 (0,5–0,9, passo 0,05) | Frazione di ogni fetta usata per scegliere la configurazione; il resto è il test fuori campione |
| Criterio di selezione | SQN | Punteggio usato per ordinare le combinazioni: SQN, Profit factor, Aspettativa per operazione o Sharpe per operazione. Il P&L lordo è volutamente assente |
| Chiave / valori dell'asse | lookback, stopTicks, targetTicks con tre valori ciascuno | Una riga per parametro; le voci vuote o non numeriche vengono scartate in silenzio |
| Aggiungi un parametro | — | Aggiunge il parametro successivo letto dallo script che nessun asse usa ancora, con valori proposti; altrimenti una riga vuota |
| Esplora ogni parametro leggibile (n) | — | Sostituisce gli assi con fino a cinque parametri letti dallo script, con valori attorno ai loro default |
| Rimuovi questo parametro | — | Elimina la riga dell'asse |
| Operazioni minime | 10 (costante del motore) | Una configurazione con meno operazioni ottiene −∞ e non può mai essere selezionata |
Come si costruiscono i valori proposti
- Un default intero ≥ 2 è trattato come una finestra o un conteggio: la proposta è metà, il default e il doppio (20 → 10, 20, 40).
- Un default in ]0, 1] è trattato come una proporzione: ±0,1, mantenuto strettamente fra 0 e 1.
- Qualsiasi altro numero è trattato come un fattore: ±25 %, arrotondato a due decimali.
- qty, color e colour non vengono mai proposti: la quantità moltiplica il risultato senza cambiare una decisione. Puoi comunque digitarli a mano.
- Per impostazione predefinita vengono proposti tre assi, nell'ordine in cui lo script li legge; il pulsante a fulmine allarga la proposta a cinque.
Limiti e trappole
Il tetto di 400 combinazioni non è un'impostazione di prestazioni. Il pannello lo dice chiaramente: ogni combinazione in più è un'altra estrazione sugli stessi dati, e oltre quel punto misuri la fortuna di un sovradattamento anziché una strategia. Restringi un intervallo o esplora meno parametri alla volta.
Il lettore è statico. Non può vedere una chiave costruita a runtime (params.get("hmm" + suffisso)) né un ciclo su un dizionario; quei parametri vanno digitati a mano. Per contro, gli assi smettono di seguire lo script non appena li modifichi; un'azione «rileggi lo script» restituisce il controllo.
Il numero di prove passato allo Sharpe deflazionato è il numero di combinazioni, non combinazioni × fette; validare in modo pulito non ti viene addebitato. Vedi la pagina sui test di sovradattamento per capire come quel conteggio alimenta PSR, DSR e PBO.
Pagine correlate
- Trading quantitativo per principianti
- Test di sovradattamento
- Verdetto del Gauntlet
- Guida al backtest sui futures
- Come testare una strategia di trading
Questa pagina in altre lingue
Domande frequenti
- Perché la mia esplorazione restituisce risultati identici per ogni combinazione?
- La chiave esplorata non viene letta dallo script. Il pannello ora lo segnala («Questo script non legge mai …»); sostituiscila con uno dei parametri proposti dal sorgente, oppure aggiungi la chiamata params.get nel tuo script.
- Posso esplorare più di 400 combinazioni lanciando due volte?
- Puoi, ma ogni esecuzione è un'altra serie di estrazioni sulle stesse barre, e lo Sharpe deflazionato conosce solo le prove dell'esecuzione corrente. Il tetto esiste per mantenere onesta la correzione; meglio meno assi con passi più ampi.
- L'esplorazione gira in parallelo?
- No. Il motore esegue le combinazioni una dopo l'altra e riporta l'avanzamento strada facendo, così il pannello resta leggibile mentre la griglia viene lavorata. La stima mostrata accanto al conteggio delle combinazioni serve a pianificare l'esecuzione prima di avviarla.