1、Outline 矩阵求导简介 优化知识 允许卖空情况下的投资组合优化 不允许卖空情况下的投资组合优化矩阵求导的有关知识矩阵求导的有关知识数对向量求一阶导 假设X为列向量,存在函数f(X),其自变量为向量,因变量取值为标量 定义n阶向量的一阶导数如下: 其中 Remark:scalar-valued function of a vector,又称梯度11(,)nfXf x xx12nfffXfiiffx数对向量求二阶导 假设X为列向量,存在函数f(X),其自变量为向量,因变量取值为标量 定义n阶向量的二阶导数如下: 其中 Remark:scalar-valued function of a ve
2、ctor,又称海赛矩阵,n*n方阵12(,)nfXf x xx1112122122212nnnnnnfffffffX Xfff ijijffx x 例子 假如12112(,)23fXf x xxx x1212233fxxfxfXx12xXx20330fXfX XX Matlab实现 Syms x1 x2 X=x1 x2 F=2*x1+3*x1*x2 Dfdx=diff(F,x1);diff(F,x2) g1=jacobian(Dfdx,X)向量对向量求一阶导数假设X为列向量,存在函数f(X),其自变量为向量,因变量取值也为向量f(X)的一阶导数如下:12mfXfXfXfX11121212221
3、2nnmmmnfffffffXfffiijjffx12nxxXxMatlab实现 Syms s t V=s;t f=t2*log(s);s3*log(2+t) dfdx=jacobian(f,V)例子 假如12112(,)23fXf x xxx x1212233fxxfxfXx12xXx20330fXfX XX 向量对向量求一阶导数假设X为列向量,A为方阵 如果A为对称阵则AXAXX AXAA XX12mxxXx2X AXAXX111212122212mmmmmmaaaaaaAaaa优化与投资组合理论优化与投资组合理论总结总结 数对列向量求导仍为列向量 列向量对列向量求导为矩阵AXAAXX中为
4、列向量,X为列向量,则A为矩阵X AXAA XXX AXXAA X中为标量为列向量,也为列向量主要内容主要内容 问题1:给定预期收益,最小化风险 问题2:给定风险,最大化预期收益 问题3:不考虑预期收益,最小化风险 问题4:不考虑风险,最大化预期收益问题1 给定预期收益时,最小化风险 目标函数为二次型 约束为线性约束 当不允许卖空时, 当限制了某个资产投资份额,给定投资权重的上下界 VwwTw2/1minpTrEew1Tw01iwiiiLwU问题2 给定风险时,最大化收益 目标函数为线性 约束为非线性约束和线性约束 maxTww e1Tw2Tpw Vw问题3 不考虑预期收益,最小化风险 目标函
5、数为二次型 约束为线性约束 VwwTw2/1min1Tw问题4 不考虑风险,最大化收益 目标函数为线性 约束为线性约束 maxTww e1Tw允许卖空时投资组合优化允许卖空时投资组合优化投资组合优化的数学表述投资组合优化的数学表述 给定收益情况下风险最小化 风险采用方差来衡量 目标函数 约束条件1 约束条件2 VwwTw2/1minpTrEew1Tw投资组合优化其中,w 为N支股票权重的列向量,e表示N支股票的N维期望收益率向量,I为N维单位向量,V为投资组合的方差协方差矩阵,以三维为例 123wwww1111123eeee121221121313212223232131323233V 投资组
6、合优化 目标函数 约束条件1 约束条件22112131212321223223132332222221122331212131323231 2222ww Vwwwwwwwwww ww ww w112321 1223 33Tpew ewwwewew ew eE re1231111Twwww 投资组合优化的数学表述投资组合优化的数学表述 第一步,写出矩阵形式的拉格朗日函数 第二步,求解一阶条件 Remark:第一个等式实际上可以展开n个 TTpTwwewrEVwwL1)(2/1min.0010pTppTPLVwewLE rw eLw 投资组合优化的数学表述投资组合优化的数学表述 其中,0是三维零向
7、量。由于V是正定矩阵,因此上述一阶条件也是全局优化的充分必要条件。 由上述方程可得1111111VeVVeeVerEVeVwTTTTpp投资组合优化的数学表述投资组合优化的数学表述 由上述方程可得,拉格朗日乘子DrAEBDArCEpp投资组合优化的数学表述投资组合优化的数学表述 由上述方程可求投资组合权重 对应的方差11112TTTTAV ee VBe V eCVDBCA 11111()()1()()gB VIA V eDhC V eA VIDppwghE r2Tpppw Vw允许卖空情况下的权重求解允许卖空情况下的权重求解 function wp,varp=meanvar(e,V,rp) %
8、. 求解投资组合权重 %输入:e每个资产的预期收益率组成的收益率列向量 %输入:V 收益率的方差协方差矩阵 %输入:rp为投资组合的预期回报率 %输出: wp为投资组合权重,列向量 %输出: varp为投资组合的方差允许卖空情况下的权重求解允许卖空情况下的权重求解 M=length(e); I=ones(M,1); A=I*inv(V)*e; B=e*inv(V)*e; C=I*inv(V)*I; D=B*C-A2; g=(B*(inv(V)*I)-A*(inv(V)*e)/D; h=(C*(inv(V)*e)-A*(inv(V)*I)/D; wp=g+h*rp; varp=wp*V*wp;投
9、资组合有效前沿投资组合有效前沿 function out=graphmeanvar(price) %purpose:给定N个资产价格矩阵,根据Mean-variance模型确定投资权重,参考教材金融经济学基础 黄奇辅 %输入:N种资产,M个观测值的价格矩阵,N*M矩阵 %输出:每支资产的权重组成的列向量wp N,M=size(price); logprice=100*log(price);投资组合有效前沿投资组合有效前沿% 2. 将原始价格数据转化为对数数据,并进一步转化为收益率数据logreturn=zeros(N-1,M);for j=1:M;logreturn(:,j)= logpric
10、e(2: end,j) - logprice(1: end-1,j);end% 3. 求解收益率数据的均值向量与方差协方差矩阵e=mean(logreturn,1);%对应41页中公式(3.8.1) eV=cov(logreturn);%对应41页中公式(3.8.1) Vrp=linspace(min(e),max(e),101);varp=zeros(101,1);wp=zeros(M,101);投资组合有效前沿投资组合有效前沿 for i=1:101; wp(:,i),varp(i)=meanvar(e,V,rp(i); end sigmap=varp.(0.5); plot(sigmap
11、, rp,co); out.rp=rp; out.varp=varp; out.wp=wp; out.total=rp;varp;wp;投资组合有效前沿投资组合有效前沿 xlabel(标准差); % x轴注解 ylabel(收益率); % y轴注解 title(允许卖空条件下的投资组合前沿); % 图形标题允许卖空时投资组合的有效前沿允许卖空时投资组合的有效前沿load ma_port.mat;out=graphmeanvar(SH GH ZS)允许卖空时投资组合权重图允许卖空时投资组合权重图不允许卖空时投资组合优化不允许卖空时投资组合优化投资组合优化的数学表述投资组合优化的数学表述 给定收益
12、情况下风险最小化 风险采用方差来衡量 目标函数 约束条件1 约束条件2 约束条件3 采用数值算法求解 VwwTw2/1minpTrEew1Tw0iw二次规划的一般形式二次规划的一般形式 Matlab的函数形式x=quadprog(H,f,A,b,Aeq,Beq)min1/2. .TTx Hxf xstAxbAeqxbeqlbxub, , ,H A Aeqf b beq lb ubx其中为矩阵,和 为列向量投资组合优化如何用投资组合优化如何用Matlab二次优化函数二次优化函数 Matlab的函数形式x=quadprog(H,f,A,b,Aeq,Beq) 以三个资产为例 H=V; f=zeros
13、(M,1)=(0 0 0),x=w1122330100010010wwwAwwww 101010Ab 投资组合优化如何用表示成二次优化函数投资组合优化如何用表示成二次优化函数pTrEew 1212331111pwAeqwbeqweeeE rw 1231111pAeqbeqeeeE rAeq xbeq 对应于如下两个约束条件1Tw不允许卖空时投资组合优化不允许卖空时投资组合优化 function out=shortmeanvar(price) %purpose:给定N个资产价格矩阵,根据Mean-variance模型确定投资权重 %输入:N种资产,M个观测值的价格矩阵,N*M矩阵 %输出:每支资
14、产的权重组成的列向量wp N,M=size(price); logprice=100*log(price); % 2. 将原始价格数据转化为对数数据,并进一步转化为收益率数据 logreturn=diff(logprice);不允许卖空时投资组合优化不允许卖空时投资组合优化 % 3. 求解收益率数据的均值向量与方差协方差矩阵 e=mean(logreturn,1);%对应41页中公式(3.8.1) e,此时e为列向量 V=cov(logreturn);%对应41页中公式(3.8.1) V rp=linspace(min(e),max(e),101); for i=1:101; wp(:,i),
15、fval(i)=quadprog(V,zeros(M,1),-eye(M,M),zeros(M,1),ones(1,M);e,1;rp(i); end不允许卖空时投资组合优化不允许卖空时投资组合优化 sigmap=sqrt(2*fval); plot(sigmap, rp,co); out.rp=rp; out.wp=wp; xlabel(标准差); % x轴注解 ylabel(收益率); % y轴注解 title(不允许卖空条件下的投资组合前沿); % 图形标题不允许卖空时投资组合的有效前沿不允许卖空时投资组合的有效前沿load ma_port.mat;out=shortmeanvar(SH GH ZS)不允许卖空时投资组合权重图不允许卖空时投资组合权重图允许卖空时与不允许卖空时的比较允许卖空时与不允许卖空时的比较总结总结 采用矩阵形式会使表达式非常简洁,但在优化时会涉及到矩阵求导的知识 矩阵求导主要包括数对向量求导,向量对向量求导 数对向量求导为向量,向量对向量求导为矩阵 允许卖空条件下的投资组合优化 不允许卖空条件下的投资优化 谢谢! END