Equivalent interest rates in FM actuarial notation
Source:R/interest_equivalents.R
interest_equivalents.RdConverts a single interest-rate specification into equivalent actuarial
rates for the same conversion frequency m.
Usage
interest_equivalents(
i_type = c("effective", "nominal_interest", "nominal_discount", "force"),
i,
m = 1L
)Value
A tibble with columns:
- family
Rate or factor family:
"effective","discount","discount_factor","force","nominal_interest", or"nominal_discount".- notation
Actuarial notation for the equivalent rate.
- m
Conversion frequency used for nominal rates.
- description
Human-readable description.
- value
Equivalent rate value.
Details
Internally, the supplied rate is first converted to the annual effective
interest rate \(i\) using standardize_interest.
This function follows the compact actuarial notation used throughout
tidyactuarial: i denotes the interest-rate value,
i_type denotes the type of interest rate, and m denotes the
conversion frequency for nominal rates.
Calculations retain the log accumulation rate of the original input. An extreme annual effective equivalent may round to -1 or overflow to Inf while other equivalent quantities remain representable.
Given the annual effective interest rate \(i\), the equivalents are:
- Effective discount rate:
\(d = i/(1+i)\)
- Discount factor:
\(v = 1/(1+i)\)
- Force of interest:
\(\delta = \ln(1+i)\)
- Nominal interest:
\(j^{(m)} = m[(1+i)^{1/m} - 1]\)
- Nominal discount:
\(d^{(m)} = m[1 - (1+i)^{-1/m}]\)
Examples
interest_equivalents(i_type = "nominal_interest", i = 0.18, m = 4)
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.193
#> 2 discount d NA effective annual discount rate 0.161
#> 3 discount_factor v NA annual discount factor 0.839
#> 4 force delta NA force of interest 0.176
#> 5 nominal_interest j^(4) 4 nominal annual interest rate convertibl… 0.18
#> 6 nominal_discount d^(4) 4 nominal annual discount rate convertibl… 0.172
interest_equivalents(i_type = "nominal_discount", i = 0.10, m = 12)
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.106
#> 2 discount d NA effective annual discount rate 0.0955
#> 3 discount_factor v NA annual discount factor 0.904
#> 4 force delta NA force of interest 0.100
#> 5 nominal_interest j^(12) 12 nominal annual interest rate convertib… 0.101
#> 6 nominal_discount d^(12) 12 nominal annual discount rate convertib… 0.1
interest_equivalents(i_type = "force", i = 0.12)
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.127
#> 2 discount d NA effective annual discount rate 0.113
#> 3 discount_factor v NA annual discount factor 0.887
#> 4 force delta NA force of interest 0.12
#> 5 nominal_interest j^(1) 1 nominal annual interest rate convertibl… 0.127
#> 6 nominal_discount d^(1) 1 nominal annual discount rate convertibl… 0.113
interest_equivalents(i_type = "effective", i = 0.08)
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.08
#> 2 discount d NA effective annual discount rate 0.0741
#> 3 discount_factor v NA annual discount factor 0.926
#> 4 force delta NA force of interest 0.0770
#> 5 nominal_interest j^(1) 1 nominal annual interest rate convertib… 0.08
#> 6 nominal_discount d^(1) 1 nominal annual discount rate convertib… 0.0741
# Batch use with purrr
if (requireNamespace("purrr", quietly = TRUE) &&
requireNamespace("tibble", quietly = TRUE)) {
cases <- tibble::tibble(
i_type = c("effective", "force"),
i = c(0.08, 0.12),
m = c(1, 1)
)
purrr::pmap(cases, interest_equivalents)
}
#> [[1]]
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.08
#> 2 discount d NA effective annual discount rate 0.0741
#> 3 discount_factor v NA annual discount factor 0.926
#> 4 force delta NA force of interest 0.0770
#> 5 nominal_interest j^(1) 1 nominal annual interest rate convertib… 0.08
#> 6 nominal_discount d^(1) 1 nominal annual discount rate convertib… 0.0741
#>
#> [[2]]
#> # A tibble: 6 × 5
#> family notation m description value
#> <chr> <chr> <int> <chr> <dbl>
#> 1 effective i NA effective annual interest rate 0.127
#> 2 discount d NA effective annual discount rate 0.113
#> 3 discount_factor v NA annual discount factor 0.887
#> 4 force delta NA force of interest 0.12
#> 5 nominal_interest j^(1) 1 nominal annual interest rate convertibl… 0.127
#> 6 nominal_discount d^(1) 1 nominal annual discount rate convertibl… 0.113
#>