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