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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM