Backtesting / Testování a jak na něj (4/6)

Minule jsme se v seriálu o backtestování obchodních strategií zaměřili na ukládání dat, dnes bychom si měli něco říci o testovacích platformách. Tyto platformy (to je jen vznešený název pro počítačovou aplikaci, skupinu aplikací či framework) mají za cíl zjednodušit práci s testováním strategií a zároveň nějakým přehledným způsobem prezentovat hypotetické výsledky, jichž by při práci s platformou “naživo” mohlo být obsaženo.

Co to umí nebo má umět

Moudré hlavy samozřejmě dávno zjistily, že testování obchodních strategií se dá pohodlně automatizovat. Ručně by se postupovalo tak, že by se šlo úsek po úseku (tedy třeba den po dni, hodina po hodině a podobně) a testovaly by se podmínky pro vstup do strategie, případně výstup. A zapisovaly by se výsledky, kolik strategie vydělala (prodělala). Práce pro počítač jako stvořená.

Obchodní platformy tedy umí jednu nebo více z následujících věcí:

  • Stáhnout data pro testování (často automatizovaně)
  • Spouštět naprogramované testy (i opakovaně)
  • Započítávat do obchodů komise a skluzy za nákupy a prodeje
  • Modifikovat spuštěné testy (třeba změnou parametrů)
  • Přehledně zobrazit výsledky (hlavně ve formě grafů)
  • Obchodovat strategii “naživo” (to neumějí všechny platformy)

Úskalí platforem

Bohužel platformy neumějí nic jiného, že co byste udělali v ruce – pouze to umějí rychleji a bez chyb. Největším úskalím platforem tedy paradoxně je, že se do nich vkládá důvěra, které je poměrně neoprávněná. Není pravda, že byste nákupem dražší či luxusnější obchodní platformy získali konkurenční výhodu.

Jediná výhoda tak je mít nápad. S dobrou platformou ten nápad asi otestujete pohodlněji, rychleji a přesněji než “v ruce”, ale to je tak všechno. Znám obchodníky, kteří byli dostatečně houževnatí na to, aby nápad otestovali ručně na kusu papíru, a teprve pak si pořídili nějakou platformu – to není žádná chyba ani ostuda.

Známé platformy

V tomto bodě Vás poprosím o komentáře a zkušenosti pod článkem, který potom doplním. Není v mojí moci testovat všechny platformy, takže tento přehled berte s velikou rezervou. Můžeme ale říct, že platformy pro testování se dělí zhruba na čtyři skupiny:

Samodomo – co si neuděláš, nemáš

Protože je testovací platforma ve své podstatě jen smyčka s konečným počtem opakování, zkušenější programátor si může napsat celou testovací platformu sám. Není to taková chyba, jak se může zdát – při programování si člověk prohloubí znalost o trzích, poplatcích, exekucích obchodních příkazů a tak dále. A může to být hezké intelektuální cvičení.

Na druhou stranu málokdy se tím ušetří peníze. Protože vlastní vývoj bude drahý a půjde nejspíš o “vynalézání kola” v programátorském slova smyslu. Takže to neodsuzuji ani nepodporuji.

Do této katerogie patří i řešení založená na Matlabu či jeho klonech. Na portále máme o Matlabu článek staršího data.

Excel

Excel jako testovací platforma stojí někde na pomezí mezi vlastními platformami a profi nástroji. Pokud se podaří nějak do Excelu dostat data – a na to existují nástroje – může posloužit jako testovací platforma.

Využít lze přitom jak vlastních “grafických” možností Excelu (tedy práce s tabulkami, třídění, filtrování atd.), tak i makra v jazyce Visual Basic for Applications. Obrovská výhoda Excelu spočívá v tom, že makro lze “nahrát”, zaznamenat pomocí klávesnice a myši, Excel z toho udělá kód a ten se dá následně upravit.

Jinak hlavní nevýhodou Excelu je při větším objemu dat jeho pomalost. Vyvážená je snadnou tvorbou tabulek a grafů.

Profi nástroje – offline platformy

Existuje tuna platforem, které se stáhnout do počítače a fungují jako klasická aplikace s GUI rozhraním. Namátkou a bez nějakého smysluplného pořadí uvádím ty, které mě napadají:

  • Trade station – Broker, platforma pro provoz i pro testování. Nezkoušel jsem, ale spousta lidí to používá.
  • MultiCharts – totéž v bledě modrém, pouze od nezávislé firmy, lze použít jiné brokery a jiné poskytovatele dat, tudíž relativně nezávislé na konkrétní firmě
  • Ninja trader – platforma používá jako jazyk C#, takže kdo jej umí, může mít do začátku výhodu
  • RightEdge – moje osobní volba, C# nebo VB.NET, bohužel v poslední době dost málo vyvíjený
  • AmiBroker – důraz na visuální stránku a poměrně rychlé, používá vlastní jazyk AmiBroker Formula Language (AFL)
  • IQBroker – novinka na trhu, zatím pouze betaverze, je třeba vyzkoušet, netuším jaké má možnosti
  • Metatrader – v hlavě jej mám zafixován hlavně jako nástroj pro Forex, a ten neobchoduji. Možná někdo doplní

Profi nástroje – ON-LINE platformy

Taky už samozřejmě někoho napadlo, že by se práce s testováním delegovala na servery, zatímco jako klient by se používal obyčejný prohlížeč internetu. Tahle koncepce má jednu obrovskou výhodu (resp. dvě) a jednu obrovskou nevýhodu (resp. taky dvě).

Výhodami je, že platforma poskytuje data na testování, obvykle data vcelku spolehlivá. To u offline platforem k vidění nebývá. A za druhé, snadno lze spolupracovat s někým – i na dálku – při tvorbě kódu obchodního modelu. Stačí přitom prohlížeč.

Největší nevýhodou je potom ztráta soukromí, protože kód je prostě uložen někde na serveru. Pokud bych takovou platformu vlastnil, bylo by pro mě velice snadné kontrolovat, jaký kód generuje dobré výsledky a pak si takový kód “vypůjčit” od toho, kdo jej vymyslel. V úvahu přichází samozřejmě i útok hackera. A ta druhá nevýhoda je, že testy obvykle trvají o fous déle než při použití vlastního nadupaného počítače.

Dvěma nejznámějšími platformami jsou potom

Závěr

Článku chybí nějaký závěr, ale ať přemýšlím, jak přemýšlím, těžko doporučím nějakou platformu jako favorita. Pokud znáte některý z hlavních programovacích jazyků dneška (C# Java, Python a podobně), pravděpodobně sáhnete po něčem, co už znáte.

Jestliže jste ale v backtestování nováčky a tak jako tak se budete muset něco naučit, pak prostě sáhněte po tom, co Vás nejvíc zaujalo, nebo co je pro Vás cenově nejdostupnější. Znovu opakuji, že cílem testování je pouze prověřit strategii a to půjde tak či onak ve většině platforem.

Budu rád, když mě v komentářích doplníte a napíšete zkušenosti k platformám, které používáte nebo které jsem zapomněl zmínit.

Příspěvek byl publikován v rubrice Nezařazené. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

9 komentářů u Backtesting / Testování a jak na něj (4/6)

  1. LB napsal:

    jeste me napadlo

    cAlgo – C#, vlastni IDE a data
    backtrader – python
    jforex – java, od DukasCopy

    v pythonu na backtest je pomerne dost frameworku, quantconnect lze stahnout na lokal a spoustet AOS lokalne

  2. trion napsal:

    Tuhle jsem četl o Zorro (zorro-trader.com), nezkoušel jsem. Pro Windows, C-lite, vlastní IDE. Chlubí se rychlým backtestováním, umí live trading. Zdarma, po vydělání prvních $30k měsíční platby.

    • admin napsal:

      Zorro hodně používá tenhle maník: http://www.financial-hacker.com/ a vypadá to, že ví, o čem je řeč. Díky za doplnění.

    • peha napsal:

      Zkousel jsem a zkousim, uzivatelsky komfort nic extra, „IDE“ hodne spartansky pojate, bez moznosti ladeni apod. Silu tohoto nastroje vidim hlavne v aplikaci strojoveho uceni, kdy jsou k dispozici pripravene funkce a de facto hotove kusy kodu (s vyuzitim ucicich algoritmu v R). Dale rozrustajici se komunita, nicmene krivka uceni dost plocha (aspon u me;), ale urcite mam v planu postupne zahrnout do sady svych BT nastroju..

  3. peha napsal:

    Jeste bych doplnil VisualChart, spanelsky SW, ktery jsem zacal pouzivat jiz pred 10+ lety ve verzi 4. Aktualni v6 ma podporu C#, _veskera_ EOD data zdarma (vc. ID) s moznosti exportu, moznost tvorit vlastni strategie, indikatory, apod. Nevyhodou je prakticky neexistujici support a chaby marketing. V posledni verzi prisly s cloudovym resenim vc. moznosti nasazovat strategie „do luftu“ a nejaky marketplace strategii apod. (sam jsem nezkousel). Aktualne vyuzivam predevsim jako zobrazovatko grafu.

  4. Petr napsal:

    V kategorii samodomo si zaslouží být uvedený Matlab/Octave – pro testování nápadů jak stvořené

Napsat komentář

Vaše emailová adresa nebude zveřejněna.