Friday, October 21, 2016

Eksponensiële bewegende gemiddelde luislang pandas

Eksponensiële bewegende gemiddelde Die eksponensiële bewegende gemiddelde Die eksponensiële bewegende gemiddelde verskil van 'n Eenvoudige bewegende gemiddelde sowel deur berekeningsmetode en in die manier waarop pryse word geweeg. Die eksponensiële bewegende gemiddelde (verkort na die voorletters EMO) is effektief 'n geweegde bewegende gemiddelde. Met die EMO, die gewig is sodanig dat die afgelope dae pryse meer gewig gegee as ouer pryse. Die teorie agter dit is dat meer onlangse pryse word beskou as meer belangrik as ouer pryse, veral as 'n langtermyn-eenvoudige gemiddelde te wees (byvoorbeeld 'n 200 dag) plaas gelyke gewig op prys data wat oor 6 maande oud en kon gedink van so effens uit-of-date. Berekening van die EMO is 'n bietjie meer ingewikkeld as die eenvoudige bewegende gemiddelde, maar het die voordeel dat 'n groot rekord van data wat elke sluiting prys vir die laaste 200 dae (of hoeveel dae oorweeg word) hoef nie om dit te bewaar . Al wat jy nodig het is die EMO vir die vorige dag en vandag sluit prys om die nuwe Eksponensiële bewegende gemiddelde te bereken. Berekening van die eksponent Aanvanklik vir die EMO, 'n eksponent moet bereken. Om mee te begin, neem die aantal dae EMO wat jy wil om te bereken en voeg een van die aantal dae wat jy oorweeg (byvoorbeeld vir 'n 200 dae - bewegende gemiddelde, voeg een te kry 201 as deel van die berekening). Wel noem dit Days1. Dan, om die eksponent kry, net neem die nommer 2 en deel dit deur Days1. Byvoorbeeld die eksponent vir 'n 200 dae - bewegende gemiddelde sou wees: 2 201. Watter gelyk 0,01 Volle Berekening as die eksponensiële bewegende gemiddelde Sodra weve het die eksponent, al wat ons nou nodig het is nog twee stukkies inligting aan ons in staat stel om die volle berekening uit te voer . Die eerste is yesterdays Eksponensiële bewegende gemiddelde. Wel aanvaar ons reeds weet dit as ons dit sou bereken gister. As jy egter Arent reeds bewus van gisters EMO, kan jy begin deur die berekening van die Eenvoudige bewegende gemiddelde vir gister, en die gebruik van hierdie in die plek van die EMA vir die eerste berekening (dws vandag berekening) van die EMO. Dan môre kan jy die EMO jy vandag bereken, en so aan gebruik. Die tweede stuk inligting wat ons nodig het, is vandag se sluitingsprys. Kom ons neem aan dat ons wil vandag 200 dae Eksponensiële bewegende gemiddelde vir 'n aandeel of voorraad wat oor 'n vorige dae EMO van 120 pennies (of sent) en 'n huidige dae sluitingsprys van 136 pennies het bereken. Die volle berekening is altyd soos volg: Vandag se Eksponensiële bewegende gemiddelde (huidige dae sluiting prys x Exponent) (vorige dae EMO x (1- Exponent)) So, met behulp van ons voorbeeld bostaande figure, vandag 200 dae EMO sou wees: (136 x 0,01 ) (120 x (1- 0,01)) wat 'n EMO vir vandag van 120.16.Python data-analise biblioteek pandas gelyk is 'n oop bron, BSD-lisensie biblioteek met 'n hoë-prestasie, maklik-om-te gebruik datastrukture en data-analise gereedskap vir die Python-programmeertaal. pandas is 'n NUMFocus geborg projek. Dit sal help om te verseker dat die sukses van die ontwikkeling van pandas as 'n wêreldklas-open-source projek. 0.19.0 Finale (2 Oktober 2016) Dit is 'n groot vrylating uit 0.18.1 en sluit verskeie API veranderinge, 'n paar nuwe funksies, verbeterings, en verbeterings prestasie saam met 'n groot aantal foutherstellings. Ons beveel aan dat alle gebruikers op te gradeer om hierdie weergawe. mergeasof () vir asof-styl time-reeks aansluit, sien hier. rolling () is nou tyd-reeks bewus, kyk hier readcsv () ondersteun nou die ontleding van kategoriese data, kyk hier 'n funksie unioncategorical () is bygevoeg vir die kombinasie van categoricals, sien hier PeriodIndex het nou sy eie tydperk dtype, en verander meer in ooreenstemming met ander indeks klasse te wees. Sien hier skraal datastrukture opgedoen verbeterde ondersteuning van int en Bool dtypes, kyk hier Vergelyking bedrywighede met 'n reeks nie meer ignoreer die indeks, kyk hier vir 'n oorsig van die API veranderinge. Bekendstelling van 'n pandas ontwikkeling API vir nut funksies, kyk hier. Afkeuring van Panel4D en PanelND. Ons beveel aan om hierdie tipe van n-dimensionele data voor te stel met die xarray pakket. Die opheffing van die voorheen afgekeur modules pandas. io. data. pandas. io. wb. pandas. tools. rplot. Sien die Whatsnew oorsig vir 'n omvattende lys van al verbeterings en foute wat in 0.19.0 vasgestel het. Meld asseblief enige probleme hier Beste manier om Beste manier om pandas kry installeer word om te installeer via conda Bou vir OSX-64, Linux-64, Linux-32, wen-64, wen-32 vir Python 2.7, Python 3.4, en Python 3.5 is almal beskikbaar. conda installeer pandas Vinnige vignette Watter probleem doen pandas los Python het 'n lang groot vir data munging en voorbereiding, maar minder so vir data-analise en modellering. pandas help vul hierdie gaping, sodat jy uit te voer jou hele data-analise workflow in Python sonder om oor te skakel na 'n meer domein spesifieke taal soos R. gekombineer met die uitstekende IPython toolkit en ander biblioteke, die omgewing om dit te doen data-ontleding in Python blink in prestasie, produktiwiteit, en die vermoë om saam te werk. pandas nie beduidende modellering funksionaliteit buite lineêre en paneel regressie vir hierdie implementeer, kyk na statsmodels en scikit-leer. Meer werk is nog nodig om Python 'n eerste klas statistiese modellering omgewing, maar ons is goed op pad in die rigting van daardie doel. Wat doen ons gebruikers het om 8220 pandas sê ons toelaat om meer te fokus op navorsing en minder op ontwikkeling. Ons het pandas maklik om te leer, maklik om te gebruik, en maklik om te handhaaf gevind. Die bottom line is dat dit toegeneem het ons productivity.8221 Direkteur van Optimization amp Analytics 8220 pandas is die ideale hulpmiddel vir die oorbrugging van die gaping tussen vinnige iterasies van ad hoc-analise en kwaliteit van die produksie-kode. As jy wil 'n instrument wat gebruik word in 'n multi-gedissiplineerde organisasie van ingenieurs, wiskundiges en ontleders, kyk nie further.8221 8220We gebruik pandas te tydreeksdata op ons produksie bedieners verwerk. Die eenvoud en elegansie van sy API en sy hoë vlak van prestasie vir 'n hoë-volume datastelle, het dit 'n ideale keuse vir us.8221 Biblioteek dui op 'n vinnige en doeltreffende DataFrame voorwerp vir datamanipulasie met 'n geïntegreerde kruip gereedskap vir lees en skryf data tussen in-geheue datastrukture en verskillende formate: CSV en teks lêers, Microsoft Excel, SQL databasis en die vinnige HDF5 formaat Intelligent data belyning en geïntegreerde hantering van die vermiste data. kry outomatiese-etiket gebaseer belyning in berekeninge en maklik manipuleer morsig data in 'n ordelike vorm Flexible hervorming en tuimelende van datastelle Intelligent-etiket gebaseer sny. fancy kruip. en subsetting van groot datastelle kolomme kan ingevoeg word en verwyder van data strukture vir grootte mutability Aggregating of transformasie van data met 'n kragtige groep enjin laat split aansoek doen-kombineer bedrywighede op data stel hoë prestasie samesmelting en samevoeging van data stel Hiërargiese as kruip bied 'n intuïtiewe manier van werk met 'n hoë-dimensionele data in 'n laer-dimensionele datastruktuur Tyd reeks - functionality: datum bereik geslag en frekwensie sukses, beweeg venster statistieke, beweeg venster lineêre regressies, datum verskuiwing en agter. Selfs skep domein-spesifieke tyd neutraliseer en sluit tydreekse sonder data Hoogs geskik vir prestasie verloor. met 'n kritiese kode paaie geskryf in Cython of C. Python met pandas is in gebruik in 'n wye verskeidenheid van akademiese en kommersiële gebiede, insluitend Finansies, Neuroscience, Ekonomie, Statistiek, Advertising, web analytics, en more. Advanced Matplotlib Series (video's en eindig bron alleenlik) Sodra jy 'n basiese begrip van hoe Matplotlib werk, kan jy dalk 'n belangstelling in die neem van jou kennis 'n bietjie verder het. Sommige van die mees komplekse grafiese behoeftes kom in die vorm van voorraad analise en kartering, of Forex. In hierdie handleiding reeks, gaan dek waar en hoe om outomaties aan te gryp, sorteer en organiseer 'n paar gratis voorraad en buitelandse valuta pryse data. Volgende, gaan dit in kaart met behulp van 'n paar van die meer gewilde aanwysers as 'n voorbeeld. Hier, goed te doen MACD (bewegende gemiddelde Konvergensie divergensie) en die RSI (relatiewe sterkte-indeks). Om ons te help bereken hierdie, sal ons Numpy gebruik, maar anders sal ons hierdie te bereken almal op ons eie. Om die data te verkry, gaan die Yahoo Finansies API te gebruik. Dit API terugkeer historiese prys data vir die ENKELE simbool ons spesifiseer en vir die tyd lank ons ​​vra. Hoe groter die tyd, hoe laer is die besluit van data wat ons kry. Dus, as jy vra vir 'n 1-dag tydraamwerk vir AAPL, sal jy 3 minute OHLC (oop hoë lae naby) data te kry. As jy vra vir 10 jaar die moeite werd is, sal jy daagliks data te kry, of selfs 3 dag tydraamwerke. Hou dit in gedagte en kies 'n tyd wat jou doelwitte pas. Ook, as jy 'n lae genoeg tyd raam kies en kry 'n hoë genoeg korrelig, die API sal die tyd terug te keer in 'n Unix tyd stempel, in vergelyking met 'n datumstempel. Sodra ons die data, sal ons dit wil grafiek. Om mee te begin, en net stip die lyne, maar die meeste mense sal wil hê om 'n kandelaar plot in plaas. Ons sal Matplotlibs kandelaar funksie te gebruik, en maak 'n eenvoudige wysig om dit te effens verbeter. Op dieselfde grafiek, sowel ook trek 'n paar bewegende gemiddelde berekeninge. Hierna is gaan 'n intrige te skep, en die grafiek van die volume. Ons kan nie volume plot op dieselfde intrige onmiddellik, want die skaal is anders. Om mee te begin, sal ons die volume onder plot in 'n ander sub plot, maar uiteindelik ook eintlik oortrek volume op dieselfde figuur en maak dit 'n bietjie deursigtig. Dan gaan 2 sub erwe voeg en plot 'n RSI aanwyser op die top en die MACD aanwyser op die bodem. Vir al hierdie, gaan die X-as deel, sodat ons kan in en uit in 1 plot zoom en hulle sal almal ooreenstem met die dieselfde tyd raam. Gaan plot in datum formaat vir die X-as, en pas net oor al die dinge wat ons kan vir estetika. Dit sluit in die verandering van bosluis etiket kleure, rand / ruggraat kleure, lyn kleure, OHLC kandelaar kleure, leer hoe om 'n vol grafiek (vir volume) te skep, histogramme, trek spesifieke lyne (hline vir RSI), en 'n hele klomp meer. Hier is die eindresultaat (Ek het beide 'n Python 3 en 'n Python 2 weergawe vir hierdie Python 3 eerste, dan Python 2. Maak seker jy gebruik van die een wat pas by jou Python weergawe.): Dis al vir nou. Wil jy meer tutoriale kop na die Tuisblad Matplotlib Crash CourseBacktesting n bewegende gemiddelde Crossover in Python met pandas Deur Michael Saal-Moore op 21 Januarie 2014 In die vorige artikel oor Navorsing back testing omgewings Python Met Pandas ons geskep 'n objek-georiënteerde navorsing-gebaseerde back testing omgewing en dit getoets op 'n ewekansige vooruitskatting strategie. In hierdie artikel sal ons gebruik van die masjinerie wat ons lei om navorsing te doen oor 'n werklike strategie, naamlik die bewegende gemiddelde Crossover op AAPL maak. Bewegende gemiddelde Crossover Strategie Die bewegende gemiddelde Crossover tegniek is 'n uiters bekende simplistiese momentum strategie. Daar word dikwels beskou as die Hello World voorbeeld vir kwantitatiewe handel. Die strategie as hier uiteengesit is slegs lang. Twee afsonderlike eenvoudige bewegende gemiddelde filters word geskep, met wisselende Terugblik tydperke, van 'n bepaalde tyd reeks. Seine na die aankoop van die bate vind plaas wanneer die korter Terugblik bewegende gemiddelde hoe langer bewegende gemiddelde oorskry Terugblik. As die langer gemiddelde daarna die korter gemiddelde oorskry, word die bate verkoop terug. Die strategie werk goed wanneer 'n tydreeks betree 'n tydperk van 'n sterk tendens en dan omkeer stadig die tendens. Vir hierdie voorbeeld het ek gekies Apple, Inc (AAPL) as die tyd reeks, met 'n kort Terugblik van 100 dae en 'n lang Terugblik van 400 dae. Dit is die inligting wat deur die Zipline algoritmiese handel biblioteek voorbeeld. So as ons wil ons eie backtester implementeer moet ons verseker dat dit die resultate wedstryde in Zipline, as 'n basiese wyse van bevestiging. Implementering Maak seker dat die vorige tutoriaal hier volg. wat beskryf hoe die aanvanklike doel hiërargie vir die backtester is gebou, anders sal die kode hieronder sal nie werk nie. Vir hierdie spesifieke implementering het ek die volgende biblioteke gebruik: Die implementering van macross. py vereis backtest. py van die vorige tutoriaal. Die eerste stap is om die nodige modules en voorwerpe in te voer: Soos in die vorige tutoriaal gaan ons die strategie abstrakte basis klas MovingAverageCrossStrategy produseer oorerf. wat al die besonderhede oor hoe om die seine te genereer bevat wanneer die bewegende gemiddeldes van AAPL kruis oor mekaar. Die voorwerp vereis 'n shortwindow en 'n longwindow waarop te werk. Die waardes is ingestel om die standaard van 100 dae en 400 dae onderskeidelik, wat dieselfde parameters wat in die belangrikste voorbeeld van Zipline is. Die bewegende gemiddeldes is geskep deur die gebruik van die pandas rollingmean funksie op die barsClose sluitingsprys van die AAPL voorraad. Sodra die individu bewegende gemiddeldes is gebou, is die sein reeks wat deur die oprigting van die kolom gelyk aan 1,0 wanneer die kort bewegende gemiddelde is groter as die lang bewegende gemiddelde, of 0.0 anders. Hieruit kan die posisies bestellings gegenereer kan word om handel seine verteenwoordig. Die MarketOnClosePortfolio is subclassed van Portefeulje. wat is gevind in backtest. py. Dit is byna identies aan die wat in die vorige tutoriaal beskryf implementering, met die uitsondering dat die ambagte nou uit op 'n close-to-Close basis gedra, eerder as om 'n Ope-tot-Ope basis. Vir meer inligting oor hoe die Portefeuljekomitee voorwerp gedefinieer, sien die vorige tutoriaal. Ive het die kode in vir volledigheid en om hierdie handleiding te hou self-contained: Noudat die MovingAverageCrossStrategy en MarketOnClosePortfolio klasse is gedefinieer, sal 'n hooffunksie word geroep om al die funksies saam te bind. Daarbenewens die prestasie van die strategie deur middel van 'n plot van die aandele kurwe sal ondersoek word. Die pandas DataReader voorwerp downloads OHLCV pryse van AAPL voorraad vir die tydperk 1 Januarie 1990 tot 1 Januarie 2002, op watter punt die seine DataFrame is geskep om die lang-net seine op te wek. Vervolgens die portefeulje is gegenereer met 'n 100,000 dollar aanvanklike kapitaalbasis en die opbrengs word bereken op die aandele kurwe. Die finale stap is om matplotlib gebruik om 'n twee-syfer plot van beide AAPL pryse, oorgetrek met die bewegende gemiddeldes plot en koop / verkoop seine, asook die aandele kurwe met dieselfde koop / verkoop seine. Die plot kode is geneem (en aangepas) van die Zipline implementering voorbeeld. Die grafiese uitset van die kode is soos volg. Ek het gebruik gemaak van die IPython Plak opdrag om hierdie direk in die IPython konsole sit terwyl hy in Ubuntu, sodat die grafiese uitset in die lig bly. Die pienk upticks verteenwoordig die aankoop van die voorraad, terwyl die swart downticks dit terug verteenwoordig verkoop: Soos gesien kan word van die strategie verloor geld oor die tydperk, met vyf heen-en terugreis ambagte. Dit is nie verbasend gegewe die gedrag van AAPL oor die tydperk, wat op 'n effense afwaartse neiging, gevolg deur 'n beduidende toename begin in 1998. Die Terugblik tydperk van die bewegende gemiddelde seine is redelik groot en die effek daarvan die wins van die finale handel , wat anders die strategie winsgewend moontlik gemaak. In die daaropvolgende artikels sal ons 'n meer gesofistikeerde middel van die ontleding van die prestasie, sowel as die beskrywing van hoe om die Terugblik tydperke van die individuele bewegende gemiddelde seine te optimaliseer skep. Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansing funds. Smoothing met eksponensieel Geweegde Moving Gemiddeldes n bewegende gemiddelde neem 'n lawaaierige tydreekse en vervang elke waarde met die gemiddelde waarde van 'n woonbuurt oor die gegewe waarde. Dit buurt kan bestaan ​​uit suiwer historiese data, of dit kan gesentreer oor die gegewe waarde. Verder kan die waardes in die buurt word geweeg met behulp van verskillende stelle gewigte. Hier is 'n voorbeeld van 'n ewe geweegde drie punt bewegende gemiddelde, met behulp van historiese data, hier, verteenwoordig die stryk sein, en verteenwoordig die lawaaierige tydreekse. In teenstelling met eenvoudige bewegende gemiddeldes, 'n eksponensieel geweeg bewegende gemiddelde (EWMA) pas 'n waarde volgens 'n eksponensieel geweeg som van alle vorige waardes. Dit is die basiese idee, dit is lekker, want jy don8217t hoef te bekommer oor 'n drie punt venster, teenoor 'n vyfpunt venster, of bekommerd wees oor die toepaslikheid van jou gewig skema. Met die EWMA, vorige storingen 8220remembered, 8221 en 8220slowly vergeet, 8221 deur die term in die laaste vergelyking, terwyl met 'n venster of buurt met diskrete grense, is 'n storing sodra dit verby die venster uit vergete. Gemiddeld die EWMA tendense akkommodeer Na die lees van sowat EWMAs in 'n data-analise boek, het ek gegaan saam gelukkig met behulp van hierdie instrument op elke enkele glad program wat ek oor gekom het. Dit was eers later dat ek geleer dat die EWMA funksie is eintlik net geskik is vir skryfbehoeftes data, dit wil sê data sonder tendense of seisoenaliteit. In die besonder, die EWMA funksie weerstaan ​​tendense weg van die huidige gemiddelde wat reeds it8217s 8220seen8221. So, as jy 'n lawaaierige hoed funksie wat gaan van 0 tot 1, en dan weer terug na 0, dan is die EWMA funksie sal lae waardes op die up-heuwel kant, en 'n hoë waardes terug op die af-heuwel kant. Een manier om dit te omseil is om die sein te stryk in albei rigtings, marsjeer vorentoe, en dan marsjeer agtertoe, en dan Gemiddeld twee. Hier sal ons die EWMA funksie wat deur die pandas module gebruik. Holt-Winters tweede orde EWMA En hier is 'n paar Python-kode implementering van die Holt-Winters tweede orde metode op 'n ander lawaaierige hoed funksie, soos voorheen. Post navigasie Recent Posts Argiewe


No comments:

Post a Comment