openNPL: Open Source NPL Platform - First Release

We introduce an open source platform that allows the easy management of non-performing loan data

Page content

Non-Performing Loans

The covid-19 crisis will certainly impact the concentration of Non-Performing Loans but given the special nature of this economic crisis compared (in particular) with the 2008 financial crisis it is unclear how precisely things will evolve.

In a previous post and white paper (OpenRiskWP07_022616) we discussed the importance of advancing open and transparent methodologies for managing the risks associated with such credit portfolios. Effective management of NPL is also a top regulatory priority. Following calls from the EU Commission and the EU Council to develop data templates to reduce information asymmetries between potential buyers and sellers of NPL, the European Banking Authority (EBA) has developed such standardised data templates.

Documenting the EBA NPL Templates

The EBA has provided these detailed templates to allow banks / lending institutions to supply comparable and standardised data on NPLs to investors and other stakeholders. These templates are not a supervisory reporting requirement, yet they are designed in a way that they can act as a market standard, used by banks and others on a voluntary basis for NPL transactions, and potentially to form the foundation for NPL secondary markets initiatives.

The EBA NPL transaction templates are documented in detail at the Open Risk Manual.


The templates capture data loan-by-loan, i.e. at the most granular level. They are built on existing reporting, which should reduce implementation costs. Within the templates users should be able to identify the data needed, for example, by investors to fairly price an NPL portfolio and other support other credit portfolio management activities.

The Docker OpenCPM NPL Database Backend

In a previous post we released an open source database backend with a schema that conforms to the EBA templates. The docker container is available here Integrating NPL data is part of the OpenCPM toolkit and the Open Risk API for Credit Portfolio Risk Management developed by Open Risk.

Open Risk API for NPL

A fully fledged interface to the NPL Database

With a new release we are now further building on that prior work to produce an easily usable platform for the collection and management of EBA compliant NPL data.

The openNPL platform will typically be used by a combination of regular users, administrators and developers. Users can use openNPL to:

  • Log-in into the application with their credentials
  • Inspect the available data sets (tables or relations) that capture the EBA Template recommendations
  • Insert, Update or Delete records (e.g. new counterparty or loan data)
  • Consult the documentation as to the meaning and requirements of each data element

NB: openNPL is still in active development. Functionality will be significantly enhanced in future versions. If you have specific requests / ideas please raise them in our github repository


The following describes the current architecture of openNPL

  • 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
  • Additional data models are introduced to bind the data together
  • The user interface uses built-in Django forms as those are rendered by the Grappelli skin
  • The backend database is currently sqlite


The openNPL platform offers a lot of functionality. Here we break down some of the main workflows for those just getting started. More will follow as the platform develops!

If everything went well with the installation, upon pointing your browser to localhost:8000 (or whatever port you are using) you will meet the landing page

Landing Page

After a successful login you will get to the admin interface which offers access to all the datasets

Admin Page

Lets click first on an important data model under the EBA portfolio collection: Counterparties. This gets us to a list of (randomly generated) counterparties that have been inserted into the database during the installation process.

Some key functionalities available in this view are (in summary)

  • viewing (sorting) counterparty data (meaning obligor or borrower data, e.g. company or individual person data)
  • NB: the view selects only some illustrative fields out of the many recorded in the database
  • adding new records
  • deleting new records

Counterparty Page

Let us click into any counterparty row to take a closer look:

Counterparty Detail

All the available EBA counterparty fields are available in this view to inspect and potentially change. If any field is unclear, clicking on the Documentation link underneath takes you to the Open Risk Manual for the explanation. For example if we click on Annual Revenue we will get to the corresponding page that explains the meaning and requirements for this data point.

Let us take a look now at another important data model, namely the loan data. Loans is one of the main financial products documented in the templates (others being leases and swaps)


The layout is similar to what we have seen before. A selection of fields is visible in the overview and clicking through we get access to further data, e.g. which counterparty actually holds to the loan.

In the upper right corner we have the functionality for filtering the dataset. Clicking on the menu allows selecting the desired filter to narrow down the portfolio.

Loan Filter

As one final example lets go back to the main list and select the Property Collateral data (in the EBA templates collateral is segmented along property and non-property classes)

The (by now familiar) table display of the stored collateral data should show up:


Lets try now something more adventurous. Lets try to add some data! (Click on the add data button on the upper right side of the page). You should see a form with many empty fields:


Depending on the nature of the field you can either enter text, numbers or select entries from drop-down menus. Whenever there is doubt, the documentation link is as before one click away!