You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:18:00