安装必要的包
install.packages("PerformaceAnalytics")
如果已经安装过了,就不需要执行这条命令,可以直接加载这个包(或者到最后需要计算 VaR 的时候加载)。
library("PerformanceAnalytics")
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
数据来源
数据可以从行情软件获取。也可以从图书馆数据库获取。或者从外网的数据库获取。
设置工作目录
setwd("~/your/path/to/var-bdi/")
上面的目录是示例,可以根据你自己的需要设置路径,例如像下面:
setwd("D:/r-work/")
导入数据
df <- read.csv("../../static/data/bdi.csv")
把其中的列 “date” 中的数据格式转为“日期”格式
df$date <- as.Date(df$date)
df <- df[order(df[,1]),]
rate <- diff(df$index)/df$index[-length(df$index)]
## 上面这段代码的含义是:用 'diff' 求相邻两个交易日之间的收盘价之差,分别除以相应的第一个交易日的收盘价。
df <- df[-1,]
df <- cbind(df, rate)
观察数据
plot(df$date, df$index, type="l", col = "blue", main = "波罗的海指数走势")
plot(df$date, df$rate, type="h", col = "blue", main = "波罗的海收益率走势")
hist(df$rate, breaks = 20, col = "blue", border = "lightblue")
plot(density(df$rate))
curve(dnorm(x,mean(df$rate),sd(df$rate)),xlim=c(-0.12,0.12),col="blue",lwd=1.5)
curve(pnorm(x,mean(df$rate),sd(df$rate)),xlim=c(-0.12,0.12),col="blue",lwd=1.5)
计算 VaR
var_h=VaR(df$rate,p=0.95,method="historical")
var_g=VaR(df$rate,p=0.95,method="gaussian")
var_m=VaR(df$rate,p=0.95,method="modified")
print(c(var_h, var_g, var_m))
## [1] -0.03209884 -0.03760919 -0.03065806