Financial Market Building Blocks

Implements basic financial market objects like currencies, currency pairs, interest rates and interest rate indices. You will be able to use Benchmark instances of these objects which have been defined using their most common conventions or those defined by International Swap Dealer Association (ISDA, < https://www.isda.org>) legal documentation.


CRAN_Status_Badge Travis-CI Build Status AppVeyor Build Status Coverage Status

Implements basic financial market objects like currencies, currency pairs, interest rates and interest rate indices. You will be able to use Benchmark instances of these objects which have been defined using their most common conventions or those defined by International Swap Dealer Association (ISDA, https://www.isda.org) legal documentation.

Basic objects

You can create instances of key currencies and currency pairs (and of course create your own implementations):

library("fmdates")
library("fmbasics")
AUD()
AUDUSD()
#> <CurrencyPair> AUDUSD

These come with implementations of handy methods:

library("lubridate")
to_fx_value(dates = ymd(20171230), tenor = "spot", x = AUDUSD())
#> [1] "2018-01-03"
to_fx_value(ymd(20171230), months(3), AUDUSD())
#> [1] "2018-04-03"

You can create instances of key IBOR or ONIA interest rate indices:

USDLIBOR(months(3))
#> <IborIndex> 3m USD LIBOR
EONIA()
#> <CashIndex> EONIA

These also come with implementations of handy methods:

to_reset(dates = as.Date("2017-01-20"), index = USDLIBOR(months(3)))
#> [1] "2017-01-18"
to_value(as.Date("2017-01-20"), USDLIBOR(months(3)))
#> [1] "2017-01-24"
to_maturity(as.Date("2017-01-20"), USDLIBOR(months(3)))
#> [1] "2017-04-20"

Interest rates and discount factors

You can create and perform basic manipulation of interest rates and discount factors:

rr <- InterestRate(value = 0.01, compounding = Inf, day_basis = "act/365")
as_DiscountFactor(rr, d1 = ymd(20170120), d2 = ymd(20210120))
#> <DiscountFactor> 0.960763116514576, 2017-01-20--2021-01-20
# Convert to different rate basis
as_InterestRate(rr, day_basis = "act/360")
#> <InterestRate> 0.9863014%, CONTINUOUS, ACT/360
as_InterestRate(rr, compounding = 2, day_basis = "act/360")
#> <InterestRate> 0.9887373%, SEMI-ANNUAL, ACT/360
dd <- DiscountFactor(0.75, d1 = ymd(20170120), d2 = ymd(20210120))
as_InterestRate(dd, compounding = Inf, day_basis = "act/360")
#> <InterestRate> 7.088675%, CONTINUOUS, ACT/360

Pricing objects

It is also possible to create and interpolate on zero coupon interest rate curves:

zc <- build_zero_curve()
plot(zc$pillar_times, zc$pillar_zeros, xlab = 'Years', ylab = 'Zero')

interpolate(zc, year_frac(zc$reference_date, ymd(20170331), "act/365"))
#> [1] 0.0187453
interpolate_zeros(zc, ymd(20170331))
#> <InterestRate> 1.87453%, CONTINUOUS, ACT/365
interpolate_fwds(zc, ymd(20170331), ymd(20170630))
#> <InterestRate> 1.837274%, SIMPLE, ACT/365
interpolate_dfs(zc, ymd(20170331), ymd(20170630))
#> <DiscountFactor> 0.995440285935839, 2017-03-31--2017-06-30

Further details can be found in this package's help pages and vignettes (vignette(package = "fmbasics"))

News

Version 0.3.0

NEW:

  • interpolate_dfs(), interpolate_fwds() and interpolate_zeros() build on the lower level interpolate() for ZeroCurve objects.
  • SingleCurrencyMoney() and MultiCurrencyMoney() allows you to create single and multi-currency money objects that are not date dependent
  • CashFlow() allows you to create date dependent cash flows
  • Added a vignette to describe pricing objects introduced in v0.2 and in this version.

FIXED:

  • pfc_calendar field of IborIndex and CashIndex fields must now inherit from Calendar (#8). CashIndex and IborIndex constructors now support this.
  • The names of key indices are no longer prefixed by the associated currency ISO.

REMOVED:

  • fmdata_example() as only one data file is likely to be used in this package and this is to be used internally for the purposes of build_zero_curve()

Version 0.2.0

Implement ZeroCurve and associated interpolation schemes and methods (#1)

  • ZeroCurve() allows you to create zero curve objects from a set of discount factors and specifying the interpolation scheme to be used
  • Implement a set of lightweight interpolation schemes including ConstantInterpolation(), LinearInterpolation(), LogDFInterpolation() and CubicInterpolation(). Their behaviour is determined by the object in which they are stored
  • Implement a set of interpolation checkers is.[X]Interpolation()
  • Provide convenience functions that source example market data and allows you to build a zero curve from one such data set (fmdata_example() and build_zero_curve() respectively.

Version 0.1.0-99

  • Fix title of one of the vignettes

Version 0.1.0

  • Initial version
  • Exposes basic financial market building blocks as classes. These include currencies, currency pairs, indices, interest rates and discount factors.
  • Implements methods to create key instances of currency, currency pairs and indices for major markets.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.