Skip to content
Tech News
← Back to articles

An oral history of Bank Python (2021)

read original more articles
Why This Matters

This article highlights the often-overlooked but critical role of proprietary Python systems, like Bank Python, in the high-stakes world of investment banking. Understanding these specialized implementations reveals how financial institutions tailor technology to meet complex, high-performance demands, influencing industry standards and innovation. For consumers and the tech industry, this underscores the importance of customized software solutions in managing risk, data, and trading strategies at scale.

Key Takeaways

An oral history of Bank Python

The strange world of Python, as used by big investment banks

High finance is a foreign country; they do things differently there

Today will I take you through the keyhole to look at a group of software systems not well known to the public, which I call "Bank Python". Bank Python implementations are effectively proprietary forks of the entire Python ecosystem which are in use at many (but not all) of the biggest investment banks. Bank Python differs considerably from the common, or garden-variety Python that most people know and love (or hate).

Thousands of people work on - or rather, inside - these systems but there is not a lot about them on the public web. When I've tried to explain Bank Python in conversations people have often dismissed what I've said as the ravings of a swivel-eyed loon. It all just sounds too bonkers.

I will discuss a fictional, amalgamated, imaginary Bank Python system called "Minerva". The names of subsystems will be changed and though I'll try to be accurate I will have to stylise some details and - of course: I don't know every single detail. I might even make the odd mistake. Hopefully I get the broad strokes.

Barbara, the great key value store

The first thing to know about Minerva is that it is built on a global database of Python objects.

import barbara # open a connection to the default database "ring" db = barbara . open () # pull out some bond my_gilt = db [ "/Instruments/UKGILT201510yZXhhbXBsZQ==" ] # calculate the current value of the bond (according to # the bank's modellers) current_value : float = my_gilt . value ()

Barbara is a simple key value store with a hierarchical key space. It's brutally simple: made just from pickle and zip.

... continue reading