面向金融的R语言——Lecture9

面向金融的R语言——Lecture9

2018年11月27日 软微 金融信息服务 刘旭德 周慧文

收益率的计算

安装某个软件包

install.packages("packages_name") # 联网安装
install.packages("pach_to_packages") # 从本地路径安装软件包

载入某个软件包

library(my_packages)

利用 quantmod 软件获取 AAPL 一段时间内的股票行情

# 载入 quantmod 软件包
library(quantmod)
# 获取数据
getSymbols("AAPL", source = "YAHOO", 
           from = "2015-01-01", to = "2016-01-01")
# 第一行的数据 
AAPL[1, ]
# 对 AAPL 数据进行统计
str(AAPL)
length(time(AAPL))
# 数据的维数
dim(AAPL)
# 画时序图
chartSeries(AAPL)

时序图
![](E:\OneDrive - pku.edu.cn@坚果云盘\课件整理\Markdown笔记\插入图片\R_L9_01.png)

另一种方法来获取 AAPL 一段时间内的股票行情

# 如果没有安装 tseries 软件包, 还需要用 install 安装
library(tseries)
res <- get.hist.quote(instrument = "AAPL", 
                      start = "2015-01-01", end = "2018-01-01")
res
head(res)
# 将 res 数据复制到 dat2中
dat2 <- as.data.frame(res)
# 向 dat2 添加 data 列
dat2$data <- time(res)
head(dat2)

读写 csv 文件

dat1 <- as.data.frame(AAPL)
dat1$date <- time(AAPL)
# 查看纵坐标标头
colnames(dat1)
# 将 dat1 写入 AAPL.csv文件
write.csv(dat1, file = "AAPL.csv")
# 读取文件
AAPL2 <- read.csv("AAPL.csv")
dim(AAPL2)
AAPL2[1, ]
# 求该列的平均值 
mean(as.numeric(AAPL2$AAPL.Close))
# 画出收盘股价图
chartSeries(AAPL)

对股票的收益率进行对比

毛收益率: r ( t ) = s ( t ) / s ( t − 1 ) r(t) = s(t) / s(t - 1) r(t)=s(t)/s(t1)

简单收益率: r ( t ) = ( s ( t ) − s ( t − 1 ) ) / s ( t − 1 ) r(t) = (s(t) - s(t - 1))/s(t - 1) r(t)=(s(t)s(t1))/s(t1)

对数收益率: r ( t ) = l o g ( 1 + r ( t ) ) = l o g ( s ( t ) ) − l o g ( s ( t − 1 ) ) r(t) = log(1 + r(t)) = log(s(t)) - log(s(t - 1)) r(t)=log(1+r(t))=log(s(t))log(s(t1))

# 将收盘价提成一个一维数据 
AAPL.close <- as.numeric(AAPL2$AAPL.Close)
# 毛收益率
gross.returns <- AAPL.close[2:length(AAPL.close)]/AAPL.close[1:(length(AAPL.close) - 1)]
# 简单收益率
# diff 是求差分的意思
simple.returns <- diff(AAPL.close)/AAPL.close[1 : (length(AAPL.close) - 1)]
# 对数收益率
log.returns <- diff(log(AAPL.close))  
# 将三个收益率画到一张表上
par(mfcol = c(3, 1))
plot(gross.returns, xlab = "data", ylab = "gross returns", type = "l")
plot(simple.returns, xlab = "data", ylab = "simple returns", type = "l")
plot(log.returns, xlab = "data", ylab = "log returns", type = "l")
# 进行 t 检验
t.test(log.returns)

收益率对比图

1543050636418

债券价值及其模拟

债券贴现

不包括已经付过的利息

如果每年付息一次,求债券在某期的价值

# 定义一个求债券到期收益贴现的函数,每年支付一次 
# P 是 票面值, C 是每期支付的利息, r 是年利率,t是开始日期, T 是总期限 
BV_prime <- function(P, C, r, t, T){
  tmat <- T - t
  if (tmat != 0){
    i <- seq(1 ,tmat)
    sum(C / (1 + r)^i) + P/(1 + r)^(tmat)
  }else
    P/(1 + r)^(tmat)
  
}

# 票面价值是1000
# 每年付息 20
P <- 1000
C <- 20
# 求现值
BV_prime(P, C, 
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值