A függvényt enter_pack-nek hívták. Ez lett volna a figyelmeztetés. Egy kutatási ágens írt egy BTC cash-and-carryt: ha a perpetual több mint nyolc bázisponttal a spot fölött kereskedik, vegyél spotot, shortold a perpet, ülj nyugton. A funding és a bázis elintézné a többit. A backtest mindkét lábat ugyanabban a milliszekundumban teljesítette, mid áron, plusz egy tick udvariasságot. Az equity görbe egy lépcső volt. Senki sem nevezné izgalmasnak. Pont ez volt az eladási érv.
Hétfőn papírra léptettük elő.
Hétfő: a csomag, amely mindig teljesült
Az első jelzés 11:17 UTC-kor érkezett. A képernyőn a bázis 9.4 bps volt, a perp drága. A backtestben a enter_pack két teljesülést adott vissza, nulla reziduállal. Papíron egy 0.40 BTC-s spot teljesülést adott az askon, és egy könyvön álló shortot a perpen, amely nem kötött.
A spot 4 bp taker díjat fizetett és körülbelül 1 bp spreadet. A perp ár, amit akartunk, még a könyvön volt, aztán már nem. Húsz másodperccel később a jegyzett bázis 5 bps volt, mert épp megvettük a spotot az askon. Negyven másodperccel később a perp teljesült, a mozgás után. Csomagban voltunk. Csomagban voltunk egy olyan bázison, amely már nem fizette ki a be- és kilépést.
A backtest a „+9.4 bps carry, reziduális 0.” sort könyvelte volna. A blotteren 4 bps spot taker költség volt, egy 40 másodperces fedezetlen long, és egy körülbelül 5-ös belépési rés. Egyelemű mintám volt, és mégis túl sok bizalmam a lépcsőben.
Kedd: kinyitottuk a függvényt
enter_pack egy láblistát és egy cél-midet kapott. Ciklusban ment, minden lábat mid * (1 ± slip) áron teljesített, és egy portfóliósorba írt. Nem volt második időbélyeg. Nem volt olyan ág, amelyben a második láb nem létezik. A unit teszt a residual == 0 feltételt assertálta.
Ez az a teszt, amitől felnőttnek érzed magad. Soha nem fog elbukni.
A csomagot két megbízásra bontottuk, saját állapottal: beküldve, részleges, teljesült, törölve. Az incomplete első osztályú objektum lett. A historikus replaynek még mindig nem volt valódi könyve, ezért csaltunk. A második teljesülést késleltettük egy húzással a hétfői várakozásból (átlag 26 másodperc, egy farok, ami nem tetszett), és az árát elcsúsztattuk annyival, amennyit a spot abban az ablakban mozgott. Durva, de a lépcsőn már ebéd előtt bevágások nőttek: csomagok, amelyek 3 bps-en léptek be, csomagok, amelyek soha nem lettek csomagok.
Szerda: három másodperc, aztán dobjuk ki
Ha a második láb három másodpercen belül nincs meg, zárd az elsőt. Innen kellett volna kezdeni. Konzervatívnak hangzik, amíg meg nem árazod a megszakítást. A zárás azt jelenti, hogy a belépéshez keresztezted a spotot, és a kilépéshez is keresztezed. Két taker díj, két spread, nincs carry, nincs funding. Az átírt replayben ezek a megszakítások nem voltak ritkák. Azokon a barokon csoportosultak, ahol a bázis a „legvalódibbnak” tűnt, ami általában azok a barok, ahol már valami átfolyik a spoton.
Szerda estére tizenhét papírjelzésünk volt, amivel vitatkozhatunk.
| Backtest, hétfő reggel | Papír, szerdára | |
|---|---|---|
| Belépés | Mindkét láb mid áron, egy időbélyeg | Spot az askon; perp 5–40s később, vagy soha |
| Reziduális | Mindig 0 | Fedezetlen 17-ből 10 jelzésen |
| Díjak egy működő ügyleten | Két taker | Két taker, vagy négy, ha megszakítjuk |
| PnL-hajtóerő | Bázis + funding | Amit a spot csinált, amíg vártunk |
Egy kollégának még mindig van egy notebookja, amely a csomagot tőzsdei termékként kezeli, BTC_CARRY, lapos 2 bp „végrehajtási adóval”. Szerettem azt a notebookot. Ugyanazt a lépcsőt hozta, mint az ágens. Az adó egy átlag. Az árvák egy eloszlás. Az átlagokat nem gázolják el egy vékony órában; 0.40 BTC maradék spotot igen.
Csütörtök: maradék, aztán kávé
Három másodperc szinte mindent megszakított, amint a sorra is vártunk. A papírt tizenötre lazítottuk. Csütörtökön 02:11 UTC-kor a spot teljesült, a perp nem. Még a „ott fog állni, majd felemelik” gyászfázisban voltam, amikor elmentem kávét főzni.
02:11:08 teljesült BTCUSDT 0.40 buy
02:11:08 beküldve BTCUSDT-PERP 0.40 sell, post-only
02:11:41 még dolgozik
02:26:00 reziduális mark −18.1 bps
A BTC 18 bps-t esett egy csendes ablakban. A reziduális volt az egész ügylet. A funding, amikor kinyomtatódott, egy olyan perpre írt jóváírást, ami nem volt nálunk. A spot csak ült ott longként. Az eredeti backtest overnight pályája soha nem tartalmazott egylábú pozíciót, így soha nem tette fel a kérdést, amit minden más könyvnél felteszünk: mi a legrosszabb bar, amit ez a maradék kinyomtathat, és hol van a stop egy olyan pozícióra, amit nem akartunk tartani?
A hét teljes csomag sem volt hős. Mire a második láb kinyomtatódott, a saját spotvételünk már ránehezedett az indexre, és a belépési bázis 3–5 bps-szel volt rosszabb, mint a snapshot, amely a jelzést kiváltotta. A nyolc bps-es küszöb egy szám volt a képernyőn.
Amit legközelebb kihagynánk
Nem szállítanánk ki egy több lábú ügyletet egyetlen fill függvényként. Ugyanez a szabály egy perp-spot carryre, egy calendarra, vagy arra a call verticalra, amelyet egy ágens két limitként ad be, majd ünnepel, amikor mindkettő „teljesül” mid áron.
- Lábankénti megbízásállapot, a részlegesekkel együtt. A csomagot két ticket szülőjeként kezeld.
- Egy max-árva időzítő, amely tényleg elsül, és egy záró útvonal, amely két spreadet fizet kifelé.
- Mark-to-book a reziduálison, a maradékra méretezett stoppal. A becsomagolt nettó a rossz névleges.
- Nincs jóváírt carry, nincs felhalmozott funding, amíg mindkét láb nincs meg. A hiányos hiányos.
- Utasítsd el a mid-on-midet alapértelmezettként bármire, aminek két ticketje van. Ha tippelned kell, tippelj rosszabbat a vékony lábon, és későbbre a második teljesülésre.
És nem engednénk a test_pack_is_atomic-t a repóba. Az atomic a matching engine tulajdonsága, nem egy segédfüggvényé. A BTC spot és a BTC perpetual két könyv, amelyek néha rímelnek. A papír az, ahol abbahagyják a rímelést, és pont ezért volt valaha is érdekes a lépcső.



