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 https://rpubs.com/owejessen/584381. 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: https://rpubs.com/owejessen/583686

Revisiting barrier bond

In Analyse einer Barriere-Anleihe I was estimating the present value of a barrier bond emitted by Berliner Landesbank, which referred to the stock price of Daimler: The payout would be 100, if the price was either allways above the barrier of 70%, or, if it dipped below the barrier, but closed above the initial price at the maturity of the bond. In every other case, the buyer would get the value of the stock at maturity. For details on the bond, go here.

Using stochastic modelling on a 13 year history of the Daimler stock price, I estimated a present value at offering of 98.6% assuming a risk free rate of 2% for the 2 year maturity (I checked the sensitivity of the result to the risk free rate, but even at a -0.5% the mean present value is at 99.4%, so a slight loss).

Today I wanted to check what the actual payout would have been.

payoutEnd = function(basis, barriere, kurse)
{
  basis = as.numeric(basis)
  barriere = as.numeric(barriere)
  kurse = as.numeric(kurse)
  if(all(kurse >= barriere))
  {
    res = kurse[1]
  } else if( last(kurse)>basis)
  {
    res = kurse[1]   
  } else 
  {
    res = last(kurse)
  }
  return(res)
}
## [1] "DAI.DE"

plot of chunk unnamed-chunk-2

Okay, so it seems the price never went below the barrier of 42.462, and the final payout was 100%:

payoutEnd(1,0.7, DAI.DE[,3]/DAI.DE[1,3])
## [1] 1

So, using hindsight, this would have been a good investment given the 7% coupon.