The openNPL platform

openNPL is a Python / Django powered platform for working with detailed (loan level) data with a particular emphasis on capturing non-performing loan information.

The source code is available in the Open Risk Repository Link.


The openNPL platform may be useful to financial industry users (portfolio managers, business analysts), data engineers and/or risk model developers. The loan data templates currently covered are in particular relevant for EU countries and the US.

Users can use openNPL to:

  • Log-in into the application with their credentials

  • Inspect the available loan data sets (tables or relations) conforming to the European Banking Authority Template recommendations of US Agency Loan Performance Data schemas

  • Insert, Update or Delete loan records (e.g. new counterparty, loan or collateral data)

  • Consult the documentation as to the meaning and requirements of each data element


openNPL is still in active development. The functionality of the platform will be significantly enhanced in future versions. If you have specific requests / ideas please raise them in our github repository.


The current architecture of openNPL is summarized as follows:

  • openNPL is built on top of the Python Django framework

  • The non-performing loan template recommendations of the EBA are implemented as distinct models in the database

  • A similar but distinct model structure is implemented for US Agency mortgage data

  • The backend database is currently sqlite3

  • Additional models are introduced to bind the data together in relations (e.g. portfolio snapshot)

  • The user interface uses built-in Django forms as those are rendered by the Jazzmin skin

Directory structure

The openNPL distribution has the following structure:

Level 1

Level 2

Level 3

File or Directory Description


The root directory


DIR: EBA NPL portfolio app

Portfolio level models

The Counterparty model

The Loan model

The other EBA models


DIR: Sample data in JSON format


DIR: US Single Family loan app


DIR: model files


DIR: Sample data in JSON format


DIR: Templates for the front end


DIR: Application configuration files


DIR: This documentation


DIR: Styling assets


DIR: Template customization


DIR: Testing scrips

Core Data Models

The core data models currently implemented are:

EBA NPL Portfolio

  • Portfolio (Segments the loan level data into distinct portfolios)

  • Portfolio_Snapshot (Segments the loan level data into temporal snapshots / cutoff dates)

  • 8 NPL Tables (Implementing the core European Banking Authority NPL template specification)

  • User (Inheriting from Django User model)

US Single Family Portfolio

Installation Options

The Installation page provides guidance with the current installation options

Getting Started

The Usage page illustrates (using screenshots) the currently available functionality to help you get started with openNPL