27. elokuu 2026 · datatekniikka

Symbolijoukkosi on aikakone: selviytymisharha kryptoperpetuaalien backtesteissä

Symbolijoukkosi on aikakone: selviytymisharha kryptoperpetuaalien backtesteissä

Lähetit minulle muistikirjan sunnuntai-iltana, ja se on ollut auki toisella näytöllä siitä lähtien. Poikkileikkausmomentumi: 150 suurinta Binance USDⓈ-M -perpetuaalifutuuria 30 päivän dollarivolyymin mukaan, viikoittainen tasapainotus, long-positiot ylimmässä desiilissä ja short-positiot alimmassa, 2021-01–2026-06. Sharpe 2,31, suurin arvonlasku 14,2 % ja kustannusmalli, joka vaikutti minusta uskottavalta: taker-osto, taker-myynti, funding-maksuja kertyy kullakin aikavälillä maksettavaksi tai saatavaksi, ja liukumatermi skaalautuu positiokokosi mukaan suhteessa tilauskirjaan. Teit vaikeat osat oikein. Sitten kysyit, miksi kuuden viikon paperikaupankäynnin tulos on ollut nolla ja onko tuottoetu heikentynyt.

Se ei heikentynyt. Sitä ei koskaan ollut backtestissä. Katso solua 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"]

Kutsuit tuota rajapintaa kesäkuussa 2026 ja käytit vastausta määrittämään, millä pystyi käymään kauppaa maaliskuussa 2021. Jokainen listan symboli oli määritelmän mukaan säilynyt kesäkuuhun 2026 asti. Siinä on koko bugi, ja sen vaikutus on suurempi kuin muun kustannusmallisi yhteensä.

2.31 → 0.74Sharpe: selviytyneiden lista vs. ajankohdan mukainen lista
noin 1/5vuoden 2021 universumisi symboleista ei ole enää olemassa
380 KBpäivittäinen exchangeInfo-tilannekuva gzip-pakattuna

Mitä rajapinta ei kerro

exchangeInfossa ei ole historiaa. Ei asOfparametria, ei arkistoa eikä muutoslokia. Se on valokuva nykyhetkestä, eikä Binance ole koskaan luvannut muuta. Kun sopimus poistetaan listalta, sen merkintä poistuu vastauksesta ja ticker lakkaa olemasta API:n näkökulmasta. Binance on listannut yli 600 USDⓈ-M perpetual-sopimusta vuodesta 2019 ja poistanut käytöstä reilusti yli sata niistä. BTS, COCOS, TOMO, RAY, FTT, SC sekä pitkä häntä vuoden 2021 alt-kauden sopimuksia, joilla oli yksi loistava neljännesvuosi ja joiden kaupankäynti sitten hiipui, kunnes pörssi poisti ne.

Mieti, mitä nimiä 30 päivän momentumseula suosii. Ei BTC:tä. Se suosii juuri sitä, joka kolminkertaistui listautumispiikin ja Twitter-huuman ansiosta. Tämä sopimuskanta ja lopulta listalta poistettujen sopimusten kanta limittyvät vahvasti, ja universumisuodattimesi poisti tämän päällekkäisen osan.

Ajoin strategiasi uudelleen tilannekuva-arkistomme avulla käyttäen ajankohdan mukaista universumia, samaa signaalia ja samoja kustannuksia. Sharpe-arvoksi tuli 0,74 ja arvonlaskuksi 31%. Noin kaksi viidesosaa erosta johtuu listalta poistetuista sopimuksista, joita et olisi voinut koskaan pitää. Toinen neljännes johtuu tämän ongelman peilikuvasta, joka on hienovaraisempi ja josta luulen sinun pitävän vielä vähemmän.

Aikakoneen toinen pää: symbolit, joita ei vielä ollut olemassa

Piirteesi on 90 päivän tuotto. Liukuva ikkunasi on min_periods=20, koska asetit sen kerran estämään warmup-jaksoa poistamasta otoksen ensimmäistä neljännestä etkä koskaan tarkistanut asetusta uudelleen. Siksi 21 päivää sitten listattu sopimus saa momentumpisteet kolmen viikon listautumisen jälkeisen hintakehityksen perusteella, sijoittuu ylimpään desiiliin suunnilleen aina, kun listautuminen onnistuu, ja päätyy salkkuusi.

Tuo osa voi olla perusteltua. Tämä osa ei: datantarjoajasi täydensi joidenkin näiden symbolien historiaa spot- tai indeksidatalla ajalta ennen perpetual-sopimuksen olemassaoloa, joten kourallisen sopimusten kline-historia alkaa ennen niiden omaa onboardDate-päivää. Voit tarkistaa tämän noin minuutissa. Yhdistä hintataulukkosi listautumispäiviin ja laske listautumista edeltävät rivit. Datassasi on 41 symbolia, joilla on listautumista edeltäviä kynttilöitä. Yksi niistä tuottaa kesällä 2023 osakekäyrään 6 %:n yhden viikon nousun positiosta sopimuksessa, jota ei olisi ollut olemassa vielä yhdeksään päivään.

Ticker-merkkijono ei ole tunniste. Se on nimike, jonka pörssi vuokraa käyttöön, joskus kahdesti.

Tämä tuo meidät uudelleennimeämisiin. MATICUSDT:stä tuli POLUSDT. FTMUSDT:stä tuli SUSDT 1:1-muunnoksessa. Toukokuun 2022 LUNA-tilanne jätti jälkeensä LUNCUSDT:n ja myöhemmin aivan uuden LUNAUSDT:n, jonka tickerin alkuosa on sama kuin sellaisella, joka menetti enemmän tai vähemmän kaiken. Jos lataajasi käyttää avaimena symbolimerkkijonoa ja liittää yhteen löytämänsä tiedostot, mukana on ainakin yksi aikasarja, jossa on epäjatkuvuus, joka ei johdu hinnan liikkeestä. Momentum-muuttujasi tulkitsee tämän epäjatkuvuuden poikkileikkauksen vahvimmaksi signaaliksi.

Kaikki muu, mikä muuttuu huomaamattasi

Kun hyväksyt, että symbolilista muuttuu ajan myötä, sama pätee kaikkiin muihinkin tuon vastauksen kenttiin. Käytät kaikkien niiden tämänpäiväisiä arvoja.

tickSize / stepSize Nostetaan ajan mittaan ohuilla order bookeilla Rahoitustuotto heittää 2–3× juuri niillä altcoineilla, joita seulasi pitää Rahoituskorkoon liittyvä virhe sattuu tapauksessasi eniten. Kertymäsilmukkasi olettaa kolme maksua päivässä koko historian ajan. Merkittävä osa alt-salkusta siirtyi neljän tunnin rahoitusväleihin, ja korkeakorkoisten nimien short-positiot tuottavat suuren osan simuloidusta PnL:stäsi. Virhe ei ole pyöristysvirhe. Se on moninkertainen. Myös listalta poistaminen on tapahtuma, jota et mallinna Point-in-time-uusinta-ajossa annoin strategialle suotuisan poistumistavan. Todelliset listalta poistot etenevät käsikirjoituksen mukaan: ensin ilmoitus, yleensä 7–14 päivää etukäteen, sitten reduce-only-ikkuna ja lopuksi pakotettu selvitys mark-hintaan. Ilmoitus on julkista tietoa, johon voit reagoida, joten rehellinen simulaatio poistuu ilmoituspäivän sulkuhintaan. Tavallisen altcoinin listalta poiston kohdalla hinta on kuitenkin silloin jo 10–20 % edellisen viikon hintaa alempana, order book on ohut ja liukumaerän täytyy tunnistaa, että käydään kauppaa eri markkinatilassa. Jos täyttömoottorisi antaa sinulle selvityshinnan ilman vaikutusta, olet huomaamatta tehnyt kuolevista omaisuuseristä kaupankäyntikelpoisia käypään arvoon.
Kenttä Miten se muuttuu Mitä rikkoutuu
status TRADING → SETTLING → poistettu Selviytymisharha; kuvitteelliset poistumiset sulkuhintaan, jolla ei koskaan käyty kauppaa
onboardDate Uusia listauksia viikoittain; puuttuu kuolleilta symboleilta Kaupankäynti sopimuksilla ennen niiden olemassaoloa
tickSize / stepSize Säädetään uudelleen hintatasojen muuttuessa Tilausten pyöristys ja rajahinnat, jotka olisi hylätty
minNotional Ajan myötä karttunutta vähäisen likviditeetin markkinoilla Pienet positiot, jotka reaaliaikaisen kaupankäynnin toimeksiantoreititin hylkäisi
fundingIntervalHours 8 h vuosien ajan, sitten 4 h tai 1 h monilla symboleilla Carry poikkeaa 2–3× juuri niissä altcoineissa, joita seula pitää.
Vipuvaikutuksen tasorajatTasot ja ylläpitomarginaali tarkistettu uudelleenLikvidaation mallinnus ja marginaalikapasiteetti

Fundingin kertymää koskeva virhe sattuu tapauksessasi eniten. Kertymäsilmukkasi olettaa kolme maksua päivässä koko historian ajalta. Merkittävä osa alt-salkusta siirtyi neljän tunnin funding-väliin, ja korkean fundingin nimikkeiden short-positiot ovat tärkeä osa simuloitua PnL:ääsi. Kyse ei ole pyöristysvirheestä. Virhe on moninkertainen.

Julkisessa dumpissa

Itse listalta poistaminen on tapahtuma, jota et mallinna.

Annoin strategialle ajankohdan mukaisessa uudelleensimuloinnissa suotuisan poistumisoletuksen. Todelliset listalta poistot etenevät käsikirjoituksen mukaan: ensin ilmoitus, yleensä 7–14 päivää etukäteen, sitten vain positioiden pienentämisen salliva jakso ja lopuksi pakotettu selvitys mark-hintaan perustuvaan hintaan. Ilmoitus on julkista tietoa, jonka perusteella voit toimia, joten rehellisessä simulaatiossa positio suljetaan ilmoituspäivän päätöskurssiin. Tyypillisen altcoinin listalta poistamisen tapauksessa tämä päätöskurssi on kuitenkin jo 10–20% edellisen viikon hintaa alempana, tilauskirja on ohut ja liukumatermin on huomioitava toiminta eri markkinatilassa. Jos täyttömoottorisi antaa sinulle selvityshinnan ilman markkinavaikutusta, olet huomaamatta tehnyt kuolevista omaisuuseristä käypään arvoon kaupattavia.

Mitä rakentaisin ennen kuin kosket taas signaaliin

Jos et koskaan arkistoinut exchangeInfoa, et ole pulassa. Julkinen vedos osoitteessadata.binance.vision/data/futures/um/monthly/klines/ säilyttää yhä hakemistoja listalta poistetuista symboleista pitkään sen jälkeen, kun API on unohtanut ne. Luettele hakemiston sisältö, niin kunkin symbolin ensimmäinen ja viimeinen kuukausitiedosto antavat käyttökelpoisen listautumis- ja poistumisajankohdan ilman datantoimittajaa. Kyse on rekonstruktiosta, ei tietueesta, eikä se palauta tick-kokoja tai rahoitusvälejä. Se kertoo kuitenkin, mitkä symbolit olivat olemassa ja milloin, mikä kattaa 80% siitä, mitä tarvitset maanantaina.

Näistä tilannekuvista johdettu omaisuuserärekisteri: yksi rivi kutakin (kaupankäyntipaikka, symboli, valid_from, valid_to) -yhdistelmää kohti täydellisine kenttineen. Vertaa peräkkäisiä tilannekuvia rekisterin luomiseksi ja käsittele jokainen kentän muutos uutena rivinä.

Mitä kehottaisin sinua rakentamaan ennen kuin kosket signaaliin uudelleen

, ei koskaan
    . Tee oletuksesta mahdoton, jotta kukaan, et edes sinä tulevaisuudessa kello 1 yöllä, ei voi vahingossa tarttua selviytyjien listaan.
  1. Cron-ajastus, joka hakee exchangeInfo-tiedot päivittäin jokaisesta tutkimastasi pörssistä ja tallentaa ne objektitallennukseen, jossa avaimena on päivämäärä. Gzip-pakattuna se vie alle puoli megatavua. Kymmenen vuoden tallennus maksaa S3:ssa pyöristysvirheen verran ja antaa sinulle tutkimuskyvyn, jota et voi myöhemmin ostaa.
  2. Dataan lataimeen listautumista edeltävä tarkistus: kynttilää ei saa olla ennen päivää
  3. Tilannekuvista muodostettu instrumenttirekisteri: yksi rivi kutakin (kauppapaikka, symbol, valid_from, valid_to) -yhdistelmää kohti, kaikki kentät mukana. Muodosta se vertaamalla peräkkäisiä tilannekuvia ja käsittele mikä tahansa kentän muutos uutena rivinä.
  4. Universumifunktio, joka vaatii aikaleiman argumentiksi.universe(ts), ei koskaanuniverse() . Tee oletusvalinnasta mahdoton, jotta kukaan, et edes sinä tulevaisuudessa kello 1 yöllä, voi vahingossa valita selviytyneiden listan.
  5. Tee nämä ja aja strategia uudelleen. Arvaukseni on, että päädyt lähelle saamaani 0.74:ää. Sitten kiinnostava kysymys on, löytyykö 0.74:stä, jossa kuolleet nimet ovat mukana, mitään paperikaupan arvoista. Ehkä löytyy. Perpetuaalien poikkileikkausmomentumissa on ideaa, ja jäljelle jäävästä osasta merkittävä osuus on short-puolen aitoa rahoitustuottoa. Huomaat myös paperitulosten ja backtestin alkavan vastata toisiaan, koska paperikaupankäynti on aina käyttänyt point-in-time-universumia. Sillä ei ole koskaan ollut vaihtoehtoa.
  6. Datalataajaan lisättävä listautumista edeltävä tarkistus: yhtään kynttilää ei saa olla ennen onboard_tsyhtä päivää ennen listautumista. Keskeytä ajo, älä anna varoitusta.
  7. Vakaa sisäinen instrumenttitunnus, joka säilyy uudelleennimeämisissä, ja ticker pelkkänä määritteenä. Yhdistä POL ja MATIC samaan tunnukseen ja merkitse nimellisarvon muutokset, jotta jatkuvuuslogiikka voi kieltäytyä yhdistämästä niitä.

Tee nämä muutokset ja aja simulaatio uudelleen. Arvaukseni on, että päädyt lähelle saamaani 0,74:n Sharpe-arvoa, ja kiinnostavaksi kysymykseksi jää, onko 0,74:n Sharpe-arvossa, jossa ovat mukana myös poistuneet sopimukset, mitään paperikaupankäynnin arvoista. Ehkä on. Poikkileikkausmomentum perpetual-sopimuksissa ei ole merkityksetöntä, ja osa universumin korjaamisen jälkeen jäljelle jäävästä tuotosta on aitoa tuottoa short-puolelta. Huomaat myös paperikaupan tulosten ja backtestin alkavan vastata toisiaan, koska paperikaupankäynti on aina käyttänyt ajankohdan mukaista universumia. Paperikaupankäyntiasetelmalla ei koskaan ollut valinnanvaraa.

P.S. Tämä ei ole krypton erikoisuus, se vain korostuu täällä. Osaketutkijat ovat kamppailleet listalta poistuneiden arvopaperien tuottojen ja kierrätettyjen tickereiden kanssa siitä lähtien, kun CRSP alkoi toimittaa niihin liittyvää dataa, ja ennustemarkkinoilla ilmiö viedään äärimmilleen: jokainen sopimus erääntyy tarkoituksella, joten universumi koostuu pelkistä listautumisista ja poistumisista. Jos joskus siirrät tämän seulan Kalshiin, rakenna ensin instrumenttirekisteri. Siellä ei ole muunlaista historiaa.

selviytymisharhapoint-in-time-datakryptofutuuritbacktestausdatatekniikka
← Kaikki kirjoitukset