克隆成功是否进入此策略?

确定取消

基于R的量化投资(四):风险分析包PerformanceAnalytics

发布于2017-08-25 18:50 浏览 1701 评论 0 0 0 分享到:

本文对风险分析包PerformanceAnalytics进行详解。文章附有可在大宽网研究环境中运行的R源代码,读者可以一键复制,实践操作学习。

风险分析包PerformanceAnalytics是用于绩效归因和风险分析的计量经济学工具,具有强大的量化绩效指标计算和可视化功能。R语言回测框架的构建主要分为两个部分:一是交易过程回测,其侧重构建大数据批量回测系统;二是交易结果统计,该部分结合R的自带统计包,侧重评估各种系数。对于交易结果,只要是统计意义上的,风险分析包PerformanceAnalytics的支持非常强大,通过调用相关函数便可实现对该包的选择性功能集成。

一、PerformanceAnalytics包安装

基于基本的R环境,即可安装PerformanceAnalytics包:

  1. #安装PerformanceAnalytics包
  2. #install.packages("PerformanceAnalytics") #大宽网R研究环境已安装该包,用户可直接使用
  3. #Add PerformanceAnalytics package
  4. library(PerformanceAnalytics)

二、量化绩效指标计算和可视化

使用图/表函数展示资产

  • 使用图/表函数展示单个资产
  • 使用图/表函数展示多个资产收益,进行比较(或者与基准比较),以及资产风险度量

1、内建函数

  1. #Get Data
  2. data(managers)

2、最常用的橄榄图
累计收益(上)、收益的柱形图(中)、回撤(下)

  1. charts.PerformanceSummary(managers[, c(1, 7, 8)],
  2. colorset = rich6equal,
  3. lwd = 2, ylog = TRUE)

累计收益、月度收益和回撤图.png

3、箱线图
比较不同资产的分布

  1. chart.Boxplot(managers[1:60, c(1:8)],
  2. main = "Trailing 5-Year Returns")

比较不同资产的分布图.png

4、柱形图
资产的分布曲线(深蓝色)、正态分布(浅蓝色)、VaR(红线)

  1. layout(cbind(1, 2), c(3, 4))
  2. chart.Histogram(managers[, 1, drop = FALSE],
  3. main = "Plain", methods = NULL)
  4. chart.Histogram(managers[, 1, drop = FALSE],
  5. main = "Density", breaks = 40,
  6. methods = c("add.density", "add.normal"))
  7. chart.Histogram(managers[, 1, drop = FALSE],
  8. main = "Skew and Kurt", breaks = 40,
  9. methods = c("add.centered", "add.rug"))
  10. chart.Histogram(managers[, 1, drop = FALSE],
  11. main = "Risk Measures", breaks = 40,
  12. methods = c("add.risk"))

资产的分布图1.png

资产的分布图2.png

5、资产收益表现的相对比较

  1. chart.RelativePerformance(managers[, 1, drop = FALSE],
  2. managers[, 2:7, drop = FALSE],
  3. colorset = tim8equal[-1],
  4. lwd = 2, legend.loc = "topleft")

资产收益表现的相对比较图.png

6、亏损的风险度量

  1. #Downside Risk
  2. result <- table.DownsideRisk(managers[, 1:6],
  3. Rf = 0.04 / 12,
  4. MAR = 0.05 / 12)
  5. result <- t(result)
  6. textplot(format.df(result, na.blank = TRUE,
  7. numeric.dollar = FALSE,
  8. cdec = rep(3, dim(result)[2])),
  9. halign = "center", valign = "top",
  10. cex = 0.6, max.cex = 2,
  11. rmar = 0.8, cmar = 1.0,
  12. row.valign = "center",
  13. mar = c(0, 0, 3, 0) + 0.1,
  14. wrap.rownames = 15, wrap.colnames = 10)
  15. title(main = "Downside Risk Statistics")

亏损的风险度量.png

7、单因子模型相关统计量

  1. #Single Factor Model Related Statistics
  2. result <- table.SFM(managers[, 1:3],
  3. managers[, 8],
  4. Rf = managers[, 10])
  5. textplot(result, halign = "center", valign = "top",
  6. cex = 0.7, max.cex = 2,
  7. rmar = 0.8, cmar = 1.0,
  8. row.valign = "center",
  9. mar = c(0, 0, 3, 0) + 0.1,
  10. wrap.rownames = 17, wrap.colnames = 10)
  11. title(main="Single Factor Model Related Statistics")

单因子模型的相关统计量.png

PerformanceAnalytics包中的函数使用方式可以参见程序包用户手册《PerformanceAnalytics用户手册【见附件】,或者直接在R中通过help函数查看,如help(SharpeRatio)。
这里我们给出了一些PerformanceAnalytics包中的函数调用示例(详见【克隆研究】),可在大宽网R研究环境中直接运行。


回到教程:基于R的专业量化投资研究

0 个评论

发表评论