ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

2线性规划模型建模实战

2线性规划模型建模实战

线性规划模型建模实战(投资组合优化案例)笔记

一、案例背景与目标

1.1 投资场景设定

  • 市场存在 n种可投资资产Sᵢ(i=1,2,...,n),需用大额资金M进行一期投资;
  • 资产核心参数(示例):
    资产Sᵢ 平均收益率rᵢ 风险损失率qᵢ 交易费率pᵢ 最低交易定额uᵢ(元)
    S₁ - - - 103
    S₂ 21% 1.5% 2% 198
    S₃ 23% 5.5% 4.5% -
    S₄ 25% 2.6% 6.5% 40
  • 无风险参考:同期银行定期利率 r₀=5%(几乎无风险)。

1.2 核心目标

双目标优化:

  1. 最大化净收益;
  2. 最小化总风险。

二、符号规定与基本假设

2.1 符号定义(建模基础)

  • Sᵢ:第i种投资项目(如股票、债券);
  • rᵢ:Sᵢ的平均收益率;
  • qᵢ:Sᵢ的风险损失率(衡量单资产风险);
  • pᵢ:Sᵢ的交易费率;
  • uᵢ:Sᵢ的最低交易定额(低于此金额按uᵢ算费率);
  • xᵢ:投资于Sᵢ的资金金额;
  • α:投资风险度(可接受的最大风险上限);
  • Q:总收益风险度(需最小化的指标);
  • M:总投资资金(数额极大)。

2.2 关键假设(简化建模场景)

  1. 资金规模假设:M极大,投资到各资产的金额通常>uᵢ(简化交易费计算);
  2. 风险度量假设:总风险用“所有资产中最大风险”度量(避免风险值超100%的不合理情况);
  3. 收益分散假设:投资越分散,总收益越小;
  4. 参数固定假设:投资期内rᵢ、qᵢ、pᵢ均固定,不受其他因素干扰;
  5. 净收益影响假设:净收益仅由rᵢ、pᵢ、xᵢ决定,与其他无关。

三、核心计算:交易费与净收益

3.1 交易费计算(分段函数)

  • 当xᵢ ≤ uᵢ时:交易费 = pᵢ × uᵢ(按最低定额收费);
  • 当xᵢ > uᵢ时:交易费 = pᵢ × xᵢ(按实际金额收费);
  • 简化处理:因M极大,xᵢ通常>uᵢ,交易费直接按“pᵢ × xᵢ”计算。

3.2 净收益计算

  • 单资产净收益 =(平均收益率 - 交易费率)× 投资金额 = (rᵢ - pᵢ) × xᵢ
  • 总净收益 = Σ[(rᵢ - pᵢ) × xᵢ](需最大化)。

四、核心方法:多目标规划转线性规划

原问题为多目标规划(最大化收益+最小化风险),需转化为单目标线性规划求解,3种核心转化思路:

转化方法 核心思路 适用场景
固定风险边界 1. 设定可接受的风险度α;
2. 约束条件:qᵢ×xᵢ/M ≤ α(所有i);
3. 目标:最大化净收益
已知投资者风险承受能力(如“最多接受0.6%风险”)
固定盈利水平 1. 设定最低盈利目标k;
2. 约束条件:总净收益 ≥ k;
3. 目标:最小化总风险
投资者有明确收益底线(如“净收益≥20%”)
引入偏好系数 1. 设定偏好系数λ(0≤λ≤1,λ越大越重视收益);
2. 目标函数:max [λ×总收益 - (1-λ)×总风险]
投资者对风险和收益有明确偏好

五、模型构建与求解(以“固定风险边界”为例)

5.1 目标函数(适配Matlab linprog

linprog仅支持最小化,需对总净收益加负号转化:
min Z = -Σ[(rᵢ - pᵢ) × xᵢ]

5.2 约束条件

  1. 风险约束qᵢ×xᵢ/M ≤ α(所有i,控制总风险不超可接受上限);
  2. 资金约束Σ[(1 + pᵢ)×xᵢ] = M(总投资金额+总交易费=总资金M);
  3. 非负约束xᵢ ≥ 0(投资金额不能为负)。

5.3 求解步骤

  1. 设定α范围:α从0开始,每次递增0.001,直至α=0.5(覆盖合理风险区间);
  2. 循环求解:对每个α,用linprog求解线性规划,得到最优xᵢ(各资产投资金额)和对应最优收益;
  3. 结果记录:整理不同α下的最优收益,用于后续分析。

六、结果分析与投资建议

6.1 风险与收益规律

  • 总体趋势:风险度α越高,净收益越高(符合“高风险高收益”原则);
  • 关键拐点(实战结果):
    1. 第一个拐点(α≈0.006/0.6%)
      • 拐点左侧(α<0.006):风险小幅上升→收益快速增长(“风险性价比最高”区间);
      • 拐点右侧(α>0.006):风险上升→收益增长放缓;
    2. 第二个拐点(α≈0.025/2.5%)
      • 拐点右侧(α>0.025):风险继续上升→收益几乎无变化(“风险无效区间”)。

6.2 投资建议

  • 无风险偏好投资者:选择α≈0.006,对应净收益约20%(低风险+高性价比);
  • 中等风险承受者:α控制在0.006~0.025之间(平衡风险与收益);
  • 所有投资者:α建议不超过0.025(避免进入“风险无效区间”)。

七、编程注意事项(Matlab linprog

  1. 约束符号处理:若约束为“≥”(如固定盈利目标),需对约束两边加负号,转化为“≤”;
  2. 上下限设置:仅需下限(如xᵢ≥0)时,上限ub设为空([]);仅需上限时,下限lb设为空;
  3. 目标函数符号:需“最大化”目标时,必须对目标函数加负号(适配linprog的最小化逻辑);
  4. 矩阵格式:约束条件需整理为A×x ≤ b的矩阵形式,符合linprog输入要求。

八、课后作业(线性规划实战)

某厂生产3种产品,每种产品需经A、B两道工序加工,已知工序产能、产品利润等参数,构建线性规划模型求解“最优生产计划”(目标:最大化总利润),课下完成建模与求解,后续讲解。

返回列表