Backtesting/ottimizzazione - pagina 7

 
lomme:
Questo è giusto.

Ma per il backtesting la granularità migliore è anche 1min.

Posso immaginare che i dati in tick non cambieranno i risultati del backtesting a 1 minuto.

Qualcuno ha già fatto il backtest di questi dati? Sono anche d'accordo che i dati 1-M non faranno una differenza significativa a meno che il consulente esperto non usi un eccessivo scalping, allora anche i secondi possono contare.

 

Back test e ottimizzazione

Il primo elemento da notare è che l'ottimizzazione dovrebbe essere usata solo per verificare un'idea esistente basata su un comportamento o un fatto del mercato, non per scoprire una grande idea di trading. L'idea di trading deve venire prima. Il pericolo nell'ottimizzazione di un mercato è l'overfitting della curva, ciò che ha funzionato sui dati storici potrebbe non funzionare in futuro, ma avete trovato una grande combinazione per i dati passati. Può comunque essere usato su diversi mercati per trovare un set di parametri che non dovrebbe essere usato, piuttosto la sensibilità del sistema di trading. Un altro uso della simulazione/backtesting è quello di capire le debolezze e i punti di forza del tuo sistema. Quando funziona bene, quando è in ritardo, e quando semplicemente fallisce, in modo da poter sviluppare nuove idee per risolvere questi problemi.

A questo punto è importante capire che i dati sono l'aspetto più importante del backtesting. Dal momento che il backtesting è in realtà solo una simulazione su dati storici piuttosto che una distribuzione matematica, quindi avete bisogno di dati di buona qualità su varie coppie che rappresentano un numero vario di condizioni di mercato. Toro, Orso e laterale con volatilità variabile. Se il sistema può sopportare varie condizioni di mercato, compresi gli shock, allora è sufficiente per il trading. Senza dati rappresentativi l'utilità dei vostri risultati non avrà alcuna attinenza con il mercato reale.

Poi dovete decidere quanti test devono essere eseguiti per raggiungere un livello di fiducia nei vostri risultati. Questo significa eseguire il back test su 15-30 serie di dati sufficientemente rappresentativi e sviluppare un intervallo di confidenza. Questo presuppone che i dati siano distribuiti normalmente, ma i dati finanziari non lo sono, sono sbilanciati a sinistra con una coda spessa sul lato destro. Quindi un'opzione è quella di utilizzare il limite centrale per migliorare il tuo esperimento e renderlo più affidabile.

Il backtester di Tradestation è probabilmente più affidabile di metatrader perché può fare operazioni in tick piuttosto che aspettare il prezzo di chiusura, ma questo vale anche per gli EA in metatrader. Non penso che il backtester di metatrader sia terribile, anche se deve essere semplicemente usato correttamente, e usarlo senza una comprensione del processo di simulazione porterà sempre a risultati sovrastimati e ad aspettative irrealistiche. Questo si tradurrà in una perdita di capitale. In realtà il punto di tutto questo, in attesa di dare alcuni suggerimenti, è quello di capire che il backtesting, l'ottimizzazione, la simulazione sono strumenti utilizzati per migliorare un sistema e confrontare i miglioramenti tra i sistemi, non per sostituire l'analista che progetta il sistema. Il mio suggerimento per la maggior parte se il vostro uso backtesting capire metedologia di simulazione per risparmiare un sacco di mal di testa e perdita di capitale.

Se avessi davvero intenzione di eseguire il backtesting lo farei, e sto cercando di programmare un sistema di backtesting in un software di simulazione come Arena o Witness, ma sono interessato alle capacità delle stazioni commerciali.

 

Tutorial sul back testing e consigli

Ho visto un sacco di discorsi sul backtesting, e sembra che ci sia una grande confusione, quindi, piuttosto che postare su ogni thread relativo ad esso, ho deciso di postare qui informazioni che potrebbero diventare lunghe, ma spero che chiariscano cosa sia il backtesting e come usarlo in modo appropriato.

Il backtesting è una forma di simulazione che utilizza i dati storici per valutare i miglioramenti di un sistema di trading.

La prima cosa da capire è che la simulazione è uno strumento, proprio come il software grafico è uno strumento. Non scopre da sola un'idea e nemmeno la migliora, l'analista deve farlo basandosi sull'osservazione delle caratteristiche fondamentali del mercato. Normalmente la simulazione cerca di prendere i dati storici per migliorare un sistema e ridurre la varianza nell'output del sistema, ma la simulazione finanziaria è una razza speciale. Stiamo invece cercando di alterare il sistema per ottenere prestazioni migliori contro la varianza dei dati su cui non abbiamo alcun controllo. Perciò vogliamo un sistema che sia robusto, le cui prestazioni non siano molto sensibili ai cambiamenti dei mercati.

Ci sono diverse parti in una simulazione. C'è la metodologia, il sistema e i dati. Discuterò ognuno di questi in dettaglio dopo questo post. Spero che troviate utili queste informazioni.

 

Metodologia di simulazione

Quando si decide di migliorare il proprio sistema di trading, è importante essere sistematici per ottenere un risultato di successo. Fortunatamente è stato sviluppato un metodo collaudato per la simulazione. I primi 6 passi dovrebbero richiedere circa il 40% del vostro tempo, così come gli ultimi 5 passi. La fase di sperimentazione dovrebbe prendere solo il 20% del vostro tempo. I passi sono i seguenti.

1. Definire il problema - Questo è il passo più importante del processo di simulazione. Dovete dichiarare chiaramente cosa intendete ottenere attraverso la simulazione (backtest). Per meglio dire, dov'è che il tuo sistema si comporta male ora. Non entra abbastanza velocemente, non esce abbastanza velocemente, fa trading troppo spesso o non abbastanza spesso? Vuoi confrontare due sistemi e decidere quale è più valido e affidabile. Questi sono problemi validi.

2. Pianifica il progetto - Questo passo ha lo scopo di aiutarti ad assicurarti di avere gli strumenti e una tabella di marcia per portare avanti con successo l'esperimento. La maggior parte di noi ha ciò di cui ha bisogno in Metatrader o in altri software tra cui Excel, ma forse non si conosce abbastanza la programmazione per fare qualcosa da soli, quindi potrebbe essere necessario trovare un aiuto. Una timeline è utile per determinare se si sta facendo abbastanza in fretta.

3. Definire il sistema - In una simulazione finanziaria questo passo implica decidere quali mercati intendete negoziare e quali strumenti utilizzate per farlo. A differenza della simulazione tradizionale si vuole includere quanti più dettagli possibile.

4. Concettualizzare il modello - Durante questa fase si delinea il funzionamento del sistema e si sviluppa una base di regole che saranno programmate nel sistema di trading. Puoi considerare volume, ampiezza, momentum, oscillatori, cicli, stagioni, tecniche di comportamento, tecniche adattive, controllo del rischio, gestione del denaro, sistemi di distribuzione o qualsiasi altro aspetto tu voglia coprire.

5. Disegno sperimentale preliminare - Fino a questo passo spero che tutti voi possiate elaborare queste idee nella vostra testa abbastanza velocemente, ma è comunque importante scriverle in modo da poter rivedere e confrontare i vostri risultati quando avete finito. Questo passo consiste nel decidere come eseguire l'esperimento. Farò un post separato per dettagliare il disegno sperimentale.

6. Preparazione dei dati di input - Buoni dati sono vitali per qualsiasi simulazione, in particolare per la simulazione finanziaria. Dati scadenti potrebbero gonfiare o sgonfiare i vostri risultati. Dati insufficienti non sono rappresentativi del mercato. Farò un post separato che riguarda i dati di mercato. Durante questa fase raccoglierete e organizzerete i vostri dati in un formato utilizzabile dal software. Penso che Metatrader preferisca le colonne data, ora, apertura, massimo, minimo, chiusura, volume. Poi li dividerete in vari set di dati utilizzati nell'esperimento.

7. Traduzione del modello - Questo passo è dove effettivamente programmate il vostro sistema, a questo punto dovreste aver avuto una buona idea di come è stato organizzato e suddiviso in varie funzioni in modo che sia un processo fluido. Ci sono normalmente due tipi di sistemi; integrato e verticale. Un sistema integrato lavora insieme in un modo specifico, mentre un sistema verticale può avere parti aggiunte e rimosse.

8. Verifica e convalida - Questo è un passo molto importante in cui si verifica che il modello rappresenti il tuo sistema di trading e che i dati siano rappresentativi e accurati alle varie condizioni di mercato. Nel tester della strategia, aprire il grafico dopo aver eseguito un'esecuzione di prova è un buon modo per controllare visivamente che il sistema funzioni come avevi previsto.

9. Disegno sperimentale finale - Dopo aver convalidato l'idea, fai qualsiasi cambiamento al sistema che hai capito essere necessario nel processo di passare attraverso la metodologia. Questo può significare che hai notato una nuova idea mentre studiavi i dati, o che qualche nuova misura di segnalazione era necessaria per soddisfare i tuoi risultati.

10. Sperimentazione - Questa fase è semplicemente quella in cui si eseguono le iterazioni dell'esperimento e si raccolgono i dati in uscita per l'analisi. Questo probabilmente includerà anche la registrazione dei dati.

11. Analisi e interpretazione - Dopo che l'esperimento è stato eseguito e i dati di output raccolti, dovreste analizzare i dati e interpretarli. Questo è il momento in cui si deciderà se i miglioramenti al sistema forniscono un contributo valido o meno.

12. Implementazione e documentazione - Finalmente implementate i miglioramenti e documentate i vostri risultati per fare riferimento e migliorare la vita della simulazione.

 

Disegno sperimentale ampliato

Notate che molti dei passi della metodologia potrebbero dover essere ripetuti più volte se avete dimenticato qualcosa durante l'esecuzione della simulazione. Ma un aspetto molto importante è il disegno sperimentale.

Ci sono due tipi di sistemi nel mondo. Stocastico (risultati variabili) e deterministico (risultato singolo). I mercati finanziari sono l'ultimo sistema stocastico accanto al tempo. È pieno di varianza e i risultati possono variare molto da giorno a giorno e da mercato a mercato. Ma quello che vogliamo è un sistema che reagisca a questi dati altamente variabili in modo poco variabile, aumentando così la nostra performance e diminuendo il nostro rischio. La varianza è la regola in natura e ce ne sono due tipi. Varianza casuale e varianza non casuale. La varianza casuale è inerente al sistema e non può essere totalmente eliminata, questo significa che il nostro sistema avrà sempre un andamento diverso da mese a mese. La varianza non casuale dovrebbe essere controllata. Questo include prestazioni al di fuori della gamma di accettabilità, o la reazione del sistema a grandi picchi o buchi nei dati, interruzioni di corrente, perdita di connessione, cattiva programmazione. Un sistema stabile è uno che ha gestito tutti questi attraverso qualche misura.

Lo scopo del nostro esperimento è quello di determinare dove il nostro sistema sta funzionando al di fuori dei requisiti dichiarati (varianza inaccettabile) e tentare di migliorarlo. Quindi il primo passo è quello di definire le nostre metriche (valori misurati). Meta trader fa molte di quelle importanti per noi, drawdown, fattore di profitto, percentuale di buoni trade. Possiamo essere interessati a funzioni del sistema diverse da queste, come la differenza tra i segnali di entrata e dove sarebbe dovuto entrare. Queste metriche più complesse potrebbero dover essere programmate manualmente.

Dopo aver definito le metriche che sono importanti da raccogliere dalla vostra simulazione/backtest dovete decidere come condurre l'esperimento. Dato che i dati di mercato sono stocastici, una sola esecuzione (un singolo test del sistema su un singolo set di dati di mercato) non è sufficiente a darci fiducia nella performance del sistema. La statistica incoraggerebbe l'esecuzione di diverse migliaia di prove, ma sfortunatamente non abbiamo così tanti dati o tempo. Il numero di esecuzioni dipende dalla varianza trovata nei dati. Questo non significa la varianza nei dati di mercato, ma piuttosto la varianza nella performance del tuo sistema di trading. Tutto ciò che riguarda il trading è capire la varianza e controllarla. In questo caso, la cosa migliore è eseguire dei run indipendenti (diversi set di dati/mercati), probabilmente 15-30 run, su periodi di tempo sufficientemente lunghi per rappresentare tutti i tipi di mercato, cioè toro, orso e non-trending. Il non trending può essere il più importante da rappresentare per il forex per vedere come un sistema di trading trending affronterà il mercato range trading, ma dipende dal vostro sistema.

Da queste informazioni puoi sviluppare un intervallo di confidenza intorno ai tuoi risultati. Un intervallo di confidenza è un intervallo di prestazioni in cui hai un livello di fiducia che la tua metrica rientri. Quindi, sulla base del tuo test di 30 set di dati, potresti dire che sei sicuro al 90% che il tuo guadagno sarà compreso tra 100.000 e 200.000 dollari. Questo dipende da quanto i dati di mercato che avete usato nella simulazione erano rappresentativi delle varie condizioni di mercato, preferibilmente che li vediate rappresentati il maggior numero di volte possibile. Se non se ne vede mai uno nuovo non c'è ragione che i vostri risultati siano simili al vostro intervallo di confidenza. Calcolare un intervallo di confidenza è semplice usare x(media)+-(valore t dello studente per alfa/2)*(s/sqrt(n)). Dove il valore t dello studente può essere trovato in una tabella e n è la dimensione del campione. s è la deviazione standard e alpha è il vostro livello di confidenza - probabilmente .9 per il 90%. La media è la media dei vostri risultati per la metrica in questione, probabilmente il profitto.

Se state confrontando due sistemi diversi, leggete i test di ipotesi, probabilmente usando un test ANOVA.

Quindi, ciò che abbiamo imparato è quante corse fare, quanto devono essere lunghe, cosa dovrebbero rappresentare e come valutarle per determinarne la significatività. Questa può essere una sezione confusa per molti, sentitevi liberi di fare domande.

 

Dati dibacktesting ampliati

Ho parlato della metodologia e dell'ideazione sperimentale e dello scopo del backtesting. Ora voglio parlare dei dati che si usano.

Mi sto stancando quindi se qualcosa non ha senso mi dispiace HA.

I dati sono molto importanti e devono avere diverse caratteristiche per essere valutati adeguatamente. I dati devono essere sufficientemente lunghi, rappresentare le condizioni in cui vi esibirete, accurati e validi.

Ampliato questo significa che i dati dovrebbero rappresentare varie condizioni di mercato più volte, se possibile. Tori, orsi, alta volatilità, bassa volatilità, diversi shock di prezzo, mercati con range, mercati senza trend, qualsiasi altra cosa a cui possiate pensare perché molto probabilmente vi imbatterete in queste condizioni ad un certo punto e volete che il vostro sistema sia in grado di gestirle. Un errore che molte persone fanno nel backtesting è che fanno un'esecuzione, eseguono l'ottimizzatore e pensano di aver trovato il Santo Graal dei sistemi di trading. RICORDATEVI SEMPRE che se i vostri risultati sono molto buoni o molto cattivi come le domande, probabilmente qualcosa è sbagliato con i vostri dati, la programmazione, o il vostro overfitting alla curva. L'overfitting è il processo di ottimizzazione del vostro sistema per lavorare davvero bene sui dati precedenti. Sfortunatamente potresti non vedere mai più condizioni di mercato come quelle e il tuo sistema è così ottimizzato che è molto sensibile alle nuove condizioni di mercato e si blocca rapidamente. Per essere rappresentativo dovrebbe durare diversi anni, se disponibile diversi decenni, e non dovrebbe essere incluso se si è verificato un grande cambiamento nel mercato come i mercati che si combinano. Non sono d'accordo con alcuni e ritengo che i dati di mercato siano dati di mercato se sono buoni per il back testing, a patto che rappresentino qualche condizione, quindi usate il vostro giudizio.

Raccogliere dati di mercato per i test può essere un processo lungo, perché non è mai nel formato che si desidera e ci vuole sempre il triplo del tempo per procurarseli rispetto a quello che si spera.

Finnalmente i dati devono essere indipendenti e questo può essere un problema nei mercati forex dove tutte le coppie di dollari sono altamente correlate, cioè si muovono in modo simile. Questo è spesso rotto anche all'interno di un mercato con l'autocorrelazione, il che significa che il prossimo pezzo di dati è correlato o dipendente dall'ultimo. Le seconde osservazioni dovrebbero essere distribuite in modo identico per tutta la durata del processo. Ancora una volta le distribuzioni dei mercati finanziari cambiano continuamente, ma la forma di base è probabilmente abbastanza vicina per funzionare. Finalmente dovrebbero essere distribuiti normalmente. Questo è SEMPRE rotto perché i prezzi tendono a rimanere a livelli più bassi, piuttosto le distribuzioni dei prezzi e le distribuzioni dei movimenti dei prezzi sono skewed a sinistra e hanno una coda più spessa a destra che prevista. Anche se questo è ciò che ci permette di fare soldi, viola un presupposto fondamentale della simulazione. Ci sono metodi per correggere questo nell'analisi, come le trasformazioni logiche, ma il teorema del limite centrale è di solito più facile da sperimentare. Questo significa che se si eseguono 15 prove in cui ogni valore è la media di altre 15 prove, questo tenderà ad essere più normalmente distribuito e sarà un intervallo di confidenza più realistico. Se questo non ha senso, ignoratelo, ma ricordate che non c'è alcuna correlazione tra i risultati del backtesting e il sistema fisico con cui fate trading, è solo uno strumento e uno buono, ma deve essere compreso e usato correttamente.

Molti altri argomenti dovrebbero essere presi in considerazione e possono esserlo in seguito, come ad esempio

procedura di backtesting

ottimizzazione di

statistiche

probabilità

trasformazione

considerazioni pratiche

distribuzioni e loro comprensione

flussi casuali e dati sintetici

test di ipotesi

ottimizzazione monte carlo/più veloce dei metatraders

ma fino ad allora spero che questo sia stato in qualche modo utile e che possiate eseguire backtesting migliori e ottenere risultati migliori quando implementate il vostro sistema di trading. Sentitevi liberi di fare domande, so che sono state molte.

 

Grande spiegazione.

Grazie Cro2314

 

Breve domanda su diversi sistemi di backstest...

Il software Tradestations è migliore del software Metatrader per il backtesting?

Qualcuno ha esperienza con entrambi?

La mia conclusione finora è che i backtest di Tradestations sembrano più avanzati di quelli di Metatrader, ma d'altra parte Metatrader è gratuito e Tradestation costa $$$...

Qualsiasi feedback sulle differenze tra i due sarebbe gradito.

 

Ne conosco solo alcuni

modifica***27 maggio. È importante notare che il backtesting è una pratica di simulazione e non un simulatore. Un simulatore che sembra funzionare bene è elencato su questo sito come Forex tester. Può essere usato come backtester ma non ancora con gli EA. Le simulazioni/backtesting hanno in realtà lo scopo di fornire statistiche sulle prestazioni del vostro sistema di trading in modo da poter analizzare i punti deboli. In definitiva si cerca di ridurre la varianza nella pendenza della curva della tua equity nel tempo. Mi chiedo se questo è il motivo per cui la gente non piace metatraders backtester. Forse ci sono alla ricerca di un simulatore. Ma se è una performance visiva che stai cercando, apri semplicemente il grafico dopo aver eseguito il tester di strategia e puoi vedere esattamente come l'EA sta facendo trading. Molto utile per la convalida del sistema.

In realtà ho poca esperienza con il backtester di tradestations. Riconosco però un paio di vantaggi. Tradestation può fare acquisti intraday (tick) piuttosto che usare il prezzo di chiusura nel tester della strategia, (è appena successo nella versione più recente) mentre metatrader usa il prezzo di chiusura. A seconda della tua strategia questo può avere conseguenze significative nel tuo sistema se fai trading molto velocemente e cerchi di catturare i movimenti di due o tre barre che spuntano fuori una volta ogni tanto. Ma va anche contro molte strategie fondamentali di aspettare il prezzo di chiusura. L'altra differenza è ovviamente il linguaggio con cui puoi programmare varia tra loro, e alcuni compiti comuni come la somma di variabili sembra essere più facile su tradestation. Finalmente ho sentito che ci sono alcune limitazioni di memoria all'interno di metatrader che non sono limitate in tradestation, ma non mi sono imbattuto in questo. Non so quali limiti abbia sulle variabili di sistema come quelle che impediscono a un EA di caricare i suoi indicatori sullo schermo come in metatrader. Sembra anche che le statistiche pre-scritte che tradestation ti dà siano più robuste sui risultati del backtest. TradeStation ha alcuni vantaggi, ma ricorda che il back tester dovrebbe reagire allo stesso modo del software se si esegue semplicemente un sistema completamente automatico. Se questo è il caso, suggerisco di fare il backtesting sullo stesso software che usi per fare trading automatico, altrimenti potresti rimanere sorpreso.

Nel complesso immagino che sia programmato meglio, ma a differenza di molte persone credo che il backtester di metatraders funzioni esattamente come si suppone se usato correttamente e se si ha una comprensione di come esegue il codice. Questo è sempre il caso dei software di simulazione, quindi non lo vedo come uno svantaggio. Il software che usate di solito non è importante quanto il modo in cui interpretate i dati che vi dà. Ora sto solo farneticando quindi mi fermo qui.

A proposito, grazie Felix per il tuo complimento, è stato molto apprezzato.

 

Il mio backtester va molto lento ... aiuto

A volte è veloce e a volte va troppo lento. Non so perché. Ho trovato un file di 1,5 GB nei log e l'ho cancellato ma è ancora lento. C'è un modo migliore per fare il backtest dei programmi? Sto usando Metatrader e spesso ho solo il 20% di qualità del modello.