cumulative geometric average returns

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.

Antworten (1)

KSSV
KSSV am 8 Jun. 2020
Bearbeitet: KSSV am 8 Jun. 2020

0 Stimmen

Let R be your array of size 1*n.
iwant = cumprod(1+R).^(1./(1:n))-1

4 Kommentare

Asanka Subasinghe
Asanka Subasinghe am 8 Jun. 2020
I know this is MATLAB Answers, but I am doing this with VBA. So I can only access a cell at a time using a for loop,
and I am trying to do it without using an inbuilt function.
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
Asanka Subasinghe am 8 Jun. 2020
Thank you!
KSSV
KSSV am 8 Jun. 2020
Thanks ia accepting the answer.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 8 Jun. 2020

Kommentiert:

am 8 Jun. 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by