| Title: | Actuarial Risk Modeling and Life Contingencies |
|---|---|
| Description: | Provides functions for actuarial risk modeling, including survival models, life annuities, multiple-decrement models, and mortality improvement projections. The package is designed to align with standard actuarial notation and supports teaching, exam preparation, and reproducible actuarial analysis. The methods are based on standard actuarial references including Camilli, Duncan and London (2014, ISBN:9781625423474) "Models for Quantifying Risk" and Dickson, Hardy and Waters (2020, ISBN:9781108478083) "Actuarial Mathematics for Life Contingent Risks". |
| Authors: | Nii Okine [aut, cre] |
| Maintainer: | Nii Okine <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.1 |
| Built: | 2026-10-29 23:11:50 UTC |
| Source: | https://github.com/aokine/mqriskr |
Computes by evaluating
at doubled force.
A2barx(x, i, model, ...)A2barx(x, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes .
A2barxn(x, n, i, model, ...)A2barxn(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes by evaluating
at doubled force.
A2barxn1(x, n, i, model, ...)A2barxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes by evaluating
at doubled force.
A2nAbarx(x, n, i, model, ...)A2nAbarx(x, n, i, model, ...)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes by evaluating
at doubled force.
A2nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)A2nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of second moments.
Second moment of m-thly deferred insurance PV
A2nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)A2nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of second moments.
Computes .
A2nEx(x, n, i, tbl = NULL, model = NULL, ...)A2nEx(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of second moments.
Computes by evaluating at doubled force.
A2x(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)A2x(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of second moments.
Computes by evaluating
at doubled force.
A2x_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)A2x_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of second moments.
Computes .
A2xn(x, n, i, tbl = NULL, model = NULL, ...)A2xn(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of second moments.
Second moment of m-thly endowment insurance PV
A2xn_m(x, n, i, m, model, ...)A2xn_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes by evaluating
at doubled force.
A2xn1(x, n, i, tbl = NULL, model = NULL, ...)A2xn1(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of second moments.
Second moment of m-thly term insurance PV
A2xn1_m(x, n, i, m, model, ...)A2xn1_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of second moments.
Computes the actuarial present value of the portion of the projected benefit attributed to past service.
AAL_PUC_db( projected_benefit, past_service, total_service, v_to_ret, p_surv, adue_ret )AAL_PUC_db( projected_benefit, past_service, total_service, v_to_ret, p_surv, adue_ret )
projected_benefit |
Nonnegative projected annual benefit at retirement. |
past_service |
Nonnegative service completed through the valuation date. |
total_service |
Positive total service at retirement. |
v_to_ret |
Nonnegative discount factor from the valuation date to retirement. |
p_surv |
Survival or active-service probability to retirement in
|
adue_ret |
Positive retirement annuity-due factor. |
A numeric vector.
AAL_PUC_db( projected_benefit = 30000, past_service = 10, total_service = 30, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )AAL_PUC_db( projected_benefit = 30000, past_service = 10, total_service = 30, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )
Computes the actuarial present value of the benefit accrued through the valuation date.
AAL_TUC_db(accrued_benefit, v_to_ret, p_surv, adue_ret)AAL_TUC_db(accrued_benefit, v_to_ret, p_surv, adue_ret)
accrued_benefit |
Nonnegative accrued benefit. |
v_to_ret |
Nonnegative discount factor from the valuation date to retirement. |
p_surv |
Survival or active-service probability to retirement in
|
adue_ret |
Positive retirement annuity-due factor. |
A numeric vector.
AAL_TUC_db( accrued_benefit = 12000, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )AAL_TUC_db( accrued_benefit = 12000, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )
Computes the accrued benefit using salary history through the valuation date.
AB_cae(salary_history, p)AB_cae(salary_history, p)
salary_history |
Positive numeric vector of annual salaries. |
p |
Nonnegative scalar accrual percentage. |
A numeric scalar.
AB_cae( salary_history = c(100000, 104000, 108160), p = 1 )AB_cae( salary_history = c(100000, 104000, 108160), p = 1 )
Computes the accrued benefit using salary and service history through the valuation date.
AB_fas(salary_history, p, fas_years = 3)AB_fas(salary_history, p, fas_years = 3)
salary_history |
Positive numeric vector of annual salaries. |
p |
Nonnegative scalar accrual percentage. |
fas_years |
Positive integer number of years in the salary average. |
A numeric scalar.
AB_fas( salary_history = c(150000, 156000), p = 1, fas_years = 2 )AB_fas( salary_history = c(150000, 156000), p = 1, fas_years = 2 )
Computes
.
Abarx(x, i, model, ...)Abarx(x, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes .
Abarx_udd(Ax, i)Abarx_udd(Ax, i)
Ax |
Discrete whole life insurance APV. |
i |
Effective annual interest rate. |
Continuous whole life insurance APV under UDD.
Approximates the actuarial present value of a benefit payable at the moment of decrement using the trapezoidal rule.
Abarxj_md(t, ptau, muj, delta, benefit = 1)Abarxj_md(t, ptau, muj, delta, benefit = 1)
t |
Strictly increasing nonnegative time points. |
ptau |
In-force probabilities at the supplied time points. |
muj |
Cause-specific decrement intensities at the supplied time points. |
delta |
Force of interest. May be scalar or vector. |
benefit |
Benefit payable on decrement. May be scalar or vector. |
A numeric vector of actuarial present values.
t <- seq(0, 20, by = 0.1) ptau <- exp(-0.012 * t) muj <- rep(0.002, length(t)) Abarxj_md(t, ptau, muj, delta = 0.05, benefit = 2000)t <- seq(0, 20, by = 0.1) ptau <- exp(-0.012 * t) muj <- rep(0.002, length(t)) Abarxj_md(t, ptau, muj, delta = 0.05, benefit = 2000)
Computes
.
Abarxn(x, n, i, model, ...)Abarxn(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes
.
Abarxn_udd(Axn1, nEx, i)Abarxn_udd(Axn1, nEx, i)
Axn1 |
Discrete term insurance APV. |
nEx |
Pure endowment APV, |
i |
Effective annual interest rate. |
Continuous endowment insurance APV under UDD.
Computes
.
Abarxn1(x, n, i, model, ...)Abarxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes .
Abarxn1_udd(Axn1, i)Abarxn1_udd(Axn1, i)
Axn1 |
Discrete term insurance APV. |
i |
Effective annual interest rate. |
Continuous term insurance APV under UDD.
Computes the excess-payment-to-required-net-single-premium ratio, capped at one.
ag38_prefunding_ratio(excess_payment, nsp_required)ag38_prefunding_ratio(excess_payment, nsp_required)
excess_payment |
Nonnegative excess payment or shadow-fund amount. |
nsp_required |
Positive net single premium required to fully fund the guarantee. |
A numeric vector.
ag38_prefunding_ratio(60000, 100000)ag38_prefunding_ratio(60000, 100000)
Computes the prefunding ratio, net additional amount, reduced deficiency reserve, intermediate reserve, and increased basic reserve.
ag38_reserve_ul( basic_reserve, deficiency_reserve = 0, excess_payment, nsp_required, valuation_nsp, surrender_charge = 0 )ag38_reserve_ul( basic_reserve, deficiency_reserve = 0, excess_payment, nsp_required, valuation_nsp, surrender_charge = 0 )
basic_reserve |
Nonnegative basic reserve. |
deficiency_reserve |
Nonnegative deficiency reserve. |
excess_payment |
Nonnegative excess payment or shadow-fund amount. |
nsp_required |
Positive net single premium required to fully fund the guarantee. |
valuation_nsp |
Nonnegative valuation net single premium. |
surrender_charge |
Nonnegative surrender charge. |
Scalar inputs preserve the original named-list output. Vectorized inputs return a data frame with one row per calculation.
For scalar inputs, a named list. For vectorized inputs, a data frame containing the same calculated quantities.
ag38_reserve_ul( basic_reserve = 10000, deficiency_reserve = 0, excess_payment = 60000, nsp_required = 100000, valuation_nsp = 150000, surrender_charge = 5000 )ag38_reserve_ul( basic_reserve = 10000, deficiency_reserve = 0, excess_payment = 60000, nsp_required = 100000, valuation_nsp = 150000, surrender_charge = 5000 )
Annual whole life, temporary, deferred, and actuarial accumulated value annuity functions in immediate, due, and continuous forms.
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
Computes .
ax(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) adotx(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) abarx(x, i, model, ..., tol = 1e-10) axn(x, n, i, model = NULL, ..., tbl = NULL) adotxn(x, n, i, model = NULL, ..., tbl = NULL) abarxn(x, n, i, model, ...) nax(x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) nadotx(x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) nabarx(x, n, i, model, ..., tol = 1e-10) sxn(x, n, i, model = NULL, ..., tbl = NULL) sdotxn(x, n, i, model = NULL, ..., tbl = NULL) sbarxn(x, n, i, model, ...)ax(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) adotx(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) abarx(x, i, model, ..., tol = 1e-10) axn(x, n, i, model = NULL, ..., tbl = NULL) adotxn(x, n, i, model = NULL, ..., tbl = NULL) abarxn(x, n, i, model, ...) nax(x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) nadotx(x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) nabarx(x, n, i, model, ..., tol = 1e-10) sxn(x, n, i, model = NULL, ..., tbl = NULL) sdotxn(x, n, i, model = NULL, ..., tbl = NULL) sbarxn(x, n, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Optional survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object for annual discrete annuity functions. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
n |
Term in years. |
Numeric vector containing the requested annuity present value or actuarial accumulated value.
UDD-based approximations for annual, fractional-payment, and continuous annuity functions.
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Uses the identity
together with the package's existing Abarxn_udd() approximation.
Computes
adotx_m_udd(x, m, i, model, ...) adotxn_m_udd(x, n, m, i, model, ...) nadotx_m_udd(x, n, m, i, model, ...) ax_m_udd(x, m, i, model, ...) axn_m_udd(x, n, m, i, model, ...) nax_m_udd(x, n, m, i, model, ...) sdotxn_m_udd(x, n, m, i, model, ...) sxn_m_udd(x, n, m, i, model, ...) abarx_udd(x, i, model, ...) abarxn_udd(x, n, i, model, ...) nabarx_udd(x, n, i, model, ...)adotx_m_udd(x, m, i, model, ...) adotxn_m_udd(x, n, m, i, model, ...) nadotx_m_udd(x, n, m, i, model, ...) ax_m_udd(x, m, i, model, ...) axn_m_udd(x, n, m, i, model, ...) nax_m_udd(x, n, m, i, model, ...) sdotxn_m_udd(x, n, m, i, model, ...) sxn_m_udd(x, n, m, i, model, ...) abarx_udd(x, i, model, ...) abarxn_udd(x, n, i, model, ...) nabarx_udd(x, n, i, model, ...)
x |
Age. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
n |
Term. |
These functions implement the standard Uniform Distribution of Deaths approximations linking annual, m-thly, and continuous annuity values.
The exported functions documented on this page are:
ax_m_udd()
axn_m_udd()
nax_m_udd()
adotx_m_udd()
adotxn_m_udd()
nadotx_m_udd()
sxn_m_udd()
sdotxn_m_udd()
abarx_udd()
abarxn_udd()
nabarx_udd()
The abarxn_udd() calculation uses the existing Abarxn_udd() insurance approximation. Consequently, additional survival-model arguments are not used in that calculation.
Numeric vector.
Woolhouse 2-term approximations for fractional-payment annuity functions.
ax_m_woolhouse2(x, m, i, model, ...) adotx_m_woolhouse2(x, m, i, model, ...) nax_m_woolhouse2(x, n, m, i, model, ...) nadotx_m_woolhouse2(x, n, m, i, model, ...) axn_m_woolhouse2(x, n, m, i, model, ...) adotxn_m_woolhouse2(x, n, m, i, model, ...) sxn_m_woolhouse2(x, n, m, i, model, ...) sdotxn_m_woolhouse2(x, n, m, i, model, ...) abarx_woolhouse2(x, i, model, ...)ax_m_woolhouse2(x, m, i, model, ...) adotx_m_woolhouse2(x, m, i, model, ...) nax_m_woolhouse2(x, n, m, i, model, ...) nadotx_m_woolhouse2(x, n, m, i, model, ...) axn_m_woolhouse2(x, n, m, i, model, ...) adotxn_m_woolhouse2(x, n, m, i, model, ...) sxn_m_woolhouse2(x, n, m, i, model, ...) sdotxn_m_woolhouse2(x, n, m, i, model, ...) abarx_woolhouse2(x, i, model, ...)
x |
Age. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
n |
Term. |
Numeric vector.
Woolhouse 3-term approximations for fractional-payment annuity functions.
ax_m_woolhouse3(x, m, i, model, ...) adotx_m_woolhouse3(x, m, i, model, ...) nax_m_woolhouse3(x, n, m, i, model, ...) nadotx_m_woolhouse3(x, n, m, i, model, ...) axn_m_woolhouse3(x, n, m, i, model, ...) adotxn_m_woolhouse3(x, n, m, i, model, ...) abarx_woolhouse3(x, i, model, ...)ax_m_woolhouse3(x, m, i, model, ...) adotx_m_woolhouse3(x, m, i, model, ...) nax_m_woolhouse3(x, n, m, i, model, ...) nadotx_m_woolhouse3(x, n, m, i, model, ...) axn_m_woolhouse3(x, n, m, i, model, ...) adotxn_m_woolhouse3(x, n, m, i, model, ...) abarx_woolhouse3(x, i, model, ...)
x |
Age. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
n |
Term. |
Numeric vector.
Computes the present value of an n-period annuity certain with level payments of 1 per period.
annuity_certain(n, i, due = FALSE, m = 1, cont = FALSE)annuity_certain(n, i, due = FALSE, m = 1, cont = FALSE)
n |
Number of payments or periods. May be scalar or vector. |
i |
Effective interest rate per period. May be scalar or vector. |
due |
If 'TRUE', annuity-due; otherwise annuity-immediate. |
m |
Payment frequency per period. 'm = 1' means annual. |
cont |
If 'TRUE', use the continuous payment model. |
Numeric vector of present values.
annuity_certain(n = 10, i = 0.05) annuity_certain(n = c(5, 10), i = 0.05) annuity_certain(n = 10, i = c(0.03, 0.05)) annuity_certain(n = 10, i = 0.05, due = TRUE) annuity_certain(n = 10, i = 0.05, cont = TRUE)annuity_certain(n = 10, i = 0.05) annuity_certain(n = c(5, 10), i = 0.05) annuity_certain(n = 10, i = c(0.03, 0.05)) annuity_certain(n = 10, i = 0.05, due = TRUE) annuity_certain(n = 10, i = 0.05, cont = TRUE)
Life annuities payable m-thly.
ax_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12) adotx_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12) axn_m(x, n, m, i, model, ...) adotxn_m(x, n, m, i, model, ...) nax_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12) nadotx_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12) sxn_m(x, n, m, i, model, ...) sdotxn_m(x, n, m, i, model, ...)ax_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12) adotx_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12) axn_m(x, n, m, i, model, ...) adotxn_m(x, n, m, i, model, ...) nax_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12) nadotx_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12) sxn_m(x, n, m, i, model, ...) sdotxn_m(x, n, m, i, model, ...)
x |
Age. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model name. |
... |
Additional parameters passed to the survival model. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
n |
Term or deferral period in years. |
Numeric vector containing the requested m-thly annuity value or actuarial accumulated value.
Identities linking annual and continuous annuity functions to the corresponding insurance functions.
Computes .
Computes .
Computes .
Computes
.
Computes .
Computes .
Computes .
Computes .
Computes .
annuity_identity_ax(x, i, model = NULL, ..., tbl = NULL) annuity_identity_adotx(x, i, model = NULL, ..., tbl = NULL) annuity_identity_abarx(x, i, model, ...) annuity_identity_axn(x, n, i, model = NULL, ..., tbl = NULL) annuity_identity_adotxn(x, n, i, model = NULL, ..., tbl = NULL) annuity_identity_abarxn(x, n, i, model, ...) annuity_identity_nax( x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12 ) annuity_identity_nadotx( x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12 ) annuity_identity_nabarx(x, n, i, model, ..., tol = 1e-10)annuity_identity_ax(x, i, model = NULL, ..., tbl = NULL) annuity_identity_adotx(x, i, model = NULL, ..., tbl = NULL) annuity_identity_abarx(x, i, model, ...) annuity_identity_axn(x, n, i, model = NULL, ..., tbl = NULL) annuity_identity_adotxn(x, n, i, model = NULL, ..., tbl = NULL) annuity_identity_abarxn(x, n, i, model, ...) annuity_identity_nax( x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12 ) annuity_identity_nadotx( x, n, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12 ) annuity_identity_nabarx(x, n, i, model, ..., tol = 1e-10)
x |
Age. |
i |
Effective annual interest rate. |
model |
Optional survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object for discrete identities. |
n |
Term or deferral period in years. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
Numeric vector containing the annuity value computed from the corresponding annuity-insurance identity.
Increasing and decreasing life annuity functions.
Iax(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) Iaxn(x, n, i, model = NULL, ..., tbl = NULL) Daxn(x, n, i, model = NULL, ..., tbl = NULL) Iadotx(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) Iadotxn(x, n, i, model = NULL, ..., tbl = NULL) Dadotxn(x, n, i, model = NULL, ..., tbl = NULL) Iabarx(x, i, model, ..., tol = 1e-10) Iabarxn(x, n, i, model, ...) Dabarxn(x, n, i, model, ...)Iax(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) Iaxn(x, n, i, model = NULL, ..., tbl = NULL) Daxn(x, n, i, model = NULL, ..., tbl = NULL) Iadotx(x, i, model = NULL, ..., tbl = NULL, k_max = 5000, tol = 1e-12) Iadotxn(x, n, i, model = NULL, ..., tbl = NULL) Dadotxn(x, n, i, model = NULL, ..., tbl = NULL) Iabarx(x, i, model, ..., tol = 1e-10) Iabarxn(x, n, i, model, ...) Dabarxn(x, n, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Optional survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object for discrete functions. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
n |
Term in years. |
Numeric vector containing the requested increasing or decreasing annuity value.
Computes the actuarial present value of a projected annual retirement benefit. Scalar arguments are recycled to a common length.
APV_NR_db(PABz, v_to_ret, p_surv, adue_ret)APV_NR_db(PABz, v_to_ret, p_surv, adue_ret)
PABz |
Nonnegative projected annual benefit at retirement. |
v_to_ret |
Nonnegative discount factor from the valuation date to retirement. |
p_surv |
Survival or active-service probability to retirement in
|
adue_ret |
Positive retirement annuity-due factor. |
A numeric vector.
APV_NR_db( PABz = 108008.66, v_to_ret = 1 / 1.06^30, p_surv = 0.8, adue_ret = 12 )APV_NR_db( PABz = 108008.66, v_to_ret = 1 / 1.06^30, p_surv = 0.8, adue_ret = 12 )
Convenience interface to AS_path_md() for two causes.
AS_path(AS0, G, r, e, b1, b2, q1, q2, p_tau, i, b3 = NULL)AS_path(AS0, G, r, e, b1, b2, q1, q2, p_tau, i, b3 = NULL)
AS0 |
Initial asset share. |
G |
Premium amount by policy year. |
r |
Percent-of-premium expense rate by policy year. |
e |
Fixed expense by policy year. |
b1 |
Cause 1 benefit by policy year. |
b2 |
Cause 2 benefit by policy year. |
q1 |
Cause 1 probability by policy year. |
q2 |
Cause 2 probability by policy year. |
p_tau |
In-force probability by policy year. |
i |
Effective annual interest rate by policy year. |
b3 |
Survival benefit by policy year. |
A data frame with policy year k and asset share AS.
Computes projected asset shares for a multiple-decrement contract. Rows of
b_mat and q_mat represent policy years and columns represent
decrement causes.
AS_path_md(AS0, G, r, e, b_mat, q_mat, p_tau, i, b_surv = NULL)AS_path_md(AS0, G, r, e, b_mat, q_mat, p_tau, i, b_surv = NULL)
AS0 |
Initial asset share. |
G |
Premium amount by policy year. |
r |
Percent-of-premium expense rate by policy year. |
e |
Fixed expense by policy year. |
b_mat |
Matrix of decrement benefits. |
q_mat |
Matrix of decrement probabilities. |
p_tau |
In-force probability by policy year. |
i |
Effective annual interest rate by policy year. |
b_surv |
Survival benefit by policy year. |
A data frame with policy year k and asset share AS.
Computes a year-by-year Type A universal life account-value path. The death benefit is fixed, so the net amount at risk depends on the ending account value and the roll-forward is solved explicitly each period.
AV_path_ul_typeA(G, r, e, qx, ic, B, iq = ic, AV0 = 0)AV_path_ul_typeA(G, r, e, qx, ic, B, iq = ic, AV0 = 0)
G |
Premium amount by period. |
r |
Percent-of-premium expense rate by period. Values must lie in
|
e |
Fixed expense by period. |
qx |
Mortality probability by period. |
ic |
Credited annual effective interest rate by period. Values must be
greater than |
B |
Face amount by period. |
iq |
Interest rate used in the cost-of-insurance calculation. Defaults
to |
AV0 |
Nonnegative scalar initial account value. |
A data frame containing the policy duration, premium, and account value.
qx <- c(0.00076, 0.00081, 0.00085, 0.00090, 0.00095) r <- c(0.75, rep(0.10, 4)) e <- c(100, rep(20, 4)) AV_path_ul_typeA( G = 5000, r = r, e = e, qx = qx, ic = 0.03, B = 100000 )qx <- c(0.00076, 0.00081, 0.00085, 0.00090, 0.00095) r <- c(0.75, rep(0.10, 4)) e <- c(100, rep(20, 4)) AV_path_ul_typeA( G = 5000, r = r, e = e, qx = qx, ic = 0.03, B = 100000 )
Computes a year-by-year Type B universal life account-value path. Premiums and expenses are applied at the beginning of each period, followed by the cost-of-insurance charge and credited interest.
AV_path_ul_typeB(G, r, e, qx, ic, B, iq = ic, AV0 = 0)AV_path_ul_typeB(G, r, e, qx, ic, B, iq = ic, AV0 = 0)
G |
Premium amount by period. |
r |
Percent-of-premium expense rate by period. Values must lie in
|
e |
Fixed expense by period. |
qx |
Mortality probability by period. |
ic |
Credited annual effective interest rate by period. Values must be
greater than |
B |
Face amount by period. |
iq |
Interest rate used in the cost-of-insurance calculation. Defaults
to |
AV0 |
Nonnegative scalar initial account value. |
A data frame containing the policy duration, premium, net contribution, cost-of-insurance charge, and account value.
qx <- c(0.00076, 0.00081, 0.00085, 0.00090, 0.00095) r <- c(0.75, rep(0.10, 4)) e <- c(100, rep(20, 4)) AV_path_ul_typeB( G = 5000, r = r, e = e, qx = qx, ic = 0.03, B = 100000 )qx <- c(0.00076, 0.00081, 0.00085, 0.00090, 0.00095) r <- c(0.75, rep(0.10, 4)) e <- c(100, rep(20, 4)) AV_path_ul_typeB( G = 5000, r = r, e = e, qx = qx, ic = 0.03, B = 100000 )
Computes the accumulated value at retirement from contributions paid at the beginning of each year and accumulated to retirement.
AVz_dc(x, z, Sx, c, i, g = NULL, s = NULL)AVz_dc(x, z, Sx, c, i, g = NULL, s = NULL)
x |
Scalar entry age. |
z |
Scalar retirement age. |
Sx |
Positive scalar salary at age |
c |
Scalar contribution rate in |
i |
Scalar annual effective investment return greater than |
g |
Optional scalar annual salary growth rate greater than |
s |
Optional positive salary-scale vector of length |
A numeric scalar.
AVz_dc( x = 30, z = 65, Sx = 50000, c = 0.10, i = 0.05, g = 0.04 )AVz_dc( x = 30, z = 65, Sx = 50000, c = 0.10, i = 0.05, g = 0.04 )
Computes .
Ax(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)Ax(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of APVs.
Computes
.
Ax_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)Ax_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of APVs.
Computes .
Ax_m_udd(Ax, i, m)Ax_m_udd(Ax, i, m)
Ax |
Discrete whole life insurance APV. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
m-thly whole life insurance APV under UDD.
Computes the actuarial present value of a benefit payable at the end of the year of decrement from a specified cause.
Axj_md(qj, ptau, i, benefit = 1)Axj_md(qj, ptau, i, benefit = 1)
qj |
Cause-specific decrement probabilities by policy year. |
ptau |
In-force probabilities at the beginning of each policy year. |
i |
Effective annual interest rate. May be scalar or vector. |
benefit |
Benefit payable on decrement. May be scalar or vector. |
A numeric vector of actuarial present values.
qj <- c(0.02, 0.02, 0.02, 0.02, 0.02) ptau <- c(1, 0.95, 0.89, 0.82, 0.74) Axj_md(qj, ptau, i = 0.06, benefit = 1000)qj <- c(0.02, 0.02, 0.02, 0.02, 0.02) ptau <- c(1, 0.95, 0.89, 0.82, 0.74) Axj_md(qj, ptau, i = 0.06, benefit = 1000)
Computes .
Axn(x, n, i, tbl = NULL, model = NULL, ...)Axn(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of APVs.
Computes
.
Axn_m(x, n, i, m, model, ...)Axn_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes
.
Axn_m_udd(Axn1, nEx, i, m)Axn_m_udd(Axn1, nEx, i, m)
Axn1 |
Discrete term insurance APV. |
nEx |
Pure endowment APV. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
m-thly endowment insurance APV under UDD.
Computes .
Axn1(x, n, i, tbl = NULL, model = NULL, ...)Axn1(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of APVs.
Computes
.
Axn1_m(x, n, i, m, model, ...)Axn1_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes .
Axn1_m_udd(Axn1, i, m)Axn1_m_udd(Axn1, i, m)
Axn1 |
Discrete term insurance APV. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
m-thly term insurance APV under UDD.
Computes the one-period cost of insurance for a Type B universal life contract:
coi_ul_typeB(B, qx, iq)coi_ul_typeB(B, qx, iq)
B |
Face amount. |
qx |
Mortality probability for the period. |
iq |
Interest rate used in the cost-of-insurance calculation. Values
must be greater than |
The arguments may be scalars or vectors. Scalar arguments are recycled to the common length.
A numeric vector of cost-of-insurance charges.
coi_ul_typeB(B = 100000, qx = 0.00076, iq = 0.03) coi_ul_typeB( B = 100000, qx = c(0.00076, 0.00081), iq = c(0.03, 0.035) )coi_ul_typeB(B = 100000, qx = 0.00076, iq = 0.03) coi_ul_typeB( B = 100000, qx = c(0.00076, 0.00081), iq = c(0.03, 0.035) )
Computes continuous joint-life, last-survivor, and reversionary whole-life annuities for two independent lives.
abarxy(x, y, i, tbl = NULL, model = NULL, ...) abarxybar(x, y, i, tbl = NULL, model = NULL, ...) abarx_y(x, y, i, tbl = NULL, model = NULL, ...) abary_x(x, y, i, tbl = NULL, model = NULL, ...)abarxy(x, y, i, tbl = NULL, model = NULL, ...) abarxybar(x, y, i, tbl = NULL, model = NULL, ...) abarx_y(x, y, i, tbl = NULL, model = NULL, ...) abary_x(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object retained for backward compatibility.
Continuous calculations currently require |
model |
Parametric survival model. |
... |
Additional parameters passed to the survival functions. |
abarxy() computes the joint-life annuity.
abarxybar() computes the last-survivor annuity.
abarx_y() computes the reversionary annuity payable to the second
life after the death of the first.
abary_x() computes the reversionary annuity payable to the first
life after the death of the second.
These functions require a parametric survival model.
Under independence, abarxy() represents the continuous joint-life
annuity, payable while both lives survive.
The last-survivor annuity satisfies
The reversionary annuities are obtained as the difference between the corresponding single-life annuity and the joint-life annuity.
A numeric vector of actuarial present values.
abarxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) abarxybar( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )abarxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) abarxybar( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )
Computes continuous joint-life, last-survivor, and contingent whole-life insurance values for two independent lives.
Abarxy(x, y, i, tbl = NULL, model = NULL, ...) Abarxybar(x, y, i, tbl = NULL, model = NULL, ...) Abarxy1(x, y, i, tbl = NULL, model = NULL, ...) Abaryx1(x, y, i, tbl = NULL, model = NULL, ...) Abarxy2(x, y, i, tbl = NULL, model = NULL, ...) Abaryx2(x, y, i, tbl = NULL, model = NULL, ...)Abarxy(x, y, i, tbl = NULL, model = NULL, ...) Abarxybar(x, y, i, tbl = NULL, model = NULL, ...) Abarxy1(x, y, i, tbl = NULL, model = NULL, ...) Abaryx1(x, y, i, tbl = NULL, model = NULL, ...) Abarxy2(x, y, i, tbl = NULL, model = NULL, ...) Abaryx2(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object retained for backward compatibility.
Continuous calculations currently require |
model |
Parametric survival model. |
... |
Additional parameters passed to the survival and hazard functions. |
Abarxy() computes joint-life insurance payable at the first death.
Abarxybar() computes last-survivor insurance payable at the second
death.
Abarxy1() and Abaryx1() compute contingent insurance payable
when the specified life dies first.
Abarxy2() and Abaryx2() compute contingent insurance payable
when the specified life dies second.
These functions require a parametric survival model.
Under independence, Abarxy() represents insurance payable at the
first death and Abarxybar() represents insurance payable at the
second death.
The contingent functions distinguish both the life whose death triggers payment and whether that death occurs first or second.
A numeric vector of actuarial present values.
Abarxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) Abarxy1( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )Abarxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) Abarxy1( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )
Calculates the contribution rate required to achieve a target replacement ratio.
contribution_rate_target(x, z, Sx, RR_target, i, adue_z, g = NULL, s = NULL)contribution_rate_target(x, z, Sx, RR_target, i, adue_z, g = NULL, s = NULL)
x |
Scalar entry age. |
z |
Scalar retirement age. |
Sx |
Positive scalar salary at age |
RR_target |
Scalar target replacement ratio in |
i |
Scalar annual effective investment return greater than |
adue_z |
Positive scalar whole-life annuity-due factor at retirement. |
g |
Optional scalar annual salary growth rate greater than |
s |
Optional positive salary-scale vector of length |
A numeric scalar. The result may exceed one when the target cannot be achieved with a contribution rate no greater than 100 percent.
contribution_rate_target( x = 30, z = 65, Sx = 60000, RR_target = 0.50, i = 0.06, adue_z = 11, g = 0.04 )contribution_rate_target( x = 30, z = 65, Sx = 60000, RR_target = 0.50, i = 0.06, adue_z = 11, g = 0.04 )
Computes
.
cov_term_deferred(x, n, i, tbl = NULL, model = NULL, ...)cov_term_deferred(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of covariances.
Computes
.
cov_term_endow(x, n, i, tbl = NULL, model = NULL, ...)cov_term_endow(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of covariances.
Computes .
cumhaz0(t, model, ...)cumhaz0(t, model, ...)
t |
Numeric vector of times. |
model |
One of |
... |
Model parameters. |
Numeric vector.
Computes
DAbarxn1(x, n, i, model, ...)DAbarxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes
DAxn1(x, n, i, tbl = NULL, model = NULL, ...)DAxn1(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes
DbarAbarxn1(x, n, i, model, ...)DbarAbarxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Decomposes gross gain into interest, mortality, and expense components in a user-specified order.
decompGg_disc( VtG, Vt1G, G, i_assumed, q_assumed, r_assumed = 0, e_assumed = 0, s_assumed = 0, i_actual, q_actual, r_actual = 0, e_actual = 0, s_actual = 0, b = 1, order = c("interest", "mortality", "expense") )decompGg_disc( VtG, Vt1G, G, i_assumed, q_assumed, r_assumed = 0, e_assumed = 0, s_assumed = 0, i_actual, q_actual, r_actual = 0, e_actual = 0, s_actual = 0, b = 1, order = c("interest", "mortality", "expense") )
VtG |
Gross reserve at duration |
Vt1G |
Gross reserve at duration |
G |
Gross premium. |
i_assumed |
Assumed annual effective interest rate. |
q_assumed |
Assumed mortality probability. |
r_assumed |
Assumed percent-of-premium expense rate. |
e_assumed |
Assumed per-policy expense. |
s_assumed |
Assumed settlement expense. |
i_actual |
Actual annual effective interest rate. |
q_actual |
Actual mortality probability. |
r_actual |
Actual percent-of-premium expense rate. |
e_actual |
Actual per-policy expense. |
s_actual |
Actual settlement expense. |
b |
Benefit amount. |
order |
Character vector containing |
For scalar input, the function returns a named numeric vector. For vectorized input, it returns a numeric matrix with one row per calculation.
For scalar input, a named numeric vector. For vectorized input,
a numeric matrix with columns total_gain, interest,
mortality, expense, and check.
decompGg_disc( VtG = 3950.73, Vt1G = 4607.07, G = 685, i_assumed = 0.06, q_assumed = 0.00592, r_assumed = 0.05, e_assumed = 0, s_assumed = 300, i_actual = 0.065, q_actual = 0.005, r_actual = 0.06, e_actual = 0, s_actual = 100, b = 50000 )decompGg_disc( VtG = 3950.73, Vt1G = 4607.07, G = 685, i_assumed = 0.06, q_assumed = 0.00592, r_assumed = 0.05, e_assumed = 0, s_assumed = 300, i_actual = 0.065, q_actual = 0.005, r_actual = 0.06, e_actual = 0, s_actual = 100, b = 50000 )
Computes prospective reserves for deferred whole life insurance contracts.
tVnAx(x, n, t, i, model = NULL, ..., tbl = NULL) htVnAx(x, n, h, t, i, model = NULL, ..., tbl = NULL)tVnAx(x, n, t, i, model = NULL, ..., tbl = NULL) htVnAx(x, n, h, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
n |
Deferral period in years. |
t |
Duration in years. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to the underlying actuarial functions. |
tbl |
Optional life table object. |
h |
Premium-paying period in years. |
tVnAx() computes the reserve at duration t for an
n-year deferred whole life insurance funded by level annual
premiums during the deferral period.
htVnAx() computes the corresponding reserve when premiums are
limited to the first h years, where h <= n.
A numeric vector of prospective reserve values.
tVnAx( x = 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 ) htVnAx( x = 40, n = 20, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100 )tVnAx( x = 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 ) htVnAx( x = 40, n = 20, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100 )
Computes the discount factor .
discount(i, t)discount(i, t)
i |
Effective interest rate. May be scalar or vector. |
t |
Time. May be scalar or vector. |
Numeric vector of discount factors.
discount(0.05, 0:5) discount(c(0.03, 0.05), 1)discount(0.05, 0:5) discount(c(0.03, 0.05), 1)
Returns the first duration at which cumulative discounted profit is nonnegative.
discounted_payback_period(Pi, r)discounted_payback_period(Pi, r)
Pi |
Numeric profit-signature vector. |
r |
Annual effective risk discount rate. May be scalar or vector;
values must be greater than |
An integer vector with one value for each discount rate. An element
is NA_integer_ when payback is not reached.
Pi <- c(-15.00, 8.42, 8.39, 8.58) discounted_payback_period(Pi, r = 0.10)Pi <- c(-15.00, 8.42, 8.39, 8.58) discounted_payback_period(Pi, r = 0.10)
Distribution functions for age-at-failure
F0(t, model, ...) f0(t, model, ...)F0(t, model, ...) f0(t, model, ...)
t |
Numeric vector of times. |
model |
One of |
... |
Model parameters. |
Numeric vector.
Computes .
double_force_delta(delta)double_force_delta(delta)
delta |
Numeric vector of forces of interest. |
Numeric vector of doubled forces of interest.
If , then
.
double_force_i(i)double_force_i(i)
i |
Numeric vector of effective annual interest rates. |
Numeric vector of effective annual rates corresponding to doubled force.
Compute deaths between ages x and x+1
dx(tbl, x)dx(tbl, x)
tbl |
A |
x |
Ages. |
Numeric vector of values.
Computes
dxj(lxtau, qxj)dxj(lxtau, qxj)
lxtau |
Number alive at age or duration |
qxj |
Numeric vector of cause-specific decrement probabilities. |
A numeric vector containing the number of decrements from each cause.
dxj(1000, c(0.011, 0.100))dxj(1000, c(0.011, 0.100))
Computes
dxtau(lxtau, qxj)dxtau(lxtau, qxj)
lxtau |
Number alive at age or duration |
qxj |
Numeric vector of cause-specific decrement probabilities. |
A numeric scalar.
dxtau(1000, c(0.011, 0.100))dxtau(1000, c(0.011, 0.100))
Computes the conditional mean
for a fully discrete whole life insurance.
ELtx(x, t, i, P, model = NULL, ..., tbl = NULL)ELtx(x, t, i, P, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
P |
Annual premium. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
Under the equivalence-principle premium, this equals the prospective
reserve .
A numeric vector of values.
prem <- Px(40, i = 0.05, model = "uniform", omega = 100) ELtx(40, t = 10, i = 0.05, P = prem, model = "uniform", omega = 100)prem <- Px(40, i = 0.05, model = "uniform", omega = 100) ELtx(40, t = 10, i = 0.05, P = prem, model = "uniform", omega = 100)
Computes .
ex_complete(x, model, ..., tol = 1e-10)ex_complete(x, model, ..., tol = 1e-10)
x |
Numeric vector of ages. |
model |
One of |
... |
Model parameters. |
tol |
Tolerance used to choose a finite integration bound. |
Numeric vector of complete expectations.
Computes
using a within-year assumption:
"udd", "cf", or "balducci".
ex_complete_tab(tbl, x, assumption = c("udd", "cf", "balducci"))ex_complete_tab(tbl, x, assumption = c("udd", "cf", "balducci"))
tbl |
A |
x |
Numeric vector of integer ages. |
assumption |
One of |
Numeric vector of complete expectations .
Computes .
ex_curtate(x, model, ..., k_max = 5000, tol = 1e-12)ex_curtate(x, model, ..., k_max = 5000, tol = 1e-12)
x |
Numeric vector of ages. |
model |
One of |
... |
Model parameters. |
k_max |
Maximum integer duration to sum to. |
tol |
Stop early if the summand is smaller than this tolerance for several consecutive steps. |
Numeric vector of curtate expectations.
Computes the curtate expectation of life
in the discrete tabular setting.
ex_curtate_tab(tbl, x)ex_curtate_tab(tbl, x)
tbl |
A |
x |
Numeric vector of integer ages. |
Numeric vector of curtate expectations .
Computes
using a within-year assumption:
"udd", "cf", or "balducci".
ex_temp_complete_tab(tbl, x, n, assumption = c("udd", "cf", "balducci"))ex_temp_complete_tab(tbl, x, n, assumption = c("udd", "cf", "balducci"))
tbl |
A |
x |
Numeric vector of integer ages. |
n |
Numeric vector of nonnegative durations. |
assumption |
One of |
Numeric vector of temporary complete expectations.
Computes
for integer in the discrete tabular setting.
ex_temp_curtate_tab(tbl, x, n)ex_temp_curtate_tab(tbl, x, n)
tbl |
A |
x |
Numeric vector of integer ages. |
n |
Numeric vector of nonnegative integers. |
Numeric vector of temporary curtate expectations.
Computes the annual effective forward rate for the interval from time
n to time n + k:
fnk_from_z(z, n, k)fnk_from_z(z, n, k)
z |
Numeric vector of annual effective spot rates for maturities
|
n |
Nonnegative integer forward-start time. |
k |
Positive integer forward period. |
A numeric scalar.
z <- c(0.03, 0.04, 0.05, 0.06, 0.07) fnk_from_z(z, n = 1, k = 4) fnk_from_z(z, n = 2, k = 2)z <- c(0.03, 0.04, 0.05, 0.06, 0.07) fnk_from_z(z, n = 1, k = 4) fnk_from_z(z, n = 2, k = 2)
Constructs a matrix of annual effective forward rates. Rows correspond to
forward-start times ; columns correspond to forward
periods . Entries requiring maturities beyond
are returned as NA.
forward_matrix_from_z(z)forward_matrix_from_z(z)
z |
Numeric vector of at least two annual effective spot rates. Each
value must be greater than |
A numeric matrix.
forward_matrix_from_z(c(0.03, 0.04, 0.05, 0.06, 0.07))forward_matrix_from_z(c(0.03, 0.04, 0.05, 0.06, 0.07))
Computes fractional-duration whole life reserves using linear
interpolation between the reserve immediately after the premium at
duration and the reserve at duration .
tsVx(x, t, s, i, tbl = NULL, model = NULL, ...) meanVx(x, t, i, tbl = NULL, model = NULL, ...)tsVx(x, t, s, i, tbl = NULL, model = NULL, ...) meanVx(x, t, i, tbl = NULL, model = NULL, ...)
x |
Issue age. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
s |
Fractional duration in |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tsVx() computes the reserve at fractional duration
, where .
meanVx() computes the reserve at the midpoint of the policy
year ().
The fractional reserve is computed using
The function meanVx() is a convenience wrapper corresponding to
.
A numeric vector of reserve values.
tsVx( 40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 ) meanVx( 40, t = 10, i = 0.05, model = "uniform", omega = 100 )tsVx( 40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 ) meanVx( 40, t = 10, i = 0.05, model = "uniform", omega = 100 )
Computes fractional-duration reserves for term and endowment insurance
using linear interpolation between the reserve immediately after the
premium at duration and the reserve at duration .
tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...)tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...)
x |
Issue age. May be scalar or vector. |
n |
Positive integer term. May be scalar or vector. |
t |
Nonnegative integer duration satisfying |
s |
Fractional duration in |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tsVxn() computes the fractional-duration reserve for endowment
insurance.
tsVxn1() computes the fractional-duration reserve for term
insurance.
The fractional reserve is computed using
The premium is the net annual premium for the corresponding
insurance contract (term or endowment).
A numeric vector of reserve values.
tsVxn( 40, n = 20, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 ) tsVxn1( 40, n = 20, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 )tsVxn( 40, n = 20, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 ) tsVxn1( 40, n = 20, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100 )
Computes modified premiums and reserves under the full preliminary term method for whole-life insurance.
alphaF(x, i, tbl = NULL, model = NULL, ...) betaF(x, i, tbl = NULL, model = NULL, ...) tVFx(x, t, i, tbl = NULL, model = NULL, ...)alphaF(x, i, tbl = NULL, model = NULL, ...) betaF(x, i, tbl = NULL, model = NULL, ...) tVFx(x, t, i, tbl = NULL, model = NULL, ...)
x |
Issue age. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
t |
Nonnegative integer duration. May be scalar or vector. |
alphaF() computes the first-year modified premium
.
betaF() computes the renewal modified premium
.
tVFx() computes the full preliminary term reserve. The reserve is
zero at durations 0 and 1. For , it equals the net level premium
reserve at duration for a policy issued at age .
Under the full preliminary term method, the first policy year is treated
as one-year term insurance. The first-year modified premium is therefore
the actuarial present value of one-year term insurance at age .
Renewal premiums are based on a whole-life policy issued one year later,
at age . Accordingly, reserves after the first policy year are
obtained from the corresponding net level premium reserve for that
deferred issue age.
A numeric vector of modified premiums or reserves.
alphaF( x = 40, i = 0.05, model = "uniform", omega = 100 ) betaF( x = 40, i = 0.05, model = "uniform", omega = 100 ) tVFx( x = 40, t = 5, i = 0.05, model = "uniform", omega = 100 )alphaF( x = 40, i = 0.05, model = "uniform", omega = 100 ) betaF( x = 40, i = 0.05, model = "uniform", omega = 100 ) tVFx( x = 40, t = 5, i = 0.05, model = "uniform", omega = 100 )
Computes .
fx(t, x, model, ...)fx(t, x, model, ...)
t |
Numeric vector of durations. |
x |
Numeric vector of ages. |
model |
One of |
... |
Model parameters. |
Numeric vector of density values.
Computes the conditional density
.
fx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))fx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))
tbl |
A life_table object. |
x |
Numeric vector of integer ages. |
t |
Numeric vector of fractional durations with |
assumption |
One of |
Numeric vector of conditional density values.
Computes one-year gain or loss under simultaneous within-year decrement probabilities or an ordered case in which Cause 2 occurs at year-end. Numeric arguments may be scalar or compatible vectors.
gain_loss_md( Vt, G, r, e, i, b1, b2, s1 = 0, s2 = 0, q1, q2, Vt1, year_end_cause2 = FALSE, q1prime = NULL, q2prime = NULL )gain_loss_md( Vt, G, r, e, i, b1, b2, s1 = 0, s2 = 0, q1, q2, Vt1, year_end_cause2 = FALSE, q1prime = NULL, q2prime = NULL )
Vt |
Gross reserve at the beginning of the year. |
G |
Gross premium. |
r |
Percent-of-premium expense rate. |
e |
Fixed beginning-of-year expense. |
i |
Earned effective annual interest rate. |
b1 |
Cause 1 benefit. |
b2 |
Cause 2 benefit. |
s1 |
Cause 1 settlement expense. |
s2 |
Cause 2 settlement expense. |
q1 |
Cause 1 decrement probability. |
q2 |
Cause 2 decrement probability. |
Vt1 |
Gross reserve at the end of the year. |
year_end_cause2 |
Whether Cause 2 occurs only at year-end. |
q1prime |
Single-decrement Cause 1 probability for the ordered case. |
q2prime |
Single-decrement Cause 2 probability for the ordered case. |
A numeric vector of gains or losses.
gain_loss_md( Vt = 115, G = 16, r = 0, e = 3, i = 0.06, b1 = 1000, b2 = 110, q1 = 0.01, q2 = 0.10, Vt1 = 128.83 )gain_loss_md( Vt = 115, G = 16, r = 0, e = 3, i = 0.06, b1 = 1000, b2 = 110, q1 = 0.01, q2 = 0.10, Vt1 = 128.83 )
Evaluates the one-step gain using the actual force of interest and the assumed survival probability.
GI_cont(Vt, Vt1, P, delta_actual, p_assumed, benefit = 0, h = 1)GI_cont(Vt, Vt1, P, delta_actual, p_assumed, benefit = 0, h = 1)
Vt |
Reserve at time 't'. |
Vt1 |
Reserve at time 't + h'. |
P |
Premium rate. |
delta_actual |
Actual force of interest. |
p_assumed |
Assumed survival probability over the step. |
benefit |
Benefit paid at the start of the step. |
h |
Positive step length. |
Numeric vector of interest gain values.
GI_cont( Vt = 10, Vt1 = 11, P = 1, delta_actual = 0.05, p_assumed = 0.99 )GI_cont( Vt = 10, Vt1 = 11, P = 1, delta_actual = 0.05, p_assumed = 0.99 )
Interest gain for a discrete insurance contract
GI_disc(Vt, Vt1, P, i_actual, q_assumed, B = 1)GI_disc(Vt, Vt1, P, i_actual, q_assumed, B = 1)
Vt |
Reserve at duration t. |
Vt1 |
Reserve at duration t+1. |
P |
Net premium for the year. |
i_actual |
Actual annual effective interest rate. |
q_assumed |
Assumed mortality rate for the year. |
B |
Benefit amount. Defaults to 1. |
A numeric vector of values.
GI_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_actual = 0.05, q_assumed = 0.01)GI_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_actual = 0.05, q_assumed = 0.01)
Evaluates the one-step gain using the assumed force of interest and the actual survival probability.
GM_cont(Vt, Vt1, P, delta_assumed, p_actual, benefit = 0, h = 1)GM_cont(Vt, Vt1, P, delta_assumed, p_actual, benefit = 0, h = 1)
Vt |
Reserve at time 't'. |
Vt1 |
Reserve at time 't + h'. |
P |
Premium rate. |
delta_assumed |
Assumed force of interest. |
p_actual |
Actual survival probability over the step. |
benefit |
Benefit paid at the start of the step. |
h |
Positive step length. |
Numeric vector of mortality gain values.
GM_cont( Vt = 10, Vt1 = 11, P = 1, delta_assumed = 0.05, p_actual = 0.99 )GM_cont( Vt = 10, Vt1 = 11, P = 1, delta_assumed = 0.05, p_actual = 0.99 )
Mortality gain for a discrete insurance contract
GM_disc(Vt, Vt1, P, i_assumed, q_actual, B = 1)GM_disc(Vt, Vt1, P, i_assumed, q_actual, B = 1)
Vt |
Reserve at duration t. |
Vt1 |
Reserve at duration t+1. |
P |
Net premium for the year. |
i_assumed |
Assumed annual effective interest rate. |
q_actual |
Actual mortality rate for the year. |
B |
Benefit amount. Defaults to 1. |
A numeric vector of values.
GM_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_assumed = 0.04, q_actual = 0.01)GM_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_assumed = 0.04, q_actual = 0.01)
Computes a one-period guaranteed maturity fund roll-forward. Arguments may be scalars or vectors and follow common-length recycling.
GMF_rollforward_ul(GMF_prev, GMP, r, policy_charge, i)GMF_rollforward_ul(GMF_prev, GMP, r, policy_charge, i)
GMF_prev |
Prior guaranteed maturity fund. |
GMP |
Guaranteed maturity premium. |
r |
Percent-of-premium expense rate in |
policy_charge |
Guaranteed policy charge. |
i |
Guaranteed annual effective interest rate greater than |
A numeric vector.
GMF_rollforward_ul(140.40, 14.49, 0.04, 11.80, 0.03)GMF_rollforward_ul(140.40, 14.49, 0.04, 11.80, 0.03)
Computes the amount accumulated during a step, less the expected reserve required at the end of the step.
GT_cont(Vt, Vt1, P, delta_actual, p_actual, benefit = 0, h = 1)GT_cont(Vt, Vt1, P, delta_actual, p_actual, benefit = 0, h = 1)
Vt |
Reserve at time 't'. |
Vt1 |
Reserve at time 't + h'. |
P |
Premium rate. |
delta_actual |
Actual force of interest. |
p_actual |
Actual survival probability over the step. |
benefit |
Benefit paid at the start of the step. |
h |
Positive step length. |
Reserves, premium rates, benefits, and forces of interest may be negative
when such values are meaningful for the application. The step length must
be positive, and the survival probability must lie in .
Numeric vector of gain values.
GT_cont( Vt = 10, Vt1 = 11, P = 1, delta_actual = 0.05, p_actual = 0.99 )GT_cont( Vt = 10, Vt1 = 11, P = 1, delta_actual = 0.05, p_actual = 0.99 )
Computes the total gain: amount on hand at year-end minus amount required.
GT_disc(Vt, Vt1, P, i_actual, q_actual, B = 1)GT_disc(Vt, Vt1, P, i_actual, q_actual, B = 1)
Vt |
Reserve at duration t. |
Vt1 |
Reserve at duration t+1. |
P |
Net premium for the year. |
i_actual |
Actual annual effective interest rate. |
q_actual |
Actual mortality rate for the year. |
B |
Benefit amount. Defaults to 1. |
A numeric vector of values.
GT_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_actual = 0.05, q_actual = 0.01)GT_disc(Vt = 0.1, Vt1 = 0.11, P = 0.02, i_actual = 0.05, q_actual = 0.01)
Computes total gain during one policy year under gross premiums, gross reserves, actual mortality, actual interest, and actual expenses.
GTg_disc( VtG, Vt1G, G, i_actual, q_actual, r_actual = 0, e_actual = 0, s_actual = 0, b = 1 )GTg_disc( VtG, Vt1G, G, i_actual, q_actual, r_actual = 0, e_actual = 0, s_actual = 0, b = 1 )
VtG |
Gross reserve at duration |
Vt1G |
Gross reserve at duration |
G |
Gross premium. |
i_actual |
Actual annual effective interest rate. |
q_actual |
Actual mortality probability. |
r_actual |
Actual percent-of-premium expense rate. |
e_actual |
Actual per-policy expense. |
s_actual |
Actual settlement expense. |
b |
Benefit amount. |
A numeric vector of total gains.
GTg_disc( VtG = 0.10, Vt1G = 0.12, G = 0.02, i_actual = 0.05, q_actual = 0.01, r_actual = 0.03, e_actual = 0, s_actual = 0.01, b = 1 )GTg_disc( VtG = 0.10, Vt1G = 0.12, G = 0.02, i_actual = 0.05, q_actual = 0.01, r_actual = 0.03, e_actual = 0, s_actual = 0.01, b = 1 )
Computes .
hazard0(t, model, ...)hazard0(t, model, ...)
t |
Numeric vector of times. |
model |
One of |
... |
Model parameters. |
Numeric vector.
Computes the prospective reserve for an h-pay whole life policy.
htVx(x, h, t, i, model = NULL, ..., tbl = NULL)htVx(x, h, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
h |
Premium-paying period in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
htVx(40, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100)htVx(40, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100)
Applies a participation rate, floor, cap, and optional margin to raw index growth rates.
i_credit_eiul( i_raw, part = 1, floor = 0, cap = Inf, margin = 0, margin_after_participation = TRUE )i_credit_eiul( i_raw, part = 1, floor = 0, cap = Inf, margin = 0, margin_after_participation = TRUE )
i_raw |
Numeric vector of raw index growth rates. |
part |
Nonnegative scalar participation rate. |
floor |
Scalar minimum credited rate. |
cap |
Scalar maximum credited rate. The default is |
margin |
Nonnegative scalar index margin. |
margin_after_participation |
Logical scalar. If |
A numeric vector of credited rates.
raw <- iP_eiul(c(1000, 1050, 1200, 1100)) i_credit_eiul(raw, part = 1.10, floor = 0.01, cap = 0.10) i_credit_eiul(raw)raw <- iP_eiul(c(1000, 1050, 1200, 1100)) i_credit_eiul(raw, part = 1.10, floor = 0.01, cap = 0.10) i_credit_eiul(raw)
Computes
IAbarx(x, i, model, ...)IAbarx(x, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes
IAx(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)IAx(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
tol |
Numerical tolerance for truncation. |
k_max |
Maximum number of terms. |
Numeric vector.
Computes
IAxn1(x, n, i, tbl = NULL, model = NULL, ...)IAxn1(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes
IbarAbarx(x, i, model, ...)IbarAbarx(x, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes
IbarAbarxn1(x, n, i, model, ...)IbarAbarxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Computes the monthly-average growth rate from an initial index value and twelve monthly closing values.
iMA_eiul(index)iMA_eiul(index)
index |
Numeric vector of length 13 containing a strictly positive initial index value followed by twelve nonnegative monthly closing values. |
A numeric scalar.
index <- c( 1000, 1020, 1100, 1150, 1080, 1040, 960, 1030, 1000, 1070, 1150, 1200, 1150 ) iMA_eiul(index)index <- c( 1000, 1020, 1100, 1150, 1080, 1040, 960, 1030, 1000, 1070, 1150, 1200, 1150 ) iMA_eiul(index)
Converts an accumulated account value into annual annuity-due income. Scalar arguments are recycled to a common length.
Income_dc(AVz, adue_z)Income_dc(AVz, adue_z)
AVz |
Nonnegative accumulated value at retirement. |
adue_z |
Positive whole-life annuity-due factor at retirement. |
A numeric vector.
Income_dc(AVz = 824211.35, adue_z = 12)Income_dc(AVz = 824211.35, adue_z = 12)
Provides consistent conversions between effective interest rate, effective discount rate, force of interest, and optional nominal interest rate convertible m-thly.
interest_convert(i = NULL, d = NULL, delta = NULL, m = NULL)interest_convert(i = NULL, d = NULL, delta = NULL, m = NULL)
i |
Effective interest rate. May be scalar or vector. |
d |
Effective discount rate. May be scalar or vector. |
delta |
Force of interest. May be scalar or vector. |
m |
Optional positive integer compounding frequency for the nominal rate convertible m-thly. |
Exactly one of 'i', 'd', or 'delta' must be provided.
A list with elements 'i', 'd', 'delta', and, if 'm' is supplied, 'im' and 'm'.
interest_convert(i = 0.05) interest_convert(i = c(0.03, 0.05, 0.07)) interest_convert(d = 0.04761905) interest_convert(delta = log(1.05))interest_convert(i = 0.05) interest_convert(i = c(0.03, 0.05, 0.07)) interest_convert(d = 0.04761905) interest_convert(delta = log(1.05))
Computes consecutive point-to-point growth rates from index values.
iP_eiul(index)iP_eiul(index)
index |
Numeric vector of strictly positive index values. |
A numeric vector with length one less than index.
iP_eiul(c(1000, 1050, 1200, 1100))iP_eiul(c(1000, 1050, 1200, 1100))
Computes a root of the profit-signature net present value.
IRR_profit(Pi, interval = c(0, 1), tol = .Machine$double.eps^0.5)IRR_profit(Pi, interval = c(0, 1), tol = .Machine$double.eps^0.5)
Pi |
Numeric profit-signature vector. |
interval |
Numeric vector of length two giving the root-search
interval. Its lower endpoint must be greater than |
tol |
Positive scalar tolerance passed to |
A numeric scalar.
Pi <- c(-15.00, 8.42, 8.39, 8.58) IRR_profit(Pi)Pi <- c(-15.00, 8.42, 8.39, 8.58) IRR_profit(Pi)
Computes temporary and whole-life joint-life annuities-due and annuities-immediate for two independent lives.
adotxyn(x, y, n, i, tbl = NULL, model = NULL, ...) axyn(x, y, n, i, tbl = NULL, model = NULL, ...) adotxy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)adotxyn(x, y, n, i, tbl = NULL, model = NULL, ...) axyn(x, y, n, i, tbl = NULL, model = NULL, ...) adotxy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Nonnegative integer term. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model. |
k_max |
Maximum summation horizon used for non-terminating parametric survival models. |
tol |
Positive convergence tolerance for whole-life summations. |
adotxyn() computes an -year temporary joint-life
annuity-due.
axyn() computes an -year temporary joint-life
annuity-immediate.
adotxy() computes a whole-life joint-life annuity-due.
axy() computes a whole-life joint-life annuity-immediate.
All calculations assume independence between the two future lifetimes.
The temporary annuity-due is
The temporary annuity-immediate is
For life-table calculations, the whole-life sums terminate at the last
duration supported jointly by the two lives. For parametric models, the
sums are evaluated until convergence or until k_max is reached.
A numeric vector of annuity actuarial present values.
adotxyn( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) axyn( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) adotxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) axy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )adotxyn( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) axyn( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) adotxy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 ) axy( x = 40, y = 50, i = 0.05, model = "uniform", omega = 100 )
Computes temporary and whole-life insurance values for two lives under the joint-life status.
Axyn1(x, y, n, i, tbl = NULL, model = NULL, ...) Axyn(x, y, n, i, tbl = NULL, model = NULL, ...) Axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)Axyn1(x, y, n, i, tbl = NULL, model = NULL, ...) Axyn(x, y, n, i, tbl = NULL, model = NULL, ...) Axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Term in years. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model or life-table functions. |
k_max |
Maximum number of terms used for an infinite series. |
tol |
Numerical tolerance used to assess convergence. |
Axyn1() computes an n-year joint-life term insurance.
Axyn() computes an n-year joint-life endowment insurance.
Axy() computes joint-life whole-life insurance.
A numeric vector of actuarial present values.
Computes temporary and whole-life annuities for two lives under the last-survivor status.
adotxybarn(x, y, n, i, tbl = NULL, model = NULL, ...) axybarn(x, y, n, i, tbl = NULL, model = NULL, ...) adotxybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)adotxybarn(x, y, n, i, tbl = NULL, model = NULL, ...) axybarn(x, y, n, i, tbl = NULL, model = NULL, ...) adotxybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Term in years. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model or life-table functions. |
k_max |
Maximum number of terms used for an infinite series. |
tol |
Numerical tolerance used to assess convergence. |
A numeric vector of actuarial present values.
Computes temporary and whole-life insurance values for two lives under the last-survivor status.
Axybarn1(x, y, n, i, tbl = NULL, model = NULL, ...) Axybarn(x, y, n, i, tbl = NULL, model = NULL, ...) Axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)Axybarn1(x, y, n, i, tbl = NULL, model = NULL, ...) Axybarn(x, y, n, i, tbl = NULL, model = NULL, ...) Axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Term in years. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model or life-table functions. |
k_max |
Maximum number of terms used for an infinite series. |
tol |
Numerical tolerance used to assess convergence. |
Axybarn1() computes temporary insurance payable at the second
death within the term.
Axybarn() computes last-survivor endowment insurance.
Axybar() computes last-survivor whole-life insurance.
A numeric vector of actuarial present values.
Build a discrete life table from one of lx, qx, px,
or S0.
life_table(x, lx = NULL, qx = NULL, px = NULL, S0 = NULL, radix = 1e+05)life_table(x, lx = NULL, qx = NULL, px = NULL, S0 = NULL, radix = 1e+05)
x |
Numeric vector of ages. |
lx |
Numeric vector of |
qx |
Numeric vector of |
px |
Numeric vector of |
S0 |
Numeric vector of |
radix |
Radix used when converting |
A data frame with class "life_table".
Extract life-table survivor values
lx(tbl, x)lx(tbl, x)
tbl |
A |
x |
Ages. |
Numeric vector of values.
Returns from a select life table.
lx_select(tbl, x_sel, t)lx_select(tbl, x_sel, t)
tbl |
A |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of durations since selection. |
Numeric vector of survivor values.
Converts life-table survivor values into survival probabilities
.
lx_to_S0(lx)lx_to_S0(lx)
lx |
Numeric vector of life-table survivor values. |
Numeric vector of values.
Computes an entry of the matrix power .
markov_nstep_prob(P, n, i, j)markov_nstep_prob(P, n, i, j)
P |
Square transition-probability matrix. |
n |
Nonnegative integer number of steps. |
i |
Starting-state index. |
j |
Ending-state index. |
A numeric scalar.
P <- matrix(c(0.9, 0.1, 0, 1), nrow = 2, byrow = TRUE) markov_nstep_prob(P, n = 3, i = 1, j = 2)P <- matrix(c(0.9, 0.1, 0, 1), nrow = 2, byrow = TRUE) markov_nstep_prob(P, n = 3, i = 1, j = 2)
Constructs a discrete multiple-decrement table from cause-specific one-year decrement probabilities.
md_table(x, qxj, radix = 1e+05)md_table(x, qxj, radix = 1e+05)
x |
Integer vector of consecutive ages or durations. |
qxj |
Numeric matrix or data frame of cause-specific decrement
probabilities. Rows correspond to values in |
radix |
Initial value of |
An object of classes "md_table" and "data.frame"
containing age or duration, cause-specific decrement probabilities,
total decrement and survival probabilities, numbers alive, and
cause-specific and total decrements.
ages <- 45:50 qmat <- cbind( withdrawal = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), retirement = rep(0.100, 6) ) md_table(ages, qmat, radix = 1000)ages <- 45:50 qmat <- cbind( withdrawal = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), retirement = rep(0.100, 6) ) md_table(ages, qmat, radix = 1000)
Functions for projecting one-year death and survival probabilities under mortality improvement and evaluating annuity values under projected mortality.
qx_proj(qx_base, AAx, base_year, proj_year) px_proj(qx_base, AAx, base_year, proj_year) tpx_improved(x0, n, qx_base_vec, AAx_vec, base_year, issue_year) axn_improved(x0, n, i, qx_base_vec, AAx_vec, base_year, issue_year) naxn_improved(x0, u, n, i, qx_base_vec, AAx_vec, base_year, issue_year) ax_improved(x0, i, qx_base_vec, AAx_vec, base_year, issue_year)qx_proj(qx_base, AAx, base_year, proj_year) px_proj(qx_base, AAx, base_year, proj_year) tpx_improved(x0, n, qx_base_vec, AAx_vec, base_year, issue_year) axn_improved(x0, n, i, qx_base_vec, AAx_vec, base_year, issue_year) naxn_improved(x0, u, n, i, qx_base_vec, AAx_vec, base_year, issue_year) ax_improved(x0, i, qx_base_vec, AAx_vec, base_year, issue_year)
qx_base |
Base-year one-year death probability. |
AAx |
Mortality improvement factor. |
base_year |
Base year. |
proj_year |
Projection year. May be scalar or vector. |
x0 |
Issue age. |
n |
Number of years. |
qx_base_vec |
Base-year death probabilities for successive ages. |
AAx_vec |
Mortality improvement factors for successive ages. |
issue_year |
Issue year. |
i |
Effective annual interest rate. |
u |
Deferral period in years. |
The standard projection used is
where is the base year, is the projection year, and
is the mortality improvement factor at age .
Numeric vector of projected one-year death probabilities.
Computes probabilities associated with the order of death of two independent lives over a specified term.
tqxy1(x, y, n, tbl = NULL, model = NULL, ...) tqyx1(x, y, n, tbl = NULL, model = NULL, ...) tqxy2(x, y, n, tbl = NULL, model = NULL, ...) tqyx2(x, y, n, tbl = NULL, model = NULL, ...)tqxy1(x, y, n, tbl = NULL, model = NULL, ...) tqyx1(x, y, n, tbl = NULL, model = NULL, ...) tqxy2(x, y, n, tbl = NULL, model = NULL, ...) tqyx2(x, y, n, tbl = NULL, model = NULL, ...)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Term in years. May be scalar or vector. |
tbl |
Optional life table object retained for backward compatibility.
Continuous calculations currently require |
model |
Parametric survival model. |
... |
Additional parameters passed to the survival and hazard functions. |
tqxy1() computes the probability that the first life dies before
the second life within years.
tqyx1() computes the probability that the second life dies before
the first life within years.
tqxy2() computes the probability that the first life dies after
the second life but within years.
tqyx2() computes the probability that the second life dies after
the first life but within years.
These functions require a parametric survival model because an annual life table does not uniquely determine the within-year order of death without an additional interpolation assumption.
All calculations assume the two future lifetimes are independent.
The probabilities are obtained by integrating the joint survival function together with the appropriate force of mortality.
The four functions partition the probability that one of the two lives dies within the specified term according to the order of death.
A numeric vector of contingent probabilities.
tqxy1( 40, 50, n = 10, model = "uniform", omega = 100 ) tqyx1( 40, 50, n = 10, model = "uniform", omega = 100 ) tqxy2( 40, 50, n = 10, model = "uniform", omega = 100 ) tqyx2( 40, 50, n = 10, model = "uniform", omega = 100 )tqxy1( 40, 50, n = 10, model = "uniform", omega = 100 ) tqyx1( 40, 50, n = 10, model = "uniform", omega = 100 ) tqxy2( 40, 50, n = 10, model = "uniform", omega = 100 ) tqyx2( 40, 50, n = 10, model = "uniform", omega = 100 )
Computes pure endowment actuarial present values for joint-life and last-survivor statuses for two independent lives.
nExy(x, y, n, i, tbl = NULL, model = NULL, ...) nExybar(x, y, n, i, tbl = NULL, model = NULL, ...)nExy(x, y, n, i, tbl = NULL, model = NULL, ...) nExybar(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
n |
Nonnegative integer term. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model. |
nExy() computes an -year joint-life pure endowment, payable
at time if both lives survive.
nExybar() computes an -year last-survivor pure endowment,
payable at time if at least one life survives.
The joint-life pure endowment is
The last-survivor pure endowment is
Under independence,
and
A numeric vector of actuarial present values.
nExy( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) nExybar( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 )nExy( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 ) nExybar( x = 40, y = 50, n = 10, i = 0.05, model = "uniform", omega = 100 )
Computes joint-life and last-survivor survival and failure probabilities for two independent lives.
tpxy(x, y, t, tbl = NULL, model = NULL, ...) tqxy(x, y, t, tbl = NULL, model = NULL, ...) tpxybar(x, y, t, tbl = NULL, model = NULL, ...) tqxybar(x, y, t, tbl = NULL, model = NULL, ...)tpxy(x, y, t, tbl = NULL, model = NULL, ...) tqxy(x, y, t, tbl = NULL, model = NULL, ...) tpxybar(x, y, t, tbl = NULL, model = NULL, ...) tqxybar(x, y, t, tbl = NULL, model = NULL, ...)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
t |
Nonnegative duration. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model. |
tpxy() computes the joint-life survival probability
tqxy() computes the joint-life failure probability
tpxybar() computes the last-survivor survival probability
tqxybar() computes the last-survivor failure probability
All calculations assume the future lifetimes are independent.
Joint-life probabilities require both lives to satisfy the survival condition, whereas last-survivor probabilities require at least one life to survive.
A numeric vector of probabilities.
tpxy( 40, 50, t = 10, model = "uniform", omega = 100 ) tqxy( 40, 50, t = 10, model = "uniform", omega = 100 ) tpxybar( 40, 50, t = 10, model = "uniform", omega = 100 ) tqxybar( 40, 50, t = 10, model = "uniform", omega = 100 )tpxy( 40, 50, t = 10, model = "uniform", omega = 100 ) tqxy( 40, 50, t = 10, model = "uniform", omega = 100 ) tpxybar( 40, 50, t = 10, model = "uniform", omega = 100 ) tqxybar( 40, 50, t = 10, model = "uniform", omega = 100 )
Computes under UDD, constant force, or Balducci.
mux_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))mux_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))
tbl |
A life_table object. |
x |
Numeric vector of integer ages. |
t |
Numeric vector of fractional durations with |
assumption |
One of |
Numeric vector of values.
Computes
.
nAbarx(x, n, i, model, ...)nAbarx(x, n, i, model, ...)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of APVs.
Computes .
nAbarx_udd(nAx, i)nAbarx_udd(nAx, i)
nAx |
Discrete deferred insurance APV. |
i |
Effective annual interest rate. |
Continuous deferred insurance APV under UDD.
Computes .
nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of APVs.
Computes
.
nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of APVs.
Computes .
nAx_m_udd(nAx, i, m)nAx_m_udd(nAx, i, m)
nAx |
Discrete deferred insurance APV. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
m-thly deferred insurance APV under UDD.
Computes Entry Age Normal normal cost as total benefit APV divided by an active-service annuity-due factor.
NC_EAN_db(APV_total, adue_active)NC_EAN_db(APV_total, adue_active)
APV_total |
Nonnegative total actuarial present value of benefits. |
adue_active |
Positive active-service annuity-due factor. |
A numeric vector.
NC_EAN_db(APV_total = 25000, adue_active = 15)NC_EAN_db(APV_total = 25000, adue_active = 15)
Computes the actuarial present value of the portion of the projected benefit attributed to the current year of service.
NC_PUC_db(projected_benefit, total_service, v_to_ret, p_surv, adue_ret)NC_PUC_db(projected_benefit, total_service, v_to_ret, p_surv, adue_ret)
projected_benefit |
Nonnegative projected annual benefit at retirement. |
total_service |
Positive total service at retirement. |
v_to_ret |
Nonnegative discount factor from the valuation date to retirement. |
p_surv |
Survival or active-service probability to retirement in
|
adue_ret |
Positive retirement annuity-due factor. |
A numeric vector.
NC_PUC_db( projected_benefit = 30000, total_service = 30, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )NC_PUC_db( projected_benefit = 30000, total_service = 30, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )
Computes the actuarial present value of the benefit accrued during the current year.
NC_TUC_db(accrual_benefit, v_to_ret, p_surv, adue_ret)NC_TUC_db(accrual_benefit, v_to_ret, p_surv, adue_ret)
accrual_benefit |
Nonnegative benefit accrued during the current year. |
v_to_ret |
Nonnegative discount factor from the valuation date to retirement. |
p_surv |
Survival or active-service probability to retirement in
|
adue_ret |
Positive retirement annuity-due factor. |
A numeric vector.
NC_TUC_db( accrual_benefit = 1560, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )NC_TUC_db( accrual_benefit = 1560, v_to_ret = 0.5, p_surv = 0.9, adue_ret = 12 )
Compute deaths over an n-year interval from a life table
ndx(tbl, x, n)ndx(tbl, x, n)
tbl |
A |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of values.
Computes .
nEx(x, n, i, tbl = NULL, model = NULL, ...)nEx(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of APVs.
Computes .
nkqx(tbl, x, k)nkqx(tbl, x, k)
tbl |
A life_table object. |
x |
Numeric vector of ages. |
k |
Nonnegative integer. |
Numeric vector of values.
Computes the probability that a life aged x survives n years and then
dies within the following m years:
.
nmxq(tbl, x, n, m)nmxq(tbl, x, n, m)
tbl |
A life_table object. |
x |
Numeric vector of ages. |
n |
Nonnegative integer deferred period. |
m |
Nonnegative integer subsequent period. |
This function is for integer n and m in the discrete tabular setting.
Numeric vector of values.
Computes
.
nmxq_select(tbl, x_sel, t, n, m)nmxq_select(tbl, x_sel, t, n, m)
tbl |
A |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of current durations since selection. |
n |
Numeric vector of nonnegative integer deferred periods. |
m |
Numeric vector of nonnegative integer death windows. |
Numeric vector of deferred death probabilities.
Computes cumulative discounted profits through each duration. A scalar discount rate returns a named vector; vectorized rates return a matrix.
NPV_partial(Pi, r)NPV_partial(Pi, r)
Pi |
Numeric profit-signature vector. |
r |
Annual effective risk discount rate. May be scalar or vector;
values must be greater than |
A named numeric vector for scalar r, or a numeric matrix for
vectorized r.
Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_partial(Pi, r = 0.10)Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_partial(Pi, r = 0.10)
Discounts a profit signature at one or more annual effective risk discount rates.
NPV_profit(Pi, r)NPV_profit(Pi, r)
Pi |
Numeric profit-signature vector. |
r |
Annual effective risk discount rate. May be scalar or vector;
values must be greater than |
A numeric vector with one value for each rate in r.
Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_profit(Pi, r = 0.10) NPV_profit(Pi, r = c(0.08, 0.10, 0.12))Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_profit(Pi, r = 0.10) NPV_profit(Pi, r = c(0.08, 0.10, 0.12))
Compute n-year survival probability from a life table
npx(tbl, x, n)npx(tbl, x, n)
tbl |
A |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of values.
Computes
in the discrete select-table setting.
npx_select(tbl, x_sel, t, n)npx_select(tbl, x_sel, t, n)
tbl |
A |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of current durations since selection. |
n |
Numeric vector of nonnegative integer future durations. |
Numeric vector of survival probabilities.
Computes
npxtau_md(tbl, x, n)npxtau_md(tbl, x, n)
tbl |
A multiple-decrement table produced by |
x |
Starting age or duration. May be scalar or vector. |
n |
Nonnegative integer term. May be scalar or vector. |
A numeric vector of survival probabilities.
ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) npxtau_md(tbl, x = 46, n = 3)ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) npxtau_md(tbl, x = 46, n = 3)
Compute n-year death probability from a life table
nqx(tbl, x, n)nqx(tbl, x, n)
tbl |
A |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of values.
Computes
.
nqx_select(tbl, x_sel, t, n)nqx_select(tbl, x_sel, t, n)
tbl |
A |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of current durations since selection. |
n |
Numeric vector of nonnegative integer future durations. |
Numeric vector of death probabilities.
Computes the probability of decrement from cause j within
n years:
nqxj_md(tbl, x, n, j)nqxj_md(tbl, x, n, j)
tbl |
A multiple-decrement table produced by |
x |
Starting age or duration. May be scalar or vector. |
n |
Nonnegative integer term. May be scalar or vector. |
j |
Positive integer cause index. May be scalar or vector. |
A numeric vector of cause-specific decrement probabilities.
ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) nqxj_md(tbl, x = 46, n = 2, j = 1)ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) nqxj_md(tbl, x = 46, n = 2, j = 1)
Computes
nqxtau_md(tbl, x, n)nqxtau_md(tbl, x, n)
tbl |
A multiple-decrement table produced by |
x |
Starting age or duration. May be scalar or vector. |
n |
Nonnegative integer term. May be scalar or vector. |
A numeric vector of total decrement probabilities.
ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) nqxtau_md(tbl, x = 46, n = 2)ages <- 45:50 qmat <- cbind( q1 = c(0.011, 0.012, 0.013, 0.014, 0.015, 0.016), q2 = rep(0.100, 6) ) tbl <- md_table(ages, qmat, radix = 1000) nqxtau_md(tbl, x = 46, n = 2)
Projects the annual benefit using a career-average-earnings formula.
PAB_cae(x, z, CASx, p, past_salary_total = 0, g = NULL, s = NULL)PAB_cae(x, z, CASx, p, past_salary_total = 0, g = NULL, s = NULL)
x |
Scalar current or entry age. |
z |
Scalar retirement age. |
CASx |
Positive scalar current annual salary. |
p |
Nonnegative scalar accrual percentage. |
past_salary_total |
Nonnegative total of actual prior salaries. |
g |
Optional scalar annual salary growth rate greater than |
s |
Optional positive salary-scale vector of length |
A numeric scalar.
PAB_cae( x = 30, z = 65, CASx = 100000, p = 1, g = 0.04 )PAB_cae( x = 30, z = 65, CASx = 100000, p = 1, g = 0.04 )
Projects the annual benefit using a final-average-salary formula.
PAB_fas(x, z, CASx, p, fas_years = 3, past_service = 0, g = NULL, s = NULL)PAB_fas(x, z, CASx, p, fas_years = 3, past_service = 0, g = NULL, s = NULL)
x |
Scalar current or entry age. |
z |
Scalar retirement age. |
CASx |
Positive scalar current annual salary. |
p |
Nonnegative scalar accrual percentage, such as |
fas_years |
Positive integer number of years in the final salary average. |
past_service |
Nonnegative scalar years of service already completed. |
g |
Optional scalar annual salary growth rate greater than |
s |
Optional positive salary-scale vector of length |
A numeric scalar.
PAB_fas( x = 35, z = 65, CASx = 60000, p = 2, fas_years = 3, g = 0.04 )PAB_fas( x = 35, z = 65, CASx = 60000, p = 2, fas_years = 3, g = 0.04 )
Approximates a continuous premium rate by trapezoidal integration.
Pbar_trapz_ms(t, tp00, tp01, delta, mu02, mu12, B02 = 1, B12 = 1, R = 0)Pbar_trapz_ms(t, tp00, tp01, delta, mu02, mu12, B02 = 1, B12 = 1, R = 0)
t |
Strictly increasing nonnegative time points. |
tp00 |
Healthy-state probabilities. |
tp01 |
Disabled-state probabilities. |
delta |
Force of interest. |
mu02 |
Healthy-to-deceased intensity function. |
mu12 |
Disabled-to-deceased intensity function. |
B02 |
Benefit on death while healthy. |
B12 |
Benefit on death while disabled. |
R |
Continuous disability income rate. |
A numeric scalar.
mu01 <- function(t) 0.10 * t + 0.20 mu02 <- function(t) 0.20 mu10 <- function(t) 0.50 mu12 <- function(t) 0.125 * t + 0.20 probs <- tp00_tp01_euler( h = 0.10, n = 2, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 ) Pbar_trapz_ms( t = probs$t, tp00 = probs$tp00, tp01 = probs$tp01, delta = 0.04, mu02 = mu02, mu12 = mu12, B02 = 1000, B12 = 1000, R = 1000 )mu01 <- function(t) 0.10 * t + 0.20 mu02 <- function(t) 0.20 mu10 <- function(t) 0.50 mu12 <- function(t) 0.125 * t + 0.20 probs <- tp00_tp01_euler( h = 0.10, n = 2, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 ) Pbar_trapz_ms( t = probs$t, tp00 = probs$tp00, tp01 = probs$tp01, delta = 0.04, mu02 = mu02, mu12 = mu12, B02 = 1000, B12 = 1000, R = 1000 )
Converts policy-year expected profits into a profit signature by weighting each future expected profit by the probability that the contract is in force at the start of that policy year.
Pi_signature(Pr, p_tau)Pi_signature(Pr, p_tau)
Pr |
Profit vector of length |
p_tau |
One-year in-force probabilities. For |
A named numeric vector with the same length as Pr.
Pr <- c(-15.00, 8.42, 8.40, 8.61) Pi_signature(Pr, p_tau = c(0.99858, 0.99847, 0.99834))Pr <- c(-15.00, 8.42, 8.40, 8.61) Pi_signature(Pr, p_tau = c(0.99858, 0.99847, 0.99834))
Computes
PnAdotx(x, n, i, model = NULL, ..., tbl = NULL)PnAdotx(x, n, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Positive integer deferral period. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of net annual premiums.
PnAdotx( 40, n = 20, i = 0.05, model = "uniform", omega = 100 )PnAdotx( 40, n = 20, i = 0.05, model = "uniform", omega = 100 )
Computes
Pnax(x, n, i, model = NULL, ..., tbl = NULL)Pnax(x, n, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Positive integer deferral period. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of net annual premiums.
Pnax( 40, n = 20, i = 0.05, model = "uniform", omega = 100 )Pnax( 40, n = 20, i = 0.05, model = "uniform", omega = 100 )
Computes expected profit by policy year for a discrete contract with up to two decrements. The first element is the negative pre-contract expense.
Pr_vector_disc( V, G, i, r = 0, e = 0, q1, q2 = 0, b1, b2 = 0, s1 = 0, s2 = 0, p_tau = NULL, pre_contract_expense = 0 )Pr_vector_disc( V, G, i, r = 0, e = 0, q1, q2 = 0, b1, b2 = 0, s1 = 0, s2 = 0, p_tau = NULL, pre_contract_expense = 0 )
V |
Numeric vector of gross premium reserves with length
|
G |
Gross premium by policy year. |
i |
Annual effective interest rate by policy year. Values must be
greater than |
r |
Percent-of-premium expense rate by policy year. Values must lie in
|
e |
Fixed expense by policy year. |
q1 |
Probability of the first decrement by policy year. |
q2 |
Probability of the second decrement by policy year. |
b1 |
Benefit payable on the first decrement. |
b2 |
Benefit payable on the second decrement. |
s1 |
Settlement expense associated with the first decrement. |
s2 |
Settlement expense associated with the second decrement. |
p_tau |
Optional in-force probability by policy year. If omitted, it is
calculated as |
pre_contract_expense |
Nonnegative scalar pre-contract expense. |
For policy year , the expected profit is
Scalar yearly inputs are recycled to the number of policy years determined
by length(V) - 1.
A named numeric vector of length n + 1.
V <- c(0, 5.66, 6.17, 0) qx <- c(0.00142, 0.00153, 0.00166) Pr_vector_disc( V = V, G = 95, i = 0.06, r = 0.05, e = 10, q1 = qx, b1 = 50000, pre_contract_expense = 15 )V <- c(0, 5.66, 6.17, 0) qx <- c(0.00142, 0.00153, 0.00166) Pr_vector_disc( V = V, G = 95, i = 0.06, r = 0.05, e = 10, q1 = qx, b1 = 50000, pre_contract_expense = 15 )
Computes net present value divided by the actuarial present value of gross premiums. Scalar arguments are recycled to the common length.
profit_margin(NPV, APV_GP)profit_margin(NPV, APV_GP)
NPV |
Net present value of profits. |
APV_GP |
Positive actuarial present value of gross premiums. |
A numeric vector.
profit_margin(6.03, 259.52)profit_margin(6.03, 259.52)
Present value of cash flows at time 0
pv_cashflows(cf, t, i)pv_cashflows(cf, t, i)
cf |
Cash flow amounts. |
t |
Times of cash flows. |
i |
Effective interest rate. |
Present value at time 0.
pv_cashflows(c(-100, 60, 60), c(0, 1, 2), i = 0.10)pv_cashflows(c(-100, 60, 60), c(0, 1, 2), i = 0.10)
Discounts each cash flow using the spot rate matched to its payment time. Time-zero cash flows are not discounted.
pv_spot_cashflows( amounts, times, spot, compounding = c("annual", "semiannual") )pv_spot_cashflows( amounts, times, spot, compounding = c("annual", "semiannual") )
amounts |
Numeric vector of cash-flow amounts. |
times |
Numeric vector of payment times in years. |
spot |
Numeric vector of spot rates matched elementwise to
|
compounding |
Character string equal to |
A numeric scalar.
pv_spot_cashflows( amounts = c(200000, 50000, 50000, 100000), times = c(0, 0.5, 1, 2), spot = c(0, 0.02440, 0.02601, 0.02936), compounding = "semiannual" )pv_spot_cashflows( amounts = c(200000, 50000, 50000, 100000), times = c(0, 0.5, 1, 2), spot = c(0, 0.02440, 0.02601, 0.02936), compounding = "semiannual" )
Builds life-table survivor values recursively from
, starting from a chosen radix.
px_to_lx(px, radix = 1e+05)px_to_lx(px, radix = 1e+05)
px |
Numeric vector of one-year survival probabilities |
radix |
Positive radix |
Numeric vector of values of length length(px) + 1.
Computes
pxtau(qxj)pxtau(qxj)
qxj |
Numeric vector of cause-specific decrement probabilities. |
A numeric scalar.
pxtau(c(0.011, 0.100))pxtau(c(0.011, 0.100))
pxtau_ul() computes one-year persistency probabilities under
mortality and withdrawal.
pxtau_ul(qd, qw, year_end_withdrawal = TRUE) tpxtau_ul(qd, qw, year_end_withdrawal = TRUE)pxtau_ul(qd, qw, year_end_withdrawal = TRUE) tpxtau_ul(qd, qw, year_end_withdrawal = TRUE)
qd |
Mortality probabilities. |
qw |
Withdrawal probabilities. |
year_end_withdrawal |
Logical scalar. If |
tpxtau_ul() computes cumulative persistency through the end of each
policy year.
A numeric vector.
qd <- c(0.001, 0.002, 0.003) qw <- c(0.02, 0.02, 0.03) pxtau_ul(qd, qw) tpxtau_ul(qd, qw)qd <- c(0.001, 0.002, 0.003) qw <- c(0.02, 0.02, 0.03) pxtau_ul(qd, qw) tpxtau_ul(qd, qw)
Converts associated single-decrement probabilities to dependent cause-specific decrement probabilities under constant forces.
qx_dep_cf(qxprime)qx_dep_cf(qxprime)
qxprime |
Numeric vector of associated single-decrement probabilities. Each value must be less than one. |
A numeric vector of dependent cause-specific decrement probabilities.
qx_dep_cf(c(0.20, 0.10))qx_dep_cf(c(0.20, 0.10))
Converts two associated single-decrement probabilities to dependent multiple-decrement probabilities under the single-decrement uniform distribution assumption.
qx_dep_sudd(q1prime, q2prime)qx_dep_sudd(q1prime, q2prime)
q1prime |
Associated single-decrement probability for cause 1. May be scalar or vector. |
q2prime |
Associated single-decrement probability for cause 2. May be scalar or vector. |
For scalar input, a named numeric vector containing q1
and q2. For vectorized input, a numeric matrix with columns
q1 and q2.
qx_dep_sudd(0.20, 0.10)qx_dep_sudd(0.20, 0.10)
Compute one-year death probability from a life table
qx_tab(tbl, x)qx_tab(tbl, x)
tbl |
A |
x |
Ages. |
Numeric vector of values.
Builds life-table survivor values recursively from
, starting from a chosen radix.
qx_to_lx(qx, radix = 1e+05)qx_to_lx(qx, radix = 1e+05)
qx |
Numeric vector of one-year death probabilities |
radix |
Positive radix |
Numeric vector of values of length length(qx) + 1.
Converts dependent multiple-decrement probabilities to associated single-decrement probabilities under the multiple-decrement uniform distribution assumption.
qxprime_mudd(qxj)qxprime_mudd(qxj)
qxj |
Numeric vector of dependent cause-specific decrement probabilities. |
A numeric vector of associated single-decrement probabilities.
qxprime_mudd(c(0.20, 0.10))qxprime_mudd(c(0.20, 0.10))
Converts two dependent multiple-decrement probabilities to associated single-decrement probabilities under the single-decrement uniform distribution assumption.
qxprime_sudd(q1, q2)qxprime_sudd(q1, q2)
q1 |
Dependent decrement probability for cause 1. May be scalar or vector. |
q2 |
Dependent decrement probability for cause 2. May be scalar or vector. |
For scalar input, a named numeric vector containing
q1prime and q2prime. For vectorized input, a numeric
matrix with columns q1prime and q2prime.
qxprime_sudd(0.20, 0.10)qxprime_sudd(0.20, 0.10)
Computes the total one-year multiple-decrement probability
qxtau(qxj)qxtau(qxj)
qxj |
Numeric vector of cause-specific decrement probabilities. |
A numeric scalar.
qxtau(c(0.011, 0.100))qxtau(c(0.011, 0.100))
Computes annual benefit divided by a selected salary measure. Scalar arguments are recycled to a common length.
replacement_ratio_db(benefit, salary)replacement_ratio_db(benefit, salary)
benefit |
Nonnegative annual retirement benefit. |
salary |
Positive salary measure used in the denominator. |
A numeric vector.
replacement_ratio_db( benefit = 108008.66, salary = 187119.09 )replacement_ratio_db( benefit = 108008.66, salary = 187119.09 )
Computes annual retirement income divided by salary in the final pre-retirement year.
replacement_ratio_dc(x, z, Sx, c, i, adue_z, g = NULL, s = NULL)replacement_ratio_dc(x, z, Sx, c, i, adue_z, g = NULL, s = NULL)
x |
Scalar entry age. |
z |
Scalar retirement age. |
Sx |
Positive scalar salary at age |
c |
Scalar contribution rate in |
i |
Scalar annual effective investment return greater than |
adue_z |
Positive scalar whole-life annuity-due factor at retirement. |
g |
Optional scalar annual salary growth rate greater than |
s |
Optional positive salary-scale vector of length |
A numeric scalar.
replacement_ratio_dc( x = 30, z = 65, Sx = 50000, c = 0.10, i = 0.05, adue_z = 12, g = 0.04 )replacement_ratio_dc( x = 30, z = 65, Sx = 50000, c = 0.10, i = 0.05, adue_z = 12, g = 0.04 )
Computes reversionary whole-life annuities payable to one life after the death of the other life.
ax_y(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) ay_x(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)ax_y(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12) ay_x(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
x |
Age of the first life. May be scalar or vector. |
y |
Age of the second life. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the survival model or life-table functions. |
k_max |
Maximum number of terms used for an infinite series. |
tol |
Numerical tolerance used to assess convergence. |
ax_y() computes an annuity payable to the second life after the
death of the first life.
ay_x() computes an annuity payable to the first life after the
death of the second life.
A numeric vector of actuarial present values.
Computes the ratio of account value to guaranteed maturity fund, capped at one.
rt_ul(AV, GMF)rt_ul(AV, GMF)
AV |
Nonnegative account value. |
GMF |
Positive guaranteed maturity fund. |
A numeric vector.
rt_ul(AV = 4918.20, GMF = 14678.57)rt_ul(AV = 4918.20, GMF = 14678.57)
Computes .
S0(t, model, ...)S0(t, model, ...)
t |
Numeric vector of times. |
model |
One of |
... |
Model parameters. |
Numeric vector of survival probabilities.
Converts survival function values into life-table survivor
values using a chosen radix.
S0_to_lx(S0, radix = 1e+05)S0_to_lx(S0, radix = 1e+05)
S0 |
Numeric vector of survival probabilities. |
radix |
Positive radix |
Numeric vector of values.
Constructs salary-scale values under a constant annual growth rate.
salary_scale(k, g, base_age = min(k), s_base = 1)salary_scale(k, g, base_age = min(k), s_base = 1)
k |
Numeric vector of ages or durations. |
g |
Annual salary growth rate greater than |
base_age |
Scalar age or duration at which the scale is normalized. |
s_base |
Positive scalar salary-scale value at |
A numeric vector with the same length as k.
salary_scale(k = 30:34, g = 0.04, base_age = 30)salary_scale(k = 30:34, g = 0.04, base_age = 30)
Builds a select-life-table object from vectors of selection age, duration since selection, attained age, and survivor values.
select_life_table(x_sel, duration, attained_age, lx)select_life_table(x_sel, duration, attained_age, lx)
x_sel |
Numeric vector of ages at selection. |
duration |
Numeric vector of durations since selection. |
attained_age |
Numeric vector of attained ages. |
lx |
Numeric vector of select-table survivor values. |
A data frame with class "select_life_table".
Finds the interest rate 'i' such that the present value of the cash flows is 0.
solve_yield(cf, t, interval = c(-0.99, 1), tol = 1e-10)solve_yield(cf, t, interval = c(-0.99, 1), tol = 1e-10)
cf |
Cash flows. |
t |
Times. |
interval |
Two-length numeric vector bracketing the root. |
tol |
Tolerance passed to 'uniroot()'. |
Yield rate 'i'.
solve_yield(c(-100, 60, 60), c(0, 1, 2), interval = c(-0.5, 1))solve_yield(c(-100, 60, 60), c(0, 1, 2), interval = c(-0.5, 1))
Computes life-contingent actuarial present values using annual effective spot rates by maturity.
nEx_spot(qx, z, benefit = 1) Axn1_spot(qx, z, benefit = 1) Axn_spot(qx, z, benefit = 1) axn_spot(qx, z, type = c("immediate", "due"), benefit = 1)nEx_spot(qx, z, benefit = 1) Axn1_spot(qx, z, benefit = 1) Axn_spot(qx, z, benefit = 1) axn_spot(qx, z, type = c("immediate", "due"), benefit = 1)
qx |
Numeric vector of one-year mortality probabilities. |
z |
Numeric vector of annual effective spot rates for maturities
|
benefit |
Nonnegative scalar benefit or annuity payment amount. |
type |
Character string equal to |
If denotes the annual effective spot rate for maturity
, the corresponding discount factor is
nEx_spot() computes a pure endowment.
Axn1_spot() computes term insurance payable at the end of the year
of death.
Axn_spot() computes endowment insurance.
axn_spot() computes a temporary annuity-immediate or
annuity-due.
Each payment is discounted using the spot rate corresponding to its maturity rather than a single level interest rate.
The pure endowment is
Term insurance is obtained by discounting each death benefit using the spot rate corresponding to its payment year.
Endowment insurance equals the sum of the corresponding term insurance and pure endowment.
Temporary annuities discount each payment using the spot rate for its payment time.
A numeric scalar.
qx <- c(0.02, 0.03, 0.04, 0.05, 0.06) spot <- c(0.03, 0.04, 0.05, 0.06, 0.07) nEx_spot(qx, spot, benefit = 1000) Axn1_spot(qx, spot) Axn_spot(qx, spot) axn_spot(qx, spot, type = "due")qx <- c(0.02, 0.03, 0.04, 0.05, 0.06) spot <- c(0.03, 0.04, 0.05, 0.06, 0.07) nEx_spot(qx, spot, benefit = 1000) Axn1_spot(qx, spot) Axn_spot(qx, spot) axn_spot(qx, spot, type = "due")
Starting from a terminal reserve at the final time, computes reserves backward over a strictly increasing time grid using 'thiele_backward_step()'.
thiele_backward_path(times, V_terminal, P, delta, mu, benefit = 1)thiele_backward_path(times, V_terminal, P, delta, mu, benefit = 1)
times |
Finite numeric vector of strictly increasing times. |
V_terminal |
Finite scalar reserve at the final time. |
P |
Premium rate, scalar or vector with one value per time step. |
delta |
Force of interest, scalar or vector with one value per step. |
mu |
Nonnegative force of mortality, scalar or vector with one value per step. |
benefit |
Benefit amount, scalar or vector with one value per step. |
Numeric vector of reserve values corresponding to 'times'.
times <- seq(19, 20, by = 0.25) thiele_backward_path( times, V_terminal = 1000, P = 26.96, delta = 0.058, mu = 0.002, benefit = 1000 )times <- seq(19, 20, by = 0.25) thiele_backward_path( times, V_terminal = 1000, P = 26.96, delta = 0.058, mu = 0.002, benefit = 1000 )
Approximates the reserve at time 't' from a known reserve at time 't + h'.
thiele_backward_step(V_next, P, delta, mu, benefit = 1, h = 1)thiele_backward_step(V_next, P, delta, mu, benefit = 1, h = 1)
V_next |
Reserve at time 't + h'. |
P |
Premium rate. |
delta |
Force of interest. |
mu |
Nonnegative force of mortality at time 't'. |
benefit |
Benefit amount. |
h |
Positive step size. |
The implemented step is
Numeric vector of reserve approximations.
thiele_backward_step( V_next = 1000, P = 26.96, delta = 0.058, mu = 0.002, benefit = 1000, h = 1 )thiele_backward_step( V_next = 1000, P = 26.96, delta = 0.058, mu = 0.002, benefit = 1000, h = 1 )
Computes
thiele_dVdt(V, P, delta, mu, benefit = 1)thiele_dVdt(V, P, delta, mu, benefit = 1)
V |
Reserve at time 't'. |
P |
Premium rate. |
delta |
Force of interest. |
mu |
Nonnegative force of mortality. |
benefit |
Benefit amount. |
Numeric vector of reserve derivatives.
thiele_dVdt( V = 900, P = 25, delta = 0.05, mu = 0.002, benefit = 1000 )thiele_dVdt( V = 900, P = 25, delta = 0.05, mu = 0.002, benefit = 1000 )
Computes the coupled Thiele reserve derivatives. Numeric arguments may be scalar or compatible vectors.
thiele_dVdt_01(t, V0, V1, delta, Pbar, B, R, mu01, mu02, mu10, mu12)thiele_dVdt_01(t, V0, V1, delta, Pbar, B, R, mu01, mu02, mu10, mu12)
t |
Time. |
V0 |
Healthy-state reserve. |
V1 |
Disabled-state reserve. |
delta |
Force of interest. |
Pbar |
Continuous premium rate. |
B |
Death benefit. |
R |
Continuous disability income rate. |
mu01 |
Healthy-to-disabled intensity function. |
mu02 |
Healthy-to-deceased intensity function. |
mu10 |
Disabled-to-healthy intensity function. |
mu12 |
Disabled-to-deceased intensity function. |
A named vector for scalar input or a two-column matrix for vectorized input.
Computes a backward Euler reserve path from terminal healthy-state and disabled-state reserves.
thiele_path_01( h, n, delta, Pbar, B, R, mu01, mu02, mu10, mu12, V0_n = 0, V1_n = 0 )thiele_path_01( h, n, delta, Pbar, B, R, mu01, mu02, mu10, mu12, V0_n = 0, V1_n = 0 )
h |
Positive step size. |
n |
Nonnegative final time. |
delta |
Force of interest. |
Pbar |
Continuous premium rate. |
B |
Death benefit. |
R |
Continuous disability income rate. |
mu01 |
Healthy-to-disabled intensity function. |
mu02 |
Healthy-to-deceased intensity function. |
mu10 |
Disabled-to-healthy intensity function. |
mu12 |
Disabled-to-deceased intensity function. |
V0_n |
Terminal healthy-state reserve. |
V1_n |
Terminal disabled-state reserve. |
A data frame with columns t, tV0, and tV1.
Approximates probabilities of being healthy, disabled, or deceased in a three-state model that allows recovery from disability. The final time is always included, with a shorter final step when needed.
tp00_tp01_euler(h, n, mu01, mu02, mu10, mu12, p00_0 = 1, p01_0 = 0)tp00_tp01_euler(h, n, mu01, mu02, mu10, mu12, p00_0 = 1, p01_0 = 0)
h |
Positive step size. |
n |
Nonnegative final time. |
mu01 |
Healthy-to-disabled intensity function. |
mu02 |
Healthy-to-deceased intensity function. |
mu10 |
Disabled-to-healthy intensity function. |
mu12 |
Disabled-to-deceased intensity function. |
p00_0 |
Initial healthy-state probability. |
p01_0 |
Initial disabled-state probability. |
A data frame with columns t, tp00, tp01,
and tp02.
mu01 <- function(t) 0.10 * t + 0.20 mu02 <- function(t) 0.20 mu10 <- function(t) 0.50 mu12 <- function(t) 0.125 * t + 0.20 tp00_tp01_euler(0.10, 2, mu01, mu02, mu10, mu12)mu01 <- function(t) 0.10 * t + 0.20 mu02 <- function(t) 0.20 mu10 <- function(t) 0.50 mu12 <- function(t) 0.125 * t + 0.20 tp00_tp01_euler(0.10, 2, mu01, mu02, mu10, mu12)
Computes .
tpx(t, x, model, ...)tpx(t, x, model, ...)
t |
Numeric vector of durations. |
x |
Numeric vector of ages. |
model |
One of |
... |
Model parameters. |
Numeric vector of survival probabilities.
Computes for from a discrete life table
under UDD, constant force, or Balducci.
tpx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))tpx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))
tbl |
A life_table object. |
x |
Numeric vector of integer ages. |
t |
Numeric vector of fractional durations with |
assumption |
One of |
Numeric vector of values.
Computes
tpx_tau_cf(mu, t)tpx_tau_cf(mu, t)
mu |
Numeric vector of nonnegative cause-specific forces. |
t |
Nonnegative time. May be scalar or vector. |
A numeric vector.
tpx_tau_cf(c(0.10, 0.20), 5) tpx_tau_cf(c(0.10, 0.20), c(1, 5, 10))tpx_tau_cf(c(0.10, 0.20), 5) tpx_tau_cf(c(0.10, 0.20), c(1, 5, 10))
Computes
tpxprimej_cf(mu, t)tpxprimej_cf(mu, t)
mu |
Nonnegative constant force of decrement. May be scalar or vector. |
t |
Nonnegative time. May be scalar or vector. |
A numeric vector.
tpxprimej_cf(0.10, 5) tpxprimej_cf(0.10, c(1, 5, 10))tpxprimej_cf(0.10, 5) tpxprimej_cf(0.10, c(1, 5, 10))
Computes .
tqx(t, x, model, ...)tqx(t, x, model, ...)
t |
Numeric vector of durations. |
x |
Numeric vector of ages. |
model |
One of |
... |
Model parameters. |
Numeric vector of failure probabilities.
Computes for .
tqx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))tqx_tab(tbl, x, t, assumption = c("udd", "cf", "balducci"))
tbl |
A life_table object. |
x |
Numeric vector of integer ages. |
t |
Numeric vector of fractional durations with |
assumption |
One of |
Numeric vector of values.
Computes
tqxj_cf(mu, j, t)tqxj_cf(mu, j, t)
mu |
Numeric vector of nonnegative cause-specific forces. |
j |
Positive integer cause index. |
t |
Nonnegative time. May be scalar or vector. |
A numeric vector.
tqxj_cf(c(0.10, 0.20), j = 1, t = 5)tqxj_cf(c(0.10, 0.20), j = 1, t = 5)
Computes the associated single-decrement probabilities through time
t under the multiple-decrement uniform distribution assumption.
tqxprime_mudd(qxj, t)tqxprime_mudd(qxj, t)
qxj |
Numeric vector of dependent cause-specific decrement probabilities. |
t |
A single time in |
A numeric vector of associated single-decrement probabilities.
tqxprime_mudd(c(0.20, 0.10), t = 0.5)tqxprime_mudd(c(0.20, 0.10), t = 0.5)
Computes
tqxprimej_cf(mu, t)tqxprimej_cf(mu, t)
mu |
Nonnegative constant force of decrement. May be scalar or vector. |
t |
Nonnegative time. May be scalar or vector. |
A numeric vector.
tqxprimej_cf(0.10, 5)tqxprimej_cf(0.10, 5)
Computes the reserve for a whole life insurance with continuous premiums and immediate payment of claims.
tVbarAbarx(x, t, i, model = NULL, ..., tbl = NULL)tVbarAbarx(x, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration, allowed to be any nonnegative numeric value. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
In the fully continuous setting, reserve time may be any
nonnegative real value.
A numeric vector of values.
tVbarAbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100) tVbarAbarx(40, t = c(19, 19.25, 19.5, 19.75, 20), i = 0.06, model = "uniform", omega = 100)tVbarAbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100) tVbarAbarx(40, t = c(19, 19.25, 19.5, 19.75, 20), i = 0.06, model = "uniform", omega = 100)
Computes the reserve for a discrete whole life insurance funded by continuous premiums.
tVbarx(x, t, i, model = NULL, ..., tbl = NULL)tVbarx(x, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100)tVbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the reserve during the deferral period, where .
tVnAdotx(x, n, t, i, model = NULL, ..., tbl = NULL)tVnAdotx(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Positive integer deferral period. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of reserve values.
tVnAdotx( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )tVnAdotx( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )
Computes the reserve during the deferral period, where .
tVnax(x, n, t, i, model = NULL, ..., tbl = NULL)tVnax(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Positive integer deferral period. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of reserve values.
tVnax( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )tVnax( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )
Computes the prospective reserve for an n-year pure endowment.
tVnEx(x, n, t, i, model = NULL, ..., tbl = NULL)tVnEx(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVnEx(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)tVnEx(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the prospective reserve for a whole life insurance with annual premiums: reserve at duration t equals future APV of benefits minus future APV of net premiums.
tVx(x, t, i, model = NULL, ..., tbl = NULL)tVx(x, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVx(40, t = 10, i = 0.05, model = "uniform", omega = 100)tVx(40, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the reserve for a whole life insurance funded by true m-thly premiums.
tVx_m(x, t, m, i, model = NULL, ..., tbl = NULL)tVx_m(x, t, m, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration. |
m |
Number of premium payments per year. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVx_m(40, t = 10, m = 12, i = 0.05, model = "uniform", omega = 100)tVx_m(40, t = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the retrospective net level premium reserve
tVx_ret(x, t, i, model = NULL, ..., tbl = NULL)tVx_ret(x, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
The mortality basis may be supplied through either a life table or a parametric survival model.
Numeric vector of retrospective reserve values.
tVx_ret( 40, t = 10, i = 0.05, model = "uniform", omega = 100 )tVx_ret( 40, t = 10, i = 0.05, model = "uniform", omega = 100 )
Computes the prospective reserve for an n-year endowment insurance.
tVxn(x, n, t, i, model = NULL, ..., tbl = NULL)tVxn(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVxn(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)tVxn(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the retrospective reserve for an endowment insurance at a
duration satisfying . At maturity, the reserve is 1.
tVxn_ret(x, n, t, i, model = NULL, ..., tbl = NULL)tVxn_ret(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Nonnegative integer contract term. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of retrospective reserve values.
tVxn_ret( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )tVxn_ret( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )
Computes the prospective reserve for an n-year term insurance.
tVxn1(x, n, t, i, model = NULL, ..., tbl = NULL)tVxn1(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
tVxn1(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)tVxn1(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the retrospective reserve for a term insurance at a duration
satisfying . At expiry, the reserve is 0.
tVxn1_ret(x, n, t, i, model = NULL, ..., tbl = NULL)tVxn1_ret(x, n, t, i, model = NULL, ..., tbl = NULL)
x |
Issue age. May be scalar or vector. |
n |
Nonnegative integer contract term. May be scalar or vector. |
t |
Nonnegative integer duration. May be scalar or vector. |
i |
Effective annual interest rate. May be scalar or vector. |
model |
Optional parametric survival model. |
... |
Additional parameters passed to the actuarial functions. |
tbl |
Optional life table object. Supply by name. |
Numeric vector of retrospective reserve values.
tVxn1_ret( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )tVxn1_ret( 40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100 )
Under UDD,
and similarly for term and deferred insurance.
udd_continuous_multiplier(i)udd_continuous_multiplier(i)
i |
Numeric vector of effective annual interest rates. |
Numeric vector equal to .
Under UDD,
and similarly for term and deferred insurance.
udd_mthly_multiplier(i, m)udd_mthly_multiplier(i, m)
i |
Numeric vector of effective annual interest rates. |
m |
Positive integer payment frequency. |
Numeric vector equal to .
Computes reserves backward by setting expected profit in each policy year equal to zero. Negative reserves may optionally be floored at zero.
V_zeroized(qx, i, G, benefit, r = 0, e = 0, V_terminal = 0, floor_zero = TRUE)V_zeroized(qx, i, G, benefit, r = 0, e = 0, V_terminal = 0, floor_zero = TRUE)
qx |
Mortality probability by policy year. |
i |
Annual effective interest rate by policy year. Values must be
greater than |
G |
Gross premium by policy year. |
benefit |
Death benefit by policy year. |
r |
Percent-of-premium expense rate by policy year. Values must lie in
|
e |
Fixed expense by policy year. |
V_terminal |
Nonnegative scalar terminal reserve. |
floor_zero |
Logical scalar. If |
A named numeric vector of length length(qx) + 1.
V_zeroized( qx = c(0.015, 0.017, 0.019, 0.021, 0.024), i = 0.06, G = 19279, benefit = 1000000, e = 240 )V_zeroized( qx = c(0.015, 0.017, 0.019, 0.021, 0.024), i = 0.06, G = 19279, benefit = 1000000, e = 240 )
Computes .
var_Abarx(x, i, model, ...)var_Abarx(x, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Variance of continuous endowment insurance PV
var_Abarxn(x, n, i, model, ...)var_Abarxn(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Computes
.
var_Abarxn1(x, n, i, model, ...)var_Abarxn1(x, n, i, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Computes .
var_Ax(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)var_Ax(x, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of variances.
Computes .
var_Ax_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)var_Ax_m(x, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of variances.
Variance of endowment insurance PV
var_Axn(x, n, i, tbl = NULL, model = NULL, ...)var_Axn(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of variances.
Variance of m-thly endowment insurance PV
var_Axn_m(x, n, i, m, model, ...)var_Axn_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Computes .
var_Axn1(x, n, i, tbl = NULL, model = NULL, ...)var_Axn1(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of variances.
Variance of m-thly term insurance PV
var_Axn1_m(x, n, i, m, model, ...)var_Axn1_m(x, n, i, m, model, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Variance of continuous deferred insurance PV
var_nAbarx(x, n, i, model, ...)var_nAbarx(x, n, i, model, ...)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
Numeric vector of variances.
Variance of deferred insurance PV
var_nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)var_nAx(x, n, i, tbl = NULL, model = NULL, ..., tol = 1e-12, k_max = 5000)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
tol |
Numerical tolerance for truncating infinite sums. |
k_max |
Maximum number of terms in the sum. |
Numeric vector of variances.
Variance of m-thly deferred insurance PV
var_nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)var_nAx_m(x, n, i, m, model, ..., tol = 1e-12, j_max = 100000L)
x |
Age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
m |
Positive integer payment frequency. |
model |
Parametric survival model name. |
... |
Additional model parameters passed to survival-model functions. |
tol |
Numerical tolerance for truncating the infinite sum. |
j_max |
Maximum number of m-thly intervals in the sum. |
Numeric vector of variances.
Variance of pure endowment PV
var_nEx(x, n, i, tbl = NULL, model = NULL, ...)var_nEx(x, n, i, tbl = NULL, model = NULL, ...)
x |
Age. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model name. |
... |
Additional arguments passed to survival-model functions. |
Numeric vector of variances.
Computes life-contingent actuarial present values using a specified sequence of annual effective interest rates.
nEx_var(qx, i, benefit = 1) Axn1_var(qx, i, benefit = 1) Axn_var(qx, i, benefit = 1) axn_var(qx, i, type = c("immediate", "due"), benefit = 1)nEx_var(qx, i, benefit = 1) Axn1_var(qx, i, benefit = 1) Axn_var(qx, i, benefit = 1) axn_var(qx, i, type = c("immediate", "due"), benefit = 1)
qx |
Numeric vector of one-year mortality probabilities. |
i |
Numeric vector of annual effective interest rates. Each value
must be greater than |
benefit |
Nonnegative scalar benefit or annuity payment amount. |
type |
Character string equal to |
The vectors qx and i represent one valuation scenario and
must have the same positive length.
nEx_var() computes a pure endowment.
Axn1_var() computes term insurance payable at the end of the year
of death.
Axn_var() computes endowment insurance.
axn_var() computes a temporary annuity-immediate or
annuity-due.
Each year's payment is discounted using the cumulative product of the
annual effective interest rates supplied in i.
The pure endowment is
where is the cumulative discount factor implied by the sequence
of annual effective interest rates.
Term insurance is obtained by discounting each possible death benefit using the cumulative discount factor applicable to its payment year.
Endowment insurance equals the sum of the corresponding term insurance and pure endowment.
Temporary annuities discount each payment using the cumulative discount factors derived from the interest-rate sequence.
A numeric scalar.
qx <- c(0.03, 0.04, 0.05, 0.06, 0.07) rates <- c(0.06, 0.07, 0.08, 0.09, 0.10) nEx_var(qx, rates, benefit = 1000) Axn1_var(qx, rates) Axn_var(qx, rates) axn_var(qx, rates, type = "due")qx <- c(0.03, 0.04, 0.05, 0.06, 0.07) rates <- c(0.06, 0.07, 0.08, 0.09, 0.10) nEx_var(qx, rates, benefit = 1000) Axn1_var(qx, rates) Axn_var(qx, rates) axn_var(qx, rates, type = "due")
Computes the conditional variance
for a fully discrete whole life insurance.
varLtx(x, t, i, P, model = NULL, ..., tbl = NULL)varLtx(x, t, i, P, model = NULL, ..., tbl = NULL)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
P |
Annual premium. |
model |
Optional parametric survival model name. |
... |
Additional model parameters. |
tbl |
Optional life table object. |
A numeric vector of values.
prem <- Px(40, i = 0.05, model = "uniform", omega = 100) varLtx(40, t = 10, i = 0.05, P = prem, model = "uniform", omega = 100)prem <- Px(40, i = 0.05, model = "uniform", omega = 100) varLtx(40, t = 10, i = 0.05, P = prem, model = "uniform", omega = 100)
Computes the pre-floor reserve by multiplying the funding ratio by the difference between the present value of future benefits and future premiums.
Vprefloor_crvm_ul(r, pvfb_minus_pvfp)Vprefloor_crvm_ul(r, pvfb_minus_pvfp)
r |
Funding ratio. Values must lie in |
pvfb_minus_pvfp |
Numeric difference between the present value of future benefits and future premiums. |
A numeric vector.
Vprefloor_crvm_ul(r = 0.33506, pvfb_minus_pvfp = 70)Vprefloor_crvm_ul(r = 0.33506, pvfb_minus_pvfp = 70)
Computes cumulative discount factors for a sequence of annual effective interest rates:
vt_var(i)vt_var(i)
i |
Numeric vector of annual effective interest rates. Each value must
be greater than |
A numeric vector of cumulative discount factors with the same
length as i.
vt_var(c(0.06, 0.07, 0.08)) vt_var(c(-0.01, 0.02, 0.03))vt_var(c(0.06, 0.07, 0.08)) vt_var(c(-0.01, 0.02, 0.03))
Bootstraps annual effective spot rates from par coupon yields at consecutive integer maturities.
z_from_coupon_annual(maturity, coupon_yield, par = 1000)z_from_coupon_annual(maturity, coupon_yield, par = 1000)
maturity |
Numeric vector of positive integer maturities in strictly increasing order. Maturities must be consecutive and begin at 1. |
coupon_yield |
Numeric vector of annual effective par coupon yields.
Values must be greater than |
par |
Positive scalar par value. |
A numeric vector of annual effective spot rates.
maturity <- 1:4 coupon_yield <- c(0.02, 0.04, 0.06, 0.08) z_from_coupon_annual(maturity, coupon_yield)maturity <- 1:4 coupon_yield <- c(0.02, 0.04, 0.06, 0.08) z_from_coupon_annual(maturity, coupon_yield)
Bootstraps nominal annual spot rates convertible semiannually from par coupon yields at consecutive half-year maturities.
z_from_coupon_semi(maturity, coupon_yield, par = 1000)z_from_coupon_semi(maturity, coupon_yield, par = 1000)
maturity |
Numeric vector of positive maturities in years, in strictly
increasing order. Maturities must be consecutive multiples of
|
coupon_yield |
Numeric vector of nominal annual par coupon yields
convertible semiannually. Values must be greater than |
par |
Positive scalar par value. |
A numeric vector of nominal annual spot rates convertible semiannually.
maturity <- c(0.5, 1.0, 1.5, 2.0) coupon_yield <- c(0.0244, 0.0260, 0.0276, 0.0293) z_from_coupon_semi(maturity, coupon_yield)maturity <- c(0.5, 1.0, 1.5, 2.0) coupon_yield <- c(0.0244, 0.0260, 0.0276, 0.0293) z_from_coupon_semi(maturity, coupon_yield)
Converts annual effective one-year forward rates
into annual effective spot rates:
z_from_fn1(fn1)z_from_fn1(fn1)
fn1 |
Numeric vector of annual effective one-year forward rates. Each
value must be greater than |
A numeric vector of annual effective spot rates.
z_from_fn1(c(0.04, 0.05, 0.06, 0.07, 0.08))z_from_fn1(c(0.04, 0.05, 0.06, 0.07, 0.08))