cumulative geometric average returns
Afficher commentaires plus anciens
I have a range of returns for a certain number of days. I'm wondering how I could calculate the cumulative geometric average returns.
Eg. day 1 return =5 % day 2 return =-1% day 3 return =4
so the cumulative geometric average return for day one would be (1+0.05)^(1/1)-1
For day 2 it would be ((1+0.05)*(1+0.99))^(1/2)-1
and for day 3 it would be ((1+0.05)*(1+0.99)*(1+0.04))^(1/3)-1
Rg=((1+R1)*(1+R2)*(1+R3)...(1+Rn))^(1/n)-1
I am unsure about the logic needed for the accumulation because I am multiplying the returns together rather than adding
where I could do something like sum=sum+return to find an average for example.
Réponses (1)
Let R be your array of size 1*n.
iwant = cumprod(1+R).^(1./(1:n))-1
4 commentaires
Asanka Subasinghe
le 8 Juin 2020
KSSV
le 8 Juin 2020
R = 1:5 ;
n = 5 ;
iwant = cumprod(1+R).^(1./(1:n))-1 ; % Using inbuilt functions
% Using loops
CR = zeros(1,n) ;
for i = 1:n
T = 1 ;
for j = 1:i
T = T*(1+R(j)) ;
end
CR(i) = T^(1/i)-1 ;
end
isequal(iwant,CR)
Asanka Subasinghe
le 8 Juin 2020
KSSV
le 8 Juin 2020
Thanks ia accepting the answer.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!