Dear all,
currently I am trying to implement the Ledoit Wolf shrinkage factor Portfolio optimization.
As of now I alway get the following error message "Undefined function or variable 'shrink'."
I have tryied several srink.m files availabe online. However non works for my code.
Could you please help me how to solve that issue. The code is attached.
Many thanks in advance for your help.
Best regards,
Philipp
% Ledoit-Wolf shrinkage factor portfolio optimization
t = size(InSampleData,1);
n = size(InSampleData,2);
meanx = mean(InSampleData);
x = InSampleData-meanx(ones(t,1),:);
% compute sample covariance matrix
sample=(1/t).*(x'*x);
% compute prior
var=diag(sample);
sqrtvar=sqrt(var);
rBar=(sum(sum(sample./(sqrtvar(:,ones(n,1)).*sqrtvar(:,ones(n,1))')))-n)/(n*(n-1));
prior=rBar*sqrtvar(:,ones(n,1)).*sqrtvar(:,ones(n,1))';
prior(logical(eye(n)))=var;
% compute weight vector
if (nargin < 2 || shrink == -1) % compute shrinkage parameters and constant
% what we call pi-hat
y=x.^2;
phiMat=y'*y/t - 2*(x'*x).*sample/t + sample.^2;
phi=sum(sum(phiMat));
% what we call rho-hat
term1=((x.^3)'*x)/t;
help = x'*x/t;
helpDiag=diag(help);
term2=helpDiag(:,ones(n,1)).*sample;
term3=help.*var(:,ones(n,1));
term4=var(:,ones(n,1)).*sample;
thetaMat=term1-term2-term3+term4;
thetaMat(logical(eye(n)))=zeros(n,1);
rho=sum(diag(phiMat))+rBar*sum(sum(((1./sqrtvar)*sqrtvar').*thetaMat));
% what we call gamma-hat
gamma=norm(sample-prior,'fro')^2;
% compute shrinkage constant
kappa=(phi-rho)/gamma;
shrinkage=max(0,min(1,kappa/t));
else % use specified constant
shrinkage=shrink;
currently I am trying to implement the Ledoit Wolf shrinkage factor Portfolio optimization.
As of now I alway get the following error message "Undefined function or variable 'shrink'."
I have tryied several srink.m files availabe online. However non works for my code.
Could you please help me how to solve that issue. The code is attached.
Many thanks in advance for your help.
Best regards,
Philipp
% Ledoit-Wolf shrinkage factor portfolio optimization
t = size(InSampleData,1);
n = size(InSampleData,2);
meanx = mean(InSampleData);
x = InSampleData-meanx(ones(t,1),:);
% compute sample covariance matrix
sample=(1/t).*(x'*x);
% compute prior
var=diag(sample);
sqrtvar=sqrt(var);
rBar=(sum(sum(sample./(sqrtvar(:,ones(n,1)).*sqrtvar(:,ones(n,1))')))-n)/(n*(n-1));
prior=rBar*sqrtvar(:,ones(n,1)).*sqrtvar(:,ones(n,1))';
prior(logical(eye(n)))=var;
% compute weight vector
if (nargin < 2 || shrink == -1) % compute shrinkage parameters and constant
% what we call pi-hat
y=x.^2;
phiMat=y'*y/t - 2*(x'*x).*sample/t + sample.^2;
phi=sum(sum(phiMat));
% what we call rho-hat
term1=((x.^3)'*x)/t;
help = x'*x/t;
helpDiag=diag(help);
term2=helpDiag(:,ones(n,1)).*sample;
term3=help.*var(:,ones(n,1));
term4=var(:,ones(n,1)).*sample;
thetaMat=term1-term2-term3+term4;
thetaMat(logical(eye(n)))=zeros(n,1);
rho=sum(diag(phiMat))+rBar*sum(sum(((1./sqrtvar)*sqrtvar').*thetaMat));
% what we call gamma-hat
gamma=norm(sample-prior,'fro')^2;
% compute shrinkage constant
kappa=(phi-rho)/gamma;
shrinkage=max(0,min(1,kappa/t));
else % use specified constant
shrinkage=shrink;