计算VaR常用的三种方法分别是历史模拟法、方差-协方差法和Monte-Carlo模拟方法。

设有金融资产的价值序列:x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375)

计算其在置信水平1- alpha=0.95的VaR值。

历史模拟法:

代码:
<br />
x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375); <br />
alpha=0.05; <br />
fun1=function(x,alpha){ <br />
n=length(x); <br />
VaR=rep(0,times=n-1); <br />
for(i in 2:n){ <br />
VaR=mean(x[1:i-1])-quantile(x[1:i-1],alpha); <br />
} <br />
VaR     <br />
} <br />
fun1(x,alpha) <br />


方差-协方差法:

需要先拟合金融资产序列,如用GARCH族模型拟合金融资产价值序列,可以得到其在各期的条件标准差序列,设计算所得条件标准差为h:

h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911)

代码:
 <br />
x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375); <br />
h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911); <br />
alpha=0.05; <br />
fun2=function(x,h,alpha){ <br />
n=length(x); <br />
r=rep(0,times=n-1); <br />
for( i in 2:n){ <br />
r[i-1]=log(x)-log(x[i-1]); <br />
r; <br />
} <br />
VaR=rep(0,time=n-1); <br />
for(i in 2:n){ <br />
VaR[i-1]=qnorm(1-alpha)*x[i-1]*h-x[i-1]*mean(r); <br />
} <br />
VaR <br />
} <br />
fun2(x,h,alpha)<br />


Monte-Carlo模拟方法:

根据历史数据计算出特征数据均值、标准差等,然后假设 其服从一定的分布,进而对金融资产价值的未来走向作出模拟。

假设其金融资产的价值序列服从正态分布。
<br />
mean(x)= 198.6189; sd=9.997478; <br />
xnew=rnorm(mean=mean(x),sd=sd(x),n=200) <br />


于是,回到历史模拟法。

代码:
 <br />
x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375); <br />
xnew=rnorm(mean=mean(x),sd=sd(x),n=200); <br />
alpha=0.05; <br />
fun1(xnew,alpha) <br />
LZ自己编辑首贴,取消勾选“隐藏此贴(回复可见)”,应该就可以取消吧。
1 个月 后
好贴,多谢楼主。

ps 为啥我的firefox不能回复?只能用IE?。。。
不错,不错

顺便问句,不知道这些东西Rmetrics里是否有现成的命令
16 天 后
仔细看,LZ的fun1应该是有错的,for 循环里应该是VaR[i-1]吧?



x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375);

alpha=0.05;

fun1=function(x,alpha){

n=length(x);

VaR=rep(0,times=n-1);

for(i in 2:n){

VaR=mean(x[1:i-1])-quantile(x[1:i-1],alpha);

}

VaR    

}

fun1(x,alpha)
呵呵,算的的确是i-1期的,然而生成的结果都存在VaR里了,所以区别不是最重要的。
3 个月 后
有没有计算动态VAR的方法?

就是每一天都对应一个VAR?
9 个月 后

程序都是MATLAB编出来的吗?怎么有些语句在MATLAB中找不到~[s:12]

3 个月 后

请问这是什么编程软件呢,我是菜鸟,但现在需要编程计算VaR,是matlab还是R呢???

回复 第15楼 的 dolphin232210:是R。现在可以直接用包PerformanceAnalytics计算,不用自己编程了。

回复 第16楼 的 dengyishuo:那楼主上面写的那些程序都不用这么写了吗?亲爱的楼主,能不能解释下这个包怎么用来计算VaR呢,谢谢谢谢~~~

回复 第17楼 的 dolphin232210:

<br />
#装R<br />
#装PerformanceAnalytics包<br />
#载入包<br />
library(PerformanceAnalytics)<br />
#用法参考VaR函数的说明<br />
?VaR<br />
</p>

回复 第18楼 的 dengyishuo:谢谢高手,呵呵,还有个问题想请教你,用什么语句在R里面调用EXCEL的数据呢?谢谢~

楼主能不能推荐些Value at risk的论文或比较好的学习资料?

回复 第20楼 的 lolo:你看R包的说明就可以,那里面提供了很多优秀的参考文献。

1 个月 后
4 个月 后

fun2中的h是收益率的条件标准差?

这个式子

VaR[i-1]=qnorm(1-alpha)*x[i-1]*h-x[i-1]*mean(r)

感觉不大对啊

回复 第19楼 的 夏日秋虫:哪里不对呢?