时机把握VIX ETN
登录后收藏学术论文
Return Differences between Trading and Non-Trading Hours: Like Night and Day
Understanding ETNs on VIX Futures [点击查看论文]
- University of Utah
- ?University of Utah - David Eccles School of Business
- Analysis Group (United States)
- ?Analysis Group
- ?Purdue University - Krannert School of Management
策略概要
: 每日VIX曲线时机:通过XVIX-XVZ轮换
该策略基于VIX期货市场的状态(顺行市场或反向市场)交易两只ETN,XVIX和XVZ。每日决策依据30天VIX与93天VXV的比率。比率低于1表示顺行市场,偏向于持有XVIX;比率高于1表示反向市场,偏向于持有XVZ。投资组合每日再平衡。XVIX(目前已无法获得)通过持有中期期货的多头仓位和短期期货的空头仓位,捕捉标普500 VIX中期和短期期货之间的价差。此策略可以通过100%多头VXZ和100%多头SVXY来复制,反映VIX期货曲线中的顺行效应。
II. 策略合理性
根据学术研究,XVIX和XVZ ETN具有互补的表现。XVIX在市场处于顺行市场时表现最佳,而XVZ仅在市场崩盘时表现良好,即当VIX期货期限结构急剧进入反向市场时,此时XVZ的表现非常出色,正是XVIX遭受重大亏损的时刻。
回测表现
波动率23.49%
夏普比率1.14
索提诺比率0.402
胜率45%
完整 Python 代码
from AlgorithmImports import *
#endregion
class TimingVIXETNs(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2012, 1, 1)
self.SetCash(100000)
self.symbols = ['SVXY', 'VIXM', 'XVZ']
for symbol in self.symbols:
data = self.AddEquity(symbol, Resolution.Daily)
data.SetLeverage(5)
self.vix = self.AddData(CBOE, 'VIX', Resolution.Daily).Symbol
self.vxv = self.AddData(CBOE, 'VIX3M', Resolution.Daily).Symbol
self.settings.daily_precise_end_time = False
def OnData(self, data):
if not all(x in data for x in self.symbols):
self.Liquidate()
return
if self.vix in data and self.vxv in data:
vix_price = data[self.vix].Value
vxv_price = data[self.vxv].Value
if vix_price != 0 and vxv_price != 0:
ratio = float(vix_price / vxv_price)
if ratio < 1:
if not self.Portfolio['SVXY'].IsLong and not self.Portfolio['VIXM'].IsLong:
self.Liquidate('XVZ')
if data['SVXY'].Close != 0 and data['VIXM'].Close != 0:
self.SetHoldings('SVXY', 1)
self.SetHoldings('VIXM', 1)
else:
if not self.Portfolio['XVZ'].IsLong:
self.Liquidate('SVXY')
self.Liquidate('VIXM')
if data['XVZ'].Close != 0:
self.SetHoldings('XVZ', 1)
else:
self.Liquidate()