TakéBacktest, historická simulacePokročilý

Definice

Backtesting je ověřování obchodní strategie, rizikového modelu nebo rozhodovacího pravidla na historických datech. Simulace ukazuje, jak by se pravidla chovala v minulosti při daných nákladech, omezeních a dostupných informacích. Výsledek není předpověď zisku, ale test konzistence, robustnosti a praktické proveditelnosti modelu.

Kategorie: Kvantitativní tradingAktualizováno

Proč backtesting láká i klame

Backtesting dává strategii tvrdší zkoušku než pocit z grafu nebo několik ručně vybraných obchodů. Pravidla se spustí nad posloupností historických cen, signálů, objednávek nebo rizikových odhadů a vyhodnotí se, co by se stalo při tehdy dostupných datech. V kvantitativním tradingu tak lze porovnat různé vstupy, velikost pozice, stop-loss, rebalancování i dopad poplatků.

Backtesting zároveň svádí k falešné jistotě. Historie obsahuje jen jeden průběh trhu a vývojář může nevědomky přizpůsobit strategii konkrétnímu období. Test potom vypadá přesvědčivě, ale živé obchodování selže, protože pravidla zachytila šum, nikoli opakovatelný vzorec.

Co musí být ve scénáři pevně dané

Backtesting má smysl pouze tehdy, když jsou před spuštěním jasně zapsaná pravidla. Strategie musí vědět, kdy vstupuje, kdy vystupuje, jak velkou pozici otevírá a z jakých dat signál počítá. Důležité je také pořadí událostí: signál spočtený z dnešní zavírací ceny nemůže být použit pro nákup za stejnou zavírací cenu, pokud by v reálném čase ještě nebyla známá.

  • Data: historické ceny, objemy, fundamenty nebo rizikové faktory musí odpovídat dostupnosti v daném čase.
  • Náklady: poplatky, spread, slippage a daně mohou změnit ziskovou strategii na ztrátovou.
  • Omezení: likvidita, minimální objem obchodu, shortování nebo margin nesmí být ignorované.
  • Rozdělení období: trénovací část slouží k návrhu pravidel, testovací část k nezávislejšímu ověření.

Proč nestačí konečný zisk

Konečný zisk je jen jedna metrika a často neprozradí, jak bolestivá byla cesta k výsledku. Backtesting se proto čte přes drawdown, volatilitu, poměr zisku k riziku, počet obchodů, podíl ziskových obchodů a citlivost na malé změny parametrů. Strategie s vysokým výnosem a jedním extrémním obchodem může být méně důvěryhodná než strategie s nižším, ale stabilnějším průběhem.

Rizikové modely používají backtesting jinak: například u Value at Risk se počítá, jak často skutečná ztráta překročila odhadovaný limit. Příliš mnoho výjimek naznačuje podhodnocené riziko, podezřele málo výjimek zase může znamenat neefektivně konzervativní model.

Kde historická simulace ztrácí oporu

Historická data neobsahují budoucí regulaci, nové účastníky trhu ani změny mikrostruktury burzy. Backtesting proto není důkaz, že strategie vydělá. Lepší praxe kombinuje čistý out-of-sample test, walk-forward vyhodnocení, stresové scénáře a následný paper trading. Cílem není najít nejhezčí křivku kapitálu, ale odhalit, zda pravidla přežijí realistické tření a změnu prostředí.

Příklady z praxe

  1. Průraz klouzavého průměru u akcie

    Vývojář testuje jednoduchou strategii, která kupuje akcii, když krátký klouzavý průměr překročí delší průměr. Backtest používá pouze ceny z předchozích dnů, takže nevzniká look-ahead bias. Výsledek ukáže hodnotu portfolia po průchodu historickými cenami, ale bez realistických poplatků by byl příliš optimistický.

    prices = [100, 101, 102, 99, 98, 103, 105, 104, 108, 107]
    cash, position = 10000, 0
    
    for i in range(5, len(prices)):
        short_ma = sum(prices[i-3:i]) / 3
        long_ma = sum(prices[i-5:i]) / 5
        if short_ma > long_ma and cash >= prices[i]:
            position += 1
            cash -= prices[i]
        elif short_ma < long_ma and position > 0:
            position -= 1
            cash += prices[i]
    
    print(round(cash + position * prices[-1], 2))
  2. Kontrola denního VaR v bance

    Rizikový tým kontroluje denní odhad Value at Risk proti skutečným ztrátám portfolia. Každý den, kdy ztráta překročí limit, se počítá jako výjimka. Pokud je výjimek výrazně víc, než model připouští, tým musí přehodnotit parametry, data nebo celou metodiku řízení rizika.

    losses = [0.4, 0.8, 1.7, 0.2, 2.1, 0.5]
    var_99 = [1.5, 1.4, 1.6, 1.3, 1.8, 1.4]
    
    exceptions = sum(loss > limit for loss, limit in zip(losses, var_99))
    exception_rate = exceptions / len(losses)
    
    print(exceptions, round(exception_rate, 3))

Časté omyly

MýtusKdyž backtest vydělal na historii, strategie bude vydělávat i živě.
Ve skutečnostiBacktesting ukazuje chování pravidel v minulosti, nikoli záruku budoucího zisku. Trh se může změnit a strategie může být přizpůsobená náhodnému šumu ve vzorku dat.
MýtusStačí vybrat parametry s nejvyšším ziskem v backtestu.
Ve skutečnostiOptimalizace podle nejlepší historické křivky často vede k overfittingu. Robustnější postup sleduje citlivost parametrů, oddělené testovací období a realistické obchodní náklady.

Časté dotazy

Kolik historických dat backtesting potřebuje?
Backtesting potřebuje tak dlouhé historické období, aby pokrylo různé tržní režimy, nejen jeden růstový nebo klidný úsek. U intradenní strategie může být mnoho obchodů i v kratším kalendářním období, zatímco dlouhodobá alokační strategie potřebuje roky dat. Rozhodující není samotný počet řádků, ale počet nezávislých situací, ve kterých pravidla dostala příležitost selhat.
Proč se při backtestingu zakazuje použití budoucích informací?
Backtesting se zákazem budoucích informací chrání test před nerealistickou výhodou. Strategie nesmí používat cenu, účetní výkaz, revizi indexu ani jiný údaj dřív, než by byl dostupný v daném okamžiku. Look-ahead bias často vznikne nenápadně, například špatným zarovnáním časových řad nebo výběrem firem, které přežily až do konce datového vzorku.
Co znamená dobrý výsledek backtestingu v tradingu?
Dobrý výsledek backtestingu v tradingu znamená víc než vysoký zisk na konci grafu. Strategie by měla mít srozumitelné ekonomické zdůvodnění, přijatelný drawdown, dostatečný počet obchodů a rozumnou citlivost na změnu parametrů. Výsledek je silnější, pokud se podobné chování objeví i na odděleném testovacím období a po započtení nákladů.
Proč po backtestingu ještě nestačí nasadit strategii na reálné peníze?
Backtesting neověří všechny problémy živého nasazení. Reálné obchodování přidá zpoždění, částečná plnění, výpadky dat, psychologický tlak a změny likvidity. Paper trading nebo malé produkční nasazení pomáhá zjistit, zda implementace odpovídá simulaci a zda strategie přežije provozní detaily, které historický test často zjednodušuje.

Zdroje

  1. Backtesting(otevře se v novém okně)Wikipedia
  2. The Probability of Backtest Overfitting(otevře se v novém okně)arXiv, 2014
  3. Techniques for Verifying the Accuracy of Risk Measurement Models(otevře se v novém okně)The Journal of Derivatives, 1995

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.