- Kalpesh Agrawal

# Annuity Calculator in Python

When you are working in corporates calculating basic annuities in a calculator is not advisable. **So today we are going to learn how to calculate annuity in python.**

**"BASIC PYTHON KNOWLEDGE IS MUST FOR THIS"**

You have to simply add inputs and it automatically calculates the annuity factor for you.

I have divided the process of creating an annuity calculator into 4 Steps.

**Step 1:**

Creating a calculator for an annuity in arrears:

`Define an object and include interest rate , term , and accumulation factor if you want.`

`create a for loop to calculate and add annuity factor for each year in the variable a. `**a****+=**** is a shorthand operation ****for**** writing a ****=**** a****+**

`Now use if else to return the value stored in a. Accumulate will calculate future value of annuity if you set it to TRUE. `**Round ****function**** returns answer to ****5**** significant digits****.**

**def ****annuity_arrear**** ****(****int_rate****,**** n ****,**** accumulate ****=**** False****)****:**
**a** = **0**
**for**** i ****in**** ****range** (**0**, n):
** a ****+=**** ****(****1**** ****+**** int_rate****)********** ****-**** ****(****i ****+**** ****1****)****
****if**** accumulate ****==**** False****:****
****return**** ****round**** ****(****a****,**** ****5****)****
****else****:****
****return**** ****round****(****a ********* ****(****(****1**** ****+**** int_rate****)**********n****)****,**** ****5****)****
**

**Step 2:**

Creating a calculator for an annuity in due:

`Everything remains same and the only thing that changes here is in 4th line. `

**def ****annuity_due**** ****(****int_rate****,**** n ****,**** accumulate ****=**** False****)****:**
**a** = **0**
**for**** i ****in**** ****range** (**0**, n):
** a ****+=**** ****(****1**** ****+**** int_rate****)********** ****(****-****i ****)****
****if**** accumulate ****==**** False****:****
****return**** ****round**** ****(****a****,**** ****5****)****
****else****:****
****return**** ****round****(****a ********* ****(****(****1**** ****+**** int_rate****)**********n****)****,**** ****5****)**

**Step 3: **

Creating a calculator for increasing Annuity in arrears:

**def ****inc_annuity_arrear****(****int_rate****,**** n ****,**** accumulate ****=**** False****)****:**
**a** = **0**
**for**** i ****in**** ****range** (1 , n+1):
** a ****+=**** i ********* ****(****1**** ****+**** int_rate****)********** ****(****-****i ****)****
****if**** accumulate ****==**** False****:****
****return**** ****round**** ****(****a****,**** ****5****)****
****else****:****
****return**** ****round****(****a ********* ****(****(****1**** ****+**** int_rate****)**********n****)****,**** ****5****)**

### Step 4:

Creating a Calculator for Increasing Annuity in due :

**def ****inc_annuity_due****(****int_rate****,**** n ****,**** accumulate ****=**** False****)****:**
**a** = **0**
**for**** i ****in**** ****range** (0, n):
** a ****+=**** ****(****1**** ****+**** i****)**** ********* ****(****1**** ****+**** int_rate****)********** ****(****-****i ****)****
****if**** accumulate ****==**** False****:****
****return**** ****round**** ****(****a****,**** ****5****)****
****else****:****
****return**** ****round****(****a ********* ****(****(****1**** ****+**** int_rate****)**********n****)****,**** ****5****)**

**STEP 5: **

Combining all the calculators created and creating a master calculator

```
Import pandas library to use series feature of it
Now call all the calculators we have created by creating a dictionary
```

```
import pandas as pd
def annuity_calculator(int_rate , n):
df = pd.series({"PV_annuity_arrear": annuity_arrear(int_rate , n),
"PV_annuity_due": annuity_due(int_rate , n),
"AV_annuity_arrear": annuity_arrear(int_rate,n ,accumulate = True),
"AV_annuity_due": annuity_due(int_rate , n ,accumulate = True),
"PV_inc_annuity_arrear": inc_annuity_arrear(int_rate, n),
"PV_inc_annuity_due": inc_annuity_due(int_rate , n),
"AV_inc_annuity_arrear": inc_annuity_arrear(int_rate,n , accumulate = True),
"AV_inc_annuity_due": inc_annuity_due(int_rate , n, accumulate = True)})
return df
```

I hope you understand well, how to make an annuity calculator in python.

`Related: What is Data Mining & The 9 Laws of Data Mining`

Written By: **Tirth Shah**