Monday, October 17, 2016

Hoe om hft handel stelsel te bou

Hoë frekwensie handel stelsel ontwerp en proses bestuur hoë frekwensie handel stelsel ontwerp en proses bestuur adviseur: Roy E. Welsch. Departement: System Design and Management Program. Uitgewer: Massachusetts Institute of Technology Datum Uitgereik: 2009 firmas deesdae is hoogs afhanklik van data-ontginning, rekenaarmodellering en die ontwikkeling van sagteware. Finansiële ontleders te voer baie soortgelyke take aan dié in sagteware en vervaardigingsbedrywe. Maar die finansiële sektor het nog nie ten volle 'n hoë-standaard stelsels ingenieurswese raamwerke en proses bestuur benaderings wat suksesvol was in die sagteware en vervaardigingsbedrywe aangeneem. Baie van die tradisionele metodes vir die produk ontwerp, gehaltebeheer, sistematiese innovering, en deurlopende verbetering in ingenieursdissiplines aangewend kan word om die veld van finansies. Hierdie tesis wys hoe die kennis wat uit ingenieursdissiplines die ontwerp en prosesse bestuur van 'n hoë frekwensie handel stelsels kan verbeter. Hoë frekwensie handel stelsels is-berekening gebaseer. Hierdie stelsels is 'n outomatiese of semi-outomatiese sagteware stelsels wat inherent kompleks en vereis 'n groot mate van ontwerp presisie. Die ontwerp van 'n hoë frekwensie handel stelsel koppel verskeie velde, insluitend kwantitatiewe finansies, stelsel ontwerp en sagteware-ingenieurswese. In die finansiële sektor, waar wiskundige teorieë en handel modelle relatief goed nagevors, die vermoë om hierdie ontwerpe te implementeer in real handel praktyke is een van die belangrikste elemente van 'n belegging maatskappye mededingendheid. Die vermoë van die omskakeling van belegging idees in 'n hoë werkverrigting handel stelsels doeltreffend en effektief kan 'n belegging firma 'n groot mededingende voordeel te gee. (Verv.) Hierdie tesis verskaf 'n gedetailleerde studie bestaan ​​uit 'n hoë frekwensie handel stelsel ontwerp, stelsel modellering en beginsels, prosesse en bestuur vir stelsel ontwikkeling. Besondere klem word aan back testing en optimalisering, wat beskou word as die belangrikste dele in die bou van 'n handel stelsel. Hierdie navorsing bou stelsel ingenieurswese modelle wat die ontwikkelingsproses te lei. Dit maak ook gebruik van eksperimentele handel stelsels te verifieer en te bekragtig beginsels in hierdie tesis aangespreek. Ten slotte, hierdie tesis tot die gevolgtrekking dat stelselingenieurswese beginsels en raamwerke die sleutel tot sukses vir die implementering van 'n hoë frekwensie handels - of kwantitatiewe belegging stelsels kan wees. Proefskrif (S. M.) - Massachusetts Institute of Technology, System Design and Management Program, 2009.Cataloged uit PDF-weergawe van thesis. Includes bibliografiese verwysings (bl 78-79.). Sleutelwoorde: System Design and Management Program. Kyk na My AccountAs suiwer 'n rekenaarwetenskaplike julle in die perfekte posisie om te begin in algoritmiese handel. Dit is iets wat Ive gesien eerstehands by Quantiacs 1. waar wetenskaplikes en ingenieurs in staat is om regs in outomatiese handel te spring sonder enige vorige ondervinding. Met ander woorde, programmering tjops is die belangrikste bestanddeel wat nodig is om te begin. Om 'n algemene begrip van wat uitdagings wag jy na / tydens die skepping van 'n algoritmiese handel stelsel te kry, check hierdie Quora post. Die bou van 'n handel stelsel van die grond af sal 'n agtergrond kennis, 'n verhandelingsplatform, data mark, en marktoegang vereis. Hoewel dit nie 'n vereiste, die keuse van 'n enkele verhandelingsplatform dat die meeste van hierdie hulpbronne verskaf sal jou help om op te staan ​​om 'n vinnige spoed. Dit gesê, sal die vaardighede wat jy ontwikkel oordraagbaar aan enige programmeertaal en byna enige platform wees. Glo dit of nie, die bou van 'n outomatiese handel strategieë isnt berus op 'n mark deskundige. Nietemin, leer basiese mark meganika sal jou help om te ontdek winsgewende handel strategieë. Opsies, termynkontrakte, en Ander Derivaten deur John C. Hull - Groot eerste boek vir die invoer van kwantitatiewe finansies, en dit kom uit die wiskunde kant. Kwantitatiewe Trading deur Ernie Chan - Ernie Chan bied die beste inleidende boek vir kwantitatiewe handel en stap vir stap deur die proses van die skep van handel algoritmes in MATLAB en Excel. Algoritmiese Trading van Futures via masjien Leer - 'n 5-bladsy uiteensetting van die toepassing van 'n eenvoudige masjien leermodel te algemeen gebruik ontleding aanwysers tegniese. Hier is 'n gemiddelde leeslys PDF met 'n Volledige uiteensetting van boeke, video's, kursusse, en handel forums. Die beste manier om te leer is om te doen, en in die geval van outomatiese handel wat neerdaal na kartering en kodering. 'N Goeie beginpunt is bestaande voorbeelde van handel stelsels en bestaande uitstallings van tegniese ontleding tegnieke. Daarbenewens is 'n geskoolde rekenaar wetenskaplike het die bykomende voordeel van die vermoë om masjienleer toepassing op algoritmiese handel. Hier is 'n paar van daardie hulpbronne: TradingView - 'N fantastiese visuele kartering platform op sy eie, TradingView is 'n groot speelterrein vir die kry gemaklik met tegniese ontleding. Dit het die bykomende voordeel dat u kan script handel strategieë en blaai ander mense handel idees. Outomatiese handel Forum - Groot aanlyn gemeenskap vir die opstel van beginner vrae en vind antwoorde op algemene Quant kwessies wanneer net begin. Quant forums is 'n goeie plek om te Midde in die strategieë, gereedskap, en tegnieke word. YouTube Seminaar oor handel idees met werk-kode monsters op GitHub. Masjienleer: Meer aanbiedings op outomatiese handel kan gevind word by die Quantiacs Quant Club. Die meeste mense uit 'n wetenskaplike agtergrond (of dis rekenaarwetenskap of ingenieurswese) blootstelling gehad het aan Python of MATLAB, wat gebeur met die algemene tale vir kwantitatiewe finansies wees. Quantiacs het 'n open source toolbox wat back testing en 15 jaar van historiese mark data verskaf gratis geskep. Die beste deel is alles is gebou op beide Python en MATLAB gee jou die keuse van wat om te jou stelsel te ontwikkel met. Hier is 'n monster-tendens volgende handel strategie in MATLAB. Dit is al die kode wat nodig is om 'n outomatiese handel stelsel loop, die klem op beide die krag van MATLAB en die Quantiacs Gereedskap. Quantiacs kan jy handel 44 termynmark en al die aandele van die SampP 500. Daarbenewens het 'n verskeidenheid van bykomende biblioteke soos TensorFlow word ondersteun. (Disclaimer: Ek werk van die Quantiacs) Sodra jy gereed is om geld te maak as 'n quant, kan jy aansluit by die jongste Quantiacs outomatiese handel wedstryd, met 'n totaal van 2.250.000 in beleggings beskikbaar: Kan jy kompeteer met die beste kwantitatiewe 12.5k Views middot View upvotes middot Nie vir Reproduksie Hierdie antwoord is heeltemal herskryf Hier is 6 belangrikste kennisbasis vir die bou van algoritmiese handel stelsels. Jy moet vertroud wees met almal van hulle ten einde doeltreffende handel stelsels te bou. Sommige van die terme wat gebruik word mag effens tegniese wees, maar jy moet in staat wees om hulle te verstaan ​​deur Googlen. Let wel: (Die meeste van) hierdie is nie van toepassing as jy wil High-Frequency Trading doen 1. teorieë Jy moet verstaan ​​hoe die mark werk. Meer spesifiek, moet jy die mark ondoeltreffendheid, verhoudings tussen verskillende bates / produkte en die prys gedrag te verstaan. Trading idees spruit uit die mark ondoeltreffendheid. Jy sal nodig hê om te weet hoe om die mark ondoeltreffendheid wat jy gee 'n handels rand teenoor diegene wat nie die geval te evalueer. Die ontwerp van effektiewe robotte behels die begrip van hoe outomatiese handel stelsels werk. In wese, 'n algoritmiese handel strategie bestaan ​​uit 3 kernkomponente: 1) Inskrywings, 2) Exits en 3) Posisie groottes. nodig sal jy hierdie 3 komponente te ontwerp met betrekking tot die mark ondoeltreffendheid jy vaslegging (en nee, dit is nie 'n eenvoudige proses). Jy hoef nie te weet gevorderde wiskunde (hoewel dit sal help as jy daarop gemik is om meer komplekse strategieë te bou). Goeie kritiese denkvaardighede en 'n ordentlike greep op statistieke sal jy baie ver te neem. Ontwerp behels back testing (toets vir verhandeling rand en robuustheid) en optimalisering (maksimalisering prestasie met 'n minimale krommepassing). Jy moet weet hoe om 'n portefeulje van algoritmiese handel strategieë te bestuur. Strategieë kan aanvullend wees of teenstrydige dit kan lei tot onbeplande stygings in risikoblootstelling of ongewenste verskansing. Capital toekenning is belangrik te doen wat jy kapitaal gelykop verdeel tydens gereelde tussenposes of beloon die wenners met meer kapitaal As jy weet watter produkte jy wil om handel te dryf, vind geskikte handel platforms vir hierdie produkte. leer dan die programmeertaal API van hierdie platform / backtesters. As jy begin, sal ek Quantopian (slegs aandele), Quantconnect (aandele en FX) of Meta Trader 4 (FX en CFD's op ekwiteit indekse, aandele en kommoditeite) beveel. Die programmeertale gebruik is onderskeidelik Python, C en MQL4. 4. Data Management vullis in garbage out. Onakkurate data lei tot onakkurate toetsresultate. Ons moet redelik skoon data vir akkurate toets. Die skoonmaak van data is 'n trade-off tussen koste en akkuraatheid. As jy meer akkurate data wil, wat jy nodig het om meer tyd (tyd geld) te spandeer skoonmaak nie. Sommige kwessies wat vuil data veroorsaak sluit ontbrekende data, dubbele data, verkeerde data (slegte bosluise). Ander kwessies wat lei tot misleidende inligting sluit dividende, voorraad split en futures rollovers ens 5. Risikobestuur Daar is 2 hooftipes risiko: Markrisiko en operasionele risiko. Markrisiko behels risiko wat verband hou met jou handel strategie. Maak dit oorweeg ergste geval scenario Wat gebeur as 'n swart swaan gebeurtenis soos die Tweede Wêreldoorlog 3 gebeur Het jy verskans weg ongewenste risiko is jou posisie te hoog Benewens die bestuur van markrisiko sizing, moet jy kyk na operasionele risiko. Stelsel crash, verlies van die internet te verbind, swak uitvoering algoritme (wat lei tot swak uitgevoer pryse, of gemis ambagte as gevolg van onvermoë om requotes / hoë glip hanteer) en diefstal deur hackers is baie werklike kwessies. 6. Live uitvoering back testing en live handel is baie anders. Jy moet om behoorlike makelaars (MM vs STP vs ECN) te kies. Forex mark Nuus met Forex Trading Forum amp Forex Brokers Resensies is jou beste vriend, lees makelaar resensies daar. Jy moet behoorlike infrastruktuur (veilige Skynprivaatnetwerk en stilstand hantering ens) en evaluering prosedures (monitor jou robots prestasie en hulle te ontleed met betrekking tot die mark ondoeltreffendheid / backtests / op timisations) om jou robot te beheer regdeur sy leeftyd. Jy moet weet wanneer om in te gryp (verander / werk / afsluit / t urn op jou robots) en wanneer om nie te. Evaluering en die optimalisering van handel strategieë Pardo (Groot insigte oor metodes op te bou en toets handel strategieë) Handels - jou pad na finansiële vryheid Van K Tharp (Belaglik-Click aas titel ter syde stel, hierdie boek is 'n groot oorsig meganiese handel stelsels) Kwantitatiewe Trading Ernest Chan (Groot inleiding tot algo handel op 'n kleinhandel-vlak.) Trading en die uitruil: Market micro vir Praktisyns Larry Harris (mark mikrostruktuur is die wetenskap van hoe ruil funksioneer en wat eintlik gebeur wanneer 'n bedryf geplaas word Dit is belangrik om hierdie inligting om te weet. selfs al is jy net begin) Algorithmic Trading amp DMA Barry Johnson (lig werp op banke uitvoering algoritmes. dit is nie direk van toepassing jou algo handel, maar dit is goed om te weet) Die kwantitatiewe Scott Patterson (Oorlog stories van 'n paar top kwantitatiewe. goeie . as 'n slaaptyd lees) Quantopian (Kode, navorsing, en bespreek idees met die gemeenskap gebruik Python) Grondbeginsels van Algo Trading AlgoTrading101 (Disclaimer: Ek het hierdie site / loop. Leer robot ontwerp teorieë, teorieë en kodering. Gebruik MQL4) - Neem deel aan die uitdaging (Hier handel konsepte en back testing teorieë Hulle het onlangs hul eie back testing en verhandelingsplatform ontwikkel sodat hierdie deel is nog nuut vir my, maar hul kennis op die handel konsepte goed) Aanbeveel Blogs / Forum (hierdie... sluit finansies, handel en algo handel forums): Aanbevole Programmering Tale: As jy weet watter produkte jy wil om handel te dryf, vind geskikte handel platforms vir hierdie produkte. leer dan die programmeertaal API van hierdie platform / backtesters. As jy begin, sal ek Quantopian (slegs aandele), Quantconnect (aandele en FX) of Meta Trader 4 (FX en CFD's op ekwiteit indekse, aandele en kommoditeite) beveel. Die programmeertale gebruik is onderskeidelik Python, C en MQL4. 11k Views middot View upvotes middot Nie vir Reproduksie Hoewel dit 'n baie breë onderwerp met verwysings na die bou van algoritmes, die opstel van infrastruktuur, batetoewysing en risikobestuur, maar ek sal net fokus op die eerste deel van hoe die werk op die bou van ons eie algoritme moet wees, en die regte dinge doen. 1. gebou strategie. Sommige van die belangrikste punte om daarop te let is: Vang groot tendense - 'n Goeie strategie moet in al die gevalle, geld maak wanneer die mark is trending. Markte gaan met 'n goeie tendens wat slegs 15-20 van die tyd duur, maar dit is die tyd wanneer al die katte en honde (handelaars uit alle tydraamwerk, intraday, daaglikse, weeklikse, langtermyn) uit inkopies doen en hulle het almal het een gemeenskaplike tema. Baie handelaars ook bou gemiddelde terugkeer strategieë waarop hulle probeer om toestande te oordeel wanneer die prys ver van die gemiddelde beweeg, en neem 'n handel teen die tendens, maar hulle moet gebou word as jy suksesvol te bou en verhandel 'n paar goeie tendens volgende stelsels . Kans van stapel up - Mense werk dikwels teenoor probeer om 'n stelsel wat 'n uitstekende oorwinning / verlies-verhouding het, maar that039s nie die regte benadering te bou. Byvoorbeeld 'n algo met 'n wenner van 70 met 'n gemiddelde wins van 100 per handel en gemiddelde verlies van 200 per handel sal maak net 100 per 10 ambagte (10 / handel netto). Maar 'n algo met 'n wenner van 30 met 'n gemiddelde wins van 500 per handel en die verlies van 100 per handel sal 'n netto wins van 800 vir 10 ambagte (80 / handel). Dit is dus nie nodig dat wen / verlies-verhouding goeie moet wees, eerder it039s die kans van stapel wat beter behoort te wees. Dit gaan deur te sê quotKeep verliese klein, maar laat julle wenners runquot. quotIn belê, wat gemaklik is selde profitable. quot - Robert Arnott Onttrekking - Onttrekking is onvermydelik, as jy volg 'n tipe van strategie. Dus, terwyl die ontwerp van 'n algo don039t probeer om die onttrekking te verminder of doen 'n paar spesifieke persoonlike toestand om te sorg van daardie onttrekking. Dit spesifieke toestand kan in die toekoms kan optree as 'n padblokkade in 'n groot tendens vang en jou algo kan swak presteer. Risikobestuur - Wanneer die bou van 'n strategie, moet jy altyd 'n uitgangshek, ongeag die mark verkies om te doen. Die mark is 'n plek van stryd en jy moet 'n algo ontwerp om jou uit 'n bedryf te kry so gou as moontlik indien dit doesn039t pas by jou risiko-aptyt. Gewoonlik word geargumenteer dat jy moet waag 1-2 van kapitaal in elke handel, en optimaal in 'n baie maniere as selfs as jy Arnd 10 valse ambagte in opvolging van jou kapitaal sal daal deur net 20.But kry dit nie die geval in werklike mark scenario. Sommige losprys ambagte sal wees tussen 0-1, terwyl sommige kan gaan na 3-4, dus is dit beter om 'n gemiddelde losprys kapitaal per handel en die maksimum kapitaal wat jy kan verloor in 'n ambag te definieer, soos markte is heeltemal lukraak en can039t geoordeel . quotEvery keer in 'n rukkie, die mark doen iets so dom dit neem jou asem away. quot - Jim Cramer 2. Toets en die optimalisering van 'n strategie glip. Wanneer ons die toets van 'n strategie op historiese data, ons is onder die aanname dat die orde by die voorafbepaalde prys aangekom by die algo sal uitgevoer word. Maar dit sal nooit die geval wees, as ons te doen het met die mark makers en HFT algo039s nou. Jou bestelling in today039s wêreld sal nooit uitgevoer word op die gewenste prys, en sal daar glip wees. Dit moet ingesluit word in die toets. Mark Impact: Aantal dag deur die algo is nog 'n belangrike faktor in ag geneem word terwyl hulle back-toets en die invordering van historiese resultate. As die volume van die bestellings geplaas deur algo sal aansienlike mark impak en die gemiddelde prys van vol orde het verhoog sal baie anders wees. Jou algo volkome kan verskillende resultate te lewer in werklike marktoestande, as jy nie die volume dinamika jou algo het sal bestudeer. Optimalisering: Die meeste handelaars stel voor dat jy nie te kurwe doen pas en oor optimalisering en hulle is korrek as die markte is 'n funksie van stogastiese veranderlikes en geen twee situasie sal ooit weer dieselfde wees nie. So optimalisering parameters vir spesifieke situasies is 'n slegte idee. Ek stel voor jy gaan vir Sone Optimization. Dit is 'n tegniek wat ek volg, koop identifisering sones wat soortgelyke eienskappe in terme van wisselvalligheid en volume het. Optimaliseer hierdie gebiede afsonderlik, eerder as om die optimalisering vir die hele tydperk. Bogenoemde is 'n paar van die mees basiese en belangrikste stappe wat ek volg, wanneer die omskakeling van 'n basiese gedagte in 'n algoritme en die nagaan van it039s geldigheid. quot Elkeen het die breinkrag om die aandelemark te volg. As jy dit gedoen deur middel van die vyfde-graad wiskunde, kan jy dit doen. quotPeter Lynch 14.5k Views middot View upvotes middot Nie vir reproduksie begin met die basiese beginsels, kry 'n greep van Amibroker (AmiBroker - Aflaai). Amibroker het 'n maklike taal en kragtige backtest enjin waar jy jou idees kan prototipe leer. Ook kry Howard Bandy 039s boek Kwantitatiewe Trading Systems. Hierdie boek is 'n baie goeie inleiding tot die konsepte van Quant ontwikkeling. You039ll ten minste 'n basiese kennis van statistiek moet ook. Daar is baie van die goeie was sekerlik kursusse wat beskikbaar is vir hierdie gratis. Soos hierdie een Statistiek Een - Princeton Universiteit Coursera It039s ook die moeite werd om na aanleiding van die hele straat. Dit is 'n mashup van al die quant blogs, van wie baie publiseer Amibroker kode met hul idees. Van daar, it039s dan die moeite werd om te leer Python (leer luislang - Google Search), en ook besig met Andrew Ng039s uitstekende Stanford Universiteit masjienleer kursus, wat loop vir gratis op Coursera. As jy dan wil jou eie algoritmes op die proef gestel, 'n goeie plekke vir wat Quantconnect of Quantopian. Ten slotte, hierdie man het 'n paar goeie raad oor draai dit in jou loopbaan www. quantstart / Sterkte met die pad gedeeltelik uit Alan Clement039s antwoord op Hoe kan 'n sagteware ontwikkelaar in finansies 'n quant ontwikkelaar 14.4K Views middot View upvotes middot Nie vir reproduksie Gegewe dat ek 'n rekenaarwetenskap grad wat 'n ultra High Frequency Trading System van nuuts af gebou, ek dink ek kan programmeerders perspektief by te voeg tot 'n paar baie fantastiese antwoorde oor hoe om te gaan oor die bou van 'n algoritmiese handel stelsel. Daar is eintlik net 3 groot blokke in 'n Algo Trading System (ATS) 1. Mark data Handler (bv FAST hanteerder) 2. Strategie Module (bv crossover strategie) 3. Bestel Router (bv FIX router) jy kan Risiko Module by óf voeg die strategie module of die Orde Router module of beide. Solank jou data vloei korrek is, moet jy goed om te gaan. Onthou as jy die ontwerp van 'n ATS vir minimum latency, die toevoeging van meer lae of kompleksiteit sal dit verhoog. Minimale ATS argitektuur en as jy die klokkies en fluitjies voeg, sou dit 'n bietjie kompleks kry: As jy ook geïnteresseerd in die nitty-gritty van die implementering van die bogenoemde argitektuur, moet jy die volgende dinge in gedagte te hou. Vermy slotte / mutexes. In die geval het jy om dit te gebruik, probeer om hulle te vervang met lockless strukture met behulp van Atomics. Daar is n paar biblioteke beskikbaar vir lockless datastrukture (bv libcds, concurrency kit ens). C-11 ondersteun st :: atoom. en jy moet daarna streef om dit te gebruik as well. As jy mik vir 'n lae latency, vermy whats gedoen Quickfix. Sy geskryf vir veiligheid / soepelheid / reusab ility as voorwerp (slot) skepping en vernietiging vir elke oproep van enige boodskap aan router gedoen. Sekerlik geen manier om 'n latency sensitiewe kode te skryf. Geen runtime geheuetoekenning. runtime pad moet persoonlike en uitsluiting gratis geheuebestuur gebruik met pre-toegeken geheue swembad. Al die inisialisering kan gedoen word in vervaardigerskampioenskap. Stywe koppeling. Threading model, I / O-model en geheue bestuur moet ontwerp word om saam te werk met mekaar om die beste algehele prestasie te bereik. Dit druis in teen die OOP konsep van los koppeling, maar sy nodig om runtime koste van dinamiese polimorfisme te vermy. Gebruik Templates. In dieselfde trant, sal ek ook voor dat jy kyk na C templatization om buigsaamheid van kode te bereik. Met so baie nuwe funksies om templates bygevoeg C11, sou dit 'n misdaad om dit nie te gebruik vir die toevoeging van buigsaamheid. OS / Hardware optimalisering Uiteindelik, moet jy kyk om te werk met Linux RT kern en Solarflare netwerkkaart met OpenOnLoad bestuurder vir die bereiking van die minimum latency. jy kan verder kyk na die CPU isoleer en uit te voer jou program op daardie spesifieke kern. As 'n lae latency is nie wat jy mik, is daar variasies van hulpbronne ATS vrylik beskikbaar op die net bv Quickfix (C), Marketcetera (Java). Baie van die ander verskaffers bied ook back testing en handel module wat styf is, tesame met hul eie back ends. Populêre is Quantconnect, Quantiacs, Interaktiewe Broker, Wealth Lab, TradeStation en AmiBroker. Quantopian gebruik Zipline, wat is 'n oop bron-luislang gebaseer biblioteek, en steeds baie gewild. Aan die ander kant, daar is geen beter manier om te leer as wat dit bou jouself. Noudat dit gesê is, as jy begin met die bou van nuuts af, terwyl jy baie leer, maar jy sal ook uiteindelik besteding baie tyd (paar maande). En as jy gereed is om jou tyd om te belê is, sou ek jou ook aanraai om die nuanses van ATS en algoritmiese handel in die algemeen te leer voor die aanvang van so 'n stelsel te bou. Trouens, het n paar van my studente het onlangs geskep hul eie handel stelsels - www. quantinsti / blog / e. . In die geval is dit interessant klink, kan jy check www. quantinsti / epat / vir meer besonderhede. 1.2k Views middot View upvotes middot Nie vir ReproductionStickin Dit om die Nerds: Die bou van 'n hoë-frekwensie Trading stelsel as 'n kind, het jy al ooit droom om 'n nerd ek didnt so dink. Maar oor die afgelope paar jaar, hoeveel glimlag mense het wat jy sien in die finansiële nuus wat soos, wel, nerds geskool in rekenaar teorie, wiskunde, fisika, wat ook al, hierdie nerds was in die nuus vir die maak van 'n klomp geld met gekyk gerekenariseerde beurs: hoë-volume, split-sekonde,-masjien gedryf koop en verkoop wat genette miskien 0,05 per 100 aandele. Wat nie die geval klink soos 'n klomp geld, maar vermenigvuldig met honderde duisende aandele oor duisende ambagte per dag, en dit begin optel. Trouens, dit is verantwoordelik vir die meerderheid van vandag se voorraad handel volume. En as jy oorskakel op jou onvoldoende laptop, kan jy dalk wonder, is dit wat ek moet doen om geld te handel Kort antwoord maak: No. Langer antwoord: Absoluut geen. Nerd Afwerend Medium Wat daardie stories havent het jy is dat die onlangse skerp swaai in wisselvalligheid baie mense wat gerekenariseerde handel te ontwikkel om hul strategieë te heroorweeg het gedwing. Die kort termyn, back-en-weer prysbewegings wat gerekenariseerde handel veronderstel is om te vang het meer uni-directional, en het 'n paar handelaars met 'n groot verlies van poste verlaat. Goed dan, vra jy, indien nie 'n hoë-frekwensie, gerekenariseerde handel, dan wat jy 'n strategie-gebaseerde benadering tot handel nodig het, sodat ongeag die voorraad of indeks, ongeag van die markomgewing, jy 'n benadering tot die vind van en die uitvoering het ambagte wat sin maak. Met ander woorde, 'n stelsel. Dit beteken dat jy nodig het om 'n stel reëls wat jy volg vir die kry in en uit van die ambagte elke keer, eerder as om net te skiet uit die heup te skep. Jou stelsel kan nie altyd uitdraai as wat jy verwag, of altyd geld te maak, maar jy sal 'n plan vir die plasing van ambagte. Jy mag nie jou foto te kry in die finansiële nuus, maar miskien betaal sal jy jou rekeninge en nog tyd om 'n normale persoon wees. Bou 'n 1-2-3 System So, hoe kan jy dit goed te doen, om te begin, as jy reeds die thinkorswim platform gelaai op jou laptop, jy het gereedskap tot jou beskikking wat ontwerp is om meer as wat die meeste van die Wall bied Street nerds het. Ernstig. En jy gaan aan dié gereedskap gebruik om ambagte wat voldoen aan die volgende drie kriteria te vind: 2. Positiewe tyd verval 3. Gunstige kans Kom elkeen af ​​te breek. Dit beteken nie saak wat die voorraad of indeks doen, of dit gaan op groot, af groot of nêrens glad, jou maksimum potensiële verlies is bekend voordat jy selfs die handel te doen. Byvoorbeeld, het 'n kort oproep vertikale risiko omskryf. 'N Kort naak oproep nie. Met die kort vertikale, die maksimum verlies is die verskil tussen die staking pryse minus die krediet ontvang. Dis dit. Met 'n naakte kort oproep, dont jy regtig weet wat jou maksimum verlies kan wees. Selfs as jy dink jy sal gebruik om 'n aftrekorder aan die kort oproep terug te koop indien die verlies raak te groot, wat as die voorraad gapings te oornag wanneer jy kan nie handel Stick met 'n gedefinieerde-risiko ambagte. 2. Positiewe Tyd Bederf Behalwe die dood en belasting, die enigste ander ding wat jy kan reken op is tyd verbygaan. En as dit nie die geval is, weve al het groter probleme. As gevolg van dat onvermydelikheid, jy wil tyd verby aan jou kant. Dit beteken dat jy jou posisies om positiewe tyd verval het, sodat alle ander dinge gelyk, eendag verby beteken dat jou posisie is die moeite werd om 'n bietjie meer. Positiewe tyd verval kom gewoonlik van 'n kort opsie iewers in die posisie. Dit nie die geval 'n blote kort (sien maatstaf 1) te wees, maar as deel van 'n verspreiding soos 'n kort vertikale, lang kalender. of yster Condor. 'n kort opsie sal tyd sit aan jou kant. 3. Gunstige kans Maak nie saak hoeveel navorsing wat jy doen, is die waarskynlikheid van 'n voorraad of indeks beweeg op of af is 50. Maar jy nie wil jou handel te afhanklik van die flip van 'n muntstuk. Die pad na die kans tip in jou guns is met slimmer strategie seleksie. Dit begin deur te soek die opsie ketting vir 'n korter termyn verstryk en 'n hoë waarskynlikheid van verval waardeloos. Dit sal jou laat versprei dat minder afhanklik van wat reg op rigting en meer op premium verval skep. Goed, nou Wat Nie te nerdy, is dit Kom ons draai die teoretiese in praktiese met 'n paar van die werklike lewe voorbeelde vir beide die voorraad en opsies handelaar. Die Stock Trader Julle n voorraad handelaar. Miskien is jy nie heeltemal gereed vir al die opsie verspreiding dinge. So, hoe doen die drie kriteria work for you As jy lank voorraad, jy reeds weet wat jou maksimum potensiële verlies indien die voorraad gaan na nul. Selfs al is die risiko 'n baie groot aantal sou wees, Ill argumenteer dat dit gedefinieer op sy eie manier. Dis maatstaf 1. Vir 2, kyk jy na 'n kort gedek oproep teen daardie lang voorraad te skep om jou 'n paar positiewe tyd verval gee. Wanneer jy kort 'n oproep teen jou lang voorraad, vir elke dag wat die aandeelprys nie die geval skuif, wat kort oproep gaan goedkoper en goedkoper te kry en maak dat jy 'n bietjie geld. Vir 3, kry die kans aan jou kant beteken die verkoop van 'n out-of-the-geld oproep dat 'n waarskynlikheid van verval waardeloos van ongeveer 60, wat jy kan doen van TD Ameritrades thinkorswim verhandelingsplatform (Figuur 1 hieronder) het. Die voorraad kan opstaan ​​om die trefprys van die kort oproep deur verstryking, en die oproep sal steeds verval waardeloos. Dit verminder die koste basis van jou lang voorraad, wat ook verlaag sy gelykbreekpunt. Dit beteken dat die voorraad kan 'n groter beweging af te maak, en jy kan nog steeds nie geld verloor. In thinkorswim, sien die waarskynlikheid van 'n opsie verval in-die-geld (ITM). Hier, 'n oproep met 'n 34 waarskynlikheid van verval ITM is dieselfde as om te sê dit het 'n 66 waarskynlikheid van verval waardeloos. Slegs ter illustrasie doeleindes. Die Options Trader Julle slaggereed om ontslae te gaan met opsies, maar jy nie seker is of jy moet lomp of lomp op 'n bepaalde voorraad of indeks wees. Moenie sweet die rigting van die voorraad. Die gebruik van die drie kriteria, kan jy 'n strategie wat nog geld selfs al is jy verkeerd op jou directional verbintenis kan maak vind. Kom ons kyk hoe. In die eerste plek begin met 'n paar rigtinggewende vooroordeel van die aandeel of indeks. Miskien is sy op grond van tegniese of fundamentele analise, of dalk jou gunsteling praat kop op TV voorgestel. Op pad was na 'n kort vertikale verspreiding (kriteria 1 en 2) 'n kort oproep vertikale skep as jy 'n lomp vooroordeel, of 'n kort stel vertikale as jy 'n lomp vooroordeel. Begin deur die vind van die verstryking van 25 tot 45 dae. Vir kriteria 3 As julle lomp, vind die out-of-the-geld kort oproep dat 'n 60-70 kans verval waardeloos het. As julle lomp, oorweeg om die out-of-the-geld kort sit dit 'n waarskynlikheid van verval waardeloos van tussen 60 en 70 het. Om 'n kort oproep skep vertikale, oorweeg die koop van die opsie oproep dis een staking verdere buite-die-geld as jou kort oproep. Om 'n kort put skep vertikale, oorweeg die koop van die verkoopopsie dis een staking verdere buite-die-geld as jou kort plaas. Nou, hier is wat kan gebeur. Met die kort oproep out-of-the-geld vertikale as die voorraad afbeweeg deur verstryking, jy geld maak. As die voorraad bly dieselfde deur verstryking, jy geld maak. As die voorraad beweeg op verby die kort staking van die kort oproep vertikale, sal jy waarskynlik geld verloor. Maar as dit net gaan 'n bietjie, nie so hoog soos die kort staking van die kort oproep vertikale, jy kan nog steeds geld maak. Die kort verkoopopsie werk op dieselfde manier, maar verloor geld indien die voorraad afbeweeg verby die kort staking van die kort sit vertikale. Dit is nie 'n dwaas-bewys, gewaarborgde manier om geld te maak handel. Maar dit is beter as die vergadering op die kantlyn, gefrustreerd en verward deur nie in staat is om die manier waarop jy dink die Wall Street voor - doen dit handel. Elke handel jy maak op grond van hierdie kriteria sal redenasie agter dit. En selfs al is die handel geld verloor, sal jy weet presies hoeveel en hoekom. Dis om 'n opgevoede handelaar. In plaas van 'n nerd. Het jy thinkorswim As jy hoef nie thinkorswim om waarskynlikhede, waarvoor wag jy nog vir Check uit wat sy alles oor amp deel te neem aan die pret te ontleed. Multi-been opsie-strategieë soos dié in hierdie artikel bespreek sal bykomende koste as gevolg van die bykomende stakings verhandel het. Maak seker dat jy al die risiko's wat betrokke is by elke strategie, transaksiekoste ingesluit verstaan, voordat jy probeer om 'n bedryf te plaas. Wees bewus daarvan dat opdrag op kort opsie-strategieë in hierdie artikel bespreek kan lei tot ongewenste lang of kort posisies op die onderliggende sekuriteit. Markonbestendigheid, volume, en beskikbaarheid stelsel kan toegang tot jou rekening en handel teregstellings vertraag. Vorige prestasie van 'n sekuriteit of strategie waarborg nie toekomstige resultate of sukses. Opsies is nie geskik vir alle beleggers as die spesiale risiko's wat inherent is aan handel opsies beleggers om potensieel vinnige en aansienlike verliese kan blootstel. handel opsies onderhewig aan TD Ameritrade hersiening en goedkeuring. Lees Eienskappe en risiko's van gestandaardiseerde Options voor te belê in opsies. Ondersteunende dokumentasie vir enige eise, vergelykings, statistieke, of ander tegniese data sal verskaf word op aanvraag. Die inligting is nie bedoel om beleggingsadvies word of as 'n aanbeveling of onderskrywing van 'n bepaalde belegging of beleggingstrategie, en is slegs vir illustratiewe doeleindes. Maak seker dat jy al die risiko's wat betrokke is by elke strategie, insluitend kommissie koste te verstaan, voordat jy probeer om 'n bedryf te plaas. Kliënte moet oorweeg alle relevante risikofaktore, insluitend hul eie persoonlike finansiële situasies, voordat die saak. TD Ameritrade, Inc. lid FINRA / SIPC. TD Ameritrade is 'n handelsmerk gesamentlik besit word deur TD Ameritrade IP Company, Inc en die Toronto-Dominion Bank. 2016 TD Ameritrade IP Company, Inc. Alle regte voorbehou. Gebruik met toestemming. Inconceivable. Best Programmering taal vir Algorithmic Trading Systems Deur Michael Saal-Moore op 26 Julie 2013 Een van die mees algemene vrae wat ek ontvang in die QS Koevert is Wat is die beste programmeertaal vir algoritmiese handel. Die kort antwoord is dat daar geen beste taal. Strategie parameters, prestasie, modulariteit, ontwikkeling, veerkragtigheid en koste moet al oorweeg. In hierdie artikel sal uiteensetting van die nodige komponente van 'n algoritmiese handel stelsel argitektuur en hoe besluite oor die implementering invloed op die keuse van taal. Eerstens, sal die belangrikste komponente van 'n algoritmiese handel stelsel in ag geneem word, soos die navorsing gereedskap, portefeulje-optimaliseerder, risikobestuurder en uitvoering enjin. Daarna sal verskillende handel strategieë ondersoek word en hoe hulle invloed op die ontwerp van die stelsel. In die besonder die frekwensie van die saak en die waarskynlike handel volume sal beide bespreek word. Sodra die handel strategie gekies is, is dit nodig om argitek die hele stelsel. Dit sluit in die keuse van hardeware, die bedryfstelsel (s) en stelsel veerkragtigheid teen seldsame, potensieel katastrofiese gebeure. Terwyl die argitektuur oorweeg word, moet daar behoorlik ag gegee word aan prestasie - beide om die navorsing gereedskap sowel as die lewendige uitvoering omgewing. Wat is die handel stelsel probeer om te doen voordat jy besluit op die beste taal waarmee 'n outomatiese handel stelsel is dit nodig om die vereistes te definieer skryf. Is die stelsel gaan suiwer uitvoering gebaseer Sal die stelsel vereis dat 'n risikobestuur of portefeulje konstruksie kursus sal die stelsel vereis dat 'n hoë-prestasie backtester Vir die meeste strategieë die handel stelsel kan verdeel word in twee kategorieë wees: Navorsing en sein generasie. Navorsing handel oor evaluering van 'n strategie prestasie oor historiese data. Die proses van evaluering van 'n handel strategie oor data voor mark staan ​​bekend as back testing. Die grootte van data en algoritmiese kompleksiteit sal 'n groot impak op die rekenaarmatige intensiteit van die backtester het. CPU spoed en samelopendheid is dikwels die beperkende faktore in die optimalisering van uitvoering navorsing spoed. Sein generasie is gemoeid met die opwekking van 'n stel van handel seine van 'n algoritme en sulke bestellings stuur na die mark, gewoonlik deur 'n makelaar. Vir sekere strategieë 'n hoë vlak van prestasie vereis. I / O kwessies soos netwerk bandwydte en latency is dikwels die beperkende faktor in die optimalisering van die uitvoering stelsels. So die keuse van tale vir elke komponent van jou hele stelsel kan heel anders wees. Tipe, frekwensie en volume van Strategie Die tipe algoritmiese strategie in diens sal 'n aansienlike impak op die ontwerp van die stelsel het. Dit sal nodig wees om te oorweeg die markte verhandel word, die konneksie na eksterne data verskaffers, die frekwensie en volume van die strategie, die kompromis tussen gemak van ontwikkeling en verbetering van die prestasie, sowel as enige persoonlike hardeware, insluitend mede geleë persoonlike bedieners, GPU's of FPGAs wat nodig mag wees. Die tegnologie keuses vir 'n lae-frekwensie Amerikaanse aandele strategie sal grootliks verskil van dié van 'n hoë-frekwensie statistiese arbitrage strategie handel oor die termynmark wees. Voor die keuse van taal baie data verskaffers moet geëvalueer alledaagse n strategie aan die hand. Dit sal nodig wees om verbinding met die verkoper, struktuur van enige APIs, tydigheid van die data, bergingsvereistes en veerkragtigheid te oorweeg in die lig van 'n ondernemer gaan af. Dit is ook wys om 'n vinnige toegang tot verskeie verskaffers in besit te neem Verskeie instrumente almal hul eie stoor eienaardighede, voorbeelde van wat insluit verskeie ENKELE simbole vir aandele en verval datums vir Toekomsnavorsing (nie aan enige spesifieke OTC data te noem). Dit moet ingereken in die platform ontwerp. Frekwensie van strategie is waarskynlik een van die grootste oorsake van hoe die tegnologie stapel sal gedefinieer word nie. Strategieë in diens data meer dikwels as fyn of tweedens bars vereis betekenisvolle ag met betrekking tot prestasie. 'N Strategie oorskry tweedens bars (bv merk data) lei tot 'n prestasiegedrewe ontwerp as die primêre vereiste. Vir 'n hoë frekwensie strategieë 'n aansienlike bedrag van die mark data sal moet word gestoor en geëvalueer. Sagteware soos HDF5 of KDB word algemeen gebruik vir hierdie rolle. Met die oog op die uitgebreide volumes van data wat nodig is vir HFT aansoeke te verwerk, moet 'n groot skaal new backtester en uitvoering stelsel gebruik word. C / C (moontlik met 'n paar assembler) is geneig om die sterkste taal kandidaat. Ultrahoëfrekwensie strategieë sal ongetwyfeld vereis persoonlike hardeware soos FPGAs, ruil mede-plek en kernal / netwerk koppelvlak tuning. Navorsing Systems Research stelsels tipies behels 'n mengsel van interaktiewe ontwikkeling en outomatiese script. Die voormalige vind dikwels plaas in 'n IDE soos Visual Studio, Matlab of R Studio. Laasgenoemde behels uitgebreide numeriese berekeninge oor talle parameters en data punte. Dit lei tot 'n taalkeuse verskaffing van 'n eenvoudige omgewing te toets kode, maar bied ook voldoende prestasie om strategieë oor verskeie parameter dimensies evalueer. Tipiese Ides in hierdie ruimte sluit Microsoft Visual C / C, wat uitgebreide ontfouting nuts,-kode voltooiing vermoëns bevat (via IntelliSense) en eenvoudige oorsigte van die hele projek stapel (via die databasis ORM, LINQ) Matlab. wat ontwerp is vir 'n uitgebreide numeriese lineêre algebra en gevectoriseerd bedrywighede, maar in 'n interaktiewe konsole wyse R Studio. wat vou die R statistiese taal konsole in 'n volwaardige IO Eclipse IDE vir Linux Java en C en semi-eiendom Ides soos Enthought Canopy vir Python, wat data-analise biblioteke soos Numpy sluit. Scipy. scikit-leer en pandas in 'n enkele interaktiewe (konsole) omgewing. Vir numeriese back testing, al die bogenoemde tale is geskik, maar dit is nie nodig om 'n GUI / IDE gebruik as die kode in die agtergrond sal uitgevoer word. Die eerste oorweging in hierdie stadium is dat van die uitvoering spoed. A saamgestel taal (soos C) is dikwels nuttig as die back testing parameter dimensies is groot. Onthou dat dit nodig versigtig vir sulke stelsels te wees is as wat die saak gevolge het verduidelik tale soos Python dikwels gebruik van 'n hoë-prestasie biblioteke soos Numpy / pandas vir die back testing stap maak, ten einde 'n redelike mate van mededingendheid te behou met saamgestel ekwivalente. Uiteindelik is die wat gekies is vir die back testing taal sal bepaal word deur spesifieke algoritmiese behoeftes sowel as die verskeidenheid van biblioteke beskikbaar in die taal (meer op wat hieronder). Tog kan die taal wat gebruik word vir die backtester en navorsing omgewings heeltemal onafhanklik van dié wat in die portefeulje konstruksie, risikobestuur en uitvoering komponente, soos gesien sal word. Portefeulje Konstruksie en Risikobestuur Die portefeulje konstruksie en risikobestuur komponente word dikwels oor die hoof gesien deur kleinhandel algoritmiese handelaars. Dit is byna altyd 'n fout. Hierdie gereedskap verskaf die meganisme waardeur kapitaal sal bewaar word. Hulle het nie net probeer om die aantal riskant verbintenis te verlig, maar ook hulself te verminder kansellasies van die ambagte, die vermindering van transaksiekoste. Gesofistikeerde weergawes van hierdie komponente kan 'n beduidende invloed op die gehalte en consistentcy van winsgewendheid het. Dit is maklik om 'n stabiele strategieë as die portefeulje konstruksie meganisme en risikobestuurder skep kan maklik aangepas word om verskeie stelsels te hanteer. So moet hulle in aanmerking kom essensiële komponente aan die begin van die ontwerp van 'n algoritmiese handel stelsel. Die werk van die portefeulje konstruksie stelsel is om 'n stel van gewenste ambagte te neem en te produseer die stel van die werklike ambagte wat kansellasies te verminder, blootstelling aan verskeie faktore (soos sektore, bateklasse, wisselvalligheid ens) in stand te hou en te optimaliseer die toekenning van kapitaal na verskeie strategieë in 'n portefeulje. Portefeulje konstruksie verminder dikwels 'n lineêre algebra probleem (soos 'n matriks faktorisering) en vandaar prestasie is hoogs afhanklik van die doeltreffendheid van die numeriese lineêre algebra implementering beskikbaar. Gemeenskaplike biblioteke sluit uBLAS. LAPACK en NAG vir C. MatLab beskik ook op groot skaal new matriksbewerkings. Python gebruik Numpy / Scipy vir sulke berekeninge. 'N gereeld herbalanseer portefeulje sal 'n saamgestel (en goed new) matriks biblioteek vereis dat hierdie stap uit te voer, sodat dit nie die handel stelsel knelpunt. Risikobestuur is 'n ander baie belangrike deel van 'n algoritmiese handel stelsel. Risiko kan kom in baie vorms: Groter wisselvalligheid (hoewel dit as wenslik vir sekere strategieë kan gesien word), verhoogde korrelasies tussen bateklasse, teenparty verstek bediener kragonderbrekings, Black Swan gebeure en ongemerk foute in die handel kode, te noem 'n paar. Risikobestuur komponente probeer antisipeer die gevolge van oormatige wisselvalligheid en korrelasie tussen bateklasse en hul daaropvolgende effek (s) op die handel kapitaal. Dikwels is dit verminder tot 'n stel van statistiese berekeninge soos Monte Carlo stres toetse. Dit is baie soortgelyk aan die computational behoeftes van 'n afgeleide pryse enjin en as sodanig sal CPU-gebonde wees. Hierdie simulasies is hoogs parallelisable (sien onder), en 'n sekere mate, is dit moontlik om die hardeware te gooi by die probleem. Uitvoering Systems Die werk van die uitvoering stelsel is om gefiltreer handel seine van die portefeulje konstruksie en risikobestuur komponente ontvang en stuur hulle oor na 'n makelaar of 'n ander manier van toegang tot die mark. Vir die meerderheid van die kleinhandel algoritmiese handel strategieë behels dit 'n API of FIX verbinding met 'n makelaars soos Interaktiewe Brokers. Die primêre oorwegings wanneer jy moet besluit op 'n taal insluit gehalte van die API, taal-wrapper beskikbaarheid vir 'n API, uitvoering frekwensie en die verwagte glip. Die kwaliteit van die API verwys na hoe goed gedokumenteer is dit, watter soort prestasie dit bied, of dit moet selfstandige sagteware te verkry of 'n poort vasgestel kan word in 'n onthoofde mode (dit wil sê geen GUI). In die geval van Interaktiewe Brokers, die Trader WorkStation instrument moet hardloop in 'n GUI omgewing ten einde toegang tot hul API. Een keer het ek 'n lessenaar Ubuntu uitgawe installeer op 'n wolk bediener Amazon toegang Interaktiewe Brokers afstand, suiwer vir hierdie rede waarom die meeste API sal 'n C en / of Java koppelvlak verskaf. Dit is gewoonlik tot die gemeenskap te taalspesifieke omhulsels vir C, Python, R, Excel en MatLab ontwikkel. Let daarop dat met elke bykomende plugin gebruik (veral API omhulsels) is daar ruimte vir foute insluip in die stelsel. toets altyd plugins van hierdie soort en verseker dat hulle aktief in stand gehou. 'N waardevolle meter is om te sien hoeveel nuwe updates vir 'n kodebasis is gemaak in die afgelope maande. Uitvoering frekwensie is van die uiterste belang in die uitvoering algoritme. Let daarop dat honderde bestellings elke minuut kan gestuur word en as sodanig prestasie is van kritieke belang. Glip aangegaan sal word deur middel van 'n erg-presterende uitvoering stelsel en dit sal 'n dramatiese impak op winsgewendheid het. Staties-getik tale (sien onder) soos C / Java is oor die algemeen 'n optimale vir uitvoering maar daar is 'n trade-off in die ontwikkeling tyd, toetsing en gemak van die onderhoud. Dinamiese-getik tale, soos Python en Perl is nou algemeen vinnig genoeg. Maak altyd seker dat die komponente is ontwerp om in 'n modulêre wyse (sien onder), sodat hulle kan omgeruil uit die stelsel skale. Argitektoniese beplanning en ontwikkelingsproses Die komponente van 'n handel stelsel, die frekwensie en volume vereistes wat hierbo bespreek is, maar stelsel infrastruktuur het nog gedek moet word. Diegene wat optree as 'n kleinhandel handelaar of besig om in 'n klein fonds sal waarskynlik dra baie regeer. Dit sal die finale implementering van die stelsel wat nodig is om te wees wat die alfa model, risikobestuur en uitvoering parameters wees, en ook. Voordat delf in spesifieke tale die ontwerp van 'n optimale stelsel argitektuur bespreek sal word. Skeiding van Kommer Een van die belangrikste besluite wat by die begin moet word, is hoe om die belange van 'n handel stelsel te skei. In die ontwikkeling van sagteware, beteken dit in wese hoe om op te breek die verskillende aspekte van die handel stelsel in aparte modulêre komponente. Deur bloot koppelvlakke by elk van die komponente is dit maklik om te ruil uit dele van die stelsel vir ander weergawes wat prestasie hulp, betroubaarheid of onderhoud, sonder om die wysiging enige eksterne afhanklikheid kode. Dit is die beste praktyk vir sulke stelsels. Vir strategieë teen laer frekwensies sulke praktyke word aangeraai. Vir ultra hoë frekwensie handel die reëlboek mag hê om dit te ignoreer ten koste van die opstel van die stelsel vir nog meer prestasie. 'N Meer styf gekoppel stelsel wat wenslik mag wees. Die skep van 'n komponent kaart van 'n algoritmiese handel stelsel is 'n artikel op sigself die moeite werd. Maar 'n optimale benadering is om seker te maak daar is afsonderlike komponente vir die historiese en real-time mark data insette, data stoor, toegang tot die inligting API, backtester, strategie parameters, portefeulje konstruksie, risikobestuur en outomatiese uitvoering stelsels. Byvoorbeeld, as die data stoor wat gebruik is tans onderpresteer, selfs teen beduidende vlakke van optimalisering, kan dit omgeruil met 'n minimale herskryf om die data inname of toegang data-API. Sover die as backtester en daaropvolgende komponente betref, is daar geen verskil. Nog 'n voordeel van vervreem komponente is dat dit kan 'n verskeidenheid van programmeertale wat gebruik word in die algehele stelsel. Daar is geen rede om te beperk tot 'n enkele taal as die kommunikasie metode van die komponente is taal onafhanklik. Dit sal die geval wees indien hulle kommunikeer via die TCP / IP, ZeroMQ of 'n ander taal-onafhanklike protokol. As 'n konkrete voorbeeld, kyk na die geval van 'n back testing stelsel in C vir verwerking van syfers prestasie geskryf, terwyl die portefeuljebestuurder en uitvoering stelsels in Python geskryf met behulp van Scipy en IBPy. Prestasie oorwegings prestasie is 'n belangrike oorweging vir die meeste handel strategieë. Vir hoër frekwensie strategieë is dit die belangrikste faktor. Prestasie dek 'n wye verskeidenheid van onderwerpe, soos algoritmiese uitvoering spoed, netwerk latency, bandwydte, data I / O, concurrency / parallelisme en skalering. Elkeen van hierdie gebiede word individueel gedek deur groot handboeke, so hierdie artikel sal net krap die oppervlak van elke onderwerp. Argitektuur en taalkeuse sal nou in terme van hul effek op prestasie bespreek word. Die heersende wysheid soos deur Donald Knuth. een van die vaders van Rekenaarwetenskap, is dat voortydige optimalisering is die wortel van alle kwaad. Dit is byna altyd die geval nie - behalwe wanneer die bou van 'n hoë frekwensie handel algoritme Vir diegene wat belangstel in die laer frekwensie strategieë is, 'n gemeenskaplike benadering is om 'n stelsel te bou in die eenvoudigste manier moontlik en net optimaliseer as knelpunte begin om te verskyn. Profilering gereedskap gebruik om te bepaal waar knelpunte ontstaan. Profiele gemaak kan word vir al die bogenoemde faktore, hetsy in 'n MS Windows of Linux-omgewing. Daar is baie bedryfstelsel en taal gereedskap wat beskikbaar is om dit te doen, sowel as nuts derde party. Taalkeuse sal nou in die konteks van prestasie bespreek word. C, Java, Python, R en MatLab bevat almal 'n hoë-prestasie biblioteke (hetsy as deel van hul standaard of ekstern) vir basiese datastrukture en algoritmiese werk. C skepe met die Standard Sjabloon Biblioteek, terwyl Python bevat Numpy / Scipy. Gemeenskaplike wiskundige take te vinde in hierdie biblioteke en dit is selde voordelig vir 'n nuwe implementering skryf. Een uitsondering is wanneer hoogs persoonlike hardeware argitektuur vereis en 'n algoritme maak uitgebreide gebruik van eiendom uitbreidings (soos persoonlike caches). Maar dikwels heruitvinding van die wiel afval tyd dat 'n beter bestee kan word ontwikkel en die optimalisering van ander dele van die handel infrastruktuur. Ontwikkeling tyd is uiters kosbare veral in die konteks van uitsluitlike ontwikkelaars. Latency is dikwels 'n kwessie van die uitvoering stelsel as die navorsing gereedskap gewoonlik op dieselfde masjien. Vir die eerste keer nie kan latency voorkom by verskeie plekke langs die uitvoering pad. Databasisse moet geraadpleeg word (skyf / netwerk latency), seine moet gegenereer word (bedryfstelsel firmas, kernal boodskappe latency), handel seine gestuur (NIC latency) en bestellings verwerk (ruil stelsels interne latency). Vir hoër frekwensie bedrywighede is dit nodig om intiem vertroud is met kernal optimalisering asook die optimalisering van die netwerk oordrag geword. Dit is 'n diep gebied en is aansienlik buite die bestek van die artikel, maar as 'n UHFT algoritme dan verlang bewus te wees van die diepte van kennis wat nodig is Caching is baie nuttig in die toolkit van 'n kwantitatiewe handel ontwikkelaar. Caching verwys na die konsep van die stoor gereeld besoek data op 'n wyse wat toegang hoër-prestasie kan, ten koste van die potensiële staleness van die data. 'N Algemene gebruik geval kom voor in die web-ontwikkeling by die neem van die data van 'n skyf gerugsteun relasionele databasis en sit dit in die geheue. Enige daaropvolgende versoeke vir die data het nie na die databasis en so prestasie winste kan beduidend wees getref. Vir handel situasies kan caching uiters voordelig wees. Byvoorbeeld, kan die huidige stand van 'n strategie portefeulje bewaar word in 'n kas totdat dit herbalanseer, sodanig dat die lys nie die geval is moet herskep op elke lus van die handel algoritme. Sulke wedergeboorte is geneig om 'n hoë CPU of skyf I / O werking wees. Maar kas is nie sonder sy eie sake. Herlewing van die kas data in 'n keer, as gevolg van die volatilie aard van die kas stoor, kan beduidende vraag op infrastruktuur te plaas. Nog 'n probleem is hond-hei. waar verskeie generasies van 'n nuwe kas kopie onder uiters hoë lading, wat lei tot mislukking waterval gedra. Dinamiese geheuetoekenning is 'n duur operasie in uitvoering sagteware. Dit is dus noodsaaklik vir hoër prestasie handel aansoeke om goed bewus wees hoe geheue word toegeken en deallocated tydens program vloei. Nuwer taal standaarde soos Java, C en Python al uit te voer outomatiese vullisverwydering. wat verwys na deallocation van dinamiese toegeken geheue wanneer voorwerpe uitgaan van omvang. Vullisverwydering is baie nuttig tydens ontwikkeling as dit verminder foute en hulpmiddels leesbaarheid. Dit is egter dikwels sub-optimale vir sekere hoë frekwensie handel strategieë. Custom vullisverwydering word dikwels verlang vir hierdie gevalle. In Java, byvoorbeeld deur tuning die vullis versamelaar en hoop opset, is dit moontlik om 'n hoë werkverrigting vir HFT strategieë te verkry. C nie die geval bied 'n boorling vullis versamelaar en daarom is dit nodig om al geheuetoekenning / deallocation hanteer as deel van 'n implementering voorwerpe. Terwyl potensieel vatbaar fout (potensieel lei tot hangend wysers) is dit baie nuttig om fyn beheer van hoe voorwerpe verskyn op die hoop vir sekere aansoeke het. In algoritmiese handel strategie is in staat om te skaal as dit groter hoeveelhede kapitaal kan aanvaar en steeds lewer konsekwente opbrengste. 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.


No comments:

Post a Comment