Saturday, October 15, 2016

Trading Strategie Masjienleer

Dit blyk dat daar 'n basiese denkfout dat iemand saam kan kom en leer 'n paar masjien leer of AI algoritmes, het hulle as 'n swart boks wees, getref gaan, en terug te sit terwyl hulle aftree. My raad aan jou: Leer statistieke en masjienleer eerste, dan bekommerd wees oor hoe om dit toe te pas om 'n gegewe probleem. Daar is geen gratis middagete hier. Data-analise is harde werk. Lees "Die elemente van statistiese leer" (die pdf is beskikbaar vir gratis op die webwerf), en begin nie probeer om 'n model te bou totdat jy verstaan ​​ten minste die eerste 8 hoofstukke. Sodra jy die statistieke en masjien leer verstaan, dan moet jy leer hoe om backtest en bou 'n handels-model, rekeningkunde vir transaksiekoste, ens Dit is 'n heel ander gebied. Nadat jy 'n handvatsel op beide die ontleding en die finansies, dan sal dit 'n bietjie voor die hand liggend hoe om dit toe te pas. Die hele punt van hierdie algoritmes is probeer om 'n manier om 'n model om data te pas en te produseer lae vooroordeel en variansie in voorspelling (dit wil sê dat die opleiding en toets voorspelling fout sal wees lae en soortgelyke) te vind. Hier is 'n voorbeeld van 'n handel stelsel met behulp van 'n ondersteuning vektor masjien in R. maar net in gedagte hou dat jy jouself sal ook 'n groot onreg as jy nie die tyd om die basiese beginsels te verstaan ​​voordat jy probeer om iets esoteries toepassing spandeer. Ek het onlangs afgekom op tesis hierdie M:: " 'n roman Algorithmic Trading raamwerk Aansoek Evolution en masjien Leer vir Portefeuljekomitee Optimization" (2012) Net om 'n vermaaklike update voeg. Dit is 'n omvattende hersiening van verskillende masjien leerbenaderings in vergelyking teen buy-en-hou. Na byna 200 bladsye, bereik hulle die basiese gevolgtrekking: "Nee handel stelsel in staat was om die maatstaf presteer by die gebruik van transaksiekoste." Nodeloos om te sê, dit beteken nie dat dit nie gedoen kan word (ek het nie spandeer enige tyd hersiening van hul metodes om die geldigheid van die benadering te sien), maar dit bied beslis 'n paar meer bewyse ten gunste van die nie-gratis middagete stelling. Hierdie pos detail wat ek gedoen het om ongeveer maak. 500k van hoë frekwensie handel vanaf 2009 tot 2010. Sedert ek was heeltemal onafhanklik handel en is nie meer loop my program B & rsquo; s gelukkig om al te vertel. My handel was meestal in Russel 2000 en DAX termynkontrakte. Die sleutel tot my sukses, glo ek, was nie in 'n gesofistikeerde finansiële vergelyking nie, maar eerder in die algehele algoritme ontwerp wat saam baie eenvoudige komponente en gebruik masjien leer wat gekoppel is aan te optimaliseer vir maksimum winsgewendheid. Jy het & rsquo; t nodig het om enige gesofistikeerde terminologie hier weet, want toe ek die opstel van my program dit is al wat gebaseer is op intuïsie. (Andrew Ng & rsquo; n ongelooflike masjien leer is natuurlik was nog nie beskikbaar - BTW as jy op die skakel kliek wat jy & rsquo; word om my huidige projek: CourseTalk, 'n review site vir MOOCs) Eerstens, ek wil net om te wys dat my sukses was nie net die gevolg van geluk. My program gemaak 1000-4000 ambagte per dag (half lank, half kort) en het nooit in posisies van meer as 'n paar kontrakte op 'n slag. Dit het beteken die ewekansige geluk van enige een spesifieke handel gemiddeld uit redelik vinnig. Die gevolg was ek nooit verloor meer as $ 2000 in een dag en nooit 'n verlies van maand gehad: (EDIT. Hierdie syfers is na die betaling van kommissie) En hier & rsquo; s 'n grafiek gee jou 'n gevoel van die daaglikse variasie gee. Let op hierdie sluit die afgelope 7 maande, want - soos die figure gestop terwyl hulle opgaan - ek my motivering om hulle te gaan verloor. My handel agtergrond Voor die oprigting van my outomatiese handel program B & rsquo; d het 2 jaar ondervinding as 'n & ldquo; handleiding & rdquo; dag handelaar. Dit was terug in 2001 - dit was die vroeë dae van elektroniese handel en daar geleenthede vir & ldquo; scalpers & rdquo; om goeie geld te maak. Ek kan net beskryf wat ek doen as wat verwant is aan die speel van 'n video game / dobbel met 'n veronderstelde rand. Om suksesvol te wees beteken om 'n vinnige, gedissiplineer word, en 'n goeie intuïtief patroonherkenning vermoëns. Ek was in staat om sowat $ 250K, afbetaal my studentelenings en het geld oor. Wen! Oor die volgende vyf jaar sal ek twee startups te loods, pluk 'n paar ontwikkeling vaardighede wat langs die pad. Dit wouldn rsquo dat &; t wees tot die einde van 2008 dat ek terug in die handel sou kry. Met geld lae hardloop uit die verkoop van my eerste begin, handel aangebied hoop van 'n paar vinnige kontant terwyl ek uitgepluis het my volgende skuif. A handel API In 2008 was ek & ldquo; die hand & rdquo; dag handel termynmark gebruik van sagteware genoem T4. B & rsquo; d dit altyd 'n paar persoonlike orde inskrywing sleutelbordkortpaaie, so na die ontdekking van T4 'n API het, het ek op die uitdaging van leer C # (die taal programmering nodig is om die API te gebruik) en voortgegaan en gebou myself 'n paar sleutelbordkortpaaie. Na om my voete nat met die API Ek het gou groter aspirasies: Ek wou die rekenaar te leer om handel te dryf vir my. Die API verskaf beide 'n stroom van die mark data en 'n maklike manier om bestellings by die uitruil stuur - al wat ek moes doen, was die skep van die logika in die middel. Hier is 'n kiekie van 'n T4 handel venster. Wat was cool is dat wanneer ek my program werk kon ek die rekenaar handel te kyk op hierdie presiese dieselfde koppelvlak. Kyk werklike bestellings knal in en uit (deur hulself met my regte geld) was beide opwindend en vreesaanjaend. Die ontwerp van my algoritme Van die begin af my doel was om te installeer 'n stelsel soos wat ek redelik vol vertroue dat ek & rsquo kan wees; d geld te maak voordat ooit om enige lewendige ambagte. Om dit te bereik wat ek nodig het om 'n handel simulasie raamwerk wat sou bou - so akkuraat as moontlik - simuleer lewende handel. Terwyl die handel in lewende modus vereis mark updates verwerking gestroom deur die API, simulasie af vereis lees mark updates van 'n data lêer. Om hierdie data Ek opstel in te samel die eerste weergawe van my program om net aan te sluit op die API en rekord mark updates met tyd tempel. Ek het uiteindelik met behulp van 4 weke die moeite werd om van die onlangse data mark op te lei en te toets my stelsel aan. Met 'n basiese raamwerk in plek het ek nog die taak van die uitzoeken hoe om 'n winsgewende handel stelsel te maak. As dit blyk dat sou my algoritme af te breek in twee afsonderlike komponente, wat ek & rsquo; verken op sy beurt: Die voorspelling van prysbewegings; en Die maak van winsgewende bedrywe Die voorspelling van prysbewegings Dalk 'n duidelike komponent van enige handel stelsel is in staat om te voorspel waar pryse sal beweeg. En my vrou was geen uitsondering nie. Ek gedefinieer die huidige prys as die gemiddelde van die binnekant bod en binne aanbod en ek stel die doel van die voorspelling van waar die prys in die volgende 10 sekondes sal wees. My algoritme nodig sou wees om vorendag te kom met hierdie voorspelling oomblik-vir-oomblik dwarsdeur die handel dag. Die skep van die optimalisering aanwysers Ek het 'n handvol van die aanwysers wat bewys dat 'n betekenisvolle vermoë om korttermyn prysbewegings te voorspel het. Elke aanwyser het 'n getal wat positief of negatief was. 'N aanduiding was nuttig as meer dikwels as nie 'n positiewe getal ooreengestem met die mark gaan en 'n negatiewe getal ooreengestem met die mark afgaan. My stelsel het my toegelaat om vinnig te bepaal hoeveel voorspellende vermoë enige aanduiding gehad sodat ek in staat was om te eksperimenteer met 'n baie verskillende aanwysers om te sien wat gewerk. Baie van die aanwysers het veranderlikes in die formules wat hulle geproduseer en ek was in staat om die optimale waardes vir daardie veranderlikes te vind deur te doen langs mekaar vergelyk van bereik met wisselende waardes resultate. Die aanwysers wat baie nuttig is almal relatief eenvoudig en is gebaseer op die onlangse gebeure in die mark Ek kon die handel, sowel as die markte van gekorreleer sekuriteite. Die maak van die presiese prys skuif voorspellings Met aanwysers wat bloot voorspel 'n op of af prysbewegings wasn & rsquo; t genoeg. Ek nodig het om te weet presies hoeveel die prys beweging is voorspel deur elke moontlike waarde van elke aanwyser. Ek benodig 'n formule wat 'n aanduiding waarde sal skakel na 'n prys voorspelling. Om dit Ek bijgehouden voorspel prysbewegings in 50 emmers wat afhanklik is van die reeks dat die aanwyser waarde het in te voer. Dit vervaardig unieke voorspellings vir elke emmer wat ek was toe in staat om grafiek in Excel. As jy die verwagte prys verandering neem toe soos die aanwyser waarde toeneem kan sien. Op grond van 'n grafiek soos hierdie Ek was in staat om 'n formule om die kurwe pas te maak. In die begin het ek dit & ldquo; krommepassing & rdquo; hand, maar ek het gou 'n paar kode om hierdie proses te outomatiseer. Let daarop dat nie al die aanwyser kurwes het dieselfde vorm. Let ook op die emmers is logaritmies versprei ten einde versprei die data wys daarop eweredig. Ten slotte daarop dat negatiewe aanwyser waardes (en hul ooreenstemmende afwaartse prys voorspellings) is omgekeer en gekombineer met die positiewe waardes. (My algoritme behandel op en af ​​presies dieselfde.) Die kombinasie van aanwysers vir 'n enkele voorspelling 'N Belangrike ding om te oorweeg, is dat elke aanwyser was nie heeltemal onafhanklik. Ek kon nie & rsquo; t eenvoudig net optel al die voorspellings dat elke aanwyser individueel gemaak. Die sleutel was om uit te vind die bykomende voorspellende waarde wat elke aanwyser het as wat reeds voorspel. Dit wasn & rsquo; t om hard te implementeer, maar dit het beteken dat as ek was & ldquo; krommepassing & rdquo; verskeie aanwysers terselfdertyd Ek het om versigtig te wees; verander 'n mens sou die voorspellings van 'n ander te bewerkstellig. Ten einde ldquo dat &; boogpas & rdquo; al die aanwysers op dieselfde tyd Ek opstel van die optimizer te stap net 30% van die pad na die nuwe voorspelling kurwes met mekaar pas. Met hierdie 30% spring het ek gevind dat die voorspelling kurwes binne 'n paar passe sou stabiliseer. Met elke aanwyser nou gee ons dit & rsquo; s bykomende prys voorspelling kon ek net voeg dit tot 'n enkele voorspelling van waar die mark in 10 sekondes sal wees produseer. Hoekom voorspel pryse is nie genoeg Jy mag dalk dink dat hierdie voorsprong op die mark was ek goue. Maar jy moet in gedagte hou dat die mark bestaan ​​uit bod en bied - dit & rsquo; s nie net een markprys. Sukses in 'n hoë frekwensie handel kom neer op om goeie pryse en dit & rsquo; s nie so maklik nie. Die volgende faktore maak die skep van 'n winsgewende stelsel moeilik: Met elke handel moes ek kommissies te betaal om beide my makelaar en die uitruil. Die verspreiding (verskil tussen hoogste bod en laagste aanbod) beteken dat as ek net koop en verkoop lukraak B & rsquo; D verloor 'n ton geld. Die meeste van die volume mark was ander bots wat net 'n handel met my sou voer as hulle gedink het hulle het 'n paar statistiese rand. Aangesien 'n aanbod nie waarborg dat ek dit kan koop. Teen die tyd dat my koop orde gekry om die uitruil was dit baie moontlik dat daardie aanbod sou gewees het gekanselleer. As 'n klein speler in die mark was daar geen manier wat ek kon alleen meeding op spoed. Die bou van 'n volledige handel simulasie So ek het 'n raamwerk wat my toegelaat het om backtest en te optimaliseer aanwysers. Maar ek het om te gaan na hierdie - ek nodig om 'n raamwerk wat jou sal toelaat om my te backtest en te optimaliseer 'n volledige handel stelsel; een waar ek stuur bestellings en kry in posisies. In hierdie geval is ek & rsquo; D optimalisering vir totale PL en tot 'n mate gemiddelde PL per handel. Dit sou moeiliker en in sommige maniere onmoontlik om presies te modelleer, maar ek het so goed as wat ek kon. Hier is 'n paar van die kwessies wat ek moes hanteer: Wanneer 'n bevel in simulasie op die mark gestuur moes ek die tydsverloop te modelleer. Die feit dat my stelsel het 'n aanbod nie beteken dat dit dit kan koop dadelik. Die stelsel sal die einde stuur, wag sowat 20 millisekondes en dan slegs indien die aanbod is steeds was daar dit beskou word as 'n uitgevoer handel. Dit was onjuiste omdat die werklike tydsverloop was teenstrydig en aangemeld word nie. Toe ek bod of aanbod geplaas moes ek kyk na die uitvoering handel stroom (wat deur die API) en gebruik die om vas te stel wanneer my einde sou gekry uitgevoer teen. Om hierdie reg ek moes die posisie van my bestelling in die tou op te spoor nie. (Dit & rsquo; s 'n eerste-in-eerste-uit-stelsel.) Weereens, ek kon nie & rsquo; t dit te doen perfek, maar ek het 'n beste benadering. Om my uitvoering orde simulasie verfyn wat ek gedoen het, was om my log lêers van lewende handel deur middel van die API en vergelyk kan word om lêers wat deur gesimuleerde handel van die presiese dieselfde tydperk aanteken. Ek was in staat om my simulasie kry tot op die punt dat dit was 'n bietjie akkurate en vir die dele wat onmoontlik is om 'n model was presies gemaak ek seker dat ten minste produseer uitkomste wat statisties soortgelyke was (in die statistieke wat ek gedink het belangrik). Die maak van winsgewende bedrywe Met 'n bevel simulasiemodel in plek wat ek kon nou bestellings in simulasie af te stuur en sien 'n gesimuleerde PL. Maar hoe sou my stelsel weet wanneer en waar om te koop en te verkoop? Die prys skuif voorspellings was 'n beginpunt, maar nie die hele storie. Wat ek gedoen het, was te skep 'n puntestelsel vir elk van 5 prysvlakke op die bod en aanbod. Dit sluit in 'n vlak bo die binnekant bod (vir 'n koop orde) en een vlak laer as die binnekant aanbod (vir 'n sell volgorde). As die telling op enige vlak gegewe prys bo 'n sekere drumpel dat my stelsel sou beteken moet 'n aktiewe poging / aanbod daar het was - onder die drumpel dan enige aktiewe bestellings gekanselleer moet word. Op grond van hierdie dit was nie ongewoon dat my stelsel 'n poging in die mark sal flits dan onmiddellik te kanselleer dit. (Alhoewel ek probeer om hierdie te verminder, aangesien dit & rsquo;. E irriterende as klink na iemand te kyk na die skerm met menslike oë - insluitend my) Die prys vlak tellings is bereken gegrond op die volgende faktore: Die prys skuif voorspelling (wat ons vroeër bespreek). Die prys vlak betrokke. (Inner vlakke bedoel groter prys skuif voorspellings nodig is.) Die aantal kontrakte in die voorkant van my bestelling in die tou. (Minder is beter.) Die aantal kontrakte agter my bestelling in die tou. (Meer was beter.) In wese hierdie faktore gedien te identifiseer & ldquo; veilige & rdquo; plekke om te bie / aanbod. Die prys skuif voorspelling alleen was nie voldoende, want dit het nie rekening vir die feit dat wanneer die plasing van 'n poging was ek nie outomaties gevul - ek het net gevul as iemand daar vir my verkoop. Die werklikheid is dat die blote feit dat iemand verkoop om my op 'n sekere prys verander die statistiese kans van die handel. Die veranderlikes wat in hierdie stap was almal onderworpe aan optimalisering. Dit is gedoen in presies dieselfde manier as ek veranderlikes in die prys skuif aanwysers new behalwe in hierdie geval is ek optimalisering vir bottom line PL. Wat my program geïgnoreer Wanneer die handel as mense ons dikwels kragtige emosies en vooroordele wat kan lei tot minder as optimale besluite. Dit is duidelik dat ek wou nie hierdie vooroordele te kodifiseer. Hier is 'n paar faktore my stelsel geïgnoreer: Die prys wat 'n posisie is ingevoer - In 'n handel kantoor dit & rsquo; s redelik algemeen om gesprek oor die prys waarteen iemand lang of kort asof dit hul toekomstige besluitneming moet bewerkstellig hoor. Terwyl dit het 'n paar geldigheid as deel van 'n strategie risikovermindering dit regtig geen invloed op die toekomstige verloop van die gebeure in die mark. Daarom heeltemal my program geïgnoreer hierdie inligting. Dit & rsquo; s dieselfde konsep as ignoreer gesink koste. Gaan kort teen verlaat 'n lang posisie - Tipies van 'n handelaar sou verskillende kriteria wat bepaal waar 'n lang posisie teenoor waar om kort te gaan verkoop. Maar uit my algoritmes perspektief was daar geen rede om 'n onderskeid te maak. As my algoritme verwag 'n afwaartse beweging verkoop was 'n goeie idee, ongeag of dit op die oomblik lank, kort, of plat was. A & ldquo; verdubbel tot & rdquo; strategie - Dit is 'n algemene strategie waar handelaars meer voorraad sal te koop in die geval dat daar oorspronklike handel gaan teen hulle. Dit lei tot die gemiddelde koopprys wat laer en dit beteken as (of as) die voorraad draai rondom jou & rsquo; ingestel word om jou geld terug in geen tyd. Na my mening is dit regtig 'n verskriklike strategie, tensy jy & rsquo; re Warren Buffet. Jy & rsquo; re bos gelei om te dink jy goed doen, want die meeste van jou ambagte sal wees wenners. Die probleem is wanneer jy verloor jou groot verloor. Die ander effek is dit maak dit moeilik om te bepaal of jy eintlik 'n voorsprong op die mark of is net om gelukkig. In staat is om te monitor en bevestig dat my program wel het 'n voorsprong was 'n belangrike doel. Risiko bestuur Sedert my algoritme gemaak besluite op dieselfde manier, ongeag van waar dit 'n bedryf aangegaan of as dit op die oomblik lank of kort dit het soms sit in (en neem) 'n paar groot verloor ambagte (bykomend tot 'n groot wen ambagte). Maar, shouldn jy & rsquo; t dink daar wasn & rsquo; t enige risikobestuur. Om risiko te bestuur ek afgedwing n maksimum posisie grootte van 2 kontrakte op 'n tyd, soms gestamp het in die hoogte volume dae. Ek het ook 'n maksimum daaglikse verlies limiet te beskerm teen enige onverwagse marktoestande of 'n fout in my sagteware. Hierdie beperkinge is afgedwing in my kode nie, maar ook in die agterkant deur my makelaar. As dit gebeur het ek nooit teëgekom enige noemenswaardige probleme. Die uitvoer van die algoritme Vanaf die oomblik dat ek begin werk aan my program dit het my ongeveer 6 maande voordat ek het dit tot op die punt van winsgewendheid en begin om dit te draai live. Hoewel om eerlik te wees 'n beduidende hoeveelheid tyd was om te leer 'n nuwe programmeertaal. Soos ek gewerk om die program te verbeter sien ek groter winste vir elk van die volgende vier maande. Elke week Ek sal my stelsel lei op grond van die vorige 4 weke die moeite werd om van data. Ek het gevind dat hierdie geslaan die regte balans tussen die opneem van onlangse mark gedrags - tendense en die versekering van my algoritme het genoeg data om sinvolle patrone te vestig. Soos die opleiding begin neem meer en meer tyd ek verdeel dit uit sodat dit kan uitgevoer word deur 8 virtuele masjiene met behulp van Amazon EC2. Die resultate is dan gebind op my plaaslike masjien. Die hoogtepunt van my handel was Oktober 2009 toe ek amper 100k gemaak. Hierna het voortgegaan ek na die volgende vier maande spandeer probeer om my program te verbeter ten spyte van verminderde wins elke maand. Ongelukkig hierdie punt wat ek dink ek & rsquo; d geïmplementeer al my beste idees omdat niks wat ek probeer het voorgekom om te veel te help. Met die frustrasie van nie in staat is om verbeteringe aan te bring en nie 'n gevoel van groei begin ek dink oor 'n nuwe rigting. Ek e-pos 6 verskillende hoë frekwensie firmas om te sien of hulle & rsquo; belangstel in die aankoop van my sagteware en die verhuring van my werk vir hulle D. Niemand het geantwoord. Ek het 'n paar nuwe begin idees wat ek wou om te werk, sodat ek nooit opgevolg. UPDATE - ek gepos hierdie op Hacker Nuus en dit het 'n baie aandag gekry. Ek wil net sê dat ek nie iemand probeer om iets self nou doen soos hierdie advokaat. Jy sal 'n span van baie slim mense nodig het met 'n verskeidenheid van ervarings om enige hoop van mededingende het. Selfs wanneer ek dit doen Ek glo dit was baie skaars vir individue om sukses te behaal (al het ek van ander gehoor het.) Daar is 'n kommentaar aan die bokant van die bladsy wat "gemanipuleer statistieke" noem en verwys na my as 'n & ldquo; kleinhandel belegger & rdquo; dat kwantitatiewe ldquo sou dat &; opgewonde haal af & rdquo ;. Dit is 'n nogal jammer opmerking dat & rsquo; eenvoudig nie s gebaseer op die werklikheid. Die opstel wat hulle daar & rsquo; s 'n paar interessante opmerkings: news. ycombinator / item id = 4748624 UPDATE # 2 - B & rsquo; vyf gepos word 'n opvolg vrae wat 'n paar algemene vrae B & rsquo beantwoord; ve ontvang van handelaars oor hierdie post. Masjien-Learning gebaseer Stock Trading Strategieë Spesiale dank: Klout / Litium vir hosting en die verskaffing van video-opname! Weerlig Bespreking: Werkwoorde van data wetenskap (Abe Gong, kakebeen) Abstract: Byna alles youve lees en hoor van data wetenskap gefokus op Woorde: algoritmes, sagteware, infrastruktuur, ens wat data werkers gebruik, of produkte wat hulle maak. - Naamwoord gebaseer tekste leer gereedskap en tegniese vaardighede, maar moenie te leer oor tyd. Daarom, hulle het min te sê het oor skedulering, deadlines, doeltreffendheid, en opbrengs op belegging & mdash; fundamentele konsepte wat abstrakte denkers skei van produktiewe doeners. Dit weerlig praat skop die aand saam met gedagtes oor die werkwoorde van data wetenskap: hoe om jou werk te reël om meer inligting werk wat gedoen is, op sperdatum. Main talk: Machine-Learning gebaseer Stock Trading Strategieë (Dr. Tucker Balch, Lucena Navorsing) Tucker Balch, Ph. D. is 'n medeprofessor van Interaktiewe Computing by Georgia Tech, en tegniese direkteur van Lucena Navorsing. Sy loop by Coursera, Computational Finansies, Deel I geneem is deur meer as 100,000 studente wêreldwyd. Op Georgia Tech leer hy kursusse in Kunsmatige Intelligensie en Finansies. Balch het meer as 120 navorsingspublikasies wat verband hou met Robotics en masjien Leer gepubliseer. Sy werk is gedek deur CNN en deur die New York Times. Sy studeer studente werk by Goldman Sachs, Morgan Stanley, Citadel, AQR, en Yahoo! Finansies. A Single SVM Trading Strategie Ondersteuning Vector Machines (SVM) is besig om in gewildheid in masjienleer handel stelsels. Hulle het voordele Neurale Netwerke (NN) soos hulle is gewaarborg om die optimale oplossing te vind. NN kan kry wat vasgevang in 'n plaaslike minima, so terwyl jy 'n resultaat met behulp NN jy kan nooit seker wees dat dit optimaal te kry. Ook as NN is begin met 'n arbitrêre gewigte sal jy waarskynlik 'n ander stel gewigte elke keer as jy backpropagation loop op dieselfde stel data. SVMs het nie hul nadele ook. Spesifiek die keuse van die hiper parameters. Dit is die straf (C), Gauss breedte (g) indien die gebruik van 'n RBF kern en epsilon onsensitiwiteit (e) indien die gebruik Support Vector Regressie (SVR). My gebruik van SVMs tot dusver was om dit te gebruik in klassifikasie so ek moet net die C en G parameters Ek gebruik die standaard RBF kern kies. Die hard genoeg probeer om te voorspel of die mark up down gaan of nie, laat staan ​​met hoeveel. Ons kan hierdie parameters met behulp van 'n rooster search kies. Dit beteken dat ons eenvoudig probeer elke kombinasie van parameters en sien wat gewerk beste. Die manier waarop die parameters geëvalueer is deur N-vou kruis-validering. Lees meer 8250; A Single SVM Trading Strategie Ondersteuning Vector Machines (SVM) is besig om in gewildheid in masjienleer handel stelsels. Hulle het voordele Neurale Netwerke (NN) soos hulle is gewaarborg om die optimale oplossing te vind. NN kan kry wat vasgevang in 'n plaaslike minima, so terwyl jy 'n resultaat met behulp NN jy kan nooit seker wees dat dit optimaal te kry. Ook as NN is begin met 'n arbitrêre gewigte sal jy waarskynlik 'n ander stel gewigte elke keer as jy backpropagation loop op dieselfde stel data. SVMs het nie hul nadele ook. Spesifiek die keuse van die hiper parameters. Dit is die straf (C), Gauss breedte (g) indien die gebruik van 'n RBF kern en epsilon onsensitiwiteit (e) indien die gebruik Support Vector Regressie (SVR). My gebruik van SVMs tot dusver was om dit te gebruik in klassifikasie so ek moet net die C en G parameters Ek gebruik die standaard RBF kern kies. Die hard genoeg probeer om te voorspel of die mark up down gaan of nie, laat staan ​​met hoeveel. Ons kan hierdie parameters met behulp van 'n rooster search kies. Dit beteken dat ons eenvoudig probeer elke kombinasie van parameters en sien wat gewerk beste. Die manier waarop die parameters geëvalueer is deur N-vou kruis-validering. kruisvalidering Dit is die beste verduidelik met 'n voorbeeld. As ons 1000 gemerk opleiding gevalle en ons gebruik 10 vou kruis-validasie, dan vir elke kombinasie van C, G ons doen die volgende: Lukraak uit 10% van die monsters. Dit is ons hande-uiteengesit van 100 opleiding gevalle. Lei die SVM op die oorblywende 90% en die skep van 'n model. Gebruik die model om die accuracyon toets die hold-uiteen te sit. Herhaal die oefening 10 keer en neem die gemiddelde akkuraatheid. Bogenoemde is 10-vou kruisvalidering. Ons kan dit neem om die logiese gevolgtrekking en het slegs 'n enkele geval in uithou-uiteen te sit. Dit is laat-een-out kruisvalidering. Dit sou ons die mees akkurate assessering van die parameter kombinasie, maar in die praktyk 10-vou of selfs 5-vou is goed genoeg gee. So hoe kan ons werklik 'n kruis-validering te doen? Die libSVM pakket by csie. ntu. edu. tw/ cjlin / libsvm / bevat 'n paar Python skrifte in die gereedskap gids. Jy moet om Python en Gnuplot installeer. Jy kan ook gebruik DeepThought beskikbaar by deep-thought. co. In die voorbeelde hieronder Siek gebruik DeepThought. Die eerste ding wat ons nodig het is 'n paar data. Siek 'n stelsel met die volgende kenmerke opleiding Uur van die dag Gemiddeld naby prys verskil tussen die vorige 30 bars Bewegende gemiddelde verskille tussen die vorige 1,2,3,4,5,7,9,13,16,20,25,31,45,55,70,100 bars met MA periodes van 5, 10, 20, 50 en 100 Die teiken is -1 vir die prys sal daal teen die einde van die volgende bar, 1 vir die prys sal optrek teen die einde van die volgende bar. Sodra Ive stel dit in die opset, ek hardloop die opdrag om die opleiding stel onttrek. Ive ook gebruik min-max skalering. Siek bespreek funksie voorbereiding en skalering in 'n ander artikel. Die opdrag sal bo opleiding lêers te skep uit al die modelle gedefinieer in die DeepThought opset. Na die opdrag voltooi het 'n lêer h4-features. training. data geskep die dieselfde gids wat ek gehardloop die bevel van. Dit is in libSVM formaat sodat ons die libSVM gereedskap kan gebruik om die search netwerk, of gebruik rooster search gebou in DeepThought hardloop. Ook geskep is die lêer h4-features. training. data. csv wat dieselfde data, maar in CSV formaat bevat sodat jy daarmee kan speel in ander instrumente soos R, Python, Excel ens Om die soek rooster in DeepThought hardloop ek gebruik die opdrag: Die resultate is in die loglêer waar resultaat: die persentasie akkuraatheid: Die (vervelige) resultate in die middel is verwyder vir bondigheid. Ons kan sien dat die SVM lyk kleiner Gamma's guns en die C lyk na 'n sinvolle waarde wees. Ons moet bekommerd wees as die beste gamma was wyd uitgestrek en die C klein soos dit waarskynlik beteken 'n soort van data fout. Die volgende hoogste waardes is min of meer dieselfde reeks as die beste parameters wat daarop dui dat die parameter seleksie is relatief onsensitief. Ons moet bekommerd wees as die waardes wat die beste resultaat was uitskieters. Back testing die Enkellopend SVM Strategie Die finale stap is om te bepaal hoe 'n enkele SVM voer in 'n backtest. In hierdie backtest ons eenvoudig te koop met 'n 1-vooruitskatting en verkoop met 'n -1 skatting. As ons lank en ons kry 'n koopsein ons voeg 'n ander posisie tot 'n maksimum posisie grootte van 10. Aan die ander kant vir verkoop seine. Die gebruik van die beste C van 128 en gamma van 0,00195313 ons kan sny en verby die volgende XML uittreksel uit die search netwerk log lêer in die DeepThought konfigurasielêer: Die backtest word gelei met die volgende opdrag: Die DeepThought backtest bedryf deur die skep van 'n opleiding wat aan die einde van elke staaf, die EURUSD H4 in hierdie geval. Wanneer die einde van die volgende bar bereik 'n voorspelling gemaak en ambagte ingegaan en / of gesluit, dan is die model is heropgelei weer gereed vir die volgende bar. So is dit voortdurend aan te pas by die nuutste voorwaardes en alle toetse is out-of-monster, vermy oormatige pas. Die resultate van die backtest was soos volg: en 'n plot van die PNL (geplot met behulp van R): Dit lyk soort van ok, maar waarskynlik nie iets wed handel soos dit is. Die volgende artikel sal ensembles bespreek om te sien of ons hierdie resultaat kan verbeter. Dit hang baie af van die individu handel strategie en hoe voorspelbaar vs ewekansige hul handel strategie is. Jy kan al die insette (d. w.z die inligting die handelaar gebruik) en die uitsette (die besluit van die handelaar maak) aan te teken, maar nog steeds genoeg inligting om te voorspel wat die die handelaar gaan om volgende te doen nie. Jy kan in 'n paar klein deelversamelings van gereelde scenario in staat wees om te voorspel wat hulle sal doen volgende, die beste manier om hierdie is die gebruik van een van die vele funksie opsporing algoritmes te spoor en dan gebruik dit om die handelaars gedrag te voorspel. Maar wanneer dit kom by 'n nuwe situasie sy hoogs onwaarskynlik dat enige algoritme kan die handelaars reaksie korrek voorspel sou wees. In markte soos FX waar die mark voortdurend aan die verander is hierdie tipe situasie ontstaan ​​voortdurend en menslike handelaars moet aanpas. So 'n algoritme sal nie net tot die handelaars leer huidige styl, maar ook hoe sy gedrag sou met verloop van tyd verander. In die praktyk sy 'n mooi ope vraag egter menslike handelaars word pretty much uit die mark uitgewis deur elektroniese handel algoritmes ( 'n menslike bygestaan). Die aantal menslike handelaars besig om in FX is 'n klein fraksie vergelyking met selfs 'n dekade gelede. Geskryf 225w gelede & bull; Nie vir Reproduksie


No comments:

Post a Comment