Can I calculate an average annualised return from investments held for different lengths of time?
My question is: given a number of investments of differing amounts, held for different lengths of time, how would I calculate an approximate average annualised growth for the entire portfolio over its lifetime? (I assume an exact answer won't be possible from this data.)
In my portfolio, I've tracked the following data:
Purchase date
Purchase cost
Dividends received
Sold date
Sold value
From that I can calculate:
Profit/Loss (Sold value + Dividends - Purchase cost)
Actual growth (Profit/Loss ÷ Purchase cost)
Number of years held (Sold date - Purchase date) ÷ 365
Annualised growth ((Sold value + Dividends)/PurchaseCost ^ (1/Number of Years Held)) - 1
Here are some real-world values, if that helps:
1 Comments
Sorted by latest first Latest Oldest Best
In the method below all the portfolio values at each time interval are calculated. Then they are aggregated in each time period and the period return is calculated. Finally the period returns are compounded and annualised.
For example, the portfolio return between periods x5 and x6 is
(a11 + a23 + a34)/(a1 + a22 + a33) - 1 = 0.903 %
where a1 is the starting value of asset 1 and a11 is the value of asset 1 after one time period. If the actual values were known this would give a better result, but given the limited information they are calculated.
Compounding the period returns is the same as taking the time-weighted return.
s1 = {2017, 6, 7};
e1 = {2017, 12, 4};
s2 = {2015, 9, 2};
e2 = {2017, 11, 1};
s3 = {2015, 2, 25};
e3 = {2017, 7, 3};
s4 = {2015, 2, 20};
e4 = {2017, 6, 2};
d1 = QuantityMagnitude@DateDifference[s1, e1, "Day"];
d2 = QuantityMagnitude@DateDifference[s2, e2, "Day"];
d3 = QuantityMagnitude@DateDifference[s3, e3, "Day"];
d4 = QuantityMagnitude@DateDifference[s4, e4, "Day"];
a1 = 4606.75;
v1 = 4529 + 27.48;
a2 = 3500;
v2 = 5827 + 56;
a3 = 2900;
v3 = 3998 + 72;
a4 = 2900;
v4 = 3566;
r1 = (v1/a1)^(1/d1) - 1.0
r2 = (v2/a2)^(1/d2) - 1.0
r3 = (v3/a3)^(1/d3) - 1.0
r4 = (v4/a4)^(1/d4) - 1.0
-0.0000609549
0.000656731
0.000394644
0.000248211
The above are the daily rates of return for the four assets.
x1 = {2015, 2, 20};
x2 = {2015, 2, 25};
x3 = {2015, 9, 2};
x4 = {2017, 6, 2};
x5 = {2017, 6, 7};
x6 = {2017, 7, 3};
x7 = {2017, 11, 1};
x8 = {2017, 12, 4};
k1 = QuantityMagnitude@DateDifference[x1, x2, "Day"];
k2 = QuantityMagnitude@DateDifference[x2, x3, "Day"];
k3 = QuantityMagnitude@DateDifference[x3, x4, "Day"];
k4 = QuantityMagnitude@DateDifference[x4, x5, "Day"];
k5 = QuantityMagnitude@DateDifference[x5, x6, "Day"];
k6 = QuantityMagnitude@DateDifference[x6, x7, "Day"];
k7 = QuantityMagnitude@DateDifference[x7, x8, "Day"];
a41 = a4 (1 + r4)^k1;
a42 = a41 (1 + r4)^k2;
a43 = a42 (1 + r4)^k3
3566.
The calculated value of asset 4 after three period is the same as the final value v4 above.
a31 = a3 (1 + r3)^k2;
a32 = a31 (1 + r3)^k3;
a33 = a32 (1 + r3)^k4;
a34 = a33 (1 + r3)^k5
4070.
a21 = a2 (1 + r2)^k3;
a22 = a21 (1 + r2)^k4;
a23 = a22 (1 + r2)^k5;
a24 = a23 (1 + r2)^k6
5883.
a11 = a1 (1 + r1)^k5;
a12 = a11 (1 + r1)^k6;
a13 = a12 (1 + r1)^k7
4556.48
z1 = a41/a4;
z2 = (a31 + a42)/(a3 + a41);
z3 = (a21 + a32 + a43)/(a2 + a31 + a42);
z4 = (a22 + a33)/(a21 + a32);
z5 = (a11 + a23 + a34)/(a1 + a22 + a33);
z6 = (a12 + a24)/(a11 + a23);
z7 = a13/a12;
k = QuantityMagnitude@DateDifference[x1, x8, "Day"];
(z1*z2*z3*z4*z5*z6*z7)^(365/k) - 1
0.154885
So the portfolio return is 15.49% per annum.
Terms of Use Privacy policy Contact About Cancellation policy © freshhoot.com2025 All Rights reserved.