一、定義
如果規劃模型的目標函數是決策向量的二次函數,約束條件都是線性的,那么這個模型稱為二次規劃(QP)模型。二次規劃模型的一般形式為
?
二、性質
凸性判定準則
二次規劃問題的凸性完全由Hessian矩陣H決定:
??嚴格凸QP??:H正定(所有特征值>0),有唯一全局最優解
??凸QP??:H半正定(所有特征值≥0),可能有多個最優解
??非凸QP??:H不定,存在多個局部最優解
判定條件
二次規劃的最優解必須滿足??KKT條件??:
原始可行性??:x滿足所有約束條件
對偶可行性??:拉格朗日乘子非負
互補松弛條件??:乘子與約束的乘積為零
平穩性條件??:?f(x) + A?λ = 0
三、內點法求解
代碼
clear
clc%生成數據
%資產數量
nAssets = 5;
%生成收益率數據
returns = randn(100, nAssets);
%預期收益率
mu = mean(returns)';
%協方差矩陣
Sigma = cov(returns);
%目標收益率
targetReturn = 0.05; %構建QP參數
H = Sigma;
%無線性項
f = zeros(nAssets, 1);
%預算約束和收益約束、約束右端項
Aeq = [ones(1, nAssets); mu'];
beq = [1; targetReturn];
lb = zeros(nAssets, 1); %求解
[w, risk] = quadprog(H, f, [], [], Aeq, beq, lb);%繪圖
%創建圖形窗口
figure('Position', [100, 100, 800, 600]);%資產配置比例
h_bar = bar(w, 'FaceColor', 'flat'); % 使用彩色條形圖%添加數值標簽
for i = 1:length(w)text(i, w(i)+0.01, sprintf('%.2f%%', w(i)*100), ...'HorizontalAlignment', 'center', ...'FontSize', 10);
end
title('最優資產配置比例', 'FontSize', 12, 'FontWeight', 'bold');
xlabel('資產編號', 'FontSize', 10);
ylabel('配置比例', 'FontSize', 10);
grid on;
set(gca, 'XTick', 1:nAssets, 'XTickLabel', compose('資產%d',1:nAssets));
ylim([0, max(w)*1.2]);