Tikriausiai jūsų įėjimo signalas atgaliniame teste yra mažiausiai svarbus dalykas. Galiu paimti vieną vidutinišką impulso taisyklę, nepakeisti nė vienos įėjimo ir išėjimo laiko žymos, pakeisti tik funkciją, kuri nusprendžia, kiek kontraktų laikyti, ir grynąjį Sharpe koeficientą padidinti nuo 0.41 iki 0.71, o didžiausią nuosmukį sumažinti nuo 31% iki 13%. Tie patys sandoriai. Tie patys įvykdyti pavedimai. Kita strategija.
Toks teiginys erzina žmones, ir turėtų erzinti, nes leidžia suprasti, kad didžiąją laiko dalį, skirtą peržiūros periodams ir filtrų slenksčiams derinti, skiriame mažiau svarbiam veiksniui. Tad parodysiu tikruosius rezultatus, o tada pripažinsiu, ką kritikai sako pagrįstai, nes yra šio argumento versija, kuri klaidinga, ir verta suprasti, kurią versiją pateikiu aš.
Vienas signalas, šeši pozicijos laikymo būdai
Signalas: ETHUSDT perpetual Binance USDⓈ-M biržoje, 1 valandos žvakės, long pozicija, kai 12 valandų EMA viršija 96 valandų EMA, kitu atveju pozicijos neturime, short pozicijų neatidarome. Nuo 2022 m. liepos iki 2026 m. birželio. 431 sandoris pirmyn ir atgal. Taker mokesčiai abiem kryptimis po 5.0 bps, finansavimo mokestis sumokamas arba gaunamas kas aštuonias valandas pagal tuo metu turimą poziciją, praslydimas modeliuojamas pagal geriausias pirkimo ir pardavimo kainas bei pavedimų knygos gylį. Tai tyčia nuobodus signalas — pasirinkau jį, nes niekas jo negintų, todėl jis tinka švariam bandymui.
Visose toliau pateiktose eilutėse įėjimo ir išėjimo žvakių laiko žymos yra identiškos. Skiriasi tik dydžio nustatymo funkcija.
| Dydžio nustatymo taisyklė | Grynasis Sharpe | Didž. nuosmukis | Per metus prekiaujamas nominalas (× vidutinė pozicija) | Sąnaudos, % bendrojo PnL | Didžiausias svertas |
|---|---|---|---|---|---|
| Fiksuotas $10k nominalas | 0.41 | 18.2% | 246× | 14% | 1.0× |
| Fiksuota dalis, 100% nuosavo kapitalo | 0.44 | 30.8% | 251× | 15% | 1.0× |
| Atvirkščiai proporcingas 20 dienų realizuotam kintamumui | 0.68 | 14.1% | 690× | 29% | 4.4× |
| 20% metinio kintamumo tikslas, perskaičiavimas kas valandą, be ribos | 0.71 | 12.9% | 1,180× | 41% | 6.3× |
| 20% kintamumo tikslas, 20% neveikimo intervalas, 3× sverto riba | 0.66 | 15.3% | 402× | 19% | 3.0× |
| Pusė Kelly pagal 60 dienų slenkamąjį vidurkį ir dispersiją | 0.52 | 24.6% | 830× | 33% | 8.1× |
Pažvelkite į skirtumą. Tarp prasčiausios ir geriausios eilutės Sharpe santykinai skiriasi 73%, o nuosmukis – 2.4 karto. Dabar parodykite man šioje duomenų aibėje įėjimo signalo parametrą, kuris pakeistų Sharpe 0.30 ir nebūtų akivaizdus perteklinis pritaikymas. Ieškojau. EMA poros ilgio pakeitimas visame tikėtiname parametrų tinkle jį pakeičia maždaug 0.12, o didžioji šio pokyčio dalis tėra triukšmas, kurio už imties ribų neišlaikysite.
Kodėl atvirkštinis kintamumo dydžio nustatymas atrodo toks geras ir kiek to pagerėjimo tikra
Veikimo principas nesudėtingas. Esant fiksuotam nominalui, pozicijos dydis nekoreliuoja su realizuotu kintamumu, vadinasi, kiekvieno sandorio rizika doleriais proporcinga tai, koks tą savaitę pasitaiko kintamumas. Per šį laikotarpį ETH 20 dienų realizuotas kintamumas svyravo nuo 31% iki 118% per metus. 2024 m. kovą fiksuoto nominalo testas prisiėmė 3.8× didesnę riziką doleriais nei 2023 m. liepą; ne todėl, kad signalas buvo patikimesnis, o todėl, kad rinka judėjo audringiau. Beveik visas jo nuosmukis susitelkęs didžiausio kintamumo penktadalyje. Atvirkštinis kintamumo dydžio nustatymas panaikina šį ryšį, ir tai iš tiesų pagerina grąžos srauto pobūdį.
Tačiau dalis Sharpe prieaugio yra matavimo artefaktas, ir jei šių dviejų dalių neatskirsite, vėliau priimsite blogus sprendimus. Sharpe skaičiuojamas grąžą dalijant iš grąžos standartinio nuokrypio. Kintamumo tikslinis valdymas pagal apibrėžimą stabilizuoja grąžos standartinį nuokrypį. Tiesiogiai optimizuojate vardiklį. Taisyklė, kuri keičia pozicijų dydžius taip, kad iš anksto numatytas kintamumas būtų pastovus, pagerins beveik bet kurio grąžos srauto Sharpe, jei kintamumas telkiasi į grupes, net ir srauto, neturinčio jokio pranašumo. Tai patikrinau su sumaišytais signalais: atsitiktinai parinkite įėjimo laiko žymas, palikite kintamumo tikslinio valdymo sluoksnį, ir Sharpe vis tiek pagerėja maždaug 0.06, palyginti su fiksuotu nominalu, net kai bazinė grąža yra lygi nuliui. Nedaug, bet ne nulis — tai vien mechaninis poveikis.
Todėl lygindamas dydžio nustatymo taisykles viduje niekada neapsiriboju Sharpe. Noriu Calmar rodiklio, grynojo PnL vienam vidutinio panaudoto nominalo vienetui ir bendrojo PnL perėjimo į grynąjį analizės, nes visus tris kartu gerokai sunkiau pakreipti manipuliuojant vardikliu.
Kintamumo įvertis yra modelis, todėl jis irgi gali nutekinti duomenis
Dažniausia priežastis, kodėl geras dydžio nustatymo rezultatas pasirodo esąs netikras: kintamumo įverčiui naudojama informacija iš tos pačios žvakės, kurios dydis nustatomas. Jei kintamumo eilutę skaičiuojate taikydami centruotą langą, arba pandas numatytąjį `rolling().std()` po perskaičiavimo į stambesnius intervalus, į kurį įtraukiama dabartinė neužbaigta žvakė, arba standartizuodami pagal visą imtį, turite duomenų nutekėjimą. Jį pastebėti sunku, nes kintamumas išlieka panašus, tad kiekvienoje atskiroje eilutėje nutekėjimas mažas, o nuosavo kapitalo kreivė vis dar atrodo įtikinamai. Tiesiog ji kiek per lygi būtent tomis savaitėmis, kurios svarbiausios.
Prieš perkeldami rezultatą į prekybos bandomojoje aplinkoje eilę, mūsų agentai patikrina keturis dalykus kiekvienai dydžio nustatymo taisyklei:
- Duomenų prieinamumas sprendimo priėmimo metu. 14:00 atsidarančios žvakės dydį turi būti įmanoma apskaičiuoti pagal duomenis, kurių uždarymo laiko žyma yra ≤ 13:59:59.999. Tai patikriname iš naujo apskaičiuodami dydžių eilutę pagal sutrumpintą duomenų rėmelį atsitiktinai parinktuose 200 sprendimo taškų ir palygindami rezultatus.
- Įverčio peržiūros laikotarpis yra tikras parametras. 20 dienų ir 60 dienų kintamumo langai reiškia dvi skirtingas strategijas. Peržiūros laikotarpis kartu su visais kitais parametrais įtraukiamas į slenkamąjį testavimo tinklelį, o jei rezultatas veikia tik pasirinkus vieną lango ilgį, tai rodo strategijos trapumą.
- Visas sverto kitimas, ne vien didžiausia reikšmė. Pateikite visą bendrojo sverto pasiskirstymą. Aukščiau pateiktas neribotas kintamumo tikslinio valdymo testas 4% valandų viršijo 5× svertą. Tokie dalykai niekada neatsiranda suvestinėje lentelėje, bet visiškai nulemia, ar strategiją įmanoma įgyvendinti.
- Dydžio nustatymo jautrumas kaip patikimumo testas. Jei Sharpe subyra pakeitus kintamumo tikslą iš 20% į 25%, strategija nėra valdoma pagal kintamumą — joje derinamas svertas, o pranašumą radote pasirinkę tinkamą skaičių.
Sverto riba nėra vien rizikos valdymo pagražinimas — ji yra strategijos apibrėžimo dalis. Binance ETHUSDT pakopos mažina maksimalų leistiną svertą augant pozicijos nominalui, kartu didėja ir palaikymo maržos norma. Atgalinis testas, leidžiantis kintamumo tikslinio valdymo taisyklei pasiekti 6.3× svertą esant $400k nominalui, aprašo poziciją, kurios birža neleis laikyti su tokia marža. Apribota eilutė kainuoja 0.05 Sharpe, bet tik viena iš šių dviejų aprašo realią poziciją.
Pinigai išleidžiami perskaičiuojant poziciją
Atkreipkite dėmesį į sąnaudų stulpelį. Kas valandą perskaičiuojant poziciją pagal kintamumo tikslą gautas geriausias antraštinis Sharpe, bet biržai atiteko ir 41% bendrojo PnL. Tai reiškia, kad per metus prekiauta 1,180× vidutinės pozicijos nominalo, taikant 5 bps mokestį už kiekvieną pusę, taip pat įskaičiavus kainų skirtumą ir poveikį rinkai. Akivaizdus sprendimas – perskaičiuoti rečiau, pagal grafiką. Geresnis sprendimas – neveikimo intervalas: dydį keisti tik tada, kai dabartinė pozicija nuo tikslinės nukrypsta daugiau už nustatytą ribą.
20% intervalas sumažino per metus prekiautą nominalą nuo 1,180× iki 402× — 66% — ir kainavo 0.05 Sharpe. Tai jau išbandžiau su aštuoniais signalais, ir tendencija kartojasi: 15–25% intervalai išlaiko didžiąją dalį rizikos valdymo naudos, o prekybos apimtį sumažina iki trečdalio; viskas, kas nesiekia 10%, tėra mokesčiai už kosmetinį tikslumą matuojant dydį, kurį ir taip nustatote pagal 20 dienų langą. Negalite perskaičiuoti iki trijų skaitmenų po kablelio, kai vertinamos reikšmės standartinė paklaida yra 15%.
Vasario mėnesį turėjome atvejį, kai agento parašyta ataskaita 0.22 Sharpe pagerėjimą priskyrė „patobulintam įėjimo filtrui“. Skyrėsi viena eilutė dydžio nustatymo modulyje. Filtras nebuvo pakeistas. Dabar nurodau ataskaitoje viršuje spausdinti dydžio nustatymo konfigūracijos maišos reikšmę, nes rezultatų priskyrimas yra disciplina, o modeliai taip pat noriai pasakoja gražią, vientisą istoriją kaip ir visi kiti.
Kaip prekyba bandomojoje aplinkoje paveikia dydžio nustatymo taisyklę
Būtent čia atotrūkis tarp atgalinio testo ir prekybos bandomojoje aplinkoje išauga labiausiai, ir priežastis daugiausia aritmetinė. Reaguojant į kintamumą, pozicijos dydis imtyje svyruoja 4–8 kartus. Abiejuose šio intervalo galuose susiduriama su biržos apribojimais, kurių atgalinis testas nemodeliavo.
Mažo dydžio pusėje – kiekio žingsnis ir minimalus nominalas. ETHUSDT perpetual kontrakto kiekio žingsnis yra 0.001, o minimalus nominalas – $5. Jei mažo kintamumo režimu pozicijos dydis yra 0.0004 ETH, atgalinis testas ją laiko, o bandomojoje aplinkoje pozicijos nėra. Tai skamba kaip retas atvejis, kol nesuprantate, kad kintamumo tikslo taisyklė nustato mažiausias pozicijas ramiausiose rinkose; trendą sekantį signalą taikant būtent ten dažnai pasitaiko geri įėjimai. Didelio dydžio pusėje – pozicijų limitai, maržos pakopos ir tai, kad 6× pozicijai reikia izoliuotos maržos valdymo, nors atgaliniame teste likvidavimo modelio neturėjote.
Pastebėjome atvejį, kai nuosavo kapitalo kreivė bandomojoje aplinkoje šešias savaites nuo atgalinio testo skyrėsi mažiau nei 3%, o tada staigiai išsiskyrė. Priežastis buvo apvalinimas: pavedimų dydžio skaičiuoklėje naudotas `int()` nukirpimas, o ne apvalinimas iki žingsnio; tai buvo taikoma pozicijoms, kurių vidutinis dydis siekė 1.4 žingsnio. Atgalinis testas nustatė dydį tolydžiojoje erdvėje, o realių pavedimų skaičiuoklė kiekviename mažame sandoryje prarasdavo 20-30% numatytos pozicijos. Jokių sudėtingų įvykdymo modelių, jokių pasakojimų apie delsą. Nukirpimas.
Kur kritikai teisūs
Yra trys pagrįsti prieštaravimai, ir nenoriu jų nutylėti.
Pirma, ir svarbiausia: dydžio nustatymas paskirsto pranašumą, bet jo nesukuria. Jei jūsų signalo bendrasis laukiamas rezultatas, atėmus realistiškus mokesčius ir finansavimo sąnaudas, yra lygus nuliui arba mažesnis, kiekviena lentelėje pateikta taisyklė praras pinigus — įmantriosios tiesiog praras juos su gražesniu grąžos svyravimų profiliu. Pasirinkau signalą, kurio grynasis pranašumas šiame laikotarpyje nedidelis, bet teigiamas. Pritaikius tas pačias šešias taisykles signalui, kurio grynasis rezultatas yra −1.2 bps vienam sandoriui, eiliškumas išlieka toks pat, bet kiekvieno testo galutinė nuosavo kapitalo vertė nesiekia pradinės. Dydžio nustatymas yra kažko daugiklis. Tas „kažkas“ vis tiek būtinas.
Antra, kintamumo tikslinis valdymas turi realų ir gerai dokumentuotą trūkumą: staigaus išpardavimo apačioje pozicija sumažinama, o po staigaus atšokimo vėl padidinama. Esant staigiam V formos atsigavimui, fiksuotas nominalas laimi, kartais smarkiai. 2020 m. kovą akcijų rinkose ir 2024 m. rugpjūtį, kriptovaliutų rinkai smukus, kintamumu pagrįsto dydžio nustatymo pozicijos nukentėjo atsigavimo etape. Mano ketverių metų ETH laikotarpį sudaro daugiau užsitęsusių kintamumo telkinių nei V formos svyravimų, todėl atvirkštinio kintamumo eilutės atrodo palankiau. Pasirinkus kitą laikotarpį dalis eiliškumo pasikeistų, o jei būčiau pradėjęs nuo 2020 m. lentelės, mano argumentas būtų silpnesnis.
Trečia, dydžio nustatymo taisyklę galima taip pat perteklinai pritaikyti kaip bet ką kita. Mano lentelėje tai parodo pusės Kelly taisyklė, paremta slenkamaisiais įverčiais: ji atrodo įmantriai, turi teorinį pagrindą, bet davė antrą pagal dydį nuosmukį, nes triukšmingos grąžos eilutės slenkamasis vidurkis yra bevertis, o Kelly į jį reaguoja itin jautriai. Kiekviena dydžio nustatymo taisyklė, kurios įvestis yra laukiamos grąžos įvertis, perima šio įverčio paklaidą ir ją padidina. Taisyklės, kurioms naudojamas tik dispersijos įvertis, veikia daug patikimiau, nes dispersija yra vienintelis momentas, kurį iš ketverių metų valandinių duomenų iš tiesų galima įvertinti.
Iš viso to pasilikčiau štai ką: jei atgalinio testo rezultatas nustebina, prieš ieškodami gudrybių signale patikrinkite dydžio nustatymo modulį. O pateikdami Sharpe, greta nurodykite sverto kitimą ir sąnaudų analizę, nes nuo dydžio nustatymo sprendimo taip priklausantis skaičius apskritai nėra signalo savybė.
← Visi įrašai
