分类
外匯交易

通过双卖策略实现做空波动率

03-15 252

长期双卖50ETF绩效研究

人称仲哥 ​

我从其他地方也有见过类似的回测,但是我并不清楚他们是怎么做回测的,现在规则型的交易策略回测大体上有两种:

  1. 向量式回测,就是所有的数据以类似于表格的形式呈现,然后用pandas或excel用统计或者某些条件筛选的方法对数据做一些加工,这种方法的缺点就是一不小心就容易使用未来的数据,而且有时候出现了一些逻辑错误,自己也不知道。
  2. 事件型回测,就是把交易标的的数据按设定的周期一个一个回放,在回放的过程中,设定一些交易条件,达到了就相应做交易,最后再根据成交记录来统计盈亏,这种方法比上一种方法更准确,还可以通过逐笔查看成交记录来排除逻辑错误。
  1. 真格量化,这个平台是可以做期权回测的,上面有很多做期权回测的常用函数,比如选择平值(虚值)合约、计算隐含波动率、获取期权合约信息等。这是一个在线平台,策略安全性每个平台都号称绝对安全,当然世界上如果有绝对的事情的话,那一定是绝对没有绝对的事情,所以如果自我感觉策略逆天简直是印钞机的存在的话,可以犹豫一下。
  2. 用本地化的回测模块改造,比如我一个朋友就是把vnpy的多标的回测portfolio strategy模块拿来改造了,原始模块的源码我阅读过,并不适合直接用来做期权回测,虽然我不知道朋友改写了多少代码,但是我猜测过去应该花费了一番功夫。

入场出场条件:长期持仓,根据当日收盘的平值期权隐含波动率决定入场的仓位,当平值隐波低于或高于某个阈值时进行加减仓,有最大仓位限制,减仓最低可以到无卖出持仓。

节假日:4天以上节假日的前2个交易日,7天以上节假日前3个交易日清仓过节。

平值期权隐含波动率:平值沽和平值购的平均值,用来简化代替波动率指数的数值。这个值的走势正常和波动率指数一致,部分天数变化更为剧烈。

仓位:每100万账户,15手卖沽和卖购算1个基础仓位。增加仓位或减少仓位都是以基础仓位计算。

  • 选择同等手数的虚值2档沽和虚值2档购建立双卖组合;
  • 若行情大幅度波动导致某个方向完全没有虚值合约可用,则当日沽购都只能用最虚的那档构建,次日合约加挂的时候再进行调整;
  • 若行情波动导致某个方向虚值合约不足2档,则反方向也选择对应档位,如沽只剩虚1档可选,则购也对应选择虚1档,次日合约加挂的时候再进行调整;

移仓换月和Delta动态对冲:

  • 当标的收盘价,认购防御空间【(认购行权价 - 标的价) / 标的价 】小于2%或大于6%时,移仓到新的虚值2档合约;
  • 当标的收盘价,认沽防御空间【abs(认沽行权价 - 标的价) / 通过双卖策略实现做空波动率 标的价】小于2%或大于6%时,移仓到新的虚值2档合约;
  • 当月合约剩余到期日不足n个自然日时,移仓到下月新的虚值2档合约(行权价可能会变);
  • 持仓中的当月合约权利金不足30元时,移仓到下月新的虚值2档合约(行权价可能会变);
  • 当需要垂直移仓到本月的其他合约,但是该合约权利金不足50元时,则直接移仓到下月与之对应的合约。

回测日期:2015-2-9至2020-8-31,大约5年半,历经了牛市、熊市、震荡市,各种突发事件等,样本还算多样。

回测的触发信号是以收盘价为准,并且交易也是以收盘价完成,这在实盘中无法完成。实盘中,因为已经收盘了根本不可能交易,所以要实盘交易的话,触发信号可以改为每个交易日临近收盘5-10分钟内计算并完成交易。之所以我回测用这种“不符合逻辑”的方式进行,主要是为了偷懒。不过,考虑到虽然几分钟价格可能产生差异,从而导致有些交易日回测结果(相比可执行的实盘交易)更有利,有些交易日回测结果更不利,中和一下可能就差不多,当然主要是两者因为时间间隔短,这个绩效应该是可以接受的。

平值沽购隐波均值与期权论坛波指走势对比

平值沽购隐波均值与期权论坛波指统计对比

长期绩效展示

我们的双卖策略仓位是会跟随隐含波动率变化的,简单来说就是波动率越高仓位越大,波动率越低仓位越小,这也是大部分做波动率交易的策略仓位控制的主要逻辑。高波动率的时候虽然面临的波动可能会比较大,但是潜在的利润空间比较大,而潜在的风险较大概率只是浮动亏损。而低波动的时候潜在利润空间很小,潜在风险巨大,基本上就是操着卖白粉的心赚着卖白菜的钱。

策略一:同等手数的策略表现

  1. 跑输50etf的收益,并且最大回撤35%,比长期持有50的最大回撤小不了多少,即使排除2015年疯牛牛市区间的最大回撤也不小,最大也能达到20%左右。
  2. 牛市期间波动巨大,但是最后几乎没有什么收益。
  3. 其他普通行情,会阶段性的出现稳健上升的运行曲线,但是很容易在一两次大回撤中又打回原形,在打回原形之前的这段时间(可能长达几个月甚至按年计算)的净值曲线经常会被市场上的营销人员拿去筹资,如果你是一名投资人,一定要注意这种掐头去尾的净值曲线。

同等手数策略保证金占用走势

策略二:根据隐波调整仓位的策略表现

  1. 长期能够实现正收益,收益略差于50etf,但是最大回撤小了一些,最大回撤主要发生在2015年疯牛期间25%,其他时候最大回撤在6%-7%之间。
  2. 在极低波动的时期(2017)有长期的空仓期(这段时间资金是可以挪作他用的),平时偶尔会产生一段时间的空仓期。
  3. 低波动的时候因为仓位比较低,所以收益也比较低。
  4. 只有隐含波动率从高波动快速下降到低波动的期间才能产生比较明显的快速的利润,等降到比较低的时候,因为仓位又低了,收益就开始鸡肋了。
  5. 仍然难以避免小赚大亏的情况发生,但是只要坚持下单,后续能够修复净值,并且修复速度还不算太漫长。
  6. 在2015牛市的考验中只有1天风险度超100%,大部分时候不至于爆仓。

根据隐波调整仓位的策略保证金变化走势

策略三:仓位集中在中高波动区域绩效表现

  1. 收益曲线和策略二大体上一致,没有很明显的变化。
  2. 收益端略有上升,接近50etf的水平,但是风险端上升更快,最大回撤也接近50etf,达到43%,即使扣除掉牛市区间,也多次超过10%,几次大回撤在7%-13%之间。

通过双卖策略实现做空波动率 仓位集中在中高波动区域保证金变化走势

真格量化——做空波动率策略

VIP文章 神出鬼没,指的就是我! 于 2022-03-15 00:21:47 发布 248 收藏 2

# coding:utf-8#!/usr/bin/env python# EmuCounter2from PoboAPI import *import datetimeimport numpy as np#开始时间,用于初始化一些参数def OnStart(context) : print "system starting. " #设定全局变量品种 g.code1 通过双卖策略实现做空波动率 = "m1901-C-3300.DCE" #豆粕1901C3300期权合约代码 g.code.

05-23 3632

近来在QR社区中我们发现很多朋友在讨论做空,做多,那么到底什么是做空合作多?同时也观察到很多朋友在讨论做空期权波动的问题,那么什么是什么是做空期权波动呢?带着这些问题,我找了一些关于这些方面的资料,编写成文。 (一)什么是做空和做多 1. 什么是做空和做多中的做多:是指预期未来价格上涨,以目前价格买入一定数量的货物,等价格上涨后,高价卖出,从而赚取差价利润的交易行为,特点为先买后卖的交.

03-30 2280

01 一、什么是量化交易策略 量化交易策略,是采用数量化手段构建而成并进行决策的交易策略。是将人的投资思想规则化、变量化、模型化,形成一整套完整、可量化的操作思路,并且这个思路可以用历史数据进行分析验证。程序化交易并非量化策略必备,但是程序化交易可以让策略执行中更少受人的要素影响。 在这样的界定下,量化交易策略既可以借助程序化的方式完成下单,也可以通过人工来执行。但交易频较高的量化交易.

04-02 727

四、如何在真格平台上做到这一切 现在我们想在真格量化上实现自己的策略,需要怎么做呢? 首先,真格量化使用Python语言编写策略。我们需要对Python语言有一些初步的了解。与C++或Java语言相比,Python是一种非常方便易用的脚本式编程语言,很适合非计算机专业的用户来上手量化交易。 举个简单的例子,如果直接用C++调用CTP的API进行下单委托,您可能需要写这些代码: 在真格量化,您只需.

04-02 142

1.打印日志 1.1 在代码中添加运行到特定部分的提示: 如果我们在用户日志未能看到“调用到OnQuote事件”文字,说明其之前的代码就出了问题,导致程序无法运行到OnQuote函数里的提示部分。解决方案为仔细检查该部分之前的代码是否出现问题。 1.2 打印变量进行检查 当我们订阅行情后,可以将订阅到的价格打印出来进行检查,来确实是否订阅了正确的合约: 2.分析系统日志 账户交易的信息,包.

03-18 4114

想在交易竞赛中占据先机?看看常见的高频交易策略都有哪些套路 目前市场上高频交易策略五花八门。比较常见的策略包括以下四种: 1, 套利策略 2, 盘口策略 3, 做市策略 4, 事件驱动 一,套利策略: 一个理想的套利策略是各种情境下,预期收益始终为正的策略,比如当一个期货品种出现了期货价格大幅高于可交割现货价格,投资者如果选择卖出期货合约,并使用现货交割,在扣除所有交易.

11-05 660

真格量化学习使用 期权的量化回测 引入必须的库: from PoboAPI import * import datetime import time 通过双卖策略实现做空波动率 import numpy as np 初始化参数设定 以50为例 def OnStart(context) : print("I\'m starting. ") #设定一个全局变量品种,本策略交易50ETF期权 g.code = "510050.SHSE" #标的代码 #订阅实时数据,用于驱动OnQuote事件

03-15 252

# coding:utf-8 #!/usr/bin/env python # EmuCounter2 from PoboAPI import * import datetime import numpy as np #开始时间,用于初始化一些参数 def OnStart(context) : print "system starting. " #设定全局变量品种 g.code1 = "m1901-C-3300.DCE" #豆粕1901C3300期权合约代码 g.code.

03-15 1154

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * 通过双卖策略实现做空波动率 import datetime import time import numpy as np from copy import * #开始时间,用于初始化一些参数 def OnStart(context) : context.myacc = None #登录交易账号 if context.accounts["回测期货"].Login() : con.

07-15 2849

有哪些著名的波动率交易策略?

Gamma Scalping的关注点是delta,但是为啥叫Gamma Trading? - 戴维的回答

Short Straddle, Gamma 是负的,implied vol > realized vol,所以赚钱。1 Month 的原因是Gamma has less prob to become less negative.

除了short straddle, 也可以short strangle (strike 不同), strangle 的好处有更大的概率使得这个策略赚钱,但是payoff 相对会变小。

Short vol 的缺点在于,如果市场有剧烈的波动,尤其是go down, 那么realized vol 会有一个spike 导致realized vol 大于 implied vol,那么就会亏损。在我的credit vol 策略中,我是short cdx vol, hedge by sp500 vol。但如果针对sp500 index vol 或者 个股的vol 策略,我觉得很难hedge 这个risk。这里就需要有一个择时的机制在里面我觉得。

除此之外,比较经典的还有根据event来long vol 或者short vol。

对于个股,在earning event 之前,因为不确定性,implied vol 会上升,在earning event 之后,除非特别好的earning或者特别差的earning,正常implied vol 都会下降。那么你可以有2个策略:

1. 你可以在earning 之前long vol, 然后在earning 前一天close position.

2. 你可以在earning 前一天short vol, 然后在earning 之后 close position.

个人比较偏好第一种,因为第二种的risk 还挺大的。如果earning 特别差,就跪了。

高赞回答已经写的很具体了,再做一些补充。一言以蔽之,波动率交易能否成为有效策略的核心还是在于这个标的的波动率均值回复属性是否稳健,这个属性体现在 (1)给定某一期限,这个期限的历史波动率和隐含波动率各自均值回复性如何;(2)体现在不同期限的basis spread上的均值回复性如何;(3)体现在同样期限不同行权价上,波动率skewness(以Risk Reversal波动率衡量)是否有很好的均值回复性。下面具体道来,

首先,波动率交易策略是期权交易策略的子集,不妨理解为是在交易Gamma和Vega两个因子。不管是波动率的方向性策略还是套利性策略,一定程度上都是带有方向性地bet未来历史或隐含波动率。那么最简单的自然是以下三种:

3、Long Gamma Short Vega / Short Gamma Long Vega (日历价差Calendar Spread策略:同时Bet实际波动率和隐含波动率) 该策略可以用不同月份的ATM straddle(或single leg)合约来构建。

如果只交易单一一笔普通期权,或者买卖单一的straddle和strangle,那么1和2的方向,即Gamma和Vega的方向总是一致的,这里不讨论其他复杂的期权组合情形。管理单一期权和管理期权组合是具有很大差异的,在低阶矩上的中性交易头寸很容易在高阶矩上失去稳定性。

一、再谈Short Vol & Dynamically hedge delta

回答中大家普遍提到策略的是上述1和2中的Short Vol & Dynamically hedge delta。尽管理论非常好看,当我们以隐含波动率而非实际波动率去卖出期权,最终对冲组合的收益与实际波动率和隐含的差额为正比,即 \fracS^2\Gamma(\sigma^2_-\sigma^2_) , 但是当前的隐含波动率和当前的历史波动率的volatility spread为正+并不意味着未来的历史波动率一定会比当前的隐含波动率低,因此 是不是可以 / 何时 / Implied vol什么位置 / Volatility spread什么位置可以Short Vol & Dynamically hedge delta需要定量去考量。对于上面这些问题,答案还是在于前文提到的标的波动率的均值回复性特征是否稳健。

需要注意的是,BSM框架下,Gamma Scalping 即当以隐含波动率去动态对冲Delta时,对冲组合的损益是路径依赖的,

随着time decay,如果在atm附近,那么 \Gamma 会迅速扩大,对组合的影响很大。

二、Calendar Arbitrage

日历价差套利的逻辑在于波动率期限结构basis的均值回复性,关于这一点有个simple & elegant的模型,参见Trading Volatility, Correlation, Term Structure and Skew(Colin Bennett)书中Chapter7。

三、Vol Surface Arbitrage

第一节可以视为波动率曲面上某一特定点均值回复,第二节是波动率曲面的ATM切面即期限结构均值回复,那么自然整个波动率曲面存在异常凹凸都是可以进行波动率套利的,套利的逻辑都来自于寻找relative value。并且对于carry因素影响很大的标的(FX、Commodity等),较大carry的存在往往意味着不同期限的组合构建后,在不对冲的情况下,其实会有carry带来的方向性敞口。举个具体例子,还是来自于 Trading Volatility, Correlation, Term Structure and Skew(Colin Bennett)书中Chapter1的内容:

通过short-term butterfly & Calendar spread构建套利组合,这两者的theoretical profile是类似的,两者去除掉共同的short-term atm straddle之后剩下的是 buy / sell short-term strangle & sell / buy long-term straddle,如果假设在短端到期前都不对冲,短端到期后将未到期的长端买回,那么这个组合最大的风险其实是短端到期后的Implied vol (vega)以及carry造成的短端和长端atm strike不同带来的delta。且此组合两翼都存在渐近线(极端深度实值只有执行价值,无时间价值)。

总结一下,volatility trading 是基于波动率曲面的均值回复性,使用什么样的策略的出发点就是寻找relative value最高的组合。

四、Event Driven Volatility Trading

对于 @戴维 提到的根据event来long vol 或者short vol,稍微做一些补充。在公告日前卖出期权,是期望标的股票的价格不要太过剧烈,从而使得在gamma上的损失不会高于在隐含波动率下跌中赚取的利润。

什么是做空 什么是做空期权波动率?

金融人工智能 于 2019-07-15 17:09:32 发布 2849 收藏 1

期权波动交易+波动市场中的盈利策略(高清).pdf 第一章 我谁?我为何在此 我谁?我如何来到这里 我要去迪士尼乐园 略作停留以消除误解,如何 那些日子早已不在 回到1988年的德劳瑞恩 究竟如何盈利的 那么实际如何起作用的 差劲的团队/专家又怎么的 没什么永恒不变,11月的冷雨也一样 他们现在在哪儿 现在该怎么办 第二章 读懂希腊值 Delta Gamma Vega Theta 第三章 理解波动指数(VIX) ……

03-15 252

# coding:utf-8 #!/usr/bin/env python # EmuCounter2 from PoboAPI import * import datetime import numpy as np #开始时间,用于初始化一些参数 def OnStart(context) : print "system starting. " #设定全局变量品种 g.code1 = "m1901-C-3300.DCE" #豆粕1901C3300期权合约代码 g.code.

05-23 3632

06-21 649

在金融市场上,波动被投资者用于衡量资产价格波动的剧烈程度,而资产价格的波动实质上反映了资产所蕴含的风险。因此波动也常被作为衡量资产风险的指标,并被用于对资产的风险管理。 对于普通投资者,波动的含义则意味着股票或指数的"投机价值“。普通投资者通过低买高卖获利,较高的波动则意味着投资者的投资目标实现的难易程度。 简单来说,资产波动高的时候,往往意味着其处于明显的趋势波动中,波动低的时候,则资产处于震荡区间之中。 与价格的涨跌趋势类似,波动也可以通过展示的形式画出图表,供投资者为投资决策的依据。

09-08 295