Basic Financial Calculations using Python

Prateek Majumder Last Updated : 22 Oct, 2024
7 min read

This article was published as a part of the Data Science Blogathon

Introduction

Python has become immensely popular these days across many fields like web development, machine learning, data analytics, finance, deep learning, scientific calculations, and so on.

Python is used in so many fields these days that knowing how to write programs in Python is very essential. These days, Python is also an important tool in the financial world. One can easily complete many financial calculations using Python. The simple nature of python and easy-to-learn functions and code structure makes it easy for anyone with basic programming and math knowledge to start with python.

Financial calculations using python

(Image Source: https://www.pexels.com/photo/blue-and-yellow-graph-on-stock-market-monitor-159888/)

Python has been around for a long time and recently, it has gained high popularity. The code is very concise in Python and simple to write. So, people working in Finance, Business, or Analytics need not focus on the technicalities of programming that much and focus on the implementation. Python has a lot of libraries that help in various types of mathematical computations. All these make Python the ideal programming language for financial calculations.

Let us implement some of the basic financial calculations in Python.

Simple Interest

Simple interest is something which everyone has studied in school. It is used to calculate the interest accrued on a loan or a savings deposit. Suppose, you deposit some amount in your bank, and want to calculate what will be the amount your bank will finally give you after adding interest, we can calculate that using simple interest.

To calculate the simple interest we need three things, the principal amount, rate of interest, and time period. For the implementation here, we denote the principal as ‘p’, rate as ‘r’, and time as ‘t’.

The function is implemented in the following way. A point to be noted is that here we are considering yearly interest, so the time and rate are taken yearly.
Python Code:

# import numpy as np
# import math
# simple interest
def simple_interest(p, r, t):
    print('Amount: ', p)
    print("Rate of Interest (Per Annum)", r)
    print("Time (In Years): ",t)
    si=(p*r*t)/100
    a= p+si
    print("Final Amount: ", a)
    print("Simple Interest: ", si)

# Now, let us implement the function with sample input.

print(simple_interest(1000, 5, 3))

# None is also printed at the end because we haven't returned anything in the function

Output:

simple interest |Financial calculations using python

The final amount and simple interest are printed as required.

The money earned from simple interest does not have compounding.

Compound Interest

In the case of compound interest, the principle of compounding is used. The compound interest formula calculates the interest earned on the amount where interest from the previous investment cycle is also added as principal. As the interest earned is reinvested, the investment will earn more money due to compounding.

The interest on the original balance would only count as simple interest, but as the additional amount is also added, we get CI.

The code implementation is simple. The point to be noted here is that the rate is yearly and time is also taken in years.

#compound interest
def compound_interest(p,r,t):
    print('Amount: ', p)
    print("Rate of Interest (Per Annum)", r)
    print("Time (In Years): ",t)
    a= p*((1+r/100)**t)
    ci= a-p
    print("Final Amount: ", a)
    print("Compound Interest: ", ci)

Now, calling the function.

compound_interest(1000,10, 2)

The output is as follows. The code executes without any problems.

Output:

compound interest

The output is as expected.

Purchasing Power

We all have heard about inflation in some way or the other. Be it our mother complaining about how the prices of groceries and vegetables are increasing, or be it the fact that bus and taxi fares have increased. Inflation reduces purchasing power. The same 100 INR we have today was more valuable 10 years ago, and similarly, the same 100 INR will be less valuable 10 years from now. Inflation reduces the purchasing power of money.

To calculate the net purchasing of an amount, we need the inflation rate and the time period. The rates are taken yearly here and the time is also yearly. Calculation of purchasing power can help us compare it against the investment to see if we are gaining money on the investment.

The code is simple to implement.

# Purchasing power
def pur_power(p,r,t):
    print("Initial Amount: ",p)
    print("Annual Inflation Rate: ",r)
    print("Time in years:", t)
    a= p* ((100/(100+r))**t)
    print("Final amount after",t,"years of inflation: ", a)

Now, we call the function with data.

pur_power(10000,5,10)

Output:

purchasing power | Financial calculations using python

So, we can see that by assuming a 5% inflation rate, 10,000 INR after 10 years will be around 6100 in today’s terms.

Compound Annual Growth Rate

We often invest in mutual funds and other bonds, where the interest rates vary with time. And people usually invest in them for a long time. The usual investment in bonds and mutual funds is for a period of 5 years or more. But, as the rates vary, the calculation of interest rates can be difficult. The compound annual growth rate formula helps in such cases to calculate the annual growth rate.

To calculate CAGR, we need the initial amount, final amount, and the time period in years. The code implementation is simple. CAGR calculation helps us in calculating the performance of a fund or bond in comparison to other investment options.

The code is implemented as shown.

#compound annual growth rate
def CAGR(p,a, t ):
    print("Initial value of money: ",p)
    print('Final value of money: ',a)
    print("Time in years: ", t)
    t_inv=1/t
    cagr_rate= (((a/p)**t_inv)  -1)*100
    print("Compound Annual Growth Rate (CAGR): ", cagr_rate)

Now, we call the function.

CAGR(10000,50000,10 )

Output:

compound annual growth rate

So, we can see that by providing the initial and final value of money and the time, we get the CAGR rate.

Monthly EMI

We all have heard about loans and EMIs etc. People take loans for various reasons, like education, house construction, purchase of car, property etc. The payments on loans are usually made on a monthly basis.

EMI stands for Equated Monthly Installment. It is the fixed amount to be paid by the borrower to the lender each month to complete the repayment of the loan. The benefit for EMI for borrowers is that they will be knowing exactly how much they have to pay back to the lender each month. The lender can be your bank or any other financial company.

The EMI is dependent on various factors like the principal borrowed, rate of interest, tenure of loan, etc. Let us look at the implementation of the calculation of monthly EMI. EMIs are adjusted in such a way that the borrower is able to pay back the amount per month without any delay or problem.

The code is easy and simple to implement.

#monthly EMI calculation
def EMI(p,r,n):
    print("Total Loan Amount: ",p)
    print("Rate of Interest: ",r)
    print("Number of installments: ",n)
    r_mon=  r/(12*100)
    emi = p * r_mon * ((1+r_mon)**n)/((1+r_mon)**n - 1)
    print("EMI for",n,"months: ",emi )

Now, we call the function.

EMI(500000,8, 24)

Output:

monthly emi

The monthly EMI is calculated.

Double Time Calculation

The doubling time formula is used in finance to calculate how much time it will require to double our investment based on the interest rate. It is a very important metric to determine if an investment is worth the effort and time. The doubling time formula takes only the interest rate as an input. The logarithmic function is used for the calculation. Often, many bonds and funds are invested till they are doubled. The funds/ bonds have a CAGR rate associated with them. With the rate, we can calculate the doubling time. The code is easy and simple.

#doubling time calculation
def double(r):
    print("Rate of Interest: ",r)
    t= math.log(2)/math.log(1+ (r/100))
    print("Time taken in years to double money at",r,"percent PA: ", t)

Let us call the function.

double(8)

Output:

double time calculations | Financial calculations using python

So, we can see that for an 8% interest rate, money will be doubled in roughly 9 years.

Weighted Average

The weighted average is used to calculate the average of a set of numbers with each having its different weights. The ratio of the importance of each value is called its weight. All weights should add up to be 1 or 100%.

The concept of the weighted average is used in mathematical calculations a lot. In finance, it has many applications. One of the most important applications is the weighted average cost of capital.

Let us implement the WA calculation. The rates taken are the various items. The rates can be assumed to be rates of interest of various investments a person holds. The ratio of each investment principal is in the ratio list. The WA formula gives the net rate of interest.

The code is as follows.

ratio=[0.20, 0.25, 0.35,0.10, 0.10]
rates=[7.5, 8.5, 8, 5, 6]
def weighted_average(ratio,rates):
    wa=0
    for i in range(len(ratio)):
        wa= wa+ ratio[i]*rates[i]
    print("Weighted Average returns: ",wa)

Now, we call the function.

weighted_average(ratio,rates)

Output:

weighted average returns

So, we get the output.

To check the code, follow this link.

About me:

Prateek Majumder

Analytics | Content Creation

Connect with me on Linkedin.

My other articles on Analytics Vidhya: Link.

Thank You.

The media shown in this article are not owned by Analytics Vidhya and are used at the Author’s discretion.

Prateek is a dynamic professional with a strong foundation in Artificial Intelligence and Data Science, currently pursuing his PGP at Jio Institute. He holds a Bachelor's degree in Electrical Engineering and has hands-on experience as a System Engineer at TCS Digital, where he excelled in API management and data integration. Prateek also has a background in product marketing and analytics from his time with start-ups like AppleX and Milkie Way, Inc., where he was involved in growth campaigns and technical blog management. Recognized for his structured thinking and problem-solving abilities, he has received accolades like the Dr. Sudarshan Chakraborty Award for Best Student Performance. Fluent in multiple languages and passionate about technology, Prateek continues to expand his expertise in the rapidly evolving AI and tech landscape.

Responses From Readers

Clear

Eddie Karum
Eddie Karum

Grateful for it's innovation. Appreciate the computer scientist invention. Python makes work efficiently for Data Scientists

Gregoire
Gregoire

Very practical and useful, thanks a lot !! For performance sake, I have personally used a list comprehension with zip() function for the weighted average function.

Ugyen Pem
Ugyen Pem

Hi, How do we compare bank interest rates of three banks with different compounding periods to find the best bank. Thanks.

We use cookies essential for this site to function well. Please click to help us improve its usefulness with additional cookies. Learn about our use of cookies in our Privacy Policy & Cookies Policy.

Show details