Thursday 23 November 2017

Backtesting Trading Strategie Con R


Im molto nuovo per R e cercando di backtest una strategia Ive programmato già in WealthLab. Diversi roba Non capisco (e non funziona, ovviamente :) Io non ottenere le Tariffe bene in un vettore. o qualche tipo di vettore, ma si inizia con la struttura e io non capisco cosa questa funzione fa. Ecco perché la mia serie, 1 chiamata probabilmente non funziona. n LT - lavoro nrow (serie) doesnt neanche, ma ho bisogno che per il Loop Quindi credo che se ottengo queste 2 domande hanno risposto alla mia strategia dovrebbe funzionare. Im molto grato per qualsiasi help..R sembra piuttosto complicato anche con esperienza di programmazione in altre lingue sì io tipo di copiato alcune righe di codice da questo tutorial e don39t davvero capire questa linea. Insomma serie, 1 ho pensato che sarebbe applicare la funzione f su quotcolumnquot 1 della serie. Ma dal momento che questa serie è un po 'compley con struttura ecc doesn39t lavoro. I39m parlando di questo tutorial: r-bloggersbacktesting-a-trading-strategia ndash MichiZH 6 giugno 13 a 14: 22Backtesting: Interpretazione Il passato backtesting è un componente chiave di un efficace sviluppo commerciale del sistema. Tutto è compiuto ricostruendo, con i dati storici, mestieri che si sarebbero verificati in passato utilizzando le regole definite da una determinata strategia. Il risultato offre statistiche che possono essere utilizzati per valutare l'efficacia della strategia. Utilizzando questi dati, gli operatori possono ottimizzare e migliorare le loro strategie, trovare eventuali difetti tecnici o teoriche, e guadagnare la fiducia nella loro strategia prima di applicarlo ai mercati reali. La teoria di fondo è che qualsiasi strategia che ha funzionato bene in passato è in grado di lavorare bene in futuro, e viceversa, qualsiasi strategia che ha eseguito male in passato, è probabile che scarso rendimento in futuro. Questo articolo prende in esame quali applicazioni vengono utilizzate per backtest, che tipo di dati si ottiene, e come metterlo a utilizzare i dati e gli strumenti di backtesting può fornire un sacco di feedback statistico preziose su un dato sistema. Alcune statistiche backtesting universali includono: utile o la perdita - percentuale di guadagno netto o la perdita. Tempo di telaio - date passate in cui si è verificato prova ing. Universo - Azioni che sono stati inclusi nel backtest. misure di volatilità - Percentuale massima rialzo e ribasso. Medie - percentuale media di guadagno e la perdita media, bar media detenuta. L'esposizione - Percentuale del capitale investito (o esposta al mercato). Rapporti - Vittorie-to-perdite rapporto. Annualizzato ritorno - ritorno percentuale più di un anno. rendimento percentuale in funzione del rischio - rendimento corretto per il rischio. In genere, il software di backtesting avrà due schermi che sono importanti. Il primo permette al trader di personalizzare le impostazioni per il backtesting. Queste personalizzazioni comprendono tutto, dalla periodo di tempo di spese di commissione. Ecco un esempio di un tale schermo in AmiBroker: La seconda schermata è l'attuale rapporto di risultati dei test retrospettivi. Questo è dove si possono trovare tutte le statistiche di cui sopra. Ancora una volta, ecco un esempio di questa schermata in AmiBroker: In generale, la maggior parte di software commerciale contiene elementi simili. Alcuni programmi software di fascia alta includono anche funzionalità aggiuntive per eseguire il dimensionamento posizione automatica, l'ottimizzazione e altre funzioni più avanzate. I 10 Comandamenti Ci sono molti fattori commercianti prestare attenzione a quando sono backtesting strategie di trading. Ecco una lista delle 10 cose più importanti da ricordare, mentre backtesting: Prendere in considerazione le grandi tendenze del mercato nel lasso di tempo in cui è stata testata una determinata strategia. Ad esempio, se una strategia è stata backtested solo 1999-2000, potrebbe non passerai bene in un mercato orso. Spesso è una buona idea di backtest per un periodo di tempo lungo, che comprende diversi tipi di condizioni di mercato. Prendere in considerazione l'universo in cui si è verificato backtesting. Ad esempio, se un sistema ampio mercato viene testato con un universo composto da titoli tecnologici, potrebbe non riuscire a fare bene in diversi settori. Come regola generale, se la strategia è mirata verso un genere specifico di magazzino, di limitare l'universo di questo genere, ma, in tutti gli altri casi, mantenere un grande universo a scopo di test. misure di volatilità sono estremamente importanti per prendere in considerazione nello sviluppo di un sistema di trading. Questo è particolarmente vero per gli account di leveraged, che sono sottoposti a richieste di margini se il loro capitale scende sotto un certo punto. Gli operatori dovrebbero cercare di mantenere bassa volatilità, al fine di ridurre i rischi e consentire più facile la transizione dentro e fuori di un determinato stock. Il numero medio di bar detenuti è molto importante anche per guardare quando si sviluppa un sistema di trading. Sebbene la maggior parte del software di backtesting include spese di commissione nei calcoli finali, questo non significa che si dovrebbe ignorare questa statistica. Se possibile, aumentare il numero medio di bar possedute in grado di ridurre i costi di commissione, e migliorare il rendimento complessivo. L'esposizione è una spada a doppio taglio. Maggiore esposizione può portare a maggiori profitti o le perdite maggiori, mentre è diminuito l'esposizione significa minori profitti o perdite inferiori. Tuttavia, in generale, è una buona idea per mantenere l'esposizione al di sotto 70, al fine di ridurre il rischio e consentire agevole passaggio dentro e fuori di un determinato stock. La statistica medio-gainloss, in combinazione con il rapporto vittorie-per-le perdite, può essere utile per determinare la posizione ottimale dimensionamento e la gestione del denaro utilizzando tecniche come la Kelly Criterion. (Vedere Money Management utilizzando il criterio di Kelly.) Gli operatori possono assumere posizioni più grandi e ridurre i costi di commissione, aumentando i loro guadagni medi e aumentando il loro rapporto vittorie-to-perdite. rendimento annualizzato è importante perché è utilizzato come strumento per riferimento un sistema restituisce contro altre sedi di investimento. E 'importante non solo per esaminare il rendimento annualizzato generale, ma anche di prendere in considerazione il rischio aumentato o diminuito. Questo può essere fatto guardando il rendimento corretto per il rischio, che rappresenta vari fattori di rischio. Prima di un sistema di negoziazione è adottato, esso deve superare tutte le altre sedi di investimento a rischio uguale o inferiore. Backtesting personalizzazione è estremamente importante. Molte applicazioni backtesting hanno ingresso per gli importi delle commissioni, rotonde (o frazionali) lotto dimensioni, spunta dimensioni, i requisiti di margine, i tassi di interesse, ipotesi slittamento, le regole di posizione dimensionamento, regole di uscita dello stesso bar, (finali) fermare le impostazioni e molto altro ancora. P er ottenere i risultati dei test retrospettivi più accurati, i t è importante per regolare queste impostazioni per imitare il broker che verrà utilizzato quando il sistema va in diretta. Backtesting a volte può portare a qualcosa di noto come eccesso di ottimizzazione. Questa è una condizione in cui i risultati di prestazione sono sintonizzati così altamente al passato che sono più come esatte in futuro. E 'generalmente una buona idea per implementare regole che si applicano a tutti gli stock, o un gruppo selezionato di azioni mirate, e non sono ottimizzati nella misura in cui le regole non sono più comprensibili dal creatore sono. Backtesting non è sempre il modo più accurato per misurare l'efficacia di un dato sistema di trading. A volte le strategie che si sono esibiti bene in passato non riescono a fare bene nel presente. I rendimenti passati non sono indicativi di risultati futuri. Assicurarsi di commercio di carta un sistema che è stato con successo backtested prima di andare in diretta per essere sicuri che la strategia si applica ancora in pratica. Conclusione Backtesting è uno degli aspetti più importanti di sviluppo di un sistema di trading. Se creata e interpretata correttamente, può aiutare gli operatori a ottimizzare e migliorare le loro strategie, trovare eventuali difetti tecnici o teorici, così come acquisire fiducia in loro strategia prima di applicarlo ai mercati del mondo reale. Risorse Tradecision (tradecision) - High-end Trading System Development AmiBroker (AmiBroker) - Budget Trading System Development. Una teoria economica della spesa totale per l'economia e dei suoi effetti sulla produzione e l'inflazione. economia keynesiana è stato sviluppato. Una partecipazione di un bene in un portafoglio. Un investimento di portafoglio è realizzato con l'aspettativa di guadagnare un ritorno su di esso. Questo. Un rapporto sviluppato da Jack Treynor che misura i rendimenti ottenuti, superiori a quelle che avrebbero potuto essere guadagnati su un privo di rischio. Il riacquisto delle azioni in circolazione (riacquisto) da parte di una società al fine di ridurre il numero di azioni sul mercato. Aziende. Il rimborso fiscale è un rimborso sulle tasse pagate ad un individuo o famiglia quando l'onere fiscale effettivo è inferiore alla quantità. Il valore monetario di tutti i beni e servizi prodotti all'interno di un confini country039s in un momento specifico period. How di backtest una strategia di R finiti andavano a esplorare le capacità di backtesting di R. In un post precedente abbiamo sviluppato alcune semplici opportunità di ingresso per la USDCAD utilizzando un algoritmo e le tecniche di apprendimento automatico da un sottoinsieme di dati mining apprendimento regola chiamata associazione. In questo post, ci accingiamo ad esplorare come fare un backtest completa in R con le nostre regole del post precedente e l'attuazione di prendere profitti e fermare le perdite. Consente di tuffo a destra in: Nota: il backtest viene costruita fuori le barre di 4 ore nel nostro set di dati e non ha una visione più granulare. Il CAGR (tasso di crescita) è la percentuale di gainloss annualizzato, il che significa che leviga la crescita in rate uguali ogni anno. Dal momento che la nostra prova era finita Consente di vedere se siamo in grado di migliorare le prestazioni con l'aggiunta di uno stop loss e take profit. Con solo uno stop loss, le prestazioni è andato giù. Sembra che ci stiamo portati fuori dei nostri mestieri prima che siano in grado di recuperare. Al fine di bloccare in nostri profitti, lascia andare avanti e realizzare un take profit. Il blocco nei nostri guadagni con un take profit leggermente migliorato le prestazioni, ma non drasticamente. Consente di incorporare sia uno stop loss e take profit. Ora consente di confrontare la strategia di breve Long Baseline, con solo uno stop loss, solo un take profit, e sia uno stop loss prendere e prendere profitto. Ora sapete come aggiungere un take profit e stop loss, vi consiglio di giocare con i dati e testare diversi valori in base alle proprie parametri di rischio personale e con le proprie regole. Anche con potenti algoritmi e strumenti sofisticati, è difficile costruire una strategia di successo. Per ogni buona idea, ci tendono ad avere molti quelli più cattivi. Armati con gli strumenti giusti e le conoscenze, è possibile in modo efficiente testare le vostre idee fino ad arrivare a quelli buoni. Abbiamo semplificato questo processo nel TRAIDE. Weve sviluppato un'infrastruttura di test che permette di vedere dove i modelli sono i dati sono in tempo reale, vedere come avrebbero effettuato sui dati storici. Bene rilascerà TRAIDE per 7 principali coppie nel mercato FX con gli indicatori tecnici in due settimane. Se siete interessati a testare il software e fornire un feedback, si prega di inviare una email a infoinovancetech. Abbiamo 50 spots gente available. The a 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