基于线性规划的“最优投资组合”的马科维茨均值-方差模型与二次规划求解示例
题目描述:
假设有一位投资者,他有一笔资金,打算投资于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条件将其转化为一个线性互补系统,进而用内点法求解。该方法能高效求解大规模资产配置问题,是现代投资组合理论的基石。