Sa saatsid mulle pühapäeva õhtul märkmiku ja see on sellest saadik mu teisel ekraanil lahti olnud. Ristlõikeline momentum, Binance'i USDⓈ-M perp'id, 30 päeva dollarikäibe järgi 150 suurimat, kord nädalas tasakaalustamine, ostad ülemist detsiili ja müüd lühikeseks alumist, ajavahemik 2021-01 kuni 2026-06. Sharpe 2.31, maksimaalne langus 14.2% ning kulumudel, mis tundus mulle aus: sisened taker'ina, väljud taker'ina, arvestad iga intervalli funding'u ning libisemiskuluga, mis skaleerub sinu positsiooni suuruse järgi võrreldes orderiraamatuga. Raske osa tegid õigesti. Siis küsisid, miks kuus nädalat paberkauplemist on andnud nulltulemuse ja kas eelis on kadunud.
See ei kadunud. Seda polnud järeltestis kunagi olemaski. Vaata lahtrit 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"]
Kutsusid seda lõpp-punkti 2026. aasta juunis ja kasutasid vastust määramaks, millega sai kaubelda 2021. aasta märtsis. Kõik selles loendis olevad sümbolid olid 2026. aasta juunini vastu pidanud — loendi koostamise viis tagas selle. Kogu viga peitubki selles ja selle mõju on suurem kui ülejäänud kulumudelil kokku.
Mida lõpp-punkt sulle ei ütle
exchangeInfo's pole ajalugu. Pole asOf parameetrit, arhiivi ega muudatuste logi. See on foto praegusest hetkest ja Binance pole kunagi midagi muud lubanud. Kui leping börsilt eemaldatakse, kustutatakse selle kirje vastusest ja API jaoks lakkab kauplemissümbol olemast. Binance on alates 2019. aastast noteerinud üle 600 USDⓈ-M perp'i ja lõpetanud tublisti enam kui saja nendest. BTS, COCOS, TOMO, RAY, FTT, SC ja pikk saba 2021. aasta altcoin'ihooaja lepingutest, mille hiilgav kvartal möödus, likviidsus kuivas kokku ja kauplemiskoht eemaldas need lõpuks nimekirjast.
Mõtle, milliseid nimesid 30 päeva momentum-sõel eelistab. Mitte BTC-d. See eelistab vara, mis just noteerimispumba ja Twitteri-tsükli toel kolmekordistus. Need varad kattuvad suuresti varadega, mis lõpuks börsilt eemaldatakse, ja sinu universumi filter jättis need kattuvad varad välja.
Arvutasin su strateegia uuesti meie hetktõmmiste arhiivi ja ajahetkele vastava universumiga, sama signaali ja samade kuludega. Sharpe tuli 0.74 ja langus 31%. Umbes kaks viiendikku vahest tuleneb börsilt eemaldatud sümbolitest, mida sul poleks tohtinud kunagi hoida. Veel veerand tuleb vastupidisest probleemist, mis on varjatum ja mis sulle ilmselt veel vähem meeldib.
Ajamasina teine ots: sümbolid, mida polnud veel olemas
Sinu tunnus on 90 päeva tootlus. Sinu libisevas aknas on min_periods=20, sest määrasid selle korra, et soojendusperiood ei sööks ära valimi esimest kvartalit, ja rohkem selle juurde ei pöördunud. Nii saab 21 päeva tagasi börsile tulnud leping momentum-skoori, mis põhineb kolmel börsile järgnenud hinnaliikumise nädalal; umbes iga kord, kui noteerimine hästi läks, jõuab see ülemisse detsiili ja satub sinu portfelli.
See osa on vaieldavalt õiguspärane. Aga see osa pole: sinu andmepakkuja täitis mõne sümboli varasema ajaloo tagasi spot- või indeksiandmetega, mistõttu ulatub mõne lepingu küünlaajalugu selle enda onboardDate ajast varasemasse aega. Kontrollimiseks kulub umbes minut. Ühenda hinnatabel noteerimiskuupäevadega ja loenda, mitu rida jääb noteerimiseelsesse aega. Sinu andmetes on 41 sümbolil noteerimiseelsed küünlad. Üks neist annab 2023. aasta suvel tootluskõverale ühe nädalaga 6% kasvu tänu positsioonile lepingus, mis jõudis börsile alles üheksa päeva hiljem.
Sümbolitekst pole tunnus. See on börsi kasutusse antud silt, mõnikord kahele varale.
See toob meid ümbernimetamiste juurde. MATICUSDT-st sai POLUSDT. FTMUSDT-st sai 1:1 konverteerimise järel SUSDT. 2022. aasta mai LUNA olukorrast jäi järele LUNCUSDT ja hiljem loodi uus LUNAUSDT, mille sümbolitüvi kattub varaga, mis kaotas sisuliselt kõik. Kui sinu laadija kasutab võtmena sümboli teksti ja liidab kokku kõik leitud failid, on andmetes vähemalt üks aegrida katkestusega, mida ei põhjustanud hinnaliikumine; sinu momentum-tunnus peab seda katkestust kogu ristlõike tugevaimaks signaaliks.
Kõik muu, mis sinu all nihkub
Kui möönad, et sümbolite loend muutub ajas, kehtib sama mõte vastuse kõigi teiste väljade kohta. Praegu kasutad nende kõigi puhul tänaseid väärtusi.
| Väli | Kuidas see muutub | Mis läheb katki |
|---|---|---|
| status | TRADING → SETTLING → eemaldatud | Ellujäämisnihe; väljumised arvestatakse sulgemishinnaga, millega tegelikult ei kaubeldud |
| onboardDate | Igal nädalal uued noteeringud; kadunud sümbolite puhul puudub | Kauplemine lepingutega enne nende olemasolu |
| tickSize / stepSize | Kohandatakse hinnatasemete muutudes | Korralduste ümardamine ja limiithinnad, mis oleks tagasi lükatud |
| minNotional | Õhukeses orderiraamatus tõstetakse aja jooksul | Väikesed positsiooniosad, mille sinu reaalajas orderite suunaja tagasi lükkaks |
| fundingIntervalHours | Aastaid 8h, seejärel paljude sümbolite puhul 4h või 1h | Funding'u kulu 2–3× mööda just nende altcoin'ide puhul, mida sinu sõel hoiab |
| leverage brackets | Tasemed ja hooldusmarginaal vaadatakse üle | Likvideerimise modelleerimine ja marginaali võimekus |
Sinu puhul teeb enim kahju funding. Sinu arvestustsükkel eeldab, et kogu ajaloo vältel toimus kolm makset päevas. Märkimisväärne osa altcoin'iportfellist läks üle neljatunnisele funding'ule ja suured osa sinu simuleeritud PnL-ist tuleb suure funding'uga nimede lühikestest positsioonidest. Siin pole ümardamisest tingitud väike viga. Tegur on vale.
Börsilt eemaldamine on sündmus, mida sa ei modelleeri
Ajahetkele vastavas kordusarvutuses andsin strateegiale helde väljumisvõimaluse. Tegelik börsilt eemaldamine käib kindla skripti järgi: kõigepealt teade, tavaliselt seitse kuni 14 päeva ette; siis ainult positsiooni vähendamise aken; lõpuks sundlikvideerimine mark-hinnaga. Teade on avalik teave ja saad selle põhjal tegutseda, nii et aus simulatsioon väljub teate päeva sulgemishinnaga. Aga tüüpilise altcoin'i puhul on see sulgemishind juba 10-20% madalam kui eelmisel nädalal, orderiraamat on õhuke ning sinu libisemiskulu mudel peab arvestama, et turuolud on teistsugused. Kui sinu täitmismootor annab sulle mõjuta arveldushinna, oled vaikselt muutnud surevad varad õiglase väärtusega kaubeldavaks.
Kui sa exchangeInfo't kunagi ei arhiveerinud, pole kõik veel kadunud. Avalikus andmekogus aadressil data.binance.vision/data/futures/um/monthly/klines/ on börsilt eemaldatud sümbolite kataloogid alles kaua pärast seda, kui API on need unustanud. Loenda kataloogid ning iga sümboli esimese ja viimase kuu faili järgi saad ilma andmepakkujata kätte kasutuskõlbliku noteerimis- ja eemaldamisaja vahemiku. See on rekonstruktsioon, mitte algne kirje, ega taasta tick size'i ega funding-intervalli. Aga saad teada, millised sümbolid millal olemas olid — see annab esmaspäevaks 80% vajalikust.
Mida ma ehitaksin enne, kui signaali uuesti puutud
- Cron, mis hangib iga päev exchangeInfo kõigilt börsidelt, mida uurid, ja salvestab selle kuupäeva järgi objektisalvestusse. Gzip'iga tihendatult võtab see alla poole megabaidi. Kümme aastat maksab S3-s ümardamisvea jagu ja annab sulle uurimisvõimekuse, mida hiljem osta ei saa.
- Nendest hetktõmmistest tuletatud varade põhitabel: üks rida iga (börs, sümbol, valid_from, valid_to) kombinatsiooni kohta, kõik väljad kaasas. Võrdle järjestikuseid hetktõmmiseid, et see koostada, ja käsitle iga välja muutust uue reana.
- Universumi funktsioon, mille ajatempli argument on kohustuslik.
universe(ts), mitte kunagiuniverse(). Sea vaikeväärtus selliseks, et keegi, isegi sina tulevikus kell 1 öösel, ei saaks kogemata ellujäänute loendit kasutada. - Andmelaadijasse lisa enne noteerimist kauplemist välistav kontroll: ühtegi küünalt ei tohi olla varasemast ajast kui
onboard_tsmiinus üks päev. Katkesta töö, ära anna hoiatust. - Stabiilne sisemine instrumendi ID, mis säilib ka ümbernimetamisel, sümbolit kasuta atribuudina. Seo POL ja MATIC ühe ID-ga ning märgi ümbernimetamised nii, et aegridade järjepidevuse loogika saaks nende ühendamisest keelduda.
Tee need muudatused ja arvuta uuesti. Pakun, et jõuad minu 0.74 lähedale. Siis saab oluliseks küsimus, kas 0.74, mis arvestab ka kadunud sümbolitega, peidab endas midagi paberkauplemise väärilist. Võib-olla küll. Perp'ide ristlõikeline momentum pole sugugi tühi asi ning osa sellest, mis pärast universumi parandamist alles jääb, on lühikesest küljest saadav tegelik carry. Samuti hakkavad paberkauplemise tulemused ja järeltest kokku langema, sest paberkauplemine on kogu aeg kasutanud ajahetkele vastavat universumit. Sel polnud valikut.
P.S. See pole krüpto eripära, siin on see lihtsalt silmatorkavam. Aktsiauuringute tegijad on võidelnud börsilt eemaldamise tootluste ja taaskasutatud sümbolitega alates sellest, kui CRSP hakkas neid levitama. Ennustusturud viivad selle äärmuseni: iga leping aegub, nii nagu ette nähtud, seega koosnebki universum üksnes noteerimistest ja aegumistest. Kui viid selle sõela kunagi Kalshisse, ehita kõigepealt varade põhitabel. Seal pole muud sorti ajalugu.
← Kõik postitused


