Egy keddi napon, 08:00 UTC-kor egy kriptotőzsde megváltoztatta egy közepes árú perpetual kontraktus árlépésközét. A bázisstratégiánk ezt nem vette észre. A jelzése továbbra is ugyanazt a spot és futures közötti spreadet figyelte, a kockázati limitek nem változtak, a visszateszt pedig ugyanazokat az eredményeket mutatta.
A papírkereskedés viszont észrevette. A megbízásadapter lefelé kerekítette a vételi limitárat a legközelebbi megengedett árra. Így a megbízás egy árlépéssel a visszatesztben modellezett szint alá került. A piac elérte a régi árat, a szimulált megbízás teljesült, a papírmegbízás viszont érintetlenül várakozott. Ebédidőre a stratégia pozícióállománya féloldalassá vált.
Az eset elsőre apró kerekítési hibának tűnt. Valójában a modell határánál volt a probléma: a stratégia ismerte az árakat, a visszateszt viszont nem ismerte a kereskedési helyszín árrácsát.
Egyszerű bázisjelzéssel kereskedtünk: spotot vettünk és perpetualt adtunk el, amikor a futures prémiuma egy küszöb fölé emelkedett. A megbízások passzívak voltak, mert a várt báziselőny kicsi volt. Néhány árlépés is eldönthette, hogy a belépésből marad-e annyi, ami fedezi a díjakat és a későbbi zárást.
Mi változott az árlépésköz módosításakor?
A frissítés előtt a perpetual 0.01-es lépésekben fogadta az árakat. Utána az érintett ársávban 0.05-ös lépésekben fogadta őket. A jelzés 42,318.03-as célárú eladást számított, ami a régi szabály szerint érvényes ár volt. Az új szabály szerint ez az ár érvénytelen volt.
A tőzsde elutasította az érvénytelen árakat, az adapterünknek azonban volt egy tartalék megoldása: lefelé kerekítette az eladási árat 42,318.00-ra. Ez továbbra is érvénytelen volt. Egy második tartalék megoldás újra kerekített, ezúttal 42,318.05-ra, ami már érvényes volt, de az eladó számára kevésbé agresszív árat jelentett. A megbízással már nem lehetett a modellezett áron eladni. A kódelágazást egy másik piachoz írták, és az elutasítást csendben átárazott megbízássá változtatta.
Ez az egy megbízás két külön kérdést vetett fel. Először: milyen árat fogadhat el a kereskedési helyszín? Másodszor: hogyan reagáljon a stratégia, ha a kívánt ára nem illeszkedik az árrácsra? Az elsőre a tőzsde ad választ. A másodikról a stratégiának vagy a végrehajtási szabályzatnak kell döntenie.
| Megbízási szándék | Árrács szabálya | Jellemző kerekítési irány | Mit változtathat meg |
|---|---|---|---|
| Vételi limit | Az árnak az árlépésköz egész számú többszörösének kell lennie | Lefelé, hogy a limitárat ne lépje túl | Kisebb teljesülési valószínűség |
| Eladási limit | Az árnak az árlépésköz egész számú többszörösének kell lennie | Felfelé, hogy elérje vagy meghaladja a limitárat | Kisebb teljesülési valószínűség |
| Piacképes limit | Az árkorlátokat is be kell tartania | A maximálisan elfogadható ártól függ | Átmegy-e a spreaden |
Nincs minden helyzetben helyes kerekítési szabály. Ha a vételi árat lefelé kerekítjük, megőrizzük a vevő árkorlátját, de kisebb lehet a teljesülés esélye. A felfelé kerekítés piacképessé teheti a megbízást, ami módosítja a díjakat és az árhatást. A passzív bázisbelépésünknél helytelen volt csendben elmozdítani a megbízást. A stratégia választott egy célárat; az adapter megváltoztatta a megbízás gazdasági feltételeit.
Miért tűnt továbbra is jónak a visszateszt?
A történelmi megbízásszimulátorunk folytonos számként kezelte a limitárakat. Ha a gyertya minimuma elérte a vételi árat, vagy a maximuma az eladási árat, teljesülést számolt. Ez eleve nagyvonalú közelítés egy passzív megbízásnál, hiszen az, hogy a piacon kötés született a limitáron, semmit sem mond a sorban elfoglalt helyünkről. Az árlépésköz változása azonban ennél is alapvetőbb rést tárt fel: az adott áron nem is létezhetett volna a megbízás.
Ugyanazokat a döntéseket játszottuk vissza úgy, hogy az új árrácsot a hatálybalépés időpontjától alkalmaztuk. Több teljesülés eltűnt. Néhány megbízás olyan árra kerekült, amely átment a spreaden, így maker díj helyett taker díjat vont maga után. Emiatt eltért a pozíciók későbbi alakulása is, tehát a későbbi fedezések és zárások szintén megváltoztak. Egy metaadatnak látszó szabály az egész ügyletsorozatot módosította.
A változás ráadásul nem egy grafikonon elrejtett meglepetés volt. A kereskedési helyszín közzétette az instrumentumszabály módosítását és annak hatálybalépési időpontját. A piaci adatokat gondosan tároltuk, az instrumentum-metaadatok viszont egy, induláskor frissülő gyorsítótárban éltek. A visszateszt minden múltbeli dátumhoz a mai szabályokat olvasta be; a papírkereskedés pedig elavult szabályokat használt a folyamat újraindításáig. Egyik környezet sem tükrözte, hogy a kereskedési helyszín az egyes időpontokban mit engedett meg.
Hogyan modellezzük az árlépésköz változását a visszatesztben?
Verziózzuk az instrumentumszabályokat érvényességi időszakokkal, ahogy más, adott időponthoz kötött bemeneteket is. Legalább a hatálybalépés időpontját és a megbízás ellenőrzéséhez szükséges szabályértékeket őrizzük meg: az árlépésközt, a mennyiségi lépésközt, a minimális mennyiséget és az esetleges ársávokat. A szimulátornak a szimulált döntés időpontjában érvényes szabálykészletet kell betöltenie.
Ezután tegyük egyértelművé a megbízáskezelést. Ha egy célár érvénytelen, utasítsuk el, kerekítsük egy dokumentált szabály szerint, vagy számítsuk újra a célárat az árrácson. Rögzítsük, melyik történt. Hasznos lehet egy olyan visszateszt, amely automatikusan kijavít minden megbízást egy adott végrehajtási szabályzat becsléséhez, de ne tüntesse fel ezt a szabályzatot tőzsdei teljesülésként.
Passzív megbízásoknál az árlépésköznek megfelelő ár csak az első feltétele a teljesülésnek. Azt is modellezni kell, hogy a piac kötött-e a mi árunkon túl, mekkora sor áll előttünk, mennyi a törlés, és milyen díjszintet értünk volna el.
Két ellenőrzést vezettünk be. Az egyik minden létrehozott megbízást ellenőriz az adott időpontban érvényes instrumentumszabályok szerint, és azonnal hibát jelez az érvénytelen áraknál vagy mennyiségeknél. A másik összehasonlítja a visszateszt és a papírkereskedési adapter véglegesített, normalizált megbízását: az oldalt, az árat, a mennyiséget, az érvényességi időt és a díjszándékot. Ha eltérnek, a futás nem tekinthető összehasonlíthatónak.
Ezután újrajátszottuk a keddi változást. Az árrács frissítése után a visszateszt már nem jelzett teljesülést 42,318.03-as áron. A papírkereskedés és a szimuláció ugyanúgy döntött minden érvénytelen célárról, akkor is, ha a döntés a megbízás kihagyása volt.
A jelzés nem romlott el. Elavulttá váltak a kereskedhető instrumentumra vonatkozó feltételezései. Egy stratégia képes alkalmazkodni az új árlépésközhöz, de csak akkor, ha a kutatási rendszer a kereskedési helyszín szabályait is a szimulált piac részének tekinti.
← Összes bejegyzés


