简单粗暴的话,直接用poboquant云量化平台
给定日期,可以取过去30条(自己可以设定是30、60还是90等等,也就是30天、60天、90天历史价格,使用K线计数会更加简洁,不用考虑用自然日时间段长度不一的问题)K线的收盘价(当然也可以换成均价、结算价,自己都可以定制)
然后就用这个历史价格数组计算历史波动率
CalOBJ = CreateCalcObj() #创建一个计算对象
option = PBObj()
yearstring=int(tradingtime.year) #tradingtime是当前交易日
monthstring=int(tradingtime.month)
daystring=int(tradingtime.day)
#准备计算50ETF的历史波动率
option.EndDate=datetime.datetime(yearstring,monthstring,daystring)
option.Count = 31 #获取过去31条K线
klinedata0 = GetHisData(g.code0, BarType.Day, option)
#print "len(klinedata) ",len(klinedata)
klist = []
i=0
while i<len(klinedata0)-1:
#print &#34;previous trading day&#34; +str(klinedata0.tradedate)
#print &#34;previous prices &#34;+str(klinedata0.close)
klist.append(klinedata0.close) #
i+=1
if len(klist)>0:
Kl = np.array(klist, dtype=np.double)
HisVola=CalOBJ.GetVolatility(Kl) #得到历史波动率
print &#34;30D HisVola &#34;+str(HisVola)
完整策略范例可见 qmhedging/poboquant
云量化平台 欢迎访问 https://quant.pobo.net.cn/quant/login#/
注册时 使用 邀请码 814685 |