From hero to zero in 1.5 years

This is a story on how a very boring insurance company that had been running of its liabilities for next to 20 years first made a deal that looked to be very nice indeed, and was insolvent 1.5 years later, thanks to poor wording in a policy clause more than 12 years ago, and not uncovered in the due diligence.

I stumbled upon a tweet announcing that East West Insurance Company went into administration. This isn’t terribly unusual, but as I work in a run-off business, and have worked for a company which had a decidedly East-West connotation, I was curious. I started to dig into it, and wrote a small thread.

In the following, I will mostly copy that thread to preserve it in a more robust matter.

One would think that insurance run-off is a boring industry, especially for a portfolio that has ceased underwriting in 2012. What was the issue? In 2018, EWIC acquired a portfolio of UK Building Guarantee Insurance, with an exposure to 55,000 contracts.

These were completely in the final stage of this kind of insurance (Structural Indemnity Period), 10 years in which the insurance will cover damages which originated in the construction period. Now, 2018 appareantly was a bad time to take over such a portfolio.


But Grenfell already happened in 2017, so these implications should have been priced in. Judging from the change in assets, EWIC was compensated with about 83 mil USD for accepting liabilities valued at about 41 Mil USD. A markup of 100% – well done.

Using the standard measure of insurance companies, the Solvency Ratio, the company was well capitalised – it had 185% of the required capital. The solvency capital requirement is supposed to equate a 1 in 200 years event. Any outsider would expect this to be a healthy company.

So, what went wrong? Fine print the the policy clauses went wrong. One insured claimed for damages under the policy. The insurance policy had a maximum liability cap, which where „poorly drafted“ in the words of the judge. (For a good summary of the judgment see and for the original verdict see

In this case, the insurer expected that its maximum liability would be around 3.6mil instead of the higher actual damage. But the appeals court found that the actual maximum liability in this case is more than 10 mil. Now, on first glance one would think that even if this higher cap was operational, and the total damage would be 7.4 mil higher than initially thought, East West should have plenty of reserves to pay these 7.4 mil. After all, they collected 42 mil more in assets than liabilities.

The problem is that this was just one case. Applying this case to all similar claims lead to a „strengthening of reserves“, and 41 mil liabilities in June 2018 turned into 93 mil liabilities at year end 2019. And so what seemed to be a great deal in 2018 became an insolvency in 2020.

For now, you can read more about the company on their website, and especially in their Solvency and Financial Condition Reports, which where my main source.

See the announcement from the FCA here:

R Package to Load ECB Reference Rates

For my work I often have to download official exchange rates. Thankfully the ECB publishes their reference rates in their Statistical Data Warehouse, and allows automatic download via an API.

I wrote a small R package to implement the API, and published it on github. Now, getting the latest rates for the USD is as easy as writing get_ecb_fx("USD").

COVID 19 App

Based on an idea by twitter user @jeuasommenulle I developed a small shiny app covering global data on a per-country basis. You find it here. The central idea is to estimate the factor R, that is the number of people one active new case will infect. If that value drops below 1, the epidemic will die out. Based on this estimation, and the observation that China eased lockdown after R dropped below 0.3, the likely date of easing of lockdown is estimated based on the average of change in R over the last couple of days (default 7 days). You can change the key input to the model estimating R.

Another part of the app allows you to plot the historic development of cases, total cases, deaths, total deaths, active and total active cases, as well as print a table with the historic development for a chosen country.

Enhanced post on COVID-19

I added some content to my original post on COVID 19, namely

  • Correction of an elemental error in the estimation of number of confirmed cases from an exponential trend
  • Projection of the next week based on the initial estimation
  • Estimation of a trend in the growth rate
  • Projection of the next week based on a projection of the growth rate

You find the post at The main conclusion is, not surprisingly, that the future outcome very much depends on the estimation of the growth rate. Predicting the number of cases in one weeks time based on the average growth rate of the sample yields 123,613 for Italy and 13,731 for Germany (original prediction in the graph). Considering the downward trend in the growth rate leads to a projection of 24,726 for Italy, and 4,745 for Germany (revised prediction in the graph).

Some thoughts on COVID-19

As for a lot of other people, COVID-19 is currently very much on my mind. Thankfully, there is a lot of good information and also data available. 

Sadly, the connector between R and WordPress does not work anymore, so I am going to publish any statistical analysis on RPubs, and only link from here.

So, my first analysis is looking at the development of cases, especially comparing Italy and Germany. You find the post here: