Strategie na obchodování volatility–2. díl

Před nedávnem jsem prezentoval strategii na obchodování volatility a opět to byla trefa do černého. Trefa do černého v tom smyslu, že se o tom rozproudila celkem inteligentní diskuse. (Hurá. Miluju inteligentní a věcné diskuse a jsem rád, že tenhle blog čtou inteligentní lidé.) Čili dnes se pokusím shrnout některé dotazy či postřehy, které jste měli, přidat jeden svůj tip a také vystavit na web kód, jímž testuji tuto strategii v RightEdge. Pojďme na to.

Riziko

Každá strategie zahrnuje riziko. Strategie založené na volatilitě zahrnují pochopitelně také riziko, a jak někdo trefně poznamenal v diskusi, “k průšvihu dojde málokdy, ale pokud ano, tak to stojí za to”. V tom je určitý problém, protože například strategii “90%” můžete začít obchodovat prakticky kdykoliv a máte statisticky danou celkem rozumnou “jistotu”, že za půl roku budete v plusu. Ale to u strategií založených na volatilitě moc neplatí. Pokud začnete tyto strategie obchodovat uprostřed nějakých specifických tržních podmínek, klidně se může stát, že rok i déle bude taková strategie “v mínusu”. Určitá divokost je těmto strategiím vrozená a nedá se s tím moc dělat. Pouze připojím dva tipy:

  • Strategie založené na volatilitě je třeba vždy brát jako doplňkové, nikdy není dobré věnovat jim podstatnou část portfolia, nebo snad dokonce portfolio celé.
  • Je potřeba vydržet rok i déle v drowdownu, pokud má mít “volatilistická” strategie nějaký význam pro praxi. Pokud to není nic pro Vás, asi bude lepší se tomu všemu vyhnout.
  • Je opravdu potřeba udělat si domácí úkol a podívat se, jak by se strategie chovala v roce 2008 (nebo v jakémkoliv jiném období spojeném s výrazným poklesem trhu).

Příliš mnoho obchodů

Graf poměru VIX / VXV může pochopitelně oscilovat kolem hodnoty 0.917 v úzkém pásmu, což bude způsobovat řadu krátkých (a typicky prodělečných) obchodů. Letos byly například takové obchody čtyři (18.3, 20.3, 25.3 a 18.7), trvaly 1 den a všechny byly ztrátové. Vloni jich bylo 6 a z toho 4 ztrátové. Vloni byste na těch čtyřech ztrátových dnech zaznamenali celkem 11% pokles účtu, letos by 4 jednodenní obchody zlikvidovaly pouze necelá 3% účtu. Co s tím?

  1. Buď je třeba se s tím smířit a brát to jako součást divokosti strategie (společně s tipy uvedenými výše)
  2. Nebo je třeba poupravit strategii tak, aby generovala méně signálů. Například asi jako první Vás napadne ten poměr VIX / VXV nebrat z předchozího dne, ale jako průměr z – řekněme – pěti posledních obchodních dnů. Pokud to uděláme, bude změna zhruba následující (testuji období od 1.1.2013 do 31.8.2014)
Ukazatel VIX / VXV SMA5(VIX/VXV)
Počet obchodů 33 14
Prům. délka obchodu 8.55 dne 19.93 dne
Celkově % 49% 48,12%
Max. DD % 12,87% 10,45%
Winning % 48,48% 64,2%
Max profit 19% 17%
Max loss 6% 6%

Z tabulky vyplývá zajímavá věc – pokud se použije průměr ukazatele, dramaticky se sníží počet obchodů, zatímco zisk zůstane relativně stabilní. Toto je určitě cesta, kterou byste se mohli vydat, pokud byste chtěli strategii nějak “ohnout”. Podotýkám ovšem, že vzorek dat je příliš malý a bude třeba udělat delší výlet do historie, pokud to budete chtít celé ověřit důkladněji.

Aktuální hodnoty VIX a VXV

Datum VIX VXV Poměr
29.06.2016 16,52 18,82 0,878
28.06.2016 18,75 20,26 0,925
27.06.2016 23,85 23,68 1,007
24.06.2016 25,76 23,93 1,076
23.06.2016 17,25 18,42 0,936
Průměr 0,965

Kód

Code Snippet

‚ based on
‚ http://sixfigureinvesting.com/2012/09/taming-inverse-volatility-with-a-simple-ratio/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Sixfigureinvesting%2Fblog+%28Six+Figure+Investing%29&utm_content=Google+Reader
‚ použití: 3 aktiva, ZIV, VIX a ^VXV. ZIV se obchoduje, VIX a ^VXV slouží pouze jako proxy pro výpočet

‚testováno s allocation = 99%, protože při 100% v RightEdge zlobí pozicování !!!
‚testováno s StartingCapital = 100 000 USD, ale to vůbec není podstatné.
‚ZIV, VXV a VIX data jsem bral z YAHOO

#Region „Imports statements“
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports RightEdge.Common
Imports System.Diagnostics
#End Region

#Region „System class“
Public Class MySystem

Inherits MySystemBase
Public orderedSymbolScripts As List(Of MySymbolScript)
Public myVIX As MySymbolScript = Nothing ‚symbol obsahující VIX – krátkovobá volatilita
Public myVXV As MySymbolScript = Nothing ‚symbol obsahující VXV – střednědobá volatilita
Public Pomer As Decimal

Public Overloads Overrides Sub Startup()
SystemData.EnableTradeOnClose = True ‚ umoznime prodavat a kupovat on close
AddHandler SystemData.BarClosing, AddressOf BarClosing
End Sub

Public Sub BarClosing(ByVal sender As Object, ByVal args As NewBarEventArgs)

‚najděme indexy pro výpočet poměru…
orderedSymbolScripts = Me.SymbolScripts.ToList()
For i As Integer = 0 To orderedSymbolScripts.Count – 1
If orderedSymbolScripts(i).Symbol.Name.Contains(„VXV“) Then myVXV = orderedSymbolScripts(i)
If orderedSymbolScripts(i).Symbol.Name.Contains(„VIX“) Then myVIX = orderedSymbolScripts(i)
Next

‚vypočtěme poměr…
Try
Pomer = myVIX.Close.Current / myVXV.Close.Current

‚případně pro testování klouzavého průměru:

‚Dim PomerDny As List(Of Double) = New List(Of Double)(5)
‚For i As Integer = 0 To 4
‚  PomerDny.Add(myVIX.Close.LookBack(i) / myVXV.Close.LookBack(i))
‚Next
‚Pomer = PomerDny.Average

Catch ex As Exception
Pomer = 0
End Try

If Pomer = 0 Then Exit Sub ‚asi nejsou data

For Each SymbolScript As MySymbolScript In orderedSymbolScripts
SymbolScript.BarClosingSellLong()
Next

For Each SymbolScript As MySymbolScript In orderedSymbolScripts
SymbolScript.BarClosingBuyLong()
Next

End Sub
End Class
#End Region

Public Class MySymbolScript
Inherits MySymbolScriptBase

Public Sub BarClosingBuyLong()
If Bars.Count < 2 Then
Return
End If

‚indexy nekupujeme !!! slouží pouze pro výpočet poměru…
If Me.Symbol.Name.Contains(„VIX“) Then Exit Sub
If Me.Symbol.Name.Contains(„VXV“) Then Exit Sub

If OpenPositions.Count = 0 And TradingSystem.Pomer < 0.917 And Symbol.Name = „ZIV“ Then
‚contango! Z toho by se dalo těžit !!!
OpenPosition(PositionType.Long, OrderType.MarketOnClose)
ElseIf OpenPositions.Count = 0 And TradingSystem.Pomer > 0.917 And Symbol.Name = „VXX“ Then
‚backwardation
OpenPosition(PositionType.Long, OrderType.MarketOnClose)
End If

End Sub

Public Sub BarClosingSellLong()
If Bars.Count < 2 Then
Return
End If

If OpenPositions.Count = 0 Then
‚tak nic
ElseIf OpenPositions.Count > 0 And TradingSystem.Pomer > 0.917 And Symbol.Name = „ZIV“ Then ‚nastává strach
For Each c As Position In Me.OpenPositions
c.CloseAtMarket()
Next
ElseIf OpenPositions.Count > 0 And TradingSystem.Pomer < 0.917 And Symbol.Name = „VXX“ Then ‚nastává uklidnění
For Each c As Position In Me.OpenPositions
c.CloseAtMarket()
Next
End If
End Sub

End Class

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

12 komentářů u Strategie na obchodování volatility–2. díl

  1. Kolous napsal:

    Mě vyšel backtest (pro historii ZIV dostupnou na YAHOO): Win: 13 Loss: 8 Win%: 61.90
    Co koukám do zdrojáků, tak tam při backwardation nakupuješ VXX?

  2. Kolous napsal:

    Dělal jsem svůj program a počítal to s tím SMA5…ještě to prolezu.

    • admin napsal:

      kdyžtak sem dej výsledky, ale tohle je tak ostudně jednoduchá strategie, že bychom se měli sejít vždy…

  3. admin napsal:

    Mě vychází od 1.12.2010 do 5.9.2014

    a) bez průměrování: zisk 389%, 57 trades, 32 winning, 25 loosing, Max. DD 12,78%
    b) s průměrováním: zisk 281%, 22 trades, 14 winning, 8 loosing, Max. DD 15,33%

    a s reinvesticí zisku.

    čili za historii je max. DD dokonce ještě větší, když se průměruje. Ale znova: Je třeba udělat domácí úkoly a projet to zpětně do roku 2008, případně ještě hlouběji do historie…

  4. Kolous napsal:

    Chyba byla, že jsem počítal s neadjustovanejma close. Win: 32 Loss: 25 Win%: 56.14

    http://jyxo.info/uploads/CE/ce454a3c0961fc918ea29c6d490800cca8944270.jpg

    Nahoře equity. Dole vix/vxv. Popisky os jsem nedělal.

    • admin napsal:

      Když řeknu „kdyžtak sem dej výsledky“, tak pochopitelně myslím výsledky, které budu moct nějak zkontrolovat nebo prověřit. Například tabulka

      Datum nákupu — Datum prodeje — nákupní cena — prodejní cena — zisk

      To, co jsi poslal moc neprověřím …

    • admin napsal:

      mě tam nesedí ten propad u čísla cca 250… jinak to ale na počet obchodů a win/loss máme stejný … eště pošli celkový zisk v % a max. DD…

  5. Kolous napsal:

    Máš pravdu, že jsem to odflákl….jsem celej den v práci a budu až do rána. Nemyslím si že to budeš nějak podrobně studovat, takže mrknutí na equity nebo ten graf dole stačí, když se trefíme počtem obchodů.

    bez průměrování: http://www.edisk.cz/stahni/28214/tradelog1.xls_30.5KB.html
    s průměrováním: http://www.edisk.cz/stahni/62973/tradelog.xls_26.5KB.html

  6. hary napsal:

    Ahoj,

    narazil jsem na tenhle odkaz ohledně dalších volatility strategií. Zatím jsem jednotlivý strategie nijak blíže nezkoumal ani netestoval, ale už na první pohled jsou některé equity křivky poměrně zajímavý :-) Každopádně jsem se ještě nedostal ani k otestování xzajícovo volatility strategie, takže nemůžu porovnávat.

    Ale třeba to někoho zaujme a bude se v tom chtít pošťourat, tak to tu dávám i pro ostatní..

    Backtesty strategií (na celkem 4 stránkách):
    http://volatilitymadesimple.com/category/strategy-backtests/

    Výsledky za srpen:
    http://volatilitymadesimple.com/vix-trading-strategies-in-august/

Napsat komentář

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