Prohledat Finančník.cz
Zobrazeny výsledky pro štítek 'monte carlo'.
Nalezeno výsledků: 4
-
Jeden z principů, který připomínám začínajícím traderům stále dokola je, že na jednotlivých obchodech příliš nezáleží. A jednotlivé obchody nelze "pilovat" k dokonalosti. Vím, že mnoho začínajících obchodníků má pocit, že vztah mezi pravděpodobností a riskem mohou ovlivňovat svými schopnostmi. Tedy například, že se naučí vyhledávat jednoduché cenové patterny s vysokou úspěšností a vysokým poměrem průměrného zisku na občasné ztráty. To je ale typický příklad kognitivního zkreslení, kterým se všichni více či méně necháváme ovlivňovat. Jedním z nejznámějších kognitivních zkreslení spojených s přílišnou sebedůvěrou je "overconfidence bias" (zkreslení přehnané sebedůvěry). To vede zejména začínající obchodníky k přecenění vlastních schopností, dovedností nebo informací. V kontextu tradingu může tento jev vést k rozhodování na základě nedostatečných nebo nesprávných informací, protože obchodník si myslí, že ví víc, než ve skutečnosti ví. Například trader může přecenit svou schopnost předpovědět pohyb trhu, a může tak podstupovat zbytečná rizika. Třeba proto, že z příspěvků na sociálních sítí má pocit, že to „musí jít“. Jednoduše řečeno – některé věci v tradingu kontrolovat můžeme, jiné nikoliv. Jednou z oblastí, kterou v tradingu kontrolovat nemůžeme, je výrazné zvyšování výkonnosti běžných obchodních přístupů, aniž bychom nezvyšovali risk. Sám obchoduji mnoho strategií. Mám rád například swingové mean reversion akciové strategie. Obchoduji je ale prakticky v té nejjednodušší možné podobě. Protože vím, že v reálném světě není cesta, jak zvýšit jejich výkonnost například 5x, aniž bych podstatným způsobem nezvyšoval risk (a to třeba skrytou cestou, kterou neuvidím v backtestu, protože testy vedoucí k podobné výkonnosti budou jednodušše přeoptimalizované). Výkonnost proto vždy posuzuji ve vztahu k risku. Metrik, jak to dělat, je celá řada. Osobně používám sharpe ratio. To velmi stručně řečeno udává poměr průměrné výkonnosti k průměrnému risku a opravdu hodně volně bychom mohli říct, že strategie se sharpe ratio 1 může mít průměrnou výkonnost například 20 % při max. drawdownu také cca 20 %, nebo 10 % při max. drawdownu také 10 % (sharpe ratio v praxi nepracuje s drawdownem, ale volatilitou výnosů). Strategie, které živě obchoduji, mají sharpe ratio někde mezi 0,5-1,5. Začínající obchodníci často hledají strategie, které budou mít sharpe ratio „v nebesích“ – například doufají v průměrné zhodnocení 100 % při maximálním drawdownu 5 %. To je upřímně s běžně dostupnými strategiemi naprosto nereálné. A čas v trzích vás naučí, že ani nemá smysl se pokoušet podobným směrem strategie posouvat. Cesta, jak výkonnost zvyšovat, je diverzifikace v rámci portfolií. Tím, že budete postupně obchodovat více nekorelujících strategií, zachováte jejich výkonnost, ale celkový risk bude klesat. Sharpe ratio se bude zvyšovat. Velmi dobře to v krátkém videu vysvětluje Ray Dalio (americký miliardář a významný hedge fund manager): https://www.youtube.com/watch?v=Nu4lHaSh7D4 Ray ukazuje, že to, co ovlivňuje celkový risk našeho obchodování, je počet systémů (nebo zdrojů příjmů) a jejich korelace. To je mentální posun, který je potřeba si v tradingu osvojit. Je potřeba odpoutat pozornost od jednotlivých obchodů a začít přemýšlet o systémech pracujících v celku. Na první pohled to nemusí vypadat složitě. Ale úplně snadné to není. Je potřeba vytvořit workflow, které zajistí, že jednotlivé systémy spolu dobře fungují, že se příkazy zadávají bez chyb, že dokážeme vše spolehlivě vyhodnocovat a podobně. Rozhodně to ale není nepřekonatelné. Podstatné je, do jaké oblasti trader zaměřuje svoji pozornost. V pochopení důležitých a méně důležitých věcí v tradingu mohou pomoct také simulace. Na Google Colabu s vámi sdílím svůj python simulátor náhodného obchodování. Naleznete jej na této adrese: https://colab.research.google.com/drive/1eLZr0-UuCx6srHLkF4QM0L_1LB5XvnzT?usp=sharing Skript si uložte na svůj Google Drive a můžete jej spustit černou šipkou v záhlaví. Pak stačí vyplnit příslušná políčka a kliknout na „Spočítej“: Prostředí je jednoduché. Skript generuje hypotetické systémy podle zadaných parametrů. Průměrný roční výnos 0,2 říká, že generujeme systém průměrně generující 20 % p.a. Pak je důležitá roční volatilita. Hodnota 0,2 stručně řečeno znamená, že můžeme očekávat drawdown cca 20-30 %. Dále zadáme počet let v simulaci a počet generovaných strategií. Klikneme na Spočítej a dostaneme například podobný graf: Je zde daný počet equity křivek, které jsou vygenerované náhodně, ale s výchozími parametry výnosnosti a risku. Některé systémy z principu vydělávají více, jiné méně. Pod tabulkou naleznete základní pohled na výnos a risk: CAGR mean: 21,13 % CAGR max: 30,97 % CAGR min: -0,69 % Drawdown max: 40,15 % Drawdown min: 21,95 % Drawdown mean: 30,31 % Hodnoty se pochopitelně liší s každým během skriptu (křivky jsou generovány náhodně), ale rámcově budou při stejných parametrech vypadat podobně. Zde vidíme, že drawdown systémů se pohyboval v rozmezí 21,95 – 40,15 %. Výnosnost od -0,69 % do 21,13 % (ano, jedna strategie ztrácela podobně, jako se nám to bude dít na živých účtech). Všech deset systémů má průměrné zhodnocneí 21,13 % při průměrném drawdownu 30,31 %. To je relativně realistický poměr. Pokud ale v živém obchodování budete obchodovat se systémem, který má průměrné zhodnocení 21,13 % při drawdownu 30,31 %, není skutečně způsob, jak snížit drawdown nějakými "pokročilými taktikami" třeba na polovinu. Až na jedinou taktiku. Doslova hlavní „svatý grál“ tradingu, který se odehrává na úrovni portfolia. Řekněme, že bychom každé strategii přiřadili 1/10 kapitálu (na ukázce pracujeme s 10 strategiemi) a obchodovali je všechny najednou. Výkonnost portfolia by pak vypadala následovně: Max Drawdown: -4.90 % CAGR: 23.05 % Annual Volatility: 5.23 % Celkové portfolio má najednou průměrné roční zhodnocení 23,05 % při maximálním drawdownu -4,90 %. Věřím, že tento příklad hovoří za vše a maximálně doporučuji, abyste si s testerem hráli chvíli sami. Jsem přesvědčen, že po čase každému obchodníkovi začne docházet, jak hodně záleží na kombinaci strategií do celku (portfolia) a jak minimálně jsou podstatné jednotlivé obchody. Samozřejmě, že praktická implementace portfolií systémů má mnoho aspektů, které musíme řešit a sdílený python skript problematiku přibližuje jen ve zjednodušené a teoretické rovině. V praxi musíme systémy vytvářet, řešit rozdělování kapitálu mezi strategie, zajišťovat nízkou korelaci, systematicky obchodovat mnoho signálů atd. Podstatné ale je, kam ve svém tradingu zaměřujete pozornost – na precizování např. vstupních situací nebo na pilování portfolia jako celku...
-
- 8
-
- portfolio
- diverzifikace
-
a 2 další
Označen s:
-
Monte Carlo simulace je matematický postup, který umožňuje porozumění nejistotě a variabilitě v modelu tím, že model je "spuštěn" tisíce či dokonce miliony krát s různými vstupními parametry. V tradingu se často používá k analýze rizika a odhadu budoucích výkonnostních metrik obchodní strategie. Při simulaci Monte Carlo se historické obchodní data nebo fiktivní data opakovaně náhodně vzorkují, aby se vytvořilo mnoho možných budoucích scénářů. Tím se umožní traderům testovat, jak by jejich strategie fungovala v různých tržních podmínkách. Monte Carlo simulace poskytuje obchodníkům hlubší porozumění potenciálnímu riziku a odměně spojené s jejich strategiemi. Pomáhá odhalit skrytá rizika, která by nemohla být patrná při jednoduchém zpětném testování. Pomocí Monte Carlo simulace může trader provádět stresové testy své strategie v extrémních tržních podmínkách, např. výrazných poklesech trhu nebo dlouhých obdobích stagnace, a určit tak míru odolnosti své strategie vůči různým tržním šokům.
-
Jedna z velkých psychologických výzev obchodování vychází ze skutečnosti, že riskujeme nemalé peníze a přitom neustále čelíme velké míře nejistoty. S jistotou nevíme nic – jestli náš systém ještě funguje, jestli se něco technicky nepokazí, jestli nemáme chybu ve vstupních datech atd. Jak se na toto připravit a nejistotu zvládnout? Většina nových obchodníků přichází k tradingu ze světa plného jistot. Pokud se člověk nesnaží příliš vybočit, tak do určité míry bude celý jeho běžný život naplánovaný a nalinkovaný. Lidé mají práci, do které musí chodit na určitou hodinu. Mají zde jasně nastavené postupy, které následují. V určitou hodinu padla a za odvedenou práci dostanou začátkem každého měsíce jasně danou mzdu. Samozřejmě, že občas nastane pro někoho nepříjemná a nenadálá událost, která mu životem zalomcuje. Ale vesměs je běžný chod života do velké míry zajetý v jasných kolejích, kde většinu událostí lze předvídat a ovlivňovat. Trading takový není. Jistoty zde budete hledat jen velmi těžce. Spíš bych se nebál trading dnes označit jako trvalou systematickou nejistotu. Věci fungují, ale jen s určitou pravděpodobností. A bohužel to neplatí jen o obchodních systémech. Ale prakticky o všem, s čím v tradingu pracujeme. Například technika, data, software, brokeři. Většina retailových traderů pracuje s omezenými rozpočty a používá low-endové nástroje – byť to neznamená, že by to byla k jejich finančním možnostem vždy levná řešení. A low-endové nástroje mívají své mouchy. Data občas nemusí být přesná a budou se občas rozcházet s drahými zdroji. Software čas od času neprovede příkaz, jak by měl. Nebo prostě sami způsobíme v tradingu chybu, která jde mimo plán a stojí nás peníze. Pokud se budete v obchodování snažit soustředit na odchytání všech nejistot, nemáte reálně šanci vydělávat peníze. Nejistoty je potřeba přijmout a pracovat s nimi. Obchodování nikdy nebude proces, ve kterém budete mít vše plně pod kontrolou. Jak na to? Asi nejlepší cesta k „překonání nejistot“, kterou jsem se v trzích naučil, je zapracovat nejistoty rovnou do obchodních plánů. Například backtesty nevyhodnocuji z pohledu jedné dosažené equity křivky, ale z pohledu různých možných scénářů. Používám pro to monte carlo analýzu, resp. tzv. bootstrapping. Dělám-li pro sebe v tradingu jakékoliv predikce – například možné výkonnosti a rizikovost portfolia nebo obchodního systému na základě historického backtestu nebo nedávné výkonnosti – nepoužívám jednu historickou sadu výsledků. Historické výsledky nejprve nechávám pečlivě promíchat (nejčastěji 1 000x) a současně používám nástroje, které do výsledků zamíchají nahodile nepřesnosti. Například tak, že zcela náhodně některé výsledky historických obchodů vyhodí a jiné duplikují. Výsledkem takového procesu je mnoho (např. 1 000) equity křivek, které de facto reprezentují možné budoucí vývoje strategie při zapracování náhody. Zní vám to zvláštně? Pak první, co musíte v tradingu skutečně přijmout je fakt, že historie se nikdy nebude opakovat. Co se může opakovat, je určitá míra pravděpodobnosti inkasování určitého zisku nebo ztráty. Zkuste si například zaznamenávat různé průběhy 100 hodů kostkou. Pravděpodobnosti zobrazení určitého čísla jsou jasně dané, přesto budete často dostávat různě dlouhé, často až bizarní série, kdy se jedno číslo objevuje stále dokola a jindy se neobjeví vůbec. Budoucí výsledky vycházející z historických pravděpodobností mohou mít výrazně odlišné podoby. Zejména, pokud do nich zapracujeme ještě prvek náhody, která náš trading ovlivňuje každý den. Takto například může vypadat dvouletá „predikce“ výkonnosti jednoho z mých systémů: Graf vypadá dost nepřehledně, a to je v něm pro ilustraci zobrazeno jen 50 možných equity křivek. Křivek vycházejících z historické výkonnosti systému, do které ale počítač zanesl i určitou míru náhody – některé obchody vypustil, jiné zdvojil. S určitou mírou pravděpodobnosti mě v budoucnu u systému může potkat libovolný z uvedených scénářů. Pokud v budoucnu očekáváte přesnou kopii historické výkonnosti svého systému, pak vás realita s naprostou jistotou vyvede z omylu. Výše uvedený graf poměrně dobře vypovídá o nejistotě, které coby obchodníci čelíme. A paradoxně nám z ní může dobře pomoci ven. Velké množství různých variant budoucího vývoje lze vyhodnocovat. Mohli bychom se například podívat, jaký nehorší výsledek simulace přinesla. Nebo se spíše dívat na realističtější kumulovanou pravděpodobnost – u risku mě například zajímá nehorší výsledek, který byl dosažen u 95 % simulovaných průběhů. Podobně to dělám i na straně zisků v případě očekávaných výsledků. Při následném obchodování systému pak očekávám určitou míru zhodnocení při podstoupení určitého risku. Výsledkem celého procesu je tak například očekávání až 30% zhodnocení při 5% pravděpodobnosti až 25% drawdownu. A podobný pohled je z pohledu přístupu k nejistotě velmi osvobozující: Především vím, že jsem výsledky získal při zohlednění náhody. Pokud se v živém obchodování vyskytne nějaký problém (například mi neproběhne exekuce obchodu, vypadnou data atd.) vím, že se nic neděje. Do určité míry s danou skutečností již v systému počítám. Nefixuji se na přesná čísla historické výkonnosti, která se jen málokdy budou opakovat v budoucnosti. V očekávání již pracuji s nejistotou – vím, že výsledky budou s určitou pravděpodobností v určitém rozsahu. A samozřejmě podobný proces velmi pomáhá v testování robustnosti přístupů. Pokud přidaná „náhoda“ výsledky rozbije pod přípustnou mez, tak vím, že v daném přístupu vůbec nebudu chtít riskovat reálné peníze. Podobné analýzy lze dělat v momentě, kdy máme k dispozici dostatečnou historii obchodů. Tu můžeme získat backtesty, nebo lépe živým obchodováním. Lze je tak používat jak v systematickém, tak diskréčním obchodování. Pokud vás občas trápí, že nemáte v tradingu věci pod kontrolou, zkuste použít výše uvedené techniky. Ty by vás měly přesvědčit již při testování systémů o tom, že kvalitní systém s dobrým risk managementem dokáže vstřebat poměrně solidní dávku nepřeveditelné náhody a jediné, co je potřeba pro vydělávání peněz dělat, je skutečně systematicky dlouhodobě systém následovat. To je způsob, jak se v trzích vydělávají peníze. Byť vám to nemusí být z počátku příjemné, tak v reálném tradingu nikdy nebudete mít vše pod kontrolou a nikdy nepůjde vše podle předem připravených plánů a testů.
-
- 1
-
- monte carlo
- bootstrapping
-
a 1 další
Označen s:
-
Equity křivka našeho konkrétního obchodního systému vyjadřující historické výsledky má nespornou vypovídající schopnost, ale současně i své limity. Především reflektuje jednu jedinou konkrétní historickou posloupnost obchodů. Je zřejmé, že určité parametry našeho obchodního systému mohou být v delším časovém horizontu relativně konstantní (např. pravděpodobnost ziskového obchodu, průměrná ztráta, průměrný zisk atd.). Co se však jednoznačně v budoucnu při dalším obchodování systému změní, je posloupnost, s jakou budou jednotlivé zisky a ztráty přicházet. Je víceméně jisté, že tato posloupnost bude v budoucnu odlišná od té, kterou náš systém realizoval v minulosti a přitom posloupnost realizovaných zisků a ztrát může mít ohromný vliv na průběh equity křivky - zejména pokud na ni aplikujeme position sizing (obchodování s více kontrakty). Robustní systém pak musí být obchodovatelný při libovolné změně pořadí inkasovaných zisků a ztrát. K analýze takové robustnosti můžeme opět použít postupně recenzovaný program Market System Analyzer. Základní představu o problematice si můžete udělat z následujících screenshotů. Jde o výsledky stále stejné obchodní strategie (popisované v minulém díle seriálu), avšak zobrazené v různé posloupnosti (v programu MSA stačí kliknout na tlačítko Randomize, které způsobí "zamíchání" výsledků obchodů; chcete-li dostat původní sekvenci obchodů, stiskněte tlačítko Restore). Na screenshotech jsou zobrazeny výsledky systému při obchodování jednoho kontraktu - proto je výsledný zisk stále stejný, avšak změna pořadí inkasovaných ztrát a zisků může výrazně ovlivnit celkovou charakteristiku systému: Původní výsledky tak, jak byly vygenerovány v trhu. První simulace náhodného zpřeházení výsledků systému. Druhá simulace náhodného zpřeházení výsledků systému. Na pravé liště jednotlivých screenshotů si můžete všimnout, že pouhé zpřeházení výsledků obchodního systému výrazně ovlivňuje důležité parametry systému jako je drawdown či délka série ztrátových obchodů. A to stále obchodujeme pouze s jedním kontraktem. Naštěstí existuje způsob, jak s určitou pravděpodobností analyzovat, jakých nejhorších výsledků systém dosahuje i v případě, že naprosto zpřeházíme posloupnost obchodů. Metoda se jmenuje Monte Carlo simulace a její princip je velmi jednoduchý - počítač v rámci Monte Carlo simulace propočte obrovské množství kombinací různých posloupností daného obchodního systému a zobrazí nám úroveň spolehlivosti dané strategie při jednotlivých zobrazených parametrech. V tuto chvíli je patrně potřeba zdůraznit, že Monte Carlo simulace není vynález programu MSA ani obchodníků s komoditami. Jde o standardní statistický algoritmus pro simulaci nejrůznějších fyzikálních a matematických systémů a jako takový má samozřejmě své podrobné matematicko-statistické principy a zákonitosti. Těm se však na Finančníkovi věnovat nebudeme, jelikož pro trading je podstatná především aplikace samotného systému. Pokud vás podrobnosti o Monte Carlo simulaci zajímají, pak mohu doporučit jako startovní bod studia např. wikipedii: http://en.wikipedia.org/wiki/Monte_Carlo_Simulation Parametry Monte Carlo simulace se nastavují v programu MSA pomocí menu Analysis > Setup> záložka Options. Políčko Analysis samples určuje počet kombinací, které program simuluje (čím vyšší číslo tím je výsledek přesnější, ale o to déle výpočet trvá), confidence level for reporting specifikuje úroveň spolehlivosti, pro kterou se zobrazí podrobné výsledky. Screenshot zobrazuje výsledek Monte Carlo analýzy našeho obchodního systému. V horní části screenshotu jsou rekapitulovány parametry nastavení systému a Monte Carlo analýzy, zásadní informace jsou zobrazeny v prostřední části. Zde vidíme nejhorší výsledky systému pro konkrétní úrovně spolehlivosti. Zobrazená tabulka nám např. říká, že v 50 % testů byl nejhorší drawdown 13,57 % hodnoty účtu, v 90 % testů byl nejhorší drawdown 20,44 % hodnoty účtu, v 99 % testů byl nejhorší drawdown 28,82% atd. Výsledky zobrazené na screenshotu mají konstantní parametr rate of return (míra výnosnosti), protože v tuto chvíli analyzujeme systém pracující pouze s jedním kontraktem a tak výsledný zisk systému není ovlivněn změnou pořadí jednotlivých obchodů. Většina obchodníků posuzuje výsledky Monte Carlo analýzy s ohledem na 95% úroveň spolehlivosti. Z tohoto pohledu bychom mohli říci, že přestože náš původní systém dosáhl drawdown 11,75% kapitálu, s 95% pravděpodobností tento drawdown při pokračující charakteristice systému nebude horší než 21,76%, což je stále velmi slušné. Významnost testů typu Monte Carlo se projeví zejména při analýze systémů s position sizingem. Jak již na Finančníkovi mnohokrát zaznělo, představuje tento matematický model, určující pravidla podle kterých přidávat jednotlivé kontrakty, alfu-omegu úspěšného tradingu. Bez position-sizingu se v tradingu nevydělávají skoro žádné peníze, příliš agresivní formule pro přidávání kontraktů může být pro obchodní účet velmi nebezpečná. Proto nás v případě testování systémů s aplikovaným position sizigem zajímají nejen aktuální výsledky jednoho nastavení, ale také výsledky Monte Carlo analýzy - neboli, jaké nejhorší výsledky můžeme očekávat, pokud v systému zpřeházíme posloupnost jednotlivých obchodů. Pomocí programů typu MSA můžeme simulovat nejrůznější aplikace money-management vzorců. Řada velmi agresivních přístupů (na screenshotu výsledky vzorce "Kelly Formula") může dosahovat sice hvězdných výsledků, ale jak je vidět na výsledcích Monte Carlo analýzy - s 95% pravděpodobností můžeme očekávat např. drawdown až 82% kapitálu, což je charakteristika, kterou lze jen těžko v trzích obchodovat. Mimochodem - jednotlivým formulím MM se budeme věnovat v dalším díle seriálu, pokud s nimi budete experimentovat již nyní, nezapomeňte si v programu nastavit slippage a komisi, které jsou v případě money-managementu aplikovány na každý otevřený kontrakt a mohou dělat ohromný rozdíl ve výsledcích (nastavení viz minulý díl seriálu). Samozřejmě, že konzervativnější metody position sizingu, které se běžně obchodují, jsou "někde uprostřed" - nedosahují tak hvězdných úspěchů, ale zase mají přiměřený a obchodovatelný drawdown. Závěr Monte Carlo analýza má řadu podob a využití. V tomto článku jsme si ukázali princip, který je možné dále rozvíjet. Programy typu MSA umí výsledky obchodních systémů např. nejen analyzovat, ale i vyhledávat optimální parametry zaručující ještě dostatečnou stabilitu systému právě např. s použitím Monte Carlo analýzy. Ale jako všechny přístupy, také Monte Carlo analýza není nějakým jednoznačným všelékem - je třeba ji brát pouze jako určitý statistický nástroj, aplikovat ji především na relevantní vzorek dat a výsledky zkoumat v celkovém kontextu. Někde jsem četl, že money-management je ten nejkvalitnější obchodní systém, který je na světě k dispozici, a jednoznačně se pod toto mohu podepsat. Je zřejmé, že mnoho nováčků má ještě hodně daleko k tomu, aby svůj systém obchodovali s použitím position sizingu, ale rád bych zde ještě jednou zdůraznil, že by to nikomu nemělo bránit money-management studovat a zkoušet jej aplikovat na své dosavadní výsledky. Tento přístup může pomoci překonat klasické a pro mnoho obchodníků velmi zrádné období hledání "svátého grálu", kdy má každý tendenci hledat co nejzaručenější systém, který vydělává s jedním kontraktem miliony dolarů. Monte Carlo analýza pak může být jednoduchou pomůckou pro základní analýzu získaných výsledků.