Monday 2 October 2017

Quantstrat Convertitore Forex


Sto cercando di backtest una strategia di trading con il pacchetto quantstrat. La mia strategia è composta da 4 indicatori, 3 differenti EMAS e 1 EMA ritardati. Voglio andare lungo quando: EMA1 EMA2 amp EMA1 EMA3 amp EMA1lag lt EMA1 voglio uscire e andare piano quando: EMA1 lt EMA3 La sua piuttosto semplice, ma io non sono in grado di scrivere in quantstrat ambiente. Ecco una funzione di controllo di integrità dei dati utilizzati in entrambi gli esempi: Ecco il codice assorbente che fa quello che voglio: ho cercato di replicare la strategia di cui sopra con quantstrat (utilizzando add. indicator add. signal add. rule..), Ma i risultati sono decisamente diverso. Ecco il secondo codice con quantstrat: Qualcuno potrebbe aiutarmi a capire il motivo per cui il secondo codice doesnt dare risultati identici Credo che i miei errori sono all'interno della add. indicator. add. signal. messa a punto add. rule, ma io non sono in grado di capire con precisione. chiesto 23 agosto 15 alla 17:02 Il codice quanstrat-based non fornisce risultati identici per diversi motivi. Uno è che le colonne non sono corretti nei vostri primi 3 chiamate add. signal. Tutte le colonne devono avere un EMA. prefisso: Un altro problema, e probabilmente la principale causa di differenze, è il segnale successivo: che crea un segnale per ogni osservazione in cui la formula è vera, non solo le osservazioni in cui la formula attraversa da false a true. Si desidera solo le osservazioni in cui la formula attraversa, così si dovrebbe usare: Un'altra fonte di differenze è di usare sempre il 100 del vostro capitale disponibile per la transazione lunga apertura nella versione carta assorbente, ma è sempre acquista 900 azioni nella versione quantstrat. Si può fare qualcosa di simile in quantstrat utilizzando una funzione di ordine personalizzato dimensionamento (vedi osNoOp e osMaxPos per esempi su come scrivere una funzione di ridimensionamento ordine personalizzato).I ragazzi di Rstudio hanno fatto un po 'di lavoro straordinario con il pacchetto lucido. Dalla home page di lucido, 8220Shiny rende super semplice per gli utenti R come di trasformare analisi in applicazioni interattive web che chiunque può use.8221 sviluppo di applicazioni web ha sempre mi ha affascinato, ma di hosting, l'apprendimento javascript, html, ecc mi ha fatto mettere questo piuttosto basso sulla mia lista di priorità. Con lucida, si può scrivere applicazioni web a R. Questo esempio utilizza l'insieme di dati ai manager chiamate a charts. PerformanceSummary e table. Stats dal pacchetto PerformanceAnalytics per visualizzare un grafico e la tabella nell'applicazione lucido. È necessario disporre di pacchetti luccicanti e prestazioni Analytics installati per eseguire l'applicazione. Una volta che questi sono installati, aprire il prompt R ed eseguire: C'è un grande tutorial di lucido da Rstudio così come esempi da SystematicInvestor per coloro che sono interessati a saperne di più. Gli ultimi messaggi su slancio con R concentrati su un modo relativamente semplice per backtest strategie di momentum. Nella parte 4, io uso il quadro quantstrat di backtest una strategia di slancio. Utilizzando quantstrat apre la porta a diverse funzioni e opzioni, nonché un portafoglio ordini per controllare i traffici al completamento del backtest. Mi presento alcune nuove funzioni che vengono utilizzati per preparare i dati e calcolare i ranghi. I won8217t passare attraverso di loro in dettaglio, queste funzioni sono disponibili nel mio github repo nella cartella rango funzioni. Questo primo pezzo di codice solo carica le librerie necessarie, dati, e applica la funzione ave3ROC per classificare le attività in base la media dei 2, 4, e 6 mesi i rendimenti. Si noti che è necessario caricare le funzioni in Rank. R e mensile-fun. R. Il prossimo pezzo di codice è un passaggio fondamentale nella preparazione dei dati da utilizzare in quantstrat. Con i ranghi calcolati, il passo successivo è quello di legare i ranghi ai dati effettivi di mercato devono essere usati con quantstrat. E 'anche importante cambiare i nomi di colonna per E. G. XLY. Rank perché che verrà utilizzato come colonna segnale di commercio quando quantstrat viene utilizzato. Ora il backtest può essere eseguito. La qstratRank funzione è solo una funzione di convenienza che nasconde l'implementazione quantstrat per la mia strategia Rank. Per questa prima backtest, sto trading I migliori 2 Attività con una dimensione carica di 1000 unità. Cambiare l'argomento max. levels2 offre la flessibilità di 8220scaling8221 in un mestiere. In questo esempio, diciamo bene ABC è classificato 1 nel primo mese 8212 compro 500 unità. Nel mese 2, patrimoniale ABC è ancora classificato 1 8212 ho comprare un altro 500 unità. Nel post precedente, ho dimostrato backtests semplici per lo scambio di un certo numero di beni classificati in base alle loro dichiarazioni semplici 3, 6, 9, o 12 (i. e periodi lookback) al mese. Anche se non era un backtest esaustivo, i risultati hanno mostrato che quando le negoziazioni i primi 8 beni ordinati, la classifica basata 3, 6, 9, 12 e ritorna al mese portato a prestazioni simili. Se i risultati sono stati simili per i diversi periodi lookback, che periodo lookback devo scegliere per la mia strategia La mia risposta è quella di includere più periodi lookback nel metodo di classificazione. Questo può essere ottenuto prendendo la media dei 6, 9, e 12 restituisce mese, o altri ritorni n mesi. Questo ci dà il vantaggio di diversificare su più periodi lookback. Se credo che il periodo lookback di 9 rendimenti mese è migliore di quello del mese 6 e 12, posso usare una media ponderata per dare il ritorno nove mesi un peso più elevato in modo che abbia più influenza sulla determinazione del rango. Questo può essere implementato facilmente con ciò che io chiamo la funzione WeightAve3ROC () mostrato di seguito. La funzione è piuttosto auto esplicativo, ma non esitate a chiedere se avete domande. Ora i risultati della prova. Il grafico seguente mostra i risultati di utilizzare 6, 9, e 12 rendimenti mese e una media di 6, 9, e 12 ritorna al mese e la media ponderata di 6, 9, e 12 ritorna al mese. Caso 1: semplice test di moto sulla base di 6 mesi ROC di rango Caso 2: semplice test di moto sulla base di 9 mesi ROC di rango Caso 3: semplice test di moto sulla base di 12 mesi ROC di rango Caso 4: semplice test di moto basata sulla media di 6 , 9, e 12 mesi ROC di rango caso 5: semplice test di moto sulla base di media ponderata di 6, 9, e 12 mesi ROC di rango. I pesi sono 16, 23, 16 per i ritorni 6, 9 e 12 mesi. Ecco una tabella dei rendimenti ei prelievi massimi per il test. Questo test dimostra come può essere possibile ottenere migliori rendimenti risk adjusted (più alto CAGR e per gli utilizzi più bassi in questo caso) considerando periodi multipli lookback nel metodo di classificazione. codice R completa è al di sotto. Ho incluso tutte le funzioni nello script R di seguito per rendere più facile per voi per riprodurre i test e provare le cose, ma mi sento di raccomandare di mettere le funzioni in un file separato e l'utilizzo di fonti () per caricare le funzioni per mantenere il codice più pulito. Molti dei siti ho collegato al post precedente sono articoli o documenti sulla slancio investire che indagano il tipico classifica fattori di 3, 6, 9, e 12 ritorna al mese. La maggior parte (non tutti) gli articoli cercano di trovare quale sia il miglior periodo di look-indietro per classificare i beni. Dire che l'esito di questo articolo è che il 6 mesi sguardo-back ha i rendimenti più elevati. Un commercio di una strategia che utilizza solo un periodo di look-back 6 mesi per classificare i beni mi lascia vulnerabili a un eccesso di raccordo sulla base dei risultati backtest. Il backtest ci dice nulla di più di quale strategia eseguito il migliore in passato, ci dice nulla circa la duh future8230 Ogni volta che ho rivedere i risultati di test retrospettivi, mi chiedo sempre un sacco di che cosa succede se domande. Qui ci sono 3 che cosa succede se domande che vorrei chiedere questo backtest sono: cosa succede se la strategia basata su un 6 mesi look-indietro sotto esegue e il mese 9 o 3 mesi inizia a oltre svolgere Che cosa succede se le strategie basate su 3, 6, e periodi di look-back 9 mesi hanno circa lo stesso rendimento e profilo di rischio, quale strategia dovrei commercio se le attività con elevata volatilità stanno dominando la classifica e quindi guida le restituisce il backtests visualizzati sono semplici backtests lo scopo di dimostrare la variabilità dei rendimenti sulla base di periodi di sguardo-back e il numero di attività negoziate. I grafici che seguono mostrano le prestazioni di una strategia di moto utilizzando 3, 6, 9, 12 e ritorna al mese e negoziazione l'1, 4, 8 e beni ordinati. Si noterà che vi sia una significativa volatilità e variabilità dei ritorni soltanto negoziazione 1 risorsa. La variabilità tra i periodi sguardo-back è ridotta, ma non c'è ancora una chiara periodo migliore aspetto-back. Ci sono periodi di sotto delle prestazioni e più di prestazioni per tutti i periodi di guardare indietro nel test. Ecco il codice R utilizzato per i test retrospettivi e le trame. Lascia un commento se avete domande su il codice qui sotto. Il tempo vola davvero, è difficile credere che è stato più di un mese dal mio ultimo post. Lavoro e vita in generale hanno consumato gran parte del mio tempo ultimamente e ha lasciato poco tempo per posti di ricerca e blog. In ogni caso, sul palo Questo post sarà il primo di una serie di coprire una strategia di moto utilizzando R. Uno dei miei preferiti è strategie di una quantità di moto o di una strategia forza relativa. Qui sono solo alcuni dei motivi per cui mi piace di moto: semplice da implementare a lungo solo o portafogli longshort molti modi per definire la forza o la quantità di moto misurarlo solo funziona Inoltre, una strategia di moto si presta bene a potenziale di diversificazione. L'universo degli strumenti può essere infinita, ma gli strumenti scambiati sono finite. Pensare in questo modo gli investitori Un guarda 10 strumenti e investe 1000 nella top 5 strumenti ordinati per slancio. Investor B guarda 100 strumenti e investe 1000 nella top 5 strumenti ordinati per slancio. Investitore A sta limitando il suo potenziale di diversificazione da solo avendo un universo di 10 strumenti. Investitore B ha un universo molto più grande di strumenti e può in teoria essere più diversificate. Teoricamente parlando, è possibile barattare un numero infinito di strumenti con una quantità finita di capitale di trading utilizzando una quantità di moto o di una strategia forza relativa. Scopri questi link per ulteriori letture In questo primo post della serie sulla quantità di moto, voglio andare oltre alcune delle impostazioni di base e le funzioni che useremo. Il primo passo è quello di ottenere i dati da Yahoo. Si noti che il ciclo for converte i dati a mensile e sottoinsiemi i dati in modo che l'unica colonna teniamo è la stretta colonna di regolazione. Ora abbiamo quattro oggetti (XLY, XLP, XLE, XLF) che hanno il primo prezzo adeguato. Il passo successivo è quello di unire questi quattro oggetti in un unico oggetto che contiene il prezzo di chiusura rettificato. Siamo in grado di fare questo in un semplice one-liner in R Per il fattore che verrà classificato, userò il tasso 3 periodo di cambiamento (ROC).

No comments:

Post a Comment