基于线性规划的“最优投资组合”的马科维茨均值-方差模型与二次规划求解示例
字数 4617 2025-12-18 21:38:15

基于线性规划的“最优投资组合”的马科维茨均值-方差模型与二次规划求解示例

题目描述
假设有一位投资者,他有一笔资金,打算投资于n种不同的资产(例如股票、债券等)。每种资产i都有一个期望收益率r_i,并且资产之间的收益率是相关的,其协方差矩阵为Σ(一个n×n的对称半正定矩阵,其中元素σ_ij表示资产i和j收益率之间的协方差)。投资者的目标是:在给定一个期望的最低投资组合收益率R_min的前提下,如何分配资金到各种资产上,使得投资组合的整体风险(用收益率的方差来衡量)最小化?同时,投资必须满足资金全部用完(即权重之和为1)且不允许卖空(即投资比例非负)。这个问题就是经典的马科维茨均值-方差投资组合优化模型。我们将展示如何将其建模为一个二次规划问题,并利用线性规划的对偶理论或内点法(通过求解对应的KKT系统)来求解。

解题过程循序渐进讲解

1. 决策变量定义
我们首先定义决策变量。设总资金为1个单位(方便计算),投资到资产i上的资金比例为x_i。那么:

  • \(x_i \geq 0\) 对所有i=1,...,n(不允许卖空)。
  • \(\sum_{i=1}^{n} x_i = 1\)(资金全部分配)。
    向量形式:令 \(\mathbf{x} = (x_1, x_2, ..., x_n)^T\) 为投资权重向量。

2. 目标函数:投资组合风险
投资组合的收益率是一个随机变量,其方差(即风险)为:

\[\text{方差} = \sum_{i=1}^{n} \sum_{j=1}^{n} x_i x_j \sigma_{ij} = \mathbf{x}^T \Sigma \mathbf{x} \]

其中Σ是协方差矩阵,是对称且通常为正定(或半正定)。我们的目标是最小化这个方差。

3. 约束条件

  • 预算约束:权重之和为1,即 \(\sum_{i=1}^{n} x_i = 1\),可写为 \(\mathbf{1}^T \mathbf{x} = 1\),其中 \(\mathbf{1}\) 是全1向量。
  • 收益率约束:投资组合的期望收益率至少为R_min。投资组合的期望收益率是各资产期望收益率的加权平均:\(\sum_{i=1}^{n} r_i x_i = \mathbf{r}^T \mathbf{x} \geq R_{min}\),其中 \(\mathbf{r} = (r_1, r_2, ..., r_n)^T\)
  • 非负约束\(x_i \geq 0\) 对所有i。

4. 二次规划模型
综上,我们得到如下二次规划问题:

\[\begin{aligned} \min_{\mathbf{x}} \quad & \mathbf{x}^T \Sigma \mathbf{x} \\ \text{subject to} \quad & \mathbf{r}^T \mathbf{x} \geq R_{min} \\ & \mathbf{1}^T \mathbf{x} = 1 \\ & \mathbf{x} \geq 0 \end{aligned} \]

这是一个凸二次规划问题(因为Σ是半正定矩阵,目标函数是凸函数),因此有唯一全局最小值(在可行域非空且Σ正定时严格凸)。

5. 求解方法:利用KKT条件转化为线性系统
对于凸二次规划,最优解满足KKT(Karush-Kuhn-Tucker)条件。我们引入拉格朗日乘子:

  • 对于收益率约束 \(\mathbf{r}^T \mathbf{x} \geq R_{min}\),引入乘子 \(\mu \geq 0\)
  • 对于等式约束 \(\mathbf{1}^T \mathbf{x} = 1\),引入乘子 \(\lambda\)(符号可正可负)。
  • 对于非负约束 \(\mathbf{x} \geq 0\),引入乘子 \(\mathbf{s} \geq 0\)(松弛变量),并写成 \(x_i \geq 0\) 对应的互补松弛条件。

拉格朗日函数为:

\[L(\mathbf{x}, \mu, \lambda, \mathbf{s}) = \mathbf{x}^T \Sigma \mathbf{x} - \mu (\mathbf{r}^T \mathbf{x} - R_{min}) - \lambda (\mathbf{1}^T \mathbf{x} - 1) - \mathbf{s}^T \mathbf{x} \]

KKT条件包括:

  1. 平稳性条件:梯度关于 \(\mathbf{x}\) 为零。

\[\frac{\partial L}{\partial \mathbf{x}} = 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} = 0 \]

即:

\[2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} = \mathbf{s} \quad \text{且} \quad \mathbf{s} \geq 0 \]

  1. 原始可行性:原始约束成立。

\[\mathbf{r}^T \mathbf{x} \geq R_{min}, \quad \mathbf{1}^T \mathbf{x} = 1, \quad \mathbf{x} \geq 0 \]

  1. 对偶可行性\(\mu \geq 0, \mathbf{s} \geq 0\)
  2. 互补松弛条件

\[\mu (\mathbf{r}^T \mathbf{x} - R_{min}) = 0, \quad \text{且对每个} i: s_i x_i = 0 \]

互补松弛意味着:如果收益率约束不是紧的(即 \(\mathbf{r}^T \mathbf{x} > R_{min}\)),则 \(\mu = 0\);如果 \(x_i > 0\),则对应的 \(s_i = 0\)

6. 化为线性互补问题(LCP)并求解
我们可以将KKT条件重写为寻找 \(\mathbf{x}, \mu, \lambda, \mathbf{s}\) 使得:

\[\begin{cases} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} = \mathbf{s} \\ \mathbf{r}^T \mathbf{x} \geq R_{min}, \quad \mu \geq 0, \quad \mu (\mathbf{r}^T \mathbf{x} - R_{min}) = 0 \\ \mathbf{1}^T \mathbf{x} = 1 \\ \mathbf{x} \geq 0, \quad \mathbf{s} \geq 0, \quad x_i s_i = 0 \ \forall i \end{cases} \]

这可以看作一个线性互补问题(LCP)。由于问题凸且可行域通常有内点,我们可以用内点法(如路径跟踪法)直接求解这个KKT系统,或者利用对偶理论转化为一个等价的二次规划对偶问题来解。

7. 实际求解步骤(以使用内点法求解KKT系统为例)
我们可以将上述KKT条件整理成如下混合线性方程组和互补条件:
引入松弛变量 \(t = \mathbf{r}^T \mathbf{x} - R_{min} \geq 0\),则互补条件为 \(\mu t = 0\)。将平稳性条件与原始约束结合,得到扩展系统:

\[\begin{aligned} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} &= 0 \\ \mathbf{r}^T \mathbf{x} - t &= R_{min} \\ \mathbf{1}^T \mathbf{x} &= 1 \\ t &\geq 0, \ \mu \geq 0, \ \mu t = 0 \\ \mathbf{x} &\geq 0, \ \mathbf{s} \geq 0, \ x_i s_i = 0 \end{aligned} \]

内点法通过引入一个中心参数(barrier parameter)将互补松弛条件 \(\mu t = 0\)\(x_i s_i = 0\) 松弛化,然后通过牛顿法迭代求解一系列扰动方程,逐步逼近最优解。具体地,在每次迭代中,我们求解以下线性系统(牛顿方向):

\[\begin{bmatrix} 2\Sigma & -\mathbf{r} & -\mathbf{1} & 0 & -I \\ \mathbf{r}^T & 0 & 0 & -1 & 0 \\ \mathbf{1}^T & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ S & 0 & 0 & 0 & X \end{bmatrix} \begin{bmatrix} \Delta \mathbf{x} \\ \Delta \mu \\ \Delta \lambda \\ \Delta t \\ \Delta \mathbf{s} \end{bmatrix} = - \begin{bmatrix} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} \\ \mathbf{r}^T \mathbf{x} - t - R_{min} \\ \mathbf{1}^T \mathbf{x} - 1 \\ \mu t - \sigma \nu \\ X S \mathbf{1} - \sigma \mu_e \mathbf{1} \end{bmatrix} \]

其中 \(X = \text{diag}(x_1,...,x_n)\), \(S = \text{diag}(s_1,...,s_n)\),σ是中心参数,ν是互补间隙的度量,\(\mu_e\) 是平均互补乘积。通过迭代更新解,直到满足收敛条件。

8. 结果解释
求解后得到最优权重向量 \(\mathbf{x}^*\),此时投资组合的最小风险(方差)为 \((\mathbf{x}^*)^T \Sigma \mathbf{x}^*\),对应的实际收益率为 \(\mathbf{r}^T \mathbf{x}^*\)(通常等于R_min,除非R_min低于可能的最小收益率)。投资者可以根据此权重分配资金。

小结
这个例子展示了如何将投资组合选择问题建模为凸二次规划,并利用KKT条件将其转化为一个线性互补系统,进而用内点法求解。该方法能高效求解大规模资产配置问题,是现代投资组合理论的基石。

基于线性规划的“最优投资组合”的马科维茨均值-方差模型与二次规划求解示例 题目描述 : 假设有一位投资者,他有一笔资金,打算投资于n种不同的资产(例如股票、债券等)。每种资产i都有一个期望收益率r_ i,并且资产之间的收益率是相关的,其协方差矩阵为Σ(一个n×n的对称半正定矩阵,其中元素σ_ ij表示资产i和j收益率之间的协方差)。投资者的目标是:在给定一个期望的最低投资组合收益率R_ min的前提下,如何分配资金到各种资产上,使得投资组合的整体风险(用收益率的方差来衡量)最小化?同时,投资必须满足资金全部用完(即权重之和为1)且不允许卖空(即投资比例非负)。这个问题就是经典的 马科维茨均值-方差投资组合优化模型 。我们将展示如何将其建模为一个二次规划问题,并利用线性规划的对偶理论或内点法(通过求解对应的KKT系统)来求解。 解题过程循序渐进讲解 : 1. 决策变量定义 我们首先定义决策变量。设总资金为1个单位(方便计算),投资到资产i上的资金比例为x_ i。那么: \( x_ i \geq 0 \) 对所有i=1,...,n(不允许卖空)。 \( \sum_ {i=1}^{n} x_ i = 1 \)(资金全部分配)。 向量形式:令 \( \mathbf{x} = (x_ 1, x_ 2, ..., x_ n)^T \) 为投资权重向量。 2. 目标函数:投资组合风险 投资组合的收益率是一个随机变量,其方差(即风险)为: \[ \text{方差} = \sum_ {i=1}^{n} \sum_ {j=1}^{n} x_ i x_ j \sigma_ {ij} = \mathbf{x}^T \Sigma \mathbf{x} \] 其中Σ是协方差矩阵,是对称且通常为正定(或半正定)。我们的目标是最小化这个方差。 3. 约束条件 预算约束 :权重之和为1,即 \( \sum_ {i=1}^{n} x_ i = 1 \),可写为 \( \mathbf{1}^T \mathbf{x} = 1 \),其中 \( \mathbf{1} \) 是全1向量。 收益率约束 :投资组合的期望收益率至少为R_ min。投资组合的期望收益率是各资产期望收益率的加权平均:\( \sum_ {i=1}^{n} r_ i x_ i = \mathbf{r}^T \mathbf{x} \geq R_ {min} \),其中 \( \mathbf{r} = (r_ 1, r_ 2, ..., r_ n)^T \)。 非负约束 :\( x_ i \geq 0 \) 对所有i。 4. 二次规划模型 综上,我们得到如下二次规划问题: \[ \begin{aligned} \min_ {\mathbf{x}} \quad & \mathbf{x}^T \Sigma \mathbf{x} \\ \text{subject to} \quad & \mathbf{r}^T \mathbf{x} \geq R_ {min} \\ & \mathbf{1}^T \mathbf{x} = 1 \\ & \mathbf{x} \geq 0 \end{aligned} \] 这是一个凸二次规划问题(因为Σ是半正定矩阵,目标函数是凸函数),因此有唯一全局最小值(在可行域非空且Σ正定时严格凸)。 5. 求解方法:利用KKT条件转化为线性系统 对于凸二次规划,最优解满足KKT(Karush-Kuhn-Tucker)条件。我们引入拉格朗日乘子: 对于收益率约束 \( \mathbf{r}^T \mathbf{x} \geq R_ {min} \),引入乘子 \( \mu \geq 0 \)。 对于等式约束 \( \mathbf{1}^T \mathbf{x} = 1 \),引入乘子 \( \lambda \)(符号可正可负)。 对于非负约束 \( \mathbf{x} \geq 0 \),引入乘子 \( \mathbf{s} \geq 0 \)(松弛变量),并写成 \( x_ i \geq 0 \) 对应的互补松弛条件。 拉格朗日函数为: \[ L(\mathbf{x}, \mu, \lambda, \mathbf{s}) = \mathbf{x}^T \Sigma \mathbf{x} - \mu (\mathbf{r}^T \mathbf{x} - R_ {min}) - \lambda (\mathbf{1}^T \mathbf{x} - 1) - \mathbf{s}^T \mathbf{x} \] KKT条件包括: 平稳性条件 :梯度关于 \( \mathbf{x} \) 为零。 \[ \frac{\partial L}{\partial \mathbf{x}} = 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} = 0 \] 即: \[ 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} = \mathbf{s} \quad \text{且} \quad \mathbf{s} \geq 0 \] 原始可行性 :原始约束成立。 \[ \mathbf{r}^T \mathbf{x} \geq R_ {min}, \quad \mathbf{1}^T \mathbf{x} = 1, \quad \mathbf{x} \geq 0 \] 对偶可行性 :\( \mu \geq 0, \mathbf{s} \geq 0 \)。 互补松弛条件 : \[ \mu (\mathbf{r}^T \mathbf{x} - R_ {min}) = 0, \quad \text{且对每个} i: s_ i x_ i = 0 \] 互补松弛意味着:如果收益率约束不是紧的(即 \( \mathbf{r}^T \mathbf{x} > R_ {min} \)),则 \( \mu = 0 \);如果 \( x_ i > 0 \),则对应的 \( s_ i = 0 \)。 6. 化为线性互补问题(LCP)并求解 我们可以将KKT条件重写为寻找 \( \mathbf{x}, \mu, \lambda, \mathbf{s} \) 使得: \[ \begin{cases} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} = \mathbf{s} \\ \mathbf{r}^T \mathbf{x} \geq R_ {min}, \quad \mu \geq 0, \quad \mu (\mathbf{r}^T \mathbf{x} - R_ {min}) = 0 \\ \mathbf{1}^T \mathbf{x} = 1 \\ \mathbf{x} \geq 0, \quad \mathbf{s} \geq 0, \quad x_ i s_ i = 0 \ \forall i \end{cases} \] 这可以看作一个线性互补问题(LCP)。由于问题凸且可行域通常有内点,我们可以用内点法(如路径跟踪法)直接求解这个KKT系统,或者利用对偶理论转化为一个等价的二次规划对偶问题来解。 7. 实际求解步骤(以使用内点法求解KKT系统为例) 我们可以将上述KKT条件整理成如下混合线性方程组和互补条件: 引入松弛变量 \( t = \mathbf{r}^T \mathbf{x} - R_ {min} \geq 0 \),则互补条件为 \( \mu t = 0 \)。将平稳性条件与原始约束结合,得到扩展系统: \[ \begin{aligned} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} &= 0 \\ \mathbf{r}^T \mathbf{x} - t &= R_ {min} \\ \mathbf{1}^T \mathbf{x} &= 1 \\ t &\geq 0, \ \mu \geq 0, \ \mu t = 0 \\ \mathbf{x} &\geq 0, \ \mathbf{s} \geq 0, \ x_ i s_ i = 0 \end{aligned} \] 内点法通过引入一个中心参数(barrier parameter)将互补松弛条件 \( \mu t = 0 \) 和 \( x_ i s_ i = 0 \) 松弛化,然后通过牛顿法迭代求解一系列扰动方程,逐步逼近最优解。具体地,在每次迭代中,我们求解以下线性系统(牛顿方向): \[ \begin{bmatrix} 2\Sigma & -\mathbf{r} & -\mathbf{1} & 0 & -I \\ \mathbf{r}^T & 0 & 0 & -1 & 0 \\ \mathbf{1}^T & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ S & 0 & 0 & 0 & X \end{bmatrix} \begin{bmatrix} \Delta \mathbf{x} \\ \Delta \mu \\ \Delta \lambda \\ \Delta t \\ \Delta \mathbf{s} \end{bmatrix} \begin{bmatrix} 2\Sigma \mathbf{x} - \mu \mathbf{r} - \lambda \mathbf{1} - \mathbf{s} \\ \mathbf{r}^T \mathbf{x} - t - R_ {min} \\ \mathbf{1}^T \mathbf{x} - 1 \\ \mu t - \sigma \nu \\ X S \mathbf{1} - \sigma \mu_ e \mathbf{1} \end{bmatrix} \] 其中 \( X = \text{diag}(x_ 1,...,x_ n) \), \( S = \text{diag}(s_ 1,...,s_ n) \),σ是中心参数,ν是互补间隙的度量,\( \mu_ e \) 是平均互补乘积。通过迭代更新解,直到满足收敛条件。 8. 结果解释 求解后得到最优权重向量 \( \mathbf{x}^* \),此时投资组合的最小风险(方差)为 \( (\mathbf{x}^ )^T \Sigma \mathbf{x}^ \),对应的实际收益率为 \( \mathbf{r}^T \mathbf{x}^* \)(通常等于R_ min,除非R_ min低于可能的最小收益率)。投资者可以根据此权重分配资金。 小结 : 这个例子展示了如何将投资组合选择问题建模为凸二次规划,并利用KKT条件将其转化为一个线性互补系统,进而用内点法求解。该方法能高效求解大规模资产配置问题,是现代投资组合理论的基石。