Příspěvky odjinud – Rotační strategie nebo kolo štěstí?

Nedávno byl uveřejněn na těchto stránkách článek, který popisoval princip rotačních strategií. Při testování základní strategie jsem narazil na to, že nejsem schopen replikovat výsledky uvedené v článku. To mě nakonec přivedlo k zajímavému a často opomíjenému detailu, který s rotačními strategiemi souvisí.

Vezměme strategii, která procuje s košem 9 ETF: XLY, XLP, XLF, XLE, XLV, XLI, XLB, XLK, XLU. Každých dvacet obchodních dní strategie prodá dosud držený ETF a koupí ten, který má nejvyšší ROC(20). Prodej a koupě se realizuje za Close ceny. Zde je k dispozici kód pro platformu AmiBroker:
SetBacktestMode( backtestRotational );
SetTradeDelays(0, 0, 0, 0);
SetOption("MaxOpenPositions", 1);
SetOption("WorstRankHeld", 1);
rebalance = ((BarIndex() - offset ) % 20) == 0;
PositionScore = IIf(rebalance, 100 + ROC(C, 20), scoreNoRotate);

Strategii budeme testovat v období 1.1.2005 až 22.9.2014 na EOD datech z Yahoo adjustovaných o splity a dividendy. První rotaci provedeme 7.1.2005, další 7.2.2005 atd. Ve výsledku dostaneme systém s CAR = 13,6% a max. DD = -50,1%.

Co se stane, pokud první rotaci neprovedeme v pátek 7.1.2005, ale až v pondělí 10.1.2005, následující 8.2.2005 a tak dále? Překvapivě se výsledné parametry strategie podstatně zhorší: CAR = 10,2% a max. DD = -62,6%. Pro jistotu tedy prozkoumáme všech 20 možností, kdy lze s rotací začít. Ve výše uvedeném kódu to umožňuje proměnná offset. V následující tabulce grafu jsou výsledky těchto testů spolu se strategií Buy & Hold SPY (v grafu tlustá černá čára).

offset CAR [%] maxDD [%]
0 13,1 50,1
1 10,2 62,6
2 4,7 61,9
3 5,9 60,5
4 11,6 48,6
5 11,5 56,0
6 7,9 43,5
7 9,2 49,4
8 15,2 41,7
9 5,5 59,9
10 4,6 67,6
11 4,7 64,4
12 7,6 59,6
13 9,2 60,2
14 5,2 67,5
15 6,4 68,4
16 9,8 75,0
17 12,0 59,4
18 11,8 558
19 11,4 59,1
průměr 8,9 58,6
Buy&Hold 7,6 55,2

Více je vidět z přiloženého obrázku:

Equity podle offsetu data rotace

Z výsledků je patrné, že posun rotace o pár dní má zásadní vliv na výkonnost takto postavené strategie a proto není možné tuto strategii považovat za robustní. Nechci tím zatratit obecně rotační strategie jako takové. Jenom chci upozornit na to, že při backtestování je potřeba ověřit citlivost (nebo raději necitlivost) strategie na posun okamžiku rotace v rámci rotační periody.

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

22 komentářů u Příspěvky odjinud – Rotační strategie nebo kolo štěstí?

  1. admin napsal:

    Takto jsem to netestoval, nicméně ty výsledky působí dost rozházeně. Pokud je to tedy pravda, pak je strategie z původního článku bez dalších úprav v podstatě neobchodovatelná. Až zbyde trocha času, tak se na to ještě podívám detailně a zkusím udělat vlaastní testy. Každopádně díky za příspěvek!

  2. Djm napsal:

    Takovyto clanek by na Grimmlandu asi nevysel. Vazim si lidi jako je admin xzajic, jelikoz si nezaklada na uplne neomylnosti a klidne zverejni i takovyto report. Pokud tedy puvodne prezentovana strategie neni robustni, tak by me zajimalo, co udelat, aby byla. Pro me jsou tyto rotacni strategie zatim velka neznama, setkal jsem se s nimi teprve zde na tomto blogu.

    • admin napsal:

      Pochopitelně, nemám patent na rozum. A už jsem se tady několikrát přiznal, že druhý a třetí díl ze seriálu „rotační strategie“ mám v šuplíku a už jsem to několikrát přepisoval a není to ono, proto to nechci zveřejnit.

      Pravděpodobně „skončíme“ tím, že bude třeba rotovat „třídy aktiv“ namísto „sektorů“. Tohle mám taky rozepsané, ale je s tím spousta práce. Druhá věc, která se dá dělat, je změnit způsob „scoringu“, tedy ohodnocení z primitivního ROC(20) na například nějakou funkci volatility a podobně. Třetí věc je nekupovat jedno aktivum ale více.

      No, ještě uvidíme ;-)))

      • Make I Train napsal:

        Na Seeking Alpha ve dříve odkazovaném článku používají právě funkci volatility, a to ranking=0,7*performance + 0,3*volatility. Někdo měl lepší výsledky s vahami 0,8 a 0,2, někdo jiný zase s jinými.
        Samozřejmě, potřeba otestovat…

  3. Marcel napsal:

    Mne naopak tieto výsledky pripadajú ako robustné. Tým nemyslím , že by som tento systém obchodoval , ale vo všetkých prípadoch sú CAR aj DD cca zhodné a aj prezentovaný graf ukazuje približne robnaký priebeh pri všetkých vstupoch. Rozdiely podla mňa spôsobujú občasné väčšie cenové pohyby podkladu ktoré zasiahli stále iné EFT a v inom čase čím sa zmenilo ROC . Posun rotácie o pár dní spôsobil vstup do iného ETF.
    Ak by boli CAR a DD iné hodnoty tak by som v tom nevidel problem.

  4. Lovec napsal:

    Já tam vidím jeden podstatný problém – pro rotační strategie je naprosto nevhodný D1. Tam je potřeba operovat na W nebo MN. Tam už dostaneš lepší výsledky. Navíc den rotace je potřeba vybírat z logiky. Na W by to mělo být podle close v pátek, na MN podle close posledního dne v měsíci, na D1 podle close dne. Nechceš to zkusit s rotací na denní bázi? Tedy každý den držet tu nej z balíku. Rotace na měsíční bázi z D1 dat mne nepřijde logická.

    • labros napsal:

      Zkusím cokoli. Jen by mě zajímalo: proč pátek resp. proč poslední den v měsíci. Při testech jsem si všiml, že tak to vychází nejlépe, ale uniká mi ten fundamentální důvod. Jestli důvod existuje, tak budiž, jinak je to ale spíš overfitting.

  5. Lovec napsal:

    No pokud se rozhoduješ na základě MN timeframe, tak poslední den v měsíci je close svíčky. To je ten důvod. A neznám nikoho, kdo by rotační modely obchodoval na základě D1, spíš je to pomocí W nebo MN, proto asi i poslední den v měsíci funguje nejlépe.

    • labros napsal:

      Tak pátek by mně připadal ještě jakž-takž logický. Řada věcí se obchoduje 24/5 a na víkend se zavírá, takže pátek odpoledne je opravdu něco jako close týdne. Ale ten konec měsíce je prostě datum, které ale jinak s obchodování nijak nesouvisí. Nezdá se mi, že by cena poslední den v měsíci byla nějak významější než ostatní dny. No ostatně to je jedno. Každopádně to vyzkouším a uvidím. Jsem dost opatrnej, protože svého času mě overfitting stál pár peněz.

      • Lovec napsal:

        No jak říkám – má to logiku u MN timeframe, je to totiž konec svíčky, tedy close. D1 je podle mne u rotačních modelů kravina, je potřeba minimálně W. BTW overfitting na jakém trhu? Rotační modely se v podstatě nedají overfittovat. V zásadě z logiky (používáš pouze trendující nástroje) nesmí existovat neziskové nastavení.

        • Mirek napsal:

          Lovec:
          Nějak tomu nerozumím. Proč je tak důležitý close svíčky? Potřebujem měřit výkonnost jednotlivých ETF a problémem je kam posadit nulu – od jakého dne tuto výkonnost měřit. Jaký je fundamentální rozdíl mezi tím zda měřím výkonnost např. 20dní zpětně a nebo vyhodnotím výkonnost mezi open a cloce předchozího měsíce? (u MN svíčky). Ano poslední den měsíce je close měsíční svíčky, ale proč zrovna by to mělo být korektní období pro měření a srovnávání vykonnosti ETF?

          • Lovec napsal:

            Problém je, že měsíc je celkově hrozně málo. Běžně se používá půl roku. Při tak krátký době budeme mít v testu plno šumu. Nebo bych zapojil MA z ROC, abych se toho šumu zbavil, resp. ho eliminoval.

            • labros napsal:

              Otestoval jsem tuto rotační strategii pro rotaci týdně a měsíčně. Otestoval jsem ji pro sektorové ETF XLx a pro rotaci třídy aktiv SPY, TLT (akcie/bondy). Testoval jsem závislost na délce období, ve kterém vyhodnocuji ROC. Sledoval jsem, jak výsledky ovlivňuje den rotace (pondělí, úterý… pátek, resp. poslední, předposlední atd. den měsíce). Výsledky jsou tady. Pro rotaci sektorů mi nevychází nic rozumného ani pro týdenní ani pro měsíční periodu. Výsledky jsou velmi citlivé na den rotace. Přitom se nedá říct, že je lepší rotovat v pátek resp. poslední den měsíce. Prostě je to tak rozházené, že v tom není žádný řád. Pro rotaci třídy aktiv (akcie/bondy) je tam vidět optimální délka pro vyhodnocení ROC kolem 4 měsíců. Při tom je prakticky jedno, jestli se rotuje každý týden nebo měsíc a je jedno, jestli je to pondělí, středa nebo pátek, resp. poslední, prostřední nebo první den měsíce.

              • Lovec napsal:

                A testoval jsi rotaci na denní bázi? Tedy ne jednou za měsíc, ale každý den. Tam pak nemusíš řešit problém se dnem rotace. Navíc výběr do čeho vstoupit je jen jeden z mnoha faktorů, který je potřeba u rotačního modelu řešit.

              • Lovec napsal:

                Možná by bylo ideální se spojit mimo fórum – pokud to adminovi nevadí, dej mne zde pls email, spojíme se a můžeme diskutovat efektivněji :-)

                • labros napsal:

                  Zkoušel jsem rotovat každý den. Dojde k dalšímu zhoršení CAR. Pro sektorové ETF XLx CAR=5% (oproti 10% u 1W). Pro SPY/TLT je CAR=12% (oproti 15% i 1W). Vše při LookBack periodě 80 dní pro ROC, bez uvažování poplatků. Taky jsem zkoušel rozdělit kapitál na 21 dílů, rotovat jeden díl denně s dobou držení 1 měsíc. Pořád je ale to +/- stejné. Můj osobní dojem z toho je, že rotace na sektorech moc nefunguje. Rotace akcie/bondy celkem funguje. Dá se postavit velmi jednoduchý systém s CAR/maxDD blízko k jedné, což není špatné, ale ani kdovíjak dobré. Chtělo by to ještě nějak vylepšit (přidat další třídu aktiv, zapojit volatilitu, korelaci ?) Email sem nechci dávat, ale admin má naše adresy. Admine, pošli nám je navzájem prosím.

                  • admin napsal:

                    Hele, adresy si klidně vyměňte, není problém, ale pokud je sem nechcete dávat, tak Vám je vzájemně posílat nebudu. Pak se někde ukliknu a je potíž ;-)))

                  • Lovec napsal:

                    Jo, na sektorech je to mnohem náročnější, ale nechci to zde rozepisovat do detailů.

                    Napiš mne pls na email valhalala@seznam.cz, to je můj odpadní email na spamy, pak ti napíšu z mé normální adresy :).

                    • labros napsal:

                      Ok. Mám to. Admine můžeš příspěvek s Lovcovou adresou smazat, aby tady nevisela, prosím?

  6. Pingback: Backtestnig / Testování a jak na něj (1/6) | Akcie

Napsat komentář

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