Nuovi test di robustezza sulla base di codice StrategyQuant: 5 metodi Monte Carlo a prova di bomba per le vostre strategie di trading

Nello sviluppo di strategie di trading algoritmico, i backtesting forniscono preziose indicazioni sulle performance storiche. Tuttavia, un singolo backtest rappresenta solo un possibile risultato basato sull'esatta sequenza di eventi di mercato che si sono verificati. In realtà, i mercati sono dinamici e imprevedibili, con innumerevoli variabili che potrebbero svolgersi in modo diverso. È qui che i test di robustezza Monte Carlo diventano preziosi.

StrategyQuant offre diversi sofisticati metodi di test Monte Carlo che aiutano i trader a capire come le loro strategie potrebbero performare in diversi scenari di mercato. Ogni test affronta le sfide specifiche del mondo reale, dalle imperfezioni di esecuzione ai cambiamenti di mercato. Esploriamo questi cinque test di robustezza essenziali che ogni trader algoritmico serio dovrebbe conoscere.

1. Randomizzazione a blocchi MACHR: Verifica della dipendenza dal regime di mercato

Cosa verifica: La solidità della vostra strategia rispetto ai cambiamenti nella sequenza dei regimi di mercato.

Il test di randomizzazione a blocchi MACHR (Market Condition Historical Randomization) risponde a una domanda fondamentale: "Cosa succederebbe se si verificassero le stesse condizioni di mercato, ma in un ordine diverso?". Questa innovativa metodologia di test è stata sviluppata da Marek Chrastina, più volte finalista nella Top 3 del World Cup Trading Championship® (compreso il 3° posto in entrambi i Global Cup Trading Championship 2020-2021 e World Cup Championship of Futures Trading® 2021).

Marek, che dirige Quantum Global e si occupa di ricerca e sviluppo di sistemi di trading algoritmici, è un utente e collaboratore di lunga data della StrategyQuant. La sua esperienza nel trading sistematico e nella gestione del rischio ha portato a diversi contributi preziosi alla piattaforma StrategyQuant, tra cui questo sofisticato approccio di verifica della robustezza. Potete leggere altre sue intuizioni in altri suoi articoli su StrategyQuant che trattano argomenti come aspettative di performance realistiche per i portafogli di futures algoritmici e approcci di base alla diversificazione del portafoglio futures.

Nel trading reale, le condizioni di mercato non seguono sequenze prevedibili. Mercati toro, mercati orso, periodi di alta volatilità e fasi di consolidamento possono verificarsi in ordini molto diversi. Una strategia che si comporta bene durante una particolare sequenza potrebbe avere difficoltà se gli stessi regimi si manifestassero in modo diverso.

Come funziona:

  • Creazione di blocchi: La sequenza di compravendite originale viene suddivisa in blocchi di compravendite consecutive (default 5 compravendite per blocco, configurabili da 2 a 50).
  • Campionamento a blocchi Bootstrap: La simulazione seleziona casualmente i blocchi con sostituzione, il che significa che alcuni periodi di regime di mercato potrebbero comparire più volte mentre altri potrebbero non comparire affatto.
  • Conservazione della struttura del regime: All'interno di ogni blocco selezionato, vengono mantenute la sequenza commerciale e le relazioni temporali originali.
  • Ricostruzione del timestamp: La simulazione ricostruisce i timestamp cronologici per mantenere i calcoli della curva di equity corretti.

Ad esempio, se il backtest originale conteneva:

  • Blocco 1: 5 operazioni durante un mercato toro in tendenza
  • Blocco 2: 5 operazioni durante il consolidamento dell'alta volatilità
  • Blocco 3: 5 operazioni durante un ribasso del mercato orso
  • Blocco 4: 5 operazioni durante la ripresa della bassa volatilità

Una simulazione potrebbe generare: Blocco 2 → Blocco 1 → Blocco 2 → Blocco 4 (scenario pesante per la volatilità), mentre un'altra potrebbe creare: Blocco 3 → Blocco 3 → Blocco 1 → Blocco 4 (scenario pesante per il mercato orso).

Eseguendo più di 500 simulazioni, si genera una distribuzione dei risultati che riflette la performance della strategia in diverse possibili "storie di mercato". Una strategia che mostra una performance costante in tutte le simulazioni MACHR dimostra una vera robustezza del regime.

È possibile scaricare questo test qui: Monte Carlo MACHR Randomizzazione a blocchi

2. Jitter dei parametri: Verifica della sensibilità alle variazioni minori

Cosa verifica: Quanto è resistente la vostra strategia a deviazioni minori e imprevedibili dal comportamento perfetto del backtest.

Nel live trading, le condizioni di mercato si evolvono costantemente. La volatilità si sposta, la liquidità fluttua e i feed di dati possono presentare variazioni minime. Anche le strategie ben ottimizzate potrebbero non funzionare esattamente come previsto a causa di un leggero "jitter" nei parametri o nei calcoli degli indicatori.

Come funziona:

  • Sfarfallamento della condizione (voci mancanti): In base allo Skip Probability, una percentuale casuale di operazioni viene rimossa dal backtest, simulando i casi in cui un leggero jitter dei parametri causa un mancato raggiungimento delle condizioni di ingresso.
  • Variazione del livello di uscita (fluttuazione P/L): Per le operazioni rimanenti, una percentuale casuale (Regola Probability) ha il risultato finale leggermente alterato modificando il prezzo di chiusura all'interno dell'intervallo di prezzo originale dell'operazione.

L'aspetto fondamentale è che questi aggiustamenti possono essere positivi o negativi, simulando piccole variazioni nei punti di esecuzione dello stop loss, del profit target o del trailing stop. Questo differisce dallo slippage fisso perché introduce un disturbo probabilistico direttamente collegato alla potenziale sensibilità dei parametri interni della strategia.

Una simulazione potrebbe saltare le operazioni #3 e #25, migliorando leggermente l'operazione #42, mentre un'altra potrebbe saltare solo l'operazione #15 e applicare aggiustamenti di prezzo maggiori alle operazioni #8, #33 e #50.

È possibile scaricare questo test qui: Jitter dei parametri Monte Carlo

3. Esecuzione con degrado casuale: Modellare i problemi di esecuzione del mondo reale

Cosa verifica: Come si comporta la vostra strategia di fronte a imperfezioni di esecuzione come lo slippage e gli spread più ampi.

Le imperfezioni di esecuzione sono comuni nel trading live. Slittamento dei prezzi, spread temporaneamente più ampi e riempimenti parziali possono far sì che i prezzi di chiusura effettivi siano meno favorevoli dei prezzi ideali del backtest. Questo test modella l'impatto di questi problemi casuali di esecuzione.

Come funziona:

  • Una percentuale casuale di operazioni (basata su Probability) vede degradato il proprio esito di esecuzione
  • Il prezzo di chiusura delle operazioni selezionate viene peggiorato di una percentuale casuale (fino alla percentuale massima di degradazione) dell'intervallo di prezzo dell'operazione.
  • "Peggiore" significa prezzi di chiusura inferiori per le operazioni lunghe e prezzi di chiusura superiori per le operazioni corte.

A differenza dello slippage fisso applicato a tutte le operazioni, questo test è probabilistico:

  • Le operazioni interessate sono casuali
  • Anche il grado di degrado di ciascun commercio interessato è casuale.

Ogni simulazione rappresenta uno scenario unico. Una potrebbe vedere le operazioni #5, #23 e #58 degradate di piccole quantità, mentre un'altra riguarda le operazioni #12, #23, #45 e #70 con livelli di degradazione variabili. Questo aiuta a valutare la robustezza della strategia rispetto a variazioni di esecuzione imprevedibili.

È possibile scaricare questo test qui: Esecuzione Monte Carlo a degrado casuale

4. Randomizzare lo SWAP di ogni operazione: verifica della sensibilità individuale allo swap

Cosa verifica: Quanto è sensibile la vostra strategia alle variazioni dei costi di finanziamento overnight a livello di singola operazione.

Lo SWAP si riferisce alla commissione o al credito d'interesse applicato quando si mantengono posizioni overnight nel forex o nel trading di CFD. È determinata dai differenziali dei tassi d'interesse e può avere un impatto significativo sulla redditività della strategia, soprattutto per le strategie con un periodo di detenzione più lungo.

Come funziona:

  • Ogni operazione nel backtest riceve valori di swap generati casualmente all'interno di un intervallo specificato [-Range, Range].
  • Ogni scambio ha un valore di scambio unico
  • L'intervallo determina il massimo swap positivo o negativo che può essere applicato.

Questo test si differenzia dalla randomizzazione degli swap dell'intero backtest per l'implementazione di swap unici per ogni singola operazione. Un'operazione potrebbe avere uno swap lungo positivo e uno corto negativo, mentre le operazioni successive hanno combinazioni di swap completamente diverse.

L'esecuzione di 500 simulazioni con swap randomizzati per ogni operazione fornisce una prospettiva Monte Carlo su come le variazioni degli swap influenzano i risultati della strategia.

È possibile scaricare questo test qui: Monte Carlo Randomizza lo SWAP di ogni compravendita

5. Randomizzare lo SWAP dell'intero backtest: Test di scenari di swap coerenti

Cosa verifica: Come si comporta la vostra strategia in contesti di tassi swap diversi ma coerenti.

Mentre il test precedente randomizza gli swap per ogni singola operazione, questo test applica tassi swap coerenti per tutte le operazioni all'interno di ogni simulazione, rappresentando meglio i contesti di tassi d'interesse variabili.

Come funziona:

  • Ogni simulazione di backtest utilizza valori di swap generati in modo casuale all'interno dell'intervallo specificato.
  • Tutte le operazioni all'interno di una singola simulazione utilizzano gli stessi tassi swap
  • Il sistema garantisce la rappresentazione degli swap positivi e negativi in tutte le simulazioni.
  • I parametri fissi includono il metodo di calcolo dello swap, il giorno di triplo swap e l'ora di conteggio dello swap.

Questo approccio simula diversi ambienti di mercato per i tassi di interesse piuttosto che le variazioni delle singole operazioni. Ad esempio, una simulazione potrebbe rappresentare un ambiente ad alto tasso di interesse con costi di swap costantemente più elevati, mentre un'altra rappresenta un ambiente a basso tasso di interesse con un impatto minimo sugli swap.

È possibile scaricare questo test qui: Monte Carlo Randomizza SWAP dell'intero backtest

Implementare questi test nello sviluppo della vostra strategia

Per massimizzare il valore di questi test di robustezza:

  1. Iniziare con la randomizzazione a blocchi MACHR per comprendere la dipendenza della vostra strategia dalle sequenze del regime di mercato
  2. Applicare il parametro Jitter per verificare la sensibilità a piccole variazioni operative
  3. Utilizzare il degrado dell'esecuzione per modellare in modo realistico i costi di trading e lo slippage
  4. Test di sensibilità SWAP se la vostra strategia mantiene le posizioni durante la notte

Per ogni test, eseguire un minimo di 100 simulazioni, anche se oltre 500 simulazioni forniscono indicazioni statistiche più affidabili. Prestare attenzione a:

  • Prestazione media tra le simulazioni
  • Deviazione standard dei risultati (più basso è meglio per la coerenza)
  • Scenari peggiori (protezione dal ribasso)
  • Percentuale di simulazioni redditizie

Conclusione

I test di robustezza Monte Carlo trasformano lo sviluppo della strategia da una valutazione di un singolo risultato a una valutazione completa del rischio. Questi cinque test StrategyQuant affrontano le sfide più critiche del mondo reale del trading: dipendenza dal regime, sensibilità dei parametri, qualità dell'esecuzione e costi di finanziamento.

Una strategia veramente solida dovrebbe dimostrare una performance costante in tutti questi test. Se la vostra strategia presenta un'elevata varianza in un qualsiasi test, consideratela un segnale di allarme che richiede ulteriori indagini e un potenziale perfezionamento della strategia.

Ricordate: l'obiettivo non è una performance perfetta in ogni simulazione, ma piuttosto una performance consistente e prevedibile che potete impiegare con fiducia nei mercati reali. Questi test aiutano a colmare il divario tra la perfezione dei backtest e la realtà del trading.

 

Per istruzioni dettagliate sull'importazione di questi snippet personalizzati nell'StrategyQuant, visitate il sito: Guida all'importazione/esportazione di indicatori e snippet personalizzati

clonex / Ivan Hudec

Ivan Hudec — “Clonex” sul forum

Faccio trading da 15 anni e utilizzo StrategyQuant X dal 2014. Attualmente mi occupo di tre cose: sviluppo e metto alla prova strategie automatizzate, amplio le funzionalità di SQX con indicatori personalizzati, snippet e strumenti Python per l’apprendimento automatico e la ricerca quantitativa, e aiuto altri trader a raggiungere i loro obiettivi più rapidamente, evitando loro gli anni di costosi errori che io stesso ho commesso lungo il percorso.
La maggior parte delle strategie di trading al dettaglio sembra ottima nei backtest, ma fallisce quando viene applicata dal vivo. Il mio lavoro è esattamente l’opposto: strategie oneste, validate e sufficientemente solide da poter essere utilizzate con denaro reale. Scrivo di questo processo — gli aspetti positivi, quelli negativi e il fenomeno dell’overfitting di cui nessuno parla — sul mio sito, algotrading.space.
Se vuoi approfondire i temi della validazione, dello sviluppo personalizzato di SQX o della creazione di un vero vantaggio competitivo grazie a dati e codice, è proprio lì che condivido tutto ciò che so.  www.algotrading.space

0 Commenti
Vecchi
Più recenti Le più votate

Continua a leggere