买权千万条,安全第一条,深虚一时爽,归零两行泪

随着中国股市2019开年至今一轮波澜壮阔的涨势,又到了投资者们,特别是专业机构投资者们最痛苦的时刻,因为他们都得接受隔壁老王暴富故事的狂轰滥炸。

 

 

而且随着50ETF期权吸引了越来越多的投资者参与,暴富神话的神奇程度也有了指数级别的提升。

 

现在让我们尝试用澎博真格量化复盘这个最新的暴富神话。

 

近年人工智能非常火爆,我们希望自己的策略也像老王一样,能够“智能”命中那个一夜成名的神奇的“50ETF购2月2800”。在花了半个小时,回顾了我们和老王的多年交往后,我们还真复制出了这么个python策略,我们相信这个策略有一颗“老王的大脑”。

 

在2019年1月1日到2019年2月26日,这个策略实现了回测28.45%的收益,最大回撤仅有2.59%,而年化收益高达396.91%,可以说是非常夸张了。

 

策略的原理也很简单,我们假设老王,作为一个“久经沙场”的民间期权投资者,比较关注50ETF的历史波动率,但他毕竟还没那么专业,所以并不在乎隐含波动率(老王可能还不大会写python)。老王使用50ETF的历史波动率来作为开仓信号。

 

老王的开仓策略是只要没有持仓,且50ETF的历史波动率低于20%,那就买开期权,假设是500手。

 

因为期权价格可以说是对波动率的定价,当历史波动率偏低的时候,通常也是期权价格比较便宜的时候。

至于买哪个看涨期权合约呢?作为“梭哈”爱好者,老王认为看涨期权的虚值程度越深越好。可谓“无深虚,不期权”。

 

在真格量化里可以直接用”GetOptionContracts”函数把这些当月看涨期权列表找出,然后这个列表的最后一个值就是虚值程度最高的那个看涨期权,也就是老王的买入目标,是“末日轮里的末日轮”。

 

平仓策略是,要么距离到期日不足2天时就市价平仓,要么现价相比开仓价翻倍或跌掉20%时就市价平仓。我们的老王还是有些风险意识,并不会傻等期权到期归零。

 

从今年至今的回测结果看,虽然胜率只有50%,刚好打平抛硬币,但平均正收益远远高于平均负收益。这当然也是买期权的一个优势。

 

下边有趣的问题来了,这个策略长期表现如何呢?我们可以用真格量化再跑跑回测。比如从2018年1月1日到2019年2月25日。

 

这次表现就平庸多了,可以说是从2018年头亏到年尾,然后就靠2019年2月21日买入“神奇的50ETF2月购2800”翻盘,由负转正。可以说这是一条能把人(很可能就包括老王自己)吓出心脏病的净值曲线。

 

 

如果把周期拉得更长,比如拉长到2015年50ETF期权上市以来到2019年2月25日。很不幸,在2018年1月9日净值就归零了,账户死于“绝杀时刻”1年多前。

 

 

是不是有一种远看是圣杯,近看是“龟苓(归零)膏”的感觉?

 

而且当我们深入到tick回测时,还会发现我们目标价位的成交量非常稀疏。老王的500手能否成交,得打个巨大的问号。至于老王策略的Tick级别回测结果如何呢?读者赶紧用真格量化动手试试吧。

 

所以下次,当我们看到媒体敲锣打鼓地宣传末日轮期权192倍的神话的时候,一定要用真格量化检查一下这种策略是否靠谱哦。

 

最后,澎博真格量化提醒您,买权千万条,安全第一条,深虚一时爽,归零两行泪。

 

澎博真格量化网址https://quant.pobo.net.cn

 

API文档可见 https://quant.pobo.net.cn/doc?name=api

一些范例代码可参考 https://github.com/qmhedging/poboquant

什么,你还写不出老王策略? 那到交流QQ群 726895887 向高手请教吧,说不定老王也在群里。

 

### Linux 中单行多命令的执行顺序 在 Linux 命令行中,可以通过多种方式将多条命令写入同一行并控制其执行顺序。以下是关于分号 `;` 和逻辑运算符 `&&`、`||` 的详细介绍。 #### 使用分号 (`;`) 分隔命令 当使用分号作为分隔符时,每一条命令都会被依次执行,无论前一条命令是否成功完成(即退出状态码为 0 或非 0)。这意味着即使某条命令失败,后续命令仍然会被执行[^2]。 ```bash command1 ; command2 ; command3 ``` 以上代码表示:不管 `command1` 是否成功运行,`command2` 都会接着被执行;同理,不论 `command2` 的结果如何,`command3` 同样会被触发。 #### 使用逻辑与 (`&&`) 如果希望只有当前面的命令成功完成后才继续执行下一条,则应采用双 ampersand 符号(`&&`)连接各命令。在这种情况下,只要前面任何一环出现问题(返回非零值),整个链条就会停止进一步操作[^3]。 ```bash command1 && command2 && command3 ``` 此段脚本意味着仅当 `command1` 成功结束之后才会尝试启动 `command2`; 如果 `command2` 又顺利完成, 则最后再调用 `command3`. #### 使用逻辑或 (`||`) 相反地,如果我们想让某个特定条件下的错误触发出另一动作的话,就可以利用管道符号旁边的竖线字符——也就是所谓的“or”操作符(`||`). 它的作用刚好跟上面提到过的“and”正好相对立: 当左侧表达式的计算得出假的结果的时候(通常对应着程序崩溃或者异常终止), 此刻右侧部分将会获得机会得以展现自己. ```bash command1 || command2 || command3 ``` 这里的意思就是说假如 `command1` 出现差错无法正常运作下去的话那么就立刻转向去处理第二个选项即 `command2`, 并依此类推直到找到能够妥善解决问题的那个方案为止[^3]. #### 组合运用 当然也可以混合搭配这两种不同的控制流机制来构建更加复杂的业务流程: ```bash command1 && command2 || command3 ``` 在这个例子当中我们首先检验 `command1` 是否能顺利达成目标. 若果真如此则紧接着便会着手准备实施第二步计划也就是 `command2`. 不过一旦第一步遭遇挫折未能按预期那样完美收场之际便马上切换至备用策略 —— 执行 `command3` 来补救局面[^4]. 请注意实际应用过程中还需要考虑优先级等问题以免造成误解误判从而引发不必要的麻烦事端发生哦! ```python # 示例 Python 实现模拟 Bash 表达式行为 def execute_commands(commands): result = True for i, cmd in enumerate(commands.split(' ')): if not result and ('||' in cmd or '&&' in cmd): continue elif '&' in cmd[-2:]: next_cmd_index = commands.find(cmd)+len(cmd)+1 while commands[next_cmd_index]==' ':next_cmd_index+=1 new_command=commands[next_cmd_index:] break else: try: exec(f"{cmd}") result=True except Exception as e: print(e) result=False execute_commands("print('First') && print('Second') || print('Third')") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值