《投资组合优化》PPT课件.ppt
第十二章 投资组合优化,Outline,矩阵求导简介优化知识允许卖空情况下的投资组合优化不允许卖空情况下的投资组合优化,矩阵求导的有关知识,数对向量求一阶导,假设X为列向量,存在函数f(X),其自变量为向量,因变量取值为标量定义n阶向量的一阶导数如下:其中Remark:scalar-valued function of a vector,又称梯度,数对向量求二阶导,假设X为列向量,存在函数f(X),其自变量为向量,因变量取值为标量定义n阶向量的二阶导数如下:其中Remark:scalar-valued function of a vector,又称海赛矩阵,n*n方阵,例子,假如,Matlab实现,Syms x1 x2X=x1 x2F=2*x1+3*x1*x2Dfdx=diff(F,x1);diff(F,x2)g1=jacobian(Dfdx,X),向量对向量求一阶导数,假设X为列向量,存在函数f(X),其自变量为向量,因变量取值也为向量f(X)的一阶导数如下:,Matlab实现,Syms s tV=s;tf=t2*log(s);s3*log(2+t)dfdx=jacobian(f,V),例子,假如,向量对向量求一阶导数,假设X为列向量,A为方阵 如果A为对称阵则,优化与投资组合理论,总结,数对列向量求导仍为列向量列向量对列向量求导为矩阵,主要内容,问题1:给定预期收益,最小化风险问题2:给定风险,最大化预期收益问题3:不考虑预期收益,最小化风险问题4:不考虑风险,最大化预期收益,问题1,给定预期收益时,最小化风险目标函数为二次型约束为线性约束当不允许卖空时,当限制了某个资产投资份额,给定投资权重的上下界,问题2,给定风险时,最大化收益目标函数为线性约束为非线性约束和线性约束,问题3,不考虑预期收益,最小化风险目标函数为二次型约束为线性约束,问题4,不考虑风险,最大化收益目标函数为线性约束为线性约束,允许卖空时投资组合优化,投资组合优化的数学表述,给定收益情况下风险最小化风险采用方差来衡量目标函数约束条件1约束条件2,投资组合优化,其中,w 为N支股票权重的列向量,e表示N支股票的N维期望收益率向量,I为N维单位向量,V为投资组合的方差协方差矩阵,以三维为例,投资组合优化,目标函数约束条件1约束条件2,投资组合优化的数学表述,第一步,写出矩阵形式的拉格朗日函数第二步,求解一阶条件Remark:第一个等式实际上可以展开n个,投资组合优化的数学表述,其中,0是三维零向量。由于V是正定矩阵,因此上述一阶条件也是全局优化的充分必要条件。由上述方程可得,投资组合优化的数学表述,由上述方程可得,拉格朗日乘子,投资组合优化的数学表述,由上述方程可求投资组合权重对应的方差,允许卖空情况下的权重求解,function wp,varp=meanvar(e,V,rp)%.求解投资组合权重%输入: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;,投资组合有效前沿,function out=graphmeanvar(price)%purpose:给定N个资产价格矩阵,根据Mean-variance模型确定投资权重,参考教材金融经济学基础 黄奇辅%输入:N种资产,M个观测值的价格矩阵,N*M矩阵%输出:每支资产的权重组成的列向量wpN,M=size(price);logprice=100*log(price);,投资组合有效前沿,%2.将原始价格数据转化为对数数据,并进一步转化为收益率数据logreturn=zeros(N-1,M);for j=1:M;logreturn(:,j)=logprice(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);endsigmap=varp.(0.5);plot(sigmap,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),允许卖空时投资组合权重图,不允许卖空时投资组合优化,投资组合优化的数学表述,给定收益情况下风险最小化风险采用方差来衡量目标函数约束条件1约束条件2约束条件3采用数值算法求解,二次规划的一般形式,Matlab的函数形式x=quadprog(H,f,A,b,Aeq,Beq),投资组合优化如何用Matlab二次优化函数,Matlab的函数形式x=quadprog(H,f,A,b,Aeq,Beq)以三个资产为例 H=V;f=zeros(M,1)=(0 0 0),x=w,投资组合优化如何用表示成二次优化函数,对应于如下两个约束条件,不允许卖空时投资组合优化,function out=shortmeanvar(price)%purpose:给定N个资产价格矩阵,根据Mean-variance模型确定投资权重%输入:N种资产,M个观测值的价格矩阵,N*M矩阵%输出:每支资产的权重组成的列向量wpN,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)Vrp=linspace(min(e),max(e),101);for i=1:101;wp(:,i),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,