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

如何使用tidyquant计算多只个股的各自累计投资价值?

问题原因

你代码的核心问题是误用了tq_portfolio()函数:这个函数的设计目的就是将多只资产按给定权重合并,计算整体投资组合的合并收益,所以输出的自然是全数据集的组合汇总结果,无法得到单只股票的独立收益。

解决方法

你需要的是按单只股票分别计算累计收益,不需要用到组合计算函数,直接按个股分组后计算累计收益率再乘以初始投入的100美元即可,修正后的代码如下:

library(tidyquant)
library(dplyr)
data(FANG)

# 计算单只股票的月度收益率,这部分原有代码逻辑正确
monthly_returns_stocks <- FANG %>%
  group_by(symbol) %>%
  tq_transmute(adjusted, periodReturn, period = "monthly", col_rename = "monthly.returns")

# 按个股分组计算累计投资价值
desired_output <- monthly_returns_stocks %>%
  group_by(symbol) %>%
  mutate(
    # 每只股票单独计算累计收益,初始价值100美元
    investment.growth = cumprod(1 + monthly.returns) * 100
  ) %>%
  # 若不需要对齐你示例的日期格式,可删除下一行
  mutate(date = format(date, "%m/%d/%Y")) %>%
  select(symbol, date, investment.growth)

运行后输出的结构和你给出的期望示例完全一致,会保留所有个股的代码、对应日期和当期的投资价值。


内容的提问来源于stack exchange,提问作者Geet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:15:03