美文网首页
计算上证50过去3年的历史波动率的变化(窗口用60个交易日)

计算上证50过去3年的历史波动率的变化(窗口用60个交易日)

作者: Ramon_qi | 来源:发表于2019-07-31 11:03 被阅读0次

    工作要求计算上证50过去三年历史波动率的变化,窗口为60个工作日,即计算一个波动率的值需要使用过去60个工作日,简单的计算了60 个工作日的标准差。

    图片.png
    # encoding:utf-8
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    import  matplotlib.pyplot as plt
    data_class = Mongo_operation()
    **** 这里是获取基本的数据 **** 
    # 可以使用tushare哦,我这里是使用了公司内部的数据,所以省去了获取数据的代码
    df = DataFrame(ali_database.stock_index_hq.IDX000016.find({},{'_id':0,'tradeDate':1,'close':1,'preClose':1})).sort_values('tradeDate')
    df['rt'] = df.apply(lambda x:((x['close'] - x['preClose'])/x['preClose']),axis = 1)
    df = df.dropna()
    df['std'] = df['rt'].rolling(60).std()
    std = df[df['tradeDate'] >= '2016-01-01']['std'].tolist()
    df_std = df[df['tradeDate'] >= '2016-01-01']
    
    df___ = df_std[['tradeDate','std']]
    df___ = df___.set_index(["tradeDate"])
    df___.plot()
    plt.title('最近三年000016波动率序列')
    import pandas as pd
    import numpy as np
    print('     均值:',df_std['std'].mean())
    print('0.2分位数:',np.percentile(std, 20))
    print('0.5分位数:',np.percentile(std, 50))
    print('0.8分位数:',np.percentile(std, 80))
    plt.grid()
    plt.show()
    
    图片.png
    图片.png

    相关文章

      网友评论

          本文标题:计算上证50过去3年的历史波动率的变化(窗口用60个交易日)

          本文链接:https://www.haomeiwen.com/subject/jglzrctx.html