Wednesday, 20 September 2017

Die Keuse Van 'N Platform Vir Back Testing En Outomatiese Uitvoering


Die keuse van 'n platform vir back testing en outomatiese uitvoering Deur Michael Saal-Moore op 26 Februarie 2014 In hierdie artikel word die konsep van outomatiese uitvoering bespreek sal word. In breë trekke is dit die proses van toe te laat 'n handel strategie, via 'n elektroniese verhandelingsplatform, handel uitvoering seine genereer sonder enige daaropvolgende menslike ingryping. Die meeste van die stelsels bespreek op QuantStart tot op datum is ontwerp as outomatiese uitvoering strategieë geïmplementeer word. Die artikel sal sagtewarepakkette en programmeertale wat beide back testing en outomatiese uitvoering vermoëns te beskryf. Die eerste oorweging is hoe om 'n strategie backtest. My persoonlike mening is dat persoonlike ontwikkeling van 'n back testing omgewing binne 'n eerste-klas programmeertaal bied die mees buigsaamheid. Aan die ander kant, sal 'n verkoper ontwikkel geïntegreerde back testing platform altyd moet aannames oor hoe backtests uitgevoer maak. Ten spyte hiervan, is die keuse van beskikbare programmeertale is groot en diverse, wat dikwels oorweldigend kan wees. Dit is nie voor ontwikkeling watter taal is waarskynlik geskik wees voor die hand liggend. Wanneer kodifisering 'n strategie in sistematiese reëls moet die kwantitatiewe handelaar vol vertroue dat sy toekomstige prestasie weerspieël sy prestasie in die verlede sal wees. Daar is oor die algemeen twee vorme van back testing stelsel wat gebruik word om hierdie hipotese te toets. In breë, word hulle geklassifiseer as navorsing terug testers en gebeurtenis-gedrewe terug testers. Ons sal oorweeg persoonlike backtesters teenoor verkoper produkte vir hierdie twee paradigmas en sien hoe hulle te vergelyk. navorsing gereedskap Wanneer die identifisering van algoritmiese handel strategieë is dit gewoonlik nie nodig om ten volle simualte alle aspekte van die mark interaksie. In plaas daarvan, kan benaderings gemaak word dat 'n vinnige bepaling van potensiële strategie prestasie lewer. Sulke navorsing gereedskap maak dikwels onrealistiese aannames oor transaksiekoste, waarskynlik pryse te vul, kortsluiting beperkings, venue afhanklikheid, risikobestuur en posisie sizing. Ten spyte van hierdie tekortkominge die verrigting van sodanige strategieë steeds effektief geëvalueer kan word. Algemene instrumente vir navorsing sluit MATLAB, R, Python en Excel. Hierdie sagteware pakkette skip met vectorisatie vermoëns wat vinnig uitvoering spoed en makliker strategie implementering toelaat. MATLAB en pandas is voorbeelde van gevectoriseerd stelsels. Met sulke navorsing gereedskap is dit moontlik om verskeie strategieë, kombinasies en variasies te toets in 'n vinnige, iteratiewe wyse, sonder die behoefte om ten volle "vlees uit" n realistiese mark interaksie simulasie. Terwyl sulke instrumente dikwels gebruik word vir beide back testing en uitvoering, hierdie navorsing omgewings is oor die algemeen nie geskik vir strategieë wat intraday handel benader teen hoër frekwensies op sub-minuut skaal. Hierdie biblioteke is geneig om nie in staat wees om effektief te verbind tot real-time mark data verskaffers of koppelvlak met makelaars API in 'n robuuste wyse. Ten spyte van hierdie uitvoeringsfase tekortkominge, is navorsing omgewings swaar gebruik binne die professionele kwantitatiewe handel bedryf. Hulle bied die "eerste konsep" vir alle strategie idees voor die bevordering na meer wettisch tjeks binne 'n realistiese back testing omgewing. Gebeurtenis gedrewe back testing Een keer 'n strategie geskik in navorsing geag moet dit meer realisties beoordeel. Sulke realisme poog om rekenskap te gee van die meerderheid (indien nie almal nie) van die in die vorige poste beskryf kwessies. Die ideale situasie is om in staat wees om dieselfde ambag generasie-kode vir historiese back testing asook lewendige uitvoering gebruik. Dit word bereik deur middel van 'n gebeurtenis gedrewe backtester. Gebeurtenis gedrewe stelsels word wyd gebruik in sagteware-ingenieurswese, wat algemeen vir die hantering van grafiese gebruikerskoppelvlak (GUI) insette binne-venster-gebaseerde bedryfstelsels. Hulle is ook ideaal vir algoritmiese handel dryf as die idee van real-time mark bestellings of handel vul kan saamgevat word as 'n geleentheid. Sulke stelsels word dikwels geskryf in 'n hoë-prestasie tale soos C ++, C # en Java. Dink aan 'n situasie waar 'n outomatiese handel strategie is gekoppel aan 'n real-time mark voer en 'n makelaar (hierdie twee kan een en dieselfde wees). Nuwe inligting mark sal aan die stelsel, wat 'n gebeurtenis snellers 'n nuwe handelsmerk sein en dus 'n uitvoering geval genereer gestuur. Hierdie stelsels hardloop in 'n deurlopende lus wag om gebeure te ontvang en te hanteer hulle gepas. Dit is moontlik om sub-komponente genereer soos 'n historiese data hanteerder en makelaars simulator, wat hul lewe eweknieë kan naboots. Dit laat back testing strategieë op 'n wyse uiters soortgelyk aan dié van lewende uitvoering. Die nadeel van sulke stelsels lê in hul ingewikkelde ontwerp in vergelyking met 'n eenvoudiger navorsing hulpmiddel. Vandaar "tyd om te bemark" is langer. Hulle is meer geneig tot foute en vereis dat 'n goeie kennis van programmering en sagteware-ontwikkeling metode. In ingenieurswese terme latency word gedefinieer as die tyd interval tussen 'n simulasie en 'n reaksie. In kwantitatiewe handel dit oor die algemeen verwys na die heen-en terugreis tydvertraging tussen die geslag van 'n uitvoering sein en die ontvangs van die vul inligting uit 'n makelaar wat voer die uitvoering. Sulke latency is selde 'n probleem op 'n lae-frekwensie interday strategieë. Die verwagte prys beweging tydens die latency tydperk sal geen invloed op die strategie om enige groot mate. Dieselfde is nie waar van hoër-frekwensie strategieë waar latency word uiters belangrik. Die uiteindelike doel in HFT is om latency so veel as moontlik te verminder om glip te verminder. Dalende latency behels die vermindering van die "afstand" tussen die algoritmiese handel stelsel en die uiteindelike aandelebeurs waarop 'n bevel word uitgevoer. Dit kan behels smeer die geografiese afstand tussen stelsels, en daardeur reis tye saam netwerk kabels verminder. Dit kan ook beteken die vermindering van die verwerking in netwerk hardeware of die keuse van 'n makelaar met meer gesofistikeerde infrastruktuur gedra. Baie makelaars meeding op latency om besigheid te wen. Dalende latency word eksponensieel duurder as 'n funksie van "internet afstand", wat gedefinieer word as die netwerk afstand tussen twee bedieners. So vir 'n hoë-frekwensie handelaar 'n kompromie bereik moet word tussen uitgawes van latency-vermindering en die wins van die vermindering glip. Hierdie kwessies sal in die afdeling oor onder Colocatie bespreek word. taalkeuses Sommige kwessies wat taalkeuse ry is reeds uiteengesit. Nou sal ons die voordele en nadele van individuele programmeertale te oorweeg. Ek het oor die algemeen geklassifiseer die tale in 'n hoë-prestasie / harder ontwikkeling vs laer-prestasie / makliker ontwikkeling. Dit is subjektiewe terme en 'n paar sal verskil na gelang van hul agtergrond. Een van die belangrikste aspekte van programmering n persoonlike back testing omgewing is dat die programmeerder is vertroud met die gereedskap wat gebruik word. Vir diegene wat nuut is tot die programmeertaal landskap sal die volgende verduidelik wat geneig is om te gebruik binne algoritmiese handel. C ++, C # en Java C ++, C # en Java is alles voorbeelde van algemene doel objekgeoriënteerde programmeertale. Dit beteken dat dit gebruik kan word sonder 'n ooreenstemmende geïntegreerde ontwikkelingsplan omgewing (IO), is almal kruis-platform, 'n wye verskeidenheid van biblioteke vir byna enige denkbare taak en laat 'n vinnige uitvoering spoed wanneer dit korrek gebruik word. As uiteindelike uitvoering spoed dan verlang C ++ (of C) is geneig om die beste keuse wees. Dit bied die mees buigsaamheid vir die bestuur van geheue en die optimalisering van die uitvoering spoed. Hierdie buigsaamheid kom teen 'n prys. C ++ is moeilik om goed te leer en kan dikwels lei tot subtiele foute. Ontwikkeling tyd kan baie langer as in ander tale te neem. Ten spyte van hierdie tekortkominge is dit algemeen in die finansiële bedryf. C # en Java is soortgelyk aangesien hulle albei al die komponente nodig om voorwerpe met die uitsondering van primitiewe datatipes soos dryf en heelgetalle wees. Hulle verskil van C ++ deur die uitvoering van 'n outomatiese vullisverwydering. Vullisverwydering voeg 'n prestasie oorhoofse maar lei tot meer vinnige ontwikkeling. Hierdie tale is albei goeie keuses vir die ontwikkeling van 'n backtester as hulle moedertaal GUI vermoëns, numeriese analise biblioteke en vinnige uitvoering spoed. Persoonlik, ek gebruik van C ++ vir die skep van gebeurtenis gedrewe backtesters wat uiters vinnige uitvoering spoed nodig, soos vir HFT stelsels. Dit is net as ek voel dat 'n Python gebeurtenis gedrewe stelsel is bottlenecked, aangesien laasgenoemde taal my eerste keuse vir so 'n stelsel sal wees. MATLAB, R en Python MATLAB is 'n kommersiële IDE vir numeriese berekening. Dit het wye aanvaarding verkry in die akademiese, ingenieurswese en finansiële sektore. Dit het baie numeriese biblioteke vir wetenskaplike berekening. Dit spog met 'n vinnige spoed uitvoering onder die aanname dat enige algoritme ontwikkel is onderhewig aan vectorisatie of Parallellisatie. Ten spyte van hierdie voordele is dit duur maak dit minder aantreklik vir kleinhandel handelaars op 'n begroting. MATLAB word soms gebruik vir direkte uitvoering van 'n makelaar soos Interaktiewe Brokers. R is 'n toegewyde statistieke script omgewing. Dit is gratis, open-source, kruis-platform en bevat 'n rykdom van vrylik beskikbare statistiese pakkette vir die uitvoering van uiters gevorderde ontleding. R is baie wyd gebruik word in akademiese statistieke en die kwantitatiewe hedge fund bedryf. Terwyl dit moontlik is om R te sluit op 'n makelaar is nie goed geskik vir die taak en moet meer van 'n navorsing instrument in ag geneem word. Dit het ook nie uitvoering spoed tensy bedrywighede gevectoriseerd. Ek het Python gegroepeer onder hierdie opskrif hoewel dit sit iewers tussen MATLAB, R en die voorgenoemde algemene doel tale. Dit is gratis, open-source en kruis-platform. Dit word geïnterpreteer in teenstelling met saamgestel. wat maak dit native stadiger as C ++. Dit bevat 'n biblioteek vir die uitvoering van byna enige taak denkbaar, van wetenskaplike berekening tot lae-vlak webbediener ontwerp. In die besonder is dit bevat Numpy, Scipy, pandas, matplotlib en scikit-leer, wat 'n robuuste numeriese navorsingsomgewing dat wanneer gevectoriseerd is vergelykbaar met saamgestel uitvoering taal spoed te voorsien. Python beskik ook oor biblioteke vir verbinding met makelaars. Dit maak dit 'n "een-stop-shop" vir die skep van 'n gebeurtenis gedrewe back testing en live uitvoering omgewing sonder om te stap in ander, meer komplekse, tale. Uitvoering spoed is meer as voldoende vir intraday handelaars handel oor die tydskaal van minute en hoër. Python is baie maklik om af te haal en te leer in vergelyking met 'n laer vlak tale soos C ++. Om hierdie redes maak ons ​​uitgebreide gebruik van 'n afgestorwene binne QuantStart artikels. Geïntegreerde Ontwikkelingsplan omgewings Die term IO het verskeie betekenisse binne algoritmiese handel. Sagteware-ontwikkelaars gebruik om 'n GUI wat ontwikkeling met accentuering, lêer blaai, ontfouting en uitvoering kode funksies toelaat dat. Algoritmiese handelaars gebruik dit om 'n ten volle geïntegreerde back testing / handelsomgewing met historiese of real-time data aflaai, kartering, statistiese evaluering en lewendige uitvoering beteken. Vir ons doeleindes, ek die term gebruik om enige backtest / handelsomgewing, dikwels GUI-gebaseerde bedoel, wat nie beskou as 'n algemene doel programmeertaal. Terwyl sommige Quant handelaars Excel ag onvanpas vir verhandeling te wees, het ek gevind dat dit baie nuttig vir "gesonde verstand te keur" van resultate. Die feit dat al die data is direk beskikbaar in 'n plat gesig maak dit maklik om baie basiese sein / filter strategieë te implementeer. Makelaars soos Interaktiewe Brokers ook toelaat dat DDE plugins wat toelaat dat Excel om real-time mark data ontvang en uit te voer handel bestellings. Ten spyte van die gemak van gebruik Excel is baie stadig vir enige redelike skaal van data of vlak van numeriese berekening. Ek gebruik dit net om fout-check by die ontwikkeling teen ander strategieë. In die besonder is dit uiters handig te pas vir die beheer of 'n strategie is onderhewig aan kyk lig vooroordeel. Dit is maklik om op te spoor in Excel te danke aan die sigblad aard van die sagteware. As jy ongemaklik met programmeertale is en is die uitvoering van 'n interday strategie dan Excel kan 'n goeie keuse wees. Kommersiële / Retail back testing sagteware Die mark vir kleinhandel kartering, "tegniese ontleding" en back testing sagteware is uiters mededingend te maak. Funksies wat deur so 'n sagteware sluit in real-time kartering van pryse, 'n rykdom van tegniese aanwysers, aangepas back testing langauges en outomatiese uitvoering. Sommige verskaffers bied 'n alles-in-een oplossing, soos TradeStation. TradeStation is 'n aanlyn makelaars wat handel sagteware (ook bekend as TradeStation) wat elektroniese bestelling uitvoering oor verskeie bateklasse bied produseer. Ek is tans bewus van 'n direkte API vir outomatiese uitvoering. In plaas bestellings geplaas moet word deur middel van die GUI sagteware. Dit is in teenstelling met Interaktiewe Brokers, wat 'n maerder handel koppelvlak (Trader WorkStation), maar bied beide hul eie real-time mark / einde uitvoering API's en 'n oplossing koppelvlak. Nog 'n uiters gewilde platform is Meta Trader. wat gebruik word in buitelandse valuta handel vir die skep van 'Expert Adviseurs. Dit is persoonlike skrifte geskryf in 'n eie taal wat gebruik kan word vir outomatiese handel. Ek het nie veel ervaring met óf TradeStation of Meta Trader sodat ek nie te veel tyd spandeer bespreek hul meriete. Sulke instrumente is nuttig as jy nie gemaklik met 'n grondige ontwikkeling van sagteware en wil 'n groot deel van die besonderhede te versorg. Maar met sulke stelsels 'n baie soepel word geoffer en jy is dikwels gekoppel aan 'n enkele stel. Open-source en web-gebaseerde gereedskap Die twee huidige gewilde web-gebaseerde back testing stelsels is Quantopian en QuantConnect. Die voormalige maak gebruik van 'n afgestorwene (en Zipline, sien hieronder) terwyl laasgenoemde gebruik C #. Beide bied 'n rykdom van historiese data. Quantopian ondersteun tans lewendige handel met Interaktiewe Brokers, terwyl QuantConnect is besig om lewende handel. Algo-Trader is 'n Switserse-gebaseerde firma wat beide 'n oop-bron en 'n kommersiële lisensie vir hul stelsel bied. Van wat ek kan die offer te samel lyk heel volwasse en hulle het baie institusionele kliënte. Die stelsel kan vol historiese back testing en komplekse gebeurtenis verwerking en hulle bind in Interaktiewe Brokers. Die Enterprise uitgawe bied aansienlik meer hoë werkverrigting eienskappe. Marketcetera bied 'n back testing stelsel wat kan bind in baie ander tale, soos Python en R, ten einde kode wat jy reeds kan geskryf hefboom. Die "Strategie Studio" verskaf die vermoë om back testing kode asook new uitvoering algoritmes te skryf en daarna oorgang van 'n historiese backtest om papier handel leef. Ek het hulle nie voor gebruik. Zipline is die Python biblioteek wat magte die Quantopian diens hierbo genoem. Dit is 'n ten volle gebeurtenis gedrewe backtest omgewing en op die oomblik ondersteun Amerikaanse aandele op 'n fyn-bar basis. Ek het nie 'n uitgebreide gebruik van Zipline gemaak, maar ek weet ander mense wat voel dit is 'n goeie hulpmiddel. Daar is nog baie gebiede verlaat om te verbeter, maar die span is voortdurend besig met die projek en dit is baie aktief in stand gehou. Daar is ook 'n paar GitHub / Google Code gehuisves projekte wat jy kan wens om te kyk na. Ek het nie spandeer enige groot deel van die tyd die ondersoek na hulle. Sulke projekte sluit OpenQuant. TradeLink en PyAlgoTrade. Institusionele back testing sagteware Institusionele-graad back testing stelsels soos Deltix en QuantHouse is nie dikwels gebruik word deur die kleinhandel algoritmiese handelaars. Die sagteware lisensies is oor die algemeen goed buite die begroting vir infrastruktuur. Dit gesê, sulke sagteware word algemeen gebruik deur quant fondse, handel vir eie huise, familie kantore en dies meer. Die voordele van sulke stelsels is duidelik. Hulle bied 'n alles-in-een oplossing vir data-insameling, strategie-ontwikkeling, historiese back testing en live uitvoering regoor enkele instrumente of portefeuljes, tot die hoë frekwensie vlak. Sulke platforms het uitgebreide toetsing en baie van die "in die veld" gebruik en so word sterk oorweeg het. Die stelsels is gebeurtenis gedrewe en die back testing omgewings kan dikwels boots die lewe omgewings 'n hoë graad van akkuraatheid. Die stelsels ondersteun ook new uitvoering algoritmes, wat poog om transaksiekoste te verminder. Dit is besonder nuttig vir handelaars met 'n groter kapitaalbasis. Ek moet erken dat ek nie veel ervaring van Deltix of QuantHouse gehad het. Dit gesê, die begroting alleen sit hulle buite bereik van die meeste kleinhandel handelaars, so ek sal nie die bewoners van hierdie stelsels. Colocatie Die sagteware landskap vir algoritmiese handel is nou ondervra. Ons kan nou ons aandag na implementering van die hardeware wat ons strategieë sal uit te voer. A kleinhandel handelaar sal waarskynlik die uitvoering van hul strategie van die huis tydens die mark ure. Dit wil betrokke draai op hul rekenaar, verbind tot die makelaars, die opdatering van hul mark sagteware en dan toelaat dat die algoritme om outomaties uit te voer gedurende die dag. Aan die ander kant, sal 'n professionele Quant Fonds met 'n beduidende bates onder bestuur (AUM) 'n toegewyde-ruil colocated server infrastruktuur het om latency so ver te verminder as moontlik aan hul hoë spoed strategieë uit te voer. Desktop huis Die eenvoudigste benadering tot hardeware ontplooiing is bloot 'n algoritmiese strategie uit te voer met 'n huis rekenaar gekoppel aan die makelaars via 'n breëband (of soortgelyke) verband. Terwyl hierdie benadering is eenvoudig om te begin dit ly baie nadele. Die lessenaar masjien is onderhewig aan kragonderbreking, tensy gerugsteun deur 'n UPS. Daarbenewens is ook 'n huis internet konneksie aan die genade van die ISP. Kragverlies of internet verbinding mislukking kan voorkom op 'n kritieke oomblik in die handel, die verlaat van die algoritmiese handelaar met 'n oop posisies wat nie in staat is om gesluit is. Hierdie probleem kom ook met bedryfstelsel verpligte weer begin (dit het eintlik met my gebeur het in 'n professionele omgewing!) En deel fout, wat lei tot dieselfde kwessies. Om bogenoemde redes het ek huiwer om te beveel 'n huis lessenaar benadering tot algoritmiese handel. As jy besluit om hierdie benadering te volg, maak seker dat beide 'n back-up rekenaar en 'n back-up internet konneksie (bv 'n 3G dongle) wat jy kan gebruik om posisies te sluit onder 'n stilstand situasie het. Die volgende vlak uit 'n huis lessenaar is om gebruik te maak van 'n virtuele privaat-bediener (VPS) maak. 'N VPS is 'n afgeleë bediener stelsel dikwels bemark as 'n "wolk" diens. Hulle is baie goedkoper as 'n ooreenstemmende dedicated server, aangesien 'n VPS is eintlik 'n verdeling van 'n veel groter bediener. Hulle beskik oor 'n virtuele geïsoleerde bedryfstelsel omgewing uitsluitlik beskikbaar aan elke individuele gebruiker. CPU load gedeel tussen verskeie VPS en 'n gedeelte van die stelsels RAM word aan die VPS. Dit is almal uit deur 'n proses wat bekend staan ​​as virtualisatie gedra. Gemeenskaplike VPS verskaffers sluit Amazon EC2 en Rack Wolk. Hulle bied intreevlak-stelsels met 'n lae geheue en basiese CPU gebruik tot onderneming-gereed hoë RAM, hoë CPU bedieners. Vir die meerderheid van algoritmiese kleinhandel handelaars die intreevlak stelsels genoeg vir 'n lae-frekwensie intraday of interday strategieë en kleiner historiese data databasisse. Die voordele van 'n VPS-gebaseerde stelsel sluit 24/7 beskikbaarheid (al is dit met 'n sekere realistiese stilstand!), Meer robuuste monitering vermoëns, maklik "plugins" vir bykomende dienste, soos lêer stoor of bestuur databasisse en 'n buigsame argitektuur. Een nadeel is die deurlopende koste. As die stelsel groei toegewyde hardeware word goedkoper per eenheid van prestasie. Hierdie prys punt aanvaar colocation weg van 'n beurs. In vergelyking met 'n huis lessenaar stelsel latency is nie altyd verbeter word deur die keuse van 'n VPS verskaffer. Jou huis plek kan nader aan 'n bepaalde finansiële ruil as die data sentrums van jou wolk verskaffer wees. Dit is versag deur die keuse van 'n firma wat VPS dienste wat spesifiek gerig is vir algoritmiese handel wat is geleë op of naby ruil bied. Dit sal waarskynlik meer kos as 'n generiese VPS verskaffer soos Amazon of Rack. ruil Colocatie Ten einde die beste latency minimalisering kry is dit nodig om dedicated servers direk colocation by die uitruil van data sentrum. Dit is 'n onbetaalbaar opsie vir byna alle kleinhandel algoritmiese handelaars, tensy hulle is baie goed gekapitaliseer. Dit is regtig die domein van die professionele kwantitatiewe fonds of makelaars. Soos ek hierbo 'n meer realistiese opsie genoem is na 'n VPS stelsel te koop van 'n verskaffer wat is geleë naby 'n ruil. Soos gesien kan word, is daar baie opsies vir back testing, outomatiese uitvoering en aanbieding van 'n strategie. Die bepaling van die regte oplossing is afhanklik van die begroting, ontwikkeling vermoë, graad van aanpassing nodig, bate-klas beskikbaarheid en of die handel is uit op 'n kleinhandel of professionele grondslag te voer. 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