Tässä artikkelissa esittelen sinulle joitakin peruskäsitteitä, jotka liittyvät kokonaisvaltaiseen kvantitatiiviseen kaupankäyntijärjestelmään. Tämä viesti palvelee toivottavasti kahta yleisöä. Ensimmäinen on henkilöt, jotka yrittävät saada työpaikan rahastosta kvantitatiivisena kauppiaana. Toisen kohderyhmän muodostavat henkilöt, jotka haluavat yrittää perustaa oman algoritmikauppaa harjoittavan ”vähittäiskaupan” yrityksen.
Kvantitatiivinen kaupankäynti on erittäin kehittynyt kvanttirahoituksen osa-alue. Haastattelun läpäisemiseen tai omien kaupankäyntistrategioiden rakentamiseen tarvittavien tietojen hankkiminen voi viedä huomattavan paljon aikaa. Sen lisäksi se edellyttää laajaa ohjelmointiosaamista, ainakin MATLABin, R:n tai Pythonin kaltaisella kielellä. Kun strategian kaupankäyntitiheys kuitenkin kasvaa, teknologiset näkökohdat tulevat paljon merkityksellisemmiksi. Näin ollen C/C++:n tuntemus on ensiarvoisen tärkeää.
Kvantitatiivinen kaupankäyntijärjestelmä koostuu neljästä pääkomponentista:
- Strategian tunnistaminen – Strategian löytäminen, etulyöntiaseman hyödyntäminen ja kaupankäyntitiheydestä päättäminen
- Strategian tausta-testaus – Tietojen hankkiminen, strategian suorituskyvyn analysointi ja vääristymien poistaminen
- Toteutusjärjestelmä – Yhteyden luominen välitysyhtiöön, kaupankäynnin automatisointi ja transaktiokustannusten minimointi
- Riskienhallinta – Optimaalinen pääoman allokointi, ”panoksen koko”/Kelly-kriteeri ja kaupankäynnin psykologia
Aloitamme tarkastelemalla, miten kaupankäyntistrategia tunnistetaan.
STRATEGIAN TUNNISTAMINEN
Kaikki kvantitatiiviset kaupankäyntiprosessit alkavat aluksi tutkimusjaksolla. Tämä tutkimusprosessi käsittää strategian löytämisen, sen selvittämisen, sopiiko strategia muiden mahdollisesti käyttämiesi strategioiden salkkuun, strategian testaamiseen tarvittavien tietojen hankkimisen ja pyrkimyksen optimoida strategia suuremman tuoton ja/tai pienemmän riskin saavuttamiseksi. Sinun on otettava huomioon omat pääomavaatimuksesi, jos käytät strategiaa ”yksityiskauppiaana”, ja se, miten mahdolliset transaktiokustannukset vaikuttavat strategiaan.
Vastoin yleistä uskomusta on itse asiassa melko suoraviivaista löytää kannattavia strategioita eri julkisista lähteistä. Akateemikot julkaisevat säännöllisesti teoreettisia kaupankäyntituloksia (vaikkakin useimmiten ilman transaktiokustannuksia). Kvantitatiivisen rahoituksen blogeissa käsitellään strategioita yksityiskohtaisesti. Kauppalehdissä esitellään joitakin rahastojen käyttämiä strategioita.
Voi kysyä, miksi yksityishenkilöt ja yritykset ovat innokkaita keskustelemaan kannattavista strategioistaan, varsinkin kun he tietävät, että muut ”tungeksivat kaupassa”, mikä voi estää strategiaa toimimasta pitkällä aikavälillä. Syy on siinä, että he eivät useinkaan keskustele tarkoista parametreista ja viritysmenetelmistä, jotka he ovat toteuttaneet. Nämä optimoinnit ovat avain suhteellisen keskinkertaisen strategian muuttamiseen erittäin kannattavaksi. Itse asiassa yksi parhaista tavoista luoda omia ainutlaatuisia strategioita on etsiä samankaltaisia menetelmiä ja suorittaa sitten oma optimointimenettely.
Tässä on pieni luettelo paikoista, joista voi aloittaa strategiaideoiden etsimisen:
- 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
Monet tarkastelemasi strategiat kuuluvat luokkiin mean-reversion ja trendin seuraaminen/momentum. Keskiarvoa kääntävä strategia on strategia, joka pyrkii hyödyntämään sitä, että ”hintasarjalla” (kuten kahden korreloivan omaisuuserän välisellä erotuksella) on olemassa pitkän aikavälin keskiarvo ja että lyhyen aikavälin poikkeamat tästä keskiarvosta kääntyvät lopulta takaisin. Momentum-strategia pyrkii hyödyntämään sekä sijoittajien psykologiaa että suurten rahastojen rakennetta ”liftaamalla” markkinatrendeihin, jotka voivat kerätä vauhtia johonkin suuntaan, ja seuraamalla trendiä, kunnes se kääntyy.
Toinen erittäin tärkeä kvantitatiivisen kaupankäynnin näkökohta on kaupankäyntistrategian taajuus. Matalataajuisella kaupankäynnillä (Low Frequency Trading, LFT) tarkoitetaan yleensä mitä tahansa strategiaa, jossa varoja pidetään hallussa pidempään kuin yhden kaupankäyntipäivän ajan. Vastaavasti korkeataajuisella kaupankäynnillä (high frequency trading, HFT) tarkoitetaan yleensä strategiaa, joka pitää varoja päivän sisällä. Erittäin korkeataajuisella kaupankäynnillä (UHFT) tarkoitetaan strategioita, jotka pitävät omaisuuseriä hallussaan sekuntien ja millisekuntien luokkaa. Vähittäiskauppiaana HFT ja UHFT ovat varmasti mahdollisia, mutta vain, jos tunnetaan yksityiskohtaisesti kaupankäynnin ”teknologiapino” ja tilauskannan dynamiikka. Emme käsittele näitä näkökohtia laajasti tässä johdantoartikkelissa.
Kun strategia tai joukko strategioita on tunnistettu, se on nyt testattava kannattavuuden kannalta historiallisilla tiedoilla. Tämä on backtestingin ala.
Strategian backtesting
Backtestingin tavoitteena on antaa näyttöä siitä, että edellä kuvatun prosessin kautta tunnistettu strategia on kannattava, kun sitä sovelletaan sekä historialliseen että otoksen ulkopuoliseen dataan. Tämä asettaa odotukset siitä, miten strategia toimii ”todellisessa maailmassa”. Backtestaus ei kuitenkaan ole menestyksen tae eri syistä. Se on kenties kvantitatiivisen kaupankäynnin hienovaraisin osa-alue, koska siihen liittyy lukuisia ennakkoluuloja, joita on harkittava huolellisesti ja poistettava mahdollisimman paljon. Keskustelemme yleisimmistä vääristymätyypeistä, mukaan lukien look-ahead bias, survivorship bias ja optimization bias (tunnetaan myös nimellä ”data-snooping” bias). Muita tärkeitä alueita backtestingissä ovat historiatietojen saatavuus ja puhtaus, realististen transaktiokustannusten huomioon ottaminen ja vankan backtesting-alustan valitseminen. Keskustelemme transaktiokustannuksista tarkemmin jäljempänä kohdassa Execution Systems.
Kun strategia on tunnistettu, on tarpeen hankkia historiatietoja, joiden avulla voidaan suorittaa testausta ja kenties hienosäätöä. Datan toimittajia on huomattava määrä kaikissa omaisuusluokissa. Niiden kustannukset skaalautuvat yleensä datan laadun, syvyyden ja ajantasaisuuden mukaan. Perinteinen lähtökohta aloitteleville kvanttikauppiaille (ainakin vähittäistasolla) on käyttää Yahoo Financen ilmaista dataa. En puutu tässä liikaa palveluntarjoajiin, vaan keskityn mieluummin yleisiin seikkoihin, kun käsitellään historiallisia datasarjoja.
Historiallisen datan suurimmat huolenaiheet ovat tarkkuus/puhtaus, survivorship bias (eloonjäämisharha) ja mukauttaminen yritystoimiin, kuten osinkoihin ja osakkeiden splitteihin:
- Tarkkuus liittyy datan yleiseen laatuun – sisältääkö se mitään virheitä. Virheet voidaan joskus tunnistaa helposti, esimerkiksi piikkisuodattimella, joka poimii aikasarjadatasta virheelliset ”piikit” ja korjaa ne. Toisinaan niitä voi olla hyvin vaikea havaita. Usein on tarpeen käyttää kahta tai useampaa palveluntarjoajaa ja sitten tarkistaa kaikki niiden tiedot toisiinsa nähden.
- Survivorship bias on usein ilmaisten tai halpojen tietokokonaisuuksien ”ominaisuus”. Tietoaineisto, jossa on survivorship bias, tarkoittaa, että se ei sisällä omaisuuseriä, joilla ei enää käydä kauppaa. Osakkeiden tapauksessa tämä tarkoittaa pörssistä poistettuja/konkurssiin asetettuja osakkeita. Tämä harha tarkoittaa, että mikä tahansa osakekauppastrategia, jota testataan tällaisella tietokokonaisuudella, menestyy todennäköisesti paremmin kuin ”todellisessa maailmassa”, koska historialliset ”voittajat” on jo ennalta valittu.
- Yritystoimiin kuuluvat yrityksen suorittamat ”logistiset” toimet, jotka yleensä aiheuttavat raakahinnan asteittaisen muutoksen, jota ei pitäisi ottaa huomioon kurssin tuottojen laskennassa. Osinkosopeutukset ja osakkeiden splitit ovat yleisiä syyllisiä. Jokaisen tällaisen toimenpiteen yhteydessä on suoritettava takaisinkorjausprosessi. On oltava hyvin varovainen, ettei osakejakoa sekoiteta todelliseen tuotto-oikaisuun. Moni elinkeinonharjoittaja on jäänyt kiinni yhtiömuotoisesta toimesta!
Backtest-menettelyn suorittamiseksi on tarpeen käyttää ohjelmistoalustaa. Valittavana on joko oma backtest-ohjelmisto, kuten Tradestation, numeerinen alusta, kuten Excel tai MATLAB, tai täysin mukautettu toteutus ohjelmointikielellä, kuten Python tai C++. En puutu liikaa Tradestationiin (tai vastaavaan), Exceliin tai MATLABiin, koska uskon täydellisen sisäisen teknologiapinon luomiseen (jäljempänä esitetyistä syistä). Yksi tämän tekemisen eduista on se, että backtest-ohjelmisto ja toteutusjärjestelmä voidaan integroida tiiviisti jopa erittäin kehittyneiden tilastollisten strategioiden kanssa. Etenkin HFT-strategioiden kohdalla on olennaisen tärkeää käyttää räätälöityä toteutusta.
Backtestattaessa järjestelmää on pystyttävä määrittämään, miten hyvin se toimii. Kvantitatiivisten strategioiden ”alan standardimittarit” ovat maksimaalinen drawdown ja Sharpen suhdeluku. Maksimiarvon alenema kuvaa tilin pääomakäyrän suurinta laskua huipusta alareunaan tietyllä ajanjaksolla (yleensä vuosittain). Tämä ilmoitetaan useimmiten prosentteina. LFT-strategioilla on yleensä suurempi arvonalennus kuin HFT-strategioilla, mikä johtuu useista tilastollisista tekijöistä. Historiallinen backtest näyttää menneisyyden suurimman arvonalennuksen, joka on hyvä osoitus strategian tulevasta arvonalennuskehityksestä. Toinen mittari on Sharpen suhdeluku, joka määritellään heuristisesti ylituottojen keskiarvona jaettuna näiden ylituottojen keskihajonnalla. Ylituotolla tarkoitetaan tässä strategian tuottoa, joka ylittää ennalta määritellyn vertailuindeksin, kuten S&P500-indeksin tai 3 kuukauden Treasury Billin. Huomaa, että vuotuinen tuotto ei ole tavallisesti käytetty mittari, koska siinä ei oteta huomioon strategian volatiliteettia (toisin kuin Sharpen suhdeluvussa).
Kun strategia on backtestattu ja sen katsotaan olevan vapaa vääristymistä (sikäli kuin se on mahdollista!).), hyvällä Sharpe-suhteella ja minimoidulla arvonalennuksella, on aika rakentaa toteutusjärjestelmä.
Toteutusjärjestelmät
Toteutusjärjestelmä on keino, jolla välittäjä lähettää ja toteuttaa strategian tuottaman kauppaluettelon. Huolimatta siitä, että kauppojen luominen voi olla puoli- tai jopa täysin automatisoitua, toteutusmekanismi voi olla manuaalinen, puolimanuaalinen (eli ”yhdellä napsautuksella”) tai täysin automatisoitu. LFT-strategioissa manuaaliset ja puolimanuaaliset tekniikat ovat yleisiä. HFT-strategioita varten on tarpeen luoda täysin automatisoitu toteutusmekanismi, joka on usein tiiviisti kytketty kauppageneraattoriin (strategian ja tekniikan keskinäisen riippuvuuden vuoksi).
Toteutusjärjestelmää luotaessa keskeisiä näkökohtia ovat rajapinta välittäjään, transaktiokustannusten (mukaan lukien välityspalkkiot, liukumiset ja spread) minimointi ja live-järjestelmän suorituskyvyn eroaminen backtestatusta suorituskyvystä.
Liitännäisiä tapoja rajapinnan luomiseksi välittäjään on monia. Ne vaihtelevat välittäjän soittamisesta puhelimitse aina täysin automatisoituun suorituskykyiseen sovellusohjelmointirajapintaan (API) asti. Ihannetapauksessa haluat automatisoida kauppojesi toteuttamisen mahdollisimman pitkälle. Näin voit keskittyä jatkotutkimukseen ja voit käyttää useita strategioita tai jopa tiheämpiä strategioita (itse asiassa HFT on käytännössä mahdotonta ilman automatisoitua toteutusta). Edellä kuvatut yleiset backtesting-ohjelmistot, kuten MATLAB, Excel ja Tradestation, ovat hyviä matalamman taajuuden ja yksinkertaisempien strategioiden toteuttamiseen. Todellista HFT:tä varten on kuitenkin rakennettava sisäinen suoritusjärjestelmä, joka on kirjoitettu suorituskykyisellä kielellä, kuten C++:lla. Anekdoottina mainittakoon, että rahastossa, jossa työskentelin, meillä oli 10 minuutin ”kaupankäyntisilmukka”, jossa latasimme uusia markkinatietoja 10 minuutin välein ja toteutimme kauppoja näiden tietojen perusteella samassa ajassa. Tässä käytettiin optimoitua Python-skriptiä. Uskon, että C/C++ olisi ihanteellisempi, kun kyseessä on minuutti- tai sekuntitaajuusdata.
Suuremmissa rahastoissa toteutuksen optimointi ei useinkaan ole kvantti-kaupankäyttäjän tehtävä. Pienemmissä liikkeissä tai HFT-yrityksissä kauppiaat OVAT kuitenkin toteuttajia, joten paljon laajempi osaaminen on usein toivottavaa. Pidä tämä mielessä, jos haluat työllistyä rahastoon. Ohjelmointitaitosi ovat yhtä tärkeitä, ellei jopa tärkeämpiä kuin tilasto- ja ekonometriaosaamisesi!
Toinen tärkeä kysymys, joka liittyy toteutukseen, on transaktiokustannusten minimointi. Transaktiokustannuksissa on yleensä kolme osatekijää: Palkkiot (tai vero), jotka ovat välittäjän, pörssin ja SEC:n (tai vastaavan valtion sääntelyelimen) perimiä maksuja; liukuma, joka on ero sen välillä, millä hinnalla toimeksiantosi oli tarkoitus täyttää, ja sen välillä, millä hinnalla se todellisuudessa täytettiin; marginaali, joka on kaupankäynnin kohteena olevan arvopaperin osto- ja myyntihinnan välinen ero. Huomaa, että spread EI ole vakio, vaan se riippuu markkinoiden senhetkisestä likviditeetistä (eli osto-/myyntitoimeksiantojen saatavuudesta).
Transaktiokustannukset voivat tehdä eron erittäin kannattavan strategian, jolla on hyvä Sharpe-suhde, ja erittäin kannattamattoman strategian, jolla on surkea Sharpe-suhde, välillä. Transaktiokustannusten oikea ennustaminen backtestin perusteella voi olla haastavaa. Strategian taajuudesta riippuen tarvitset pääsyn historiallisiin pörssitietoihin, jotka sisältävät tick-tiedot osto- ja myyntihinnoista. Näistä syistä kokonaisia kvantitatiivisten asiantuntijoiden tiimejä työskentelee suurissa rahastoissa toteutuksen optimoimiseksi. Ajatellaanpa skenaariota, jossa rahasto joutuu purkamaan huomattavan määrän kauppoja (ja siihen on monia erilaisia syitä!). Kun rahasto ”dumppaa” niin paljon osakkeita markkinoille, se laskee hintaa nopeasti, eikä se välttämättä saa optimaalista toteutusta. Siksi on olemassa algoritmeja, jotka ”tiputtavat” toimeksiantoja markkinoille, mutta tällöin rahastolla on lipsumisen riski. Lisäksi muut strategiat ”saalistavat” näitä tarpeita ja voivat hyödyntää tehottomuutta. Tämä on rahastorakennearbitraasin alaa.
Viimeinen merkittävä kysymys toteutusjärjestelmissä koskee strategian suorituskyvyn poikkeavuutta backtestatusta suorituskyvystä. Tämä voi johtua useista syistä. Olemme jo keskustelleet perusteellisesti look-ahead biasista ja optimointiharhasta, kun tarkastelemme backtestejä. Joissakin strategioissa ei kuitenkaan ole helppoa testata näitä harhoja ennen käyttöönottoa. Näin tapahtuu ennen kaikkea HFT:ssä. Sekä toteutusjärjestelmässä että itse kaupankäyntistrategiassa voi olla virheitä, jotka eivät näy backtestissä, mutta näkyvät live-kaupankäynnissä. Markkinoilla on saattanut tapahtua järjestelmämuutos strategiasi käyttöönoton jälkeen. Uudet sääntely-ympäristöt, muuttuvat sijoittajien mielialat ja makrotaloudelliset ilmiöt voivat kaikki johtaa siihen, että markkinoiden käyttäytyminen ja siten strategiasi kannattavuus poikkeavat toisistaan.
Riskienhallinta
Kvantitatiivisen kaupankäynnin palapelin viimeinen osa on riskienhallintaprosessi. ”Riski” sisältää kaikki aiemmin käsittelemämme ennakkoluulot. Siihen kuuluu myös teknologiariski, kuten se, että pörssissä sijaitseviin palvelimiin tulee yhtäkkiä kiintolevyvika. Siihen sisältyy välitysriski, kuten välittäjän ajautuminen konkurssiin (tämä ei ole niin hullua kuin miltä se kuulostaa, kun otetaan huomioon viimeaikainen MF Globalin aiheuttama pelko). Lyhyesti sanottuna se kattaa lähes kaiken, mikä voisi mahdollisesti häiritä kaupankäynnin toteuttamista, ja näitä lähteitä on monia. Kvantitatiivisten strategioiden riskinhallinnalle on omistettu kokonaisia kirjoja, joten en yritä selvittää tässä kaikkia mahdollisia riskilähteitä.
Riskinhallinta kattaa myös niin sanotun optimaalisen pääoman allokaation, joka on portfolioteorian osa-alue. Se on keino, jolla pääoma allokoidaan joukolle erilaisia strategioita ja näiden strategioiden sisällä tehtäville kaupoille. Kyseessä on monimutkainen ala, joka perustuu ei-triviaaliin matematiikkaan. Alan standardi, jonka mukaan optimaalinen pääoman allokaatio ja strategioiden vipuvaikutus liittyvät toisiinsa, on nimeltään Kelly-kriteeri. Koska tämä on johdantoartikkeli, en puutu sen laskemiseen. Kelly-kriteeri tekee joitakin oletuksia tuottojen tilastollisesta luonteesta, jotka eivät useinkaan pidä paikkaansa rahoitusmarkkinoilla, joten kauppiaat ovat usein konservatiivisia sen toteuttamisessa.
Toinen keskeinen osa riskienhallintaa on oman psykologisen profiilin käsittelyssä. On monia kognitiivisia ennakkoluuloja, jotka voivat hiipiä kaupankäyntiin. Tosin tämä on kieltämättä vähemmän ongelmallista algoritmisessa kaupankäynnissä, jos strategia jätetään rauhaan! Yleinen ennakkoluulo on tappion välttäminen, jolloin tappiollista positiota ei suljeta tappion realisoimisesta aiheutuvan tuskan vuoksi. Samoin voitot voidaan ottaa liian aikaisin, koska pelko jo saavutetun voiton menettämisestä voi olla liian suuri. Toinen yleinen ennakkoluulo on niin sanottu recency bias. Tämä ilmenee, kun kauppiaat painottavat liikaa viimeaikaisia tapahtumia eivätkä pidemmän aikavälin näkymiä. Sitten on tietenkin klassinen pari emotionaalisia ennakkoluuloja – pelko ja ahneus. Nämä voivat usein johtaa ali- tai ylivelkaantumiseen, mikä voi aiheuttaa räjähdyksen (eli tilin oman pääoman suuntautuminen nollaan tai pahempaan!) tai voittojen pienenemisen.
Yhteenveto
Kuten nähdään, kvantitatiivinen kaupankäynti on erittäin monimutkainen, vaikkakin erittäin mielenkiintoinen kvantitatiivisen rahoituksen osa-alue. Olen tässä artikkelissa kirjaimellisesti raapaissut aiheen pintaa, ja siitä on tulossa jo melko pitkä! Kokonaisia kirjoja ja artikkeleita on kirjoitettu asioista, joita olen käsitellyt vain lauseen tai kaksi. Tästä syystä ennen kvantitatiivisen rahastokaupankäynnin työpaikkojen hakemista on välttämätöntä tehdä huomattava määrä pohjatutkimusta. Vähintäänkin tarvitset laajan taustan tilastoista ja ekonometriasta, ja sinulla on paljon kokemusta toteutuksesta ohjelmointikielen, kuten MATLABin, Pythonin tai R:n, avulla. Korkeamman frekvenssin päässä olevien kehittyneempien strategioiden osalta taitojesi joukkoon kuuluu todennäköisesti Linux-ytimen muokkaaminen, C/C++, assembly-ohjelmointi ja verkon viiveen optimointi.
Jos olet kiinnostunut yrittämään luoda omia algoritmisia kaupankäyntistrategioitasi, ensimmäinen ehdotukseni olisi hankkia ohjelmoinnista hyvä osaaminen. Suosittelen, että rakennat mahdollisimman suuren osan tiedonkeruusta, strategian backtesteristä ja toteutusjärjestelmästä itse. Jos oma pääomasi on vaakalaudalla, etkö voisi nukkua yöllä paremmin tietäen, että olet testannut järjestelmääsi täysin ja olet tietoinen sen sudenkuopista ja erityiskysymyksistä? Tämän ulkoistaminen myyjälle saattaa lyhyellä aikavälillä säästää aikaa, mutta pitkällä aikavälillä se voi tulla erittäin kalliiksi.