I believe I understand what you want: a single formula that would do the 30yr calculation for a given starting year 1928, 1929, etc.
I cannot think of a formula construct that allows us to copy it down a column. Perhaps someone more clever than I can offer an Excel solution.
I would write the following VBA function (UDF).
The attached Excel file demonstrates its use. Enter the following formula into M2, then copy down the column:
=totalreturn(1000, B2, $B$2:$E$93, $F$2:$F$31)
For a proof of concept, columns J, K and L demonstrate how I would calculate the year-by-year cumulative total for each of the first three 30yr periods starting in 1928, 1929 and 1930.
Compare column J with your column I. Column N compares each of the totals returned from the VBA function with the end of columns J, K and L.
-----
Some unrelated obvservations....
1. The total return over 30 yrs that you calculate is based on the time-weighted return (TWR or TWRR), not a money-weighted (sic) return like the IRR. IMHO, both terms are misnomers; and at best, they are reversed. But so be it.
2. You are decreasing the %stock by 2.666667%, not 2.667% (sic). Neither is correct. I would decrease by 40%/15 = 8%/3, rather than an approximation of it. Then the final %stock is indeed 50.0000000000001% instead of 49.999995%. (The infinitesimal 0.0000000000001% is an anomaly of binary floating-point arithmetic.) Arguably, using 8%/3 does not make a significant difference in your example. But it might affect other examples. The point is: avoid approximations when you can calculate an exact amount, unless your process mandates an approximation rounded to a some precision. (But in that case, pick one, not two.)
Bookmarks