Friday, October 7, 2016

Back Testing Trading Strategieë Gebruik R

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 LT DVI (Cl (GSPC)) Cl () uittreksels van die beslote prys kolom Stap 3: Stel jou handel reël Aangesien hierdie handel reël is eenvoudig - was lank 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 yesterdays sein is van toepassing op vandag se opbrengste SIG LT Lag (ifelse (dvidvi Dit 0,5, 1, -1)) Stap 4: Die handel reëls / aandele kurwe Soos in Damians byvoorbeeld die kode hieronder is 'n vereenvoudigde benadering wat wrywinglose en nie rekening vir glip. Die onderstaande kode neem vandag persentasie opbrengs en vermeerder dit deur yesterdays 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 LT ROC (Cl (GSPC)) SIG subset terug na data in Excel te pas lêer ret LT ret2009-06-02 / 2010/09/07 Stap 5: Evalueer strategie prestasie Damian melding gemaak van die belangrikheid van die evaluering 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 Dis al wat daar is om back testing 'n eenvoudige strategie in R. Dit was nie dat intimiderend, was dit asseblief terugvoer gee as jy beweeg jou back testing van Excel om R en Theres iets julle hang op of jy het 'n awesome punt youd 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: back testing: interpretasie van die verlede back testing is 'n belangrike komponent van doeltreffende handel-stelsel ontwikkeling. Dit word gedoen deur rekonstruksie, met historiese data, ambagte wat sou plaasgevind het in die verlede met behulp van reëls bepaal deur 'n gegewe strategie. Die resultaat bied statistieke wat gebruik kan word om die doeltreffendheid van die strategie te meet. Die gebruik van hierdie data, kan handelaars te optimaliseer en hul strategieë te verbeter, vind 'n tegniese of teoretiese tekortkominge, en vertroue in hul strategie te verkry voordat hulle aansoek doen dit aan die werklike markte. Die onderliggende teorie is dat enige strategie wat goed in die verlede gewerk het, is geneig om goed te werk in die toekoms, en omgekeerd, 'n strategie wat swak presteer in die verlede is geneig om swak presteer in die toekoms. Hierdie artikel neem 'n blik op wat aansoeke word gebruik om backtest, watter soort data is verkry, en hoe om dit om die data en die gereedskap back testing kan baie waardevolle statistiese terugvoer te gee oor 'n gegewe stelsel gebruik. Sommige universele statistieke back testing sluit in: netto wins of verlies - Net persentasie wins of verlies. Tydraamwerk - Past datums waarop toets ing plaasgevind. Heelal - Voorrade wat ingesluit is in die backtest. Wisselvalligheid maatreëls - Maksimum persentasie onderstebo en negatiewe kant. Gemiddeldes - Persentasie gemiddelde wins en gemiddelde verlies, gemiddelde bars gehou. Blootstelling - Persentasie van kapitaal belê (of blootgestel word aan die mark). Verhoudings - Oorwinning-tot-verliese verhouding. Geannualiseerde opbrengs - Persentasie opbrengs oor 'n jaar. Risiko-aangepaste opbrengs - Persentasie opbrengs as 'n funksie van risiko. Tipies, sal back testing sagteware twee skerms wat belangrik is nie. Die eerste kan die handelaar om die instellings aan te pas vir back testing. Hierdie veranderinge sluit alles van tyd tot kommissie koste. Hier is 'n voorbeeld van so 'n skerm in AmiBroker: Die tweede skerm is die werklike back testing resultate verslag. Dit is hier waar jy al die bogenoemde statistieke kan kry. Weereens, hier is 'n voorbeeld van hierdie skerm in AmiBroker: In die algemeen, die meeste handel sagteware bevat soortgelyke elemente. Sommige hoë-end sagteware programme sluit ook bykomende funksies outomatiese posisie sizing, optimalisering en ander meer gevorderde funksies uit te voer. Die 10 Gebooie Daar is baie faktore handelaars aandag gee aan wanneer hulle back testing handel strategieë. Hier is 'n lys van die 10 mees belangrike dinge om te onthou, terwyl back testing: Neem in ag die breë mark tendense in die tyd waarin 'n gegewe strategie is getoets. Byvoorbeeld, as 'n strategie was net backtested vanaf 1999-2000, is dit dalk nie goed vaar in 'n beermark. Dit is dikwels 'n goeie idee om backtest oor 'n lang tyd dat 'n hele paar verskillende tipes marktoestande sluit. Neem in ag die heelal waarin back testing plaasgevind. Byvoorbeeld, as 'n breë mark stelsel is getoets met 'n heelal wat bestaan ​​uit tegnologie-aandele, kan dit nie goed doen in verskillende sektore. As 'n algemene reël, indien 'n strategie is gerig op 'n spesifieke genre van voorraad, beperk die heelal aan dié genre, maar in alle ander gevalle, in stand te hou 'n groot heelal vir toetsdoeleindes. Wisselvalligheid maatreëls is uiters belangrik om te oorweeg in die ontwikkeling van 'n handel stelsel. Dit is veral waar vir aged rekeninge, wat is onderhewig aan marge oproepe as hul aandele daal onder 'n sekere punt. Handelaars moet poog om wisselvalligheid lae om risiko te verminder en in staat stel om makliker oorgang in en uit 'n gegewe voorraad hou. Die gemiddelde aantal bars gehou is ook baie belangrik om te kyk by die ontwikkeling van 'n handel stelsel. Hoewel die meeste back testing sagteware sluit kommissie koste in die finale berekeninge, dit beteken nie dat jy moet hierdie statistiek te ignoreer. As dit moontlik is, die verhoging van jou gemiddelde aantal bars gehou kan kommissie koste te verminder, en die verbetering van jou algemene terugkeer. Blootstelling is 'n tweesnydende swaard. Verhoogde blootstelling kan lei tot hoër winste of hoër verliese, terwyl afgeneem blootstelling beteken laer winste of laer verliese. Maar in die algemeen, is dit 'n goeie idee om blootstelling onder 70 om risiko te verminder en in staat stel om makliker oorgang in en uit 'n gegewe voorraad hou. Die gemiddelde-wins / verlies statistiek, gekombineer met die oorwinnings-tot-verliese verhouding, kan nuttig wees vir die bepaling van optimale posisie sizing en geldbestuur met behulp van tegnieke soos die Kelly Criterion wees. (Sien Geldbestuur Die gebruik van die Kelly Criterion.) Handelaars kan groter posisies te neem en kommissie koste te verminder deur die verhoging van hul gemiddelde winste en die verhoging van hul oorwinnings tot verliese verhouding. Geannualiseerde opbrengs is belangrik omdat dit gebruik word as 'n instrument om 'n benchmark n stelsels terug teen ander belegging plekke. Dit is belangrik om nie net te kyk na die algehele geannualiseerde opbrengs nie, maar ook om in ag te neem die verhoog of verlaag risiko. Dit kan gedoen word deur te kyk na die risiko-aangepaste opbrengs, wat verantwoordelik is vir verskeie risikofaktore. Voordat 'n handel stelsel is aangeneem, moet dit alle ander belegging plekke klop op gelyke of minder risiko. Back testing aanpassing is uiters belangrik. Baie back testing aansoeke insette vir kommissie bedrae, ronde (of fraksionele) baie groottes, merk groottes, vereistes marge, rentekoerse, glip aannames,-posisie sizing reëls, dieselfde-bar uitgang reëls, (sleep) stop instellings en nog baie meer. T o kry die mees akkurate back testing resultate, ek t is belangrik om te stem hierdie instellings aan die makelaar wat gebruik sal word naboots wanneer die stelsel gaan woon. Back testing kan soms lei tot iets wat bekend staan ​​as oor-optimalisering. Dit is 'n toestand waar prestasie resultate so hoog is ingeskakel om die verlede dat hulle nie meer so akkuraat in die toekoms. Dit is oor die algemeen 'n goeie idee om reëls wat van toepassing is op alle aandele, of 'n uitgesoekte versameling van geteikende aandele, en is nie gemaak om die mate waarin die reëls is nie meer verstaanbaar deur die skepper implementeer. Back testing is nie altyd die mees akkurate manier om die doeltreffendheid van 'n gegewe handel stelsel te meet. Soms strategieë wat goed presteer in die verlede versuim om goed te doen in die hede. Vorige prestasie is nie 'n aanduiding van toekomstige resultate. Maak seker dat jy papier handel 'n stelsel wat suksesvol backtested voor live gaan om seker te wees dat die strategie steeds van toepassing in die praktyk is. Gevolgtrekking back testing is een van die belangrikste aspekte van die ontwikkeling van 'n handel stelsel. As geskep en behoorlik geïnterpreteer is, kan dit help om handelaars te optimaliseer en hul strategieë te verbeter, vind 'n tegniese of teoretiese tekortkominge, asook vertroue in hul strategie te verkry voordat hulle aansoek doen dit aan die werklike wêreld markte. Hulpbronne Tradecision (www. tradecision) - High-end Trading System Development AmiBroker (www. amibroker) - Begroting Trading System Development. How 'n strategie in R backtest gaan die back testing vermoëns van R. verken In 'n vorige post ons ontwikkel 'n paar eenvoudige inskrywing geleenthede vir die dollar / CAD behulp van 'n masjien leer algoritme en tegnieke van 'n subset van data-ontginning genoem vereniging reël leer. In hierdie post, ons gaan om te verken hoe om 'n volledige backtest in R doen met behulp van ons reëls van die vorige post en implementering neem wins en stop verliese. Kom ons spring sommer weg: Let wel: die backtest gebou van die 4-uur bars in ons datastel en nie die geval 'n meer gedetailleerde siening. Die CAGR (saamgestelde jaarlikse groeikoers) is die persentasie wins / verlies jaargrondslag, wat beteken dat dit glad uit die groei in gelyke paaiemente elke jaar. Sedert ons toets was oor Kom ons kyk of ons die prestasie kan verbeter deur die byvoeging van 'n stop verlies en neem wins te maak. Met net 'n stop verlies, prestasie afgegaan. Dit lyk soos wat ons kry uit ons ambagte voordat hulle in staat is om te herstel. Ten einde te sluit in ons winste, laat gaan voort en te implementeer 'n Neem Wins. Sluit in ons winste met 'n Neem Wins effens verbeter die prestasie, maar nie drasties. Kom ons neem beide 'n stop verlies en 'n Neem Wins. Nou kan vergelyk die basislyn Lang Kort strategie, met net 'n stop verlies, net 'n Neem Wins, en beide 'n take stop verlies en neem wins te maak. Nou weet jy hoe om 'n Neem Wins voeg en stop verlies, Ek beveel aan jy om te speel met die data en toets verskillende waardes op grond van jou eie persoonlike risiko parameters en die gebruik van jou eie reëls. Selfs met 'n kragtige algoritmes en gesofistikeerde gereedskap, is dit moeilik om 'n suksesvolle strategie te bou. Vir elke goeie idee, ons is geneig om baie meer slegte mense nie. Gewapen met die regte gereedskap en kennis, kan jy effektief jou idees te toets totdat jy die goeies. Ons het hierdie proses in TRAIDE vaartbelyn. Weve ontwikkel 'n toets infrastruktuur wat jou toelaat om te sien waar die patrone is in jou data is en in real-time te sien hoe hulle oor jou historiese data sal presteer. Wel die vrystelling TRAIDE vir 7 groot pare in die FX mark met tegniese aanwysers in twee weke. As jy belangstel in die toets van die sagteware en die verskaffing van terugvoer, stuur 'n e-pos aan infoinovancetech. Ons het 50 plekke available. Backtesting n Eenvoudige Stock Trading Strategie Nota: Hierdie pos is NIE finansiële advies Dit is net 'n prettige manier om 'n paar van die vermoëns R het vir die invoer en manipuleer data te verken. Ek lees onlangs 'n pos op ETF profeet wat 'n interessante-beurs strategie in Excel verken. Die strategie is eenvoudig: Vind die hoogtepunt van die voorraad in die afgelope 200 dae, en tel die aantal dae wat sedert daardie hoë verloop. As sy meer is minder as 100 dae, die eienaar van die voorraad. As it8217s meer as 100 dae was, don8217t besit dit. Hierdie strategie is baie eenvoudig, maar dit lewer 'n indrukwekkende resultate. (Let egter daarop dat hierdie voorbeeld gebruik data wat nie aangepas uit split of dividende en ander foute kan bevat. Verder we8217re ignoreer handel koste en uitvoering vertragings, wat albei raak strategie prestasie.) Die implementering van hierdie strategie in R is eenvoudig, en bied talle voordele bo Excel, die primêre waarvan is dat trek data aandelemark in R is maklik, en ons kan hierdie strategie te toets op 'n wye verskeidenheid van indekse met relatief min moeite. In die eerste plek, ons laai data vir GSPC behulp quantmod. (GSPC staan ​​vir die SampP 500 indeks). Volgende, ons bou 'n funksie van die aantal dae bereken vanaf die N-dag hoog in 'n tydreeks, en 'n funksie aan ons handel strategie te implementeer. Laasgenoemde funksie neem 2 parameters: die N-dag hoog jy wil gebruik, en die aantal dae verby dat 'n hoë julle die voorraad sal hou. Die voorbeeld is 200 en 100, maar jy kan dit maklik verander om die 500-dag hoog en kyk wat gebeur as jy die voorraad 300 dae verby wat voor die redding van hou. Aangesien hierdie funksie geparameteriseer, kan ons maklik toets baie ander weergawes van ons strategie. Ons pad die begin van ons strategie met nulle so dit sal net so lank soos ons insette data wees. (As jy wil vir 'n meer gedetailleerde verduidlikings van die daysSinceHigh funksie, sien die bespreking oor kruis-bekragtig). Ons vermenigvuldig ons posisie (0,1) vektor deur die opbrengs van die indeks vir ons strategy8217s opbrengste te kry. Nou bou ons 'n funksie om 'n paar statistieke terug oor 'n handel strategie, en vergelyk ons ​​strategie om die maatstaf. Ietwat arbitrêr, I8217ve besluit om te kyk na kumulatiewe opbrengs, gemiddelde jaarlikse opbrengs, Sharpe verhouding, wen, gemiddelde jaarlikse wisselvalligheid, Max drawdown en maksimum lengte drawdown. Ander statistieke sou maklik wees om te implementeer. Soos jy kan sien, hierdie strategie vergelyk gunstig met die verstek 8220buy-en-hold8221 benadering. Ten slotte, ons toets ons strategie op 3 ander indekse: FTSE wat Ierland en die Verenigde Koninkryk, die Dow Jones Nywerheidsindeks verteenwoordig. wat gaan terug na 1896, en die N225. wat verteenwoordig Japan. I8217ve functionalized die hele proses, sodat jy elke nuwe strategie kan toets met 1 reël van die kode: Nooit mis 'n update Skryf R-bloggers om e-posse te ontvang met die nuutste R poste. (Jy sal hierdie boodskap nie weer sien nie.) Strategie back testing Strategie back testing is 'n noodsaaklike instrument om te sien of jou strategie werk of nie. Back testing sagteware simuleer jou strategie op historiese data en bied 'n back testing verslag, wat jou toelaat om behoorlike handel stelsel analise uit te voer. Die 64-bis weergawe kan jy soveel data te laai as wat jy nodig het vir selfs die mees veeleisende back testing. Vir tegniese inligting oor hierdie funksie blik op die verwante Wiki bladsy. Akkuraatheid is die sleutel MultiCharts is 'n oplossing wat spesifiek vir strategie-ontwikkeling en back testing. Ons filosofie is dat die strategie back testing so realisties moet wees as die moderne tegnologie maak dit moontlik - dis hoekom gebruik ons ​​multi-threading en 64-bit-tegnologie. Minimale aannames te skep meer realistiese toets Selfs al geen benadering 100 perfekte kan wees, het ons alles gedoen om akkuraat te herskep verlede marktoestande en orde uitvoering vir strategie handel. Tipiese back testing enjins het 'n baie aannames en kortpaaie, wat lei tot onrealistiese toetsing en onbetroubare resultate. MultiCharts is 'n institusionele-vlak verhandelingsplatform wat aannames verminder en is van mening baie faktore. Moderne tegnologie vir 'n kragtige rekenaars Strategie back testing moet dikwels 'n baie data en sagteware wat in staat is van die verwerking van dit. Byna al die rekenaars nou funksie multi-core setups met baie van die geheue, sodat jy nodig het om voordeel te trek uit dit. Multi-threading beteken dat MultiCharts versprei baie take in verskillende cores, sodat hulle baie vinniger af te handel. 64-bis weergawe van MultiCharts kan jy soveel data te laai as pas in jou geheue vir analise - selfs jare en jare van bosluis data vir 'n gedetailleerde prysbewegings. Maak 'n regmerkie-vir-blok simulasie Ons noem hierdie funksie die Bar vergrootglas. Dit is noodsaaklik vir die verhoging van presisie tydens back testing. MultiCharts kan groter bars bou uit kleiner bars componentssecond en minuut uit bosluise, uur en dag bars uit minute. Jy kan presies prysbewegings in elke bar te herskep deur die gebruik van die Bar vergrootglas, wat groter bars sal bou uit kleiner komponente. Byvoorbeeld, een-uur bars het vier visuele pointsopen, hoog, laag, en naby. Die Bar vergrootglas kan onsigbaar laai minute wat die uur, en strategie sal backtested wees op 'n minuut-vir-minuut basis. Vra, uitnooi en handel pryse back testing in ag neem dat die werklike aankoop gebeur teen pryse, ware verkoop vra bod pryse. Dit maak ons ​​back testing simulasie so realisties as moontlik te maak.


No comments:

Post a Comment