第 6 章 时间序列分析中的 VaR 模型

6.1 如何计算 VaR (Value at Risk)?

PerformanceAnalytics包提供了直接计算 VaR 的函数。这个包功能强大,常用于金融时间序列的分析和绩效评估。

以下是使用该包计算 AAPL 股票 VaR 的示例:

library(quantmod)
library(PerformanceAnalytics)
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked _by_ '.GlobalEnv':
## 
##     weights
## The following objects are masked from 'package:fBasics':
## 
##     kurtosis, skewness
## The following objects are masked from 'package:fGarch':
## 
##     ES, VaR
## The following objects are masked from 'package:timeDate':
## 
##     kurtosis, skewness
## The following object is masked from 'package:graphics':
## 
##     legend
# 获取AAPL数据
getSymbols("AAPL")
## [1] "AAPL"
aapl_returns <- ROC(Cl(AAPL), type = "discrete")[-1]
# 设置置信水平
confidence_level <- 0.95
# 使用PerformanceAnalytics包中的VaR函数计算VaR
var_result <- VaR(aapl_returns, p = confidence_level, method = "historical")
cat("使用PerformanceAnalytics包(历史模拟法)计算的VaR(", confidence_level * 100, "%置信水平):", var_result, "\n")
## 使用PerformanceAnalytics包(历史模拟法)计算的VaR( 95 %置信水平): -0.02955

以上代码中:

  • 加载quantmod包用于获取金融数据,PerformanceAnalytics包用于计算 VaR。 getSymbols(“AAPL”)获取 AAPL 股票数据
  • ROC(Cl(AAPL), type = “discrete”)[-1]计算其日收益率。
  • VaR 函数的第一个参数是收益率序列aapl_returns,p参数指定置信水平,method参数指定计算方法,这里使用”historical”表示历史模拟法。

还有其他可选的方法,如”gaussian”(基于正态分布假设的参数法)等。

fPortfolio包专注于投资组合的优化和风险分析,也可以计算 VaR。

library(quantmod)
library(fPortfolio)
## Loading required package: fAssets
# 获取AAPL数据
getSymbols("AAPL")
## [1] "AAPL"
aapl_returns <- ROC(Cl(AAPL), type = "discrete")[-1]
# 设置置信水平
confidence_level <- 0.95
# 创建收益率的时间序列对象(fPortfolio包需要的格式)
aapl_ts <- xts(aapl_returns, order.by = index(aapl_returns))
# 使用fPortfolio包计算VaR
var_fPortfolio <- varRisk(aapl_ts,weights=1)
cat("使用fPortfolio包(历史模拟法)计算的VaR(", confidence_level * 100, "%置信水平):", var_fPortfolio, "\n")
## 使用fPortfolio包(历史模拟法)计算的VaR( 95 %置信水平): -0.02974

以上代码中:

使用PortfolioAnalytics::var函数计算 VaR,method指定为”historical”表示历史模拟法,p指定置信水平。同样,该函数也支持其他计算方法,如”gaussian”等。

2 其它书籍

  • 《quantmod:金融分析手册》