Pirmadienį padarėme tą atsakingą dalyką. Agentas turėjo momentum strategiją vidutinės kapitalizacijos USDT-M perpetual, su clip po 25,000 USDT per sandorį, o pirmasis atgalinis testas be apimties filtro užpildė kiekvieną signalą taip, tarsi knyga būtų BTC. Todėl įdėjome vadovėlinius vartus: 20 barų po 1 minutę dolerinė apimtis turėjo viršyti 20 kartų clip, kad orderis galėtų išeiti. 20 minučių, pusė milijono dolerių juostos. Moneta užimtą dieną spausdino apie $40 million. Filtras paliko daugumą signalų. Equity kreivė tapo mažiau dantyta. Paleidome į popierių.
Po 11 valandų 25,000 USDT pirkimas suvalgė 8,400 bid ir sustojo. Tos minutės 20 barų apimtis buvo $1.14 million. Filtras buvo pasakęs taip.
Pirmadienis: filtras, kuris leido jaustis sąžiningiems
Agento pastaba prie pull request buvo „pridėtas pajėgumo patikrinimas, 20× notional.“ Patvirtinau. Tą sakinį esu patvirtinęs ir anksčiau. Tai tokia taisyklė, kurią parašai po to, kai kas nors parodo atgalinį testą, prekiavusį $4,000-OI moneta $50,000 clip, ir visi kambaryje daro grimasą, ir tu pridedi apimties kartotinį, kad tai nepasikartotų.
Pirmadienį taisyklė padarė tai, ką atgaliniame teste visada daro. Išmetė mirusias valandas. Paliko valandas, kuriose pačios biržos apimties skaičius atrodė garsus. Apyvarta krito apie trečdalį. Vidutinis sandorio dydis liko 25,000, nes užpildymo modelis yra bailys: visą clip paima last-plus-kelių-bps, kai tik vartai atidaryti. Niekas nepaklausė knygos, ar 25,000 ten iš tikrųjų sėdėjo.
Vis dar krūpteliu, kai monetos 24h apimtis yra apvalus skaičius šalia plono open interest. Tai likutis iš 2021, kai Discord „market making“ botai buvo 2 subpaskyros, prekiaujančios viena su kita ir klijuojančios apimties ekrano kopiją į #brag. Juosta atrodo kaip vakarėlis. Knyga — kartonas. Sakiau sau, kad 20× filtras ant 1 minutės barų yra būdas iš to išaugti. Ne. Tai būdas kartoną suvidurkinti į lygesnį skaičių.
Antradienis: popierius, tada likutis
Popierius prasidėjo maloniai. Pirmi 5 clip užsipildė 2–4 šuoliais žemyn ask. Bjauru, bet padaryta. Tada 14:07 UTC, long signalas, 25,000 USDT, knygos viršus 1,100, kitas lygis 2,400, tada oras. Gavome 8,400 užpildyta kaip taker ir 16,600 resting. Po 40 sekundžių likutis atšauktas mūsų pačių time-in-force. Strategija manė esanti long visą clip. Sąskaita buvo long trečdalį vieno.
Bet filtras buvo pasakęs taip. Ištraukiau barą. Dolerinė apimtis per 20 minučių iki 14:07 buvo $1.14 million, ramiai virš $500k. Maždaug $380k iš to $1.14 million buvo įrašų poros: ta pati kaina, tas pats dydis, priešingos aggressor vėliavėlės, 2–8 milisekundžių skirtumu, ir bid/ask dydis toje kainoje nepajudėjo. Tie sandoriai mokėjo komisinius vienas kitam. Jie mums nepasiūlė 25,000 USDT skylės.
Trečiadienis: juostos derinimas su knyga
Trečiadienis buvo lėta diena, ta, kuriai kitą kartą biudžete skirčiau 2 kartus daugiau laiko. Paėmėme 5 darbo dienų sandorius ir L2 momentines nuotraukas tos pačios perp, 100ms knygos nuotraukas ir klasifikavome kiekvieną įrašą pagal knygą momentinė nuotrauka prieš ir momentinė nuotrauka po.
- Jei dydis sandorio kainoje krito maždaug sandorio dydžiu, jis palietė knygą. Skaičiuok.
- Jei pirkimas ir pardavimas vienodo dydžio įrašyti vienoje kainoje be knygos pokyčio, vadink wash ir išmesk iš bet kurio pajėgumo skaičiaus.
- Jei sandoris perėjo per kelis lygius ir tie lygiai dingo, tai tikras taker. Skaičiuok ir neapsimesk, kad ir tu gali paimti tą likvidumą; kažkas jau paėmė.
- Jei sandoris pažymėtas kaip likvidacija, tai tikras dydis, ir tai paskutinis dydis, kurį nori naudoti kaip įrodymą, kad tu gali kirpti 25,000. Priverstinis orderis lenktyniauja su tavimi.
Momentinės nuotraukos šiek tiek meluoja. Viskas, kas užsipildo ir atsistato per 100ms, atrodo kaip vaiduoklis, o kai kurie tikri market-makeriai cancel-replace taip greitai. Vėliau ėmėme kelių minučių 10ms knygų imtį ir wash dalis pajudėjo keliais punktais, ne 2 kartus. Galiu gyventi su keliais punktais. Negaliu gyventi laikydamas biržos apimties tickerį likvidumo surašymu.
AggTrades jau sulipdo vieną taker, smogiantį keliems maker vienoje kainoje. Jie nesulipdo 2 subpaskyrų, darančių wash. Jei tavo „švarus“ srautas yra agreguoti sandoriai, vis tiek turi šią problemą. Tiesiog turi ją su mažiau eilučių.
O 24h apimtis tickerio API yra ta pati nešvari suma, pavėluota, todėl tyrimų agentai ją myli. Vienas laukas. Visada yra. Atrodo kaip funkcija. Tai rinkodaros statistika, kuri atsitiktinai sėdi market-data protobuf.
Ketvirtadienis: savaitė vienoje lentelėje
5 sesijos, tas pats clip, ta pati 20× taisyklė, tas pats užpildymo modelis atgaliniame teste. Popierinės prekybos užpildymo santykis yra užpildytas notional, padalytas iš ketinto notional tų orderių, kuriuos tą sesiją tikrai išsiuntėme. Pirmadienio popierius tuščias, nes dar buvome atgaliniame teste.
| Sesija | Biržos juosta | Knygą judinanti | Wash tipo | Likv. įrašai | Filtras sakė eiti | Popierinis užpildymas |
|---|---|---|---|---|---|---|
| Pir | $38.4m | $22.6m | $13.5m | $2.3m | 41 / 48 signalai | n/a |
| Ant | $41.1m | $24.2m | $15.2m | $1.7m | 36 / 40 | 0.61 |
| Tre | $29.6m | $20.1m | $8.1m | $1.4m | 22 / 31 | 0.77 |
| Ket | $44.8m | $25.6m | $17.4m | $1.8m | 39 / 44 | 0.54 |
| Pen | $33.2m | $22.3m | $9.4m | $1.5m | 28 / 35 | 0.71 |
Wash tipo įrašai sudarė 34% savaitės juostos. Jie nebuvo paskirstyti tolygiai. Ketvirtadienis, sesija, kuri originaliam filtrui patiko labiausiai, buvo nešvariausia. Tai gedimo scenarijus, kuris man rūpi. Vartai ne tik vidutiniškai pervertina likvidumą. Jie atsiveria plačiau tomis dienomis, kai wash botai dirba, nes būtent tada žalias skaičius atrodo sveikiausias.
Perleidome atgalinį testą tik su knygą judinančia apimtimi, tas pats 20× kartotinis. Signalai krito nuo 198 per savaitę iki 121. Daug išmestųjų sėdėjo tose ketvirtadienio stiliaus valandose, kur juosta buvo garsi, o knygos viršus buvo 1,100 USDT. Originalus Sharpe naudojo 198 pilnus užpildymus. Necituosiu naujojo taip, lyg tai būtų atradimas apie strategiją. Tai atradimas apie užpildymo modelį: kai nustojame dovanoti 25,000 USDT kaina, kurios knyga neturėjo, gabalas „edge“ tėra užbaigti orderiai, kurie būtų buvę likučiai.
Penktadienis: ką iš tikrųjų išleidžiame, ir ką praleisčiau
Vartai, kuriuos palikome, nuobodūs. Slenkantis knygą judinantis notional, skaičiuojamas tik iš įrašų, kurie nuėmė dydį nuo lygio, turi viršyti 20× clip, ir matuojame jį baruose prieš sprendimo barą, kad dabartinės minutės wash negalėtų balsuoti. Likvidacijų įrašai gauna atskirą lubą: jei daugiau nei ketvirtadalis nesenos knygą judinančios apimties yra likvidacijos, strategija nusišalina. Priverstinis srautas yra tikras dydis, lenktyniaujantis su tavimi.
Poveikis gavo tą pačią dietą. Senasis modelis išvedė Kyle lambda iš biržos apimties ir mūsų clip. Maitink wash ir lambda krenta, nes rinka atrodo gili. Maitink knygą judinančia apimtimi ir tas pats clip yra gerokai didesnė dalis to, kas iš tikrųjų pakeitė knygą. Popierinis slippage keliose kitose sesijose sėdėjo arčiau to bjauresnio skaičiaus. Arčiau, ne identiškai. Vis dar nematome eilės, o 100ms nuotrauka vis tiek praleidžia dalį tikro dydžio.
Ką kitą kartą praleisčiau — visą pirmą pirmadienį. Nepradėk nuo tickerio, nepradėk nuo 24h apimties, neleisk agentui dėti žalios dolerinės apimties į feature store ir į vartus taip, lyg tai būtų 2 idėjos. Tai viena nešvari eilutė, panaudota 2 kartus. Pirmiausia pastatyk su knyga suderintą juostą, net jei tai reiškia, kad 2 dienas tyrinėji vieną vidutinės kapitalizacijos monetą, kol turi visumą. Visuma, filtruota pagal wash, yra monetų sąrašas, kurios moka atrodyti užimtos.
Kitas praleidimas: bet koks užpildymo modelis, kuris išlaikytą apimties patikrą laiko užpildymu. Antradienio likutis ir buvo strategija. Filtras gali atsakyti tik „ar kas nors prekiavo.“ Jis negali atsakyti „ar tavo 25,000 ilsėsis, ar išnyks.“ Tam antram klausimui reikia knygos, likučio ir time-in-force — tai kitas dienoraštis, ir tas, kurį turėjome parašyti prieš šitą.
← Visi įrašai


