1 min read

VaR of bdi

安装必要的包

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