【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单 (2)

而这4组参数,对于套利价差计算的预处理,how字段最重要。我们用实际的数据,来看不同how字段的取值,会对最终价差的计算,带来怎样的影响。

首先,how = “inner”,取时间轴的交集,只有两个表DATETIME列都有的时间,才会出现在最终的总表。我们展示计算得到的总表,并计算价差序列后绘图。

 

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

其次,how = “outer”,取时间轴的并集,只要两个表DATETIME列任意一表有的时间,都会出现在最终的总表,若另一个表没有数据,则按nan值填充。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

由于outer的数据处理方式,存在着大量的nana值,我们无法直接计算价差,通常的处理方式是前向填充空值数据,即将nan值用离得最近的非空值进行填充替代,再计算期现(中间价)价差,并绘图。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

再次,how = 'left',按左表时间轴合并。按左表(IC)的时间轴与右表逐一匹配,左表的时间轴全部保留,右表有该时间的,则并入总表,右表没有该时间的,以nan代替。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

同样需要前向填充空值数据,然后才能计算期现(中间价)价差。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

最后,how = 'right',按右表时间轴合并。按右表(500ETF)的时间轴与左表逐一匹配,右表的时间轴全部保留,左表有该时间的,则并入总表,左表没有改时间的,以nan代替。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

由于期货数据频率相比股票ETF更高,nan主要出现在股票比期货集合竞价更早的阶段,这部分nan数据可酌情删除。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

我们将不同价差计算方式所绘制的图合并到一起,可以看到,左上how="inner"的图,点最为稀疏,因为需要同时两个价格在该时刻都有数据,才会计算价差;而右上how="outer"的图,价差点最为密集,只需其中一组价格变动,就会计算1次价差,而下方的两张图how="left"、how="right",密集程度位于两者之间。

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

价差计算方式不同,带来策略驱动方式的差异

价差不同的计算方式,表面来看是Merge函数所选择how的参数不同,造成的价差序列计算结果不同。然而不同how参数的选择,背后实则对应着不同的策略原理、策略逻辑。

我们无论在策略的回测中,对待行情数据,都需要采用一种“事件驱动”的方式来进行测试,这是最贴近实盘交易的回测方式。我们假设历史数据也是像实盘那样,每生成一个新的数据,推送给我们一次,而我们每收到一个新的数据,相当于是一个新的事件,这个事件驱动了后续的策略信号计算,以及信号对应的开平仓条件的判断。

我们再回到价差不同的计算方式,其对应的,实则是策略不同的驱动方式。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxpdz.html