# What formula can I use to calculate compounding interest with recurring investments?

Assume I am saving X dollars per year every year, and every year I earn 10 percent on what I saved the previous year. e.g. if I am saving 100 dollars every year I would see the trend: 100, 210, 331, 464.1, 610.51, etc....

This is very easy to calculate in excel, but what is the underlying formula? I tried to work it out and got X*(number of years + interest rate^(number of years)) which is wrong. Any suggestions?

Note, this isn't homework I'm just trying to find something that lets me do a back of the napkin calculation of compounding interest without having to open excel.

• Nov 15, 2019 at 18:18

From Finance Formulas ``````P = 100
r = 10% = 0.1

when n = 1, FV = 100
n = 2, FV = 210
n = 3, FV = 331  etc.
``````
• Works great, thanks! Any advice on how to rearrange it to solve for n for a given value of FV? I tried and got ln((r(FV/P))+1)/(1+r), but it doesn't return the correct result. Nov 18, 2019 at 20:24
• Yes, sure, `P = (FV * r) / ((1 + r)^n - 1)` and `n = log(1 + (FV * r) / P) / log(1 + r)`. There is no simple formula for `r`. See also links at the bottom of the linked page. Nov 18, 2019 at 22:41

Let `B(y)` be the balance of your account at the beginning of year `y`, immediately after your annual contribution (which we assume happens at the beginning of the year). Then:

``````B(0) = B0 + p
B(1) = (B0 + p)r + p
B(2) = ((B0 + p)r + p)r
…
B(y) = B0*r^y + p(1 + r + … + r^y)
= B0*r^y + p(r^(y+1) - 1)/(r - 1)  ***
``````

Substituting in your numbers:

``````B(y) = 1000(1.1^(y+1) - 1)
B(0) = 1000(1.1 - 1) = 1000(0.1) = 100
B(1) = 1000(1.21 - 1) = 1000(0.21) = 210
B(2) = 1000(1.331 - 1) = 1000(0.331) = 331
…
``````

To see why the partial sum formula used at `***` is what it is, take the expression

``````1 + r + r^2 + … + r^k
``````

Now, multiply:

``````  (1 + r + r^2 + … + r^k)(r - 1)
= (r + r^2 + … + r^(k+1)) - (1 + r + … + r^k)
= r^(k+1) - 1
``````

Then, simply divide both sides by `(r - 1)` to recover the formula used.

The answer is "it depends" based on how exact you want to get.

1. Annualized Performance formula = ((Initial Purchase + Gains) / (Initial Purchase)) ^ (1/N)-1......(where "N" is the number of years.
• This is a rough estimate, where you would take your starting value, add in your savings for each year as part of the gain amount.
2. Modified Dietz - The Modified Dietz Method is a dollar-weighted analysis of a portfolio's return. It is a more accurate way to measure the return on a portfolio than a simple geometric return method

ROR = (EMV – BMV – C) / (BMV + W*C)

• EMV (Ending Market Value) – This is the value of the portfolio after the end of the term we are looking for.
• BMV (Beginning Market Value) – This is the value of the portfolio from the date, which the returns are to be calculated
• W (Weight of each cash flow on the portfolio) – This is the weight of portfolio between zero and one, but only between the period they occurred and at the end of the period. This can be explained as the proportion of time between the point in time when the flow occurs and the end of the period. This can be calculated using the formula: W = [C- D] / C where D is the number of days from the start of the return period until the day on which the flow occurred. -C – Cash flows during the period – This might not be a single number, but a series of cash flows that happened during the period.
• W*C = the sum of each cash flow multiplied by its weight. This is a summation of weighted cash flows

This is a geometric series. I don't usually use the correct formula, I just type

``````sum(100*1.08.^[1:10])
``````

into GNU Octave. However, let's derive the formula for geometric series. Let's multiply the formula for `sum(p.^[1:10])` by `p` and see what we'll get:

``````p*sum(p.^[1:10]) = sum(p.^[2:11]) = sum(p.^[1:11]) - p = sum(p.^[1:10]) + p^11 - p

(p-1)*sum(p.^[1:10]) = p^11 - p

sum(p.^[1:10]) = (p^11 - p) / (p - 1)
``````

You can also calculate

``````sum(p.^[0:10]) = 1 + sum(p.^[1:10]) = (p^11 - p) / (p - 1) + 1
= (p^11 - p + p - 1) / (p - 1) = (p^11 - 1) / (p - 1)
``````

Enter p = 1.08 so you'll get:

``````(1.08^11 - 1.08) / (1.08 - 1) = 15.645
``````

And if you type into GNU Octave:

``````octave:1> sum(1.08.^[1:10])
ans =  15.645
``````

...so the result is correct.

So saving 100 euros/dollars/whatever-currency-you-use each year at 8% yield for 10 years gives you `100*15.645 = 1564.5`