In the previous posts we have seen how easy it is to price interest rate swaps using R. I am honoured to announce that I have decided to put all the functions I have described together into a package that is called…SwapPricer!

Ok, the name is not super original, but it should at least be easy to remember.

You can install it as follows:

# library(devtools)
devtools::install_github("DavideMagno/SwapPricer")

The package is still unfortunately not on CRAN but it has an official hexagon. Here it is:

Let me know if you like it in the Disqus form below in the post.

In order to price a swap you just need to run the following code.

library(SwapPricer)
portfolio <- SwapPricer::swap.basket %>% 
  dplyr::filter(grepl("EUR", .$currency))
SwapPortfolioPricing(portfolio, lubridate::ymd(20190414), SwapPricer::EUR.curves)
## # A tibble: 4 x 8
##   swap.id currency clean.mv dirty.mv accrual.pay accrual.receive     par
##   <chr>   <chr>       <dbl>    <dbl>       <dbl>           <dbl>   <dbl>
## 1 Swap 2… EUR       -8.82e5  -8.75e5       5441.           1379. 7.71e-3
## 2 Swap n… EUR       -2.59e6  -2.86e6    -263836.          -5968. 1.07e-2
## 3 Swap 1… EUR       -1.63e4  -2.99e4      -3808.          -9749. 6.82e-4
## 4 Swap 2… EUR       -3.61e5  -3.61e5          0               0  1.18e-2
## # … with 1 more variable: pv01 <dbl>

You can see that I have used two objects that are delivered with the package:

  • swap.basket which consists in a 5 swaps portfolio that can be referenced as blueprint for your swap portfolio

  • EUR.curves this is the discount curve downloaded from Bloomberg as at the 14th of April 2019

We have tested the package using a 500 swaps portfolio and the results, in terms of performance are very encouraging. We analyse them using the amazing profvis tool.