Can anyone help me calculating the average covariance of return?
6 次查看(过去 30 天)
显示 更早的评论
- Hi everyone. I'm trying to convert this formula into MatLab code:

where : 
Fcvc is a target matrix used for shrinking the sample covariance matrix of return towards their average variance and average covariance, in order to obtain a better estimator. The topic is fromt De Nard paper "Oops! I Shrunk the Sample Covariance Matrix Again: Blockbuster Meets Shrinkage"
I don't know how to compute the average covariance (average of off-diagonal entries of a simmetric matrix), can anyone help me?
0 个评论
回答(1 个)
William Rose
2022-10-27
编辑:William Rose
2022-10-27
[Edit: change the name of the initial matrix; it should not be Fcvc, it should be S. Add code to construct Fcvc using the
which we calculate.]
You can just write a nested for loop (i,j) that does the
calculation:
%Make a 4x4 covariance matrix
N=4; S=eye(N); %identity matrix
for i=1:N,
for j=i+1:N
S(i,j)=-1+2*rand(1,1);
S(j,i)=S(i,j);
end
end
S=10*S %multiply by some arbitray constant
That looks like a reasonable covariance matrix: it is positive along the diagonal, and the absolute value of off-diagonal element are less than the diagoonal, and it is symmetric.
Now compute
and
:
siibar=sum(sum(S))/N^2;
sijbar=0;
for i=1:N
for j=i+1:N
sijbar=sijbar+S(i,j);
end
end
sijbar=sijbar/((N^2-N)/2);
fprintf('siibar=%.4f, sijbar=%.4f\n',siibar,sijbar)
Those values look reasonable.
Use siibar and sijbar to make Fcvc
Fcvc=sijbar*(ones(N)-eye(N))+siibar*eye(N)
That looks good.
2 个评论
William Rose
2022-10-27
You may note that when calculating sijbar =
, I added up the values on one side of the diagonal, then divided by (N^2-N)/2. In the formula you quoted, they added up the values on both sides of the diagonal and divided by (N^2-N). Since the matrix is symmetric (covariance matrices are alway ssymmetric), the result is the same for these two different ways of doing it.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Blue 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!