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

Controlli del blocco Parametri da esplorare e della riga walk-forward sopra di esso
ImpostazionePredefinitoChe cosa cambia
Fette4 (campo 2–12)Numero di fold consecutivi e non sovrapposti; ogni fold si addestra sul proprio inizio e testa sulla propria fine
Quota di addestramento0,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 selezioneSQNPunteggio usato per ordinare le combinazioni: SQN, Profit factor, Aspettativa per operazione o Sharpe per operazione. Il P&L lordo è volutamente assente
Chiave / valori dell'asselookback, stopTicks, targetTicks con tre valori ciascunoUna riga per parametro; le voci vuote o non numeriche vengono scartate in silenzio
Aggiungi un parametroAggiunge 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 parametroElimina la riga dell'asse
Operazioni minime10 (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.

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.