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

RiskPortfolios包求解maxdiv最优组合出现近0权重问题求助

极小权重出现的原因

  1. 数值计算层面:你看到的e-21级别的数值是二次规划求解过程中产生的浮点误差,本质上对应优化结果里的0权重,属于数值计算的正常现象,不是代码逻辑错误。
  2. 组合优化逻辑层面:当前求解的是最大分散化(maxdiv)组合,仅做多约束下,优化目标会自动筛掉对提升组合分散度没有贡献的资产。你使用的10个行业收益率数据中,第3、5、10个行业的协方差特征无法为组合带来分散化增益,因此被分配0权重,只残留了浮点误差级别的极小值。

解决方案

  • 方案一:截断后归一化
    如果可以接受部分资产权重为0,只需要剔除浮点误差的影响,对输出权重做截断处理后重新归一化即可保证权重和为1:
# 原有计算逻辑
library("RiskPortfolios")
data("Industry_10")
rets = Industry_10
Sigma = covEstimation(rets)
w = optimalPortfolio(Sigma = Sigma, control = list(type = 'maxdiv', constraint =  'lo'))

# 新增后处理逻辑
w[w < 1e-6] <- 0
w <- w / sum(w)
  • 方案二:设置最低权重约束
    如果要求所有资产都必须配置一定比例,可以在优化参数中添加lw参数设置每个资产的最低权重,如下示例要求每个资产至少配置1%:
w = optimalPortfolio(Sigma = Sigma, control = list(type = 'maxdiv', constraint =  'lo', lw = rep(0.01, ncol(Sigma))))

运行后所有资产的权重都会≥1%,不会出现接近0的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:04