Zvezek s kodo si mi poslal v nedeljo zvečer in od takrat ga imam odprtega na drugem monitorju. Presečni momentum, 150 največjih Binance USDⓈ-M perpetualov po 30-dnevnem dolarskem obsegu, tedensko uravnoteženje, dolga pozicija v zgornjem decilu in kratka v spodnjem, od 2021-01 do 2026-06. Sharpe 2.31, največji padec 14.2 %, stroškovni model pa se mi je zdel pošten: vstop in izstop po taker ceni, funding prištet za vsak interval, člen za zdrs cene, ki se povečuje z velikostjo tvoje pozicije glede na knjigo naročil. Težji del si opravil prav. Potem si vprašal, zakaj je šest tednov trgovanja na papirju minilo brez rezultata in ali je prednost izginila.
Ni izginila. V testu za nazaj je sploh ni bilo. Poglej celico 4:
info = requests.get(BASE + "/fapi/v1/exchangeInfo").json()
symbols = [s["symbol"] for s in info["symbols"]
if s["status"] == "TRADING" and s["quoteAsset"] == "USDT"]
Ta končni naslov si poklical junija 2026 in dobljeni odgovor uporabil za določitev tega, s čim se je dalo trgovati marca 2021. Po sami zasnovi so vsi simboli na seznamu preživeli do junija 2026. To je vsa težava, ki je vredna več kot preostali del tvojega stroškovnega modela skupaj.
Česa ti končni naslov ne pove
V exchangeInfo ni zgodovine. Ni parametra asOf, ni arhiva, ni dnevnika sprememb. To je posnetek trenutnega stanja in Binance ti ni nikoli obljubil ničesar drugega. Ko pogodbo umaknejo z borze, njen vnos izbrišejo iz odgovora in za API njen simbol preneha obstajati. Binance je od leta 2019 uvrstil več kot 600 perpetualov USDⓈ-M, več kot sto pa jih je že umaknil. BTS, COCOS, TOMO, RAY, FTT, SC in dolga vrsta pogodb iz altsezone 2021, ki so imele eno bleščeče četrtletje, nato pa je trgovanje z njimi zamrlo, dokler jih borza ni umaknila.
Vprašaj se, katera imena obožuje 30-dnevni momentumski zaslon. Ne BTC. Rad ima tisto, kar se je pravkar potrojilo zaradi skoka ob uvrstitvi in navdušenja na Twitterju. Nabor takih sredstev se močno prekriva z naborom tistih, ki jih bodo nazadnje umaknili, tvoj filter nabora pa je ta presek izločil.
Tvoj preizkus sem ponovil z našim arhivom posnetkov, naborom po stanju v času ter istim signalom in istimi stroški. Sharpe je znašal 0.74, padec pa 31 %. Približno dve petini razlike povzročajo umaknjeni simboli, ki jih sploh ne bi smel imeti v poziciji. Še četrtino prispeva zrcalna težava, ki je bolj pretanjena in za katero sumim, da ti bo še manj všeč.
Drugi konec časovnega stroja: simboli, ki takrat še niso obstajali
Tvoja značilka meri donos v 90 dneh. Drseče okno ima min_periods=20, ker si ga enkrat nastavil, da ogrevanje ne bi izbrisalo prvega četrtletja vzorca, potem pa se k temu nisi več vrnil. Tako pogodba, ki je bila uvrščena pred 21 dnevi, dobi momentumsko oceno na podlagi treh tednov gibanja cene po uvrstitvi, približno vedno konča v zgornjem decilu, kadar je bila uvrstitev uspešna, in vstopi v tvojo knjigo pozicij.
Ta del je še mogoče upravičiti. Problem je naslednji: ponudnik je nekatere od teh simbolov dopolnil s podatki spot ali indeksa iz časa pred nastankom perpa, zato imajo nekatere pogodbe zgodovino kline, ki sega pred njihov onboardDate. To lahko preveriš v približno minuti. Cenovno tabelo združi z datumi uvrstitve in preštej vrstice pred uvrstitvijo. V tvojih podatkih je 41 simbolov s svečkami iz časa pred uvrstitvijo. Eden od njih poleti 2023 prispeva 6-odstotni tedenski dobiček v krivuljo kapitala, in sicer s pozicijo v pogodbi, ki naj bi nastala šele čez devet dni.
Zapis simbola ni enolični identifikator. Je oznaka, ki ti jo borza da v najem, včasih dvakrat.
S tem pridemo do preimenovanj. MATICUSDT je postal POLUSDT. FTMUSDT je po pretvorbi 1:1 postal SUSDT. Dogajanje z LUNO maja 2022 je pustilo LUNCUSDT, pozneje pa je nastal povsem nov LUNAUSDT, ki si osnovo zapisa deli s simbolom, ki je izgubil tako rekoč vse. Če tvoj nalagalnik uporablja niz simbola kot ključ in združi vse datoteke, ki jih najde, imaš v podatkih vsaj eno časovno vrsto s prekinitvijo, ki ni posledica gibanja cene. Tvoja momentumska značilka pa bo to prekinitev razumela kot najmočnejši signal v preseku.
Vse drugo, kar se ti izmuzne
Ko sprejmeš, da se seznam simbolov s časom spreminja, ista logika velja za vsa druga polja v tem odgovoru. Za vsa uporabljaš današnje vrednosti.
| Polje | Kako se spreminja | Kaj se pokvari |
|---|---|---|
| status | TRADING → SETTLING → umaknjen | Pristranskost preživelih; navidezni izstopi po zaključni ceni, po kateri se nikoli ni trgovalo |
| onboardDate | Vsak teden novi simboli; za umaknjene simbole podatek manjka | Trgovanje s pogodbami, še preden so obstajale |
| tickSize / stepSize | Prilagajata se ob spremembi cenovnih ravni | Zaokroževanje naročil in limitne cene, ki bi jih zavrnili |
| minNotional | Sčasoma se zvišuje pri plitvih knjigah naročil | Majhne pozicije, ki bi jih tvoj sistem za usmerjanje naročil v živo zavrnil |
| fundingIntervalHours | Leta 8h, nato pri številnih simbolih 4h ali 1h | Strošek financiranja je napačen za faktor 2–3× prav pri altcoinih, ki jih tvoj zaslon izbere |
| leverage brackets | Spremenjeni razredi in vzdrževalno kritje | Modeliranje likvidacije in zmogljivost kritja |
V tvojem primeru največjo škodo povzroči funding. Zanka za obračun predpostavlja tri plačila na dan za celotno zgodovino. Precejšen del knjige altcoinov je prešel na funding vsake štiri ure, kratke pozicije v simbolih z visokim fundingom pa ustvarijo velik del tvojega simuliranega dobička in izgube. Tu se ne motiš zaokrožitveno. Motiš se za večkratnik.
Umik z borze je dogodek, ki ga ne modeliraš
V ponovnem preizkusu s podatki po stanju v času sem strategiji dovolil zelo ugoden izstop. Dejanski umiki potekajo po ustaljenem scenariju: objava, običajno sedem do štirinajst dni vnaprej, nato obdobje, ko so dovoljena samo naročila za zmanjšanje pozicije, potem pa prisilna poravnava po mark ceni. Objava je javno dostopna informacija in lahko ukrepaš, zato je poštena simulacija izstop po zaključku dneva objave. A ta zaključna cena je pri tipičnem umiku altcoina že 10-20 % pod ceno prejšnjega tedna, knjiga naročil je plitva, tvoj člen za zdrs cene pa mora upoštevati, da gre za drugačne tržne razmere. Če ti mehanizem za izvrševanje naročil brez vpliva na ceno vrne poravnalno ceno, si sredstva tik pred propadom tiho prikazal kot sredstva, s katerimi se da trgovati po pošteni vrednosti.
Če exchangeInfo nisi nikoli arhiviral, še ni vse izgubljeno. Javni arhiv na data.binance.vision/data/futures/um/monthly/klines/ še dolgo hrani imenike za umaknjene simbole, potem ko jih API že pozabi. Izpiši seznam imenikov; prva in zadnja mesečna datoteka za vsak simbol ti bosta dali uporaben približen časovni okvir uvrstitve in umika, ne da bi potreboval ponudnika podatkov. To je rekonstrukcija, ne zapis, in ne bo obnovila velikosti cenovnega koraka ali intervalov fundinga. Povedala pa ti bo, kateri simboli so kdaj obstajali, kar pokrije 80 % tega, kar potrebuješ v ponedeljek.
Kaj bi zgradil, preden se znova lotiš signala
- Opravilo cron, ki vsak dan prenese exchangeInfo z vseh borz, ki jih raziskuješ, in ga shrani v objektno shrambo pod ključem z datumom. Stisnjen z gzipom zasede manj kot pol megabajta. Deset let podatkov v S3 stane zanemarljivo malo, prinese pa raziskovalne zmožnosti, ki jih pozneje ne moreš kupiti.
- Glavno tabelo sredstev, izpeljano iz teh posnetkov: po ena vrstica za vsak (borza, simbol, valid_from, valid_to) z vsemi polji. Primerjaj zaporedne posnetke in jo sestavi; vsako spremembo polja obravnavaj kot novo vrstico.
- Funkcijo za nabor, ki obvezno zahteva časovni žig.
universe(ts), nikoliuniverse(). Poskrbi, da privzeta možnost ne obstaja, da nihče, niti ti sam v prihodnosti ob 1am, ne bo pomotoma posegel po seznamu preživelih. - Preverjanje pred uvrstitvijo v nalagalniku podatkov: nobena svečka ne sme biti starejša od
onboard_tsminus en dan. Prekini izvajanje; ne izdajaj opozorila. - Stabilen interni ID instrumenta, ki ostane isti tudi po preimenovanju, zapis simbola pa naj bo le atribut. POL in MATIC poveži z istim ID-jem ter označi preimenovanja zaradi pretvorbe, da jih logika za ohranjanje zveznosti ne bo združevala.
To naredi in ponovi test. Ugibam, da boš prišel blizu mojega rezultata 0.74, nato pa bo pravo vprašanje, ali je v vrednosti 0.74, ki vključuje propadle simbole, kaj takega, s čimer je vredno trgovati na papirju. Morda je. Presečni momentum pri perpetualih ni brez vrednosti, del tega, kar ostane po popravku nabora, pa je pravi donos iz financiranja na kratki strani. Opazil boš tudi, da se rezultati trgovanja na papirju in testiranja za nazaj ujemajo, saj trgovanje na papirju že ves čas uporablja nabor po stanju v času. Nikoli ni imelo izbire.
P. S. To ni posebnost kripta, le bolj očitna je. Raziskovalci delnic se z donosi ob umikih in ponovno uporabljenimi oznakami borijo že odkar CRSP objavlja te podatke, na napovednih trgih pa je ta pojav še izrazitejši: vsaka pogodba po zasnovi poteče, zato nabor sestavljajo samo nove uvrstitve in umiki. Če boš ta zaslon kdaj prenesel na Kalshi, najprej zgradi glavno tabelo sredstev. Tam drugačne zgodovine sploh ni.
← Vse objave


