Saturday 19 August 2017

Trading Strategy Generation Using Genetic Algorithms


Hoe om Machine Learning in jou Trading masjienleer bied baie unieke en dwingende voordele vir handelaars op soek na 'n voorsprong in die mark. Net in die afgelope jaar het ons 'n groot hoeveelheid van die hulpbronne blyk uit die wêreld se top verskansingsfondse, soos Bridgewater Associates, toegewy aan die verkenning van hierdie tegnieke. Terwyl die gebruik van masjienleer of kunsmatige intelligensie lyk ongelooflik ingewikkeld en moeilik om te implementeer, is daar steeds maniere om hul vermoëns te benut sonder dat daar 'n PhD in wiskunde of wetenskap. In hierdie post, sal ons gaan deur 3 verskillende maniere waarop jy tegnieke kan gebruik van masjienleer om jou eie handel te verbeter. Aanwyser Seleksie Een van die belangrikste besluite is besluit word watter aanwysers te gebruik om handel te dryf. Of jy nou 'n tegniese of fundamentele handelaar, of jy net gebruik prys aksie handel te dryf, is jou sukses gaan grootliks afhanklik van die aanwysers wat jy gebruik om te wees en hoe jy dit interpreteer. Gelukkig is daar baie verskillende metodes vir die kies van jou aanwysers en dit staan ​​bekend as funksie seleksie in die masjien leer wêreld. Met behulp van 'n besluit boom Kies Jou Indicators Besluit bome is baie veelsydig algoritmes wat die voordeel dat dit maklik interpreteerbare het. Gegewe 'n groot datastel van aanwysers en die prys beweging van die bate, sal 'n besluit boom die aanwysers, en aanwyser waardes, wat die beste verdeel die data tussen prysstygings en prysverlagings vind. Aanwysers nader aan die bokant van die boom word beskou as 'n beter voorspellers as dié nader aan die onderkant van die boom gegee, en ná 'n bepaalde vertakking sal jou toelaat om maklik te vind interafhanklikhede en verhoudings tussen die aanwysers. Die besluit boom sal ook vir jou 'n stel reëls wat jy kan gebruik om handel te dryf op grond van dié aanwysers, maar jy moet seker wees om die boom en toets behoorlik snoei vir overfitting. Die besluit boom is 'n kragtige, visuele hulpmiddel wat kan help om te besluit watter kombinasies van aanwysers om handel te dryf en teen watter waardes hulle handel. Jy kan 'n handleiding oor hoe om 'n strategie met 'n besluit boom hier of vir 'n meer algemene riglyn te bou, in R hier is 'n goeie bron vind. Optimalisering Sodra jy die basis vir jou strategie, die volgende stap is optimalisering, of die keuse van die korrekte parameterwaardes om jou kans op sukses te maksimeer. Baie strategieë het 'n wye verskeidenheid van parameters, soos aanwyser instellings, die toegang en uitgang toestande, stop verlies en neem winsvlakke, en die posisie sizing, wat brute krag metodes probeer elke enkele kombinasie uiters moeilik en tydrowend maak, indien enigsins selfs moontlik. Die oplossing van hierdie soort probleme is nog 'n gebied waar masjienleer blink. Optimalisering van 'n strategie met behulp van genetiese algoritmes Genetiese algoritmes naboots die proses van natuurlike seleksie deur die skep van 'n unieke stel kind strategieë wat 'n mengsel van die beste ouer strategieë bevat, met 'n kans van ewekansige mutasie. Die proses begin deur kodering jou strategie in 'n skikking. Byvoorbeeld dit kan gelees word as iets soos: aanwyser 1 tydperk wat jy wil dan genereer 'n groot bevolking van strategieë met 'n arbitrêre variasies van hierdie parameters. Hierdie strategieë het almal verskillende kombinasies van bewegende gemiddelde periodes, toegang en uitgang toestande, en risiko-tot-beloning verhoudings. Volgende, sal jy hierdie bevolking te toets deur die loop elke strategie oor 'n toets stel en kies die top strategieë gebaseer op 'n prestasie metrieke van jou keuse. Ten slotte, jy lukraak kombineer die eienskappe van die top strategieë, met 'n klein kans mute sommige van die parameters, om 'n nuwe generasie van kind strategieë te skep. Jy dan herhaal die evaluering prosedure en weereens paar die top-presterende strategieë van hierdie nuwe generasie. Dit lei tot 'n oorlewing van sterkste scenario waar slegs die top strategieë te oorleef om hierdie proses 'n groot aantal van die tye of totdat 'n sekere prestasiekriteria bereik slaag langs hul gene na die volgende generasie Herhaal en jy sit met 'n baie sterk strategie gebou uit geslagte van die bes presterende strategieë jy doen om seker te maak dat jy 'n toepaslike prestasie metrieke kies (soos risiko-aangepaste opbrengs) en altyd die finale strategie oor data wat wasn t gebruik word om die strategie te bou om te verseker dat jy sondaars t overfitting toets om 'n bepaalde datastel. Dit is 'n baie kragtige en robuuste metode wat suksesvol was in 'n wye verskeidenheid van programme, insluitend die wêreld van die saak. Jy kan vind 'n meer gedetailleerde beskrywing hier en 'n handleiding oor hoe om dit te implementeer in R hier. Live Trading Een van die meer aantreklike aspekte van die masjien leer om 'n algoritme wat in staat is om te leer en aan te pas by veranderende marktoestande. Maar dit skep 'n blackbox strategie wat, as jy nie heeltemal verstaan ​​hoe die algoritmes werk en dit self deeglik getoets, is baie moeilik om te vertrou op 'n lewendige rekening. Sonder om te weet wanneer of waarom 'n strategie betree 'n handelsmerk kan 'n scary proposisie wees. Daar is egter maniere om die voordele van 'n intelligente, algoritmiese benadering te kry terwyl hy nog deursigtigheid en begrip in jou strategie handhawing. Vereniging Reël Leer Vereniging Reël Leer is die proses van afleiding van 'n stel van duidelike, verstaanbare reëls van die patrone ontbloot deur 'n masjien leer algoritme. Algoritmes, soos die apriori algoritme, soek 'n datastel van aanwysers, aanwyser waardes, en die gevolglike prys beweging om 'n stel van voorwaardes basies produseer if-then state, wat lei tot die beste resultate resultate. Maar dit moeilik is steeds om te weet presies waar hierdie reëls vandaan kom, die apriori algoritme vereis 'n redelike groot aantal parameters word ingeskakel en hierdie proses homself nie goed leen by veranderende marktoestande. Met TRAIDE. Ons het die proses 'n stap verder en laat jou toe om die patrone gevind deur 'n ensemble van masjien leer algoritmes, waaruit jy jou eie handel reëls kan maak sien. Hierdie reëls is dan maklik om te implementeer en aangepas na verandering marktoestande, al sonder dat enige ontwikkeling of wiskundige ervaring. Jy is in staat om die voordele van die gebruik-masjien leer algoritmes om handel te dryf terwyl hy nog volledige deursigtigheid handhawing, 'n begrip van jou strategie, en met jou eie domein kundigheid in jou handel te kry. Die gebruik van masjienleer en kunsmatige intelligensie om 'n voorsprong in die mark te vind hoef nie uitsluitlik die eiendom van net die grootste finansiële instellings. Aangesien hierdie tegnologie word meer toeganklik en hierdie tegnieke meer algemeen, kan jy ook masjienleer gebruik om jou handel te verbeter. SnowCron SnowCron genetiese algoritme in forex stelsels met behulp van genetiese algoritme om winsgewend forex strategie te skep. Genetiese algoritme in Cortex Neurale Netwerke sagteware waards Backpropagation Neurale netwerk Aansoek om genetiese berekeninge gebaseer forex. Hierdie voorbeeld gebruik konsepte en idees van die vorige artikel, so lees asseblief Neurale netwerk genetiese algoritme in forex stelsels eerste, maar dit is nie verpligtend nie. Oor hierdie teks In die eerste plek, lees asseblief die disclaimer. Dit is 'n voorbeeld van die gebruik van Cortex Neurale Netwerke sagteware genetiese algoritme funksionaliteit, nie 'n voorbeeld van hoe om winsgewend handel te doen. Ek is nie jou guru nie, moet ek verantwoordelik wees vir jou verliese. Cortex Neurale Netwerke sagteware het neurale netwerke in dit, en FFBP ons voor bespreek is net een manier om die keuse van 'n forex strategieë. Dit is 'n goeie tegniek, kragtige en wanneer dit behoorlik toegepas word, baie promicing. Maar dit het 'n probleem - om te leer aktief op neurale netwerk. ons nodig het om die verlangde uitset te leer ken. Dit is nogal maklik om te doen wanneer ons dit doen funksie benadering, ons neem net die werklike waarde van 'n funksie, want ons weet wat dit behoort te wees. Wanneer ons dit doen neurale netwerk vooruitskatting. Ons gebruik die tegniek (in vorige artikels beskryf) van die onderrig van die neurale netwerk op die geskiedenis, weer, as ons voorspel, sê, 'n wisselkoers, weet ons (tydens die opleiding) wat die korrekte voorspelling is. Maar wanneer ons bou 'n handel stelsel, ons het geen idee wat die korrekte handel besluit is, selfs al weet ons die wisselkoers As die saak van die feit, ons het baie forex strategieë wat ons kan gebruik op enige punt van die tyd, en ons nodig het om uit te vind 'n goeie een - hoe wat moet ons oppas as die verlangde uitset van ons Neurale Net as jy ons vorige artikel, jy weet, dat ons bedrieg om te gaan met hierdie probleem gevolg. Ons docent die neurale netwerk te wisselkoers (of wisselkoers gebaseer aanwyser) voorspelling te doen, en dan gebruik hierdie voorspelling te handel nie. Dan, buite die neurale netwerk deel van die program, het ons 'n besluit oor watter neurale netwerk is die beste een. Genetiese algoritmes kan gaan met hierdie probleem direk, hulle kan die probleem wat as die beste handel seine op te los. In hierdie artikel gaan ons Cortex Neurale Netwerke Sagteware gebruik om so 'n program te skep. Die gebruik van genetiese algoritme Genetiese algoritmes baie goed ontwikkel, en baie uiteenlopend. As jy wil om te leer alles oor hulle, ek stel voor jy Wikipedia gebruik, soos hierdie artikel is slegs oor wat Cortex Neurale Netwerke sagteware kan doen. Met Cortex Neurale Netwerke sagteware. Ons kan 'n neurale netwerk wat 'n paar insette, sê, waardes van 'n aanwyser neem, en produseer skep 'n uitset, sê, handel seine (koop, verkoop, te hou.) en stop verlies / neem winsvlakke vir posisies te oopgemaak word. Natuurlik, as ons hierdie neurale netwerk se gewigte saad na willekeur, handelsresultate sal verskriklik wees. Maar laat ons sê ons 'n dosyn van sodanige nns geskep. Dan kan ons toets prestasie van elkeen van hulle, en kies die beste een, die wenner. Dit was die eerste generasie van nns. Om voort te gaan om die tweede generasie, moet ons toelaat dat ons wenner om voort te plant, maar om te vermy om identiese kopieë, laat se voeg 'n paar random geraas te s descentants gewigte. In die tweede generasie, ons het ons eerste-generasie wenner en dit is onvolmaak (gemuteerde) afskrifte. Laat s toets weer doen. Ons sal 'n ander wenner, wat is beter as enige ander Neurale netwerk in die generasie het. En so aan. Ons laat net wenners te teel, en elimineer verloorders, net soos in die werklike lewe evolusie, en ons sal ons bes-handel Neurale netwerk te kry. sonder enige vooraf knowlege oor wat die handel stelsel (genetiese algoritme) moet wees nie. Neurale netwerk genetiese algoritme: Voorbeeld 0 Dit is die eerste genetiese algoritme voorbeeld. en 'n baie eenvoudige een. Ons gaan loop deur dit stap vir stap, om al truuks wat volgende voorbeelde sal gebruik leer. Die kode het inline kommentaar, so laat ons net fokus op die belangrikste oomblikke. In die eerste plek het ons 'n neurale netwerk geskep. Dit is die gebruik van ewekansige gewigte, en is nog nie docent. Dan, in siklus, ons maak 14 kopieë daarvan, met behulp van mutasie NN fumction. Hierdie funksie maak 'n afskrif van 'n bron Neurale netwerk. toevoeging van ewekansige waardes van 0 tot (in ons geval) 0.1 aan al gewigte. Ons hou handvatsels om gevolglike 15 nns in 'n skikking, kan ons dit doen, as handvatsel is net 'n heelgetal. Die rede waarom ons gebruik 15 nns het niks te doen met beurs: Cortex Neurale Netwerke sagteware kan plot tot 15 lyne op 'n grafiek gelyktydig. Ons kan verskillende benaderings tot die toetsing gebruik. In die eerste plek kan ons die leer stel te gebruik, al is dit in 'n keer. In die tweede plek kan ons toets op, sê, 12000 resords (uit 100000), en loop deur die leer stel, van die begin tot die einde. Dit sal learnigs verskillende maak, soos ons sal sien vir neurale netwerk is van wat nuttig is op enige gegewe deel van data, nie net op die hele stel. Die tweede benadering kan ons gee probleme, indien data verander, van die begin tot die einde. Dan sal die netwerk te ontwikkel, die verkryging van vermoë om handel te dryf op die einde van datastel, en die verlies van die vermoë om handel te dryf op die begin. Om die probleem op te los, gaan ons ewekansige 12000 rekords fragmente uit data, en voer dit na die neurale netwerk. is bloot 'n eindelose siklus, soos 100,000 siklusse nooit bereik sal word by ons spoed. Onder 'n kind by te voeg ons vir elke netwerk, met effens verskillende gewigte. Kennis dat 0,1 vir mutasie Tange is nie die enigste keuse, as die saak van die feit, selfs hierdie parameter kan geoptimaliseer word met behulp van genetiese algoritme. Nuutgeskepte nns bygevoeg na 15 bestaande. Op hierdie manier het ons 30 nns in 'n skikking, 15 oud en 15 nuwe. Dan gaan ons na die volgende siklus van die toets te doen, en om verloorders doodmaak, van beide geslagte. Om die toets te doen, pas ons neurale netwerk om ons data, om uitsette te produseer, en dan bel toets funksie, dat hierdie uitsette gebruik om handel te boots. Resultate van die saak word gebruik om deside, wat nns is die beste. Ons gebruik 'n tussenpose van nKom rekords van nbegin om nbegin nKom, waar nbegin is 'n arbitrêre punt binne leer stel. Die kode hieronder is 'n truuk. Die rede waarom ons dit gebruik is om die feit te illustreer, wat genetiese algoritme genetiese algoritme kan skep. maar dit sal nie noodwendig die beste een wees, en ook, voor te stel, dat ons gevolg kan verbeter, as ons 'n paar beperkings impliseer om die leerproses. Dit is moontlik dat ons handel stelsel werk baie goed op die lang ambagte, en baie swak op kort, of andersom. As, sê, 'n lang ambagte is baie goed, kan dit genetiese algoritme wen, selfs met 'n groot verliese op kort ambagte. Om dit te vermy, ons wys meer gewig aan lang ambagte in vreemde en kort ambagte in selfs siklusse. Dit is net 'n voorbeeld, daar is geen waarborg dat dit iets sal verbeter. Meer daaroor hieronder, in gesprek oor regstellings. Tegnies, jy don t het om dit te doen, of kan dit anders maak. wins Voeg 'n gesorteerde skikking. Dit gee 'n inplanting posisie, dan gebruik ons ​​hierdie posisie te voeg Neurale netwerk hanteer, leer en toets winste na nie-gesorteer skikkings. Nou het ons data vir die huidige neurale netwerk op dieselfde verskeidenheid indeks as sy wins. Die idee is om verskeidenheid van nns, gesorteer volgens winsgewendheid te kom. Soos skikking is SORTES deur wins, te verwyder 1/2 van netwerke, wat minder winsgewend, ons moet net nns verwyder 0-14 Trading besluite is gebaseer op waarde van neurale netwerk sein, uit hierdie oogpunt die program is identies aan voorbeelde uit vorige artikel. Forex strategie: Bespreek voorbeeld 0 In die eerste plek, laat ons neem 'n blik op kaarte. Die eerste grafiek vir wins in die eerste iterasie is glad nie goed nie, want moet verwag word, verloor die neurale netwerk geld (beeld evolusie 00 gen 0.png kopieer na die eerste iterasie van gids beelde): Die beeld vir 'n wins op siklus 15 is beter, soms, genetiese algoritme kan leer baie vinnig: Maar let op die volop op 'n wins kurwe. Dit is interessant ook te kyk na die manier waarop individuele winste verandering, in gedagte hou dat kurwe getal, sê, 3 is nie altyd vir dieselfde neurale netwerk. soos hulle word gebore en beëindig die hele tyd: Let ook op dat uit klein forex outomatiese handel stelsel verrig armes op kort ambagte, en baie beter op verlang, wat mag of nie mag wees met betrekking tot die feit dat die dollar was val in vergelyking met euro gedurende daardie tydperk. Dit kan ook iets te doen met parameters van ons aanwyser het (miskien moet ons ander tydperk vir kortbroek) of die keuse van aanwysers. Hier is die geskiedenis na 92 ​​en 248 siklusse: Tot ons verbasing, genetiese algoritme misluk heeltemal. Laat ons probeer om uit te vind waarom, en hoe om die situasie te help. In die eerste plek, isn t elke generasie veronderstel om beter as die Vorige een Die antwoord is nee wees, ten minste nie in die model wat ons gebruik. As ons het HELE leer stel in 'n keer, en gebruik dit herhaaldelik aan ons nns leer, dan ja, hulle sal verbeter elke generasie. Maar in plaas daarvan, het ons ewekansige fragmente (12000 rekords in die tyd), en gebruik hulle. Twee vrae: waarom die stelsel versuim het om op ewekansige fragmente van leer stel, en waarom hawe t ons gebruik hele leer gevlegte. Om die tweede vraag te beantwoord, het ek. Nns uitgevoer grootliks - op leer stel. En hulle versuim het om op die toets stel, vir dieselfde rede is dit ongehoorsaam wanneer ons gebruik FFPB leer. Om dit anders te stel, het ons nns overspecialized, het hulle geleer hoe om te oorleef in die omgewing waarin hulle gebruik word om 'n nie-daarbuite. Dit gebeur baie in die natuur. Die benadering wat ons het in plaas was bedoel om te vergoed vir wat, deur te dwing nns goeie op enige arbitrêre fragment van die datastel te voer, sodat hopelik, kan hulle ook uit te voer op 'n onbekende toets stel. In plaas daarvan, het hulle versuim het albei op die toets en op die leer stel. Stel jou diere, wat in 'n woestyn. Daar is baie van die son, geen sneeu nie. Dit is 'n metafoor vir rizing mark, soos vir ons nns data speel die rol van die omgewing. Diere geleer in 'n woestyn woon. Stel jou diere, wat in 'n koue klimaat leef. Sneeu en geen son nie. Wel, aangepas hulle. Maar in ons eksperiment, ons lukraak geplaas ons nns in 'n woestyn, in die sneeu, in die water, op die bome. deur dit met verskillende fragmente van data (lukraak styg, val plat.). Diere gesterf. Of, om dit anders te stel, ons gekies om die beste Neurale netwerk vir ewekansige datastel 1, wat, sê, was vir stygende mark. Dan aangebied ons, aan die wenners en hul kinders, 'n dalende mark se data. Nns swak presteer, ons het die beste van swak presteerders, miskien, een van die mutant kinders, wat die vermoë om handel te dryf op stygende mark verloor, maar het 'n paar vermoë om te gaan met die val een. Daarna het ons die tafel weer, en weer, ons het die beste presteerder - maar die beste onder swak presteerders. Ons didn eenvoudig t gee ons nns enige kanse om universele geword. Daar is tegnieke toe te laat genetiese algoritme om nuwe inligting te leer sonder om te verloor prestasie op ou inligting (na alles, diere kan lewe in die somer en in die winter, reg So evolusie in staat is om te herhaal veranderinge te hanteer). Ons kan hierdie tegnieke later bespreek, hoewel hierdie artikel is meer oor die gebruik van Cortex Neurale Netwerke sagteware. as oor die bou van 'n suksesvolle forex outomatiese handel stelsel. Neurale netwerk genetiese algoritme: Voorbeeld 1 Nou is dit tyd om te praat oor regstellings. 'N Eenvoudige genetiese algoritme ons geskep is tydens die vorige stap het twee groot foute. In die eerste plek is dit nie te handel met wins. Dit is ok, kan ons probeer om gedeeltelik opgeleide stelsel (dit was waardeloos aan die begin) gebruik. Die tweede fout is ernstiger: Ons het geen beheer oor dinge, dat hierdie stelsel nie. Byvoorbeeld, kan dit leer winsgewend, maar met 'n groot onttrekkings te wees. Dit is 'n bekende feit dat in die werklike lewe, evolusie kan meer as een parameter gelyktydig te optimaliseer. Byvoorbeeld, kan ons 'n dier, wat vinnig kan hardloop en word weerstand teen koue kry. Hoekom nie probeer om dieselfde te doen in ons forex outomatiese handel stelsel. Dit is wanneer ons gebruik regstellings, wat niks anders as die stel van addisionele straf is. Sê, ons stelsel ambagte met drawdown 0.5, terwyl ons dit wil bevestig 0-0,3 interval. Om die stelsel wat dit 'n fout gemaak vertel, verminder ons die wins (een wat gebruik word om vas te stel, wat genetiese algoritme gewen) die graad, wat is eweredig aan die grootte van DD. Dan, die evolusie algoritme sorg vir die res. Daar is 'n paar meer faktore, wat ons wil in ag neem: kan ons wil min of meer ewe veel koop en verkoop transaksies, ons wil meer van winsgewende bedrywighede het, dan van mislukkings, ons wil die wins grafiek om wees lineêre en so aan. In evolusie 01.tsc ons implementeer 'n eenvoudige stel verbeteringe. In die eerste plek, gebruik ons ​​'n paar groot aantal vir 'n aanvanklike regstelling waarde. Ons vermenigvuldig dit met 'n klein (gewoonlik tussen 0 en 1) waardes, afhangende van die straf wat ons wil aansoek doen. Dan vermenigvuldig ons wins op hierdie regstelling. As gevolg, is wins reggemaak, om te besin hoeveel die genetiese algoritme ooreenstem met ons ander kriteria. Dan gebruik ons ​​die resultaat van 'n wenner Neurale netwerk te vind. Forex strategie: Bespreek voorbeeld 1 Voorbeeld 1 werk baie beter, as voorbeeld 0. In die eerste 100 siklusse, dit baie geleer, en wins kaarte kyk gerus te stel. Maar, soos in voorbeeld 0, lang ambagte is baie meer winsgewend, wat waarskynlik beteken dat daar 'n probleem in ons benadering. Tog het die stelsel het 'n balans te vind tussen paar teenstrydige aanvanklike voorwaardes: Daar is 'n paar positiewe dinamika beide in leer stel en, meer belangrik, in die toets stel. Soos vir verdere leer, by siklus 278 ons kan sien dat ons stelsel het overtrained. Dit beteken, het ons nog vordering op leer stel: Maar die toets stel toon swakheid: Dit is 'n algemene probleem met nns: wanneer ons dit leer oor leer stel, dit leer om dit te hanteer, en soms is dit leer te goed - om die graad, wanneer dit verloor prestasie op die toets stel. Om te gaan met die probleem, is 'n tradisionele oplossing gebruik: ons hou op soek na die neurale netwerk. wat die beste presteer op die toets stel, en stoor dit, te vervang vorige beste een, is elke keer nuwe hoogtepunt bereik. Dit is dieselfde benadering, wat ons gebruik in FFBP opleiding, behalwe hierdie keer moet ons dit self doen (die toevoeging kode, wat lyk vir 'n beste neurale netwerk op 'n toets stel, en 'n beroep SAVE NN, of die uitvoer van gewigte van neurale netwerk te 'n lêer). Op hierdie manier, wanneer jy jou opleiding te stop, sal jy die beste presteerder op die toets SET gered en wag vir jou. Let ook dat dit nie die maksimum. wins wat jy na, maar optimale prestasie, so oorweeg om regstellings, wanneer jy soek na 'n beste presteerder op 'n toets stel. Genetiese algoritme vir FOREX Tegniese Analise: Waar nou Nadat jy jou wenner neurale netwerk het. jy kan volg die stappe in die vorige artikel beskryf, te gewigte van daardie Neurale netwerk uit te voer. en dan om dit te gebruik in jou real time handel platform, soos Meta Trader, Handel Station en so aan. Alternatiewelik kan jy fokus op ander maniere die optimalisering van die neurale netwerk. In teenstelling met met FFBP algoritme, hier kan jy avay kry van die gebruik van leer en toets stelle, en beweeg opeenvolgende leer. Aflaai Cortex Bestel Cortex View Pryslys Sigbaarheid is baie belangrik vir hierdie webwerf. As jy dit wil hê kan u verwys na hierdie URL met behulp van genetiese Algoritmes in Kwantitatiewe Trading (Hierdie artikel is die eerste keer gepubliseer op die R Trader R. En vriendelik bygedra tot R-bloggers) Die vraag een moes hom altyd gevra / haarself by die gebruik van tegniese aanwysers is wat sou wees 'n objektiewe kriteria om aanwysers parameters te kies (bv waarom die gebruik van 'n 14 dae RSI eerder as 15 of 20 dae). Genetiese algoritmes (GA) is uiters geskik gereedskap om daardie vraag te beantwoord. In hierdie pos sal ek jou wys hoe om die opstel van die probleem in R. Voordat ek gaan die gewone herinnering: Wat ek teenwoordig is in hierdie pos is net 'n speelding voorbeeld en nie 'n uitnodiging om te belê. Dit is nie 'n finale strategie óf maar 'n ondersoek idee dat moet verder nagevors, ontwikkel en op maat van individuele behoeftes. Wat is genetiese algoritmes Die beste beskrywing van GA ek afgekom het kom uit Cybernatic Trading 'n boek deur Murray A. Ruggiero. . Die algemene proses volg die volgende stappe: enkodeer die probleem in chromosome Die gebruik van die kodering, 'n fiksheid funksie vir gebruik ontwikkel vir die evaluering van elke chromosoom se waarde in die oplossing van 'n gegewe probleem inisialiseer 'n bevolking van chromosome Evalueer elke chromosoom in die bevolking Skep nuwe chromosome deur paring twee chromosome. Dit word gedoen deur te demp en recombining twee ouers aan twee kinders (ouers lukraak gekies, maar bevooroordeeld deur hul fiksheid) Evalueer die nuwe chromosoom Verwyder 'n lid van die bevolking wat minder fiks as die nuwe chromosoom vorm en voeg die nuwe chromosoom in die bevolking . As die stop kriteria bereik word (maksimum aantal generasies, fiksheid kriteria is goed genoeg) dan terug die beste chromosoom alternatiewelik gaan na Stap 4 Uit 'n handel perspektief GA is baie nuttig, want hulle is goed in die hantering van hoogs-lineêre probleme. Oor pas:: Maar hulle 'n paar nare eienskappe wat noemenswaardig is uitstal Dit is die grootste probleem en dit is af na die ontleder by die opstel van die probleem op 'n manier dat dit die risiko verminder. Rekentyd. As die probleem isnt behoorlik omskryf, kan dit uiters lank om 'n ordentlike oplossing te bereik en die kompleksiteit verhoog eksponensieel met die aantal veranderlikes. Vandaar die noodsaaklikheid om versigtig te kies die parameters. Daar is 'n hele paar R pakkette wat handel oor GA, het ek gekies om die mees algemene een gebruik: rgenoud Daily sluitingstyd pryse vir die meeste vloeistof ETF van Yahoo Finansies gaan terug tot Januarie 2000. Die in monster tydperk strek van Januarie 2000 tot Desember 2010. Die Buite monster tydperk begin op Januarie 2011. die logika is soos volg: die fiksheid funksie is geskik oor die in die monster tydperk om 'n stel van optimale parameters vir die gekose tegniese aanwysers verkry. Die prestasie van die aanwysers is dan geëvalueer in die buite monster tydperk. Maar voordat dit te doen die tegniese aanwysers moet gekies word. Die aandelemark toon twee hoofeienskappe wat bekend is aan almal met 'n paar handel ervaring is. Langtermyn momentum en korttermyn ommekeer. Diegene funksies vertaal kan word in terme van tegniese aanwysers deur: bewegende gemiddeldes te steek oor en RSI. Dit verteenwoordig 'n stel van 4 parameters: Kyk terug periodes vir 'n lang en korttermyn bewegende gemiddeldes, kyk terug tydperk vir RSI en RSI drumpel. Die stelle parameters is die chromosome. Die ander belangrike element is die fiksheid funksie. Ons wil dalk iets soos gebruik: maksimum opbrengs of Sharpe verhouding of minimum gemiddelde Onttrekking. In wat volg, het ek gekies om die Sharpe-verhouding te maksimeer. Die R implementering is 'n stel van 3 funksies: fitnessFunction. definieer die fiksheid funksie (bv maksimum Sharpe verhouding) wat gebruik gaan word in die GA enjin tradingStatistics. opsomming van statistieke handel vir die in en uit van die monster periodes vir vergelykingsdoeleindes gebruik Genoud. die GA enjin van die rgenoud pakket Die Genoud funksie is eerder komplekse maar ek m nie van plan om te verduidelik wat elke parameter beteken as ek wil hierdie post kort hou (en die dokumentasie is regtig 'n goeie). In die onderstaande tabel Ek bied vir elke instrument die optimale parameters (RSI kyk terug tydperk, RSI drumpel, korttermyn bewegende gemiddelde en die lang termyn bewegende gemiddelde) saam met die in en uit van die monster handel statistieke. Voordat kommentaar bogenoemde resultate, ek wil 'n paar belangrike punte te verduidelik. Om die logika hierbo omskryf pas, ek begrens die parameters om seker te maak die blik terug tydperk vir die lang termyn bewegende gemiddelde maak altyd meer dat die korter bewegende gemiddelde. Ek beperk ook die optimaliseerder net die oplossings met meer as 50 ambagte in die in die monster tydperk (bv, statistiese betekenisvolheid) kies. Algehele die uit monster resultate is ver van 'n indrukwekkende. Die opbrengs is laag selfs al is die aantal ambagte is klein om die uitslag werklik beduidende maak. s daar egter 'n beduidende verlies van doeltreffendheid tussen in en uit van die monster tydperk vir Japan (EWJ) wat baie waarskynlik beteken meer as gepas. Hierdie pos is bedoel om die leser die gereedskap om GA behoorlik te gebruik in 'n kwantitatiewe handel raamwerk gee. Weereens, dit is net 'n voorbeeld wat gevolg moet verder te verfyn. 'N Paar moontlike verbetering te verken sou wees: fiksheid funksie. maksimering van die Sharpe-verhouding is baie eenvoudig. 'N Funksie sal beslis verbeter die uit monster handel statistieke patroon. Ons probeer om 'n baie eenvoudige patroon vas te vang. 'N meer in diepte patroon navorsing is beslis nodig. optimalisering. Daar is baie maniere om die manier waarop die optimalisering gedoen word verbeter. Dit sou beide die berekening spoed en die rasionaliteit van die resultate te verbeter. Die kode wat in hierdie pos is beskikbaar op 'n Yeast repository. Soos gewoonlik enige kommentaar welkom verband hou met 'n opmerking vir die skrywer verlaat, volg die skakel en kommentaar te lewer oor hul blog: Die R Trader R. As jy so ver gekry het, hoekom nie skryf vir updates van die werf Kies jou smaak: e-pos. Twitter. RSS. of Facebook. Kommentaar gesluit. Onlangse populêre artikels Mees besoek artikels van die week Borge Jobs vir R gebruikers 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.)

No comments:

Post a Comment