1、导入历史参数-wind
Step1 :
Step2 :
WSS(“”“”,“sec_name”,“ShowCodes=N”,“cols=1;rows=1”)获取合约名称
Step3:
用 IF(ISNUMBER(FIND(”购”,“”“”)),“购”,“沽”)区分认购认沽
Step4:IF(ISNUMBER(FIND(“年”,B2)),MID(B2,FIND(“沽”,B2)+1,5),IF(ISNUMBER(FIND(“3月”,B2)),“2018年”,“2017年”)) 找到合约年份
Step5:VALUE(IF(ISNUMBER(FIND(“年”,B2)),MID(B2,FIND(“年”,B2)+1,FIND(“月”,B2)-12),MID(B2,FIND(“沽”,B2)+1,FIND(“月”,B2)-7)))找到合约月份
Step6:
WSS(“”“”,“exe_enddate”,“ShowCodes=N”,“cols=1;rows=1”)获取到期日期
Step7:
WSS(,“exe_price”,“ShowCodes=N”,“cols=1;rows=1”)获取行权价
Step8:
WSD(“close3”,“2015-02-09”,“”,“TradingCalendar=SSE”,“rptType=1”,“ShowParams=Y”,“cols=505;rows=641”) 和
WSD(“volume”,“2015-02-09”,“”,“TradingCalendar=SSE”,“rptType=1”,“ShowParams=Y”,“cols=505;rows=641”)获取收盘价和成交量
2、Excel操作 —— 处理隐含波动率计算Vix
▶合成期货价格:
Call-Put+strike
▶VBA找到平均期货价格, 平值位置, 个个月份的开始结束位置
VBA宏中 “合成期货价格”代码 (非模块)
返回以上参数
▶TDaysCount(日期,INDEX(合成期货sheet中所有到期日期数据,平值位置)) 返回日期距离到期日期的剩余天数(包含日期该天,记录在Call_IV表中
▶在VBA中运行计算Vix (模块3),在删除到期日前三天的条件下计算所有的Vix按照平值以及上下一档 的按成交量加权平均的计算方法 计算认购以及认沽
3、50ETF数据处理
▶=WSD(B2,"close3","2017-09-21","","TradingCalendar=SSE","rptType=1","ShowParams=Y","cols=1;rows=1")提取50ETF的历史收盘价
▶用LN(收盘价/上个收盘价) 计算出对数收益率,然后计算出20日,40日,60日,120日的标准差*SQRT(244)作为年化的历史波动率
▶对应的Vix-HV,Vix近月-Vix远月得到需要比较的波动率差值
▶主观参照5日均线对涨跌进行人为判定,颜色代表涨跌,盘整
▶再运行模块4中的期限差价(),日历差价(),对杂乱的数据进行颜色,月份归类
▶用数据中的数据分析进行频率统计以及画图
▶用COUNTIF函数计算出某一日差值在历史上的概率,也就是超过了多少百分比的数据
4、如何更新数据库
Step1:
WSD(B2:SL2,“close3”,“2017-09-21”,“”,“TradingCalendar=SSE”,“rptType=1”,“ShowParams=Y”,“cols=1;rows=1”),通过更改close3,volume,日期 对收盘价 成交量 以及50ETF收盘价更新
Step2 :
Copy日期到”合成期货价格” “Call_IV”表中
Step3:
按照VBA代码中的提示更改合成期货价格()的两个参数,运行得到更新之后的合成期货价格表,下拉Call_IV单元格更新
Step4:
运行模块3中的计算Vix
Step5:
下拉50ETF历史走势单元格(函数已经写好),更新数据,人为判断今日走势,染色
Step6:
运行模块4 模块5,跟新比较屏
▶对于比较屏中的图像,颜色需要人为调整
领取专属 10元无门槛券
私享最新 技术干货