How to Build a Basic Python Cash Flow Model for a Loan

How to Build a Basic Python Cash Flow Model for a Loan

Python has taken the financial programming world by storm, and demand for finance experts who can use it is soaring. Here, a Toptal finance professional and Python expert shows beginners how to build a loan payment cash flow model with Python.

Many financial experts are adept at using Excel to build financial models. However, because of difficulties with peer review, version control, and the inability to form recursive functions, Excel may not be the best choice for more sophisticated models. Despite these drawbacks, many financial professionals still use Excel because they are less confident with programming languages such as Python.

Python is one of the easiest programming languages to learn. Because it was designed with readability and ease of use in mind, its code is concise and close to plain English. In this article, I show how easy it is to build a Python cash flow model for loan payments by using the most basic functions, packages, and data structures.

To follow along, you will need to use Colaboratory (“Colab” for short), Google’s free web-based notebook application that lets you write and execute code. Colab is a Python interpreter that uses cells that can contain code, Markdown (for easily styled text), images, or other data. Colab continuously stores the values of your code as you write, making it quick and simple to catch mistakes or bugs as they appear. (If you don’t want to jump in just yet, follow along with this example Colab notebook.)

First, Make Sure You Have the Tools You Need

We will be building a model for an amortized loan that has a scheduled, periodic payment applied to both the loan’s principal and the interest. It has a fixed installment for each period and the interest portion of the payments decreases over time. You will need three Python libraries, collections of software routines that prevent developers from having to write code from scratch, for this model-NumPy, Pandas, and Matplotlib:

  • numpy-financial==1.0.0
  • pandas==1.2.3
  • matplotlib==3.2.2

In Colab, the Pandas and Matplotlib packages are installed by default, so you only need to install the numpy-financial library, which you can do directly from Colab. To install numpy-financial, and import all three libraries you will need later, open a new Colab notebook from the File menu, and paste the following into the first code cell:

Before we move on to the next step, let me explain the previous code and why it’s written the way it’s written. Even though numpy-financial’s name contains a hyphen, you must use an underscore in the name when you install and import it. (For more information and explanation on installing numpy_financial, check out the documentation.) You may notice abbreviations, too. Pre-defined aliases are commonly used for packages-NumPy is written as np, Pandas as pd. These aliases are used to save you from writing the full name of the package every time you would like to use it and also help to make your code more readable.

Now, Use NumPy to Set Up the Loan Characteristics

NumPy is one of the most popular Python libraries adding support for large, multidimensional arrays, along with a significant collection of high-level mathematical functions to operate on those arrays. The numpy-financial library is a relatively new package made up of a collection of commonly used financial functions that have been separated from the main NumPy library and given their own pride of place.

The simplest way to calculate the scheduled interest and principal vectors for the life of our amortized loan is to use the PMT, IPMT, and PPMT functions from the numpy-financial package. The PMT function provides the fixed loan installment to pay the loan in full over a given number of periods. The IPMT and PPMT functions provide the interest and principal payments, respectively. Depending on the input to the period, the IPMT and PPMT functions can return values for a single period or a number of periods.