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

求助:基于R实现瑞士投资者视角的每日滚动收益计算

解决瑞士投资者视角下的每日收益计算问题

我明白你的困扰了——这里的核心问题是滚动计算资产价值时用错了工具,lag()函数没办法直接实现你想要的累积滚动计算,我们需要用cumprod()(累积乘积)来完成这个任务。另外,两个数据集的日期格式不统一,这也是需要先解决的前提问题。

问题拆解与修正思路

  • 统一日期格式:你的汇率数据集是分年、月、日存储的,而股票数据集是YYYYMMDD的数字格式,必须先把它们转换成相同的Date类型,才能正确关联数据。
  • 计算美元资产的每日价值:初始投资1000美元,每日的资产价值应该是前一日价值 × (1+当日收益率),这正好是cumprod(1+Share1)的作用——它会计算从第一天开始的累积收益倍数,再乘以初始本金就是每日的美元资产总值。
  • 转换为瑞郎价值:用每日美元资产价值 × 当日汇率,得到瑞士投资者视角下的资产价值。
  • 计算瑞郎日收益率:用当日瑞郎价值与前一日的差值,除以前一日价值再乘以100,得到百分比收益率,这里可以用lag()来获取前一日的值。

修正后的完整函数

library(tidyverse)

myCHFreturn <- function(stock_data, exchange_data) {
  # 第一步:统一日期格式
  cleaned_exchange <- exchange_data %>%
    mutate(Date = ymd(paste(Date, Mon, Day, sep = "-"))) %>% # 合并年/月/日为标准Date类型
    select(Date, Exchangerate)
  
  cleaned_stock <- stock_data %>%
    mutate(Date = ymd(Date)) # 将YYYYMMDD数字转为标准Date类型
  
  # 第二步:关联数据并计算各项指标
  result <- cleaned_stock %>%
    right_join(cleaned_exchange, by = "Date") %>%
    filter(!is.na(Share1)) %>% # 只保留有股票收益的有效日期
    arrange(Date) %>% # 确保日期按时间顺序排列(cumprod依赖正确的顺序)
    mutate(
      # 计算每日美元资产价值:初始1000美元 × 累积收益倍数
      usd_value = 1000 * cumprod(1 + Share1),
      # 转换为瑞郎资产价值
      chf_value = usd_value * Exchangerate,
      # 计算瑞郎日收益率(百分比形式)
      chf_return_perc = (chf_value - lag(chf_value)) / lag(chf_value) * 100
    )
  
  return(result)
}

代码关键部分解释

  • 日期统一:用ymd()函数把不同格式的日期都转换成标准Date类型,保证right_join能精准匹配同一日期的数据。
  • cumprod(1 + Share1):这个函数会逐行计算累积乘积,比如第一天是1+Share1[1],第二天是(1+Share1[1])*(1+Share1[2]),以此类推,乘以初始的1000美元就得到了每日的美元资产价值,完美实现滚动计算逻辑。
  • 收益率计算:lag(chf_value)会获取前一行的瑞郎资产价值,用当日值减去前日值再除以前日值,就得到了当日的收益率百分比,符合常规的收益计算逻辑。

示例验证(用你提供的样例数据)

股票数据2000-01-04的收益率是-0.03778,对应汇率1.03456:

  • 当日美元价值:1000 × (1-0.03778) = 962.22
  • 当日瑞郎价值:962.22 × 1.03456 ≈ 995.48

股票数据2000-01-05的收益率是0.02154,对应汇率1.03200:

  • 当日美元价值:962.22 × (1+0.02154) ≈ 983.05
  • 当日瑞郎价值:983.05 × 1.03200 ≈ 1014.51
  • 当日瑞郎收益率:(1014.51 - 995.48)/995.48 ×100 ≈ 1.91%

这个计算逻辑完全符合瑞士投资者的视角,从初始1000美元开始,每日跟踪资产的瑞郎价值和收益率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:09:38