持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 19 天,点击查看活动详情
1 前言
在之前的文章中讲解了量化交易的配对模型的内容,在本文中将继续分享一款只有机构、大户才玩得起的雪球产品,这是一种具备一定幅度下跌保护的高收益类扶手产品,能够起到保护投资者的目的。在本文中将继续讲解一些 pandas 的操作,以及涉及业务的数据处理。
2 雪球产品
在这里简单介绍一下雪球这个产品,比如以当天为日期为合约的开始日期,然后设置 2 个月的观察期,产品的周期是两年,在两个月的观察期结束后的当天,每间隔一个月进行数据的敲出,敲出水平是期初价格的 110%,观察期结束后的每个交易日都可以进行敲入的观察,所谓的敲入,则是按照期初价格的 70%。那么在观察期内可能出现以下几种情况:
- 1 直接敲出,产品的收益是合约开始日期到敲出日期,期间按照年化收益率 39.9% 进行结算。
- 2 到结束期后,没有敲入也没有敲出,也是按照年化收益率 39.9% 进行结算。
- 3 在观察期内,先发生了敲入,然后发生了敲出操作,此时也是以持有期为准,按照年化收益率 39.9% 。
- 4 期间发生了敲入的操作,但是没有发生敲出,此时的产品产生亏损,亏损为 1- 到期日/期初价格。
以上就是雪球产品的基本逻辑,那么这个产品的收益率和胜率会怎么样呢?
3 数据准备
在雪球产品中,我们以中证 500 指数为例,进行数据模型的计算。
首先,我们需要先抓取中证 500 指数的数据信息,具体代码如下所示:
这里不仅需要抓取数据,设置时间为 pandas 的 index,还需要提取数据的收盘价和日期,而且还有给数赋默认值。
4 模型计算
这里需要添加一个函数,这个函数的作用是获取一个月后的时间的交易日,如果当天不是交易日则顺延日期。
在真正的数据计算开始前,需要先设置数据的默认值,需要设置敲入标记和敲出标记、敲出的时间和过程的描述,以及敲出的月份分布和最终的涨跌幅信息。
首先需要获取起始的日期信息,然后计算其数据信息够不够到达产品周期的标准。计算观察期的时间序列,计算其期末的涨跌幅信息。
核心的内容在于以下两行, 当在观察期内,且价格高于敲出的标准,则进行敲出的计算,而且敲出的操作只能够操作一次。
同样的,敲出的操作也只能操作一次,而且只有在小于敲入的价格时才能够执行。
当整个循环执行完成之后,就可以收集数据计算的过程,设置当前起始日期的敲入敲出标记,是否赢的标记,还有就是涨跌幅信息。
从上图可以看出,如果结果是赢的话,那么也分为三种情况,就是直接敲出、未敲入未敲出和闲敲入后敲出。输的情况下只有一种就是敲入未敲出。
在计算结果时,需要截取可以计算的日期,并且将回测日期的数据进行打印。
4 总结
在本文中,进行了雪球模型的基本计算,主要就是雪球产品的理解,在后续的文章中将继续分享雪球模型的计算结果和产品的盈利亏损概率问题。