第 33 篇
数学规划简介
量化课堂第 33 篇(postId=3293,作者肖睿,编辑宏观经济算命师,难度进阶上、深度 level-0,2016-10-18 上线,v1.1 于 2016-11-08 修正逻辑问题)。数学工具组的「总纲」:把「在资源与条件限制下最大化/最小化某个目标」这件量化里天天做的事,整理成标准格式与问题分类(线性/二次/凸/非线性规划),为后续两篇(第 34 篇线搜索、第 35 篇拉格朗日乘子)和组合优化(MPT,第 22/23 篇)铺语法。素材见 raw/collections/jq-quant-classroom/33-33-数学规划简介md.md。
这是什么
一篇纯概念的总览文(不涉及任何理论与算法)。它给数学规划(mathematical programming,又名数学优化)定标准形式、教你怎么把 max/≥/等式统统折算成统一格式、再按「函数长什么样」把问题分成四类并说明各类的难度。它的直接落点:资产配置问题——「本金 100、最坏损失不超 10、最大化预期收益」就是一个标准的线性规划。
核心要点
数学规划的标准形式
- 一般形式:最小化 f(x),满足 cᵢ(x) ≤ bᵢ(i=1…k),x ∈ Rⁿ。
- 角色分工:f 是目标函数(objective);cᵢ(x) ≤ bᵢ 是约束(constraint);所有满足约束的点的集合 Ω 叫可行区域(feasible region)。
资产配置的完整例子(贯穿全文)
- 两资产:资产 1 平均年收益 10%、最坏亏 20%;资产 2 平均 5%、最坏亏 5%。均可无限拆分。本金 100。
- 目标:最坏损失不超过 10(本金的 10%),最大化预期收益。
- 设 x₁、x₂ 是投在两类资产上的净值。预期收益 f = 0.1x₁ + 0.05x₂(要最大化)。
- 约束一(不超本金):x₁ + x₂ ≤ 100。约束二(最坏损失可控):0.2x₁ + 0.05x₂ ≤ 10。
- 矩阵写法:最大化 [0.1 0.05]·[x₁;x₂],满足 [[1,1],[0.2,0.05]]·[x₁;x₂] ≤ [100;10]。
格式折算技巧(为什么标准格式能装下一切问题)
- 最大化 f(x) = 最小化 −f(x)(最优解相同,只差符号)。
- ≥ 约束:cᵢ(x) ≥ bᵢ 等价于 −cᵢ(x) ≤ −bᵢ。
- 等式约束:cᵢ(x) = bᵢ 等价于「cᵢ(x) ≤ bᵢ 且 −cᵢ(x) ≤ −bᵢ」两个不等式交集。
- 写具体问题时爱用什么格式都行;统一标准格式只为了方便整体研究优化理论。
四类问题(包含关系,不是并列)
- 线性规划(LP):f 与所有 cᵢ 都是线性函数。矩阵形式:最小化 cᵀx、满足 Ax ≤ b。线性函数结构强(「直线从哪里看都一样」),所有 LP 都能在多项式时间内找到最优解。上面资产配置的例子就是 LP。
- 二次规划(QP):最小化 ½xᵀQx + cᵀx、满足 Ax ≤ b;Q 是对称矩阵。难度取决于 Q:Q 正定(特征值全 >0)→ 多项式时间可解;Q 不定(有 <0 的特征值)→ 一般是 NP-难的。任何 LP 都是 QP(把 Q 设成零矩阵)。
- 凸规划(convex programming):先有凸函数——对任意 x、x′ 和 λ∈[0,1],f(λx+(1−λ)x′) ≤ λf(x)+(1−λ)f(x′)。直观:函数图像上任意两点的连线不跑到图像下方。若 f 与所有 cᵢ 都凸 → 凸规划。好处用「圆珠滚动」类比:凸函数里圆珠一路滚到全局最低点;不凸的函数会停在局部低点。但很多凸规划问题仍是 NP-难的。QP 若 Q 半正定则是凸规划;Q 不定则二次目标不是凸函数。
- 非线性规划(NLP):f 与 cᵢ 都连续。类别名「有点名不副实」——LP 其实也是 NLP,只是太简单不需要 NLP 理论,「非」字指「线性以外的问题」。覆盖面极广,很多未解数学难题都能写成 NLP → 研究时一般加额外条件(f 可导/光滑、导数 Lipschitz、可行域凸等)。其余所有类别都是它的子类。
结语口径
- 本篇只给分类不给算法;后续量化课堂文章讲各类的理论、解题算法与应用。
机制 / 论证
- 为什么按「函数形状」分类:四类不是并列,而是(很大程度上)包含关系。小类别问题少、但结构一致、有高效通用算法;大类能装的问题多、结构差、更难解。分类 = 预告「该用什么档位的算法」。
- 为什么 QP 的难度挂在 Q 上:二次项 xᵀQx 的好坏由矩阵 Q 决定。Q 正定(特征值全正)时二次曲面是「碗」,容易找底;Q 不定时曲面有鞍点/脊,全局最优难找——复杂度随特征值符号跳档。
- 为什么凸性让人乐观却不能打包票:凸保证「局部低点即全局低点」(圆珠滚到底),所以找局部极小就够了;但约束与维度的复杂度仍可能让问题 NP-难——「凸 ≠ 简单」。
- 组合优化为什么是数学规划:MPT 的「固定收益、最小化方差」(第 22/23 篇)恰好是 QP(Σ 半正定 → 凸),这就是「组合优化的通用语言」落在实处的例子。
可操作
- 把现实问题改写成数学规划的口诀:先问「决策变量是什么」(资产配置里是各资产的买入额 xᵢ)→ 写目标(收益等)→ 列约束(资金上限、风险上限)→ 归并成标准形式。
- 资产配置的两类最常用约束(原文预告,落地在 MPT 与组合优化):Σwᵢ=1(权重合计 1)、wᵢ≥0(不许做空)、wᵢ≤1/3 之类的单资产上限。
- 判断问题难度(自查顺序):目标与约束全线性 → LP(好解);有二次项 → 看 Q 是否(半)正定;全凸 → 至少「局部=全局」;其他 → NLP,大概率要上数值方法并加光滑性假设。
- 数学工具组三篇的用途链:本篇 = 把问题说清楚;第 34 篇 = 无约束问题的数值解法(线搜索);第 35 篇 = 等式约束问题的改写(拉格朗日乘子 → 转回无约束)。MPT 的解析解(第 23 篇)就是「拉格朗日 + 二次结构」直接算出来的。
术语
- 数学规划 / 数学优化:在约束下最大化或最小化目标的研究分支。
- 目标函数 / 约束 / 可行区域:要优化的函数 / 限制条件 / 满足所有约束的点集。
- 线性规划(LP)、二次规划(QP)、凸规划、非线性规划(NLP):按目标与约束函数形状划分的四类问题(含包含关系)。
- 凸函数:图像上任意两点连线不低于图像的函数(圆珠能滚到全局最低点)。
- 正定 / 半正定 / 不定矩阵:特征值全 >0 / ≥0 / 有正有负的对称矩阵;决定 QP 难度。
- NP-难:没有已知多项式时间算法的一类问题(规模一大就几乎不可精确解)。
不确定 / 待验证
- 本篇 level-0、零算法;各分类的严格定义域(如凸规划还需约束集合凸等细节)只到口头级别,严谨谱系未展开。
- 「很多凸规划 NP-难」没有给具体例子或证明;LP「多项式时间可解」也没给算法(单纯形/内点)——都是断言级别。
- 资产配置例子的收益/损失数字(10%/20%、5%/5%)是示意值,不是真实市场数据;「可无限拆分」「可买 ½ 个或 e^π/(1+√5) 个」是模型假设,A 股一手 100 股的现实约束不在本文。
- 本篇没有量化(回测/策略)代码;正文为纯数学介绍,作者 2016 年预告的后续算法文即第 34/35 篇(本库已收录)。
相关
- 数学规划(优化问题与分类) — 数学规划共享概念页(本篇分类 + 与 MPT/求解工具的关系)
- MPT 模型 — MPT = 一个组合优化问题(第 22 篇,postId=1991)
- MPT 模型的解析解(上) — 用本篇的凸性与分类写 MPT 的解析解(第 23 篇)
- 无约束非线性规划:线搜索方法 — 无约束 NLP 的数值解法(第 34 篇)
- 拉格朗日乘子 — 等式约束问题的改写工具(第 35 篇)
- 聚宽量化课堂(低频量化策略 43 篇) — 量化课堂 43 篇总览
更新 2026-09-06