Jump to content
Co nového? Mé kurzy
Články a tutoriály:
Hledat v
  • Více možností...
Najít obsah, který ...
Hledat výsledky v ...
Seriály Komoditní Manuál Psychologie obchodování
  • Na čem aktuálně pracuji (2): Počet kontraktů dle předvídané volatility

    Na letošní rok jsem si stanovil několik důležitých úkolů, skrze které chci výrazně posunout své automatické obchodování do další úrovně. Nedávno jsem představil trochu ze své práce v rámci komoditního portfolia, dnes ukážu trochu ze své práce na určování počtu kontraktů dle volatility.

    O co jde

    Téma určování počtu kontraktů skrze volatilitu není nic nového a poměrně hezky vysvětlil tento koncept Petr ve svém článku Síla normalizace risku v ID obchodování. Takže jenom pro zopakování, o co jde: V každé strategii pracujeme s nějakým jasně stanoveným riskem. Většinou si stanovíme risk v podobě stop-lossu. Řekněme, čistě pro demonstrační účely, že máme strategii, která pracuje se stop-lossem 1 000 USD. Nyní, je to stop-loss velký, nebo malý? No, to záleží na mnoha aspektech, přičemž jeden z nich, kriticky důležitý, je aktuální volatilita trhu. Ve velmi nízké volatilitě se to může zdát jako extrémně velký stop-loss, ve vysoké volatilitě zase jako malý stop-loss.

    Jedna z metod přístupu k velikosti stop-lossu tedy může být jeho řízení skrze volatilitu trhu. Většinou se jako indikátor volatility používá ATR (více o tomto a dalších indikátorech jsem vysvětloval ve webináři Indikátory v praxi) a stop-loss se určuje jako násobek ATR. Pokud je ATR nízké, máme nízký SL, pokud je ATR vysoké, máme vysoký SL. Teoreticky se tedy náš stop-loss mění dle toho, jaká je volatilita trhu. Tato technika však přináší i své nevýhody - především příliš širokou variaci risku. Každý trader potřebuje normalizovaný risk, tj. mít na každý obchod risk stejně veliký, aby bylo možné pracovat s pravidly money managementu. Pokud například riskujeme 2 % z účtu 30 000 USD na jeden obchod, musíme na každý obchod riskovat 600 USD, a ne jednou 200 USD a jindy 1 000 USD, jak by tomu bylo v případě stop-lossu počítaného jako násobek ATR.

    Proto se tedy používá normalizovaný risk a skrz ATR se následně vypočítá, kolik by se do takové stop-lossu vešlo kontraktů. Tímto způsobem se tedy řídí počet pozic, resp. počet kontraktů, se kterým vstoupíme do obchodu. Pokud například víme, že riskujeme 1 000 USD na jeden obchod, a zároveň na jeden kontrakt chceme riskovat 100násobek ATR, tak v případě ATR = 5 obchodujeme 2 kontrakty (1000 / 500 = 2), v případě ATR = 2.5 obchodujeme 4 kontrakty (1000 / 250 = 4) atd. Pracujeme tedy stále se stejným, normalizovaným riskem, pouze měníme počet pozic dle toho, jak se mění volatilita (nízká volatilita = více pozic, vysoká volatilita = méně pozic).

    Problém s ATR

    Po mnoha experimentech a testování jsem došel k závěru, že mám vnitřní problém s ATR, jakožto nástrojem k určování volatility za účelem určování počtu kontraktů do obchodu. Nejzásadnější důvod je jednak zpoždění indikátoru (lag), jednat totální zkreslení díky gapům. Koukněte se na následující obrázek:

    Celý den se nic nedělo, trh šel do strany s minimální volatilitou. Přesto se díky úvodnímu gapu drželo ATR poměrně vysoko a kleslo až ke konci dne, kdy ale naopak trh započal menší pohyb. Jinými slovy, první polovinu dne by nám použití ATR počítalo poměrně velký stop-loss do trhu, ve kterém se naprosto nic nedělo a který měl minimální volatilitu!

    Samozřejmě, částečně se tento problém dá obejít skrze takzvané gap-less ATR, ale stále zůstává problém se zpožděním. Řekněme, že během doby oběda v USA bude trh totálně mrtvý a na závěr dne přijde výrazný pohyb. Nicméně ATR bude díky zpoždění počítat volatilitu z doby, kdy se nic nedělo - a my tak v momentě, kdy i statisticky přicházejí větší pohyby, budeme vstupovat buďto s příliš malým stop-lossem (díky nízkému ATR, které nereaguje dostatečně rychle na změnu), nebo zbytečně nízkým počtem kontraktů.

    Zkrátka a dobře, ATR dle mého názoru není pro určování počtu kontraktů optimální indikátor. Dá se s ním sice pracovat, ale zpoždění a gapy zásadně zkreslují to, co se v trhu skutečně děje, a indikátor tak není dostatečně flexibilní.

    Moje řešení

    Nad problémem ATR jsem nesmírně dlouho přemýšlel a dělal obrovské množství různých experimentů a studií. Nakonec jsem po několika měsících studií a experimentování dostal nápad na zcela nový, originální indikátor, který jsem nazval TCV (Tom´s Cumulated Volatility). Pointa indikátoru spočívá ve speciálním algoritmu, který namísto výpočtu volatility z pouhých pár úseček nazpět (což je velmi zrádné a nepřesné) raději zanalyzuje volatilitu v různé časové intervaly z několik desítek až stovek dnů nazpět a následně na základě mnoha různých proměnných vytvoří predikci toho, jaký maximální protipohyb mohu očekávat od momentu, kdy vstoupím do trhu, až do konce dne (vysvětlím za chvilku). Indikátor bylo nesmírně náročné realizovat, neboť ani MultiCharts, ani TradeStation nenabízí nástroje, ve kterých by bylo možné potřebné náročné a komplexní výpočty realizovat. Naštěstí jsem práci svěřil svému kamarádovi, který je špičkový programátor se schopností řešit extrémně náročné problémy a ten vytvořil speciální DLL knihovnu, ve které výpočty probíhají a zpětně se posílají do MCH/TS. Výpočty byly z počátku časově natolik náročné, že se indikátor nedal používat - při vložení pár let historie do grafu se počítal indikátor i 5 minut - ale díky programátorským schopnostem mého kamaráda se podařilo postupně zkrátit čas na uspokojivé cca 2-3 vteřiny.

    Takže, jak TCV vypadá.

    Je to jednoduše indikátor, který vám na každé úsečce dopředu řekne, jaká je dle řady statistických pravděpodobností předpokládaná velikost pohybu, který nastane proti nám v momentě, kdy systém vstoupí do trhu.

    Konkrétní ukázka:

    Na tomto příkladu systém dostal v 11:30 signál do vstupu long. Než však došlo k exekuci, indikátor TCV ukázal, že pokud bych v tento moment vstoupil, pak předpokládaný protipohyb (MAE) do konce dne je 115 USD. Indikátor k tomuto číslu došel na základě mnoha údajů (v potaz bere i to, zda je pozice long, nebo short, ale také obrovské množství dalších proměnných), které zpracoval právě speciální algoritmus. Jelikož systém pracuje s normalizovaným riskem 1 000 USD, kód systému se jako další podívá, kolik tedy může nasadit do daného obchodu kontraktů. Výpočet je jednoduchý - Normalizovaný Risk / Předpovězené MAE, tj. 1 000 / 115 = 8,7 neboli 8 kontraktů (nikdy nezaokrouhluji nahoru). Systém tedy vstoupil s 8 kontrakty a stop-lossem aplikovaným na všechny kontrakty současně o velikosti 1 000 USD (tj. souhrnný stop-loss pro všechny kontrakty). To tedy také bylo maximum, které systém mohl v daném obchodě ztratit - 1 000 USD dohromady na všechny kontrakty.

    Jedná se tedy o efektivnější řešení oproti ATR v tom ohledu, že indikátor TCV modeluje předpokládané budoucí MAE, a to až do konce obchodní seance, namísto počítání volatility dle toho, co se dělo před pár úsečkami.

    A jaké výsledky indikátor TCV přináší? Určitě se jedná o zlepšení v mnoha ohledech.

    Pokusím se ukázku demonstrovat na jedné ze starších verzí mého systému BOSS (dnes už obchoduji vylepšenou verzi). Koukněme se na to, jak si vedla původní verze s riskem 1 000 USD a jedním kontraktem pro každý obchod:

    Zisk 62 080 USD při maximálním drawdownu (close to close) na úrovni 4 230 USD přináší poměr MaxProfit/DD o velikosti 1:14.7. Systém vykazuje v této podobě slušný Profit Factor na úrovni 2.56.

    Koukněme se ještě na distribuci profitů dle jednotlivých let až do konce roku 2012:

    Všimněte si, že například v roce 2005, kdy byla nízká volatilita, systém vykázal profit pouze 620 USD!

    Nyní se podívejme, jaké zlepšení nastane, pokud nasadíme naprosto stejný systém, se stejným riskem 1 000 USD na obchod, akorát budeme pro tento risk počítat skrze indikátor TCV vhodný počet kontraktů:

    Profit povyskočil o 16 980 USD, tj. o +27 %, zatímco drawdown lehce klesl ze 4 230 USD na 3 990 USD. Poměr mezi konečným ziskem a maximálním drawdownem se zlepšil z 1:14.7 na 1:19.8 - to je další výrazné zlepšení. Takže mnohem více peněz s nepatrně menším drawdownem - a to aniž bychom udělali jediný zásah do systému! Systém je stále stejný, stop-loss je stále stejný, pouze nyní skrze volatilitu inteligentně počítáme počet kontraktů do pozice!

    A jak si takový systém vedl na roční bázi?

    Koukněte se na rok 2005. Jelikož trh vykazoval malou volatilitu, nebylo s jedním kontraktem možné příliš vydělat. Nyní však díky nízké volatilitě systém nasazuje mnohem větší množství kontraktů, takže namísto 620 USD rázem systém vykazuje 6 020 USD - opět bez jediného zásahu do systému, pouze jsme vylepšili metodu řízení počtu kontraktů!

    Lehkou nevýhodou je, že nám celkově lehce klesnul Profit Factor a lehounce ziskovost některých let (i když ziskovost dalších se zase naopak razantně zvýšila). Ale tak to v tradingu chodí - každé pro má svoje proti, nic není černobílé.

    Závěr

    Indikátor TCV jsem zatím ještě nenasadil do live, protože pokračuji v dalších testech, jak tento indikátor nejlépe využít (například i jako možnost pro určení profit targetu atd.). Zrovna tak zde bohužel neprozradím o indikátoru více, neboť to považuji za určitou svou drobnou konkurenční výhodu. Nicméně, chtěl jsem zde mimo jiné ukázat, že se vyplatí přemýšlet nad tím, jak co nejlépe podchytit volatilitu - a hlavně jakým způsobem - k tomu, abychom lépe řídili počet pozic v různých volatilitách trhu. Dále jsem zde chtěl, jak už napovídá název článku, ukázat, na čem nyní pracuji. Lepší zvládnutí volatility byl tedy jedním z mých cílů pro letošní rok a zatím mohu říci, že po nekonečné práci se vše odvíjí správným směrem. Krom toho zároveň pracuji ještě na další důležité věci, kterou bych rád letos dokončil - speciálním algoritmu k rozpoznání toho, že se systému právě příliš nedaří a měl by být tedy na nějakou dobu stopnutý (a samozřejmě později na základě stejného algoritmu říci, kdy už je systém zase ve svých běžných mezích a měl by být opět nasazený). Ale k tomu zase až někdy příště.

    12.5.2013

    Tomáš Nesnídal


×
×
  • Vytvořit...

Důležitá informace

Na tomto webu zpracováváme cookies potřebné pro jeho fungování a analytiku, v případě udělení souhlasu také cookies pro účely cílení reklamy.