Ezzel a cikkel néhány olyan alapfogalmat mutatok be, amelyek egy végponttól végpontig tartó kvantitatív kereskedési rendszert kísérnek. Ez a bejegyzés remélhetőleg két célközönséget fog szolgálni. Az első a kvantitatív kereskedőként egy alapnál állást szerezni próbáló egyéneknek szól majd. A második azoknak a személyeknek szól majd, akik saját “kiskereskedelmi” algoritmikus kereskedési üzletágat szeretnének létrehozni.
A kvantitatív kereskedés a kvantitatív pénzügyek rendkívül kifinomult területe. Jelentős időt vehet igénybe a szükséges tudás megszerzése ahhoz, hogy átmenjünk egy interjún, vagy felépítsük a saját kereskedési stratégiáinkat. Nem csak ez, hanem kiterjedt programozási ismereteket is igényel, legalábbis egy olyan nyelven, mint a MATLAB, az R vagy a Python. A stratégia kereskedési gyakoriságának növekedésével azonban a technológiai szempontok sokkal fontosabbá válnak. Így a C/C++ nyelv ismerete kiemelkedő fontosságú lesz.
Egy kvantitatív kereskedési rendszer négy fő összetevőből áll:
- Stratégia azonosítása – Stratégia megtalálása, előny kihasználása és döntés a kereskedési gyakoriságról
- Stratégia háttértesztelése – Adatgyűjtés, a stratégia teljesítményének elemzése és a torzítások eltávolítása
- Végrehajtási rendszer – Kapcsolódás egy brókercéghez, a kereskedés automatizálása és a tranzakciós költségek minimalizálása
- Kockázatkezelés – Optimális tőkeallokáció, “tétméret”/Kelly-kritérium és kereskedési pszichológia
A kereskedési stratégia azonosításával kezdünk.
Stratégia azonosítása
Minden kvantitatív kereskedési folyamat egy kezdeti kutatási időszakkal kezdődik. Ez a kutatási folyamat magában foglalja egy stratégia megtalálását, annak megnézését, hogy a stratégia illeszkedik-e az Ön által esetleg alkalmazott más stratégiák portfóliójába, a stratégia teszteléséhez szükséges adatok beszerzését, valamint a stratégia optimalizálásának kísérletét a magasabb hozam és/vagy alacsonyabb kockázat érdekében. Figyelembe kell vennie a saját tőkeigényét, ha a stratégiát “lakossági” kereskedőként futtatja, és azt, hogy az esetleges tranzakciós költségek hogyan befolyásolják a stratégiát.
A közhiedelemmel ellentétben valójában elég egyszerű nyereséges stratégiákat találni különböző nyilvános forrásokon keresztül. Az akadémikusok rendszeresen publikálnak elméleti kereskedési eredményeket (bár többnyire a tranzakciós költségek nélkül). A kvantitatív pénzügyi blogok részletesen tárgyalják a stratégiákat. A szakmai folyóiratok felvázolják az alapok által alkalmazott stratégiák egy részét.
Felmerülhet a kérdés, hogy az egyének és a cégek miért akarják megvitatni nyereséges stratégiáikat, különösen akkor, ha tudják, hogy mások “kiszorulása a kereskedésből” megakadályozhatja, hogy a stratégia hosszú távon működjön. Ennek oka abban rejlik, hogy gyakran nem fogják megvitatni az általuk elvégzett pontos paramétereket és hangolási módszereket. Ezek az optimalizálások a kulcsa annak, hogy egy viszonylag közepes stratégiából egy rendkívül nyereséges stratégia váljon. Valójában a saját egyedi stratégiák létrehozásának egyik legjobb módja az, ha hasonló módszereket keresünk, majd elvégezzük a saját optimalizálási eljárásunkat.
Itt egy kis lista azokról a helyekről, ahol elkezdhetünk stratégiaötletek után kutatni:
- 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
Az általad vizsgált stratégiák nagy része a mean-reversion és trendkövető/momentum kategóriába fog tartozni. Az átlagfordító stratégia olyan stratégia, amely megpróbálja kihasználni azt a tényt, hogy egy “ársorozat” (például két korrelált eszköz közötti spread) hosszú távú átlaga létezik, és hogy az ettől az átlagtól való rövid távú eltérések végül visszafordulnak. A momentumstratégia a befektetői pszichológiát és a nagy alapok struktúráját egyaránt megpróbálja kihasználni azáltal, hogy “felszáll egy piaci trendre”, amely lendületet gyűjthet egy irányba, és követi a trendet, amíg az meg nem fordul.
A kvantitatív kereskedés másik rendkívül fontos szempontja a kereskedési stratégia gyakorisága. Az alacsony frekvenciájú kereskedés (LFT) általában minden olyan stratégiára utal, amely egy kereskedési napnál hosszabb ideig tartja az eszközöket. Ennek megfelelően a nagyfrekvenciás kereskedés (HFT) általában olyan stratégiára utal, amely napközben tartja az eszközöket. Az ultranagyfrekvenciás kereskedés (UHFT) olyan stratégiákra utal, amelyek másodperc- és milliszekundumos nagyságrendben tartanak eszközöket. Kiskereskedőként a HFT és az UHFT természetesen lehetséges, de csak a kereskedési “technológiai stack” és a megbízási könyv dinamikájának részletes ismeretében. Ezeket a szempontokat ebben a bevezető cikkben nem tárgyaljuk részletesen.
Mihelyt egy stratégiát vagy stratégiakészletet azonosítottunk, azt most a nyereségesség szempontjából historikus adatokon kell tesztelni. Ez a backtesztelés területe.
Stratégia backtesztelés
A backtesztelés célja, hogy bizonyítékot szolgáltasson arra, hogy a fenti folyamat révén azonosított stratégia nyereséges, ha mind a historikus, mind a mintán kívüli adatokon alkalmazzák. Ez meghatározza azt az elvárást, hogy a stratégia hogyan fog teljesíteni a “való világban”. A backtesztelés azonban különböző okokból NEM jelent garanciát a sikerre. Ez talán a kvantitatív kereskedés legfinomabb területe, mivel számos torzítással jár, amelyeket gondosan figyelembe kell venni és a lehető legnagyobb mértékben ki kell küszöbölni. Az előítéletek gyakori típusait tárgyaljuk, beleértve a look-ahead előítéletet, a túlélési előítéletet és az optimalizálási előítéletet (más néven “adatszimatoló” előítélet). A backtesztelés további fontos területei közé tartozik a múltbeli adatok rendelkezésre állása és tisztasága, a reális tranzakciós költségek figyelembevétele és a robusztus backtesztelési platform kiválasztása. A tranzakciós költségeket az alábbiakban a Végrehajtási rendszerek szakaszban tárgyaljuk bővebben.
Amint egy stratégiát azonosítottunk, szükség van a historikus adatok beszerzésére, amelyek segítségével a tesztelés és esetleg a finomítás elvégezhető. Jelentős számú adatszolgáltató van minden eszközosztályban. Ezek költségei általában az adatok minőségével, mélységével és időszerűségével arányosak. A kezdő kvantumkereskedők hagyományos kiindulópontja (legalábbis lakossági szinten) a Yahoo Finance ingyenes adatkészletének használata. Nem fogok itt túl sokat foglalkozni a szolgáltatókkal, inkább az általános kérdésekre szeretnék koncentrálni, amikor historikus adatkészletekkel foglalkozunk.
A historikus adatokkal kapcsolatos fő aggályok közé tartozik a pontosság/tisztaság, a túlélési torzítás és a vállalati intézkedések, például az osztalékok és a részvényfelosztások kiigazítása:
- A pontosság az adatok általános minőségére vonatkozik – hogy tartalmaznak-e hibákat. A hibák néha könnyen azonosíthatók, például egy tüskeszűrővel, amely kiszedi a hibás “tüskéket” az idősoros adatokból, és korrigálja azokat. Máskor viszont nagyon nehéz észrevenni őket. Gyakran szükség van két vagy több szolgáltatóra, majd az összes adatukat össze kell vetni egymással.
- A túlélési torzítás gyakran az ingyenes vagy olcsó adatkészletek “jellemzője”. A túlélési torzítással rendelkező adatkészlet azt jelenti, hogy nem tartalmaz olyan eszközöket, amelyekkel már nem kereskednek. A részvények esetében ez a tőzsdéről törölt/csődbe ment részvényeket jelenti. Ez az elfogultság azt jelenti, hogy az ilyen adatkészleten tesztelt bármely részvénykereskedési stratégia valószínűleg jobban fog teljesíteni, mint a “való világban”, mivel a történelmi “győztesek” már előre kiválasztásra kerültek.
- A vállalati akciók közé tartoznak a vállalat által végzett “logisztikai” tevékenységek, amelyek általában a nyers árfolyamban lépcsőzetes változást okoznak, és amelyeket nem szabad figyelembe venni az árfolyam hozamának kiszámításakor. Az osztalékkal és a részvényfelosztással kapcsolatos kiigazítások a leggyakoribb bűnösök. Minden ilyen műveletnél el kell végezni egy visszakorrekciónak nevezett folyamatot. Nagyon óvatosnak kell lenni, hogy a részvényfelosztást ne keverjük össze a valódi hozamkorrekcióval. Sok kereskedőt ért már tetten egy vállalati akció!
A visszatesztelési eljárás elvégzéséhez szükség van egy szoftverplatform használatára. Választhat a dedikált backtest szoftverek, mint például a Tradestation, egy numerikus platform, mint például az Excel vagy a MATLAB, vagy egy teljes egyéni megvalósítás egy programozási nyelven, mint például a Python vagy a C++. Nem fogok túl sokat foglalkozni a Tradestationnel (vagy hasonlóval), az Excelrel vagy a MATLAB-bal, mivel hiszek a teljes házon belüli technológiai stack létrehozásában (az alább ismertetett okok miatt). Ennek egyik előnye, hogy a backtest szoftver és a végrehajtási rendszer szorosan integrálható, még a rendkívül fejlett statisztikai stratégiák esetében is. Különösen a HFT-stratégiák esetében elengedhetetlen az egyedi implementáció használata.
A rendszer backtesztelésekor képesnek kell lenni arra, hogy számszerűsítsük, mennyire jól teljesít a rendszer. A kvantitatív stratégiák “iparági szabványos” mérőszámai a maximális lehívás és a Sharpe-arány. A maximális lehívás a számla részvénygörbéjének egy adott (általában éves) időszak alatt bekövetkező legnagyobb csúcstól a mélypontig tartó csökkenését jellemzi. Ezt leggyakrabban százalékban adják meg. Az LFT-stratégiák több statisztikai tényező miatt általában nagyobb lehívásokkal rendelkeznek, mint a HFT-stratégiák. Egy historikus visszateszt megmutatja a múltbeli maximális lehívást, ami jó iránymutató a stratégia jövőbeli lehívási teljesítményére vonatkozóan. A második mérőszám a Sharpe-arány, amelyet heurisztikusan úgy határoznak meg, hogy a többlethozamok átlagát elosztják e többlethozamok szórásával. Itt a többlethozam a stratégiának egy előre meghatározott benchmark, például az S&P500 vagy egy 3 hónapos kincstárjegy feletti hozamára utal. Megjegyzendő, hogy az évesített hozam nem egy általában használt mérőszám, mivel nem veszi figyelembe a stratégia volatilitását (ellentétben a Sharpe-aránnyal).
Mihelyt egy stratégiát visszateszteltünk, és úgy ítéltük meg, hogy az mentes a torzításoktól (már amennyire ez lehetséges).), jó Sharpe-értékkel és minimalizált lehívásokkal, itt az ideje egy végrehajtási rendszer kiépítésének.
Végrehajtási rendszerek
A végrehajtási rendszer az az eszköz, amellyel a stratégia által generált kereskedések listáját a bróker elküldi és végrehajtja. Annak ellenére, hogy a kereskedés generálása lehet félig vagy akár teljesen automatizált, a végrehajtási mechanizmus lehet manuális, félig manuális (azaz “egy kattintással”) vagy teljesen automatizált. Az LFT stratégiák esetében a manuális és félig manuális technikák gyakoriak. A HFT-stratégiák esetében teljesen automatizált végrehajtási mechanizmust kell létrehozni, amely gyakran szorosan összekapcsolódik a kereskedésgenerátorral (a stratégia és a technológia kölcsönös függősége miatt).
A végrehajtási rendszer létrehozásakor a legfontosabb szempontok a brókercéggel való interfész, a tranzakciós költségek (beleértve a jutalékot, a csúszást és a spreadet) minimalizálása, valamint az élő rendszer teljesítményének eltérése a backtesztelt teljesítménytől.
A brókercéggel való interfésznek számos módja van. Ezek a bróker telefonon történő felhívásától egészen a teljesen automatizált, nagy teljesítményű alkalmazásprogramozási interfészig (API) terjednek. Ideális esetben a lehető legjobban szeretné automatizálni a kereskedések végrehajtását. Ez felszabadítja Önt, hogy a további kutatásra koncentrálhasson, valamint lehetővé teszi, hogy több stratégiát vagy akár nagyobb gyakoriságú stratégiákat futtasson (valójában a HFT lényegében lehetetlen automatizált végrehajtás nélkül). A fent vázolt általános backtesztelő szoftverek, mint például a MATLAB, az Excel és a Tradestation jó az alacsonyabb frekvenciájú, egyszerűbb stratégiákhoz. A valódi HFT végrehajtásához azonban szükség lesz egy házon belüli, nagy teljesítményű nyelven, például C++ nyelven írt végrehajtási rendszer létrehozására. Egy anekdota: abban az alapban, ahol korábban dolgoztam, volt egy 10 perces “kereskedési ciklusunk”, ahol 10 percenként töltöttünk le új piaci adatokat, majd ugyanabban az időkeretben végrehajtottuk az ezeken az információkon alapuló kereskedéseket. Ehhez egy optimalizált Python szkriptet használtunk. Bármihez, ami megközelíti a perc- vagy másodpercfrekvenciás adatokat, szerintem a C/C++ ideálisabb lenne.
Egy nagyobb alapban gyakran nem a kvant kereskedő feladata a végrehajtás optimalizálása. A kisebb üzletekben vagy HFT cégeknél azonban a kereskedők a végrehajtók, így gyakran sokkal szélesebb körű készségkészlet kívánatos. Ezt tartsa szem előtt, ha egy alapnál szeretne elhelyezkedni. A programozási képességei ugyanolyan fontosak lesznek, ha nem fontosabbak, mint a statisztikai és ökonometriai képességei!
A másik fontos kérdés, amely a végrehajtás zászlaja alá tartozik, a tranzakciós költségek minimalizálása. A tranzakciós költségeknek általában három összetevője van: A jutalékok (vagy adó), amelyek a brókercég, a tőzsde és a SEC (vagy hasonló kormányzati szabályozó testület) által felszámított díjak; a csúszás, amely a különbség aközött, hogy a megbízásodat milyen áron akartad teljesíteni, és aközött, hogy ténylegesen milyen áron teljesítették; a spread, amely a kereskedés tárgyát képező értékpapír vételi és eladási ára közötti különbség. Vegye figyelembe, hogy a spread NEM állandó, és függ a piac aktuális likviditásától (azaz a vételi/eladási megbízások elérhetőségétől).
A tranzakciós költségek jelenthetik a különbséget egy rendkívül nyereséges, jó Sharpe-aránnyal rendelkező stratégia és egy rendkívül veszteséges, szörnyű Sharpe-aránnyal rendelkező stratégia között. Kihívást jelenthet a tranzakciós költségek helyes előrejelzése egy backtesztből. A stratégia gyakoriságától függően hozzáférésre lesz szüksége a historikus tőzsdei adatokhoz, amelyek tartalmazzák a tick adatokat a vételi/eladási árakhoz. A kvantorok egész csapatai foglalkoznak a végrehajtás optimalizálásával a nagyobb alapoknál ezek miatt. Gondoljunk arra a forgatókönyvre, amikor egy alapnak jelentős mennyiségű kereskedést kell lebonyolítania (aminek sokféle oka lehet!). Azáltal, hogy ennyi részvényt “dobnak” a piacra, gyorsan lenyomják az árat, és nem biztos, hogy optimális végrehajtást érnek el. Ezért léteznek olyan algoritmusok, amelyek “csepegtetik” a megbízásokat a piacra, bár ekkor az alapnál fennáll a csúszás kockázata. Ezen túlmenően más stratégiák “zsákmányolják” ezeket a szükségleteket, és kihasználhatják az ineffektivitást. Ez az alapszerkezeti arbitrázs területe.
A végrehajtási rendszerek utolsó nagy problémája a stratégia teljesítményének a backtesztelt teljesítménytől való eltérése. Ez több okból is bekövetkezhet. A look-ahead torzítást és az optimalizációs torzítást már részletesen tárgyaltuk, amikor a backtesteket tekintettük. Egyes stratégiák azonban nem teszik egyszerűvé ezeknek az elfogultságoknak a tesztelését a telepítés előtt. Ez leginkább a HFT-ben fordul elő. A végrehajtási rendszerben és magában a kereskedési stratégiában is lehetnek olyan hibák, amelyek a backtestben nem jelennek meg, de az éles kereskedésben igen. Előfordulhat, hogy a piacon a stratégia bevezetését követően rendszerváltás történt. Az új szabályozási környezet, a változó befektetői hangulat és a makrogazdasági jelenségek mind-mind eltérésekhez vezethetnek a piac viselkedésében és ezáltal a stratégiája jövedelmezőségében.
Kockázatkezelés
A kvantitatív kereskedési kirakós utolsó darabja a kockázatkezelés folyamata. A “kockázat” magában foglalja az összes korábban tárgyalt elfogultságot. Ide tartozik a technológiai kockázat is, mint például az, hogy a tőzsdén együtt elhelyezett szervereken hirtelen merevlemez-hiba lép fel. Tartalmazza a brókerkockázatot, mint például a bróker csődje (nem is olyan őrültség, mint amilyennek hangzik, ha figyelembe vesszük az MF Global közelmúltbeli ijesztgetését!). Röviden, szinte mindenre kiterjed, ami megzavarhatja a kereskedés végrehajtását, aminek számos forrása van. A kvantitatív stratégiák kockázatkezelésének egész könyvek vannak szentelve, így nem fogom itt megkísérelni az összes lehetséges kockázati forrás megvilágítását.
A kockázatkezelés magában foglalja az úgynevezett optimális tőkeallokációt is, amely a portfólióelmélet egyik ága. Ez az az eszköz, amellyel a tőkét a különböző stratégiák és a stratégiákon belüli kereskedések között elosztják. Ez egy összetett terület, és nem triviális matematikára támaszkodik. Az iparági szabványt, amellyel az optimális tőkeallokáció és a stratégiák tőkeáttétele összefügg, Kelly-kritériumnak nevezik. Mivel ez egy bevezető cikk, nem térek ki a számítására. A Kelly-kritérium tesz néhány feltételezést a hozamok statisztikai természetéről, amelyek a pénzügyi piacokon gyakran nem igazak, ezért a kereskedők gyakran konzervatívak a végrehajtás során.
A kockázatkezelés másik kulcsfontosságú eleme a saját pszichológiai profil kezelésében rejlik. Számos kognitív előítélet kúszhat be a kereskedésbe. Bár ez bevallottan kevésbé problémás az algoritmikus kereskedésnél, ha a stratégiát békén hagyjuk! Gyakori előítélet a veszteségtől való idegenkedés, amikor egy vesztes pozíciót nem zárunk le a veszteség realizálásának fájdalma miatt. Hasonlóképpen, a nyereséget túl korán lehet felvenni, mert a már elért nyereség elvesztésétől való félelem túl nagy lehet. Egy másik gyakori előítélet az úgynevezett recency bias. Ez akkor jelentkezik, amikor a kereskedők túl nagy hangsúlyt fektetnek a közelmúltbeli eseményekre, és nem a hosszabb távra. Aztán természetesen ott van az érzelmi elfogultságok klasszikus párja – a félelem és a kapzsiság. Ezek gyakran vezethetnek alul- vagy túlhitelezéshez, ami robbanáshoz (azaz a számla tőkéje nullára vagy még rosszabbra megy!) vagy a nyereség csökkenéséhez vezethet.”
Összefoglaló
Mint látható, a kvantitatív kereskedés a kvantitatív pénzügyek rendkívül összetett, bár nagyon érdekes területe. Ebben a cikkben szó szerint csak a felszínét karcoltam a témának, és máris elég hosszú lett! Egész könyveket és tanulmányokat írtak már olyan témákról, amelyekre én csak egy-két mondattal tértem ki. Éppen ezért a kvantitatív alapkereskedői állásokra való jelentkezés előtt jelentős mennyiségű alapozó tanulmányt kell végezni. Legalább széleskörű statisztikai és ökonometriai háttérre lesz szüksége, sok tapasztalattal a megvalósításban, egy olyan programozási nyelven keresztül, mint a MATLAB, a Python vagy az R. A magasabb frekvenciájú, kifinomultabb stratégiák esetében a készségei között valószínűleg szerepel a Linux kernel módosítása, a C/C++, az assembly programozás és a hálózati késleltetés optimalizálása.
Ha szeretne saját algoritmikus kereskedési stratégiákat létrehozni, az első javaslatom az lenne, hogy legyen jó a programozásban. Az én preferenciám az, hogy az adatgyűjtő, a stratégia backtester és a végrehajtási rendszer minél nagyobb részét maga építse fel. Ha a saját tőkéje forog kockán, nem aludna-e jobban éjszaka, ha tudná, hogy teljes mértékben tesztelte a rendszerét, és tisztában van annak buktatóival és sajátos problémáival? Ennek kiszervezése egy szállítónak, bár rövid távon időt takaríthat meg, hosszú távon rendkívül költséges lehet.