以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  计算历史波动率的问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=157449)

--  作者:cooper56
--  发布时间:2017/8/30 15:07:39
--  计算历史波动率的问题
我想在后台程序化模式下写一个计算历史波动率的公式,周期是日线,历史波动率是过去20天的每日收益率的标准差,公式如下
FOR i=2 to 20  DO  rdaily[i]:=REF(CLOSE,i-1)/REF(CLOSE,i)-1;  //这一行计算的是前19天的每日收益率,编译后提示REF 函数在循环语句中可能会带来风险
rdaily[1]:=DYNAINFO(7)/REF(CLOSE,1)-1;    //这一行计算的是昨收盘价到当前最新价的收益率
histvol:=STD(rdaily,20);    //计算波动率,可以这么用STD函数吗?
请问语句这么编写可行吗?或者有没有大神能够帮忙写一个更高效的语句,谢谢了
[此贴子已经被作者于2017/8/30 15:09:22编辑过]

--  作者:FexTel
--  发布时间:2017/8/30 15:11:39
--  
波动率已有函数,VOLATILITY( , ) 
--  作者:cooper56
--  发布时间:2017/8/30 15:12:42
--  
太好了,谢谢
--  作者:cooper56
--  发布时间:2017/8/30 15:20:09
--  
不好意思,发现一个新问题,由于我的波动率计算需要加入最新价的影响(见第二行代码),而volatiliy函数只能计算历史值,请问怎么改写呢?
--  作者:cooper56
--  发布时间:2017/8/30 15:36:39
--  
利用VOLATILITY函数并且考虑增加最近价的影响,我写了一个新的公式,大神能否看下这个式子是否正确
temphisvol:=VOLATILITY(19);    //这行计算前19天的历史波动率
rcurrent:=DYNAINFO(7)/REF(CLOSE,1)-1;   //计算昨收盘价到最新价的收益率
histvol:=SQRT( ( POW(temphistvol,2)*19/252+POW(rcurrent,2) ) /20*252);  //将19天的历史波动率和最新价的收益率结合起来计算20天的波动率