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ä.
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.
| 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 tasorajat | 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.Tasot ja ylläpitomarginaali tarkistettu uudelleen | Myös listalta poistaminen on tapahtuma, jota et mallinnaLikvidaation mallinnus ja marginaalikapasiteetti | 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.
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 dumpissaItse 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.
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.
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.
- 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. Dataan lataimeen listautumista edeltävä tarkistus: kynttilää ei saa olla ennen päivää
- 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ä.
-
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.
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.
-
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. - 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.
← Kaikki kirjoitukset


