Eenvoudige Bewegende Gemiddelde Python


Ons het vroeër bekend hoe om bewegende gemiddeldes met Python skep. Hierdie handleiding sal 'n voortsetting van hierdie onderwerp wees. 'N bewegende gemiddelde in die konteks van statistieke, ook bekend as 'n rollende / hardloop gemiddelde, is 'n tipe van eindige impulsrespons. Let8217s plot x teen die bewegende gemiddelde van y dat ons yma sal roep:: In ons vorige tutoriaal het ons die waardes van die skikkings x en y geplot Eerstens let8217s gelyk die lengte van beide skikkings: En om dit in konteks te wys: Die gevolglike grafiek: Om te help verstaan ​​dit, let8217s plot twee verskillende verhoudings: x vs y en x vs mag: die bewegende gemiddelde hier is die groen plot wat begin by 3: Deel hierdie: Soos hierdie: Verwante Post navigasie Laat 'n antwoord Kanselleer antwoord Baie nuttig Ek wil graag die laaste deel lees op groot datastelle Hoop dit sal soon8230 d bloggers kom soos volg: OLSO 0.1.2 Elsen API Biblioteek LTP aligncentergt LTA hrefelsen. cogt ltimg srcelsen. co/img/apple-touch-icon-144x144. png / GT dit / AGT dit / PGT Hierdie biblioteek is die Python bindings aan die Elsen API wat integreer met die bestaande finansiële Python modellering gereedskap soos Pandas en Numpy / Scipy. Vir gemak van gebruik, word dit aanbeveel dat jy Anaconda Python verspreiding wat beskikbaar is vir Windows, Mac OSX en Linux gebruik. Dit is 'n self-contained Python omgewing wat bondels al die algemene finansiële modellering gereedskap. 1) Installeer Anaconda (docs. continuum. io/anaconda/installmac-install) 2) Begin Terminal van die aansoeke: Nut gids. 3) Kloon die bron-kode vir die biblioteek. bash git kloon gitgithub: OLSO-handel / OLSO-python. git As jy nie Git tans geïnstalleer dan 'n venster sal verskyn om jou te vra om ontwikkelaarnutsgoed installeer. Klik voort en die weer uit te voer die bogenoemde opdrag. 4) skuif na die gids biblioteek bron. 5) Die installering van die Elsen Python biblioteek. bash luislang setup. py installeer 6) Begin die voorbeeld kode. bash luislang Example. py Of van stapel te stuur reguit in die IPython notaboek. 1) Installeer Anaconda (docs. continuum. io/anaconda/installlinux-install) 2) As jy nie Git geïnstalleer, installeer dit dan. bash sudo apt-get installeer git 3) Maak die Dash deur te kliek op die ikoon Ubuntu in die boonste links, tipe terminale, en kies die program Terminal van die resultate wat vertoon word. 4) Kloon die bron-kode vir die biblioteek. bash git kloon gitgithub: OLSO-handel / OLSO-python. git 5) skuif na die gids biblioteek bron. 6) Die installering van die Elsen Python biblioteek. bash luislang setup. py installeer 7) Begin die voorbeeld kode. bash luislang Example. py Of van stapel te stuur reguit in die IPython notaboek. bash PIP installeer r requirements. txt luislang setup. py Optionally verskeie algemene biblioteke installeer kan geïntegreer: bash PIP installeer pandas neut installeer Numpy neut installeer ipython PIP installeer matplotlib Die biblioteek is heeltemal vervat in die OLSO module: luislang van OLSO invoer te kontroleer met die stelsel sal jy nodig het vier stukke van inligting vervat in jou Elsen Welkom e-pos: verifikasie teken aansoek ID Gebruikernaam wagwoord luislang OLSO Elsen () elsen. authenticate (Toepassings-ID Toepassings-ID, gebruikersnaam Bob, wagwoord handelaar) 'n nuwe aansoek te tel. python elsen. addapplication (e bobelsen. co Toepassings-ID Toepassings-ID) Sodra jy ingeteken is, kan nuwe gebruikers om 'n aansoek gevoeg word. python elsen. adduser (Toepassings-ID, gebruikersnaam, wagwoord, Optioneel velde Noemnaam Bob, Familienaam Trader, e-pos bobelsen. co.) luislang In 1: elsen. getexchanges () OUT1: uNASDAQ, uNYSE, uAMEX luislang In 1: elsen. getindices () OUT1: uSP500 om die mees algemene (in terme van telling maatskappy) filters beskikbaar in die stelsel navraag die algemene filters funksie te kry. Die top 10 in die stelsel is soos volg: avgvol30 - Gemiddelde hoeveelheid aandele verhandel in 'n tydperk van 30 dae. phigh250 - Persentasie hoogste prys wat 'n voorraad op is verhandel in die vorige jaar. dailyvolume - Gemiddelde hoeveelheid aandele verhandel op 'n dag. currentprice - Real-time prys van 'n sekuriteit of die mees onlangse gelys. plow250 - Persentasie om die laagste prys wat 'n voorraad op is verhandel in die vorige jaar. inceibt - Netto inkomste voor belasting - incsdws - Geweegde gemiddelde gewone aandele uitstaande insluitend verdunning as gevolg van opsies. - Incsdai - EPS (met inagneming van opsies) insluitend uitgawes veroorsaak deur buitengewone gebeurtenisse. - Incsbas - Geweegde gemiddelde gewone aandele uitstaande minder verwatering. - Incsbai - EPS insluitend uitgawes veroorsaak deur buitengewone gebeurtenisse soos natuurrampe, ens luislang nr 1: elsen. getfilters () 00:10 OUT1: ltltfilter: nameincvpti descIncome voor belasting nie-herhalende kostes en / of krediete. count500gtgt, ltltfilter: nameincndep descDepreciation Expense count2gtgt, ltltfilter: nameincxnic descIncome beskikbaar uitgesluit uitgawes veroorsaak deur buitengewone gebeurtenisse. count504gtgt, ltltfilter: nameincnama descAmortization van verkrygingskoste count0gtgt, ltltfilter: nameincvrrp descReported Gewone Wins count0gtgt, ltltfilter: nameincsbtr descBank Totale inkomste count43gtgt, ltltfilter: nameincstps descTotal Plan dienskoste count83gtgt, ltltfilter: nameincvdcd descDefined Bydrae Expense - Binnelandse count30gtgt, ltltfilter: nameincvxtc descTransition koste - na-aftrede count8gtgt, ltltfilter: namebalqtsn1 descNumber van gewone aandele wat besit word deur die maatskappy self en sy filiale count477gtgt luislang In 2: elsen. searchfilters (wins) OUT2: ltltfilter: nameincvrrp descReported Gewone wins count0gtgt, ltltfilter: nameincvnbp descReported Net Besigheid winste count0gtgt, ltltfilter: nameincvopp descReported Bedryfswins count2gtgt, ltltfilter: nameincndta descDealer Handelsrekening wins count1gtgt, ltltfilter: nameincmigk descNew Besigheid wins count0gtgt, ltltfilter: nameincttax descAll belasting op grond van wins besit te federale, staats-en / of buitelandse regering. count484gtgt, ltltfilter: nameincvgrp descReported Bruto Wins count0gtgt, ltltfilter: nameincvopr descReported bedryfswinsmarge count0gtgt, ltltfilter: nameincsgrp descGross Wins count386gtgt, ltltfilter: nameincmibz descUnderwriting wins of verlies count5gtgt, ltltfilter: nameincsnpm descThe verhouding van netto wins na inkomste (tipies uitgedruk in) . count477gtgt, ltltfilter: nameincninc descA maatskappy se totale verdienste of wins. count504gtgt luislang In 1: elsen. getindicators () OUT1: ltltindicator: trailinggtgt, ltltindicator: crossgtgt, ltltindicator: emagtgt, ltltindicator: rsigtgt, ltltindicator: macdgtgt, ltltindicator: bollingerbandgtgt, ltltindicator: smagtgt relatiewe sterkte-indeks: luislang in 1: rsi elsen. getindicators (RSI) In2: druk rsi. shortdesc die relatiewe sterkte-indeks (RSI) meet die tendens van 'n sekuriteite prys deur die meting van die verhouding van die gemiddelde winste te gemiddelde verliese, en dit na 'n indeks van 1 tot 100. In 3: RSI. insette () ulookback: u Terugblik tydperke, ulower: uSmallest waarde wat 'n aktivering sal sneller, inklusiewe, uname:. ursi, uupper: uLargest waarde wat 'n aktivering, inklusiewe sal aktiveer. Eenvoudige bewegende gemiddelde: luislang In 1: SMA elsen. getindicators (SMA) In 2: druk sma. shortdesc Die eenvoudige bewegende gemiddelde is 'n sleep prys aanwyser, wat aandui tendense in sekuriteite pryse deur die meting van die gemiddelde sluitingsprys van 'n beperkte aantal periodes voor om die huidige tydperk. In 3: Druk sma. inputs () uupper: uLargest waarde wat 'n aktivering, inklusiewe, ulower sal aktiveer. USmallest waarde wat 'n aktivering sal sneller, inklusiewe, ulookback:. Grote uWindow, uname: uSMA luislang koop wanneer oorverkoop ind1 aanwyser ( actionBUY, nameRSI, lower1, upper30, lookback21) verkoop wanneer oorgekoop ind2 aanwyser (actionSELL, nameRSI, lower70, upper100, lookback21) Filter lae prys en 'n lae volume maatskappye flt1 Filter (namecurrentprice, min0, max200) flt2 Filter (nameavgvol30, min10000000. 0, max3400000000.0) Stel die strategie strategie elsen. setupstrategy (heelal SP900, aanwysers ind1, ind2, filters flt1, flt2, interval 1) om die backtest voer toepassing slaag die strategie voorwerp as 'n argument om saam setupbacktest met 'n datum bereik. python backtest elsen. setupbacktest (strategie strategie, begin 2014/05/01, einde 2014/12/01) Begin die backtest, wag vir die uitslae. backtest. join (timingTrue) backtest. details () Om die spesifieke besonderhede te trek vir 'n backtest in die stelsel, gegee 'n spesifieke backtest ID. Gebruik die detailsfor funksie. luislang in 1: elsen. detailsfor (dfd7faf3-E13C-4293-b55d-33bbd4fb0f9f) luislang in 1: Druk Opbrengste: s backtest. returns () gee terug: 40.193,9147 In2: druk Sharpe verhouding: s backtest. sharpe () Sharpe verhouding: 0,77072534093809145889 IN3: druk Alpha: s backtest. alpha () Alpha: -,140887764298623 In4: Druk Beta: s backtest. beta () Beta: 0,0000752396488764315 om al die statistieke vir die backtest kry beswaar kan jy hulp (backtest) noem die lys van al kry beskikbare eiendomme en metodes. Die backtest voorwerp self kan ook omgeskakel word na 'n Pandas dataframe, into voorwerp, of serialized na 'n lêer. luislang in 1: backtest. todataframe (). In2: backtest. tojson (). In 3: backtest. todataframe () drawdown Out4: 0 45,48239846246275415098 Naam: drawdown, dtype: teen die individuele bedrywe te trek vir 'n backtest gebruik die ambagte funksie wat die gevolg dataframe voorwerp kan genereer. luislang in 1: backtest. trades (). In2:. Backtest. trades () todataframe () bash CD dokumente maak html maak latexpdf As jy 'n probleem met Elsen ondersteuning dien, dan moet jy sit die volgende lyn aan die begin van jou script. In die foutverslag / e-pos te ondersteun asseblief die volgende insluit script of IPython Notebook gebruik om jou program uit te voer. Die uitset lêer OLSO-python. log. Die gebruik gevalle word ook voorsien in IPython notaboek vorm vir interaktiewe gebruik: bash ipython notaboek Visualization. ipynb Ok so Im skryf 'n klas wat 'n eenvoudige bewegende gemiddelde sal bereken op 'n lys van pryse. Dit word bereken dat die gemiddelde elke N aantal pryse sonder die berekening van die eerste N-1 dae. Dit is wat ek het: Ek het dit getoets deur 'n objekklas op die dop x Simplemovingaverage (3, 1,2,3,4,5,6,7,8,9,10) en dan doen die bereken metode x. calculate die uitset ek is: So uit my lys van getalle sy enigste berekening tot 7,8,9 die laaste nommer moet 9 wees, want dis die gemiddeld van 8,9,10 en ook daar moet net 3 nulle sedert N is 3. Dit is die uitset Im op soek na: vra 18 Februarie 14 aan 05:32 Goed, thx. Ek don39t beteken om afbreuk aan die onderwerp, die doel was om SMA hanteer met behulp van 'n klas. Ek het gedink dat daar dalk 'n paar soos ek wat verkies om dinge eenvoudig te hou, ek gebruik die lyne in algoritmiese handel kode. stuur dit net 'n lys van getalle (dryf in my geval) en 'n Terugblik venster grootte (heelgetal) en it39ll terugkeer die huidige eenvoudige bewegende gemiddelde waarde. Op die oomblik is ek gebruik 3 sma39s so ek vind dat handige / gerieflik / buigsaam. Wat ons don39t sien is dat priceslist word aangeheg met 'n prys vir elke handel bar voordat dit gestuur om daardie funksie. Hoop dit help. â € gseattle 24 Julie 14 aan 09:02 Youve got 'n deur een fout. Probeer hierdie: So dit kan illustreer daar te doen 'n bietjie So die probleem is dat die luislange lys sny operateur terugkeer tot ek in die voorbeeld hierbo, maar nie ek nie, (in hierdie voorbeeld is dit terug i-3, i-2 en i - 1) EGI is speel in Python 'n bietjie weer, en ek het 'n netjiese boek met voorbeelde. Een van die voorbeelde is 'n paar data plot. Ek het 'n txt lêer met twee kolomme en ek het die data. Ek geplot die data net mooi nie, maar in die oefening dit sê: Pas jou program verder te bereken en stip die loop gemiddeld van die data, gedefinieer deur: waar R5 in hierdie geval (en die yk is die tweede kolom in die datalêer) . Het die program plot beide die oorspronklike data en die lopende gemiddeld op dieselfde grafiek. Tot dusver het ek dit: So, hoe kan ek bereken die som In Mathematica sy eenvoudige sedert sy simboliese manipulasie (Sumi, byvoorbeeld), maar hoe om som te bereken in luislang wat elke tien punte in die data en gemiddeldes wat dit neem, en doen dit tot aan die einde van punte wat ek gekyk na die boek, maar niks gekry nie dat dit sal verduidelik: heltonbikers kode het die truuk: D Dankie :) Daar is 'n probleem met die aanvaarde antwoord. Ek dink ons ​​moet geldig in plaas van dieselfde hier gebruik - terugkeer numpy. convolve (interval, venster, dieselfde). As 'n voorbeeld probeer om uit die MA van hierdie-datastel 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - die gevolg moet wees 4.2,5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6,4.6,7.0,6.8. maar met dieselfde gee ons 'n verkeerde afvoer van 2.6,3.0,4.2,5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6, 4.6,7.0,6.8,6.2,4.8 Rusty kode om dit te probeer uit -: Probeer hierdie met 'n geldige amp dieselfde en kyk of die wiskunde sin maak. antwoord 29 Oktober 14 aan 04:27 Haven39t probeer dit uit, maar I39ll kyk na dit, It39s lanklaas I39ve gekodeer in Python. â € dingod 29 Oktober 14 aan 07:07 dingod Hoekom don39t jy vinnig dit te probeer met die verroes kode (en die voorbeeld van die data-stel (soos 'n eenvoudige lys), gepos ek. Vir sommige lui mense (soos ek aanvanklik was) -.. sy maskers uit die feit dat bewegende gemiddelde is incorrect. Probably jy in ag moet neem redigering jou oorspronklike antwoord wat ek probeer dit net gister en dubbele kontrole gered my aangesig soek sleg verslagdoening aan CXO vlak Al wat jy hoef te doen, is om te probeer jou dieselfde bewegende gemiddelde keer met quotvalidquot en ander tyd saam met quotsamequot - en sodra jy is oortuig gee my 'n paar liefde (aka-up-stemming) uitvoering maak ekta 29 Oktober 14 aan 7: 16Forecasting en Python Deel 1 8211 Moving Gemiddeldes Ek wil skop af 'n reeks wat verskillende vooruitskatting metodologieë neem en demonstreer dit deur middel van Python. om die 8216ball rolling8217 Ek wil begin met bewegende gemiddeldes en ideaal eindig die reeks op die voorspelling met ARIMA modelle (outoregressiewe geïntegreerde bewegende gemiddelde) kry. My doel is om hierdie inhoud te hê 8216light8217 op teorie en wiskunde en eerder te konsentreer op aansoek kode. Ek het hierdie laataand skryf, so voel asseblief vry om my ping as ek enige foute. Ek verwys dikwels na die voorspelde Y as Y hoed, as jy nie bewus is, in die vergelyking die hoed simbool is geleë oor die voorspelde Y. Vooruitskatting met Gemiddeld bewegende gemiddeldes Moving moet aa n wonderlike plek om elke handboek begin ek begin met die verskuiwing wees gemiddeldes om die grondslag te lê. Die formules is eenvoudig en pret. Vergelyking 1: Moving Gemiddeldes vergelyking Die bewegende gemiddeldes model bere die gemiddelde van elke waarneming in periodes k. In my kode en resultate sal ek met 'n 12 tydperk bewegende gemiddelde, dus K12. Y hoed (T1) is die voorspelling waarde vir volgende tydperk en Y (t) is die werklike waarde by periode t. 'N tydperk kan ure, dae, weke, maande, jaar, ens Sedert die model is dieselfde, ongeag, ek is nie van plan om 'n eenheid te spesifiseer. yvalues ​​is 'n subset van al die werklike Y waardes in die kode gebring. Stel my 8216k8217 (periodes) gelyk aan 12 as ek gaan 'n 12 tydperk bewegende gemiddelde te bereken. Die kode herhaal oor die waarnemings (N), word bereken dat die gemiddelde vir elke 12 tydperk reeks (K12) en ken die berekening van die yhat lys. In die geval dat jy opgemerk, yfull is my volledige lys van Y waardes, waar yvalues ​​is 'n subset wat is geneutraliseer deur k. meer inligting oor hierdie hieronder in die gedeelte 8216Offsetting Y subset List8217. Plot Werklike en Voorspelling Voorspelling 1. 12 tydperk bewegende gemiddelde Meet Voorspelling Foute Ek het my voorspelling, maar is dit 'n goeie Visueel die voorspelling volg die werklike waardes nogal goed, maar hoe kan ek die kwaliteit van hierdie voorspelling te meet en dan vergelyk dit teen voorspellings afgelei met behulp van verskillende metodes. Een manier om 'n voorspelling te meet is deur die meting van die foute (ook bekend as residue, Y werklike 8211 Y hoed) Ek verkies om die volgende metodes vir die meting voorspelling foute in hierdie bespreking te sluit. Beteken Squared Fout (MSE) wat die gemiddeldes van die kwadraat foute meet (verskil van Y en Y hoed). MSE is gerapporteer in dieselfde eenhede as die waardes wat geskat (Y), dus kan dit gesê word dat 'n voorspelling is af deur 821610.000 units8217. Hierdie fout kan gesien word as klein indien die werklike waardes wissel in die miljarde eenhede. Die fout kan gesien word as 'n groot as die werklike waardes net wissel in die 108217s duisende. 'N algemene probleem met die MSE is dat dit swaar gewigte groot uitskieters inflating die fout meting. Die wortel van gemiddelde Squared Fout neem die vierkantswortel van die MSE. RMSE verteenwoordig die monster standaardafwyking van die residue. Die gemiddelde absolute persentasiefout (Mape) is 'n alternatiewe metode wat verslae uit die fout as 'n persentasie. In plaas daarvan om te sê die voorspelling is af deur 8216x units8217, kan ons sê dat 'n voorspelling is af deur 4. Ek gebruik dikwels meer as een metode wanneer vergelyk voorspellings as elkeen het beperkings, wat een of ander tyd kan lei tot vals afmetings deur een of twee metodes. Vergelyking 2 amp 3: MSE en Mape vergelyking 3: RMSE Voorspelling 1: Fout Metings MSE: 630,649.39 RMSE: 794,13 kaart: 10,22 Verrekening Y subset Lys Dit is interessant dat die bogenoemde voorspelling (voorspelling 1) is nie 8216fit8217 die werklike waardes meer effektief 8211 dit is 'n eenvoudige data-reeks, ek sou verwag dat die residue om kleiner wees. Om die Y hoed waardes vir die tydperk 12 bewegende gemiddelde model bereken, ek gebruik 'n formule wat tyd (t) 12 periodes voor beweeg (sien vergelyking 1 hierbo). Dit was hoe ek oorspronklik geleer en het voorbeelde in handboeke op my kantoordeur rak. Hierdie kode skep yfull van die gelaaide data lêer dan skep 'n subset lys begin 12 periodes in. Why8230 omdat ons die eerste 12 tydperk sal gebruik om afskop ons bewegende gemiddelde skatting. Die voorspelling waardes egter nie 8216fit8217 die werklike waardes soveel as wat ek wil. Hulle is óf onder voorspel of meer voorspel. Nog 'n metode vir die bewegende gemiddelde vooruitskatting stel die aanvang van die voorspelling op die middelpunt van 8216k8217. Voorspelling 1: Data Gebruik die middelpunt van 8216k8217 Voorspelling 2: 12 tydperk bewegende gemiddelde vooruitskatting 2: Fout Metings MSE: 7,350.78 RMSE: 85,74 kaart: 0.86 Vergelyk die voorspelling fout metings van voorspel 1 met voorspel 2 gee 'n aanduiding dat die tweede metode beter pas ons data. However8230 Daar is 'n baie inhoud beskikbaar op gesentreerde Bewegende Gemiddeldes wat volle besonderhede van hoe om die middelpunt waardes bereken vir al / vreemde tydperke sal gee. Ek is nie daardie bron ek net wys hoe die vermindering van die lag van die gemiddeldes beter in lyn ons Y hoede met die werklike en verbeter die fout maatreëls. Die kode is byna identies, behalwe die subset lys (yvalues) geskep 6 periodes in en stop 6 periodes kort. Gemiddeld die data van die middelpunt af verminder die bedrag van bo / onder voorspel soos in voorspel 1. Voorspelling 2: Data wanneer beweeg gemiddeldes is minder geskik Moving gemiddelde vooruitskatting begin om werklik misluk wanneer die data reeks het 'n sikliese komponent of seisoenaliteit. Hieronder is die dieselfde 12 tydperk bewegende gemiddelde Python-kode teen 'n sikliese data reeks. Voorspelling 3: 12 tydperk bewegende gemiddeldes voorspel 3: Fout Metings MSE: 5,386,003,002.91 RMSE: 73,389.39 kaart: 48,79 Die plot en die berekende fout meet beide dui daarop dat bewegende gemiddeldes is nie 'n goeie passing vir hierdie reeks. Ek sal dit dieselfde reeks met ander voorspellingsmodelle te gebruik om tegnieke wat nie pick-up siklusse in die data demonstreer.

Comments

Popular Posts