Thursday, September 29, 2016

Trading Strategie Quantmod

Dit is die derde pos in die back testing in Excel en R-reeks en dit sal wys hoe om 'n eenvoudige strategie in R. Dit volg die 4 stappe Damian uiteengesit in sy pos oor hoe om 'n eenvoudige strategie in Excel backtest backtest. Stap 1: Kry die data Die funksie getSymbols in quantmod maak hierdie stap maklik as jy daaglikse data kan gebruik van Yahoo Finansies. Daar is ook metodes (nie in die streng sin) om data uit ander bronne trek (FRED, Google, site OANDA, R red lêers, databasisse, ens). Jy kan dit ook gebruik as 'n sjabloon om 'n persoonlike funksie te skryf vir 'n spesifieke verskaffer wat jy gebruik. hardloop die opdrag hieronder as quantmod isnt reeds geïnstalleer gebruik die quantmod pakket (vragte TTR, xt, en dieretuin) trek SPX data van Yahoo (getSymbols terug 'n xt voorwerp) Stap 2: Maak jou wyser Die TTR pakket bevat 'n menigte van aanwysers. Die aanwysers is geskryf om te maak dit maklik om hulle te kombineer in kreatiewe en onkonvensionele maniere. Begin met hersiening 106 op R-Forge, TTR het 'n DVI aanwyser. bereken DVI aanwyser DVI - DVI (Cl (GSPC)) Cl () uittreksels van die beslote prys kolom Stap 3: Stel jou handel reël Aangesien hierdie handel reël is eenvoudig - ons weer 'n lang 100 indien die DVI is onder 0.5 en kort 100 anders - dit kan geskryf word in 'n enkele lyn. Meer ingewikkelde reëls en / of posisie sizings kan net so goed gedoen, maar vereis meer kode (RSI (2) met Posisie Sizing is 'n voorbeeld van meer komplekse posisie sizing reëls). Let ook op dat die sein vektor is uitgestel, wat uitkyk voor vooroordeel vermy. skep sein: (lang (kort) as DVI is onder (bo) 0.5) Lag so gister se sein is van toepassing op vandag se opbrengste SIG 0.5, 1, -1)) Stap 4: Die handel reëls / aandele kurwe Soos in Damian se byvoorbeeld, die kode hieronder is 'n vereenvoudigde benadering wat wrywinglose en nie rekening vir glip. Die onderstaande kode neem vandag se persentasie opbrengs en vermeerder dit deur gister se sein / posisie grootte (altyd / - 100 in hierdie voorbeeld). Ek subset ook die stelsel terug na die resultate in die lêer Excel te pas. bereken-sein gebaseer opbrengste ret - ROC (Cl (GSPC)) SIG subset terug na data te pas in Excel lêer ret - ret 2009/06/02 / 2010/09/07 Stap 5: Evalueer strategie prestasie Damian melding gemaak van die belangrikheid van die evaluering van jou strategie. Gelukkig vir R gebruikers, die PerformanceAnalytics pakket maak dit maklik. Met 'n paar reëls van die kode kan ons die onttrekkings, negatiewe risiko's, en 'n opsomming prestasie te sien. gebruik die PerformanceAnalytics pakket te skep tabel wat drawdown statistieke skep tafel van daalrisiko skat grafiek aandele kurwe, daaglikse prestasie, en onttrekkings Dit is al wat daar is om back testing 'n eenvoudige strategie in R. Dit wasn t wat intimiderend, is dit asseblief terugvoer gee as jy Re beweging van jou back testing van Excel om R en daar is iets wat jy weer hang op of jy het 'n awesome punt wat jy wil deel. Hier is 'n bondige weergawe van die kode in die bogenoemde pos as jy wil in staat wees om te kopieer / plak dit alles in een blok: Laat my begin deur te sê dat ek gaaf genoeg om my te help om te leer hoe om R te gebruik vir die toets s nie. Met alles wat in gedagte, het ek gedink ek d loop deur wat ek kyk na die vier basiese stappe in die vervaardiging van 'n backtest in Excel. Let daarop dat die kern Excel-lêer wasn t geskep deur my - dit is geskep deur Jared oor te CondorOptions (nog moet lees as jy hom nie weer volgende). Stap 1: Kry die data Die eerste stap is om jou mark data te kry in Excel. Daar is twee basiese benaderings tot hierdie sal moet her-aflaai wat historiese data en dan kopieer en plak óf die hele datastel of 'n subset van jou strategie op te dateer. Die tweede benadering is om kode te gebruik om gryp data outomaties gaan van Yahoo Finansies. Baie van die mense het VBA geskryf vir net dit te doen d beveel AnalyzerXL aangesien dit die mees buigsaamheid en opsies. Hoe jy slaan die data in Excel is aan jou sal wil hê hulle moet op 'n aparte werkblad te blaai verminder en maak dit maklik om te werk. Stap 2: Maak jou aanwyser Noudat ons elkeen deel te neem van die berekening. Een nice ding oor die werk met Excel is dat dit regtig laat jou dink oor hoe 'n aanduiding is gebou. Dit kan heeltemal te eenvoudig, deesdae, om te gooi af en aanwyser sonder om te verstaan ​​hoe dit eintlik werk wees. Die finale aanwyser kolom, DVI, is 'n geweegde som van die DVI grootte en DVI rek kolomme. I D ook daarop dat AnalyzerXL bevat ook 'n groot aantal aanwysers gedefinieerde maak back testing makliker, en daar is ook ander Byvoegings vir Excel wat soortgelyke funksies bied. Stap 3: Stel jou handel reël Nou dat jy 'n aanduiding is, moet jy jou handel reëls op te rig. In hierdie voorbeeld (berekening is in die re nie lank of kort, of veranderlike posisie sizing in teenstelling met net all-in 'n lang of kort Stap 4:. Die handel reëls / aandele kurwe Daar is baie verskillende benaderings hier, maar wat jy kan sien in hierdie voorbeeld is 'n eenvoudige manier om dit te doen. Aanvaar 'n aanvang kontantwaarde van 10,000 en dan inkrementeer of decrement wat deur of ons 'n lang of kort op die einde van die vorige dag, en of ons reg of nie is nie. in funksie vorm, verteenwoordig ons deur te sê: As 'n lang, dan verskeie vooraf dag weer met behulp van kontant hier, maar jy kan maklik doen rou persentasies in die plek van 'n kontantwaarde Wat hulle aanvaar daar is geen koste / kommissie vir die handel in.. hoë frekwensie swing stelsels soos hierdie een, kan die kommissie 'n groot impak op die lewensvatbaarheid van 'n gegewe strategie het. Tweedens, ons nie weer, AnalyzerXL bied 'n groot aantal van verslagdoening opsies word as deel van die pakket. SA basiese oorsig van back testing in Excel - hoop dat julle almal dit nuttig vind ARIMA GARCH Trading Strategie op die S P500 Stock Market Index Gebruik R Deur Michael Saal-Moore op 7 Oktober 2015 in hierdie artikel wil ek om jou te wys hoe om al die kennis wat in pas die vorige tydreeksanalise poste 'n handel strategie op die S P500 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 S P500. Ek het k 500 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 ARIMA GARCH aanwyser. Ek ve 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 neem jy dit uit te voer 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 van toepassing is op die S P500. 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 S P500 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 S P500 opbrengste en die kies van die waardes tussen 1 d en kd, waar k 500 vir hierdie strategie: ons gebruik dieselfde prosedure as in die ARIMA artikel te soek deur al ARMA modelle met p in en Q in, met die uitsondering van p, q 0. Ons draai die arimaFit oproep in 'n R tryCatch hantering van uitsonderings blok om te verseker dat as ons nie t 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 d 0 (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 ARMA GARCH met behulp van die ugarchfit opdrag, wat die spesifikasie voorwerp, die k opbrengste van die S P500 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 nie konvergeer dan ons uitset die datum en môre s 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 môre se 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 don t wil om te aanvaar dat jy 'n spesiale biblioteke (soos pandas) vyf geïnstalleer, vyf ek dit gehou om 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 voorspellings new. csv. Aangesien dit neem 'n aansienlike bedrag van die tyd te bereken, vyf Ek voorsien die volle lêer hier vir jou om jouself af te laai: Noudat ons ons aanwyser CSV ons nodig het om sy prestasie te vergelyk om vas te hou Koop gegenereer Strategie Resultate. Ons eerste lees in die aanwyser van die CSV en stoor dit as spArimaGarch: Ons skep dan 'n kruising van die datums vir die ARIMA GARCH voorspellings en die oorspronklike stel opgawes van die S P500. Ons kan dan bereken die opbrengste vir die ARIMA GARCH strategie deur te vermenigvuldig die vooruitsig teken (of -) met die terugkeer homself: Sodra ons die opbrengs van die ARIMA GARCH strategie wat ons kan aandele kurwes vir beide die ARIMA GARCH model en koop 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 ARIMA GARCH strategie aansienlik beter gevaar as Koop hou nie. 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, laat se kyk na die feit dat die ARMA model net is gepubliseer in 1951. Dit wasn t regtig wyd aangewend tot die 1970 s toe Box Jenkins bespreek dit in hul boek. In die tweede plek, die boog model wasn t 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 S P500 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 Hou strategie vir byna 3 jaar, maar tydens die ineenstorting van die aandelemark van 2008/2009 is dit doen 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 ons vyf 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 verder as dié wat ek ve hier aangebied, wat aansienlik sal verhoog ons handel winsgewendheid en / of te verminder die risiko kan verbeter. 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 Artikels


No comments:

Post a Comment