3. november 2026 · izvrševanje

Papirno smo trgovali bazni posel. Izpolnila se je ena noga.

Papirno smo trgovali bazni posel. Izpolnila se je ena noga.

Funkcija se je imenovala enter_pack. To bi moralo biti opozorilo. Raziskovalni agent je napisal BTC cash-and-carry: ko se perpetual trguje več kot osem bazičnih točk nad spotom, kupi spot, shortaj perp, ostani pri miru. Funding in baza bosta opravila ostalo. Backtest je obe nogi izpolnil v isti milisekundi, po midu, plus tick vljudnosti. Krivulja kapitala je bila stopnišče. Nihče je ne bi označil za vznemirljivo. Prav to je bila prodajna točka.

V ponedeljek smo ga povišali na papir.

Ponedeljek: paket, ki se je vedno izpolnil

Prvi signal je pristal ob 11:17 UTC. Baza na zaslonu je bila 9.4 bps, perp drag. V backtestu je enter_pack vrnil dve izpolnitvi in ostanek nič. Na papirju je vrnil spot izpolnitev 0.40 BTC po asku in počivajoči short na perpu, ki ni trgoval.

Spot je plačal 4 bp taker provizijo in približno 1 bp spreada. Cena perpa, ki smo jo želeli, je bila še v knjigi, potem je ni bilo več. Dvajset sekund pozneje je kotirana baza znašala 5 bps, ker smo pravkar dvignili spot. Štirideset sekund pozneje se je perp izpolnil, po premiku. Bili smo zapakirani. Bili smo zapakirani pri bazi, ki ni več pokrila vstopa in izstopa.

Backtest bi knjižil »+9.4 bps carry, ostanek 0.« Blotter je imel 4 bps stroška spot takerja, 40-sekundni nezavarovani long in vstopno vrzel približno 5. Imel sem vzorec ene in, vseeno, preveč zaupanja v stopnišče.

Torek: odprli smo funkcijo

enter_pack je vzel seznam nog in ciljni mid. Zankal je, vsako nogo izpolnil po mid * (1 ± slip) in zapisal eno vrstico portfelja. Drugega časovnega žiga ni bilo. Ni bilo veje, v kateri druga noga ne bi obstajala. Unit test je trdil residual == 0.

To je test, zaradi katerega se počutiš kot odrasel. Nikoli ne pade.

Paket smo razbili na dva naloga z lastnim stanjem: submitted, partial, filled, canceled. Incomplete je postal objekt prvega razreda. Zgodovinska ponovitev še vedno ni imela prave knjige, zato smo goljufali. Drugo izpolnitev zakasni z izžrebom iz ponedeljkovega čakanja (povprečje 26 sekund, rep, ki mi ni bil všeč) in njeno ceno zamakni za tisto, kar je v tem oknu naredil spot. Grobo, a stopnišče je pred kosilom dobilo zareze: paketi, ki so vstopili pri 3 bps, paketi, ki nikoli niso postali paketi.

Sreda: tri sekunde, potem odvrzi

Če druga noga ni notri v treh sekundah, splošči prvo. Tam bi morali začeti. Zveni konservativno, dokler ne ovrednotiš prekinitve. Sploščitev pomeni, da si prečkal spot za vstop in ga prečkaš za izstop. Dve taker proviziji, dva spreada, nič carryja, nič fundinga. V prepisani ponovitvi te prekinitve niso bile redke. Zgoščevale so se na barih, kjer se je baza zdela najbolj »prava«, kar so običajno bari, kjer že nekaj teče skozi spot.

Do srede zvečer smo imeli sedemnajst papirnih signalov za prepir.

17papirni signali v štirih dneh
7paketi z obema izpolnjenima nogama
18 bpspoznejši premik proti preostalemu longu
Backtest, ponedeljek zjutrajPapir, do srede
VstopObe nogi po midu, en časovni žigSpot po asku; perp 5–40s pozneje ali nikoli
OstanekVedno 0Nezavarovani pri 10 od 17 signalov
Provizije pri delujočem posluDva takerjaDva takerja ali štirje, če prekinemo
Gonilo PnLBaza + fundingKar koli je spot naredil, medtem ko smo čakali
Paket je popoln, ko sta oba naloga izpolnjena, sicer je usmerjena pozicija, ki je nisi dimenzioniral. Ostanek vrednoti proti živi knjigi ves čas, dokler obstaja. Če ga ne moreš vrednotiti, strategije ne moreš poganjati.

Kolega ima še vedno notebook, ki paket obravnava kot kotiran produkt, BTC_CARRY, z enotnim 2 bp »davkom na izvrševanje«. Ta notebook mi je bil všeč. Ustvaril je isto stopnišče kot agent. Davek je povprečje. Sirote so porazdelitev. Povprečij v tanki uri ne povozi; 0.40 BTC preostalega spota pa lahko.

Četrtek: preostanek, potem kava

Tri sekunde so prekinile skoraj vse, ko smo čakali tudi v vrsti. Papir smo sprostili na petnajst. V četrtek ob 02:11 UTC se je spot izpolnil, perp pa ne. Še vedno sem bil v fazi žalovanja »počival bo, dvignil se bo«, ko sem šel skuhat kavo.

02:11:08 izpolnjeno BTCUSDT 0.40 buy
02:11:08 oddano BTCUSDT-PERP 0.40 sell, post-only
02:11:41 še deluje
02:26:00 oznaka ostanka −18.1 bps

BTC je v tihem oknu padel za 18 bps. Ostanek je bil celoten posel. Funding, ko se je izpisal, je knjižil perp, ki ga nismo imeli. Spot je samo sedel in bil long. Nočna pot izvirnega backtesta nikoli ni vsebovala enonoge pozicije, zato nikoli ni zastavila vprašanja, ki ga zastavimo vsaki drugi knjigi: kakšen je najslabši bar, ki ga ta preostanek lahko izpiše, in kje je stop za pozicijo, ki je nismo nameravali držati?

Tudi sedem polnih paketov ni bilo junakov. Ko se je izpisala druga noga, je naš lastni dvig spota že pritisnil na indeks, in vstopna baza je bila 3–5 bps slabša od posnetka, ki je sprožil signal. Prag osemih bps je bil številka o zaslonu.

Kaj bi naslednjič izpustili

Ne bi dostavili večnogega posla kot ene funkcije izpolnitve. Isto pravilo za perp-spot carry, koledar ali call vertical, ki ga agent odda kot dva limita in potem praznuje, ko se oba »izpolnita« po midu.

  1. Stanje naloga po nogi, vključno z delnimi. Paket obravnavaj kot starša dveh ticketov.
  2. Časovnik max-orphan, ki se res sproži, in pot sploščitve, ki na izhodu plača dva spreada.
  3. Mark-to-book na ostanku, s stopom, dimenzioniranim za preostanek. Zapakirani net je napačen nominal.
  4. Brez knjiženega carryja, brez natečenega fundinga, dokler nista obe nogi notri. Incomplete je incomplete.
  5. Zavrni mid-on-mid kot privzeto za karkoli z dvema ticketoma. Če moraš ugibati, ugibaj slabše na tanki nogi in pozneje pri drugi izpolnitvi.

In test_pack_is_atomic ne bi spustili v repo. Atomic je lastnost matching enginea, ne pomožne funkcije. BTC spot in BTC perpetual sta dve knjigi, ki se včasih rimata. Papir je tam, kjer se nehata rimati, in prav to je edini razlog, da je bilo stopnišče sploh zanimivo.

backtestingcash-and-carryizvrševanjepapirno trgovanjekripto terminske pogodbe
← Vse objave