Dostal jsem několik dotazů, jakým způsobem by bylo možné otestovat na historických datech smysluplnost nějaké opční strategie. Podstatou těchto dotazů je existence základního problému, kterým je dostupnost historických opčních dat pro nejběžnější obchodované tituly. Ve chvíli, kdy píšu tento článek, tak mohu téměř s jistotou tvrdit, že kromě jediného zdroje, nejsou historická opční data zdarma k dispozici. Tímto jediným zdrojem jsou generované opční řetězce platformy thinkorswim, kterou pro papertrading můžete pořídit zdarma a zkoušet zde životaschopnost různých opčních strategií tak, jak by se pravděpodobně chovaly v čase. Záložka „Analyze/thinkBack“, kde taková data najdete, je pro opčního tradera téměř nezbytná, protože pomůže alespoň v základní orientaci možných backtestů, jak vyplyne z textu dále. Základním problémem pořízení platformy je její nedostupnost pro české občany. Nechtěl bych někomu zbytečně radit, ale být alespoň malou chvíli Agent bez minulosti – Jason Bourne, by mohlo při návštěvě  stránky paperMoney  přijít celkem vhod.

   K otestování samotné podstaty opčního obchodu ale pro začátek zcela postačí aplikace Excel připojená na datový zdroj, poskytující zdarma alespoň denní údaje o jednotlivých obchodovaných titulech. Předpokládám, že o nezbytnosti alespoň základní znalosti Excelu nemá cenu v souvislosti s tradingem vůbec hovořit, protože je pro obchodování téměř nezbytná. Různé pokusy, simulace, pomocné výpočty, analýzy, vedení jednoduchého obchodního deníku a jeho vyhodnocování by mělo být pro tradera samozřejmostí.

  Jak tedy otestovat jednoduchou strategii bez použití historických opčních dat pouze pomocí jednoduchého testovacího Excelu připojeného k volně přístupnému datovému zdroji bude tento článek.


Quandl.com

   Pominu-li datové zdroje, kde můžete jednorázově stahovat historická data jednotlivých akciích a tyto pak zakomponovat do svého Excelu (Yahoo Finance…), tak elegantním řešením pro získávání denních dat je datový zdroj nacházející se na Quandl.com. Aby bylo možné s daty v Excelu pracovat, musíte si nejdříve vytvořit zdarma registraci. Není to nic světoborného, je to jednoduché pořízení uživatelského účtu, například jako v běžném e-shopu. Po vyplnění základních údajů je odeslán na zvolenou e-mailovou adresu odkaz, kterým otevření takového účtu stvrdíte, poté již bude účet fungovat. Tato registrace (vytvoření uživatelského účtu) je nezbytná, protože její součástí je vygenerovaný API Key, tedy klíč, který budete nadále využívat při načítání dat do svého Excelu. Na níže uvedeném obrázku je vidět klíč ve vytvořeném účtu na Quandl.com.

  Pokud máte vytvořenou takovou jednoduchou registraci, je zapotřebí do svého Excelu stáhnout doplněk, který bude komunikovat mezi databázemi na Quandl.com a vaší excelovskou tabulkou. Takový doplněk ke stažení naleznete zde

  Po provedené instalaci, kde doporučuji ponechat umístění doplňku na instrukcích instalátoru, uvidíte ve svém Excelu v pásu karet novou záložku Quandl

  Pokud vidíte takovou záložku ve svém Excelu, máte vyhráno s úspěšnou instalací. Pro správnou komunikaci musíte v záložce „Settings“ přidat svůj vlastní API Key (tuto zkopírujete ze svého účtu na webu Quandl.com), aby byla možná komunikace s databázemi na Quandl.com.

   Vložení API Key potvrdíte kliknutím na tlačítko „Save“. Tímto úkonem je vytvořen základní předpoklad k získávání dat z databází na Quandl.com.

  Takto připraven mohu začít s vlastní prací na libovolném „hrubém“ backtestu libovolné opční strategie pomocí Excelu. Abych zbytečně neteoretizoval, tak ukážu konkrétní konstrukci jednoduchého backtestu s akciemi AAPL. Takto níže bych pak mohl formulovat zadání testu:

    1/ Chci mechanicky pořizovat Call Bull Spread na weekly opcích na akcii AAPL, vstup do pozice v pondělí na Open a uzavření obchodu na pátečním Close. Vstupuji do Long Call opční pozice na nižším strike a do Short Call pozice na vyšším strike. Chci otestovat období od 1.7.2014 do dnešního dne, v tomto časovém horizontu neproběhl žádný cenový split akcie AAPL a po celou tuto dobu se také obchodovaly weeklys opce.

   2/ Neovládám žádný excelovský programovací jazyk (VBA…) a nerozumím databázovým aplikacím. Disponuji pouze Excelem s propojením na datový zdroj na Quandl.com. Excel ovládám na běžné uživatelské úrovni a vím, co jsou jednoduché logické funkce.

   3/ Výsledný testovací Excel chci mít vyrobený tak, že můžu volit základní parametry možných obchodů a chci mít možnost bleskového testování stejné strategie i na jiných titulech, než je AAPL

  Na obrázku je vidět první krok k načtení dat do mého sešitu

  1. Ve svém Excelu kliknu na záložku Quandl
  2. Vyberu si buňku, kde se požadovaná data mají načíst
  3. Na pásu karet Quandl kliknu na ikonu Get Data
  4. V nově otevřeném okně pro tvorbu vzorce načítajícího data z databáze kliknu na odkaz Stock Data (hledám akcii = stock). 
  5. Vyberu ze seznamu United States
  6. Vyberu ze seznamu Stock Prices End of Day…
  7. V pravém okně vyberu ze seznamu Free WIKI Wiki EOD Prices
  8. Potvrdím kliknutím na „next“

  Potvrzením výběru dojde k otevření dalšího okna vyhledávače v databázi Quandl

   V tomto okně se nabízí celá databáze jednotlivých akciových titulů. Pro akcii AAPL budu postupovat tak, že:

  1. Do vyhledávacího pole napíšu ticker AAPL, ta se mi objeví v podokně níže
  2. Kliknu na vyhledanou databázi pro akcii AAPL
  3. Potvrdím kliknutím na „next“

   V dalším, nově vytvořeném okně je již vidět parametry nabízené databáze požadované akcie AAPL. Protože mě bude zajímat cena při pondělním Open a pátečním Close, tak vyberu pouze načtení těchto dvou údajů, a to níže takto

  1. Označím pouze hodnoty Open a Close
  2. V tomto poli již vidím předpřipravenou formuli, která se objeví v požadované buňce v Excelu. Povšimněte si, jaké různé další údaje můžete takovým stažením získat pro jiné případné backtesty
  3. Potvrdím kliknutím na „next“

 V předposledním okně, které se objeví po tomto potvrzení, mohu specifikovat konkrétnější údaje o stahovaných datech

  1. Protože požaduji data za určité období (od 1.7.2014 do dnešního dne), tak takovou volbu časového rozpětí vyberu z kalendářů ve volbě Period Range
  2. Zajímají mě denní data, proto volím z volby Frequency možnost Daily
  3. Všechny další volby ponechávám nyní stranou a potvrzuji kliknutím na „next

  Ve vyskočeném posledním okně pouze potvrdíte (nebo změníte) buňku Excelu, kam chcete formuli načíst

  1. Výběr buňky v excelovském sešitu
  2. Kliknutím na „insert“ operaci s vyhledáním ukončíte

  Výsledkem této operace je vložení tohoto požadavku do excelovského sešitu. Okamžitě by se měly objevit požadovaná data, tedy pro akcii AAPL za období od 1.7.2014 do dnešního dne všechna denní Open a Close, tak jak je to na níže uvedeném obrázku.

   Pokud se data neobjevují, zkontrolujte si nastavení podle výše uvedeného obrázku.

  1. Volba „Formulas“ musí mít zatrženou podvolbu „Enable“, která se projevuje malou zelenou fajfkou na této ikoně.
  2. Po výše uvedené úpravě ikony Formulas klikněte na ikonu „Refresh Sheet“ a dojde ke znovunačtení dat do tvořeného sešitu

   Při takto upravené volbě se budou vždy v budoucnu automaticky načítat všechna požadovaná data do Excelu, tedy například zítra pro jejich aktualizaci o další obchodní den. Požadovaná data jsou tedy do Excelu načtena a já mohu přikročit k samotnému sestavení formulovaného testovacího sešitu


Excel

   Podstatou tvorby takového testovacího sešitu bude vycházení ze základních vlastností opčních kontraktů při jejich pořízení a při jejich expiraci. Celý backtest se pak, kromě úvodního nastavení, nebude vůbec zabývat otázkou vývoje cen opcí, ale bude poměřovat hodnotu strike cen opčních kontraktů a mírou, nakolik je současná cena ve vztahu k tomuto strike. V jednoduchém příkladu, pokud pořídím při ceně AAPL 150 USD jednu Long Call opci na strike 153 za -30 USD a při expiraci se bude cena AAPL nacházet na hodnotě 153.50 USD, potom má tato opce cenu +50 USD. Celkový profit na této opci je +20 USD (-30 USD náklady + 50 USD cena opce = +20 USD profit). Pokud tato cena při expiraci bude pod hodnotou strike 150, tak tato opce vyprší jako bezcenná a utrpím ztrátu ve výši vynaložených nákladů -30 USD. Každá opce při expiraci má takovou cenu, nakolik je „v penězích“ a to bude základní princip takového backtestu.

  Do Excelu s načtenými daty budu chtít, podle zadání backtestu, mít možnost měnit budoucí parametry testovaného Call Bull Spreadu. Takové parametry si proto do mého sešitu vyznačím a mohlo by to vypadat, jako na níže uvedeném obrázku

    Šipkou č.1 je vyznačeno, v které buňce se nachází formule – vzorec Excelu, který umožňuje pomocí nainstalovaného doplňku stahovat požadovaná data do mého sešitu na určené místo. Nemusím být zrovna nějaký velký znalec tvorby excelovských vzorců, abych již nyní viděl možnost, jak takovou formuli upravit pro jiný akciový titul. V označených zelených kroužcích stačí jednoduše přepsat hodnotu AAPL na hodnotu například IBM a obdržím data pro tento akciový titul. To je značně komfortní pro testování všemožných libovolných akcií. Pouhým přepsáním formule, bez hlubší znalosti Excelu, mohu takto libovolně analyzovat, během chvilky, velké množství různých akcií. (Celé přepisování formule lze samozřejmě nahradit například makrem ve VBA, ale to není smyslem této ukázky).

   Základní problém se schovává u stanovení hodnoty buňky označené šipkou č.2prémium. Základem pro takové stanovení se může stát již výše popisovaná platforma thinkorswim, kde musím u několika vzorových, náhodně vybraných obchodů zjistit, jaké jsou průměrné náklady/průměrné obdržené prémium na testovaný Call Bull Spread. Pokud bychom nechtěli využít thinkorswim, mohu si vypomoci například volně dostupnými opčními kalkulátory cen opcí, například ze stránek Interactive Brokers  Tato hodnota pak přímo souvisí s hodnotami označených šipkami č.3 a č.4. – tyto označují, v jaké vzdálenosti od momentální ceny budeme do obchodu vstupovat. Ve vzorovém obrázku jsou uvedeny hodnoty pro Long strike 1 a pro hodnotu Short strike 5. Znamená to, že budeme vstupovat do hodnoty Long Call na zaokrouhlené hodnotě strike vypočtené ze současné ceny plus hodnota 1, a to vše zaokrouhleno na celé hodnoty, hodnota Short Call strike je stanovena hodnotou strike vypočteného pro Long Call plus hodnota 5 ze zadání, snížená o hodnotu jedna, tedy vstup na nejbližším vyšším strike pro Long Call opci a o čtyři strike vzdálenějším vstupu do Short Call opce, jednoduše řečeno se jedná o OTM Call Bull Spread na blízké OTM opci s rozsahem strike ve výši čtyři body. Pro takovou strategii musím vyhodnotit, za jaké průměrné náklady se dá do takového obchodu vstoupit, řekněme, že jsem ve svém příkladu použil modelové náklady ve výši -40 USD. Tyto náklady můžeme stanovit i jinak než náhodným pozorováním v platformě thinkorswim nebo využitím free aplikace pro cenu opce, například procentní hodnotou z ceny podkladu apod. Všechny hodnoty, tedy vzdálenost strike Long opce, Short opce i velikost nákladů na pozici budu moci u backtestu libovolně měnit a pozorovat následně vliv jejich výše na celkovou equity testovaného vzorku dat. U hodnoty strike samozřejmě mohu zadávat také záporné hodnoty, to by bylo v případě, že bude například Long Call opce pořizována „v penězích“, například pro zadanou hodnotu -2 by to znamenalo při ceně AAPL 155.20 strike Long Call 153.

     Šipkami č. 5 je vyznačen pomocný výpočet maximálního profitu Call Bull Spreadu. Tento je stanoven hodnotou rozsahu strike v dolarovém vyjádření, od kterého musím odečíst pořizovací náklady na obchod (šipka č.2). V mém případě je dolarový rozsah 4 body = +400 USD mínus -40 USD náklady, tedy maximální profit ve výši +360 USD (Excelovský vzorec je zobrazen v buňce vpravo)

   Nyní přikročím k samotné práci s daty. Na obrázku je nastíněné řešení, jak jsem data upravil pro požadavek, že budu vstupovat do Call Bull Spreadu na pondělním Open a vystupovat na pátečním Close

   1/ Pomocí funkce HODNOTA.NA.TEXT jsem zjistil, co které datum znamená za den v týdnu a tuto hodnotu jsem přenesl do sloupce E.

   2/ Ve sloupci F jsem hledal hodnotu vstupní ceny, pokud se ve vedlejším sloupci E nachází slovo „pondělí“. Takto jsem do sloupce F přenesl pouze hodnoty pondělních vstupů. Využil jsem jednoduché logické funkce KDYŽ a zadal podmínku pro výběr pouze konkrétního dne, pokud název požadovaného dne „pondělí“ v daném řádku dne neodpovídá, pak se do buňky nezapíše žádný údaj

   3/ Ve sloupci G jsem hledal hodnotu výstupní ceny, pokud se ve sloupci E nachází slovo „pátek“. Takto jsem do sloupce G přenesl pouze hodnoty pátečních výstupů, za použití stejné logické funkce jako v předchozím případě

   Pokud již vím, které hodnoty odpovídají pondělnímu Open a pátečnímu Close, musím vypočítat, jaké budou hodnoty strike pro testovaný Call Bull Spread. Tyto stanovím tak, jak je znázorněno na níže uvedeném obrázku

   Pro cenu pondělní Open ve výši 154.26 jsem stanovil hodnotu strike 155, a to tak, že jsem využil funkci ZAKROUHLIT hodnotu Open ve výši 154.26, ke které jsem připočetl hodnotu stanovenou ve volitelné buňce pro stanovení vzdálenosti hodnoty Long Call opce od momentální ceny, tedy hodnotu jedna. Výsledná hodnota 154.26 + 1 = 155.26, která zaokrouhlená vychází na hodnotu strike ve výši 155. Hodnotu strike Short Call opce byla stanovena přičtením hodnoty rozsahu strike Call Bull Spreadu ve výši 4 body k hodnotě vypočteného strike Long Call opce ve výši 155, Short Call opce tak má strike 159

  Zbývá nyní jen vyhodnotit celý backtest podle vybraných dat, a to je nejdůležitější část celé analýzy. Na níže uvedeném obrázku je vidět, doplněný Excel o takové vyhodnocení s hodnotou celé equity backtestu

   Na obrázku je graficky zachycen obchod, který byl v pondělí, při ceně 149.99 USD otevřen na strike Long Call 151 (přidávali jsme 1 bod k ceně pro strike Long Call – zelený kroužek) a na strike o čtyři body vzdálenějším pro Short Call 155. Mám tedy Call Bull Spread +151/-155. Cena při pátečním Close skončila na ceně 154.12 USD – červený kroužek. Podle zadání kritérií jsem měl vstupní náklady -40 USD. Červeně vyznačený vzorec pro logickou funkci v Excelu má černými obdélníky vyznačeny tři části, které zachycují tři možnosti, jak tento obchod mohl skončit. Jsou to veškeré možnosti, které mohly nastat, když jedna z možností se bude týkat mého konkrétního případu ve vyznačeném týdnu. Výsledek této možnosti bude zapsán do buňky označené hnědým obdélníkem, jako hodnota výsledku obchodu při expiračním pátku.

   1/ KDYŽ(G12-H16>$I$3-$I$4;$K$4. První část se ptá, jestli nastal případ, kdy hodnota pátečního Close mínus hodnota strike Long Call opce je větší než rozsah strike mého Call Bull Spreadu, tedy hodnot  $I$3-$I$4, což jsou hodnoty z volitelného menu v záhlaví excelovského sešitu, které vyznačují rozsah strike, který testuji. Pokud je odpověď na tuto otázku ANO, tak to znamená, že Call Bull Spread +151/-155 dosáhl maximálního možného profitu, je celý „v penězích“ a jeho maximální profit bude činit hodnotu z buňky $K$4, což je hodnota z volitelného menu v záhlaví excelovského sešitu, které vyznačuje hodnotu maximálního profitu. Pokud je odpověď na tuto otázku NE, přichází na řadu druhá část vzorce. V mém případě je hodnota rozdílu 154.12 USD -151 USD =+ 312 USD, takže v mém konkrétním případě je odpověď na otázku NE

   2/ KDYŽ(G12-H16<0;$I$2. Druhá část se ptá, jestli nastal případ, kdy hodnota pátečního Close mínus hodnota strike Long Call opce je menší než nula. Odpověď by byla ANO v případě, kdyby cena AAPL klesla pod můj strike Long Call 151 a obě opce by vypršely jako bezcenné, má maximální ztráta z obchodu by byly zaplacené náklady, které mám vyznačeny v buňce $I$2 z volitelného menu v záhlaví excelovského sešitu. V mém případě je hodnota rozdílu 154.12 USD -151 USD = +312 USD, takže v mém konkrétním případě je odpověď na otázku opět NE, takže se musím přesunout na třetí část vzorce

   3/ (G12-H16)*100+$I$2. Třetí část vzorce je konstatování, že pokud nebyly splněny podmínky v prvních dvou případech, tak byla naplněna třetí možnost, jak Call Bull Spread +151/-155 může u expirace dopadnout, tedy že cena zůstane mezi strike mého Call Bull Spreadu +151/-155, v mém konkrétním případě to bylo na hodnotě 154.12 USD. V takovém případě je výsledek obchodu rozdílem páteční Close ceny a strike mé Long Call opce vynásobený hodnotou 100 (pro dolarové vyjádření), od kterého jsou odečteny zaplacené náklady, které mám vyznačeny v buňce $I$2 z volitelného menu v záhlaví excelovského sešitu. V mém případě je do buňky v hnědém rámečku zapsána vypočtená hodnota podle této třetí možnosti, a to hodnota +272 USD. Je výsledkem výpočtu pátečního Close 154.12 USD mínus strike Long Call 151 pořízené v pondělí + náklady ve výši -40 USD, tedy celkově +272 USD

   Jiné možnosti nastat nemohou, a tak sestavení takového logického vzorce je základem úspěchu pro správné fungování backtestu. Celý vzorec vlastně reprezentuje pochopení logiky chování Call Bull Spreadu a tato logika je do jeho sestavení vtisknuta. Pro jednodušší konstrukci vzorce u složitějších strategií mohu tento vzorec například rozložit do více sloupců a v každém sloupci se jednoduchým logickým vzorcem ptát na každou podmínku zvlášť. Výsledek obchodu by pak byl součtem hodnot ve všech sloupcích na stejném řádku…

   V posledním sloupci „K“ je součet všech provedených obchodů, aby se dala zobrazit konečná hodnota celého backtestu nebo graficky vyobrazit příslušná equity křivka. Ta by tedy po vyhodnocení backtestu, kdybychom zcela mechanicky počínaje dnem 1.7.2014 každé pondělí na akcii AAPL pořizovali OTM Call Bull Spread se vzdáleností Long Call = momentální cena + 1 bod, s rozsahem strike 4 body a za tento obchod bychom zaplatili -40 USD, když Celý Call Bull Spread by byl ukončen tentýž týden v pátek. Za tři roky bychom měli profit  +7.618 USD.

   Volitelné parametry pak můžu samozřejmě různě nastavovat a sledovat, jak by si Call Bull Spread vedl za různých podmínek. V případě, že bych za stejné období volil strike pro Long Call jak první „v penězích“ (-1) a Short Call by byla ve vzdálenosti 4 strike (+3) a toto všechno bych pořizoval za -110 USD, pak by dopadla celá situace jako na níže uvedeném obrázku

   Pokud bych chtěl změnit testovaný titul, pak postačí, jak již bylo naznačeno výše, po kliknití na buňku Date v Excelu pouze přepsat ticker hledané akcie. Na obrázku níže je uvedeno vyhledání dat pro akcii JPM s přepsáním hodnot ve vyhledávacím vzorci.

   Není to tedy nic složitého. Stejný způsob se stejnou výpočetní filozofii mohu použít na Put Bear Spready nebo pro obě strategie najednou v jednom Excelu – potom bych mohl najednou testovat celé Long Butterflyies. Stejně lze postupovat s kreditními strategiemi nebo vyhodnocovat životaschopnost Ratio Spreadů nebo Back Spreadů a při troše matematické fantazie se mohu pustit také do Time Spreadů (kalendářů) a dalších mnoha různých opčních kombinací. Excel, který jsem popisoval v tomto článku si můžete stáhnout zde a prozkoumat jeho konstrukci. Jsem přesvědčen, že při troše cviku a pochopení základních logických funkcí budete podobné výpočetní sešity schopni tvořit velmi rychle a získat tak jednoduchý a efektivní nástroj k prvotnímu prozkoumání opčních strategií… :c)

 

Sleduj facebook, napiš e-mail nebo tweet

18 thoughts on “Backtestování v Excelu”

  1. super článek, když to vidím, tak si pokládám otázku proč nad vším přemýšlím tak složitě, aneb proč to dělat složitě, když to jde jednoduše;) děkuji moc za takový článek. Opcím ZDAR!

    Zdraví Jelimán

  2. Cau Jirko, diky za dalsi super clanok! Inak tento vikend prebehla stretavka ako-investovat.sk a ked som odporucal tento blog, tak uz ta ludia poznali 🙂 Len tak dalej, skvela robota!

    1. Ahoj, už jsem si všiml, že z ako-investovat.sk bylo mnohokrát směrováno na můj blog, to jsem rád, protože asi všude je „traderský chleba o dvou kůrkách“. Zběžně jsem prošel jejich fórum týkající se opcí a je fajn zjistit, že stejné otázky, které padají na takových zahraničních fórech jsou podobné jako na těch českých, tak jim tedy zprostředkovaně přeji, ať se jim tam dobře daří :c) Jirka

  3. Díky za praktický článek.
    Zkusil jsem si udělat reálnější backtest na AAPL od 1.5.2017 a tak dobře jako v článku mi to nevychází.
    Cenu opcí jsem získal z placeného IQFeedu. Cenu long call jsem určil jako maximum z první minuty pondělního obchodování, cenu short call jako minimum. Cena spreadu mi v průměru vychází přes 100 USD. I přesto, že počítám s trochu jinými strike (nad 150 jsou po 2.5, nebo ne?), tak se mi zdá uvedených 40 USD nějak málo. Bohužel nevím, jak správnost mnou zjištěných cen ověřit. Níže posílám data, pro úplnou správnost je ještě potřeba odečíst nějaké drobné za komise. Nemám tam náhodou nějakou botu? 🙂

    entry;exit;entry price;exit price;price diff;long strike;short strike;spread;long price;short price;spread price;exit price – long strike – spread price;PL;Equity
    01-May-2017;05-May-2017;145.1;148.96;3.86;146;152.5;6.5;2.05;-0.22;1.83;1.13;113;113
    08-May-2017;12-May-2017;149.03;156.1;7.07;150;155;5;0.69;-0.05;0.64;5.46;436;549
    15-May-2017;19-May-2017;156.01;153.06;-2.95;157.5;162.5;5;1.15;-0.13;1.02;-5.46;-102;447
    22-May-2017;26-May-2017;154;153.61;-0.39;155;160;5;1.23;-0.08;1.15;-2.54;-115;332
    29-May-2017;02-Jun-2017;155.45;155.45;0;157.5;162.5;5;0;0;0;-2.05;0;332
    05-Jun-2017;09-Jun-2017;154.34;148.98;-5.36;155;160;5;1.17;-0.1;1.07;-7.09;-107;225
    12-Jun-2017;16-Jun-2017;145.74;142.27;-3.47;147;152.5;5.5;1.6;-0.22;1.38;-6.11;-138;87
    19-Jun-2017;23-Jun-2017;143.66;146.28;2.62;145;150;5;1;-0.09;0.91;0.37;37;124
    26-Jun-2017;30-Jun-2017;147.17;144.02;-3.15;148;152.5;4.5;1;-0.08;0.92;-4.9;-92;32
    03-Jul-2017;07-Jul-2017;144.88;144.18;-0.7;146;152.5;6.5;0.68;-0.68;0;-1.82;0;32
    10-Jul-2017;14-Jul-2017;144.11;149.04;4.93;145;150;5;0.76;-0.04;0.72;3.32;332;364
    17-Jul-2017;21-Jul-2017;148.82;150.27;1.45;150;155;5;0.89;-0.09;0.8;-0.53;-53;311
    24-Jul-2017;28-Jul-2017;150.58;149.5;-1.08;152.5;157.5;5;0.67;-0.04;0.63;-3.63;-63;248
    31-Jul-2017;04-Aug-2017;149.9;156.39;6.49;150;155;5;3.02;-1.01;2.01;4.38;299;547
    07-Aug-2017;11-Aug-2017;157.06;157.48;0.42;157.5;162.5;5;1.12;-0.11;1.01;-1.03;-101;446
    14-Aug-2017;18-Aug-2017;159.32;157.5;-1.82;160;165;5;1.6;-0.16;1.44;-3.94;-144;302
    21-Aug-2017;25-Aug-2017;157.5;159.86;2.36;160;165;5;0.89;-0.12;0.77;-0.91;-77;225
    28-Aug-2017;01-Sep-2017;160.14;164.05;3.91;162.5;167.5;5;0.61;-0.07;0.54;1.01;101;326
    04-Sep-2017;08-Sep-2017;158.63;158.63;0;160;165;5;0;0;0;-1.37;0;326
    11-Sep-2017;15-Sep-2017;160.5;159.88;-0.62;162.5;167.5;5;1.77;-0.34;1.43;-4.05;-143;183
    18-Sep-2017;22-Sep-2017;160.11;151.89;-8.22;162.5;167.5;5;0.82;-0.13;0.69;-11.3;-69;114
    25-Sep-2017;29-Sep-2017;149.99;154.12;4.13;150;155;5;1.69;-0.15;1.54;2.58;258;372
    02-Oct-2017;06-Oct-2017;154.26;155.3;1.04;155;160;5;1.08;-0.1;0.98;-0.68;-68;304

    1. Ahoj, je možné, že to máš správně. Určit cenu spreadu je klíčová záležitost a je zapotřebí počítat s tím, že ceny mohou výrazně lišit v různých obdobích. V období vyšší IV, například v období Earnings nebo poklesu trhů se cena takového spreadu samozřejmě zvyšuje, v období klidu na trzích zase může být nízká. Ukázkou jsem chtěl ukázat princip testování a proto také „výše prémia“ je volitelnou položkou a lze ji měnit a pozorovat, co to se strategií vlastně udělá. Proto netvrdím, že mých 40 USD nákladů je nějaké dogma. Například před rokem, 10.10.2016 v pondělí byla IV AAPL na hodnotě cca 19% a takový spread stál cca -49 USD. O čtrnáct dní později, v pondělí 24.10.2016 byla IV téměř 50% a tento spread stál cca -150 USD.
      Je jasné, že za použití kvalitních dat bude takové testování preciznější. Jednoduchý Excel by měl sloužit pouze k nějakému prvotnímu otestování myšlenky, lze jej samozřejmě ještě více vyšperkovat právě o jiné eventuality, jako je například zaokrouhlování strike při ceně vyšší než 150 USD..atd., ahoj, Jirka

      1. Jasné, chápu, díky.

        1)
        Stejně mi ale ty ceny pořád nějak nevycházejí :)… nemám zatím žádné zkušenosti z live obchodování, proto se ptám možná hloupě:
        V IQfeedu vidím cenu call opce AAPL s expirací 14.10. v období 10.10.2016 9:30-9:31 takto (jedná se o agregovanou last cenu):
        Strike 116: 0.60, 0.69, 0.53, 0.65 (OHLC)
        Strike 120: 0.04, 0.05, 0.04, 0.05 (OHLC)
        Cenu spreadu počítám jako (High long)-(Low short), tzn. -65 USD (0.69-0.04). Pokud budu dělat backtest tímto způsobem, jak moc se blíží reálným nákladům? Vycházím z předpokladu, že většinou nakoupím o „trochu“ lépe, než na maximu (resp. prodám na minimu u short leg), čímž se pokryje spread a komise. Nebo je potřeba cenu spreadu pro jistotu ještě zvýšit o nějakou konstantu?
        Na -49 USD bych se dostal jen tehdy, kdybych počítal s tím, že nakoupím long call za minimální cenu za první minutu obchodování, což mi nepřipadá reálné.

        Cena spreadu (+118/-122) o dva týdny později mi při použití stejné metody vychází stejně jako tobě, -148 USD (2.18-0.70).

        Průměrná cena spreadu za celé testované období mi vychází někde mezi -85 a -90 USD.

        V těch cenách se šťourám proto, že chci strategii otestovat tak, aby se co nejvíce blížila realitě, jinak to podle mě nemá smysl.

        2)
        Až teď mi asi došla jedna základní věc: veškeré snahy o reálný backtest strategií, které obsahují short pozice, ztroskotávají na tom, že nemůžu vědět, kdy (a jestli vůbec) budu assigned 🙂
        Pokud jsem ale dobře pochopil, tak assignment u Call Bull spreadu je to nejlepší, co se mi může přihodit :). Např. pokud jsem v pozici +100/-105, tak v případě přiřazení obdržím -100 akcií a +10500 USD za jejich prodej. Toto se odehraje tehdy, když se cena pohybuje někde nad 105. Další vývoj ceny mi může být ukradený, protože ať už je aktuální cena akcie jakákoliv, tak se mi vždy po exercise long call opce na účtu objeví +100 akcií a -10000 USD za jejich nákup. Akcie se vyruší a zbyde mi +500 USD, tedy maximální možný profit, a navíc ještě před expirací. Pokud v pátek cena akcie skončí pod 105, tak bude backtest vycházet hůř, než realita. Můžeš prosím potvrdit, že je to takhle správně?
        Tím se dostávám k další otázce: jde nějak hrubě odhadnout pravděpodobnost, že budu přiřazen? Dají se někde dohledat počty exercised opcí podle strike a podle času, kdy byl příkaz k exercise odeslán?

        Díky moc
        Petr

        1. Ahoj Petře.
          Ad 1) Opakuji, že takový excelovský backtest je pro prvotní osahání myšlenky. Do „jemného“ backtestu pak vstupují další věci jako je momentální IV apod. Každý si to pak může vylepšit sám jak chce a nakonec vůbec nemusí využít excelu, ale nějaké sofistikovanějšího řešení. Možná jsem nešťastně zvolil právě testování Call Bull Spreadu, možná bylo lepší ukázat, jak testovat například kreditní strategie, protože tam je to většinou tak, že pokud to prorazí nějaký strike, tak je to jistá ztráta.

          Ad 2) Call Bull Spread nejvíce vydělá, pokud je celý „v penězích“. Celý backtest byl myšlen tak, že v pondělí vstoupím a v pátek testuji, jaká je cena podkladu vzhledem ke strike Short Call opce. Pokud je Short Call „v penězích“ při expiraci, tak bude uplatněna (assigned) automaticky a nastane verze s maximálním profitem. Pokud se stane, že dojde k proražení Short Call strike za života opce (před expirací), tak k assigned samozřejmě v drtivé většině případů nedojde a Short Call opce si žije svůj vlastní život „v penězích“ do expirace. V reálném tradingu bych takovou situaci řešil „nějakým způsobem“, který takový obecný backtest není schopen zachytit, protože například oscilace ceny kolem Short Call strike (pohrávání si z maximálním profitem) by bylo nutné řešit v tu danou chvíli (například likvidace Short Call a pořízení 100 x Short akcií….). Ptáš se na pravděpodobnost přiřazení. Pokud je Short opce „mimo peníze“ za života opce a cena je velmi blízko strike, tak téměř s jistotou k žádnému assigned nedojde, pokud nejsou například vypláceny Dividendy. Pokud jsou Short opce „v penězích“ za života opce, pak platí, že k assigned také s velkou pravděpodobností nedojde, pokud tomu nejsou nakloněny okolnosti (opět například Dividendy nebo je strike opravdu silně „v penězích“). Žádná taková statistika neexistuje, protože pokud nejsou výše uvedené okolnosti, je exercise opcí „mimo peníze“ (vede k assignment) mimo logiku. U expirace je assigned u opcí „v penězích“ tutovka a u opcí „mimo peníze“ se toto v žádném případě nestane… :c)

  4. Ahoj
    Taktiež moc ďakujem za zaujímavé články a mnoho užitočných informácii.
    Mám jeden dotaz. Snažím sa pomcou excelu robiť rôzne analýzy a na jednu z nich by som potreboval získať implied volatilitu ATM opcie (napr. mesiac dozadu). Zatiaľ som ako jedinú možnosť našiel ručné vypisovanie IV z thinkBack z TOS – čož je dosť zdĺhavé.
    Je nejaká možnosť ako dostať staršie hodnoty IV pre ATM do excelu automaticky?

    Ďakujem
    Michal

    1. Ahoj, už jsme tady několikrát tuto otázku řešili s tím, že podle mého stále není možné získat „zadarmo“ data o historických hodnotách Implied Volatility například na americké akcie. Náhražkou by mohly být scripty, které dokáží zpětně z historické ceny opce na nějaký strike, s nějakou expirací a při jisté ceně podkladu vypočítat IV. Toto však vyžaduje mít k dispozici tyto historické ceny opcí. Všechny datové zdroje, které znám nebo alespoň které jsem prošel, nabízejí taková data za úplatu a ta není zrovna nejnižší. Nejjednodušší je pak způsob, který popisuješ, a tím je „ruční sběr“ například v platformě TOS. Byl bych opravdu velmi rád, kdyby mě někdo opravil a řekl nám všem, že to není pravda a že tyto data jsou tam nebo tam….Ahoj a měj se, Jirka :c)

        1. Ahoj,
          Quandl již databázi WIKI nedoporučuje a data se pro většinu akciových titulů dají stahovat jen do března 2018. Obdobná data lze stahovat z databáze EOD, viz obrázek

          Na obrázku je výsledek dnešního stahování Close dat pro AAPL, Wiki do března, EOD do včerejška…Jirka :c)

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *