Sunday 5 November 2017

Medio Panda Esponenziale Movimento


Media mobile esponenziale La media mobile esponenziale Il mobile esponenziale differisce media da una media mobile semplice, sia con il metodo di calcolo e nel modo in cui i prezzi sono ponderati. La media mobile esponenziale (abbreviato la sigla EMA) è effettivamente una media mobile ponderata. Con l'EMA, il peso è tale che i recenti prezzi giorni avranno un peso maggiore rispetto ai prezzi più anziani. La teoria dietro questo è che i prezzi più recenti sono considerati più importanti dei prezzi anziane, soprattutto come semplice media di lungo termine (ad esempio 200 giorno) pone uguale peso su dati prezzi che è oltre 6 mesi e potrebbe essere pensato di come un po 'out-of-date. Calcolo del EMA è un po 'più complessa di quanto la media mobile semplice, ma ha il vantaggio che un grande record di dati che coprono ogni prezzo di chiusura per gli ultimi 200 giorni (o comunque molti giorni vengono presi in considerazione) non devono essere tenuti . Tutto ciò che serve sono l'EMA per il giorno e oggi prezzo per calcolare il nuovo media mobile esponenziale di chiusura precedente. Calcolo del Esponente Inizialmente, per l'EMA, un esponente deve essere calcolato. Per iniziare, prendere il numero di giorni EMA che si desidera calcolare e aggiungere uno al numero di giorni che sei in considerazione (ad esempio, per una media mobile 200 giorni, aggiungere uno per ottenere 201 come parte del calcolo). Bene chiamare questo giorni1. Quindi, per ottenere l'esponente, è sufficiente prendere il numero 2 e dividerlo per giorni1. Per esempio l'esponente di una media mobile a 200 giorni sarebbe: 2 201. Quale è uguale a 0,01 completo di calcolo se la media mobile esponenziale volta weve ha ottenuto l'esponente, tutti abbiamo bisogno ora sono più di due bit di informazioni che ci consentano di eseguire il calcolo completo . Il primo è di ieri media mobile esponenziale. Bene per scontato che già sappiamo come avremmo calcolato ieri. Tuttavia, se si arent già a conoscenza di ieri EMA, è possibile avviare calcolando la media mobile semplice per ieri, e l'utilizzo di questo al posto del EMA per il primo calcolo (ad esempio il calcolo di oggi) dell'EMA. Poi domani si può utilizzare la EMA si è calcolato oggi, e così via. Il secondo pezzo di informazioni di cui abbiamo bisogno è di oggi prezzo di chiusura. Lascia supporre che vogliamo calcolare oggi 200 giorni media mobile esponenziale di una quota o di magazzino che ha un precedente giorni EMA di 120 pence (o centesimi) e una corrente di giorni prezzo di 136 pence chiusura. Il calcolo completo è sempre la seguente: Todays media mobile esponenziale (giorni attuali prezzo di chiusura x Esponente) (giorni precedenti EMA x (1- Esponente)) Quindi, utilizzando il nostro esempio cifre di cui sopra, oggi 200 giorni EMA sarebbe: (136 x 0,01 ) (120 x (1- 0,01)) che equivale a un EMA per oggi di 120.16.Backtesting un Moving Average Crossover in Python con i panda nel precedente articolo sulla ricerca backtesting ambienti in Python con i panda abbiamo creato un backtesting basata sulla ricerca orientata agli oggetti ambiente e testato su una strategia di previsione casuale. In questo articolo andremo a fare uso della macchina abbiamo introdotto per effettuare ricerche su una strategia vera e propria, vale a dire il Moving Average Crossover su AAPL. Moving Average Crossover Strategia The Moving Average Crossover tecnica è una strategia estremamente noto slancio semplicistico. Si è spesso considerato l'esempio Ciao Mondo per la negoziazione quantitativa. La strategia, come indicato qui è long-only. vengono creati due semplici separato in movimento filtri medi, con diversi periodi di lookback, di una particolare serie di tempo. I segnali di acquisto del bene si verificano quando la media mobile lookback più breve supera la più lookback media mobile. Se la media più successivamente supera la media più breve, il bene viene venduto indietro. La strategia funziona bene quando una serie di tempo entra in un periodo di forte tendenza e poi inverte lentamente la tendenza. Per questo esempio, ho scelto di Apple, Inc. (AAPL), come le serie storiche, con una breve lookback di 100 giorni e una lunga lookback di 400 giorni. Questo è l'esempio fornito dalla libreria trading algoritmico zipline. Quindi se vogliamo implementare la nostra backtester dobbiamo garantire che corrisponda i risultati in zipline, come mezzo di base della convalida. Attuazione assicurarsi di seguire il tutorial precedente qui. che descrive come la gerarchia degli oggetti iniziale per l'backtester è costruito, in caso contrario il codice qui sotto non funziona. Per questa particolare applicazione ho usato le seguenti librerie: L'attuazione di macross. py richiede backtest. py dal tutorial precedente. Il primo passo è quello di importare i moduli e gli oggetti necessari: Come nel precedente tutorial andremo a creare una sottoclasse della classe di base astratta strategia per produrre MovingAverageCrossStrategy. che contiene tutti i dettagli su come generare i segnali quando le medie mobili di AAPL attraversare vicenda. L'oggetto richiede una shortwindow e longwindow su cui operare. I valori sono stati impostati per default di 100 giorni e 400 giorni, rispettivamente, che sono gli stessi parametri utilizzati nell'esempio principale della zipline. Le medie mobili sono creati usando i panda funzione rollingmean sul prezzo di chiusura barsClose del titolo AAPL. Una volta che i singoli medie mobili sono stati costruiti, la serie segnale viene generato impostando il colum pari a 1,0 quando la media mobile corta è maggiore della media a lungo in movimento o 0.0 altrimenti. Da questo gli ordini posizioni possono essere generati per rappresentare segnali di trading. Il MarketOnClosePortfolio è una sottoclasse di portafoglio. che si trova in backtest. py. È quasi identica alla realizzazione descritta nel tutorial precedente, con l'eccezione che le operazioni sono ora effettuate su base Close-to-Close, piuttosto che una base Open-to-Open. Per i dettagli su come l'oggetto del portafoglio è definito, vedere il tutorial precedente. Ive ha lasciato il codice per completezza e per mantenere questo tutorial autosufficiente: Ora che sono state definite le classi MovingAverageCrossStrategy e MarketOnClosePortfolio, una funzione principale sarà chiamata a legare tutte le funzionalità insieme. Inoltre le prestazioni della strategia sarà esaminata tramite un grafico della curva di equità. I download degli oggetti panda DataReader OHLCV prezzi di AAPL magazzino per il periodo 1 gennaio 1990 al 1 Gennaio 2002, a quel punto il dataframe segnali è stato creato per generare i segnali long-only. Successivamente il portafoglio è generato con una base di 100.000 dollari di capitale iniziale e il rendimento sono calcolati sulla curva di equità. Il passo finale è quello di utilizzare matplotlib per tracciare un diagramma a due cifre di entrambi i prezzi AAPL, sovrapposto con le medie mobili e segnali buysell, così come la curva di equità con gli stessi segnali buysell. Il codice tracciato è preso (e modificato) dalla esempio di implementazione zipline. L'uscita grafica del codice è il seguente. Ho fatto uso del comando Incolla IPython di mettere questo direttamente nella console IPython mentre in Ubuntu, in modo che l'output grafico è rimasto in vista. I upticks rosa rappresentano l'acquisto del magazzino, mentre i downticks neri rappresentano la vendita indietro: Come si può vedere la strategia perde denaro nel corso del periodo, con cinque di andata e ritorno dalle compravendite. Questo non è sorprendente dato il comportamento del AAPL nel corso del periodo, che era una leggera tendenza al ribasso, seguito da un significativo aumento a partire dal 1998. Il periodo lookback dei mobili segnali media è piuttosto grande e questo influenzato il profitto del commercio finale , che altrimenti potrebbe aver fatto la strategia redditizia. Negli articoli successivi creeremo un mezzo più sofisticati di analisi delle prestazioni, oltre a descrivere come ottimizzare i periodi lookback del singolo movimento segnali medi. Appena iniziato con strumenti quantitativi TradingComputational Analogamente, dataframe ha un metodo per calcolare COV covarianze a coppie tra la serie nella dataframe, escludendo anche i valori NAnull. Supponendo che i dati mancanti sono mancanti in modo casuale questo si traduce in una stima per la matrice di covarianza che è imparziale. Tuttavia, per molte applicazioni questa stima non può essere accettabile, perché la matrice di covarianza stimato non è garantito per essere positivo semi-definita. Ciò potrebbe portare a correlazioni stimate aventi valori assoluti che sono maggiori di uno, Andor una matrice di covarianza non invertibile. Vedere stima di matrici di covarianza per maggiori dettagli. DataFrame. cov supporta anche una parola minperiods opzionali che specifica il numero minimo richiesto di osservazioni per ciascuna coppia di colonne per avere un risultato valido. I pesi utilizzati nella finestra sono specificati dalla parola chiave wintype. L'elenco dei tipi riconosciuti sono: Boxcar triang blackman hamming Bartlett parzen Bohman blackmanharris Nuttall barthann kaiser (ha bisogno di beta) gaussiana (ha bisogno di std) generalgaussian (ha bisogno di potenza, larghezza) Slepian (larghezza esigenze). Notare che la finestra vagone equivale a dire (). Per alcune funzioni a finestre, devono essere specificati ulteriori parametri: Per. sum () con un wintype. non c'è normalizzazione fatto per i pesi per la finestra. Passando pesi personalizzati di 1, 1, 1 darà un risultato diverso da quello che passa pesi di 2, 2, 2. per esempio. Quando si passa un wintype invece di specificare esplicitamente i pesi, i pesi sono già normalizzati in modo che il peso più grande è 1. Al contrario, la natura del calcolo. mean () è tale che i pesi sono normalizzati rispetto all'altro. Pesi di 1, 1, 1 e 2, 2, 2 producono lo stesso risultato. Time-consapevoli di rotolamento Nuovo nella versione 0.19.0. Nuovo nella versione 0.19.0 sono la capacità di passare un offset (o convertibili) a un metodo. rolling () e farla produrre finestre di dimensione variabile in base alla finestra temporale passato. Per ogni punto di tempo, questo include tutti i valori precedenti che si verificano all'interno del delta time indicato. Questo può essere particolarmente utile per un indice di frequenza tempo non regolare. Questo è un indice di frequenza regolare. Utilizzando un parametro window intero funziona a rotolare lungo la frequenza finestra. Specifica di un offset permette una specificazione più intuitiva della frequenza di laminazione. Utilizzando un indice non regolare, ma ancora monotona, a rotazione con una finestra intero non impartisce alcun calcolo speciale. Usando il tempo-specifica genera finestre variabili per questo dati sparsi. Inoltre, ora permettiamo un optional sul parametro per specificare una colonna (piuttosto che il default dell'indice) in una dataframe. Time-consapevoli di rotolamento contro ricampionamento Utilizzando. rolling () con un indice basato sul tempo è molto simile a ricampionamento. Entrambi operano ed eseguire operazioni riduttive su oggetti panda tempo indicizzato. Quando si utilizza. rolling () con un offset. L'offset è un tempo-delta. Prendere una finestra all'indietro in time guardare, e aggregare tutti i valori in quella finestra (incluso il punto finale, ma non lo start-punto). Questo è il nuovo valore in quel punto nel risultato. Questi sono finestre variabili dimensioni in spazio-tempo per ciascun punto di ingresso. Si otterrà un risultato stesso di dimensioni come ingresso. Quando si utilizza. resample () con un offset. Costruire un nuovo indice che è la frequenza di offset. Per ciascun bin di frequenza, punti aggregati dall'ingresso all'interno di una finestra all'indietro in time guardando che rientrano in tale bin. Il risultato di questa aggregazione è l'uscita per tale punto di frequenza. Le finestre sono fissati dimensione nello spazio di frequenza. Il risultato avrà la forma di una frequenza regolare tra il minimo ed il massimo dell'oggetto input originale. Riassumere. rotolamento () è un'operazione finestra temporale basata, mentre. resample () è un'operazione finestra di frequenze basata. Centraggio Windows di default le etichette sono impostate per il bordo destro della finestra, ma una parola chiave centro è disponibile in modo che le etichette possono essere impostati al centro. Funzioni Finestra Binary COV () e corr () in grado di calcolare lo spostamento statistiche delle finestre su due serie o qualsiasi combinazione di DataFrameSeries o DataFrameDataFrame. Qui è il comportamento in ogni caso: due serie. calcolare la statistica per l'abbinamento. DataFrameSeries. calcolare le statistiche per ogni colonna del dataframe con la Serie passato, restituendo così una dataframe. DataFrameDataFrame. Per impostazione predefinita, calcolare la statistica per la corrispondenza nomi delle colonne, restituendo un dataframe. Se viene passato l'argomento pairwiseTrue parola chiave quindi calcola la statistica per ogni coppia di colonne, restituendo un pannello i cui elementi sono le date in questione (vedere la sezione successiva). Calcolo rotolamento covarianze a coppie e le correlazioni in analisi dei dati finanziari e di altri settori it8217s comune per calcolare covarianza e correlazione matrici per una collezione di serie storiche. Spesso si è anche interessato a trasferirsi finestra covarianza e correlazione matrici. Questo può essere fatto passando l'argomento chiave a coppie, che nel caso di ingressi dataframe produrrà un pannello i cui elementi sono le date in questione. Nel caso di un singolo argomento dataframe l'argomento a coppie può anche essere omesso: i valori mancanti vengono ignorati ed ogni voce è calcolata utilizzando le osservazioni complete a coppie. Si prega di consultare la sezione di covarianza per avvertimenti associati a questo metodo di calcolo covarianza e correlazione matrici. Oltre a non avere un parametro window, queste funzioni hanno le stesse interfacce come le loro controparti. rolling. Come in precedenza, i parametri sono tutti accettano sono: minperiods. soglia di punti dati non nulli da richiedere. Il valore predefinito è minimo necessario per il calcolo statistico. No NaN verrà emesso una volta minperiods punti dati non nulli sono stati visti. centro. booleano, se impostare le etichette al centro (di default è False) L'uscita del. rolling e metodi. expanding non restituiscono un NaN se ci sono almeno minperiods valori non nulli nella finestra corrente. Questo differisce da cumSum. cumprod. cummax. e cumino. che restituiscono NaN nell'output laddove viene rilevato un NaN nell'input. Una espansione finestra statistica sarà più stabile (e meno reattivo) rispetto al suo omologo finestra di laminazione come la dimensione della finestra aumentando diminuisce l'impatto relativo di un singolo punto di dati. A titolo di esempio, qui è l'uscita media () per il precedente set di dati di serie storiche: ponderata esponenzialmente di Windows Un insieme correlato di funzioni sono esponenzialmente versioni di alcune delle statistiche di cui sopra ponderato. Una interfaccia simile a. rolling e. expanding si accede attraverso il metodo. ewm per ricevere un oggetto EWM. Un certo numero di EW espansione (esponenzialmente ponderato) metodi sono forniti: Grazie per la pubblicazione della EMA. E sì, Talib in realtà dovrebbe essere disponibile. There39s po 'di lavoro su questo che sembra davvero molto promettente (githubquantopianziplinepull100). Cercherò di tirare questo presto per renderlo disponibile ad un pubblico più vasto. Il materiale in questo sito è fornito solo a scopo informativo e non costituisce un'offerta di vendita, una sollecitazione ad acquistare, o una raccomandazione o approvazione per qualsiasi titolo o di una strategia, né costituisce un'offerta di fornire servizi di consulenza per gli investimenti da Quantopian. Inoltre, il materiale non offre alcuna opinione per quanto riguarda l'idoneità di qualsiasi titolo o investimento specifico. Quantopian non garantisce l'esattezza e la completezza delle opinioni espresse nel sito. I punti di vista sono soggetti a modifiche, e possono essere diventati inaffidabili per vari motivi, tra cui i cambiamenti nelle condizioni di mercato o circostanze economiche. Ogni investimento comporta rischi, inclusa la perdita del capitale. Si consiglia di consultare con un professionista di investimento prima di prendere decisioni di investimento. Lo fa. Ma la maggior parte del lavoro di capire il modo migliore è già fatto. Abbiamo solo bisogno di finalizzarlo. Dopo di che, it39s solo un mucchio di copyamppaste per avvolgere l'intera libreria Talib. Ci sono molte cose buone nelle opere per affrontare alcune carenze. It39s una questione di risorse per la maggior parte. Il materiale in questo sito è fornito solo a scopo informativo e non costituisce un'offerta di vendita, una sollecitazione ad acquistare, o una raccomandazione o approvazione per qualsiasi titolo o di una strategia, né costituisce un'offerta di fornire servizi di consulenza per gli investimenti da Quantopian. Inoltre, il materiale non offre alcuna opinione per quanto riguarda l'idoneità di qualsiasi titolo o investimento specifico. Quantopian non garantisce l'esattezza e la completezza delle opinioni espresse nel sito. I punti di vista sono soggetti a modifiche, e possono essere diventati inaffidabili per vari motivi, tra cui i cambiamenti nelle condizioni di mercato o circostanze economiche. Ogni investimento comporta rischi, inclusa la perdita del capitale. Si consiglia di consultare con un professionista di investimento prima di prendere decisioni di investimento.

No comments:

Post a Comment