金融统计

风险回报权衡

​ 风险回报权衡即Risk-Return Trade-Off。这里我们用过去的股票和债券数据的表现进行比较。

​ 其中的数据来源::F-F_Research_Data_Factors.txt

​ 下载网站:http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html

Step1:数据导入

#读取文件
FF.raw <- read.fwf(file="F-F_Research_Data_Factors.txt", widths=c(6,8,8,8,8),skip=4)
head(FF.raw)
      V1       V2       V3       V4       V5
1 192607     2.96    -2.56    -2.43     0.22
2 192608     2.64    -1.17     3.82     0.25
3 192609     0.36    -1.40     0.13     0.23
4 192610    -3.24    -0.09     0.70     0.32
5 192611     2.53    -0.10    -0.51     0.31
6 192612     2.62    -0.03    -0.05     0.28
#获取最后几行数据
tail(FF.raw)
         V1       V2       V3       V4       V5
1248   2018    -6.95    -3.21    -9.73     1.83
1249   2019    28.28    -6.10   -10.34     2.15
1250   2020    23.66    13.17   -46.57     0.45
1251   2021    23.56    -3.92    25.57     0.04
1252   <NA>     <NA>     <NA>     <NA>     <NA>
1253 Copyri ght 2022  Kenneth  R. Fren       ch

Step2:数据处理

​ 由于文件后面包含汇总的年度数据,这是我们不需要的,所以需要删除。

FF.raw<-FF.raw[-1154:-1253,]
#命名
names(FF.raw)<-paste(c("text.date","RmxRf","SMB","HML","Rf"))
head(FF.raw)
  text.date    RmxRf      SMB      HML       Rf
1    192607     2.96    -2.56    -2.43     0.22
2    192608     2.64    -1.17     3.82     0.25
3    192609     0.36    -1.40     0.13     0.23
4    192610    -3.24    -0.09     0.70     0.32
5    192611     2.53    -0.10    -0.51     0.31
6    192612     2.62    -0.03    -0.05     0.28
tail(FF.raw)
     text.date    RmxRf      SMB      HML       Rf
1148    202202    -2.29     2.23     3.04     0.00
1149    202203     3.05    -1.60    -1.80     0.01
1150    202204    -9.46    -1.41     6.19     0.01
1151    202205    -0.34    -1.85     8.41     0.03
1152    202206    -8.43     2.09    -5.97     0.06
1153    202207     9.56     2.78    -4.08     0.08
#显示内部结构
str(FF.raw)
'data.frame':  1153 obs. of  5 variables:$ text.date: chr  "192607" "192608" "192609" "192610" ...$ RmxRf    : chr  "    2.96" "    2.64" "    0.36" "   -3.24" ...$ SMB      : chr  "   -2.56" "   -1.17" "   -1.40" "   -0.09" ...$ HML      : chr  "   -2.43" "    3.82" "    0.13" "    0.70" ...$ Rf       : chr  "    0.22" "    0.25" "    0.23" "    0.32" ...
FF.raw<-FF.raw[,c(-1,-3,-4)]
#将数据数值化并计算
FF.raw$RmxRf<-as.numeric(as.character(FF.raw$RmxRf))/100
FF.raw$Rf<-as.numeric(as.character(FF.raw$Rf))/100
FF.raw$date<-seq(as.Date("1926-07-01"),as.Date("2022-07-01"),by="months")
FF.raw[c(1:3,nrow(FF.raw)),]
      RmxRf     Rf       date
1    0.0296 0.0022 1926-07-01
2    0.0264 0.0025 1926-08-01
3    0.0036 0.0023 1926-09-01
1153 0.0956 0.0008 2022-07-01
str(FF.raw)
'data.frame':  1153 obs. of  3 variables:$ RmxRf: num  0.0296 0.0264 0.0036 -0.0324 0.0253 0.0262 -0.0006 0.0418 0.0013 0.0046 ...$ Rf   : num  0.0022 0.0025 0.0023 0.0032 0.0031 0.0028 0.0025 0.0026 0.003 0.0025 ...$ date : Date, format: "1926-07-01" "1926-08-01" "1926-09-01" "1926-10-01" ...

Step3:计算原始市场回报量

​ 数据给出了超额市场回报率,即市场回报率减去无风险利率,我们需要的是原始的市场回报。

FF.raw$Rm<-FF.raw$RmxRf+FF.raw$Rf
FF.raw[c(1:3,nrow(FF.raw)),]
      RmxRf     Rf       date     Rm
1    0.0296 0.0022 1926-07-01 0.0318
2    0.0264 0.0025 1926-08-01 0.0289
3    0.0036 0.0023 1926-09-01 0.0059
1153 0.0956 0.0008 2022-07-01 0.0964

Step4:子集数据

FF<-subset(FF.raw,FF.raw$date>="1963-12-01" & FF.raw$date<="2013-12-31")
FF[c(1:3,nrow(FF)),]
      RmxRf     Rf       date     Rm
450  0.0183 0.0029 1963-12-01 0.0212
451  0.0224 0.0030 1964-01-01 0.0254
452  0.0154 0.0026 1964-02-01 0.0180
1050 0.0281 0.0000 2013-12-01 0.0281

Step5:市场总回报率和无风险利率

FF$Gross.Rm<-1+FF$Rm
FF$Gross.Rm[1]<-1
FF$Gross.Rf<-1+FF$Rf
FF$Gross.Rf[1]<-1
FF[c(1:3,nrow(FF)),]
      RmxRf     Rf       date     Rm Gross.Rm Gross.Rf
450  0.0183 0.0029 1963-12-01 0.0212   1.0000   1.0000
451  0.0224 0.0030 1964-01-01 0.0254   1.0254   1.0030
452  0.0154 0.0026 1964-02-01 0.0180   1.0180   1.0026
1050 0.0281 0.0000 2013-12-01 0.0281   1.0281   1.0000

Step6:市场累计收益和无风险利率

FF$cum.Rm<-cumprod(FF$Gross.Rm)
FF$cum.Rf<-cumprod(FF$Gross.Rf)
FF[c(1:3,nrow(FF)),]
      RmxRf     Rf       date     Rm Gross.Rm Gross.Rf     cum.Rm    cum.Rf
450  0.0183 0.0029 1963-12-01 0.0212   1.0000   1.0000   1.000000  1.000000
451  0.0224 0.0030 1964-01-01 0.0254   1.0254   1.0030   1.025400  1.003000
452  0.0154 0.0026 1964-02-01 0.0180   1.0180   1.0026   1.043857  1.005608
1050 0.0281 0.0000 2013-12-01 0.0281   1.0281   1.0000 124.745642 12.099660

Step7:数据可视化

#获取最大最小值
y.range<-range(FF$cum.Rm,FF$cum.Rf);y.range
[1]   1.0000 124.7456
par(mfrow=c(1,1))
title1<-"Stock vs. Bond Returns"
title2<-"1964 to 2013"
plot(x=FF$date,FF$cum.Rm,type="l",xlab="Date",ylab="Value of $1 Investment ($)",ylim=y.range,main=paste(title1,"\n",title2))
lines(x=FF$date,y=FF$cum.Rf,lty=2)
legend("topleft",c("Stocks (2013 Ending Value: $124.89)","Bonds (2013 Ending Value: $12.10)"),lty=c(1,2))

​ 根据图中结果可以看出,股票的一美元投资价值总体大于债券投资价值,但是债券的价值显示为逐步增长,而股票的波动率较大。

Step8:绘制股票和债券收益图

#最大最小值
y.range<-range(FF$Rm,FF$Rf);y.range
[1] -0.2264  0.1661
title1<-"Volatility of Stock vs. Bond Returns"
title2<-"1964 to 2013"
plot(x=FF$date,FF$Rm,type="l",xlab="Date",ylab="Returns (%)",ylim=y.range,col="gray50",main=paste(title1,"\n",title2))
lines(x=FF$date,y=FF$Rf)
abline(h=0)
legend("topleft",c("Stocks","Bonds"),lty=c(1,2))

【金融统计】R语言风险回报权衡。风险回报权衡即Risk-Return Trade-Off。这里我们用过去的股票和债券数据的表现进行比较。相关推荐

  1. R语言ggplot2可视化可视化聚类图、使用geom_encircle函数绘制多边形标定属于同一聚类簇的数据点、并自定义每个聚类簇数据点的颜色、多边形框的颜色(Cluster Plot)、主副标题题注

    R语言ggplot2可视化可视化聚类图.使用geom_encircle函数绘制多边形标定属于同一聚类簇的数据点.并自定义每个聚类簇数据点的颜色.多边形框的颜色(Cluster Plot).主副标题题注 ...

  2. R语言机器学习Caret包(Caret包是分类和回归训练的简称)、数据划分、数据预处理、模型构建、模型调优、模型评估、多模型对比、模型预测推理

    R语言机器学习Caret包(Caret包是分类和回归训练的简称).数据划分.数据预处理.模型构建.模型调优.模型评估.多模型对比.模型预测推理 目录

  3. R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据、单的黑白主题theme_bw主题(theme)、默认的主题(theme)可视化数据

    R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据.单的黑白主题theme_bw主题(theme).默认的主题(theme)可视化数据 目录

  4. R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数

    R语言head函数和tail函数获取dataframe.列表list.向量vector的头部和尾部数据:tail提取数据对象的尾部数据.head提取数据对象的头部数据.默认6条数据.自定义设置返回条数 ...

  5. R语言Kaplan-Meier绘制生存分析、Log-rank假设检验、Cox回归曲线实战案例:恶性黑色素瘤的术后数据生存分析

    R语言Kaplan-Meier绘制生存分析.Log-rank假设检验.Cox回归曲线实战案例:恶性黑色素瘤的术后数据生存分析 目录

  6. R语言dplyr包as.tbl函数(转化为tibble类型)和is.tbl函数(检查数据是否为tibble类型)实战

    R语言dplyr包as.tbl函数(转化为tibble类型)和is.tbl函数(检查数据是否为tibble类型)实战 目录

  7. R语言使用fmsb包可视化基本雷达图(radar chart、蜘蛛图spider plot)、数据预处理(计算每个变量的最大值和最小值、并合并到原数据集)、可视化单个数据对象的雷达图

    R语言使用fmsb包可视化基本雷达图(radar chart.蜘蛛图spider plot).数据预处理(计算每个变量的最大值和最小值.并合并到原数据集).可视化单个数据对象的雷达图 目录

  8. R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据

    接上一篇用R语言爬取中国天气网单个城市的7天实时天气预报数据,这篇文章综合一下,使用R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据,这里的步数跨度可能有点长,但思路确实是3 ...

  9. R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据

    R语言常用线性模型特征筛选(feature selection)技术实战 目录 R语言常用线性模型特征筛选(feature selection)技术实战

最新文章

  1. Go 学习笔记(74)— Go 标准库之 unsafe
  2. 如何遍历字符串中的单词?
  3. 使用Sencha Designer来快速开发web用户界面 -- 初识Designer
  4. 计算机网络-信道的极限容量
  5. Ipython中如何输入汉字
  6. Yurt-Tunnel 详解|如何解决 K8s 在云边协同下的运维监控挑战
  7. 2017.9.18 数颜色 思考记录
  8. 35款非常有创意的透明名片设计作品
  9. tcpip网络编程 尹圣雨源码_网络编程——学习笔记
  10. 【干货】Kaggle 数据挖掘比赛经验分享
  11. 链接在HTML的英文,html超链接学习(适于初学者)(国外英文资料).doc
  12. CString类简介
  13. ThinkPHP中create()方法自动验证表单信息
  14. postgresql 数据库连接数查询
  15. 如何免费下载百度文库、豆丁网等网站的文档
  16. 搞懂PDCA循环,学会闭环思维
  17. 面向AMD64的文件xxx与项目的目标平台x86不兼容
  18. Ionic4.x ion-refresher 下拉更新
  19. noip赛后【微笑】
  20. 使用win10自带录屏软件录制视频

热门文章

  1. php短信接口 案例,php短信接口在美容会所中的运用案例
  2. Win系统 U盘安装Ubuntu16.04 双系统 legacy 与 uefi模式 换软件源
  3. JAVA 基础(第二十六天)同步锁
  4. creo扫描混合编辑起点
  5. 李辰AE+C4D基础到精通教程
  6. 这就是冒泡排序,像可乐中的气泡滋滋向上冒一样(44)
  7. 抖音查举报记录?解密抖音查被举报记录灰产
  8. VEX EDR V4 主控器和电机
  9. PDF编辑之添加页码以及去掉水印
  10. 微软让人工智能看图写故事写出惊悚故事