Proč některý robot vydělává jen na backtestu :::

Nejčastější důvod, proč některý robot v backtestu vydělává a na živém účtu ztrácí, není špatný broker ani smůla obchodníka. Je to skryté směrové zkreslení (anglicky bias), které si model potichu osvojí a vy ho v číslech z testeru nevidíte.

Znáte to. Stáhnete si robota, nebo si ho sami poskládáte v Pythonu. Backtest ukazuje hladkou rostoucí křivku, úspěšnost obchodů přes 60 % a drawdown, který vypadá snesitelně. Spustíte ho na demu, pak na malém živém účtu. A po pár týdnech zjistíte, že ta krásná křivka byla jen fotka minulosti.

Forexu se věnuji přes dvacet let a posledních několik let se automatickým obchodním systémům věnuji i akademicky, v rámci doktorského studia na VŠFS v Praze. V tomto článku vysvětlím jeden konkrétní mechanismus, který stojí za velkou částí zklamání z robotů. Ukážu, co o něm říkají dvě moje recenzované studie z roku 2026. A hlavně dám praktický postup, jak si robota nebo signál prověřit sami, bez znalosti strojového učení.

Co je skryté směrové zkreslení a proč vzniká

Směrové zkreslení znamená, že model systematicky předpovídá jeden směr častěji, než by odpovídalo realitě. Typicky pořád „nahoru“, nebo pořád „dolů“. Navenek to vypadá jako chytrá predikce, ve skutečnosti je to sázka na pokračování trendu.

V ideálním světě by model, který opravdu něco umí, předpovídal růst a pokles zhruba vyrovnaně, pokud jsou i v datech zhruba vyrovnané. Když místo toho dává 75 % signálů na long, je potřeba se ptát proč. Buď našel skutečnou výhodu, nebo se jen naučil, že trh v testovaném období převážně rostl.

Toto zkreslení nevzniká zlým úmyslem. Vzniká ze tří docela nevinných zdrojů:

  1. Trend v trénovacích datech. Když trénujete na období, kdy EUR/USD nebo index dlouhodobě stoupal, model zjistí, že „kupovat“ se vyplácí. Nenaučil se trh číst, naučil se jeho směr.
  2. Nevyvážené cíle (labely). Pokud je v datech víc rostoucích dní než klesajících, i úplně hloupý model, který vždycky řekne „nahoru“, má úspěšnost nad 50 %. Vypadá to jako výkon, ale je to jen statistika.
  3. Výběr vstupních proměnných. Tohle je ta nejméně viditelná část a právě na ni se zaměřuje můj výzkum. Algoritmy, které vybírají z desítek indikátorů ty „nejlepší“, mají tendenci preferovat proměnné, které nesou informaci o trendu. Výsledný model je pak vychýlený už od základu, ještě než se začne učit.

Záludné je, že klasické metriky z testeru tenhle problém nezachytí. Úspěšnost obchodů, profit factor i čistý zisk mohou vypadat výborně. Problém se ukáže až ve chvíli, kdy se trh otočí nebo začne jít do strany. A to je přesně moment, kdy už máte robota spuštěného na skutečných penězích.

Příklad: robot, který jen kopíruje trend

Následující příklad je vymyšlený pro názornost, čísla nejsou z žádného konkrétního testu. Mechanismus je ale přesně ten, který v praxi vidím pořád dokola.

Představte si dva roboty testované na stejném měnovém páru za dva roky, kdy kurz převážně rostl.

Robot A Robot B
Podíl long signálů 82 % 54 %
Úspěšnost obchodů 61 % 55 %
Zisk v backtestu +38 % +21 %
Prosté držení longu (buy-and-hold) +30 % +30 %
Zisk z longů / ze shortů +41 % / −3 % +12 % / +9 %

Na první pohled je jasný vítěz Robot A. Vyšší úspěšnost, skoro dvojnásobný zisk. Většina lidí by si vybrala jeho.

Podívejte se ale na poslední dva řádky. Robot A vydělal jen o 8 procentních bodů víc než ten, kdo by prostě nakoupil a dva roky nic nedělal. A na shortech prodělává. Jeho „výhoda“ je z velké části trend, který v testovaném období náhodou panoval. Jakmile se trh otočí, robot bude dál tvrdohlavě kupovat.

Robot B vydělal méně, ale vydělává na obou stranách trhu a jeho signály jsou vyvážené. Jeho výsledek se mnohem méně opírá o to, kam se trh zrovna hýbal. Na živém účtu bych dal přednost právě jemu.

Právě tohle je jádro problému: backtest odměňuje robota, který se trefil do směru, ne robota, který umí obchodovat.

Co ukázal výzkum na měnových párech (Metrics, 2026)

V první studii jsme se s Janem Lánským, mým školitelem na VŠFS, zaměřili na to, jestli se dá směrové zkreslení odstranit už při výběru vstupních proměnných a jestli to zlepší obchodovatelné výsledky na forexu. Odpověď je ano, ale jen na krátkém horizontu. Článek vyšel v březnu 2026 v recenzovaném časopise Metrics vydavatelství MDPI.

Jak jsme postupovali

Vyšli jsme ze známé metody výběru proměnných Feature Selection with Annealing (FSA). Ta postupně „žíhá“ sadu kandidátních indikátorů a ponechává ty nejužitečnější. Problém je, že sama o sobě nijak nehlídá, jestli výsledný model netáhne systematicky na jednu stranu.

Naše úprava se jmenuje BFSA, Bias-Corrected Feature Selection with Annealing, česky zhruba výběr proměnných s korekcí zkreslení. Do kritéria, podle kterého se proměnné vybírají, přidává přímou penalizaci za odchylku predikcí od neutrálních 50 %. Model tedy dostane „pokutu“ ve chvíli, kdy začne nadměrně preferovat jeden směr. Kromě základní verze jsme testovali i variantu s pevně nastavenou penalizací (BFSA-Fixed).

To podstatné pro praxi je, jak jsme testovali:

  • Walk-forward místo jednoho backtestu. Model se opakovaně přetrénovával na posouvajícím se okně dat a výběr proměnných se znovu spouštěl v každém kroku. Přesně tak, jak by se choval robot nasazený na živém účtu.
  • Započtené náklady. Výsledky jsme hodnotili po započtení realistických transakčních nákladů, ne „na papíře“.
  • Krátký horizont. Predikovali jsme pohyb na další den u likvidních měnových párů.

Co z toho vyšlo

Korekce zkreslení při výběru proměnných dokázala výrazně zlepšit obchodovatelnost strategií na další den. A to bez toho, aby se výsledek opíral o trvalé sázení na jeden směr nebo o přeučení na historická data. Jinými slovy, zlepšení nepocházelo z trendu, ale ze skutečné informace v datech.

Stejně důležitý je druhý závěr, který rád říkám nahlas: předvídatelnost forexu se ukázala jen krátkodobě. Dlouhodobě FX předvídat nejde. Pokud vám někdo slibuje robota, který bude stabilně vydělávat roky dopředu bez úprav, berte to s velkou rezervou.

Co ukázala studie na 40 trzích (DSFE, 2026)

Druhá studie odpovídá na otázku, kterou dostávám nejčastěji: funguje to i mimo forex a dá se najít jedno správné nastavení? Na první část je odpověď ano, na druhou rozhodně ne. Článek jsme napsali s Evou Danielou Cvik z ČZU a vyšel v roce 2026 v časopise Data Science in Finance and Economics vydavatelství AIMS Press.

Co jsme testovali

BFSA jsme pustili na denní data (open, high, low, close, objem) 40 různých aktiv s historií přes deset let. Mezi nimi byly akciové indexy vyspělých i rozvíjejících se trhů, velké americké akcie, sektorová ETF, komodity i kryptoměny. Porovnávali jsme 28 modelů a výsledky ověřovali křížovou validací.

Tři zjištění, která mají smysl i pro tradera

1. Každý trh má zkreslení jinak silné. Optimální síla korekce zkreslení se mezi aktivy lišila v rozmezí zhruba 4 až 135. To je obrovský rozptyl. Akciový index s dlouhodobým růstovým driftem se chová úplně jinak než komodita nebo kryptoměna.

2. Automatické ladění není zázrak. Když jsme sílu korekce ladili automaticky přes křížovou validaci, výsledek se zlepšil zhruba u 48 % aktiv a u 52 % se mírně zhoršil. Celkový efekt na přesnost předpovědí byl prakticky nulový. Píšu to otevřeně, protože právě takové výsledky se v marketingu obchodních robotů nikdy neobjeví.

3. Univerzální nastavení neexistuje. Z prvních dvou bodů plyne to nejdůležitější: robot vyladěný na jeden trh nelze bez dalšího přenést na jiný. A kdo vám prodává jedno nastavení „na všechno“, prodává iluzi.

Pro praxi to znamená, že kontrola zkreslení musí probíhat pro každý trh zvlášť. A že i dobře navržená metoda je nástroj, ne svatý grál.

Jak si robota prověřit sami: sedm kroků

Směrové zkreslení odhalíte i bez znalosti strojového učení, stačí se dívat na správná čísla. Následující postup používám sám u každého systému, než ho pustím na skutečné peníze.

  1. Spočítejte podíl longů a shortů. V reportu z testeru MetaTrader 5 najdete řádky Long Trades a Short Trades. Pokud jeden směr výrazně převažuje, třeba 75 : 25, zbystřete a hledejte důvod.
  2. Rozdělte zisk podle směru. Vydělává robot na obou stranách, nebo jen na jedné? Systém, který na longech vydělává a na shortech prodělává, je často jen zamaskovaný buy-and-hold.
  3. Porovnejte výsledek s prostým držením pozice. Spočítejte, kolik by udělal ten, kdo by na začátku testu nakoupil a nic nedělal. Pokud robot tento benchmark nepřekoná výrazně a se srovnatelným rizikem, jeho výhoda je slabá.
  4. Testujte v různých režimech trhu. Rozdělte historii na období růstu, poklesu a pohybu do strany. Robot, který funguje jen v jednom z nich, vám na živém účtu přinese nepříjemné překvapení, až se režim změní.
  5. Použijte walk-forward místo jednoho velkého backtestu. Optimalizujte na jednom úseku dat a testujte na následujícím, který model ještě neviděl. Pak okno posuňte a opakujte. Jediný backtest optimalizovaný na celou historii skoro vždy přestřelí.
  6. Započtěte všechny náklady. Spread, komise, swapy a skluz. Zvlášť u robotů s velkým počtem obchodů dokážou náklady ze ziskové strategie udělat ztrátovou.
  7. Ověřte kvalitu dat v testeru. Režim „Every tick based on real ticks“ dává věrnější výsledky než testování jen na OHLC svíčkách. U strategií s těsným take-profitem a stop-lossem může hrubé rozlišení dat úplně změnit výsledek, protože tester neví, co se uvnitř svíčky stalo dřív.

Pro ty, kdo programují v Pythonu

Kroky 1 a 2 si můžete spočítat přímo z historie obchodů na vašem účtu přes oficiální knihovnu MetaTrader5. Krátký skript níže vypíše podíl longů a shortů a výsledek podle směru (přibližně, poplatky účtované při otevření pozice nezohledňuje).

import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime

mt5.initialize()
deals = mt5.history_deals_get(datetime(2026, 1, 1), datetime.now())
df = pd.DataFrame(list(deals), columns=deals[0]._asdict().keys())

# uzavírací obchody; uzavření longu je SELL, uzavření shortu je BUY
closed = df[df.entry == mt5.DEAL_ENTRY_OUT].copy()
closed["smer"] = closed["type"].map({mt5.DEAL_TYPE_SELL: "long",
                                      mt5.DEAL_TYPE_BUY: "short"})
closed["vysledek"] = closed.profit + closed.commission + closed.swap

print(closed.smer.value_counts(normalize=True))   # podíl longů a shortů
print(closed.groupby("smer").vysledek.sum())      # zisk podle směru
mt5.shutdown()

Co to znamená pro kopírování signálů

Kdo kopíruje cizí signál, kupuje si výsledky cizího robota nebo tradera, a směrové zkreslení se ho týká úplně stejně. Jen ho hůř vidí, protože nemá přístup ke kódu, jen ke statistikám na platformě.

Nejčastější chyba je vybírat signál podle toho, komu se v posledních týdnech nejvíc dařilo. Krátkodobě nejlepší výsledky mají obvykle ti, kdo nejvíc riskují, nebo ti, kdo se náhodou trefili do směru trhu. Typický příklad z ratingu jednoho brokera z října 2026: strategie obchodující výhradně zlato, s historií necelé dva měsíce, výnosem kolem 190 % a maximálním propadem přes 39 %. Kopírovalo ji už přes dva tisíce účtů. Na první pohled hvězda. Jenže necelé dva měsíce na jediném nástroji s propadem téměř 40 % o kvalitě strategie skoro nic neříkají.

Než začnete kopírovat, projděte si u signálu alespoň tohle:

  • Délku historie. Ideálně rok a víc, aby zahrnovala růst, pokles i pohyb do strany. Tři měsíce za rostoucího trhu neříkají skoro nic.
  • Poměr longů a shortů. Pokud signál obchoduje skoro jen jedním směrem, porovnejte jeho výsledek s tím, jak se za stejné období hýbal samotný trh.
  • Maximální drawdown a jeho průběh. Hluboký propad, ze kterého se signál rychle „vyhrabal“, často znamená martingale nebo průměrování ztrátových pozic.
  • Stabilitu výsledků. Raději pravidelné menší měsíční výsledky než jeden obrovský měsíc a pak dlouhé ticho.
  • Velikost pozic vůči účtu. Pokud se objemy po ztrátách zvětšují, jde o systém, který funguje do první větší série ztrát.

Stejně přísně posuzujte i můj signál. Právě proto o těchto věcech píšu: chci, aby se lidé rozhodovali podle dat, ne podle hezké křivky z posledního týdne.

Závěr

Krásná křivka z backtestu je teprve začátek otázky, ne odpověď. Pokud robot vydělává hlavně díky směru, kterým se trh v testovaném období hýbal, na živém účtu se to dřív nebo později ukáže.

Z mého výzkumu si odneste tři věci. Směrové zkreslení vzniká už při výběru vstupních proměnných a dá se tam i hlídat. Forex je předvídatelný jen krátkodobě. A univerzální nastavení pro všechny trhy neexistuje, každý trh je potřeba prověřit zvlášť.

Pokud si chcete svého robota nebo vybraný signál projít podle checklistu výše a nevíte si rady, napište mi. Rád se na to podívám.

Zdroje

  • Jukl, D., Lansky, J. (2026). Bias-Corrected Feature Selection for Short-Horizon FX Trading: Evidence from Liquid Currency Pairs. Metrics, 3(1), 6. doi.org/10.3390/metrics3010006
  • Jukl, D., Cvik, E. D. (2026). Bias-Corrected feature selection for financial time series forecasting: a large-scale evaluation across 40 global assets. Data Science in Finance and Economics, 6(3), 359–396. doi.org/10.3934/DSFE.2026013

Upozornění na rizika

Tento článek má vzdělávací charakter a není investičním doporučením ani doporučením konkrétního robota, signálu nebo brokera. Obchodování s forexem a CFD je spojeno s vysokým rizikem ztráty kapitálu, zejména kvůli použití páky. Minulé výsledky, ať z backtestu nebo ze živého účtu, nejsou zárukou budoucích výsledků. Obchodujte jen s penězi, jejichž ztrátu si můžete dovolit.

Nejnovější příspěvky

Co znamená akademický výzkum pro vývoj forex softwaru 14.6.2026

Akademické publikace nejsou jen položka do životopisu. Pro vývoj obchodního softwaru mají praktický význam: nutí testovat, měřit, ověřovat a nepodléhat jednoduchým slibům. V posledních měsících se mi podařilo publikovat a prezentovat několik odborných výstupů zaměřených na algoritmické obchodování, mean reversion, výběr vstupních proměnných a testování forex strategií. Proč je to... Čtěte dál »

Napsal jsem nový odborný článek v MDPI Metrics 12.3.2026

V časopise MDPI Metrics mi vyšel článek zaměřený na bias-corrected feature selection, short-horizon FX trading a realistické testování strategií na likvidních měnových párech. Vyšel můj nový odborný článek „Bias-Corrected Feature Selection for Short-Horizon FX Trading: Evidence from Liquid Currency Pairs“, připravený společně s Janem Lánským a publikovaný ve švýcarském renenzovaném... Čtěte dál »

Příspěvek ve sborníku 2026: mean reversion, volatilita a nastavení strategie 15.2.2026

Ve sborníku vědeckého semináře doktorandů FIS byl zveřejněn můj příspěvek o kalibraci mean-reversion strategií na kapitálových trzích. Ve sborníku vědeckého semináře doktorandů FIS 2026 byl zveřejněn můj příspěvek „Analysis and calibration of mean-reversal strategies on capital markets“. Téma příspěvku je velmi praktické: jak u mean-reversion strategie určit vhodnou délku klouzavého... Čtěte dál »