Pillinger Works

Algorithmic Trading — E-040 Algoritmikus kereskedés

SzakértőE-040
Készen állsz a fejlődésre?

Az anyagokat regisztráció nélkül is megnézheted ugyan, de ha nyitsz egy ingyenes fiókot, követheted a fejlődésedet és jutalmakat is kaphatsz utad során. Mely tanulmányi utad végén minden hasznos tudás birtokosa leszel, hogy profitábilis Kereskedővé válhass!

Csatlakozom →

Bevezetés

Az algoritmikus kereskedést gyakran úgy mutatják be, mint azt a pontot, amikor a kereskedő abbahagyja a kézi döntéshozatalt, és mindent egy számítógépre bíz. Ez a leírás hiányos. A mélyebb lényeg az, hogy a kereskedési döntéseket egyértelmű, tesztelhető szabályokká alakítjuk, amelyeket következetesen lehet értékelni és végrehajtani.Haladó kereskedőként nem az a legfontosabb különbség, hogy kézi vagy automatizált rendszerről van-e szó. A lényeg inkább az, hogy homályos diszkrecionális döntéshozatalról vagy operacionálisan definiált folyamatról beszélünk. Egy algoritmus lehet rendkívül egyszerű, miközben egy összetett rendszer tartalmazhat rejtett feltételezéseket, instabil paramétereket, gyenge adatokat vagy irreális végrehajtási feltételezéseket.Ebben a leckében az algoritmikus kereskedési folyamat felépítését vizsgáljuk: hogyan lesz egy ötletből szabályrendszer, hogyan lesz a jelből megbízás, hogyan kapcsolódik a kockázatkezelés a végrehajtáshoz, és hogyan vizsgálható meg, hogy az automatizálás valóban javítja-e a kereskedési folyamatot.

1. Mit jelent valójában az algoritmikus kereskedés?

Az algoritmikus kereskedés azt jelenti, hogy egy előre definiált eljárás határozza meg a kereskedéshez kapcsolódó döntések egy részét vagy egészét. Az eljárás foglalkozhat a jelgenerálással, a pozícióméretezéssel, a megbízástípussal, a végrehajtás időzítésével, a kilépéssel és a kockázati korlátokkal.Gyakorlati szempontból három szintet különíthetünk el. Az elsőnél a kereskedő szoftverrel számol vagy szűr, de a végső döntést ő hozza meg. A másodiknál a szoftver explicit jeleket generál, miközben a kereskedő felügyeli a végrehajtást. A harmadiknál a teljes döntési és végrehajtási lánc automatizált.Mindhárom lehet algoritmikus a gyakorlati értelemben. A meghatározó tulajdonság nem az automatizáltság mértéke, hanem az, hogy mennyire formalizált a döntési folyamat.

2. A kereskedési ötlettől az algoritmusig

Egy algoritmus nem tud mit kezdeni egy olyan homályos ötlettel, mint például „vegyünk erős részvényt visszahúzódás után”. Az ötletet megfigyelhető feltételekké kell alakítani.Az „erős” jelentheti például azt, hogy az ár egy mozgóátlag felett van, a relatív erő egy benchmarkhoz képest magas, vagy egy meghatározott visszatekintési időszakban bizonyos hozamot ért el. A „visszahúzódás” lehet meghatározott százalékos esés, adott számú gyertya vagy volatilitással korrigált visszatérés. A belépés időzítését is definiálni kell.A formalizálás során olyan feltételezések is láthatóvá válnak, amelyeket diszkrecionális kereskedésben könnyű észrevétlenül hagyni. Minden nem definiált kifejezés a következetlenség vagy a későbbi túltanulás potenciális forrása.

3. Válasszuk szét a jelet, a kockázatot és a végrehajtást

Egy professzionális algoritmikus rendszerben célszerű három réteget elkülöníteni.A jelréteg arra válaszol: létrejöjjön-e a kötés? A kockázati réteg arra: mekkora kitettség engedhető meg? A végrehajtási réteg pedig arra: hogyan próbáljuk meg beadni a megbízást?Ez az elkülönítés tisztábbá teszi a kutatást. Egy jelnek lehet pozitív várható értéke, miközben egy rossz méretezési szabály túlzott visszaesést okoz. Ugyanígy egy jó jel és megfelelő méretezés mellett is gyenge lehet az eredmény, ha a végrehajtási költségeket vagy a likviditást figyelmen kívül hagyjuk.A rétegek szétválasztása a hibakeresést is lehetővé teszi: ha változik a teljesítmény, megvizsgálható, hogy a jel, a kockázati modell vagy a végrehajtás változása áll-e mögötte.

4. Definiáljuk az információs határt

Az algoritmus csak olyan információt használhat, amely ténylegesen rendelkezésre állt a döntés pillanatában. Ez az elv központi szerepet játszik a backtesztelésben és az éles automatizálásban is.Minden változónál határozzuk meg annak időbélyegét és azt a legkorábbi pillanatot, amikor felhasználható. Különösen figyelni kell a napi gyertyákra, fundamentális adatokra, gazdasági eseményekre, vállalati eseményekre, utólag módosított adatbázisokra és olyan indikátorokra, amelyeket csak egy jövőben lezáruló gyertya alapján lehetne helyesen kiszámítani.Egy technikailag hibátlan program is tartalmazhat look-ahead torzítást, ha az inputok időzítése hibás. Az automatizálás nem szünteti meg a kutatási torzításokat; akár még szisztematikusabbá is teheti őket.

5. Adatfolyam a kereskedési logika előtt

Mielőtt az algoritmus döntést hozhatna, az adatoknak ellenőrzött formában kell megérkezniük. Egy alapvető adatfolyam tartalmazhat adatbeszerzést, validálást, normalizálást, időbélyeg-illesztést, feature-számítást, jelgenerálást és megbízáskezelést.Az adatminőségi ellenőrzéseknek fel kell ismerniük a hiányzó adatokat, duplikációkat, lehetetlen OHLC-kapcsolatokat, váratlan réseket, elavult árakat és inkonzisztens időbélyegeket. Éles kereskedésben azt is fel kell ismerni, ha az adatfeed leállt.Egy robusztus algoritmusnak biztonságosan kell leállnia vagy semleges állapotba kerülnie, amikor a szükséges adatok nem érhetők el. A „nincs jel” és az „érvénytelen adat” nem válhat csendben ugyanazzá az állapottá.

6. Determinisztikus szabályok és állapot

Egy használható algoritmusnak azonos bemenetek és azonos belső állapot mellett kiszámíthatóan kell viselkednie. Ez nem azt jelenti, hogy a piaci kimenetek kiszámíthatók; azt jelenti, hogy a döntési eljárás reprodukálható.Az állapot azért fontos, mert az algoritmus már tarthat pozíciót, lehet függőben lévő megbízása, elérhette a napi veszteséglimitet, vagy nemrég végrehajthatott egy kötést. Ha a szabályrendszer figyelmen kívül hagyja az állapotot, ismételt belépéseket vagy egymásnak ellentmondó megbízásokat generálhat.Az állapotátmenetek dokumentálása ezért nem pusztán szoftverfejlesztési részlet, hanem a kereskedési logika része.

7. Jelgyakoriság és lehetőségek

Az automatizálás rengeteg lehetőséget képes feldolgozni, de a több jel nem automatikusan jobb. A jelgyakoriság növelése csökkentheti az átlagos edge-et, növelheti a tranzakciós költségeket, vagy gyengébb minőségű piaci helyzeteket is bevonhat.A releváns kérdés az, hogyan változik a várható érték, amikor bővítjük a lehetőségek körét. Ha az új kötések átlagos R-többszöröse alacsonyabb vagy költségük magasabb, az algoritmus hatékonysága romolhat akkor is, ha aktívabbá válik.A gyakoriságot ezért kutatási változóként, nem pedig önmagában elérendő célként érdemes kezelni.

8. Megbízástípusok és végrehajtási logika

A jel megmondja a rendszernek, hogy mit szeretne tenni; a végrehajtási logika azt határozza meg, hogyan próbálja ezt megvalósítani. A piaci, limit, stop és egyéb megbízástípusok eltérő feltételezéseket hoznak létre az ár, a teljesülési valószínűség, a késleltetés és a kedvezőtlen kiválasztás tekintetében.A backtesztek gyakran olyan belépési árat feltételeznek, amely élő piacon nem mindig érhető el. Az algoritmusnak ezért modelleznie kell a jel időpontja, a megbízás beadása, a teljesülés és az azt követő ármozgás kapcsolatát.Likvid instrumentumoknál ez a különbség néha kicsi lehet. Gyors piacokon, kevésbé likvid papíroknál vagy stresszes környezetben azonban a realizált teljesítmény jelentős részét adhatja.

9. Csúszás, költségek és likviditás

A tranzakciós költség nem egyetlen szám. Ide tartozhat a jutalék, a spread, a slippage, a piaci hatás, a finanszírozási költség, a kölcsönzési költség és más, instrumentumfüggő tétel.Egy használható algoritmikus tesztnek következetes költségmodellt kell alkalmaznia, majd rosszabb feltételezések mellett is meg kell vizsgálnia az érzékenységet. Ha egy kis mértékű slippage-növekedés megszünteti az edge-et, a stratégia működési tartaléka csekély lehet.A likviditás időben is változik. Egy rendszer, amely normál környezetben könnyen tud pozíciót nyitni, volatilitási sokk vagy piaci stressz idején teljesen más végrehajtási tulajdonságokat mutathat.

10. Pozícióméretezés az algoritmuson belül

A pozícióméretezés alakítja át a jelet tényleges kitettséggé. Lehet fix, volatilitásalapú, kockázatalapú, vagy portfólió-allokációból származtatott.A lényeg, hogy a méretezés a rendszer része. Két algoritmus azonos belépési és kilépési jelet használhat, mégis teljesen eltérő equity curve-öt mutathat pusztán a méretezés miatt.Az algoritmus értékelésekor ezért a jel minőségét és a méretezés után kialakuló R-többszörös-eloszlást együtt kell vizsgálni. Egy mérsékelt edge-del rendelkező, kontrollált kockázatú stratégia működésileg stabilabb lehet, mint egy olyan rendszer, amelynek látszólagos teljesítménye agresszív kitettségtől függ.

11. Kockázati kontrollok és hibás állapotok

Az algoritmikus kereskedésnek explicit választ kell adnia az abnormális állapotokra. Ilyen lehet a hiányzó piaci adat, elutasított megbízás, duplikált megbízás, megszakadt API-kapcsolat, váratlan pozícióméret vagy ideiglenesen kereskedhetetlenné váló piac.A kockázati kontrollok közé tartozhat a maximális pozícióméret, a maximális portfóliókitettség, a napi veszteséglimit, a megbízásszám-korlát és a vészleállítási feltétel. Ezeket nem elegendő dokumentálni; tényleges rendszerviselkedésként is tesztelni kell.Az a kockázati kontroll, amely csak papíron létezik, de soha nem vizsgáltuk valósághű hibakörnyezetben, még nem tekinthető megbízható kontrollnak.

12. Egy algoritmikus rendszer backtesztelése

A backtesztnek reprodukálnia kell a tervezett rendszer információáramlását és működési sorrendjét. El kell különítenie a jel létrejöttét a megbízás végrehajtásától, és reális költség- és teljesülési feltételezéseket kell tartalmaznia.A cél nem a lehető legszebb equity curve létrehozása. A cél annak becslése, hogy a definiált folyamat hogyan viselkedett történelmi környezetben, és milyen gyengeségeket mutatott volna még a tőke kockáztatása előtt.Mivel az algoritmikus rendszerek nagyon könnyen és sokszor tesztelhetők, különösen kitettek az adatbányászati torzításnak és a túltanulásnak. Ezért a kutatási fegyelem a számítási kapacitás növekedésével még fontosabbá válik.

13. Validáció és Out-of-Sample bizonyíték

A rendszer fejlesztése után az értékelésnek olyan információra kell áttérnie, amelyet a fejlesztési döntésekhez nem használtunk fel. A Mintán kívüli tesztelés információs határt képez a kutatás és az értékelés között.Az erős eredmény nem pusztán egy pozitív szám. Vizsgáljuk meg, hogy a várható érték, az R-többszörös-eloszlás, a visszaesés, a volatilitásérzékenység és a kötési gyakoriság az eredeti mintán kívül is ésszerű marad-e.Ha egy rendszer a fejlesztési mintán nagyon jól teljesít, majd Mintán kívül drámaian megváltozik, akkor a különbséget kell megvizsgálni, nem pedig azonnal újabb szabályokat hozzáadni.

14. Az automatizálás nem szünteti meg a túltanulást

Az automatizálás rendkívül egyszerűvé teszi számos paraméterkombináció, szűrő, instrumentum, idősík és kilépési szabály tesztelését. Ez növeli annak lehetőségét is, hogy a rendszer olyan mintázatokat találjon, amelyek csak a tesztelt mintában működtek.Egy összetett algoritmus ezért kevésbé lehet megbízható, mint egy egyszerűbb, még akkor is, ha történelmi teljesítménye magasabb. A komplexitást kutatási indokkal kell alátámasztani.A paraméterek stabilitása, a Mintán kívüli tesztelés, a walk-forward értékelés és a kontrollált kutatási napló segít megkülönböztetni a megismételhető edge-et a történelmi zajhoz illesztett konfigurációtól.

15. Egy éles algoritmus monitorozása

Egy éles algoritmusnál nem elegendő a profitot és veszteséget figyelni. Hasznos működési mérőszám lehet az adat frissessége, a megbízási késleltetés, az elutasítási arány, a teljesülési arány, a realizált slippage, a kitettség, a pozíciók egyeztetése és a váratlan állapotváltozások.A teljesítmény monitorozásának azt is vizsgálnia kell, hogy az élő működés mennyire hasonlít a validált kutatási alaphoz. Ha a realizált R-többszörösök vagy költségek kilépnek a várt tartományból, definiált kivizsgálási folyamatra van szükség.A monitorozás célja nem az, hogy minden veszteséges kötésbe beavatkozzunk. A cél annak felismerése, hogy a rendszer továbbra is ugyanazt a folyamatot hajtja-e végre, amelyet korábban validáltunk.

16. Esettanulmány — A gyors momentum algoritmus

Egy momentumrendszert likvid részvényeken tesztelnek, és erős várható értéket mutat. Az algoritmus akkor vásárol, amikor egy rövid távú hozamküszöb teljesül, majd fix tartási idő után kilép.A kutatási verzió a jel árán történő végrehajtást feltételez. Élő szimulációban a megbízás egy intervallummal később kerül beadásra, és spreadet, valamint slippage-et is elszenved. Ezek után az edge jelentősen kisebb lesz.A tanulság nem az, hogy a momentum érvénytelen. Hanem az, hogy a jel minősége és a ténylegesen végrehajtható teljesítmény két külön mennyiség. Az algoritmust azon a szinten kell értékelni, amelyen valóban kereskedni fog.

17. Esettanulmány — A túlbonyolított szűrőrendszer

Egy kereskedő egy egyszerű kitörési szabállyal kezdi. Az optimalizálás során volatilitási, forgalmi, trend-, napszak- és több indikátorszűrőt ad hozzá. A végső backteszt lenyűgöző equity curve-öt eredményez.A Mintán kívüli teljesítmény azonban erősen visszaesik. A vizsgálat során kiderül, hogy sok szűrőt azután választottak ki, hogy már látták ugyanazokat a történelmi eredményeket.A probléma nem az, hogy minden szűrő matematikailag hibás. A probléma az, hogy a kutatási folyamat túl sok lehetőséget adott a történelmi zajhoz való illesztésre. Egy egyszerűbb, egyértelmű hipotézisen alapuló specifikáció erősebb bizonyítékot adhat még akkor is, ha fejlesztési teljesítménye alacsonyabb.

18. Az emberi felügyelet szerepe az automatizált kereskedésben

A teljes automatizálás nem az egyetlen professzionális működési modell. Az emberi felügyelet értékes lehet a rendszerállapot, szokatlan piaci környezet, vállalati események, tőzsdei problémák vagy a modell feltételezésein kívül eső helyzetek esetén.A kulcs annak definiálása, hogy az ember mit írhat felül. Ha a diszkrecionális beavatkozás korlátlan, akkor az éles folyamat már nem feltétlenül egyezik a tesztelt stratégiával.Ezért célszerű elkülöníteni az algoritmikus döntéseket, az előre definiált emberi eszkalációs szabályokat és azokat a helyzeteket, amikor a kereskedést egyszerűen le kell állítani a rendszer felülvizsgálatáig.

19. Építsük meg a legkisebb hasznos algoritmust

A jó fejlesztési folyamat gyakran a hipotézis teszteléséhez szükséges legkisebb rendszerrel indul. Egy jel, egy világosan definiált belépési mechanizmus, egy kilépési keret, explicit méretezés és reális költségek már elegendők lehetnek az első kutatási iterációhoz.Csak akkor érdemes további komplexitást hozzáadni, amikor az alapfolyamatot már megértettük. Minden új komponens újabb kutatási döntést és újabb adatbányászati lehetőséget jelent.A cél nem a minimalizmus önmagáért. A cél az, hogy minden kutatási lépés a lehető legtisztább bizonyítékot szolgáltassa.

20. Professzionális algoritmikus kereskedési keretrendszer

Egy professzionális keretrendszer hét szakaszba rendezhető:1. Definiáljuk a kereskedési hipotézist.2. Definiáljuk az információs határt és az adatkészletet.3. Formalizáljuk a jel-, kockázati és végrehajtási szabályokat.4. Reális költségekkel és állapotkezeléssel backteszteljük a rendszert.5. Mintán kívül és releváns környezetekben validáljuk.6. Monitorozással, egyeztetéssel és explicit hibakezeléssel telepítjük.7. Az élő működést összevetjük a validált kutatási alappal.Minden szakasznak ellenőrizhető nyomot kell hagynia. Így a rendszer reprodukálható marad, és később meghatározható, hogy egy változtatás valóban javította-e a stratégiát, vagy csak a minta-specifikus eredményt módosította.

21. Szakértői gyakorlat — Készíts algoritmikus specifikációt

Válassz egy olyan kereskedési ötletet, amelyet már jól ismersz, és készíts róla teljes algoritmikus specifikációt anélkül, hogy még kódolnád.Határozd meg:• a pontos instrumentum-univerzumot;• az adatmezőket és időbélyegeket;• a jel feltételeit;• a belépés időzítését;• a megbízástípust és végrehajtási feltételezést;• a pozícióméretezést;• a kilépési feltételeket;• a portfólió- és hibásállapot-korlátokat;• a tranzakciós költségek feltételezéseit;• az elsődleges teljesítménymérőt;• a Mintán kívüli validáció tervét.Ezután tedd fel a kérdést: a specifikáció mely részeit ismerted valóban már a teszteredmények megtekintése előtt, és mely részeket azért választottad, mert javították a történelmi teljesítményt? Ez a különbségtétel alapvető a túltanulás és az adatbányászati torzítás elleni védekezésben.

22. Tudásellenőrzés

1. Mitől algoritmikus egy kereskedési folyamat?2. Miért érdemes szétválasztani a jelet, a kockázatot és a végrehajtást?3. Miért kritikus az információ időzítése egy algoritmikus backtesztben?4. Nevezz meg három végrehajtási hatást, amely csökkentheti a backtesztelt edge-et.5. Miért ronthatja a magasabb jelgyakoriság az összteljesítményt?6. Mi az Out-of-Sample bizonyíték szerepe?7. Miért növelheti az automatizálás a túltanulás kockázatát?8. Mit érdemes monitorozni az élő P&L-en kívül?9. Miért fontos az állapotkezelés?10. Mi a legkisebb hasznos algoritmussal való indulás célja?Az erős válasz nem elszigetelten definiálja a fogalmakat, hanem összekapcsolja őket: az algoritmikus rendszer az információtól a döntésen, a kockázaton és a végrehajtáson keresztül vezető lánc, és minden láncszemnek összhangban kell maradnia a stratégia validálásához használt bizonyítékkal.