12. september 2026 · tveganje

Pet pravil za velikost pozicije, en signal: kaj v vašem backtestu zares opravi delo

Pet pravil za velikost pozicije, en signal: kaj v vašem backtestu zares opravi delo

Vstopni signal je verjetno najmanj pomemben del vašega backtesta. Vzamem lahko eno povprečno pravilo zagona, pustim vse časovne žige vstopov in izstopov nespremenjene, spremenim samo funkcijo, ki določa število pogodb v poziciji, in neto Sharpeov količnik se premakne z 0.41 na 0.71, največji padec pa z 31% na 13%. Isti posli. Iste izvršitve. Drugačna strategija.

Ta trditev ljudi jezi, in prav je tako, saj namiguje, da večino časa, porabljenega za prilagajanje dolžin obdobij in pragov filtrov, namenimo manj pomembnemu delu. Zato vam bom pokazal dejanske rezultate, nato pa priznal, v čem imajo kritiki prav, saj je ena različica tega argumenta napačna in vredno je vedeti, katero različico zagovarjam.

En signal, 6 načinov določanja velikosti pozicije

Signal: trajna pogodba ETHUSDT na Binance USDⓈ-M, 1-urne sveče, dolga pozicija, ko je 12-urna EMA nad 96-urno EMA, sicer brez pozicije, brez kratkih pozicij. Od julija 2022 do junija 2026. 431 sklenjenih poslov. Provizije taker na obeh straneh po 5.0 bps, financiranje se za dejansko pozicijo plača ali prejme vsakih 8 ur, zdrs pa je modeliran na podlagi globine najboljše ponudbe in povpraševanja. Signal je namenoma dolgočasen — izbral sem ga, ker ga nihče ne bi zagovarjal, zato je primeren za čist preizkus.

Vse spodnje vrstice imajo enake časovne žige vstopnih in izstopnih sveč. Razlikuje se samo pravilo za določanje velikosti pozicije.

Pravilo za velikost pozicijeNeto SharpeNajvečji padecLetni promet po nominalni vrednosti (× povprečna pozicija)Stroški kot % bruto dobička in izgubeNajvečji vzvod
Fiksna nominalna vrednost $10k0.4118.2%246×14%1.0×
Fiksni delež, 100% kapitala0.4430.8%251×15%1.0×
Obratna 20-dnevna realizirana volatilnost0.6814.1%690×29%4.4×
Ciljna volatilnost 20% na letni ravni, urno prilagajanje, brez omejitve0.7112.9%1,180×41%6.3×
Ciljna volatilnost 20%, pas brez trgovanja 20%, omejitev vzvoda 3×0.6615.3%402×19%3.0×
Polovični Kelly na podlagi drseče 60-dnevne sredine/variance0.5224.6%830×33%8.1×
0.41 → 0.71neto Sharpe, enaki vstopi
41%bruto dobička in izgube pobere urno prilagajanje pozicije
6.3×največji vzvod, ki ga je najboljši rezultat po Sharpeu tiho uporabil

Poglejte razpon. Med najslabšo in najboljšo vrstico je 73% relativna razlika v Sharpeu, padec pa se razlikuje za faktor 2.4. Zdaj pa poiščite parameter vstopnega signala v tem naboru, ki premakne Sharpe za 0.30, ne da bi bil hkrati očiten primer prekomernega prilagajanja. Iskal sem. Dolžina para EMA ga premakne za približno 0.12 čez celoten verjeten nabor vrednosti, večina tega premika pa je šum, ki ga zunaj vzorca ne morete obdržati.

Zakaj je obratna volatilnost videti tako dobra in kolikšen del izboljšanja je resničen

Mehanizem ni skrivnosten. Pri fiksni nominalni vrednosti velikost vaše pozicije ni povezana z realizirano volatilnostjo, zato je dolarsko tveganje na posel sorazmerno s tem, kakšna je volatilnost tisti teden. Pri ETH je 20-dnevna realizirana volatilnost v tem obdobju nihala od 31% do 118% na letni ravni. Fiksna nominalna vrednost je marca 2024 prevzela 3.8× več dolarskega tveganja kot julija 2023, ne zato, ker bi bil signal bolj zanesljiv, ampak ker je bil trg bolj razgiban. Skoraj ves padec je zgoščen v najvišjem kvintilu volatilnosti. Določanje velikosti pozicije z obratno volatilnostjo odpravi to povezavo, kar je resnično izboljšanje oblike niza donosov.

Toda del izboljšanja Sharpeovega količnika je artefakt merjenja; če obojega ne ločite, boste pozneje sprejemali slabe odločitve. Sharpe deli donosnost s standardnim odklonom donosov. Ciljanje volatilnosti po definiciji stabilizira standardni odklon donosov. Neposredno optimizirate imenovalec. Pravilo, ki prilagaja pozicije za dosego stalne vnaprej ocenjene volatilnosti, bo izboljšalo Sharpe pri skoraj vsakem nizu donosov z grozdenjem volatilnosti, tudi če nima nobene prednosti. To sem preveril na premešanih signalih: naključno premešajte časovne žige vstopov, ohranite dodatek za ciljanje volatilnosti in Sharpe se kljub povprečni donosnosti nič še vedno izboljša za približno 0.06 glede na fiksno nominalno vrednost. Malo, a ni nič, in gre zgolj za mehaniko.

Zato Sharpe pri interni primerjavi pravil za določanje velikosti pozicije nikoli ni edina številka na listu. Želim Calmar, neto dobiček in izgubo na enoto povprečne uporabljene nominalne vrednosti ter prehod od bruto do neto rezultata, saj je te tri stvari skupaj precej težje prirediti s trikom imenovalca.

Ocena volatilnosti je model in tudi ta lahko pušča podatke

Najpogostejši razlog, da se dober rezultat določanja velikosti pozicije izkaže za lažnega: ocena volatilnosti uporablja informacije iz sveče, za katero določa velikost. Če je vaša časovna vrsta volatilnosti izračunana z osredinjenim oknom, ali s privzeto funkcijo `rolling().std()` v pandas po ponovnem vzorčenju, ki vključuje trenutno nedokončano svečo, ali s standardizacijo na podlagi celotnega vzorca, prihaja do uhajanja podatkov. To je težko opaziti, ker je volatilnost vztrajna, zato je uhajanje v posamezni vrstici majhno, krivulja kapitala pa je še vedno videti verjetna. Le nekoliko preveč zglajena je prav v tednih, ki so pomembni.

Naši agenti pred uvrstitvijo rezultata v čakalno vrsto za trgovanje na papirju pri vsakem pravilu za velikost pozicije preverijo 4 stvari:

  1. Razpoložljivost v trenutku odločitve. Velikost, uporabljena ob odprtju sveče ob 14:00, mora biti izračunljiva iz podatkov, katerih časovni žig zaprtja je ≤ 13:59:59.999. To preverimo tako, da za naključno izbranih 200 trenutkov odločanja ponovno izračunamo časovno vrsto velikosti iz skrajšanega okvira podatkov in primerjamo razlike.
  2. Obdobje ocenjevalca je pravi parameter. 20-dnevno in 60-dnevno okno volatilnosti sta 2 različni strategiji. Obdobje gre skupaj z vsem drugim v nabor za preverjanje naprej po časovni osi; če rezultat deluje samo pri eni dolžini okna, je to ugotovitev o krhkosti.
  3. Potek vzvoda, ne le največji vzvod. Izpišite celotno porazdelitev bruto vzvoda. Zgornji neomejeni tek s ciljanjem volatilnosti je 4% ur preživel nad 5×, kar se v zbirni tabeli nikoli ne prikaže, povsem pa določa, ali je strategijo mogoče izvesti.
  4. Občutljivost velikosti pozicije kot preizkus robustnosti. Če Sharpe strmoglavi, ko ciljno volatilnost spremenite z 20% na 25%, strategija ni prilagojena ciljni volatilnosti, temveč uglaševanju vzvoda — prednost ste našli z izbiro ene številke.

Omejitev vzvoda ni dodatek za upravljanje tveganj, temveč del definicije strategije. Binanceove ravni za ETHUSDT z rastjo nominalne vrednosti pozicije znižujejo največji vzvod, stopnja vzdrževalnega kritja pa se hkrati zvišuje. Backtest, ki pravilu ciljanja volatilnosti dovoli vzvod 6.3× pri nominalni vrednosti $400k, opisuje pozicijo, ki je platforma pri takem kritju ne bo dovolila. Omejena vrstica v tabeli stane 0.05 Sharpeovega količnika in je edina od teh dveh, ki opisuje nekaj resničnega.

Pri prilagajanju pozicije odteka denar

Oglejte si stolpec s stroški. Urno prilagajanje na ciljno volatilnost je dalo najboljši naslovni Sharpeov količnik, hkrati pa je borzi prepustilo 41% bruto dobička in izgube. To pomeni letni promet v višini 1,180× povprečne nominalne vrednosti pozicije, ob 5 bps na stran ter razmiku in cenovnem vplivu. Preprosta rešitev je redkejše prilagajanje po urniku. Boljša rešitev je pas brez trgovanja: velikost spremenite samo, ko trenutna pozicija za več kot določen prag odstopa od ciljne.

Pas 20% je letni promet po nominalni vrednosti zmanjšal z 1,180× na 402× — za 66% — Sharpeov količnik pa je stal 0.05. To sem zdaj preizkusil na 8 signalih in vzorec se ponavlja: pasovi med 15% in 25% ohranijo večino koristi nadzora tveganja pri tretjini prometa, vse pod 10% pa pomeni zgolj plačevanje provizij za navidezno natančnost pri količini, ki jo tako ali tako ocenjujete z 20-dnevnim oknom. Pozicije ne morete prilagajati na 3 decimalna mesta, če ima število, ki ga ocenjujete, standardno napako 15%.

Februarja smo imeli tek, v katerem je poročilo, ki ga je pripravil agent, izboljšanemu vstopnemu filtru pripisalo izboljšanje Sharpeovega količnika za 0.22. Razlika je bila ena vrstica v modulu za določanje velikosti pozicije. Filter se ni spremenil. Zdaj v poročilu na vrhu izpišem zgoščeno vrednost konfiguracije velikosti pozicije, saj je pripisovanje zaslug disciplina, modeli pa prav tako radi povedo lično zgodbo kot kdorkoli drug.

Kako trgovanje na papirju vpliva na vaše pravilo za določanje velikosti pozicije

Prav tu se vrzel med backtestom in trgovanjem na papirju najbolj poveča, vzrok pa je večinoma aritmetika. Velikost pozicije, ki se odziva na volatilnost, se v vzorcu spreminja za faktor od 4 do 8. Oba skrajna primera zadeneta ob omejitve platforme, ki jih backtest ni modeliral.

Pri majhnih pozicijah: korak količine in najmanjša nominalna vrednost. Trajna pogodba ETHUSDT ima korak količine 0.001 in najmanjšo vrednost $5. Če je velikost v režimu nizke volatilnosti 0.0004 ETH, jo backtest drži, pri trgovanju na papirju pa pozicije ni. To se sliši kot skrajen primer, dokler ne ugotovite, da pravilo ciljanja volatilnosti postavi svoje najmanjše pozicije na najmirnejših trgih, kjer so pri trendnem signalu pogosto dobri vstopi. Pri velikih pozicijah pa nastopijo omejitve pozicij, ravni kritja in dejstvo, da pozicija z vzvodom 6× zahteva disciplino pri ločenem kritju, za katero v backtestu niste modelirali likvidacije.

Ujeli smo primer, ko je krivulja kapitala pri trgovanju na papirju 6 tednov odstopala od backtesta za največ 3%, nato pa močno zavila stran. Vzrok je bilo zaokroževanje: funkcija `int()` je količino odrezala namesto zaokrožila na korak, pri določanju velikosti naročila za pozicije s povprečno velikostjo 1.4 koraka. Backtest je velikost določal v zveznem prostoru, sistem za dejansko trgovanje pa je pri vsakem majhnem poslu izgubljal 20-30% predvidene velikosti pozicije. Ni bilo posebnosti pri modelu izvršitve, ni šlo za zakasnitev. Šlo je za odrezovanje.

Kje imajo kritiki prav

Tri pripombe so utemeljene in jih nočem zamolčati.

Prvič in najpomembneje: določanje velikosti pozicije razporeja prednost, ne more pa je ustvariti. Če je bruto pričakovana vrednost vašega signala po realističnih provizijah in financiranju enaka nič ali manjša od nje, vsako pravilo v tabeli prinaša izgubo — bolj izpopolnjena pravila imajo le lepši profil variance. Izbral sem signal z majhno, a pozitivno neto prednostjo v tem obdobju. Če istih 6 pravil uporabite na signalu z neto vrednostjo −1.2 bps na posel, se vrstni red ohrani, vse končne vrednosti kapitala pa so pod začetno. Velikost pozicije je množitelj nečesa. Še vedno potrebujete tisto nekaj.

Drugič, ciljanje volatilnosti ima resnično in dobro dokumentirano slabost: med hitrim razprodajanjem zmanjša vzvod in ga po nenadnem odboju znova poveča. Pri ostrem gibanju v obliki črke V zmaga fiksna nominalna vrednost, včasih z veliko prednostjo. Gibanje na delniških trgih marca 2020 in padec kriptovalut avgusta 2024 sta pri okrevanju kaznovala določanje velikosti pozicije glede na volatilnost. Moje štiriletno obdobje za ETH vsebuje več postopnega gibanja z grozdenjem volatilnosti kot nihanj v obliki črke V, kar koristi vrsticam z obratno volatilnostjo. Drugo obdobje bi del vrstnega reda obrnilo; če bi začel s tabelo iz leta 2020, bi bil moj argument šibkejši.

Tretjič, pravilo za določanje velikosti pozicije je lahko enako preveč prilagojeno kot karkoli drugega. Polovični Kelly na podlagi drsečih ocen je v moji tabeli zgovoren primer: deluje prefinjeno, ima teoretično podlago, a je prinesel drugi največji padec, ker je drseča ocena sredine šumne časovne vrste donosov neuporabna, Kelly pa je nanjo izjemno občutljiv. Vsako pravilo za določanje velikosti pozicije, ki kot vhod uporablja oceno pričakovane donosnosti, podeduje napako te ocene in jo še poveča. Pravila, ki uporabljajo samo oceno variance, se obnesejo veliko bolje, saj je varianca edini moment, ki ga lahko dejansko ocenite iz 4 let urnih podatkov.

Iz vsega tega bi ohranil naslednje: kadar vas rezultat backtesta preseneti, pred iskanjem domiselnosti v signalu preverite modul za določanje velikosti pozicije. In ko poročate o Sharpeovem količniku, zraven prikažite potek vzvoda in razčlenitev stroškov, saj število, ki je tako odvisno od odločitve o velikosti pozicije, sploh ni lastnost signala.

velikost pozicijeciljanje volatilnostiSharpeov količnikupravljanje tveganjbacktesting
← Vse objave