Discussione: Come ottimizzare un Trading System
-
10-12-14, 23:47 #51
- Data Registrazione
- Dec 2012
- Messaggi
- 432
Grazie infinite a te Apo per la tua disponibilità, l'appoggio tecnico e morale.
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.
-
11-12-14, 12:10 #52
- Data Registrazione
- Dec 2012
- Messaggi
- 432
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:
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
Mentre il Sell Script diventa:
set A = WilliamsPctR(@periods) SET I = @datainizio SET F = @datafine CROSSOVER(@lowMark, A)AND DATE>= I AND DATE<= F
-Imposto il grafico con 50.000 barre e verifico la data di inizio (11/09/2014).
-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?Ultima modifica di alex69; 11-12-14 alle 16:15
-
11-12-14, 15:12 #53
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)....
-
11-12-14, 16:13 #54
- Data Registrazione
- Dec 2012
- Messaggi
- 432
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.
-
12-12-14, 09:23 #55
- Data Registrazione
- Apr 2014
- Messaggi
- 319
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
-
12-12-14, 11:12 #56
- Data Registrazione
- Dec 2012
- Messaggi
- 432
Ciao Fab,
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.
-
12-12-14, 16:03 #57
- Data Registrazione
- Dec 2012
- Messaggi
- 432
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
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)
Sell Script
set A = WilliamsPctR(@periods) SET R= @ritardo SET H= REF(A, R) CROSSOVER(@lowMark, A) AND H>@lowMark
Il debug mostra che i vettori sono corretti:
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.
-
12-12-14, 19:33 #58
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)Ultima modifica di Marco Bosco; 12-12-14 alle 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)
-
12-12-14, 20:12 #59
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)
-
12-12-14, 20:29 #60
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...Ultima modifica di Marco Bosco; 12-12-14 alle 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)