第一段自主编写的程序

发布于: 雪球转发:0回复:2喜欢:2

第一次完全自编的一段300etf从2013年到现在的历史波动率计算,虽然很简单,但对自己来说也是一个进步。


import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

#读入数据300etf.csc

etf = pd.read_csv('g:/300etf.csv',index_col = 'date')

etf.index = pd.to_datetime(etf.index)

#计算每日对数收益率

lagetf = etf.shift(1)

l = np.log(etf/lagetf)

#分别计算IV

list = []

for i in range(1,1645):

list.append(l.iloc[i:i+21].std())

list = np.array(list)

iv22 = pd.DataFrame(list,index = l.index[21:])*16

list = []

for i in range(1,1623):

list.append(l.iloc[i:i+43].std())

list = np.array(list)

iv44 = pd.DataFrame(list,index = l.index[43:])*16

list = []

for i in range(1,1601):

list.append(l.iloc[i:i+65].std())

list = np.array(list)

iv66 = pd.DataFrame(list,index = l.index[65:])*16

list = []

for i in range(1,1534):

list.append(l.iloc[i:i+132].std())

list = np.array(list)

iv133 = pd.DataFrame(list,index = l.index[132:])*16

#绘图

fig = plt.figure()

ax = fig.add_axes([0.1,0.1,0.8,0.8])

ax.plot(iv22,label = '22days')

ax.plot(iv44,label = '44days')

ax.plot(iv66,label = '66days')

ax.plot(iv133,label = '133days')

ax.set_title('300etfHV')

plt.legend()

全部讨论

向好而生2022-12-12 11:39

python

娄某人2020-01-03 15:24

我觉得很厉害哦。什么软件啊