Come ottimizzare un Trading System
Collapse
X
-
Come consigliato ho caricato il future di dicembre 2014 (GGZ14) di Barchart.........
Verifica le cause che hanno prodotto questi 2 trade anomali e se si tratta di profitti/perdite derivanti da gap overnight allora devi eliminarli semplicemente impostando sia in exit long che in exit short la condizioneSe di questo si tratta ripeti l\'analisi e posta i risultati.Codice:TIME>2129
Se di questo non si tratta significa che il Ts è overfittato sulla serie di dati campionari (in sample).....
Ho preferito ripartire da zero.
Stessi passaggi 1) 2) 3) visti nel post precedente. Arriviamo ai risultati dell\'ottimizzazione:
4) Prendo nota dei set migliori.
5) Imposto il periodo di 6.000 barre.
6) Verifico i set, ma nessuno in questo caso ha il Profit Factor >3.
7) Voglio comunque fare la verifica suggerita ieri ed esamino quello con la performance migliore:
Due drawdown hanno fortemente penalizzato l\'Equity Line.
Vediamo il perché analizzando i trades:
Dall\'analisi del grafico non si evidenziano problemi di gap overnight:
Prendiamo quindi atto che il TS non passa il test.
In questo caso, quali soluzioni si possono ipotizzare?
A) Modificare il TS.
B) Testarlo sullo stesso sottostante con TF diversi.
C) Testarlo su altri sottostanti.
D) Abbandonare definitivamente il TS.
Comment
-
Quando un TS non ha superato il test della Walk Forward Analisys, dopo essere stato ottimizzato , non ci sono Cristi che tengano, il sistema è overfittato e le cause possono essere diverse ma le principali sono:
1- Sovra- parametrizzazione
2 -Overscanning
3- Un campione di dati troppo piccolo
Se dopo aver rivisto e verificato questi punti, le cose non migliorano allora bisogna cambiare sensibilmente le regole del TS oppure abbandonare l\'impianto iniziale e sviluppare altre idee magari con altri indicatori o combinazione di essi.
è dura....lo so...ma se così non fosse ci sarebbero ogni giorno i famosi pasti gratis a Wall Street.
ApoLast edited by Apocalips; 10-12-14, 18:38.....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
Provo a modificare il TS inserendoci uno Stop Loss.Quando un TS non ha superato il test della Walk Forward Analisys, dopo essere stato ottimizzato , non ci sono Cristi che tengano, il sistema è overfittato e le cause possono essere diverse ma le principali sono:
1- Sovra- parametrizzazione
2 -Overscanning
3- Un campione di dati troppo piccolo
Se dopo aver rivisto e verificato questi punti, le cose non migliorano allora bisogna cambiare sensibilmente le regole del TS oppure abbandonare l\'impianto iniziale e sviluppare altre idee magari con altri indicatori o combinazione di essi.
è dura....lo so...ma se così non fosse ci sarebbero ogni giorno i famosi pasti gratis a Wall Street.
Apo
Inoltre aumento il range del parametro @periods per l\'ottimizzazione.
In questo caso, avendo dei periodi più lunghi, aumento il numero delle barre a 6.000 per garantirmi almeno 30 trades.
Risultati dell\'ottimizzazione:
- Prendo nota dei set migliori.
- Imposto il periodo di 12.000 barre.
- Verifico i set, ne trovo uno con Profit Factor >3.
Parametri rispettati:
-Percent Profitable: 90.77% (>60%)
-Profit Factor 3.66 (>3)
Dubbi:
-Equity Line mostra una certa sofferenza nella prima metà.
-E\' corretto usare per l\'ottimizzazione un numero di barre così elevato (6.000)?Comment
-
Ho notato che hai commesso lo stesso errore Alex.
Questo è proprio il punto dolente, è come se stessi ingannando te stesso !!..è un classico succede quasi sempre.
Quando hai preso nota dei set migliori e verificati ad uno ad uno sul periodo di dati non campionari è come se avessi forzato i risultati all\' equity che a te faceva comodo vedere, quella piu bella. In pratica è come se avessi ottimizzato anche il periodo di post ottimizzazione, quello dei dati non campionari. Tutto questo succede perche noi stiamo simulando il futuro su dati storici ma nella realtà non possiamo sceglierci il futuro che desideriamo, non so se ho reso l\'idea.
Allora procediamo diversamente visto che abbiamo a disposizione una marea di barre, circa 50.000.
Posizionati nelle prime 5000 barre di questo campione con la funzione Date di Easy script e procedi con l\'ottimizzazione senza esagerare. Una volta effettuata la scelta del miglior set di parametri, testa il TS nelle successive 2500 le quali però le devi considerare come se facessero parte del futuro e quindi non puoi fare nessun ragionamento su di esse.
Questo test di post ottimizzazione lo devi tenere separato dal precedente test di ottimizzazione quindi avrai 2 report, una da 5000 barre e l\'altro da 2500 barre che salverai e chiamerai rispettivamente Ottimizzazione1 e Post-ottimizzazione1.
Se il test di questa singola Walk Forward viene superato allora hai vinto la prima battaglia e sei pronto al test della WFA completa che è quello definitivo che sentenzierà con la misura della WFE (Walk Forward Efficency) se il tuo modello previsionale è robusto e ripetibile nel tempo
....ma procediamo per gradi.
Complimenti per l\'impegno e la disponibilità !!
ApoLast edited by Apocalips; 10-12-14, 22:18.....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
Grazie infinite a te Apo per la tua disponibilità, l\'appoggio tecnico e morale.Ho notato che hai commesso lo stesso errore Alex.
Questo è proprio il punto dolente, è come se stessi ingannando te stesso !!..è un classico succede quasi sempre.
Quando hai preso nota dei set migliori e verificati ad uno ad uno sul periodo di dati non campionari è come se avessi forzato i risultati all\' equity che a te faceva comodo vedere, quella piu bella. In pratica è come se avessi ottimizzato anche il periodo di post ottimizzazione, quello dei dati non campionari. Tutto questo succede perche noi stiamo simulando il futuro su dati storici ma nella realtà non possiamo sceglierci il futuro che desideriamo, non so se ho reso l\'idea.
Allora procediamo diversamente visto che abbiamo a disposizione una marea di barre, circa 50.000.
Posizionati nelle prime 5000 barre di questo campione con la funzione Date di Easy script e procedi con l\'ottimizzazione senza esagerare. Una volta effettuata la scelta del miglior set di parametri, testa il TS nelle successive 2500 le quali però le devi considerare come se facessero parte del futuro e quindi non puoi fare nessun ragionamento su di esse.
Questo test di post ottimizzazione lo devi tenere separato dal precedente test di ottimizzazione quindi avrai 2 report, una da 5000 barre e l\'altro da 2500 barre che salverai e chiamerai rispettivamente Ottimizzazione1 e Post-ottimizzazione1.
Se il test di questa singola Walk Forward viene superato allora hai vinto la prima battaglia e sei pronto al test della WFA completa che è quello definitivo che sentenzierà con la misura della WFE (Walk Forward Efficency) se il tuo modello previsionale è robusto e ripetibile nel tempo
....ma procediamo per gradi.
Complimenti per l\'impegno e la disponibilità !!
Apo
Effettivamente temevo che quello che stavo facendo fosse una forzatura.
Proprio grazie a questa discussione ho imparato tante cose e ho capito che stavo commettendo diversi errori.
Ci aggiorniamo appena avrò prodotto qualcosa.
P.S. Non sarebbe male se anche qualche altro utente volesse intervenire portando il proprio contributo.
Comment
-
Descrivo i passaggi che sto facendo per arrivare a filtrare le date:
Inserisco nello script i parametri @datainizio e @datafine e aggiungo la condizione.
Quindi il Buy Script diventa:
Mentre il Sell Script diventa:Codice:INPUTS: @periods(100), @lowMark(-35), @highMark(-65),@stopLoss(200), @datainizio(20141001), @datafine(20141201) SET STOP_LOSS = @stopLoss set A = WilliamsPctR(@periods) SET I = @datainizio SET F = @datafine CROSSOVER(A, @highMark) AND DATE>= I AND DATE<= F
-Imposto il grafico con 50.000 barre e verifico la data di inizio (11/09/2014).Codice:set A = WilliamsPctR(@periods) SET I = @datainizio SET F = @datafine CROSSOVER(@lowMark, A)AND DATE>= I AND DATE<= F
-Imposto la data di partenza (@datainizio) dal 12/09/2014 per avere un numero sufficiente di barre a monte per l\'inizio dei calcoli.
-Calcolo che 5.000 barre equivalgono a circa 6gg di borsa.
- Imposto la data di chiusura (@datafine) al 19/09/2014.
-Avvio l\'ottimizzazione dei parametri @periods, @lowMark, @highMark, @stopLoss.
Sono previste 1344 combinazioni e un tempo previsto di oltre 1h 32\', con la CPU fissa al 100%.
Mi sembra strano, perché altre ottimizzazioni analoghe richiedevano pochi minuti.
E\' un problema dovuto a come ho impostato lo script o dipende da cause estranee a BT?Last edited by alex69; 11-12-14, 16:15.Comment
-
No Alex , semplicemente dipende dal fatto che BT effettua i calcoli di ottimizzazione su tutte le 50.000 barre del grafico indipendentemente dal fatto dell\' utilizzo o meno della funzione date. La velocità di elaborazione dipende anche dalla potenza della cpu, dal sistema operativo 32 o 64 bit e infine dalla relativa memoria Ram che piu ce n\'è meglio è.
Che computer stai utilizzando ?
Apo....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
No Alex , semplicemente dipende dal fatto che BT effettua i calcoli di ottimizzazione su tutte le 50.000 barre del grafico indipendentemente dal fatto dell\' utilizzo o meno della funzione date. La velocità di elaborazione dipende anche dalla potenza della cpu, dal sistema operativo 32 o 64 bit e infine dalla relativa memoria Ram che piu ce n\'è meglio è.
Che computer stai utilizzando ?
Apo
Ho un HP ProDesk (Core i7 - Ram 16Gb - Win7 64bit).
Finora si è comportato bene, anche se ho notato che negli Overspread scanning, con liste di alcune centinaia di titoli ha prestazioni inferiori rispetto a quelle di alcuni altri utenti.
La 1a ottimizzazione è stata interrotta poiché BT è andato in crash.
Ho riprovato con una seconda ottimizzazione di prova, con circa 1/3 di combinazioni.
Da una prima osservazione c\'è qualcosa di strano, in primis risultano pochissimi Trades per ciascun set.
Seleziono il primo risultato e verifico:
Dalla lettura del grafico mi sembra che il TS non stia rispettando i criteri impostati.
E non ne riesco a capire la ragione.
Ad esempio, il trade n° 3 (terzo cerchietto) chiude in Stop dopo diversi giorni, anche se, come si vede dalla lettura dell\'indicatore, ci sono stati diversi cross del @lowmark (-45), dove in realtà ci sarebbe stato un ampio gain.
Inoltre sono tutti trades Long.Comment
-
so what
Vi ringrazio per postare la procedura di ottimizzazione del TS che ho trovato molto istruttiva.
Sembrerebbe però che il TS Williams R% non abbia superato il test. Ho capito bene?
E cosa dicono i "colleghi" che invece stavano ottenendo lauti guadagni? Proseguono?
Sarebbe interessante vedere se i 2 giudizi convergono oppure....capire in cosa divergono
Grazie comunque per quello che scrivete
"la libertà è il tempo della vita che se ne va e che spendiamo nelle cose che ci motivano”. PepeComment
-
Ciao Fab,Vi ringrazio per postare la procedura di ottimizzazione del TS che ho trovato molto istruttiva.
Sembrerebbe però che il TS Williams R% non abbia superato il test. Ho capito bene?
E cosa dicono i "colleghi" che invece stavano ottenendo lauti guadagni? Proseguono?
Sarebbe interessante vedere se i 2 giudizi convergono oppure....capire in cosa divergono
Grazie comunque per quello che scrivete
confermo, per ora il TS non ha superato la prova.
La procedura fin qui descritta serve proprio a evitare di cadere nella trappola classica, come ha ben spiegato Apo.
Se ho trovato un settaggio che funziona egregiamente su un campione di dati, devo poter replicare le stesse performance anche su altri campioni in backtest e poi in paper, senza forzature.
Sono anch\'io curioso di avere notizie dagli utenti cui facevi riferimento.
Nonostante i ripetuti appelli a loro rivolti per partecipare a questa discussione, niente.
Ovviamente ognuno è libero di fare come crede.
Comunque sto provando a inserire qualche modifica al TS per vedere se riesco, con le mie limitate capacità di programmazione, a migliorare i suoi punti deboli. Se ne avrò bisogno chiederò soccorso agli esperti.
Per ora non mollo e se ci sono sviluppi vi tengo aggiornati.
Comment
-
Sto cercando di correggere (o almeno ci provo) i punti deboli del nostro TS, per poi procedere alla verifica con i criteri finora visti.
Osservando il grafico, ho notato che alcuni trades sono stati penalizzati da falsi segnali.
Come si vede in figura un piccolo ritracciamento dell\'indicatore ha interrotto un segnale Long molto promettente, avviando di contro uno Short:
Ho pensato quindi di inserire una condizione per cui il segnale Long o Short, devono avvenire non prima di un certo numero di barre dal primo cross.
Mi spiego meglio riferendomi all\'esempio sopra:
- Abbiamo un trade aperto Long.
- L\'indicatore crossa la linea rossa (@lowmark) dal basso in alto.
- Da questo momento in poi, ogni cross dall\'alto in basso della linea rossa farebbe scattare Chiusura Long/Apertura
Short.
- Voglio invece che fra il 1° cross (dal basso in alto) e il successivo, ci debba essere una distanza minima, per evitare falsi segnali.
(Il criterio impostato è: verifica anche che il %R di n barre prima sia > di @lowmark)
Lo script così modificato è questo:
Buy Script
Sell ScriptCodice:INPUTS: @periods(100), @lowMark(-35), @highMark(-65),@stopLoss(200), @ritardo(60) SET STOP_LOSS = @stopLoss set A = WilliamsPctR(@periods) SET R= @ritardo SET H= REF(A, R) CROSSOVER(A, @highMark) AND H<@highMark PRINT(A, H)
Il debug mostra che i vettori sono corretti:Codice:set A = WilliamsPctR(@periods) SET R= @ritardo SET H= REF(A, R) CROSSOVER(@lowMark, A) AND H>@lowMark
Quindi, modificando il parametro @ritardo, dovrei avere risultati di volta in volta diversi.
Invece, gli esiti del backtest restano invariati e dall\'esame del grafico, la condizione non viene eseguita affatto.
Sicuramente c\'è un errore, ma non lo trovo.
Chiedo aiuto agli esperti.Comment
-
buonasera,
vorrei aggiungere una riflessione all\'analisi dei risultati di una ottimizzazione a cui è bene fare attenzione.
L\'osservazione si rifà alla proprietà della stabilità numerica o di un algoritmo in generale.
Par fare semplice un discorso complesso e nemmeno rigoroso ( nel trading poi... ) , vogliamo assicurarci che una piccola variazione dei DATI IN INGRESSO non producano GRANDI VARIAZIONI NEL RISULTATO.
Se ciò accade il TS è come si sul dire overfittato.
Intanto andiamo a vedere quali sono gli elementi in gioco:
1)le barre
2)il TS
3)i parametri del TS
questi tre elementi possono variare o singolarmente o in piu di uno contemporaneamente.
In questo post vi mostro un\'"idea" su come valutare se un parametro che è stato scelto è o meno in overfitting.
p.s. ci sono molte altre cose che si possono indagare per valutare l\'overfitting.. primi fra tutti i grafici del runup e DD che ancora non ho visto postare ...
Comunque dopo che avete eseguito l\'ottimizzazione delle variabili ordinate per TNT , otterrete quindi la colona TNT ordinata dal valore più alto a quello più basso. Vi riporto un esempio in cui ho usato pari pari il TS di W% di cui si parla..
dalla figura vedete che il Max TNP si ha con un @period di 4
A questo punto procedete ad ordinare i risultati per la colonna @periods.
Andate a cercare il valore che avreste voluto immettere nel TS. (@periods = 4)
Come si vedere tutti i valori PRIMA e DOPO del 4 (@periods < 4 e @perionds > 4) ... portano ENORMI differenze nei risultati (addirittura il TNP passa da positivo a negativo)Last edited by Marco Bosco; 12-12-14, 20:11.I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)Comment
-
Per provare a vedere come si comporta il TS cambiando come ingresso le barre, potete provarlo con diverse finestre temporali come già piu volte detto.
Nell\'esempio di TS di cui si parla in questi giorni non c\'è il TrailingStop, ma nei TS in cui si usa, avete anche i simulatori di distribuzione dei prezzi per valutare quanto una variazione dei prezzi avrebbe inciso nel TNP.
I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)Comment
-
Poi è molto utile avviare ad esaminare anche gli altri strumenti che sono messi a disposizione per l\'analisi dei TS.
Vediamo per esempio il DD
Da questo esempio si può vedere che mediamente i trade sono andati in DD di -348,75€
Tra l\'altro tutti quelli sopra la media poi hanno chiuso in gain , mentre sotto la media hanno poi perso e 3 anche parecchio.
-900
-1000
-1380
Adesso ci vuole l\'astuzia di togliere di mezzo quei loss o compensarli.
E per farlo ci sono parecchie armi ... specialmente per chi segue questo forum
A qualcuno viene in mente qualcosa......?
Ovviamente questo era solo un esempio con pochissimi trades ; avviate a vedere anche tutti gli altri grafici e ragionarci sopra...Last edited by Marco Bosco; 12-12-14, 20:52.I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)Comment


Comment