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

如何在CVXPY投资组合优化中设置行业权重上限约束?

投资组合行业权重上限优化实现

需要在现有均值-方差投资组合优化模型中,添加**单个行业权重上限30%**的约束,即任一行业在组合中的总占比不得超过0.3。以下是修改后的实现代码:

import numpy as np
import cvxpy as cp

np.random.seed(1)
mu = np.abs(np.random.randn(10, 1))
Sigma = np.random.randn(10, 10)
Sigma = Sigma.T.dot(Sigma)

w = cp.Variable(10)
sector = ['A','A','B','C','B','A','C','A','B','A']

gamma = cp.Parameter(nonneg=True)
ret = mu.T @ w
risk = cp.quad_form(w, Sigma)

# 添加单个行业权重不超过30%的约束
sector_constraints = []
unique_sectors = list(set(sector))
for s in unique_sectors:
    # 筛选当前行业对应的资产索引
    sector_asset_indices = [idx for idx, sec in enumerate(sector) if sec == s]
    # 约束该行业所有资产的权重总和 ≤ 0.3
    sector_constraints.append(cp.sum(w[sector_asset_indices]) <= 0.3)

# 整合所有约束并定义优化问题
prob = cp.Problem(
    cp.Maximize(ret - gamma * risk),
    [cp.sum(w) == 1, w >= 0] + sector_constraints
)

关键说明

  • 先提取所有唯一的行业类别,遍历每个行业筛选对应资产的索引
  • 对每个行业,计算其下所有资产权重的总和,添加总和不超过0.3的约束
  • 将行业约束与原有的「权重和为1」「权重非负」约束合并,构成完整的优化约束条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:42:41