[关闭]
@fanxy 2020-03-29T08:22:02.000000Z 字数 9253 阅读 5280

第四讲 概率统计与资产收益率

樊潇彦 复旦大学经济学院 金融数据


0. 准备工作

下载数据:price.Rdata

  1. setwd("D:\\...\\Ch04") # 设定工作目录,注意为/或\\
  2. rm(list=ls()) # 清内存
  3. install.packages(c("MASS","Himsc","fBasics","mice","sm","mnormt"))
  4. ## 调用
  5. library(tidyverse)
  6. library(ggplot2)
  7. library(MASS)
  8. library(Himsc)
  9. library(fBasics)
  10. library(mice)
  11. library(sm)
  12. library(mnormt)

1. 概率统计基本概念

1.1 概率空间和概率

Source:Wiki term "Probability measure".

若函数 满足:

1.2 随机变量

1.3 样本统计量

是随机变量 个独立抽取的样本,常用的样本统计量(sample statistics)定义如下:

  1. 样本均值(sample mean):
  2. 样本方差/标准差(sample variance / standard deviation):
  3. 样本偏度(sample skewness):
  4. 样本峰度(sample kurtosis):

此外,假定 是随机变量 个独立抽取的样本,定义:

  1. 协方差(covariance):
  2. 相关系数(correlation coefficient):

注意:

1.4 统计推断

2. R语言实现

2.1 概率函数

四种前缀(以正态分布 为例):

课堂讨论:借用下图说明R命令的含义

  1. dnorm(2,0,1)
  2. pnorm(2,0,1)
  3. qnorm(1-0.05/2,0,1)
  4. rnorm(5,0,1)

  1. x <- seq(from = -5, to = 5, by = 0.01) # 横轴向量
  2. y <- dnorm(x) # 正态分布的概率密度函数
  3. plot(x=x,y=y, type="l",col="seagreen",lwd=2,
  4. xlab="x",ylab="density\ny = dnorm(x)")
  5. grid(col="darkgrey",lwd=2)
  6. title(main="概率分布(PDF)")
  7. y <- pnorm(x) # 正态分布的累积分布函数
  8. plot(x=x,y=y,type="l",col="seagreen",lwd=2, xlab="x = qnorm(y)",
  9. ylab="probability\ny = pnorm(x)") ; grid(col="darkgrey",lwd=2)
  10. title(main="累积分布(CDF)")
  11. set.seed(1)
  12. x <- rnorm(100, sd=3) # 模拟生成单变量
  13. y <- rnorm(100, mean=1) + x
  14. mn = apply(cbind(x,y), 2, mean) # 计算x和y的均值
  15. covmat= cov(cbind(x,y)) # 计算x和y的协方差
  16. simdata=rmnorm(300,mean=mn,varcov=covmat) # mnormt包中函数,模拟生成双变量
  17. ggplot(as.data.frame(simdata), aes(x=x, y=y)) +
  18. geom_point() +geom_smooth(method="lm") + theme_bw()

2.2 统计描述

  1. library(MASS)
  2. data(Insurance) # 调用保险数据
  3. str(Insurance) # 查看数据结构
  4. attach(Insurance) # 绑定数据
  1. # 1)连续变量
  2. mean(Holders) # 基本统计量,有缺失值时用 mean(Holders, na.rm = TRUE)
  3. median(Holders)
  4. sd(Holders)
  5. var(Holders)
  6. quantile(Holders) # 四分位值
  7. quantile(Holders,seq(0,1,0.1)) # 十分位值
  8. library(Hmisc)
  9. describe(data.frame(District, Group, Age)) # 简单数据描述
  10. describe(data.frame(Holders, Claims))
  11. library(fBasics)
  12. basicStats(data.frame(Holders, Claims)) # 更多统计量
  13. # 2)离散变量
  14. table(Age) # 离散变量频率表
  1. # 1)两个连续变量
  2. cor(data.frame(Holders, Claims),use="pairwise",method="pearson") # 相关系数
  3. cov(data.frame(Holders, Claims),use="pairwise",method="pearson") # 协方差矩阵
  4. # 2)一个连续变量和一个离散变量
  5. by(data.frame(Holders,Claims),Age,summary) # 按离散变量分组,对连续变量做统计描述
  6. # 3)两个离散变量
  7. table(District,Age) # 两个离散变量频率表
  8. detach(Insurance) # 解除绑定

2.3 统计推断

3. 应用

3.1 收益率基本概念

3.1.1 资产收益率

  1. 期简单净收益率(simple return)
  2. 期简单毛收益率(gross return)或复合收益率(compound return)
  3. 连续复合收益率(continuous compounding return) 或对数收益率(log-return)

注意:

  1. # 比较净收益率和对数收益率
  2. R <- seq(-0.2,0.2,len=100)
  3. data=data.frame(R, r=log(1+R))
  4. ggplot(data,aes(R,r)) +
  5. geom_line() +
  6. geom_abline(slope=1, intercept=0, color="red") +
  7. labs(title ="对数收益率(r)和简单净收益率(R)", x = "R", y = "r= log(1+R)") +
  8. theme_bw()

4.年化复合收益率


其他相关定义:

  1. ## 价格为不同数据类型,计算收益率
  2. # 1) 向量
  3. P <- c(265.50, 264.27, 266.49, 253.81, 269.20, 277.69, 301.22, 280.98, 312.64,
  4. 364.03, 393.62, 398.79)
  5. P[-length(P)] # P(1), P(2) ... P(T-1)
  6. P[-1] # P(2), P(3) ... P(T)
  7. R <- P[-1] / P[-length(P)] - 1 # R(t) = P(t+1)/P(t) -1
  8. R <- diff(P) / P[-length(P)] # [P(t+1) - P(t)]/P(t)
  9. r <- diff(log(P)) # r(t) = log(P(t+t)) - log(P(t))
  10. # 2) zoo 对象
  11. library(zoo)
  12. z <- zooreg(P, as.yearmon("2013-01"), freq = 12)
  13. R.z <- diff(z) / lag(z,-1) # 指定 lag=-1
  14. r.z <- diff(log(z))
  15. # 3) xts 对象
  16. library(xts)
  17. x <- as.xts(z)
  18. R.x <- diff(x) / lag(x) # 默认 lag=1
  19. r.x <- diff(log(x))
  20. # 4) timeSeries 对象
  21. library(timeSeries)
  22. r.ts= returns(P)
  23. # 比较上述计算结果,注意xts和timeSeries的第一期为NA
  24. comp= data.frame(r, r.z, r.x[-1], r.ts[-1]) # 四种结果列为数据框
  25. round(comp,3) # 保留3位小数

3.1.2 债券收益率

记债券价格为 、利息为、面值(par value)为

  1. 票面利率
  2. 当期收益率
  3. 到期收益率 (yield to maturity, YTM)

3.1.3 汇率升(贴)水率

  1. # 计算股票、债券、汇率的收益率
  2. library(quantmod)
  3. loadSymbols("AAPL") # 苹果股票
  4. loadSymbols("^TNX") # 10年期美国国债收益率
  5. loadSymbols("DEXUSEU",src="FRED") # 汇率,1欧元等于E美元
  6. # 如果无法直接下载,可通过 load("price.Rdata") 调用数据
  7. chartSeries(AAPL,theme="white",TA=NULL) # 股价,TA=NULL则不包括成交量
  8. AAPL.rtn=diff(log(AAPL$AAPL.Adjusted)) # 经调整的股价对数收益率
  9. chartSeries(AAPL.rtn,theme="white")
  10. chartSeries(TNX,theme="white")
  11. TNX.rtn=diff(TNX$TNX.Adjusted) # 债券收益率(%)的变化率
  12. chartSeries(TNX.rtn,theme="white")
  13. chartSeries(DEXUSEU,theme="white")
  14. USEU.rtn=diff(log(DEXUSEU$DEXUSEU)) # 汇率变化率
  15. chartSeries(USEU.rtn,theme="white")

3.2 资产收益率的特征事实

根据 Fan and Yao(2015) 资产收益率具有以下典型特征:

  1. # 以苹果的对数收益率为例
  2. x=as.data.frame(AAPL.rtn)[,1]
  3. # 或者用 Tsay(2013)中3M公司数据
  4. url="https://faculty.chicagobooth.edu/ruey.tsay/teaching/introTS/ch1data.zip"
  5. download.file(url, "ch1data.zip") # 下载存为同名文件
  6. x=read.table(unz("ch1data.zip","d-mmm-0111.txt"),header=T) # 读入数据
  7. x=x[,2] # 去掉日期
  8. # 1) 作图
  9. hist(x,nclass=30) # 直方图
  10. d1=density(x,na.rm=T) # 密度
  11. plot(d1$x,d1$y,xlab='rtn',ylab='density',type='l') # 密度线
  12. rangex=range(x,na.rm=T) # 取值范围
  13. seqx=seq(rangex[1],rangex[2],.001) # x轴间隔0.001
  14. y1=dnorm(seqx,mean(x,na.rm=T),stdev(x,na.rm=T)) # 正态分布
  15. lines(seqx,y1,lty=2) # 添加正态分布线
  16. # 2) 检验
  17. library(fBasics)
  18. basicStats(x)
  19. mean(x,na.rm=TRUE); var(x,na.rm=TRUE); stdev(x,na.rm=TRUE);
  20. t.test(x) # 均值检验 H0: x=0
  21. normalTest(x,method='jb',na.rm=T) # 正态分布检验,JB-test
  22. s3=skewness(x,na.rm =T)
  23. T=length(x)
  24. t3=s3/sqrt(6/T)
  25. pp=2*(1-pnorm(t3)) # 偏度检验(Skewness test)
  26. s4=kurtosis(x,na.rm =T)
  27. t4=s4/sqrt(24/T)
  28. pp=2*(1-pnorm(t4)) # 峰度检验(Kurtosis test)

参考文献

  1. 范剑青、姚琦伟著:The Elements of Financial Econometrics(计量金融精要),科学出版社,2015
  2. 黄文、王正林编著:《数据挖掘:R语言实战》,电子工业出版社,2014
  3. R.I. Kabacoff著:《R语言实战(第2版)》,王小宁、刘撷芯、黄俊文译,人民邮电出版社,2016
  4. R.S. Tsay著:《金融数据分析导论:基于R语言》,李洪成等译,机械工业出版社,2013
  5. Yollin, G.: R Programming for Quantitative Finance, Lecture Notes
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注