使用quantmod获取股价后如何计算收益率并添加至数据框(DF)
你可以通过以下两种方式基于已拿到的收盘价数据计算收益率,合并到原数据对象中:
方法1:内置函数批量计算(推荐)
quantmod依赖的TTR包自带ROC函数,可以直接对多列收盘价批量计算收益率,无需逐列处理:
# 加载TTR包(安装quantmod时会自动附带安装,无需重复安装) library(TTR) # 计算简单日收益率,na.pad=TRUE保留第一行的NA值 simple_ret <- ROC(history, type = "discrete", na.pad = TRUE) # 如需计算对数收益率,将type参数改为"continuous"即可 # 合并收益率到原数据 history_with_return <- cbind(history, simple_ret) # 重命名列方便区分 colnames(history_with_return) <- c("KO.Close", "AAPL.Close", "KO.SimpleReturn", "AAPL.SimpleReturn") # 可选操作:删除第一行的空值 history_with_return <- na.omit(history_with_return)
方法2:手动计算(适合理解原理)
简单收益率的计算公式为:当日收益率 = (当日收盘价 / 前一日收盘价) - 1,用lag函数获取前一期数据即可逐列计算:
# 逐列计算收益率并直接添加到history对象中 history$KO.SimpleReturn <- history$KO.Close / lag(history$KO.Close, 1) - 1 history$AAPL.SimpleReturn <- history$AAPL.Close / lag(history$AAPL.Close, 1) - 1
补充说明
- 计算得到的第一行收益率为NA是正常情况,因为没有对应前一交易日的收盘价做计算
- 如果需要计算周、月等其他周期的收益率,可以直接使用quantmod自带的
weeklyReturn()、monthlyReturn()函数处理单只股票数据
内容的提问来源于stack exchange,提问作者Mate Caliz
相关产品推荐
相关产品推荐

