pandas rolling对象的自定义聚合函数

Posted duan-qs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas rolling对象的自定义聚合函数相关的知识,希望对你有一定的参考价值。

pandas rolling对象的自定义聚合函数

计算标准差型的波动率剪刀差

利用自定义的聚合函数, 把它应用到pandas的滚动窗长对象上,
可以求出 标准差型的波动率剪刀差

代码



def volat_diff(roc1_rolling, center=-0.001, nSD=5):
    '''计算: 标准差型波动率剪刀差
    参数:
        roc1_rolling: 滚动窗长里的roc1
        center: roc1(1日波动率)的平均值
        nSD: 求标准差时用的窗长
    用法: 
        1. rolling.apply(volat_diff, (0, 8))
        2. rolling.apply(volat_diff, args=(0, 8))
        3. rolling.apply(volat_diff, kwargs={'center':0, 'nSD':8})
    '''
    up_lst=[]
    down_lst=[]
    for roc1 in roc1_rolling:  
        if roc1 < center: #如果涨幅小于minret,将被用于计算“下行波动率”
            down_lst.append(roc1)
        else:
            up_lst.append(roc1) #反之,归入计算“上行波动率”
    upvar  = sum([(r-center)**2 for r in up_lst])  /nSD #计算上行波动率
    downvar= sum([(r-center)**2 for r in down_lst])/nSD #计算下行波动率
    vd = upvar - downvar #计算二者差值
    #vd_lst = []
    #vd_lst.append(vd)
    return vd
    
def mysum(rolling):    
    s=0
    for v in rolling: s +=v
    return s

以上是关于pandas rolling对象的自定义聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

加速自定义聚合函数

加速自定义聚合函数

60种特征工程操作:使用自定义聚合函数

Reporting Services 使用啥类型的对象将多行传递给自定义聚合函数?

SQL Server 中的自定义聚合函数 (concat)

使用 plsql 的用户定义的自定义聚合函数