Sunday, October 9, 2016

Garch Trading System

GARCH Verbeterde Nelder Mead MT4 Inleiding tot GARCH Verbeterde Nelder Mead Algoritme GARCH is die kort aanvanklike vir Generalized outoregressiewe voorwaardelike Heteroskedasticity en dit is die wisselvalligheid voorspelling model wat algemeen gebruik word in die finansiële bedryf. GARCH model is die eerste keer verskyn in die werk deur die Deense Economist, Tim Petrus Bollerslev in 1986. Die Nobelpryswenner 2003, Robert F Engle ook bygevoeg veel bydrae vir die verfyning van GARCH model met Tims werk. Ons GARCH INM voorspeller het die oorspronklike metode van Nelder Mead vir GARCH modelbou. Maar die oorspronklike Nelder Meads metode mis soms konvergensie en dus het ons die verbetering van die oorspronklike Nelder Mead metode deur die inlywing van intermediêre ARMA (outoregressiewe bewegende gemiddelde) stap voor GARCH stap. Hoe om GARCH INM voorspeller gebruik vir handel Die hele doel van GARCH INM voorspeller is om handel te verbeter. Hier is 'n paar wenke. Ons GARCH INM voorspeller gebruik punt as basiese eenheid. Daarom kan die voorspelde wisselvalligheid handelaar haalbare idee op toekomstige volatiliteit voorsien. Byvoorbeeld, as GARCH voorspel 1120 punt (112 pitte) vir huidige kers met 95 vertrouensinterval, dan kan jy verwag dat daar 95 van die voorval vir die huidige mark te bly binne die 112 pitte reeks. Opsporing anomalie mark is ook 'n ander belangrike funksie met GARCH. As prysklas vir huidige mark buite die voorspelde wisselvalligheid (95 vertrouensinterval) verskuif, dan is dit die anomalie gebeurtenis met 5 Waarskynlikheid om plaas te vind. Wisselvalligheid het 'n baie noue verband tot tendens. Toenemende wisselvalligheid dikwels vertel jy begin van die tendens. Filter reeks mark met behulp van ons GARCH INM voorspeller, kan jy daarop gemik is om tendens mark te betree. Wiskundige beskrywing van GARCH GARCH INM voorspeller gebruik van die standaard GARCH (1, 1) model. Die wiskundige beskrywing is bloot verband die variansie van tydreekse na vorige variansie en vorige kwadraat terugkeer. In wiskundige notasie, sou dit wees: Variansie by t omega Alpha kwadraat terugkeer by t-1 beta Variansie op t-1 Waar tydreekse terugkeer y by t beteken fout en t tyd beskrywing vir insette parameters NumberOfObs: aantal waarnemings (data punt) om gebruik te word vir die berekening. Ons beveel aan minimum 1000 data punt. UseHighLow: Met gebruik van hoog-laag af (ware), die reeks is bereken met behulp van 'n hoë laag. As UseHighLow valse, dan naby vorige noue sal gebruik word om verskeidenheid te bereken. Ons beveel die gebruik van verstek vir jou handel. ConfidenceInterval: vertrouensinterval vir GARCH voorspelling. Ons bied 90, 95 en 99 vertrouensinterval. Dit vertrouensinterval bied jou probabilistiese sin vir toekomstige mark reeks. SafetyFactor: veiligheidsfaktor bygevoeg vir ekstra veiligheid van handel operasie. Veiligheidsfaktor moet groter as 1. wees As veiligheidsfaktor 1, dan is die voorspel wisselvalligheid gelyk aan oorspronklike GARCH wisselvalligheid is. As veiligheidsfaktor 1.5, dan sal die voorspelde wisselvalligheid 50 veilige marge oor die oorspronklike GARCH wisselvalligheid het. Let oor GARCH Nelder Mead Dit GARCH indicator is 'n poging gewaagd om gevorderde wetenskaplike metode in die werklike wêreld handel aansoek te bring. Parameter beraming van GARCH algoritme is veral moeilik en misleidend selfs onder ervare statistici. Hier gee ons die self optimalisering GARCH algoritme vir entoesiastiese Wetenskaplike minded handelaars. Dit is gratis sagteware en dus kan ons u beperkte kliëntediens op ons GARCH Nelder Mead bied. Eerder as dat, kan jy geniet hierdie gratis, maar kragtige handel stelsel. As GARCH parameter is binne aanvaarbare akkuraatheid van sy ware parameters, dan kan jy werklik kragtige wisselvalligheid predition hulpmiddel vir jou strategie het. Skrywer, Finansies ingenieur het 'n dekades se ervaring in die bou van handel en belegging stelsel met behulp van gevorderde wiskundige en wetenskaplike methods. ARIMAGARCH Trading Strategie op die SampP500 Stock Market Index Gebruik R Deur Michael Saal-Moore op 7 Oktober 2015 In hierdie artikel wil ek om te wys hoe om al toepassing van die kennis wat in die vorige tydreeksanalise poste 'n handel strategie op die SampP500 Amerikaanse aandelemark-indeks. Ons sal sien dat deur die kombinasie van die ARIMA en GARCH modelle kan ons aansienlik oortref 'n koop-en-hou-benadering oor die lang termyn. Strategie Oorsig Die idee van die strategie is relatief eenvoudig, maar as jy wil om te eksperimenteer met dit Ek hoogs stel voor die lees van die vorige poste op tydreeksanalise ten einde te verstaan ​​wat jy sou verander Die strategie is uit op 'n deurlopende grondslag gedoen: Vir elke dag, n, die vorige k dae van die differenced logaritmiese opbrengste van 'n aandelemark-indeks word gebruik as 'n venster vir pas 'n optimale ARIMA en GARCH model. Die gekombineerde model word gebruik om 'n voorspelling te maak vir die volgende dag terugkeer. As die voorspelling is negatief die voorraad kortsluiting by die vorige noue, terwyl as dit positief dit verlang. As die voorspelling is dieselfde rigting as die vorige dag dan is daar niks verander. Om hierdie strategie het ek gebruik om die maksimum beskikbare data van Yahoo Finansies vir die SampP500. Ek het K500 geneem, maar dit is 'n parameter wat gebruik kan word new ten einde prestasie te verbeter of onttrekking verminder. Die backtest word in 'n eenvoudige gevectoriseerd mode gedra met behulp van R. Dit het nie in die Python-gebeurtenis gedrewe backtester geïmplementeer as van nog. Vandaar die prestasie behaal in 'n ware handel stelsel sal waarskynlik effens minder as wat jy hier kan bereik, as gevolg van kommissie en glip. Strategie implementering van die strategie gaan ons 'n paar van die kode wat ons voorheen geskep in die tydreeksanalise artikel reeks asook 'n paar nuwe biblioteke insluitend rugarch gebruik te implementeer. , wat aan my voorgestel deur Ilya Kipnis oor te QuantStrat Trader. Ek gaan deur die sintaksis in 'n stap-vir-stap mode en dan bied die volle implementering aan die einde, sowel as 'n skakel na my dataset vir die ARIMAGARCH aanwyser. Ive ingesluit laasgenoemde omdat dit vir my 'n paar dae geneem het op my desktop rekenaar na die seine Jy moet in staat wees om my resultate te herhaal in geheel as die kode self is nie te ingewikkeld te genereer, alhoewel dit 'n geruime tyd om na te boots as jy neem voer dit uit in volle. Die eerste taak is om te installeer en die nodige biblioteke te voer in R: As jy reeds die biblioteke geïnstalleer kan jy dit net in te voer: Met dit klaar is gaan die strategie om die SampP500 toe te pas. Ons kan gebruik quantmod om data terug na 1950 gaan vir die indeks te verkry. Yahoo Finansies gebruik die simbool GPSC. Ons kan dan skep die differenced logaritmiese opbrengste van die sluitingsprys van die SampP500 en stroop uit die aanvanklike NA waarde: Ons moet 'n vektor te skep, voorspellings ons vooruitskouing waardes te stoor op spesifieke datums. Ons stel die lengte foreLength gelyk aan die lengte van die handel data wat ons het minus k te wees, die venster lengte: Op hierdie stadium moet ons lus deur elke dag in die handel data en pas 'n toepaslike ARIMA en GARCH model om die rol venster van lengte k. Gegewe dat ons probeer 24 afsonderlike ARIMA rukke en pas 'n GARCH model, vir elke dag, die aanwyser kan 'n lang tyd om te genereer neem. Ons gebruik die indeks d as 'n herhaling veranderlike en lus van k aan die lengte van die handel data: Ons skep dan die rol venster deur die SampP500 opbrengste en die kies van die waardes tussen 1d en kd, waar K500 vir hierdie strategie: Ons gebruik die dieselfde prosedure as in die ARIMA artikel te soek deur al ARMA modelle met p in en Q in, met die uitsondering van p, Q0. Ons draai die arimaFit oproep in 'n R tryCatch hantering van uitsonderings blok om te verseker dat as ons dit nie kry 'n geskik is vir 'n bepaalde waarde van p en q, ons ignoreer dit en beweeg aan na die volgende kombinasie van p en q. Let daarop dat ons 'n geïntegreerde waarde van D0 (dit is 'n ander d ons kruip parameter) en as sodanig is ons regtig pas 'n ARMA model. eerder as 'n ARIMA. Die herhaling prosedure sal ons die beste pas ARMA model, in terme van die Akaike Inligting Criterion, wat ons dan kan gebruik om in te voer om ons GARCH model: In die volgende kode blok gaan ons die rugarch biblioteek gebruik, met die GARCH (1,1) model. Die sintaksis vir hierdie vereis dat ons die opstel van 'n ugarchspec spesifikasie voorwerp wat 'n model neem vir die variansie en die gemiddelde. Die variansie ontvang die GARCH (1,1) model, terwyl die gemiddelde duur 'n ARMA (p, q) model, waar P en Q hierbo gekies. Ons kies ook die SGED verspreiding vir die foute. Sodra ons die spesifikasie gekies ons uit te voer die werklike pas van ARMAGARCH met behulp van die ugarchfit opdrag, wat die spesifikasie voorwerp, die k opbrengste van die SampP500 en 'n numeriese optimalisering oplosser neem. Ons het gekies om baster gebruik. wat probeer verskillende solvers ten einde die waarskynlikheid van konvergensie verhoog: As die GARCH model nie konvergeer dan ons eenvoudig gestel die dag na 'n lang voorspelling, wat duidelik 'n raaiskoot te produseer. Maar, as die model dan konvergeer ons uitset die datum en ketting voorspelling rigting (1 of -1) as 'n string op watter punt die lus is afgesluit. Met die oog op die uitset vir die CSV Ek het 'n string wat die data geskei deur 'n komma met die voorspelling rigting vir die daaropvolgende dag bevat geskep voor te berei: Die voorlaaste stap is om uitset die CSV op skyf. Dit stel ons in staat om die aanwyser te neem en gebruik dit in alternatiewe back testing sagteware vir verdere ontleding, as dit so verkies: Daar is 'n klein probleem met die CSV soos dit nou staan. Die lêer bevat 'n lys van datums en 'n voorspelling vir ketting rigting. As ons hierdie laai in die backtest kode hieronder soos dit nou is, sou ons eintlik die bekendstelling van 'n blik lig vooroordeel omdat die voorspellingswaarde data nie bekend ten tye van die voorspelling sal verteenwoordig. Ten einde tot verantwoording vir hierdie moet ons net tot die voorspelde waarde eendag vorentoe te beweeg. Ek het hierdie gevind meer eenvoudig met Python te wees. Sedert ek nie wil om te aanvaar dat jy het 'n spesiale biblioteke (soos pandas) geïnstalleer, Ive het dit te suiwer Python. Hier is die kort script wat hierdie proses voer. Maak seker om dit uit te voer in dieselfde gids as die forecasts. csv lêer: Op hierdie punt nou het ons die gekorrigeer aanwyser lêer gestoor in forecastsnew. csv. Aangesien dit neem 'n aansienlike bedrag van die tyd te bereken, Ive op voorwaarde dat die volle lêer hier vir jou om jouself af te laai: Noudat ons ons aanwyser CSV ons nodig het om sy prestasie te amp Hou Koop vergelyk het gegenereer Strategie Resultate. Ons lees in die eerste plek in die aanwyser van die CSV en stoor dit as spArimaGarch: Ons skep dan 'n kruising van die datums vir die ARIMAGARCH voorspellings en die oorspronklike stel opgawes van die SampP500. Ons kan dan bereken die opbrengste vir die ARIMAGARCH strategie deur te vermenigvuldig die vooruitsig teken (of -) met die terugkeer homself: Sodra ons die opbrengs van die ARIMAGARCH strategie wat ons kan aandele kurwes vir beide die ARIMAGARCH model en koop amp Hou skep. Ten slotte, kombineer ons dit in 'n enkele datastruktuur: Ten slotte, kan ons die xyplot opdrag gebruik om aandele kurwes plot op dieselfde plot: Die ekwiteit kurwe tot 6 Oktober 2015 is soos volg: Soos jy kan sien, oor 'n 65 jaar tydperk, het die ARIMAGARCH strategie aansienlik beter gevaar as Koop amp beklee. Jy kan egter ook sien dat die meerderheid van die wins plaasgevind tussen 1970 en 1980. Let daarop dat die wisselvalligheid van die kurwe is baie minimaal tot in die vroeë 80's, waar aansienlik wys die wisselvalligheid stygings en die gemiddelde opbrengs is minder indrukwekkend. Dit is duidelik dat die aandele kurwe beloof groot prestasie oor die hele tydperk. Tog sou hierdie strategie regtig verhandelbaar In die eerste plek is, kan kyk na die feit dat die ARMA model net is gepubliseer in 1951. Dit wasnt regtig wyd aangewend tot die 1970's toe Box amp Jenkins bespreek dit in hul boek. In die tweede plek, wasnt die boog model ontdek (in openbare) tot in die vroeë 80's, deur Engle, en GARCH self is in 1986 gepubliseer deur Bollerslev Derdens, hierdie backtest het eintlik al uit op 'n aandelemark indeks gedra en nie 'n fisies verhandelbare instrument. Ten einde toegang tot 'n indeks te verkry soos hierdie sou dit nodig gewees het om SampP500 termynkontrak of 'n replika Beursverhandelde fonds (ETF) soos SPDR handel. Vandaar is dit regtig wat geskik is vir sulke modelle is van toepassing op 'n historiese reeks voor hul uitvinding 'n alternatief is om te begin die toepassing van die modelle meer onlangse data. In feite, kan ons die prestasie oorweeg in die laaste tien jaar, vanaf 1 Januarie 2005 tot vandag: Soos jy kan sien die aandele kurwe bly onder 'n koop amp Hou strategie vir byna 3 jaar, maar tydens die ineenstorting van die aandelemark van 2008/2009 dit nie baie goed. Dit maak sin, want daar is waarskynlik 'n beduidende korrelasie in hierdie tydperk wees en dit sal goed gevang deur die ARIMA en GARCH modelle. Sodra die mark herstel ná 2009 en gaan wat lyk meer 'n stogastiese tendens wees, die model prestasie begin weer ly. Let daarop dat hierdie strategie maklik toegepas kan word om verskillende aandelemark indekse, aandele of ander bateklasse. Ek raai jy om te probeer navors ander instrumente, soos jy aansienlike verbeterings op die hier aangebied resultate kan behaal. Volgende stappe Noudat weve klaar bespreek die ARIMA en GARCH familie van modelle, ek wil die tydreeksanalise bespreking deur die oorweging van 'n lang-geheue prosesse, state-ruimte modelle en gecoïntegreerd tydreekse voortgaan. Hierdie daaropvolgende dele van tydreekse sal ons bekend te stel aan modelle wat ons voorspellings kan verbeter as die Ive hier aangebied, wat aansienlik sal verhoog ons handel winsgewendheid en / of te verminder risiko. Volle Kode Hier is die volledige lys vir die aanwyser geslag, back testing en plot: En die Python-kode om aansoek te doen om forecasts. csv voor reimporting: 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 verskansingsfondse. Verwante ArticlesQuantum vennootskappe skryf 'n interessante artikel Regime Skakel stelsel met behulp van Volatiliteit skatting. Die artikel bied 'n elegante algoritme om te wissel tussen gemiddelde-terugkeer en-tendens volgende strategieë gebaseer op die markonbestendigheid. Twee model word ondersoek: een met behulp van die historiese wisselvalligheid en 'n ander met behulp van die GARCH (1,1) Volatiliteit skatting. Die gemiddelde-terugkeer strategie is geskoei met RSI (2): Lank wanneer RSI (2), en Kort anders. Die tendens volgende strategie is geskoei met SMA 50/200 crossover Lank wanneer SMA (50) GT SMA (200), en Kort anders. Ek wil wys hoe om hierdie idees met behulp van die back testing biblioteek in die Sistematiese Beleggers Gereedskap te implementeer. Volgende kode vragte historiese pryse van Yahoo verloofde en vergelyk prestasie van die koop en hou, Mean-Reversion, en die tendens-volgende strategieë gebruik te maak van die back testing biblioteek in die Sistematiese Beleggers Gereedskap: Volgende, kan skep 'n strategie wat wissel tussen gemiddelde-terugkeer en tendens - Spring strategieë gebaseer op historiese markonbestendigheid. Volgende, kan skep 'n GARCH (1,1) Volatiliteit skatting. GARCH (1,1) deur David Harper 8211 'n baie goeie inleidende artikel met baie visuele diagramme: Ek sal lees volgende artikels vir almal wat wil om uit te vind wat GARCH is alles oor of om hul kennis te verfris beveel. Praktiese vraagstukke in Eenveranderlike GARCH Modellering deur Y. Chalabi, D. Wurtz 8211 stap vir stap voorbeeld van gepaste GARCH (1,1) model met volle R-kode. Basiese Inleiding tot GARCH deur Quantum vennootskappe 8211 is 'n reeks van poste wat gaan in die besonderhede en aannames van GARCH en EGARCH. Daar is 'n paar R pakkette om GARCH modelle inpas. Ek sal GARCH funksie van tseries pakket en garchFit funksie van fGarch pakket oorweeg. Die GARCH funksie van tseries pakket is vinnig, maar nie altyd oplossing. Die garchFit funksie van fGarch pakket is stadiger maar meer konsekwent konvergeer. Om die spoed verskil tussen GARCH funksie en garchFit funksie demonstreer Ek het 'n eenvoudige maatstaf: Die garchFit funksie is gemiddeld 6 keer stadiger as GARCH funksie. So om wisselvalligheid Ek sal probeer om GARCH funksie gebruik te voorspel wanneer dit 'n oplossing en garchFit funksie anders kan vind. Nou, kan skep 'n strategie wat wissel tussen gemiddelde-terugkeer en-tendens volgende strategieë gebaseer op GARCH (1,1) wisselvalligheid skatting. Die skakel strategie wat GARCH gebruik (1,1) wisselvalligheid voorspelling uitgevoer effens beter as die een wat historiese wisselvalligheid gebruik. Daar baie verskillende benaderings wat jy kan neem om vooruitskatting te neem in jou modelle en handel strategieë. R het 'n baie ryk versameling van pakkette te modelleer en voorspel tydreekse. Hier is 'n paar voorbeelde wat ek interessant gevind het: Om die volledige bronkode vir hierdie voorbeeld sien, asseblief 'n blik op die funksie bt. volatility. garch () in bt. test. r op GitHub. ARMA Models vir Trading In hierdie handleiding ek ek gaan my R038D deel en handel ervaring met behulp van die bekende van statistieke outoregressiewe bewegende gemiddelde Model (ARMA). Daar is 'n baie geskryf oor hierdie modelle, maar ek raai Inleidende tydreekse met R. wat ek vind is 'n perfekte kombinasie tussen lig teoretiese agtergrond en praktiese implementering in R. Nog 'n goeie lesing is die aanlyn e-boek vooruitskatting: beginsels en oefen geskryf deur Rob Hyndman. 'n kenner op statistiese vooruitskatting en die skrywer van die uitstekende vooruitsig R pakket. Aan die slag In R, ek meestal met behulp van die FARMA pakket, wat 'n mooi omslag met uitgebreide funksionaliteit rondom die ARIMA funksie van die statistieke pakket (wat in die bogenoemde boek). Hier is 'n eenvoudige sessie van pas 'n ARMA model om die S038P 500 daaglikse opgawes: Vir meer besonderhede, verwys asseblief na die literatuur en die pakkette, ek wil net beklemtoon op 'n paar punte: Ons model die daaglikse opbrengs in plaas van die pryse . Daar is veelvoude redes: Só finansiële reeks gewoonlik stilstaande oor te skakel, moet ons een of ander manier om 'n reeks 8220normalize8221, ens Ons gebruik die ewenaar en teken funksie om die daaglikse opbrengs in plaas van persentasies te bereken. Nie net is dit 'n standaard praktyk in statistiek, maar dit bied ook 'n damn goeie benadering tot die diskrete opbrengste. Die benadering sal ek hier aan te bied is 'n vorm van loop-vorentoe back testing. Terwyl loop die reeks van dag tot dag, sal ons die geskiedenis van sekere lengte gebruik om die beste model vind. Dan sal ons hierdie model gebruik om die volgende day8217s terugkeer voorspel. As die voorspelling is negatief, ons aanvaar kort posisie, anders neem ons 'n lang posisie. 'N Voorbeeld sal dinge duideliker te maak: Na die afsluiting van 11 Junie 2012, het ons bereken die laaste 500 daaglikse opgawes. Die gebruik van hierdie opbrengste ons soek deur die ruimte van ARMA modelle en kies die beste pas (met betrekking tot 'n metrieke en 'n paar vereistes) model. Ten slotte, ons gebruik hierdie model om die voorspelling vir die tomorrow8217s terugkeer bereken en gebruik die teken van die terugkeer na die toepaslike posisie besluit. Die keuse van 'n goeie model Die eerste hindernis vir hierdie metode voor dit nuttig om ons te kon wees, is om die model parameters te kies. In die geval van ARMA, is daar twee parameters. Met ander woorde, daar is 'n oneindige aantal keuses: (0,1), (1,0), (1,1), (2,1), ens Hoe weet ons watter parameters 'n gemeenskaplike benadering in gebruik statistieke te kwantifiseer die goedheid van fiks toets is die AIC (vir Akaike inligting Kriteria) statistiek. Sodra die gepaste gedoen word, die waarde van die AIC statistieke is toeganklik via: Daar is ander statistieke natuurlik egter tipies die resultate is baie soortgelyk. Om op te som, al wat ons nodig het is 'n lus om te gaan deur al parameter kombinasies ons dink redelike, byvoorbeeld uit (0,0) tot (5,5), inklusiewe, vir elke parameter paar pas die model, en uiteindelik die model met pick die laagste AIC of 'n ander statistiek. Let daarop dat soms armaFit versuim om 'n pas te vind en terug 'n fout, dus die lus onmiddellik ophou. armaSearch hanteer hierdie probleem deur die gebruik van die tryCatch funksie om enige fout of waarskuwing vang en terug te keer 'n logiese waarde (onwaar) in plaas van onderbreking van alles en opwindende met 'n fout. So kan ons 'n verkeerde en normale funksie terugkeer onderskei net deur te kyk na die tipe van die resultaat. 'N bietjie slordig waarskynlik, maar dit werk. Sommige R pakkette, voorspelling en rugarch byvoorbeeld, bied 'n soortgelyke, auto. arima funksie uit die boks. So kan 'n mens sy infrastruktuur te bou rondom een ​​van hierdie plaas. Vooruitskatting Sodra die parameters gekies word, it8217s tyd om die posisie aan die einde te bepaal. Een manier om dit te doen is deur 'n een dag voor voorspelling, indien die voorspelling negatiewe kom (onthou die reeks is ons aktief op die daaglikse opbrengs) dan die verlangde posisie is kort, anders it8217s lank. Nou, na 'n aanduiding vir die rug toetsing te bou, kan 'n mens loop die daaglikse opbrengs reeks en by elke punt uit te voer die stappe wat ons tot dusver gedek. Die belangrikste lus lyk (verkort met 'n doel): Waar geskiedenis is die uitkyk terug tydperk te oorweeg by elke punt, ek gebruik gewoonlik 500, wat sowat twee jaar van data. Met ander woorde, om die posisie by elke individuele dag bepaal (vorige dag naby die huidige dag naby bepaal die opbrengs) wat ons gebruik geskiedenis van 500 dae, uitgestel deur loop dag. Jy sal sien later hoe lags kom in die spel in die praktyk. Kennisgewing, wat voorspel het ook omring deur 'n tryCatch blok. armaSearch het ook die mooi eienskap om te bepaal of 'n model het 'n voorspelling of nie (voorspel slaag of nie, is hierdie toets beheer via die parameter withForecast). Die verbetering van prestasie Die aantal berekeninge wat ons moet doen voeg vinnig. Byvoorbeeld, vir 10 jaar van historiese data wat ons nodig het om te bereken oor 2520 handelsdae. Vir elke dag wat ons gaan pas en te voorspel ten minste 35 (3566-1, 0-5 beide vir die AR en MA komponent, maar met uitsluiting van die (0,0) kombinasie) modelle. Vermenigvuldig die aantal modelle deur die aantal dae, en ons is reeds op soek na meer as 88.000 model pas 8211 that8217s baie berekeninge. Een manier om die prestasie van hierdie noodsaaklike berekeninge verbeter kan bereik word deur die ontginning van multi-core CPU. My benadering is om die model seleksie, die funksie armaSearch in die bogenoemde kode paralleliseer. Hoewel dit nie die mees doeltreffende benadering kan wees, is dit beslis die meer praktiese, aangesien dit ook die prestasie van armaSearch sal hupstoot gekry toe onafhanklik gebruik. Ek won8217t plaas die finale weergawe van die kode hier as gevolg van it8217s lengte. Ek sal jou die kern skakel plaas Modellering Volatiliteit met GARCH Finansiële tydreeks is ewekansig in die algemeen gee. Een van die min eienskappe wat hulle uitstal is Volatiliteit Groepering. Dit is tipies gedoen deur die uitbreiding van die ARMA vooruitskatting met 'n GARCH model. Klink ingewikkeld, en die teoretiese besonderhede is kompleks inderdaad, maar dit blyk redelik eenvoudig in R te wees: Natuurlik moet ons ook alle relevante funksies, verander soos armaSearch. Oproepe na garchFit en voorspel ook nodig via tryCatch te hanteer. Let ook op dat opbrengste 'n matriks vir GARCH modelle voorspel. Die volledige bronkode is beskikbaar by 'n GitHub Yeast. S038P 500 Performance Let8217s begin met die aandele kurwe van die toepassing van die ARMAGARCH strategie oor die volle 60 jaar (sedert 1950) van S038P 500 historiese data. ARMA vs Koop-en-hou dit lyk fantasties Trouens, dit beïndruk my so baie dat ek gesoek foute in die kode vir 'n geruime tyd. Selfs op 'n logaritmiese grafiek van die prestasie van hierdie metode is stunning 8211 CAGR van 18,87, en die ARMAGARCH strategie bereik hierdie prestasie met 'n vergelykbare maksimum drawdown van 56. Om die ARMA strategie groei te bereken, moet ons eers die daaglikse aanwyser (hierdie aanwyser neem oor twee dae om te bereken met al optimalisaties ek wat in hierdie post). Die eerste kolom is die datum, die tweede posisie vir hierdie dag: 1 vir 'n lang, -1 vir 'n kort, 0 vir geen. Let word die posisie reeds in lyn met die dag van die wederkoms (dit word bereken aan die einde van die vorige dag), met ander woorde, is die aanduiding behoorlik in lyn met die opbrengste 8211 nie nodig om reg te skuif via lag. Die aanwyser, die eerste kolom, moet vermenigvuldig met die S038P 500 daaglikse opgawes. Die res van die kolomme is irrelevant en hopelik selfverduidelikend. Let8217s draai die post met die kode wat die aanwyser laai en plotte die grafiese: Kommentaar Hallo Net uit nuuskierigheid hier, die resultate wat jy gepos is vervaardig deur die ondersoek van die daaglikse opbrengs oor 'n gegewe Terugblik tydperk en dan probeer om die volgende dag terugkeer voorspel. Het jy al probeer om uit jou ARMA strategie weeklikse opgawes Hoe die resultate stapels teen die strategie waar daaglikse opbrengs in plaas ook in jou model gevoed, IVD wees interessant om 'n ander getalle te sien soos wenners byvoorbeeld. Is jy tans gebruik van hierdie model om die regte geld Groot post handel en doen hou die goeie werk Hi. Ek haven8217t probeer weeklikse opgawes, waarskynlik die moeite werd om te kyk na dit, hoewel vir weeklikse opgawes I8217d verkies om 'n model met inagneming van ander funksies buiten opbrengste gebruik. Meer geskik vir 'n SVM of 'n neurale netwerk. Ja, ek het al met behulp van die ARMAGARCH strategie om 'n enkele finansiële instrument (nie die SPY) vir meer as 'n jaar nou handel. Dit is die hoofrede waarom ek huiwerig om die kode te deel. Laaste, Ek is op soek na die opdatering van die post met 'n paar meer handel opsommings en statistieke, maar haven8217t dit gedoen tot dusver, want ek couldn8217t vorendag te kom met 'n bevredigende (Ek is kieskeurig) formaat. :) Hi ivannp, is ek baie dankbaar vir jou vir die opstel van so 'n nuttige r kodes en inligting vir kwantitatiewe analise. Ek haven8217t sulke georganiseerde prosedures en kodes vir R vir Quant ontleding nêrens anders gesien. Ek het 'n besoek aan jou blog vir 'n lang tyd. Ek probeer om die kodes hier volg, maar ek is bevrees ek is beslis ontbreek 'n paar stappe hier. armasearch funksie gee my ARMA (5,2) vir 8216SPY8217 maar jy gebruik ARMA (0,2) vir garchfit. Mag ek weet hoekom. As iets is vermis asseblief my lei en kan jy n e-pos vir my die volle kode vir prabinsethgmail. Dankie by voorbaat Hi Prabin, altyd bly om te hoor van mense wat dit geniet om die blog, inspireer my om nie te verwaarloos nie. :) Die kode wat jy verwys na, is net 'n illustrasie hoe om garchFit gebruik. Die (0,2) is heeltemal random 8211 Ek kies net 'n paar nommers. Vir die werklike lewe gebruik, is dit nodig om 'n garchSearch funksie, soortgelyk aan die vertoon armaSearch skep. Dit is soortgelyk, maar daar is verskil: die moontlike modelle bestaan ​​uit vier elemente, die eerste twee is (AR, MA), maar daar is twee GARCH komponente sowel, garchFit vervang armaFit en ook die resultate van garchFit is 'n bietjie meer gedetailleerde ( 'n skikking vs 'n aantal). Die kode is nie ten volle funksioneel soos dit is. Die rede waarom ek don8217t wil die volle kode post is wat ek gebruik dit daagliks. Die resultate van die daaglikse bestuur van dit op die SPY is beskikbaar op die S038P 500 bladsy. Dit het beide die daaglikse posisie gebaseer op ARMAGARCH, sowel as die optrede tafel vir die einde van die dag. That8217s die staat oor ARMAGARCH, maar ek belowe ek won8217t dieselfde vir nuwe dinge (SVMs kom) te doen. Ek sal ten volle funksionele weergawe van die kode te publiseer, maar ek won8217t hou opdatering met die verbeterings. Hi, Baie interessante post. Ek het 'n vraag oor die armaComputeForecasts funksie wat rollende voorspellings produseer. Wanneer hierdie produseer 'n voorspelling nie die datum van die forecaset (dws die indeks in die ooreenstemmende xt ry) ooreenstem met die datum waarop dit geskep of die datum waarop dit voorspel in, dit wil sê sou ek nodig het om die forecase soos gewoonlik lag met 'n aanduiding of is dit reeds versorg Sedert die ARMA strategie prestasie lyk baie tyd-spesifieke (die oorgrote meerderheid van die oortollige opbrengste blyk te wees gegenereer tussen 1965-1975), sou dit baie meer nuttig wees om 'n grafiek van die rol kumulatiewe opbrengste vir elke sien strategie (dit wil sê meer as 3 of 5 jaar). Ook, ARMA opbrengste is vermoedelik bruto van t-koste hier, so omset strategie is nog 'n baie belangrike oorweging (is jy in staat om te deel wat dit was). Hi, my ou blog (theaverageinvestor. wordpress / 2011/07 /), ek het genoem dat daar 'n handel gemiddeld elke 2.35 dae. Ek onthou toe die ambagte en te deel deur die dae. Die aanwyser vir die reeks is hier beskikbaar: www. quintuitive / wp-content / uploads / 2012/08 / gspcInd3.csv. Dit moet vergelyk met die S038P 500 kontant indeks, geen nalopend, maar dan kan 'n mens allerhande statistieke te kry. Ek beslis gaan dit eendag doen, net nie seker wanneer. Met hierdie strategie, ek is nie te bekommerd oor transaksiekoste. Met behulp van 'n gereelde, kleinhandel rekening op Interaktiewe Brokers, kan 'n mens 'n aandeel van SPY handel vir 0,005. Teen die huidige prys van 140, that8217s gering, tensy gedoen 'n paar keer per dag. Hi, Jou boodskap is nie net interessant om te lees nie, maar ook dien as 'n gids tot mense wat nuut in die veld van kwantitatiewe finance. Being 'n beginner in hierdie gebied, lyk jou blog 'n goue mine. I wees, het 'n paar vrae, maar Ek het jou Armasearch kode gebruik op 'n spesifieke instrument en bevind dat met die aanwysers, dit het nie 'n beter prestasie as koop en hou te gee, wel, ek het probeer om in te pas in die garchFit kode behulp GARCH (1,1) as die GARCH foute, kan jy vriendelik my lei sodat ek in staat was om te doen thisRelevant voorbeelde of skakels sou baie nuttig wees sou wees. Ook, het ek nie verstaan ​​uit jou kode, hoe presies die handel uit te voer, dit wil sê, toegang en uitgang punte, kan jy vriendelik my te lei in dieselfde Hi, Jou blog is nie net interessant nie, maar ook insiggewend vir mense wat nuut in die wêreld van kwantitatiewe finance. I het 'n paar vrae, ek het die armasearch funksie gebruik vir 'n sekere instrument en by back testing gevind dat die resultate te minderwaardig wees om te koop en te hou, sodat ek probeer GARCH (1,1) pas, kan jy vriendelik te lei my oor hoe om die dieselfde as Hy doen, kan jy my help met betrekking tot toegang en uitgang punte vir die aanwyser wat gegenereer word deur wat jy hierbo Hi, dit is my beste poging (sonder om die bronkode self) om te verduidelik hoe om garchFit gebruik. Jy kan wil om te probeer eerste ander ARMA benaderings, ek sou die vooruitsig pakket en sy author8217s boek (otexts / FPP /), of die rugarch pakket beveel. Beide hierdie pakkette bied meer wetenskaplike en gevorderde benadering vir ARMA model seleksie. Om die idees op hierdie blog in die praktyk toe te pas vereis 'n aansienlike bedrag van bykomende werk. My enigste raad wat ek in ander poste uiteengesit, is om te dink oor die toepassing in die werklike praktyk by elke stap. Baie dankie vir die groot inleidings jy voorsiening maak vir beginners (soos myself) in kwantitatiewe finansies. In jou werk, jy loop die tyd reeks van dag tot dag, die vind van die beste ARMA model 8211 ARMA (p, q) en gebruik dan die model om die volgende day8217s rigting voorspel. Dan om prestasie te verbeter, gebruik jy die beste ARMA paremeters (p, q) vir daardie tyd met GARCH (1,1) na 'n nuwe model te skep en gebruik dit om volgende day8217s rigting voorspel. So jy het 'n model met 4 parameters gebruik in garchFit. Ek gebruik 'n ander GARCH biblioteek (nie in R, dit is in C) en daarin die parameters vir die model is slegs 2 (in plaas van 4): die getal van die motor-regressief (AR) parameters en die aantal bewegende gemiddelde (MA) parameters. Kan jy asseblief adviseer oor hoe om jou metode te gebruik in my scenario (soos altyd 'n GRACH (1,1) skep sonder inagneming van die ARMA (P, Q) is anders). Dit blyk dat die rede waarom jy het net 2 parameters vir jou model is omdat jy probeer om jou datum 'n ARMA model inpas sonder die heteroskedasticity komponent Die GarchFit metode binne die fGarch biblioteek in R toelaat om in te pas op 'n algemene outoregressiewe model (vandaar die 4 parameters) Quick (verwante) vraag vir jou: kan jy my verwys na die C-biblioteek jy verwys ek, myself, is eerder lief vir C (soos ek het 'n hele argitektuur gebou rondom dit) en wil ek inkorporeer 'n data gepas biblioteek wat dit moontlik maak om 'n beroep vir 'n ARMA model. Jou poste is werklik 'n groot en het 'n baie waardevolle inligting. Ek het probeer om te kyk na die daaglikse aanwyser CSV maar it8217s nie meer up. Sou ek in staat wees om 'n afskrif te inspekteer I8217m tans die toets van die volle ARMA kode en wil weet hoe om die resultate te evalueer korrek voordat hulle op probeer om die GARCH komponent te implementeer. Ek was lief vir die lees van jou blog op hierdie punt. Ek gebruik die funksie alternatiewe auto. arima () in plaas van jou (veel stadiger en duurder) ARMAsearch funksie, maar dat 'n mens het drasties verskillende backtests en uitgevoer erger as Koop-en-hou. Dit didn8217t herhaal jou resultate op grond van jou ARMAsearch, maar dit het wel te vang 'n baie wins rondom die 821708 krisis, baie soos jou ARMAsearch het, maar dit nog steeds doesn8217t regtig vergelyk. Dit was interessant om my. Vir die oomblik is ek lees die auto. arima () bronkode en vergelyk dit met jou ARMAsearch. Dit wil voorkom asof jy het 'n soektog rooster auto. arima () doen 'n plaaslike soek (wat die spoed verduidelik). Mag ek vra wat allerhande hardeware gebruik jy deesdae Het jy enige GPU berekeninge Hallo, bly jy hou van my blog doen. Vir my gebruik, vind ek die Intel CPUs om voldoende prestasie en parallellisatie gee. Die hardeware ek gebruik is quad-core i7 met hyperthreading, wat maak dit 8220almost8221 8-manier. Op so 'n masjien, 'n ARMAGARCH backtest minder as 'n dag neem (indien my geheue korrek is) vir ongeveer 50 jaar van data. Dit doen al die werk vir die voorspelling op-beslissings vir 'n spesifieke dag (dit wil sê die werk wat nodig is om voor te berei vir 'n handel dag) in oor 'n paar uur. Inderdaad jy is reg, die auto. arima funksie gebruik 'n ander algoritme, wat doesn8217t analiseer alle uitkomste. Uit my ervaring it8217s nie maklik om 100 resultate tussen pakkette herhaal. Veral wanneer 'n mens behels die verspreiding van die residue. Ek het opgemerk dieselfde as, op 'n sekere punt, kortliks probeer ek die rugarch pakket. Hi Ivan, ek is 'n newbie om wiskundige finansies. Ek was net te bespreek met my professor oor die gebruik van ARMA model in real handel verlede week. Ek het jou besonderhede model baie interessant. So ek probeer om dit lyn te bestudeer met die meetsnoer uitgedeel. Ek het probeer om uit te druk die standaard errror saam met die voorspelling en bevind dat die grootte van die standaard fout veel groter as die voorspelling. Ek het gedink as dit veel risiko op individuele besluit sou plaas, die beperking van die model te funksioneer op 'n groot aantal besluite net, en miskien nie so by die gebruik van die strategie vir 'n kort tydperk van die tyd. Hoop kan jou idee te kry. Dankie. That8217s 'n probleem en dit is in ander kommentaar reeds. As een doesn8217t wil sulke metode gebruik as gevolg van 'n gebrek aan statistiese meriete 8211 laat dit so wees. 'N Alternatiewe benadering sou wees om 'n stelsel wat 'n metode terwyl 8220it works8221 gebruik te ontwikkel. Hey ivannp, Groot blog, dankie. Ek het al met behulp van jou kode vir 'n paar research8230 sou jy bereid is om die bronkode te plaas vir die skep van die aanwyser matriks dank. mclapply neem modelle, 'n lys van al die modelle (en elke model is ook 'n lys, dus, ons het 'n lys van lyste) ons wil bereken as die eerste argument, dan noem dit garchAutoTryFit vir elke individuele model van hierdie lys, verby die model as it8217s eerste argument. Die volgende lyn voeg 'n nuwe model van die lys in garchAuto: modelslength (modelle) 1 lys (orderc (P, Q, R, S), distdist) Elke model is ook 'n lys, wat die orde (via orde) en die verspreiding (via dist). Nou voel ek it8217s 'n bietjie van 'n lelike manier om dinge te doen, maar dit raak die werk wat gedoen is. :) Ok8230 wat sin maak vir my, maar wat is eintlik die bou van die LL garchAutoTryFit en garchAuto is sodat jy die parameters te optimaliseer vir die voorspelling jy maak met garchfit8230 Ek weet dat die 8220data8221 of 8220xx8221 in die kode is die terugkeer reeks, maar ek don8217t sien hoe om die funksies uit te voer sonder 'n aanvanklike ll. Dankie ll word gebou binne garchAuto, met behulp van min. order, max. order en 'n paar ander parameters om die roetine wat deur die gebruiker.


No comments:

Post a Comment