Microservices for Derivatives: What You Need to Know

It has been some months since I wrote about Microservices and the Amazon Cloud and as we have recently released a major new version, I wanted to elaborate further on the importance of this technology.

Background

Microservices are fine-grained services that can be used to rapidly assemble a more complex service, a system, or a user interface.

Unlike libraries and toolkits, Microservices do not require the use of a specific programming language and they do not need to be installed, managed and upgraded by a customer, making them eminently suited to agile deployment.

Microservices are available individually and offer the potential of a “pay for what you use model”, a disruptive improvement on enterprise applications which require a complete system to be purchased, implemented and integrated before a single function or report can be used.

Microservices deployed on massive scale clouds such as AWS, offer the possibility of running high-end computational tasks at prices that are within reach of many more customers and not only those customers with IT budgets running into the hundreds of millions of dollars.

Clarus Microservices

We have now greatly expanded the functionality offered in Clarus Microservices to add portfolio level risk analytics, margin requirements and capital calculations for Derivative portfolios.

Clarus Microservices are so simple to use that we offer free 14-day trials to prospective customers.

And within this 14-day period, our customers integrate these services with real world data and are ready for full production roll-out.

Contrast this with our enterprise software competitors, who reluctantly offer proof of concepts (often charged for) and invariably not with real data but still resource and time heavy. Should these then proceed to purchase, they require the marshalling of a small army of expensive consultants to start from scratch and implement a system and many months or years down the road this system lands on a users desk, ….. you get the picture.

Our proposition is very different.

Clarus Microservices can be assembled by anyone using their own choice of programming language (e.g. python, perl, r, java, c#, …)  to build complex systems.

We believe that this offers a better paradigm for the software infrastructure of the future.

A future that was promised by object orientated libraries but failed to be realised because of the reliance on a specific programming language, the requirement to integrate data at great cost and the need to manage deployment, scale and reliability yourself.

Clarus Microservices are managed, deployed and scaled by us on AWS, freeing up users to concentrate only on assembly and utilisation.

Lets look at a few examples, using python to illustrate the simplicity.

Example One – ISDA SIMM

Determine the change in SIMM margin of my portfolio resulting from a what if trade.

myCRIF = open('MyPortfolioCRIF.txt').read()
print (clarus.simm.margin(portfolios=myCRIF,whatif='$100m 10Y pay 2.0%'))

Two lines that will return the before and after margin.

SIMM      Account    WhatIf    Change     Margin
Margin 88,479,261 4,008,499 1,390,384 89,869,644

Example Two – FRTB SA, IMA, MRF

Calculate the capital requirement using the Standard Approach for a JPY Swap trade.

clarus.frtb.sa(portfolios='JYSW5 6000M Rec 0.1%',reportCcy='JPY')

And the same trade, but an Internal Model Approach.

clarus.frtb.ima(portfolios='JYSW5 6000M Rec 0.1%',reportCcy='JPY')

Next which points on the JPY Swap Curve are modellable and which are non-modellable.

clarus.frtb.modellablerf(riskFactors='JPY LIBOR 6M')

(In the interest of space, I have chosen to not show the output of these microservices).

Example Three – MVA

Calculate the Margin Value Adjustment of an LCH Cleared Swap.

clarus.xva.mva(portfolios='EUR 100m 5Y rec 0.215%',model='LCH', units='bp')

A complex analytic requiring many thousands of mtm calculations, yet returning results sub-second.

MVA in bp
0.40

Example Four – Hedge

Get the swap equivalent hedges for a portfolio.

clarus.hedge.equivalents(portfolios='cft/1H',ladder='Major')

Returning:

SwapEquivalents in USD (MM) USD.Semiv3
02Y 7,389
05Y 4,907
10Y -4,434
30Y -600
Total 7,262

Example Five – Compliance

Check whether specific USD Swaps are mandatory to trade on a Swap Execution Facility.

clarus.compliance.sefmandatory(trade='USSW11,USSW12')

Returning:

Ticker  SEF Mandatory
USSW11          FALSE 
USSW12           TRUE

Example Six – ADV

Find out how today’s trade volume compares with the average daily volume (ADV).

clarus.sdr.volumeadv(ticker='EUBS10')

Showing for this EUR-USD Cross Currency Swap:

Ticker       Volume          ADV
EUBS10  495,575,474  352,036,717

I could go on, by lets end there.

Please see the Clarus Microservices Reference Page for more examples.

Invitation to Try

There is a lot of chatter in Tech circles about “beautiful APIs”.

I had not appreciated what this meant.

After using Clarus Microservices, I understand the beauty in an API.

Intuitive to write, yet powerful in scope.

After years of not keeping up with programming, syntax, installations.

Using Clarus Microservices is a joy.

As I can focus on getting what I need to get done.

Even the examples for this blog are all my own creation. 🙂

What could be easier.

I invite you to try Clarus Microservices yourself.

Or forward this blog to a colleague to try.

Begin the journey.

Stay informed with our FREE newsletter, subscribe here.