| Title: | Extracts Risk Neutral Densities of Prices, Money Market Rates and Government Bond Yields from Interest Rates Futures Options Prices |
| Version: | 0.1.3 |
| Description: | Provides with parametric risk neutral densities and cumulative densities for futures prices on fixed-income products. It relies on options on Short Term Interest Rate futures contracts or options on government bond futures contracts. It models the price of the underlying asset as a mixture of either two or three lognormal densities. It also offers new functions which provide with risk neutral densities and cumulative densities of the money market rate or the government bond yield inferred from the futures contract's price, using the density of the futures price. The package leverages on the works of Melick, W. R. and Thomas, C. P. (1997) <doi:10.2307/2331318> and B. Bahra (1998) <doi:10.2139/ssrn.77429>. |
| License: | GPL-3 |
| Encoding: | UTF-8 |
| RoxygenNote: | 7.3.3 |
| Imports: | dplyr, ggplot2, lubridate, Rblpapi, scales, stats, tibble, tvm, utils, zoo |
| Suggests: | knitr, rmarkdown |
| VignetteBuilder: | knitr |
| NeedsCompilation: | no |
| Packaged: | 2026-05-15 17:11:13 UTC; William |
| Author: | William Arrata [aut, cre] |
| Maintainer: | William Arrata <william.arrata@gmail.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-05-15 21:20:02 UTC |
bond_future_charac_bbg
Description
bond_future_charac_bbg
Usage
bond_future_charac_bbg(bbg_tickers)
Arguments
bbg_tickers |
a vector of Bloomberg tickers of bond futures contracts, in character format |
Value
for each bond future contract, its maturity date in Date format, its currency, its listing place and its underlying asset in character format. Provided the contract has a Cheapest-to-Deliver Bond, its ISIN code in character format, its conversion factor in numeric format, its maturity date in Date format, its (annualized) coupon rate in numeric format, its frequency of coupon payment and its day count convention in character format
Examples
## Not run:
bond_future_charac_bbg(c("TYU24", "CNM6", "KAAH6", "IKM6", "OATU6"))
## End(Not run)
bond_future_price
Description
bond_future_price
Usage
bond_future_price(
call_prices,
call_strikes,
put_prices,
put_strikes,
nb_log,
r,
day_count_conv,
cot,
ctd_matu,
fut_price,
fut_matu,
option_matu,
start_date,
nationality = NA,
currency = NA
)
Arguments
call_prices |
a vector of call prices, in numeric format |
call_strikes |
a vector of call strikes attached to the call prices, in numeric format |
put_prices |
a vector of put prices, in numeric format |
put_strikes |
a vector of put strikes attached to the put prices, in numeric format |
nb_log |
a number for the number of lognormal densities in the lognormal mixture to model the futures contracts, either 2 or 3, in numeric format |
r |
a number for the riskfree spot rate whose maturity is equal to the option's maturity, in numeric format |
day_count_conv |
a number for the day count convention, 1 for ACT/ACT, 2 for ACT/360, 3 for ACT/365 and 4 for 30/360, in numeric format |
cot |
a number for the options' style, 1 for European options, 2 for American options and 3 for American options with futures-style margin, in numeric format |
ctd_matu |
a date for the maturity date of the Cheapest-to-Deliver Bond in the basket of deliverable bonds of the futures contract, in Date format |
fut_price |
a number for the futures contract price on calibration date, in numeric format |
fut_matu |
a date for the maturity date of the futures contract, in Date format |
option_matu |
a date for the maturity date of the options, in Date format |
start_date |
a date for the observation date, in Date format |
nationality |
a character for the nationality of the issuer of the bond in the futures contract underlying the option for the plot, in character format (NA by default) |
currency |
a character for the currency in which the futures contract and the options are traded for the plot, in character format (NA by default) |
Value
the mean and standard deviation of each component lognormal density and the weight on the first density (for a mixture of 2) or on the first 2 densities (for a mixture of 3) in numeric format, a discretized domain of the futures price by increments of 0.001 units of the currency of the futures contract, in numeric format, the probability density for each value in the discretized domain in numeric format, the cumulative density for each value in the discretized domain in numeric format, the type of convergence in the non linear least squares optimization in numeric format (0 indicating successful convergence), the mean, standard deviation, skewness and kurtosis of the distribution of futures prices in numeric format, quantiles of order 0.1%, 0.5%, 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95%, 99%, 99.5% and 99.9% of the distribution in numeric format, the mode of the distribution in numeric format, the options' prices predicted by the model in numeric format, a plot of the RND and a plot of the CDF of the futures price
Examples
bond_future_price(c(10.39,9.92,9.46,9.00,8.55,8.10,7.66,7.23,
6.81,6.39,5.98,5.58,5.20,4.82,4.46,4.10,3.76,3.44,3.13,2.83,2.56,
2.29,2.05,1.82,1.61,1.42,1.25,1.09,0.95,0.82,0.71,0.61,0.53,0.45,
0.38,0.33,0.28,0.23,0.20,0.17,0.14,0.12,0.10,0.08),
seq(106, 127.5, 0.5),
c(0.22,0.25,0.29,0.33,0.38,0.43,0.49,0.56,0.64,0.72,0.81,0.91,
1.03,1.15,1.29, 1.43,1.59,1.77,1.96,2.16,2.39,2.62,2.88,3.15,
3.44,3.75,4.08, 4.42,4.78,5.15,5.54,5.94,6.36,6.78,7.21,7.66,
8.11,8.56,9.03, 9.50,9.97,10.45,10.93,11.41),
seq(106, 127.5, 0.5),
2,
0.0344,
1,
3,
as.Date("2033-11-01"),
116.17,
as.Date("2024-12-10"),
as.Date("2024-11-22"),
as.Date("2024-06-14"),
"Italian",
"EUR")
ctd_bond_yield
Description
ctd_bond_yield
Usage
ctd_bond_yield(
call_prices,
call_strikes,
put_prices,
put_strikes,
nb_log,
r,
r_2,
day_count_conv,
cot,
conv_factor,
ctd_cp,
ctd_matu,
cp_f,
ctd_N,
sett,
fut_price,
fut_matu,
option_matu,
start_date,
nationality = NA,
currency = NA
)
Arguments
call_prices |
a vector of call prices, in numeric format |
call_strikes |
a vector of call strikes attached to the call prices, in numeric format |
put_prices |
a vector of put prices, in numeric format |
put_strikes |
a vector of put strikes attached to the put prices, in numeric format |
nb_log |
a number for the number of lognormal densities in the lognormal mixture to model the futures contracts, either 2 or 3, in numeric format |
r |
a number for the riskfree spot rate whose maturity is equal to the option's maturity, in numeric format |
r_2 |
a number for the riskfree spot rate whose maturity is equal to the futures contract's maturity, in numeric format |
day_count_conv |
a number for the day count convention, 1 for ACT/ACT, 2 for ACT/360, 3 for ACT/365 and 4 for 30/360, in numeric format |
cot |
a number for the options' style, 1 for European options, 2 for American options and 3 for American options with futures-style margin, in numeric format |
conv_factor |
a number for the conversion factor assigned by the futures exchange to the Cheapest-to-Deliver Bond, in numeric format |
ctd_cp |
a number for the coupon rate of the Cheapest-to-Deliver Bond, in numeric format |
ctd_matu |
a date for the maturity date of the Cheapest-to-Deliver Bond in the basket of deliverable bonds of the futures contract, in Date format |
cp_f |
a number for the frequency of coupon payment of the Cheapest-to-Deliver Bond, either 1 if the frequency is annual or 2 if semi-annual |
ctd_N |
a number for the value of the principal of the Cheapest-to-Deliver Bond, in numeric format |
sett |
a number for the number of days between the ex-coupon date and the coupon payment date of the Cheapest-to-Deliver Bond, in numeric format |
fut_price |
a number for the futures contract price on calibration date, in numeric format |
fut_matu |
a date for the maturity date of the futures contract, in Date format |
option_matu |
a date for the maturity date of the options, in Date format |
start_date |
a date for the observation date, in Date format |
nationality |
a character for the nationality of the issuer of the bond in the futures contract underlying the option for the plot, in character format (NA by default) |
currency |
a character for the currency in which the futures contract and the options are traded for the plot, in character format (NA by default) |
Value
a discretized domain of the Cheapest-to-Deliver bond yield in numeric format, the probability density for each value in the discretized domain in numeric format, the cumulative density for each value in the discretized domain in numeric format, the type of convergence in the non linear least squares optimization in numeric format (0 indicating successful convergence), the mean, standard deviation, skewness and kurtosis of the distribution of the Cheapest-to-Deliver bond yield in numeric format, quantiles of order 0.1%, 0.5%, 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95%, 99%, 99.5% and 99.9% of the distribution in numeric format, the mode the distribution in numeric format, a plot of the RND and a plot of the CDF of the Cheapest-to-Deliver bond yield
Examples
ctd_bond_yield(c(10.39,9.92,9.46,9.00,8.55,8.10,7.66,7.23,
6.81,6.39,5.98,5.58,5.20,4.82,4.46,4.10,3.76,3.44,3.13,2.83,2.56,
2.29,2.05,1.82,1.61,1.42,1.25,1.09,0.95,0.82,0.71,0.61,0.53,0.45,
0.38,0.33,0.28,0.23,0.20,0.17,0.14,0.12,0.10,0.08),
seq(106, 127.5, 0.5),
c(0.22,0.25,0.29,0.33,0.38,0.43,0.49,0.56,0.64,0.72,0.81,0.91,
1.03,1.15,1.29, 1.43,1.59,1.77,1.96,2.16,2.39,2.62,2.88,3.15,
3.44,3.75,4.08, 4.42,4.78,5.15,5.54,5.94,6.36,6.78,7.21,7.66,
8.11,8.56,9.03, 9.50,9.97,10.45,10.93,11.41),
seq(106, 127.5, 0.5),
2,
0.0344,
0.035,
1,
3,
0.893,
0.0435,
as.Date("2033-11-01"),
2,
100,
2,
116.17,
as.Date("2024-12-10"),
as.Date("2024-11-22"),
as.Date("2024-06-14"),
"Italian",
"EUR")
option_prices_bbg
Description
option_prices_bbg
Usage
option_prices_bbg(fut_bbg_ticker, date)
Arguments
fut_bbg_ticker |
a unique Bloomberg ticker of a STIR or bond future contract, in character format |
date |
a date for the recovery of options' closing prices, in Date format |
Value
provided options on the futures contract exist, call and put options strike prices and attached call and put options closing market prices in numeric format, the maturity date of the options in Date format, the option's style in character format, the option's currency in character format, the listing place of the options in character format, the closing price of the futures contract in numeric format. When options of different maturities are listed on the same futures contract, returns prices and characteristics of options whose maturity date is closest to the maturity date of the futures contract.
Examples
## Not run:
option_prices_bbg("ERM6", as.Date("2026-03-20"))
## End(Not run)
stir_future_charac_bbg
Description
stir_future_charac_bbg
Usage
stir_future_charac_bbg(bbg_tickers)
Arguments
bbg_tickers |
a vector of Bloomberg tickers of STIR futures contracts, in character format |
Value
for each STIR future contract, its maturity date in Date format, its currency, its listing place and its underlying asset in character format
Examples
## Not run:
stir_future_charac_bbg(c("FFU24", "ERM6"))
## End(Not run)
stir_future_price
Description
stir_future_price
Usage
stir_future_price(
call_prices,
call_strikes,
put_prices,
put_strikes,
nb_log,
r,
day_count_conv,
cot,
fut_price,
fut_matu,
option_matu,
start_date,
ref_rate = NA,
currency = NA
)
Arguments
call_prices |
a vector of call prices, in numeric format |
call_strikes |
a vector of call strikes attached to the call prices, in numeric format |
put_prices |
a vector of put prices, in numeric format |
put_strikes |
a vector of put strikes attached to the put prices, in numeric format |
nb_log |
a number for the number of lognormal densities in the lognormal mixture to model the futures contracts, either 2 or 3, in numeric format |
r |
a number for the riskfree spot rate whose maturity is equal to the option's maturity, in numeric format |
day_count_conv |
a number for the day count convention, 1 for ACT/ACT, 2 for ACT/360, 3 for ACT/365 and 4 for 30/360, in numeric format |
cot |
a number for the options' style, 1 for European options, 2 for American options and 3 for American options with futures-style margin, in numeric format |
fut_price |
a number for the futures contract price on calibration date, in numeric format |
fut_matu |
a date for the maturity date of the futures contract, in Date format |
option_matu |
a date for the maturity date of the options, in Date format |
start_date |
a date for the observation date, in Date format |
ref_rate |
a character for the name of the STIR for the plot, in character format (NA by default) |
currency |
a character for the currency in which the futures contract and the options are traded for the plot, in character format (NA by default) |
Value
the mean and standard deviation of each component lognormal density and the weight on the first density (for a mixture of 2) or on the first 2 densities (for a mixture of 3) in numeric format, a discretized domain of the futures price by increments of 0.001 units of the currency of the futures contract, in numeric format, the probability density for each value in the discretized domain in numeric format, the cumulative density for each value in the discretized domain in numeric format, the type of convergence in the non linear least squares optimization in numeric format (0 indicating successful convergence), the mean, standard deviation, skewness and kurtosis of the distribution of futures prices in numeric format, quantiles of order 0.1%, 0.5%, 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95%, 99%, 99.5% and 99.9% of the distribution in numeric format, the mode of the distribution in numeric format, the options' prices predicted by the model in numeric format, a plot of the RND and a plot of the CDF of the futures price
Examples
stir_future_price( c(1.44500, 1.32000, 1.19750, 1.07500, 0.95750,
0.84250, 0.78750, 0.73250, 0.68000, 0.62750, 0.57750, 0.53000, 0.48500,
0.44000, 0.39750, 0.35750, 0.32000, 0.28500, 0.25250, 0.22250, 0.19500,
0.17000, 0.14750, 0.12750, 0.10750, 0.09250, 0.07750, 0.06500, 0.05500,
0.04500, 0.03750, 0.03000, 0.02500, 0.02000, 0.01500, 0.01250, 0.01000,
0.00750, 0.00500, 0.00500, 0.00250, 0.00250, 0.00250, 0.00250,
rep(0.00024, 47)),
c(seq(93.25, 93.875, 0.125), seq(93.9375, 98.8125, 0.0625),
seq(98.875, 99.5, 0.125)),
c(0.0025, 0.0050, 0.0075, 0.0125, 0.0175, 0.0300, 0.0350, 0.0425, 0.0525,
0.0625, 0.0750, 0.0900, 0.1050, 0.1225, 0.1425, 0.1650, 0.1900, 0.2175,
0.2450, 0.2775, 0.3125, 0.3500, 0.3875, 0.4300, 0.4725, 0.5175, 0.5675,
0.6150, 0.6675, 0.7200, 0.7750, 0.8300, 0.8850, 0.9425, 1.0025, 1.0625,
1.1225, 1.1825, 1.2425, 1.3050, 1.3675, 1.4300, 1.4925, 1.5550, 1.6175,
1.6800, 1.7425, 1.8050, 1.8675, 1.9300, 1.9925, 2.0550, 2.1175, 2.1800,
2.2425, 2.3050, 2.3675, 2.4300, 2.4925, 2.5550, 2.6175, 2.6800, 2.7425,
2.8050, 2.8675, 2.9300, 2.9925, 3.0550, 3.1175, 3.1800, 3.2425, 3.3050,
3.3675, 3.4300, 3.4925, 3.5550, 3.6175, 3.6800, 3.7425, 3.8050, 3.8675,
3.9300, 3.9925, 4.0550, 4.1175, 4.1800, 4.3050, 4.4300, 4.5550, 4.6800,
4.8050),
c(seq(93.25, 93.875, 0.125), seq(93.9375, 98.8125, 0.0625),
seq(98.875, 99.5, 0.125)),
2,
0.0537,
1,
2,
94.7,
as.Date("2024-02-29"),
as.Date("2024-02-25"),
as.Date("2023-12-18"),
"fed_fund_rate",
"USD")
stir_rate
Description
stir_rate
Usage
stir_rate(
call_prices,
call_strikes,
put_prices,
put_strikes,
nb_log,
r,
day_count_conv,
cot,
fut_price,
fut_matu,
option_matu,
start_date,
ref_rate = NA,
currency = NA
)
Arguments
call_prices |
a vector of call prices, in numeric format |
call_strikes |
a vector of call strikes attached to the call prices, in numeric format |
put_prices |
a vector of put prices, in numeric format |
put_strikes |
a vector of put strikes attached to the put prices, in numeric format |
nb_log |
a number for the number of lognormal densities in the lognormal mixture to model the futures contracts, either 2 or 3, in numeric format |
r |
a number for the riskfree spot rate whose maturity is equal to the option's maturity, in numeric format |
day_count_conv |
a number for the day count convention, 1 for ACT/ACT, 2 for ACT/360, 3 for ACT/365 and 4 for 30/360, in numeric format |
cot |
a number for the options' style, 1 for European options, 2 for American options and 3 for American options with futures-style margin, in numeric format |
fut_price |
a number for the futures contract price on calibration date, in numeric format |
fut_matu |
a date for the maturity date of the futures contract, in Date format |
option_matu |
a date for the maturity date of the options, in Date format |
start_date |
a date for the observation date, in Date format |
ref_rate |
a character for the name of the STIR for the plot, in character format (NA by default) |
currency |
a character for the currency in which the futures contract and the options are traded for the plot, in character format (NA by default) |
Value
a discretized domain of the future rate by increments of 0.001% in numeric format, the probability density for each value in the discretized domain in numeric format, the cumulative density for each value in the discretized domain in numeric format, the type of convergence in the non linear least squares optimization in numeric format (0 indicating successful convergence), the mean, standard deviation, skewness and kurtosis of the distribution of future rates in numeric format, quantiles of order 0.1%, 0.5%, 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95%, 99%, 99.5% and 99.9% of the distribution in numeric format, the mode the distribution in numeric format, a plot of the RND and a plot of the CDF of the future rate
Examples
stir_rate( c(1.44500, 1.32000, 1.19750, 1.07500, 0.95750,
0.84250, 0.78750, 0.73250, 0.68000, 0.62750, 0.57750, 0.53000, 0.48500,
0.44000, 0.39750, 0.35750, 0.32000, 0.28500, 0.25250, 0.22250, 0.19500,
0.17000, 0.14750, 0.12750, 0.10750, 0.09250, 0.07750, 0.06500, 0.05500,
0.04500, 0.03750, 0.03000, 0.02500, 0.02000, 0.01500, 0.01250, 0.01000,
0.00750, 0.00500, 0.00500, 0.00250, 0.00250, 0.00250, 0.00250,
rep(0.00024, 47)),
c(seq(93.25, 93.875, 0.125), seq(93.9375, 98.8125, 0.0625),
seq(98.875, 99.5, 0.125)),
c(0.0025, 0.0050, 0.0075, 0.0125, 0.0175, 0.0300, 0.0350, 0.0425,
0.0525, 0.0625, 0.0750, 0.0900, 0.1050, 0.1225, 0.1425, 0.1650, 0.1900,
0.2175, 0.2450, 0.2775, 0.3125, 0.3500, 0.3875, 0.4300, 0.4725, 0.5175,
0.5675, 0.6150, 0.6675, 0.7200, 0.7750, 0.8300, 0.8850, 0.9425, 1.0025,
1.0625, 1.1225, 1.1825, 1.2425, 1.3050, 1.3675, 1.4300, 1.4925, 1.5550,
1.6175, 1.6800, 1.7425, 1.8050, 1.8675, 1.9300, 1.9925, 2.0550, 2.1175,
2.1800, 2.2425, 2.3050, 2.3675, 2.4300, 2.4925, 2.5550, 2.6175, 2.6800,
2.7425, 2.8050, 2.8675, 2.9300, 2.9925, 3.0550, 3.1175, 3.1800, 3.2425,
3.3050, 3.3675, 3.4300, 3.4925, 3.5550, 3.6175, 3.6800, 3.7425, 3.8050,
3.8675, 3.9300, 3.9925, 4.0550, 4.1175, 4.1800, 4.3050, 4.4300, 4.5550,
4.6800, 4.8050),
c(seq(93.25, 93.875, 0.125), seq(93.9375, 98.8125, 0.0625),
seq(98.875, 99.5, 0.125)),
2,
0.0537,
1,
2,
94.7,
as.Date("2024-02-29"),
as.Date("2024-02-25"),
as.Date("2023-12-18"),
"fed_fund_rate",
"USD")