12. září 2026 · riziko

Pět pravidel sizingu, jeden signál: co ve vašem backtestu odvádí skutečnou práci

Pět pravidel sizingu, jeden signál: co ve vašem backtestu odvádí skutečnou práci

Váš vstupní signál je v backtestu nejspíš tím nejméně podstatným. Vezmu jedno průměrné momentum pravidlo, nechám všechny časy vstupů a výstupů beze změny a upravím jen funkci, která určuje počet držených kontraktů. Čisté Sharpe ratio se tím posune z 0.41 na 0.71 a maximální drawdown z 31% na 13%. Stejné obchody. Stejné fill ceny. Jiná strategie.

Tohle tvrzení lidi dráždí, a mělo by, protože z něj plyne, že většinu času stráveného laděním délek lookbacků a prahů filtrů věnujeme méně důležité složce. Ukážu vám tedy skutečné běhy a pak uznám i námitky kritiků, protože tahle argumentace má i chybnou podobu a stojí za to vědět, kterou z nich předkládám.

Jeden signál, 6 způsobů, jak ho držet

Signál: perpetual ETHUSDT na Binance USDⓈ-M, 1hodinové svíčky, long, když je 12hodinová EMA nad 96hodinovou EMA, jinak bez pozice, bez shortů. Od července 2022 do června 2026. 431 round tripů. Taker poplatky 5.0 bps na obou stranách, funding placený nebo přijatý každých 8 hodin podle skutečné pozice, slippage modelovaná podle hloubky na nejlepší kotaci. Je to záměrně nudný signál — vybral jsem ho, protože by se ho nikdo nezastával, takže dobře poslouží jako čistý test.

Každý řádek níže používá totožné časy vstupů a výstupů podle svíček. Liší se pouze funkce sizingu.

Pravidlo sizinguČisté Sharpe ratioMax. DDRoční zobchodovaný nominál (× průměrná pozice)Náklady jako % hrubého PnLMax. páka
Pevný nominál $10k0.4118.2%246×14%1.0×
Pevný podíl, 100% kapitálu0.4430.8%251×15%1.0×
Inverzní realizovaná volatilita za 20 dní0.6814.1%690×29%4.4×
Cíl roční volatility 20%, hodinové vyvažování, bez limitu0.7112.9%1,180×41%6.3×
Cíl volatility 20%, pásmo bez obchodování 20%, limit páky 3×0.6615.3%402×19%3.0×
Poloviční Kelly podle klouzavého průměru/variance za 60 dní0.5224.6%830×33%8.1×
0.41 → 0.71čisté Sharpe ratio, stejné vstupy
41%hrubého PnL pohltí hodinové vyvažování
6.3×maximální páka, kterou nejlepší běh podle Sharpe ratio potichu používal

Podívejte se na rozpětí. Mezi nejhorším a nejlepším řádkem je relativní rozdíl Sharpe ratio 73% a drawdown se liší 2.4krát. Teď mi ukažte parametr vstupního signálu na tomto datasetu, který posune Sharpe ratio o 0.30, aniž by šlo zároveň o zjevné přeučení. Hledal jsem. Délka dvojice EMA ho posouvá asi o 0.12 v celé věrohodné mřížce a většina toho posunu je šum, který mimo vzorek neudržíte.

Proč inverzní volatilita vypadá tak dobře a nakolik je to skutečné

Mechanismus není záhadný. Při pevném nominálu velikost pozice nekoreluje s realizovanou volatilitou, takže vaše dolarové riziko na obchod je úměrné tomu, jaká volatilita zrovna ten týden panuje. U ETH se realizovaná volatilita za 20 dní v tomto období pohybovala od 31% do 118% anualizovaně. Běh s pevným nominálem nesl v březnu 2024 3.8× větší dolarové riziko než v červenci 2023, ne proto, že by si signálem byl jistější, ale protože trh byl rozkolísanější. Téměř celý jeho drawdown se soustředí do nejvyššího kvintilu volatility. Inverzní sizing podle volatility toto propojení odstraňuje a tím skutečně zlepšuje profil výnosové řady.

Část zlepšení Sharpe ratio je ale artefakt měření. Pokud tyto dvě složky neoddělíte, budete se dál špatně rozhodovat. Sharpe ratio se počítá jako výnos dělený směrodatnou odchylkou výnosů. Cílení volatility je z definice operace, která směrodatnou odchylku výnosů stabilizuje. Přímo optimalizujete jmenovatel. Pravidlo, které škáluje pozice tak, aby dosáhlo konstantní ex ante volatility, zlepší Sharpe ratio téměř u jakékoli výnosové řady s shlukováním volatility, včetně řad bez jakékoli výhody. Ověřil jsem to na promíchaných signálech: náhodně přeuspořádejte časy vstupů, ponechte overlay cílení volatility a Sharpe ratio se i při nulovém průměrném výnosu zlepší oproti pevnému nominálu zhruba o 0.06. Je to málo, ale nenulové — a čistě mechanické.

Když tedy interně porovnávám pravidla sizingu, Sharpe ratio nikdy není jediné číslo v tabulce. Zajímá mě Calmar, čisté PnL na jednotku průměrného nasazeného nominálu a rozklad hrubých výnosů až po čisté. Tato tři měřítka se společně mnohem hůř vylepšují trikem se jmenovatelem.

Odhad volatility je model a může propouštět informace

Nejčastější důvod, proč se dobrý výsledek sizingu ukáže jako falešný: odhad volatility používá informaci ze svíčky, pro kterou se sizing počítá. Pokud řadu volatility počítáte z centrovaného okna, nebo použijete výchozí `rolling().std()` z pandas po převzorkování zahrnujícím aktuální neuzavřenou svíčku, případně standardizaci z celého vzorku, dochází k úniku informací. Je to nenápadné, protože volatilita přetrvává, takže únik je na každém řádku malý a kapitálová křivka stále vypadá věrohodně. Jen je o něco hladší přesně v týdnech, na kterých záleží.

Naši agenti před zařazením výsledku do fronty paper tradingu u každého pravidla sizingu ověřují 4 věci:

  1. Dostupnost v okamžiku rozhodnutí. Velikost použitá na svíčce otevírající se ve 14:00 musí být vypočitatelná z dat, jejichž čas uzavření je ≤ 13:59:59.999. Ověřujeme to opětovným výpočtem řady velikostí z oříznutého datového rámce pro náhodný vzorek 200 okamžiků rozhodnutí a porovnáním rozdílů.
  2. Lookback odhadu je skutečný parametr. Okno volatility 20 dní a okno volatility 60 dní představují 2 různé strategie. Délku lookbacku zahrnujeme do walk-forward mřížky spolu se vším ostatním. Pokud výsledek funguje jen při jediné délce okna, je to zjištění o jeho křehkosti.
  3. Průběh páky, nejen její maximum. Vypisujte celé rozdělení hrubé páky. Běh s neomezeným cílením volatility uvedený výše strávil 4% hodin nad 5×. To je přesně ten typ údaje, který se v souhrnné tabulce nikdy neobjeví, a přitom rozhoduje o tom, zda lze strategii realizovat.
  4. Citlivost sizingu jako test robustnosti. Pokud se Sharpe ratio zhroutí při změně cílové volatility z 20% na 25%, strategie není řízená cílovou volatilitou, ale vyladěná na páku. Našli jste výhodu tím, že jste vybrali konkrétní číslo.

Limit páky není jen doplněk řízení rizika, je součástí definice strategie. Úrovně pro ETHUSDT na Binance s růstem nominálu pozice snižují maximální páku a zároveň zvyšují sazbu udržovací marže. Backtest, který nechá pravidlo cílení volatility dojít až na 6.3× při nominálu $400k, popisuje pozici, kterou vám burza při dané marži nedovolí držet. Řádek s limitem stojí 0.05 Sharpe ratio a jako jediný z těch dvou popisuje něco skutečného.

Peníze mizí při vyvažování

Všimněte si sloupce nákladů. Hodinové vyvažování na cílovou volatilitu přineslo nejlepší headline Sharpe ratio a zároveň odevzdalo burze 41% hrubého PnL. To odpovídá ročnímu zobchodovanému nominálu ve výši 1,180× průměrného nominálu pozice při 5 bps za stranu, plus spread a cenový dopad. Naivním řešením je vyvažovat méně často podle pevného rozvrhu. Lepší řešení je pásmo bez obchodování: upravit pozici jen tehdy, když se odchýlí od cíle o více než stanovený práh.

Pásmo 20% snížilo roční zobchodovaný nominál z 1,180× na 402× — tedy o 66% — a stálo 0.05 Sharpe ratio. Ověřil jsem to už na 8 signálech a opakuje se stejný vzorec: pásma mezi 15% a 25% zachovají většinu přínosu řízení rizika při třetinovém obratu a pod 10% jen platíte poplatky za kosmetickou přesnost hodnoty, kterou stejně odhadujete z 20denního okna. Nemůžete vyvažovat na 3 desetinná místa podle čísla se směrodatnou chybou 15%.

V únoru jsme měli běh, ve kterém report od agenta připsal zlepšení Sharpe ratio o 0.22 „vylepšenému vstupnímu filtru“. Rozdíl v kódu byl jediný řádek v modulu sizingu. Filtr se nezměnil. Teď nechávám nahoře v reportu vypisovat hash konfigurace sizingu, protože přiřazování zásluh vyžaduje disciplínu a modely si stejně jako lidé rády vymýšlejí úhledné příběhy.

Jak paper trading prověří vaše pravidlo sizingu

Právě tady se backtest a paper trading nejvíc rozcházejí, a důvodem je hlavně prostá aritmetika. Sizing reagující na volatilitu znamená, že velikost pozice se během vzorku mění 4 až 8krát. Oba konce tohoto rozpětí narážejí na omezení burzy, která backtest nikdy nemodeloval.

Na dolním konci jsou krok velikosti a minimální nominál. Perpetual ETHUSDT má krok množství 0.001 a minimum $5. Pokud velikost v režimu nízké volatility vychází na 0.0004 ETH, backtest ji drží, ale paper trading žádnou pozici neotevře. Zní to jako okrajový případ, dokud si neuvědomíte, že pravidlo cílení volatility vytváří své nejmenší pozice na nejklidnějších trzích, tedy u trendového signálu často právě tam, kde jsou dobré vstupy. Na horním konci jsou limity pozic, úrovně marže a fakt, že pozice s pákou 6× vyžaduje disciplínu při použití izolované marže, pro niž jste v backtestu nemodelovali likvidaci.

Zachytili jsme případ, kdy kapitálová křivka paper tradingu 6 týdnů kopírovala backtest s odchylkou do 3% a pak se prudce rozešla. Příčinou bylo zaokrouhlování: v order sizeru se používalo zkrácení pomocí `int()` místo zaokrouhlení na krok, a to u pozic s průměrem 1.4 kroku. Backtest určoval velikosti v spojitém prostoru, zatímco živý sizer na každém malém obchodu ztrácel 20-30% zamýšlené pozice. Žádný exotický fill model ani příběh o latenci. Zkracování.

V čem mají kritici pravdu

Tři námitky jsou oprávněné a nechci jejich význam zastírat.

Za prvé, a to nejdůležitější: sizing rozděluje výhodu, ale nedokáže ji vytvořit. Pokud je hrubá očekávaná hodnota vašeho signálu po započtení realistických poplatků a fundingu nulová nebo záporná, každé pravidlo v tabulce prodělává — ta sofistikovanější jen prodělávají s hezčím profilem variance. Vybral jsem signál s malou, ale kladnou čistou výhodou v tomto období. Spusťte stejných 6 pravidel na signálu s čistým výnosem −1.2 bps na obchod a pořadí zůstane stejné, ale konečný kapitál bude u všech pod počáteční hodnotou. Sizing je násobitel něčeho. To něco pořád potřebujete.

Za druhé, cílení volatility má skutečný a dobře zdokumentovaný způsob selhání: během rychlého výprodeje snižuje páku u jeho dna a znovu ji navyšuje až po odrazu. V ostrém pohybu ve tvaru V vítězí pevný nominál, někdy výrazně. Březnový propad akcií v roce 2020 i kryptoměnový výprodej v srpnu 2024 potrestaly sizing reagující na volatilitu během následného zotavení. Mé čtyřleté období ETH náhodou obsahuje více vleklých pohybů se shlukováním volatility než výkyvů ve tvaru V, což výsledkům inverzního sizingu podle volatility nahrává. V jiném období se část pořadí obrátí; kdybych začal tabulkou z roku 2020, měl bych pro tuto argumentaci slabší podklady.

Za třetí, pravidlo sizingu lze přeučit stejně jako cokoli jiného. Poloviční Kelly na klouzavých odhadech je v mé tabulce výmluvný případ: vypadá sofistikovaně, má teoretické opodstatnění, ale přineslo druhý nejhorší drawdown, protože klouzavý odhad průměru zašuměné výnosové řady je k ničemu a Kelly je na něj mimořádně citlivé. Každé pravidlo sizingu, které jako vstup používá odhad očekávaného výnosu, přebírá chybu tohoto odhadu a ještě ji zesiluje. Pravidla využívající pouze odhad variance se chovají mnohem lépe, protože variance je jediný moment, který lze skutečně odhadnout ze 4 let hodinových dat.

Co bych si z toho odnesl: když vás výsledek backtestu překvapí, zkontrolujte modul sizingu, než začnete v signálu hledat důmyslné řešení. A když reportujete Sharpe ratio, uveďte vedle něj průběh páky i rozklad nákladů až k čistému výsledku, protože číslo tolik závislé na rozhodnutí o sizingu vůbec není vlastností samotného signálu.

sizing pozicecílení volatilitySharpe ratiořízení rizikabacktesting
← Všechny články