Wednesday, 18 October 2017

Pandas Mobile Media Example


Im nuovo a Panda. Ive ha ottenuto una serie di dati di sondaggi che voglio per calcolare un rotolamento significa ottenere una stima per ogni giorno in base a una finestra di tre giorni. A quanto ho capito da questa domanda. le funzioni di rotolamento calcolano la finestra sulla base di un numero specificato di valori, e non una serie datetime specifica. C'è una funzione diversa che implementa questa funzionalità O sto bloccato scrivere il mio dati di input di esempio: uscita avrebbe solo una riga per ogni data. EDIT x2: fisso errore di battitura Questo esempio sembra richiedere una media ponderata come suggerito in andyhaydens commento. Ad esempio, ci sono due sondaggi su 1025 e uno ciascuno in 1026 e 1027. Se solo ricampionare e poi prendere la media, questo dà modo efficace due volte tanto peso alle urne il 1026 e il 1027 rispetto a quelle sul 1025. Per dare pari peso ad ogni sondaggio, piuttosto che lo stesso peso ad ogni giorno. si potrebbe fare qualcosa di simile a quanto segue. Che ti dà le materie prime per fare una media sondaggio-based, invece di una media giornata-based. Come in precedenza, i sondaggi sono mediati su 1025, ma il peso per il 1025 è anche memorizzati ed è il doppio del peso su 1026 o 1027 per riflettere che due sondaggi sono stati presi sul 1025. Si noti che il rotolamento significa per 1027 è ora 0,51,5 mila (polling di ponderata) piuttosto che 52,1667 (giorno-ponderato). Si noti inoltre che non vi sono state modifiche alle API per ricampionare e laminazione a partire dalla versione 0.18.0.Moving modelli medi e esponenziale Come primo passo per andare oltre i modelli medi, modelli random walk, e modelli di tendenza lineare, i modelli non stagionali e le tendenze possono essere estrapolati utilizzando un modello a media mobile o levigante. L'assunto di base dietro media e modelli di livellamento è che la serie temporale è localmente stazionario con una media lentamente variabile. Quindi, prendiamo una media mobile (locale) per stimare il valore corrente della media e poi utilizzarla come la previsione per il prossimo futuro. Questo può essere considerato come un compromesso tra il modello media e la deriva modello random walk-senza-. La stessa strategia può essere utilizzata per stimare e estrapolare una tendenza locale. Una media mobile è spesso chiamato una versione quotsmoothedquot della serie originale, perché la media a breve termine ha l'effetto di appianare i dossi nella serie originale. Regolando il grado di lisciatura (la larghezza della media mobile), possiamo sperare di colpire un qualche tipo di equilibrio ottimale tra le prestazioni dei modelli medi e random walk. Il tipo più semplice di modello di media è il. Semplice (equamente ponderate) Media mobile: Le previsioni per il valore di Y al tempo t1 che viene fatta al tempo t è pari alla media semplice dei più recenti osservazioni m: (Qui e altrove mi utilizzerà il simbolo 8220Y-hat8221 di stare per una previsione di serie temporali Y fatta quanto prima prima possibile da un dato modello.) Questa media è centrato periodo t - (m1) 2, il che implica che la stima della media locale tenderà a restare indietro il vero valore della media locale circa (m1) 2 periodi. Così, diciamo l'età media dei dati nella media mobile semplice (m1) 2 rispetto al periodo per il quale è calcolata la previsione: questa è la quantità di tempo per cui previsioni tenderanno a restare indietro ruotando punti nei dati . Ad esempio, se si sta una media degli ultimi 5 valori, le previsioni saranno circa 3 periodi in ritardo nel rispondere a punti di svolta. Si noti che se m1, il modello di media mobile semplice (SMA) è equivalente al modello random walk (senza crescita). Se m è molto grande (paragonabile alla lunghezza del periodo di stima), il modello SMA è equivalente al modello medio. Come con qualsiasi parametro di un modello di previsione, è consuetudine per regolare il valore di k per ottenere la migliore quotfitquot ai dati, cioè i più piccoli errori di previsione in media. Ecco un esempio di una serie che sembra mostrare fluttuazioni casuali intorno a una media lentamente variabile. Innanzitutto, proviamo per adattarsi con un modello casuale, che è equivalente a una media mobile semplice di 1 termine: Il modello random walk risponde molto velocemente alle variazioni della serie, ma così facendo raccoglie gran parte del quotnoisequot nel dati (le fluttuazioni casuali) e il quotsignalquot (media locale). Se invece cerchiamo una semplice media mobile di 5 termini, si ottiene un insieme più agevole dall'aspetto delle previsioni: Il 5-termine mobile semplice rese medie in modo significativo gli errori più piccoli rispetto al modello random walk in questo caso. L'età media dei dati di questa previsione è 3 ((51) 2), in modo che tende a ritardo punti di svolta da circa tre periodi. (Per esempio, una flessione sembra essersi verificato in periodo di 21, ma le previsioni non girare intorno fino a diversi periodi più tardi.) Si noti che le previsioni a lungo termine dal modello SMA sono una retta orizzontale, proprio come nel random walk modello. Pertanto, il modello SMA presuppone che vi sia alcuna tendenza nei dati. Tuttavia, mentre le previsioni del modello random walk sono semplicemente uguale all'ultimo valore osservato, le previsioni del modello di SMA sono pari ad una media ponderata dei valori ultimi. I limiti di confidenza calcolato dai Statgraphics per le previsioni a lungo termine della media mobile semplice non ottengono più ampio con l'aumento della previsione all'orizzonte. Questo ovviamente non è corretto Purtroppo, non vi è alcuna teoria statistica di fondo che ci dice come gli intervalli di confidenza deve ampliare per questo modello. Tuttavia, non è troppo difficile da calcolare le stime empiriche dei limiti di confidenza per le previsioni di più lungo orizzonte. Ad esempio, è possibile impostare un foglio di calcolo in cui il modello SMA sarebbe stato utilizzato per prevedere 2 passi avanti, 3 passi avanti, ecc all'interno del campione di dati storici. È quindi possibile calcolare le deviazioni standard campione degli errori in ogni orizzonte di previsione, e quindi la costruzione di intervalli di confidenza per le previsioni a lungo termine aggiungendo e sottraendo multipli della deviazione standard appropriato. Se cerchiamo una media del 9 termine semplice movimento, otteniamo le previsioni ancora più fluide e più di un effetto ritardo: L'età media è ora 5 punti ((91) 2). Se prendiamo una media mobile 19-termine, l'età media aumenta a 10: Si noti che, in effetti, le previsioni sono ora in ritardo punti di svolta da circa 10 periodi. Quale quantità di smoothing è meglio per questa serie Ecco una tabella che mette a confronto le loro statistiche di errore, anche compreso in media 3-termine: Modello C, la media mobile a 5-termine, i rendimenti il ​​valore più basso di RMSE da un piccolo margine su 3 - term e 9 termine medie, e le loro altre statistiche sono quasi identici. Così, tra i modelli con le statistiche di errore molto simili, possiamo scegliere se avremmo preferito un po 'più di risposta o un po' più scorrevolezza nelle previsioni. (Torna a inizio pagina.) Browns semplice esponenziale (media mobile esponenziale ponderata) Il modello a media mobile semplice di cui sopra ha la proprietà indesiderabile che tratta le ultime osservazioni k ugualmente e completamente ignora tutte le osservazioni che precedono. Intuitivamente, dati passati devono essere attualizzati in modo più graduale - per esempio, il più recente osservazione dovrebbe avere un peso poco più di 2 più recente, e la 2 più recente dovrebbe ottenere un po 'più peso che la 3 più recente, e presto. Il modello semplice di livellamento esponenziale (SES) realizza questo. Diamo 945 denotano una constantquot quotsmoothing (un numero compreso tra 0 e 1). Un modo per scrivere il modello è quello di definire una serie L che rappresenta il livello attuale (cioè il valore medio locale) della serie come stimato dai dati fino ad oggi. Il valore di L al momento t è calcolata in modo ricorsivo dal proprio valore precedente in questo modo: Così, il valore livellato corrente è una interpolazione tra il valore livellato precedente e l'osservazione corrente, dove 945 controlla la vicinanza del valore interpolato al più recente osservazione. Le previsioni per il prossimo periodo è semplicemente il valore livellato corrente: Equivalentemente, possiamo esprimere la prossima previsione direttamente in termini di precedenti previsioni e osservazioni precedenti, in una delle seguenti versioni equivalenti. Nella prima versione, la previsione è una interpolazione tra precedente meteorologiche e precedente osservazione: Nella seconda versione, la prossima previsione è ottenuta regolando la previsione precedente nella direzione dell'errore precedente di una quantità frazionaria 945. è l'errore al tempo t. Nella terza versione, la previsione è di un (cioè scontato) media mobile esponenziale ponderata con fattore di sconto 1- 945: La versione di interpolazione della formula di previsione è il più semplice da usare se si implementa il modello su un foglio di calcolo: si inserisce in un singola cellula e contiene i riferimenti di cella che puntano alla previsione precedente, l'osservazione precedente, e la cella in cui è memorizzato il valore di 945. Si noti che se 945 1, il modello SES è equivalente ad un modello random walk (senza crescita). Se 945 0, il modello SES è equivalente al modello medio, assumendo che il primo valore livellato è impostata uguale alla media. (Torna a inizio pagina). L'età media dei dati nelle previsioni semplice esponenziale-levigante è di 1 945 relativo al periodo per il quale è calcolata la previsione. (Questo non dovrebbe essere ovvio, ma può essere facilmente dimostrare valutando una serie infinita.) Quindi, la semplice previsione media mobile tende a restare indietro punti di svolta da circa 1 945 periodi. Ad esempio, quando 945 0.5 il ritardo è di 2 periodi in cui 945 0.2 il ritardo è di 5 periodi in cui 945 0.1 il ritardo è di 10 periodi, e così via. Per una data età media (cioè quantità di ritardo), il semplice livellamento esponenziale (SES) previsione è un po 'superiore alla previsione media mobile semplice (SMA) perché pone relativamente più peso sulla più recente --i. e osservazione. è leggermente più quotresponsivequot ai cambiamenti che si verificano nel recente passato. Per esempio, un modello di SMA con 9 termini e un modello di SES con 945 0,2 entrambi hanno un'età media di 5 per i dati nelle loro previsioni, ma il modello SES mette più peso sugli ultimi 3 valori di quanto non faccia il modello SMA e al contempo doesn8217t interamente 8220forget8221 sui valori più di 9 periodi vecchi, come mostrato in questo grafico: un altro importante vantaggio del modello SES sul modello SMA è che il modello SES utilizza un parametro smoothing che è continuamente variabile, in modo che possa facilmente ottimizzato utilizzando un algoritmo quotsolverquot per minimizzare l'errore quadratico medio. Il valore ottimale di 945 nel modello SES a questa serie risulta essere 0,2961, come illustrato di seguito: L'età media dei dati in questa previsione è 10.2961 3.4 periodi, che è simile a quella di una media 6 termine mobile semplice. Le previsioni a lungo termine dal modello SES sono una linea retta orizzontale. come nel modello SMA e il modello random walk senza crescita. Si noti tuttavia che gli intervalli di confidenza calcolati da Statgraphics ora divergono in modo ragionevole dall'aspetto, e che sono sostanzialmente più stretto gli intervalli di confidenza per il modello random walk. Il modello di SES presuppone che la serie è un po 'predictablequot quotmore di quanto non faccia il modello random walk. Un modello SES è in realtà un caso particolare di un modello ARIMA. così la teoria statistica dei modelli ARIMA fornisce una solida base per il calcolo intervalli di confidenza per il modello SES. In particolare, un modello SES è un modello ARIMA con una differenza nonseasonal, un MA (1) termine, e nessun termine costante. altrimenti noto come un modello quotARIMA (0,1,1) senza constantquot. Il MA (1) coefficiente nel modello ARIMA corrisponde alla quantità 1- 945 nel modello SES. Ad esempio, se si adatta un modello ARIMA (0,1,1) senza costante alla serie analizzate qui, il MA stimato (1) coefficiente risulta essere 0,7029, che è quasi esattamente un meno 0,2961. È possibile aggiungere l'assunzione di una tendenza non-zero costante lineare per un modello SES. Per fare questo, basta specificare un modello ARIMA con una differenza non stagionale e di un (1) termine MA con una costante, cioè un (0,1,1) modello ARIMA con costante. Le previsioni a lungo termine avranno quindi una tendenza che è uguale alla tendenza medio rilevato nel corso dell'intero periodo di stima. Non si può fare questo in collaborazione con destagionalizzazione, perché le opzioni di destagionalizzazione sono disattivati ​​quando il tipo di modello è impostato su ARIMA. Tuttavia, è possibile aggiungere una costante a lungo termine tendenza esponenziale ad un semplice modello di livellamento esponenziale (con o senza regolazione stagionale) utilizzando l'opzione di regolazione inflazione nella procedura di previsione. Il tasso appropriato quotinflationquot (crescita percentuale) per periodo può essere stimato come il coefficiente di pendenza in un modello trend lineare montato i dati in combinazione con una trasformazione logaritmo naturale, oppure può essere basata su altri, informazione indipendente per quanto riguarda le prospettive di crescita a lungo termine . (Ritorna all'inizio pagina.) Browns lineari (cioè doppie) modelli esponenziale La SMA e modelli di SES per scontato che non vi è alcuna tendenza di alcun tipo nei dati (che di solito è OK, o almeno non troppo male per 1- previsioni passo avanti quando i dati sono relativamente rumoroso), e possono essere modificati per includere un trend lineare costante come indicato sopra. Che dire di tendenze a breve termine Se una serie mostra un tasso variabile di crescita o un andamento ciclico che si distingue chiaramente contro il rumore, e se vi è la necessità di prevedere più di 1 periodo a venire, allora la stima di una tendenza locale potrebbe anche essere un problema. Il semplice modello di livellamento esponenziale può essere generalizzata per ottenere un modello lineare di livellamento esponenziale (LES) che calcola le stime locali sia a livello e di tendenza. Il modello di tendenza tempo-variante più semplice è Browns lineare modello di livellamento esponenziale, che utilizza due diverse serie levigato che sono centrate in diversi punti nel tempo. La formula di previsione si basa su un'estrapolazione di una linea attraverso i due centri. (Una versione più sofisticata di questo modello, Holt8217s, è discusso qui di seguito.) La forma algebrica di Brown8217s lineare modello di livellamento esponenziale, come quello del semplice modello di livellamento esponenziale, può essere espresso in una serie di forme diverse ma equivalenti. La forma quotstandardquot di questo modello è di solito espressa come segue: Sia S denotano la serie singolarmente-levigata ottenuta applicando semplice livellamento esponenziale di serie Y. Cioè, il valore di S al periodo t è dato da: (Ricordiamo che, in semplice livellamento esponenziale, questo sarebbe il tempo per Y al periodo t1) Allora che Squot denotano la serie doppiamente levigata ottenuta applicando semplice livellamento esponenziale (utilizzando lo stesso 945) per serie S:. Infine, le previsioni per Y tk. per qualsiasi kgt1, è data da: Questo produce e 1 0 (vale a dire imbrogliare un po ', e lasciare che la prima previsione uguale l'attuale prima osservazione), ed e 2 Y 2 8211 Y 1. dopo di che le previsioni sono generati usando l'equazione di cui sopra. Questo produce gli stessi valori stimati come la formula basata su S e S se questi ultimi sono stati avviati utilizzando S 1 S 1 Y 1. Questa versione del modello è usato nella pagina successiva che illustra una combinazione di livellamento esponenziale con regolazione stagionale. modello Holt8217s lineare esponenziale Brown8217s LES calcola stime locali di livello e l'andamento lisciando i dati recenti, ma il fatto che lo fa con un singolo parametro smoothing pone un vincolo sui modelli di dati che è in grado di adattarsi: il livello e tendenza non sono autorizzati a variare a tassi indipendenti. modello Holt8217s LES risolve questo problema includendo due costanti di lisciatura, uno per il livello e uno per la tendenza. In ogni momento t, come nel modello Brown8217s, il c'è una stima L t del livello locale e una T t stima della tendenza locale. Qui vengono calcolati ricorsivamente dal valore di Y osservata al tempo t e le stime precedenti del livello e l'andamento di due equazioni che si applicano livellamento esponenziale separatamente. Se il livello stimato e tendenza al tempo t-1 sono L t82091 e T t-1. rispettivamente, la previsione per Y tshy che sarebbe stato fatto al tempo t-1 è uguale a L t-1 T t-1. Quando si osserva il valore effettivo, la stima aggiornata del livello è calcolata in modo ricorsivo interpolando tra Y tshy e le sue previsioni, L t-1 T t-1, con pesi di 945 e 945. 1- La variazione del livello stimato, vale a dire L t 8209 L t82091. può essere interpretato come una misura rumorosa della tendenza al tempo t. La stima aggiornata del trend viene poi calcolata in modo ricorsivo interpolando tra L t 8209 L t82091 e la stima precedente del trend, T t-1. utilizzando pesi di 946 e 1-946: L'interpretazione del trend-smoothing costante 946 è analoga a quella del livello-levigatura costante 945. Modelli con piccoli valori di 946 assume che la tendenza cambia solo molto lentamente nel tempo, mentre i modelli con grande 946 supporre che sta cambiando più rapidamente. Un modello con un grande 946 ritiene che il lontano futuro è molto incerto, perché gli errori in trend-stima diventano molto importanti quando la previsione più di un periodo avanti. (Torna a inizio pagina.) Il livellamento costanti di 945 e 946 può essere stimato nel modo consueto minimizzando la media errore delle previsioni 1-step-ahead quadrato. Quando questo fatto in Statgraphics, le stime risultano essere 945 0,3048 e 946 0.008. Il valore molto piccolo di 946 significa che il modello assume molto poco cambiamento di tendenza da un periodo all'altro, in modo sostanzialmente questo modello sta cercando di stimare un trend di lungo periodo. Per analogia con la nozione di età media dei dati utilizzati nella stima del livello locale della serie, l'età media dei dati che viene utilizzato per stimare la tendenza locale è proporzionale a 1 946, anche se non esattamente uguale ad esso . In questo caso risulta essere 10,006 125. Questo isn8217t un numero molto preciso in quanto la precisione della stima di 946 isn8217t realmente 3 decimali, ma è dello stesso ordine generale di grandezza della dimensione del campione di 100, così questo modello è una media di più di un bel po 'di storia nella stima del trend. La trama meteo seguente mostra che il modello LES stima un leggermente maggiore tendenza locale alla fine della serie rispetto alla tendenza costante stimata nel modello SEStrend. Inoltre, il valore stimato di 945 è quasi identica a quella ottenuta inserendo il modello SES con o senza tendenza, quindi questo è quasi lo stesso modello. Ora, queste sembrano le previsioni ragionevoli per un modello che dovrebbe essere stimare un trend locale Se si 8220eyeball8221 questa trama, sembra che la tendenza locale si è trasformato in basso alla fine della serie Quello che è successo I parametri di questo modello sono stati stimati minimizzando l'errore quadratico delle previsioni 1-step-ahead, non le previsioni a lungo termine, nel qual caso la tendenza doesn8217t fare un sacco di differenza. Se tutti si sta guardando sono errori 1-step-avanti, non si è visto il quadro più ampio delle tendenze sopra (diciamo) 10 o 20 periodi. Al fine di ottenere questo modello più in sintonia con la nostra bulbo oculare estrapolazione dei dati, siamo in grado di regolare manualmente la tendenza-smoothing costante in modo che utilizzi una base più breve per la stima di tendenza. Ad esempio, se si sceglie di impostare 946 0.1, quindi l'età media dei dati utilizzati nella stima la tendenza locale è di 10 periodi, il che significa che ci sono in media il trend negli ultimi 20 periodi che o giù di lì. Here8217s quello che la trama del tempo si presenta come se impostiamo 946 0.1, mantenendo 945 0.3. Questo sembra intuitivamente ragionevole a questa serie, anche se probabilmente è pericoloso estrapolare questa tendenza eventuali più di 10 periodi in futuro. Che dire le statistiche di errore Ecco un confronto modello per i due modelli sopra indicati, nonché tre modelli SES. Il valore ottimale di 945.per modello SES è di circa 0,3, ma risultati simili (con leggermente più o meno reattività, rispettivamente) sono ottenute con 0,5 e 0,2. exp lineare (A) Holts. levigatura con alfa e beta 0,3048 0.008 (B) Holts exp lineare. levigatura con alpha 0.3 e beta 0.1 (C) livellamento esponenziale semplice con alfa 0,5 (D) livellamento esponenziale semplice con alpha 0.3 (E) livellamento esponenziale semplice con alpha 0.2 Le loro statistiche sono quasi identiche, quindi abbiamo davvero can8217t fare la scelta sulla base di errori di previsione 1-step-avanti all'interno del campione di dati. Dobbiamo ripiegare su altre considerazioni. Se crediamo fermamente che ha senso basare la stima attuale tendenza su quanto è successo negli ultimi 20 periodi o giù di lì, siamo in grado di fare un caso per il modello LES con 945 0,3 e 946 0.1. Se vogliamo essere agnostici sul fatto che vi è una tendenza locale, poi uno dei modelli SES potrebbe essere più facile da spiegare e darebbe anche altre previsioni middle-of-the-road per i prossimi 5 o 10 periodi. (Ritorna all'inizio pagina.) Quale tipo di trend-estrapolazione è meglio: L'evidenza empirica orizzontale o lineare suggerisce che, se sono già stati adeguati i dati (se necessario) per l'inflazione, allora può essere imprudente per estrapolare lineare a breve termine tendenze molto lontano nel futuro. Le tendenze evidenti oggi possono rallentare in futuro, dovuta a cause diverse quali obsolescenza dei prodotti, l'aumento della concorrenza, e flessioni cicliche o periodi di ripresa in un settore. Per questo motivo, semplice livellamento esponenziale spesso si comporta meglio out-of-sample che altrimenti potrebbero essere previsto, nonostante la sua quotnaivequot estrapolazione di tendenza orizzontale. modifiche di tendenza smorzato del modello di livellamento esponenziale lineare sono spesso utilizzati in pratica per introdurre una nota di conservatorismo nelle sue proiezioni di tendenza. Il modello LES smorzata-tendenza può essere implementato come un caso particolare di un modello ARIMA, in particolare, un modello (1,1,2) ARIMA. E 'possibile calcolare gli intervalli di confidenza intorno previsioni a lungo termine prodotte da modelli di livellamento esponenziale, considerandoli come casi speciali di modelli ARIMA. (Attenzione: non tutto il software calcola correttamente intervalli di confidenza per questi modelli.) La larghezza degli intervalli di confidenza dipende (i) l'errore RMS del modello, (ii) il tipo di levigatura (semplice o lineare) (iii) il valore (s) della costante di smoothing (s) e (iv) il numero di periodi avanti si prevedono. In generale, gli intervalli distribuite più veloce come 945 diventa più grande nel modello SES e si propagano molto più velocemente quando lineare piuttosto che semplice lisciatura viene utilizzato. Questo argomento è discusso ulteriormente nella sezione modelli ARIMA delle note. (Torna a inizio pagina.) Backtesting una media mobile Crossover in Python con i panda nel precedente articolo sulla ricerca Backtesting ambienti in Python con i panda abbiamo creato un ambiente di backtesting basata sulla ricerca orientata agli oggetti 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 Trading Quantitative

No comments:

Post a Comment