# Calculating Inflation, retirement and cost of living adjustmentsover 30 years

Discussion in 'Python' started by rbt, Jun 1, 2005.

1. ### rbtGuest

Is this mathematically correct?

def inflation():
start = int(str.strip(raw_input("How much money do you need each
month at the start of retirement: ")))
inflation = float(str.strip(raw_input("What will inflation average
over the next 30 years(.03, .04, etc): ")))

for x in xrange(30):
start = start*inflation+start
print start

inflation()

rbt, Jun 1, 2005

2. ### John MachinGuest

rbt wrote:
> Is this mathematically correct?
>
>
> def inflation():
> start = int(str.strip(raw_input("How much money do you need each
> month at the start of retirement: ")))
> inflation = float(str.strip(raw_input("What will inflation average
> over the next 30 years(.03, .04, etc): ")))
>
> for x in xrange(30):
> start = start*inflation+start
> print start
>
> inflation()

The *arithmetic* is tedious but "correct" -- we won't concern ourselves
with rounding errors here. The *mathematics* might be better expressed as

required = start * (1.0 + inflation_rate_per_period) ** number_of_periods

John Machin, Jun 1, 2005

3. ### Roel SchroevenGuest

rbt wrote:
> Is this mathematically correct?
>
>
> def inflation():
> start = int(str.strip(raw_input("How much money do you need each
> month at the start of retirement: ")))
> inflation = float(str.strip(raw_input("What will inflation average
> over the next 30 years(.03, .04, etc): ")))
>
> for x in xrange(30):
> start = start*inflation+start
> print start
>
> inflation()

I'm not really familiar with financial calculations, but it looks
correct. There's a faster way though, since repeated multiplication is
the same as taking the power with the number of years as the exponent:

def inflation():
start = ... # same as before
inflation = ... # same as before

print start * (1+inflation)**30

--
If I have been able to see further, it was only because I stood
on the shoulders of giants. -- Isaac Newton

Roel Schroeven

Roel Schroeven, Jun 1, 2005