100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 基于Python的指数基金量化投资——指数基金偏离度计算

基于Python的指数基金量化投资——指数基金偏离度计算

时间:2019-05-10 12:21:34

相关推荐

基于Python的指数基金量化投资——指数基金偏离度计算

什么是指数偏离度

它是指数涨跌的快慢和偏离幅度指标。

当指数快速上涨,偏离度数据会迅速的向上偏离,当快速下跌时,偏离度数据会迅速的向下偏离。

而持续的上涨中出现下跌,偏离度就会急转直下,另一种持续的下跌中出现上涨,偏离度就会迅速上升。

指数偏离度的计算公式:100% × (当日指数 - N日平均指数) / N日平均指数;

其中N可以取5、10、20、30、60等值,就能反映出多少日的偏离度情况。数值越小反映的结果越趋近于瞬时变化,而数值越大反映的结果趋近于于平均变化。

指数偏离度反映的特征

下面是沪深300指数60日偏离度和10偏离度的情况。

60日偏离度更能反映指数在一段时间区间内的变化,整体性更好,抖动较大,有助于了解指数的长期偏离走势,而10日偏离度更能反映当前指数的瞬时变化,独立性更好,抖动较小,有助于了解指数的短期变化走势。

指数偏离度反映的是趋势的变化,更适用在量化的趋势投资中,也就是右侧投资模式,并不适合左侧投资方式,后续会介绍微笑曲线的投资方式,微笑曲线就是一种左侧投资方式。

在小将看来左侧投资方式的胜率更大也更适合自己,但萝卜青菜各有所爱,大家按自己的投资策略来就行。

源码

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltview_name = 'sh.000300'# (当日指数或收盘价-N日平均指数或收盘价)/N日平均指数或收盘价×100%index_info = pd.read_csv('./exportfile/indexDataAll/' + view_name + '.csv')index_data = index_info['close'].values[1:len(index_info['close']):1]win_10 = 10win_30 = 30win_60 = 60offset = 60index_data_deviation_10 = np.zeros([len(index_data),1])index_data_deviation_30 = np.zeros([len(index_data),1])index_data_deviation_60 = np.zeros([len(index_data),1])for i in range(1,len(index_data)-offset,1):index_data_deviation_10[i+offset] = (index_data[i+offset] - np.mean(index_data[i+offset-win_10:i+offset])) / np.mean(index_data[i+offset-win_10:i+offset])index_data_deviation_30[i+offset] = (index_data[i+offset] - np.mean(index_data[i+offset-win_30:i+offset])) / np.mean(index_data[i+offset-win_30:i+offset])index_data_deviation_60[i+offset] = (index_data[i+offset] - np.mean(index_data[i+offset-win_60:i+offset])) / np.mean(index_data[i+offset-win_60:i+offset])plt_gap = 7plt.rcParams["axes.grid"] = Trueplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus']=Falseplt.rcParams["grid.linestyle"] = (3, 5)fig = plt.figure(1)ax1 = fig.add_subplot(1,1,1)ax1.plot(index_data_deviation_10,label='10日偏离度',color='cornflowerblue',linewidth='2',linestyle='-')ax1.plot(index_data_deviation_60,label='60日偏离度',color='tomato',linewidth='2',linestyle='-')ax1.set_xlim(offset,len(index_data_deviation_60)+200)ax1.set_ylim(-0.4,2)index_ticks = index_info['date'].values[1:len(index_info['date']):1]index_x = range(len(index_ticks),0,-round(len(index_ticks)/plt_gap))index_xticks_tmp = index_ticks.tolist()index_xticks = index_xticks_tmp[len(index_xticks_tmp):0:-round(len(index_ticks)/plt_gap)]ax1.set_xticks(index_x)ax1.set_xticklabels(index_xticks)ax1.tick_params(labelsize=23)plt.legend(loc='upper left',fontsize=25)ax2 = ax1.twinx()ax2.plot(index_data,color='darkgray',label='指数走势',linewidth='3')ax2.set_xlim(offset,len(index_data)+200)ax2.set_ylim(0,np.max(index_data)+1000)ax1.set_xticks(index_x)ax1.set_xticklabels(index_xticks)ax2.tick_params(labelsize=23)plt.legend(loc='upper right',fontsize=25)plt.title('沪深300偏离度 | 10日偏离度='+str("{:.3f}".format(float(index_data_deviation_10[-1]))) + ' | 60日偏离度='+str("{:.3f}".format(float(index_data_deviation_60[-1]))),size=28)plt.show()

上述源码中用到的指数沪深300数据或者大家需要用其他数据,可以参看原来的文章《基于Python的指数基金量化投资 - 指数数据获取》。

程序中用到的指数数据如果有问题,大家可以留言获取也可以添加小将前行的微信xjqx_666进行获取,欢迎大家一起交流沟通_

课程参考:基于Python的量化指数基金投资

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。