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

对数收益率分布转算术收益率异常:均值与标准差偏差问题排查

问题定位与修正方案

你的核心问题出在年化对数收益率的计算逻辑错误,以及模拟时的尺度混淆,导致转换后的算术收益率和直接计算结果偏差过大。

错误点拆解

  1. 年化对数收益率计算错误
    你用table.AnnualizedReturns(..., geometric = TRUE)得到的是年化几何收益率,而非年化对数收益率的均值。当传入月度对数收益率时,geometric = TRUE的计算逻辑是exp(mean(Monthly_Log_Returns)*12) - 1,这是几何年化收益,不是我们需要的对数收益率年化均值(正确值应为colMeans(Monthly_Log_Returns)*12)。

  2. 模拟尺度混淆
    你直接模拟了年化对数收益率,再转换为年化算术收益率,但如果你的对比基准是「月度算术收益率年化」,两者的统计维度不匹配。正确的做法应该是先模拟月度对数收益率,转换为月度算术收益率后再做年化处理。

修正后的R代码

# 1. 计算月度对数收益率的均值和协方差(原始月度尺度)
monthly_mu_log <- colMeans(Monthly_Log_Returns)
monthly_sigma_log <- cov(Monthly_Log_Returns)

# 2. 模拟月度对数收益率,转换为月度算术收益率
sim_monthly_log <- MASS::mvrnorm(200000, mu = monthly_mu_log, Sigma = monthly_sigma_log)
sim_monthly_arith <- exp(sim_monthly_log) - 1

# 3. 计算模拟的月度算术收益率的均值和方差,再年化
sim_annual_arith_mean <- colMeans(sim_monthly_arith) * 12
sim_annual_arith_var <- var(sim_monthly_arith) * 12  # 简单年化方差(若考虑复利则需另算)

# 4. 和直接计算的月度算术收益率年化结果对比
direct_annual_arith_mean <- colMeans(Monthly_Arith_Returns) * 12
direct_annual_arith_var <- var(Monthly_Arith_Returns) * 12

补充说明

如果确实需要直接从年化对数收益率转换为年化算术收益率,需遵循理论公式:

年化算术收益率 ≈ 年化对数收益率 + 0.5 * 年化对数收益率的方差

用代码验证的话,正确的年化对数收益率均值应该是colMeans(Monthly_Log_Returns)*12,而非table.AnnualizedReturns的结果,修正后再模拟就能和直接计算的结果匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:23:21