投资组合优化模型:均值方差分析与无风险资产配置

发布于:2025-04-02 ⋅ 阅读:(18) ⋅ 点赞:(0)

摘要

本文系统解析投资组合优化问题,基于Markowitz均值方差理论构建数学模型。通过股票历史收益数据分析,演示如何利用Matlab求解二次规划问题,确定最优资产配置比例。重点讨论无风险资产引入后的模型扩展,验证分离定理的实际应用。结合具体案例,对比分析不同期望收益率下的风险变化趋势,揭示投资组合优化的核心逻辑。

1. 基本投资组合模型

1.1 问题背景

假设投资者在1955年需将资金分配于三种股票(A、B、C),要求年收益率至少15%。通过历史数据(表1)计算股票收益的均值、方差及协方差矩阵,构建均值方差优化模型。

表1 股票收益数据(1943-1954)
年份 股票A 股票B 股票C 股票指数
1943 1.300 1.225 1.149 1.258997
1944 1.103 1.290 1.260 1.197526
1954 1.176 1.715 1.908 1.526236

1.2 模型构建

决策变量 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3(投资比例)
目标函数:最小化方差(风险)
Minimize V = ∑ i = 1 3 ∑ j = 1 3 x i x j ⋅ Cov ( R i , R j ) \text{Minimize} \quad V = \sum_{i=1}^3 \sum_{j=1}^3 x_i x_j \cdot \text{Cov}(R_i, R_j) MinimizeV=i=13j=13xixjCov(Ri,Rj)

约束条件

  1. 资金全部分配: x 1 + x 2 + x 3 = 1 x_1 + x_2 + x_3 = 1 x1+x2+x3=1
  2. 期望收益约束: x 1 ⋅ E ( R 1 ) + x 2 ⋅ E ( R 2 ) + x 3 ⋅ E ( R 3 ) ≥ 0.15 x_1 \cdot E(R_1) + x_2 \cdot E(R_2) + x_3 \cdot E(R_3) \geq 0.15 x1E(R1)+x2E(R2)+x3E(R3)0.15

1.3 数据计算

通过历史数据计算得到:

  • 均值向量:
    E ( R ) = [ 0.0890833 , 0.2136667 , 0.2345833 ] E(R) = [0.0890833, 0.2136667, 0.2345833] E(R)=[0.0890833,0.2136667,0.2345833]
  • 协方差矩阵:
    COV = [ 0.01080754 0.01240721 0.01307513 0.01240721 0.05839170 0.05542639 0.01307513 0.05542639 0.09422681 ] \text{COV} = \begin{bmatrix} 0.01080754 & 0.01240721 & 0.01307513 \\ 0.01240721 & 0.05839170 & 0.05542639 \\ 0.01307513 & 0.05542639 & 0.09422681 \end{bmatrix} COV= 0.010807540.012407210.013075130.012407210.058391700.055426390.013075130.055426390.09422681

1.4 Matlab求解代码

% 读取数据
Mean = dlmread('data2.txt');
COV = dlmread('data3.txt');
% 预期收益率目标
TARGET = 0.15;
% 定义二次规划的参数
H = 2 * COV; % 二次项系数矩阵
f = zeros(size(Mean)); % 线性项系数向量
Aeq = ones(1, length(Mean)); % 等式约束系数矩阵
beq = 1; % 等式约束右侧常数
A = -Mean'; % 不等式约束系数矩阵
b = -TARGET; % 不等式约束右侧常数
lb = zeros(size(Mean)); % 变量下界
ub = []; % 变量上界
% 求解二次规划问题
options = optimoptions('quadprog','Display','iter');
X = quadprog(H, f, A, b, Aeq, beq, lb, ub, [], options);
% 输出结果
disp('最优投资比例:');
disp(X);
% 计算最小方差
min_variance = X' * COV * X;
disp(['最小方差: ', num2str(min_variance)]);
    

1.5 结果分析

最优解:

  • 股票A: 53%
  • 股票B: 36%
  • 股票C: 11%
  • 方差(风险): 0.02241378

2. 含无风险资产的投资组合

2.1 模型扩展

引入无风险资产(如国库券,收益率5%),模型变为:
Minimize V = ∑ i = 1 3 ∑ j = 1 3 x i x j ⋅ Cov ( R i , R j ) \text{Minimize} \quad V = \sum_{i=1}^3 \sum_{j=1}^3 x_i x_j \cdot \text{Cov}(R_i, R_j) MinimizeV=i=13j=13xixjCov(Ri,Rj)
约束条件新增:
x 1 + x 2 + x 3 + x 4 = 1 ( x 4 为无风险资产比例 ) x_1 + x_2 + x_3 + x_4 = 1 \quad (x_4 \text{为无风险资产比例}) x1+x2+x3+x4=1(x4为无风险资产比例)

2.2 分离定理验证

当期望收益率变化时,风险资产比例保持不变,仅无风险资产比例调整。例如:

  • 期望收益15%时,无风险资产占34.1%
  • 期望收益10%时,无风险资产占67.1%

2.3 Matlab代码对比

% 读取数据
Mean1 = dlmread('data2.txt');
COV1 = dlmread('data3.txt');
% 无风险资产的均值和协方差
risk_free_mean = 0.05;
risk_free_cov = 0;
% 预期收益率目标
TARGET = 0.15;
% 扩展均值向量和协方差矩阵
Mean = [Mean1; risk_free_mean];
n = length(Mean1);
COV = zeros(n + 1, n + 1);
COV(1:n, 1:n) = COV1;
% 定义二次规划的参数
H = 2 * COV; % 二次项系数矩阵
f = zeros(size(Mean)); % 线性项系数向量
Aeq = ones(1, length(Mean)); % 等式约束系数矩阵
beq = 1; % 等式约束右侧常数
A = -Mean'; % 不等式约束系数矩阵
b = -TARGET; % 不等式约束右侧常数
lb = zeros(size(Mean)); % 变量下界
ub = []; % 变量上界
% 求解二次规划问题
options = optimoptions('quadprog', 'Display', 'iter');
X = quadprog(H, f, A, b, Aeq, beq, lb, ub, [], options);
% 输出结果
disp('最优投资比例:');
disp(X);
% 计算最小方差
min_variance = X' * COV * X;
disp(['最小方差: ', num2str(min_variance)]);
    

3. 结果对比与讨论

3.1 风险-收益曲线

通过MATLAB参数分析(图1),发现当期望收益超过22%时,风险显著上升。

图1 投资回报率与风险关系
clc, clear
load data2.txt, load data3.txt
h = reshape(data3, [3,3]);
a = data2';
target = 0.09;
while target < 0.234
    [x, y] = quadprog(2*h, [], -a, -target, ones(1,3), 1, zeros(3,1));
    plot(target, y, '*b');
    target = target + 0.002;
end

3.2 实际应用建议

  • 保守型投资者:增加无风险资产比例
  • 激进型投资者:提高高收益股票配置
  • 动态调整:根据市场变化更新协方差矩阵

4. 总结

本文通过均值方差模型实现投资组合优化,验证了无风险资产的引入可有效降低风险,并通过分离定理简化配置决策。实际应用中需结合市场动态调整参数,平衡收益与风险。


网站公告

今日签到

点亮在社区的每一天
去签到