Python 实现多列滚动计算——以“更优波动率”为例
对单列数据进行滚动计算,可以使用常规的.rolling()
。
如果需要对多列数据进行滚动计算,可以考虑下面两种方法:
- 引入外部包
numpy_ext
,使用其中的rollling_apply()
方法。 - 在
.rolling()
中加入参数method='table'
。
本文以方正金工发表的一篇研报中提出的计算“更优波动率”为例,实现了对多列数据进行滚动计算,并对上述两种方法总结如下:
numpy_ext.rollling_apply()
需要引入外部包numpy_ext
,该方法接受需要进行滚动计算的多个 Series,并返回计算出的一个数组。.rolling(method='table')
是 Pandas 内置的函数(需要升级到较新的版本),指定method='table'
后,就可以对数据框中的多列进行滚动计算,并返回一个数据框。若返回的多列结果相同,我们只需要取出其中一列即可。.rolling(method='table')
使用了engine='numba'
,计算速度更快。