In dit artikel laat ik je kennismaken met enkele basisconcepten die horen bij een end-to-end kwantitatief handelssysteem. Deze post zal hopelijk twee doelgroepen bedienen. De eerste groep bestaat uit personen die als kwantitatief handelaar een baan bij een fonds proberen te krijgen. Het tweede is voor personen die willen proberen hun eigen “retail”-bedrijf in algoritmische handel op te zetten.
Quantitative trading is een uiterst gesofisticeerd gebied van quant finance. Het kan veel tijd kosten om de kennis te vergaren die nodig is om door een interview te komen of je eigen handelsstrategieën te construeren. Niet alleen dat, maar het vereist uitgebreide programmeerkennis, op zijn minst in een taal als MATLAB, R of Python. Naarmate de handelsfrequentie van de strategie toeneemt, worden de technologische aspecten echter veel relevanter. Vertrouwd zijn met C/C++ zal dan ook van het allergrootste belang zijn.
Een kwantitatief handelssysteem bestaat uit vier hoofdcomponenten:
- Strategie-identificatie – Het vinden van een strategie, het benutten van een voordeel en het beslissen over de handelsfrequentie
- Strategie-backtesting – Het verkrijgen van gegevens, het analyseren van de strategie-prestaties en het verwijderen van vertekeningen
- Uitvoersysteem – Het koppelen aan een makelaardij, automatiseren van de handel en minimaliseren van transactiekosten
- Risicobeheer – Optimale kapitaalallocatie, “bet size”/Kelly criterium en handelspsychologie
We beginnen met een blik op hoe een handelsstrategie te identificeren.
Strategie-identificatie
Alle kwantitatieve handelsprocessen beginnen met een eerste periode van onderzoek. Dit onderzoeksproces omvat het vinden van een strategie, kijken of de strategie past in een portefeuille van andere strategieën die u mogelijk voert, het verkrijgen van alle gegevens die nodig zijn om de strategie te testen en proberen de strategie te optimaliseren voor hogere rendementen en/of lagere risico’s. U zult rekening moeten houden met uw eigen kapitaalbehoeften indien u de strategie als een “retail” trader gebruikt en hoe eventuele transactiekosten de strategie zullen beïnvloeden.
In tegenstelling tot wat vaak wordt gedacht is het eigenlijk vrij eenvoudig om winstgevende strategieën te vinden via verschillende openbare bronnen. Academici publiceren regelmatig theoretische handelsresultaten (zij het meestal zonder transactiekosten). Kwantitatieve financiële blogs bespreken strategieën in detail. Vakbladen geven een overzicht van sommige strategieën die door fondsen worden toegepast.
Je kunt je afvragen waarom individuen en bedrijven hun winstgevende strategieën willen bespreken, vooral als ze weten dat anderen “crowding the trade” de strategie op de lange termijn kan tegenhouden. De reden ligt in het feit dat zij vaak niet de exacte parameters en afstemmingsmethoden zullen bespreken die zij hebben uitgevoerd. Deze optimalisaties zijn de sleutel om van een relatief middelmatige strategie een zeer winstgevende strategie te maken. In feite is een van de beste manieren om uw eigen unieke strategieën te creëren het vinden van vergelijkbare methoden en vervolgens uw eigen optimalisatieprocedure uit te voeren.
Hier volgt een kleine lijst van plaatsen om te beginnen met het zoeken naar strategie-ideeën:
- Social Science Research Network – www.ssrn.com
- arXiv Quantitative Finance – arxiv.org/archive/q-fin
- Seeking Alpha – www.seekingalpha.com
- Elite Trader – www.elitetrader.com
- Nuclear Phynance – www.nuclearphynance.com
- Quantivity – quantivity.wordpress.com
Veel van de strategieën die u zult bekijken, vallen in de categorieën van mean-reversion en trend-following/momentum. Een mean-reverting strategie is een strategie die gebruik tracht te maken van het feit dat er een langetermijngemiddelde van een “prijsreeks” bestaat (zoals de spread tussen twee gecorreleerde activa) en dat kortetermijnafwijkingen van dit gemiddelde uiteindelijk zullen terugkeren. Een momentumstrategie tracht zowel de beleggerspsychologie als de structuur van grote fondsen uit te buiten door “mee te liften” op een markttrend, die momentum in één richting kan verzamelen, en de trend te volgen tot hij omslaat.
Een ander enorm belangrijk aspect van kwantitatief handelen is de frequentie van de handelsstrategie. Low frequency trading (LFT) verwijst over het algemeen naar elke strategie die activa langer dan een handelsdag vasthoudt. Hoogfrequente handel (high frequency trading – HFT) daarentegen verwijst over het algemeen naar een strategie die activa intraday aanhoudt. Ultrahoogfrequente handel (UHFT) verwijst naar strategieën die activa aanhouden in de orde van seconden en milliseconden. Als retailer zijn HFT en UHFT zeker mogelijk, maar alleen met gedetailleerde kennis van de trading “technology stack” en de dynamiek van het orderboek. We zullen deze aspecten in dit inleidende artikel niet uitvoerig bespreken.
Wanneer eenmaal een strategie, of een reeks strategieën, is geïdentificeerd moet deze nu op winstgevendheid worden getest op historische gegevens. Dat is het domein van backtesting.
Strategy Backtesting
Het doel van backtesting is om bewijs te leveren dat de strategie die via het bovenstaande proces is geïdentificeerd, winstgevend is wanneer deze wordt toegepast op zowel historische als out-of-sample gegevens. Dit geeft de verwachting van hoe de strategie in de “echte wereld” zal presteren. Backtesting is echter GEEN garantie voor succes, om verschillende redenen. Het is wellicht het meest subtiele gebied van de kwantitatieve handel omdat het tal van biases met zich meebrengt, die zorgvuldig moeten worden overwogen en zoveel mogelijk moeten worden geëlimineerd. We bespreken de meest voorkomende soorten bias, waaronder look-ahead bias, survivorship bias en optimalisatie bias (ook bekend als “data-snooping” bias). Andere belangrijke aspecten van backtesting zijn de beschikbaarheid en zuiverheid van historische gegevens, het in rekening brengen van realistische transactiekosten en de keuze van een robuust backtestingplatform. We zullen de transactiekosten verder bespreken in de sectie Uitvoeringssystemen hieronder.
Wanneer een strategie eenmaal is geïdentificeerd, is het noodzakelijk om de historische gegevens te verkrijgen waarmee testen en, eventueel, verfijningen kunnen worden uitgevoerd. Er is een groot aantal verkopers van gegevens voor alle activaklassen. Hun kosten zijn over het algemeen afhankelijk van de kwaliteit, de diepte en de actualiteit van de gegevens. Het traditionele startpunt voor beginnende kwantitatieve handelaren (althans op retailniveau) is het gebruik van de gratis dataset van Yahoo Finance. Ik zal hier niet te veel ingaan op de aanbieders, maar me liever concentreren op de algemene kwesties bij het omgaan met historische datasets.
De belangrijkste aandachtspunten bij historische gegevens zijn nauwkeurigheid/zuiverheid, overlevingsvooringenomenheid en aanpassing voor corporate actions zoals dividenden en aandelensplitsingen:
- Nauwkeurigheid heeft betrekking op de algehele kwaliteit van de gegevens – of ze geen fouten bevatten. Fouten zijn soms gemakkelijk op te sporen, bijvoorbeeld met een spike filter, die onjuiste “spikes” in tijdreeksgegevens opspoort en daarvoor corrigeert. Op andere momenten kunnen zij zeer moeilijk te ontdekken zijn. Vaak is het nodig twee of meer aanbieders te hebben en dan al hun gegevens met elkaar te vergelijken.
- Overlevingsvooringenomenheid is vaak een “kenmerk” van gratis of goedkope datasets. Een dataset met “survivorship bias” betekent dat deze geen activa bevat die niet meer worden verhandeld. In het geval van aandelen betekent dit geschrapte/gefailleerde aandelen. Deze bias betekent dat elke aandelenhandelsstrategie die op een dergelijke dataset wordt getest, waarschijnlijk beter zal presteren dan in de “echte wereld”, omdat de historische “winnaars” al zijn voorgeselecteerd.
- Corporate actions omvatten “logistieke” activiteiten die door het bedrijf worden uitgevoerd en die gewoonlijk een stapsgewijze verandering in de ruwe prijs veroorzaken, die niet moet worden opgenomen in de berekening van het rendement van de prijs. Aanpassingen voor dividenden en aandelensplitsingen zijn de meest voorkomende boosdoeners. Bij elk van deze acties moet een proces worden uitgevoerd dat “back adjustment” wordt genoemd. Men moet zeer voorzichtig zijn om een aandelensplitsing niet te verwarren met een echte rendementsaanpassing. Menig trader is door een corporate action overvallen!
Om een backtest procedure uit te voeren is het noodzakelijk om een software platform te gebruiken. Je hebt de keuze tussen speciale backtest software, zoals Tradestation, een numeriek platform zoals Excel of MATLAB of een volledig op maat gemaakte implementatie in een programmeertaal zoals Python of C++. Ik zal niet te veel uitweiden over Tradestation (of vergelijkbaar), Excel of MATLAB, omdat ik geloof in het creëren van een volledige in-house technologie stack (om redenen die hieronder worden uiteengezet). Een van de voordelen hiervan is dat de backtest software en het executiesysteem nauw geïntegreerd kunnen worden, zelfs met extreem geavanceerde statistische strategieën. Vooral voor HFT-strategieën is het van essentieel belang een aangepaste implementatie te gebruiken.
Bij het backtesten van een systeem moet men kunnen kwantificeren hoe goed het presteert. De “industriestandaard” metrieken voor kwantitatieve strategieën zijn de maximum drawdown en de Sharpe Ratio. De maximale drawdown karakteriseert de grootste piek-tot-dal daling in de aandelencurve van de rekening over een bepaalde tijdsperiode (gewoonlijk jaarlijks). Deze wordt meestal uitgedrukt als percentage. LFT-strategieën hebben de neiging grotere drawdowns te hebben dan HFT-strategieën, als gevolg van een aantal statistische factoren. Een historische backtest toont de maximale drawdown uit het verleden, wat een goede richtlijn is voor de toekomstige drawdown prestaties van de strategie. De tweede maatstaf is de Sharpe Ratio, die heuristisch wordt gedefinieerd als het gemiddelde van de meeropbrengsten gedeeld door de standaardafwijking van die meeropbrengsten. In dit geval verwijst het extra rendement naar het rendement van de strategie boven een vooraf bepaalde benchmark, zoals de S&P500 of een schatkistpapier met een looptijd van 3 maanden. Het rendement op jaarbasis is geen maatstaf die gewoonlijk wordt gebruikt, omdat geen rekening wordt gehouden met de volatiliteit van de strategie (in tegenstelling tot de Sharpe Ratio).
Wanneer een strategie eenmaal is getest en vrij is bevonden van biases (voor zover dat mogelijk is!), met een goede Sharpe en minimale drawdowns, is het tijd om een uitvoeringssysteem te bouwen.
Uitvoersystemen
Een uitvoeringssysteem is het middel waarmee de lijst van door de strategie gegenereerde trades door de broker worden verzonden en uitgevoerd. Ondanks het feit dat het genereren van transacties semi- of zelfs volledig geautomatiseerd kan zijn, kan het uitvoeringsmechanisme manueel, semi-manueel (d.w.z. “één klik”) of volledig geautomatiseerd zijn. Voor LFT-strategieën zijn handmatige en halfhandmatige technieken gebruikelijk. Voor HFT-strategieën is het noodzakelijk een volledig geautomatiseerd uitvoeringsmechanisme te creëren, dat vaak nauw gekoppeld zal zijn aan de handelsgenerator (vanwege de onderlinge afhankelijkheid van strategie en technologie).
De belangrijkste overwegingen bij het creëren van een uitvoeringssysteem zijn de interface met de brokerage, minimalisering van de transactiekosten (met inbegrip van provisie, slippage en de spread) en afwijking van de prestaties van het live-systeem van de vooraf geteste prestaties.
Er zijn vele manieren om een interface met een brokerage te maken. Zij variëren van het oproepen van uw makelaar aan de telefoon tot aan een volledig geautomatiseerde hoog presterende Application Programming Interface (API). Idealiter wilt u de uitvoering van uw transacties zo veel mogelijk automatiseren. Dit maakt u vrij om u te concentreren op verder onderzoek, en stelt u in staat om meerdere strategieën of zelfs strategieën met een hogere frequentie uit te voeren (in feite is HFT in wezen onmogelijk zonder geautomatiseerde uitvoering). De gewone backtesting software zoals hierboven beschreven, zoals MATLAB, Excel en Tradestation zijn goed voor lagere frequenties, eenvoudigere strategieën. Het zal echter nodig zijn om een intern uitvoeringssysteem te construeren dat is geschreven in een hoogperformante taal zoals C++, om echt aan HFT te kunnen doen. Een anekdote: in het fonds waar ik werkte, hadden we een 10-minuten trading loop waarbij we elke 10 minuten nieuwe marktgegevens downloadden en vervolgens transacties uitvoerden op basis van die informatie in hetzelfde tijdsbestek. Dit gebeurde met behulp van een geoptimaliseerd Python script. Voor alles wat in de buurt komt van minuut- of second-frequency data, denk ik dat C/C++ idealer zou zijn.
In een groter fonds is het vaak niet het domein van de quant trader om de uitvoering te optimaliseren. Maar in kleinere winkels of HFT-firma’s zijn de handelaren de uitvoerders en dus is een veel bredere set vaardigheden vaak wenselijk. Houd daar rekening mee als je bij een fonds wilt gaan werken. Uw programmeervaardigheden zullen even belangrijk zijn, zo niet belangrijker, dan uw statistische en econometrische talenten!
Een andere belangrijke kwestie die onder de noemer uitvoering valt, is die van de minimalisering van de transactiekosten. Transactiekosten bestaan over het algemeen uit drie componenten: Commissies (of belasting), dat zijn de kosten die in rekening worden gebracht door de makelarij, de beurs en de SEC (of soortgelijke regelgevende overheidsinstantie); slippage, dat is het verschil tussen wat u van plan was om uw order uit te voeren versus wat het daadwerkelijk werd uitgevoerd; spread, dat is het verschil tussen de bied- en laatprijs van het effect dat wordt verhandeld. Merk op dat de spread NIET constant is en afhankelijk is van de huidige liquiditeit (d.w.z. beschikbaarheid van koop-/verkooporders) in de markt.
Transactiekosten kunnen het verschil maken tussen een uiterst winstgevende strategie met een goede Sharpe-ratio en een uiterst onrendabele strategie met een verschrikkelijke Sharpe-ratio. Het kan een uitdaging zijn om transactiekosten correct te voorspellen op basis van een backtest. Afhankelijk van de frequentie van de strategie zal u toegang moeten hebben tot historische beursgegevens, waaronder tick data voor bid/ask prijzen. Om deze redenen houden hele teams van quants zich bezig met het optimaliseren van de uitvoering in de grotere fondsen. Neem het scenario waarin een fonds een aanzienlijke hoeveelheid transacties moet afstoten (de redenen om dit te doen zijn talrijk en gevarieerd!). Door zoveel aandelen op de markt te “dumpen” zullen zij de prijs snel drukken en wellicht geen optimale uitvoering krijgen. Daarom bestaan er algoritmen die orders “druppelsgewijs” op de markt brengen, hoewel het fonds dan het risico loopt dat de orders worden geannuleerd. Bovendien “azen” andere strategieën op deze noodzakelijkheden en kunnen zij de inefficiënties uitbuiten. Dit is het domein van de fondsstructuurarbitrage.
Het laatste grote probleem voor uitvoeringssystemen betreft het afwijken van de strategieperformance van de backtested performance. Dit kan om een aantal redenen gebeuren. We hebben al uitgebreid gesproken over look-ahead bias en optimalisatie bias, wanneer we backtests bekijken. Bij sommige strategieën is het echter niet eenvoudig om deze biases op te sporen vooraleer ze worden toegepast. Dit komt het meest voor bij HFT. Er kunnen bugs in het uitvoeringssysteem en in de handelsstrategie zelf zitten die bij een backtest niet te zien zijn, maar bij live handel wel. De markt kan onderhevig geweest zijn aan een verandering van regime na de implementatie van uw strategie. Nieuwe regelgeving, veranderende beleggerssentimenten en macro-economische fenomenen kunnen allemaal leiden tot afwijkingen in hoe de markt zich gedraagt en dus in de winstgevendheid van uw strategie.
Risicobeheer
Het laatste stukje van de kwantitatieve handelspuzzel is het proces van risicobeheer. “Risico” omvat alle voorgaande vooringenomenheden die we hebben besproken. Het omvat technologierisico’s, zoals servers die zich op de beurs bevinden en plotseling een storing in de harde schijf krijgen. Het omvat makelaarsrisico, zoals het failliet gaan van de makelaar (niet zo gek als het klinkt, gezien de recente schrik met MF Global!). Kortom, het omvat bijna alles wat de uitvoering van de handel zou kunnen verstoren, waarvan er vele bronnen zijn. Er zijn hele boeken gewijd aan risicobeheer voor kwantitatieve strategieën, dus ik zal hier niet proberen alle mogelijke risicobronnen te belichten.
Risicobeheer omvat ook wat bekend staat als optimale kapitaalallocatie, wat een tak is van de portefeuilletheorie. Dit is de manier waarop kapitaal wordt toegewezen aan een reeks verschillende strategieën en aan de transacties binnen die strategieën. Het is een complex gebied en berust op niet-triviale wiskunde. De industriestandaard waarmee de optimale kapitaalallocatie en de hefboomwerking van de strategieën worden gerelateerd, wordt het Kelly-criterium genoemd. Aangezien dit een inleidend artikel is, zal ik niet uitweiden over de berekening ervan. Het Kelly-criterium doet een aantal veronderstellingen over de statistische aard van de rendementen, die op de financiële markten niet vaak opgaan, zodat handelaars vaak conservatief zijn bij de toepassing ervan.
Een andere sleutelcomponent van risicobeheer is het omgaan met het eigen psychologisch profiel. Er zijn veel cognitieve vooroordelen die kunnen binnensluipen in de handel. Hoewel dit minder problematisch is bij algoritmische handel als de strategie met rust wordt gelaten! Een veel voorkomende bias is die van verliesaversie, waarbij een verliezende positie niet wordt afgesloten omdat het pijnlijk is een verlies te moeten realiseren. Evenzo kunnen winsten te vroeg worden genomen omdat de angst om een reeds behaalde winst te verliezen te groot kan zijn. Een andere veel voorkomende bias staat bekend als recency bias. Dit komt tot uiting wanneer traders te veel nadruk leggen op recente gebeurtenissen en niet op de langere termijn. Dan zijn er natuurlijk nog de klassieke emotionele vooroordelen – angst en hebzucht. Deze kunnen vaak leiden tot een te lage of te hoge hefboomwerking, wat kan leiden tot een explosie (d.w.z. het eigen vermogen van de rekening gaat naar nul of erger!) of lagere winsten.
Samenvatting
Zoals men kan zien is kwantitatieve handel een uiterst complex, zij het zeer interessant, gebied van de kwantitatieve financiën. Ik heb in dit artikel letterlijk een tipje van de sluier opgelicht en het wordt al behoorlijk lang! Er zijn hele boeken en artikelen geschreven over onderwerpen waar ik slechts een zin of twee aan heb gewijd. Om die reden is het noodzakelijk om, alvorens te solliciteren naar een baan in de kwantitatieve fondsenhandel, een aanzienlijke hoeveelheid grondwerk te verrichten. Op zijn minst heb je een uitgebreide achtergrond nodig in statistiek en econometrie, met veel ervaring in implementatie, via een programmeertaal als MATLAB, Python of R. Voor meer geavanceerde strategieën aan de hogere frequentie-kant, zal je vaardigheden waarschijnlijk Linux kernel modificatie, C / C + +, assemblage programmeren en netwerk latency optimalisatie omvatten.
Als je geïnteresseerd bent in het proberen om je eigen algoritmische handelsstrategieën te creëren, zou mijn eerste suggestie zijn om goed te worden in programmeren. Mijn voorkeur is om zoveel mogelijk van de data grabber, de strategie backtester en het executiesysteem zelf te bouwen. Als uw eigen kapitaal op het spel staat, zou u dan ’s nachts niet beter slapen als u wist dat u uw systeem volledig getest hebt en op de hoogte bent van de valkuilen en specifieke problemen? Dit uitbesteden aan een verkoper, kan op korte termijn tijd besparen, maar op lange termijn zeer kostbaar zijn.