| 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.0 |
| Built: | 2026-05-19 10:38:19 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 PUC accrued liability as the APV 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 |
Projected benefit at retirement. |
past_service |
Past service completed. |
total_service |
Total service at retirement. |
v_to_ret |
Discount factor to retirement. |
p_surv |
Active-service survival probability to retirement. |
adue_ret |
Retirement annuity factor. |
PUC accrued liability.
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 TUC accrued liability as the APV of the accrued benefit.
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 |
Accrued benefit at the valuation date. |
v_to_ret |
Discount factor to retirement. |
p_surv |
Active-service survival probability to retirement. |
adue_ret |
Retirement annuity factor. |
TUC accrued liability.
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 actual salary history only.
AB_cae(salary_history, p)AB_cae(salary_history, p)
salary_history |
Numeric vector of annual salaries to date. |
p |
Accrual percentage. |
Accrued benefit.
AB_cae(salary_history = c(100000, 104000, 108160), p = 1)AB_cae(salary_history = c(100000, 104000, 108160), p = 1)
Computes the accrued benefit at the current date using service and salary history only.
AB_fas(salary_history, p, fas_years = 3)AB_fas(salary_history, p, fas_years = 3)
salary_history |
Numeric vector of annual salaries to date. |
p |
Accrual percentage, e.g. |
fas_years |
Number of years in the final average salary average. |
Accrued benefit.
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.
Computes .
abarx_y(x, y, i, tbl = NULL, model = NULL, ...)abarx_y(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
abarx_y(40, 50, i = 0.05, model = "uniform", omega = 100)abarx_y(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes the actuarial present value of a benefit payable at the moment of
decrement by Cause , matching Equation (14.4) in Chapter 14.
Abarxj_md(t, ptau, muj, delta, benefit = 1)Abarxj_md(t, ptau, muj, delta, benefit = 1)
t |
Numeric vector of time points. |
ptau |
Numeric vector of values |
muj |
Numeric vector of values |
delta |
Force of interest. |
benefit |
Benefit amount payable on decrement by Cause |
The integral is evaluated numerically by the trapezoidal rule:
A numeric scalar.
t <- seq(0, 20, by = 0.01) ptau <- exp(-0.012 * t) mu_ac <- rep(0.002, length(t)) Abarxj_md(t, ptau, mu_ac, delta = 0.05, benefit = 2000)t <- seq(0, 20, by = 0.01) ptau <- exp(-0.012 * t) mu_ac <- rep(0.002, length(t)) Abarxj_md(t, ptau, mu_ac, 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 .
Abarxy(x, y, i, tbl = NULL, model = NULL, ...)Abarxy(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abarxy(40, 50, i = 0.05, model = "uniform", omega = 100)Abarxy(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
abarxy(x, y, i, tbl = NULL, model = NULL, ...)abarxy(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
abarxy(40, 50, i = 0.05, model = "uniform", omega = 100)abarxy(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Abarxy1(x, y, i, tbl = NULL, model = NULL, ...)Abarxy1(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abarxy1(40, 50, i = 0.05, model = "uniform", omega = 100)Abarxy1(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Abarxy2(x, y, i, tbl = NULL, model = NULL, ...)Abarxy2(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abarxy2(40, 50, i = 0.05, model = "uniform", omega = 100)Abarxy2(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Abarxybar(x, y, i, tbl = NULL, model = NULL, ...)Abarxybar(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abarxybar(40, 50, i = 0.05, model = "uniform", omega = 100)Abarxybar(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
abarxybar(x, y, i, tbl = NULL, model = NULL, ...)abarxybar(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
abarxybar(40, 50, i = 0.05, model = "uniform", omega = 100)abarxybar(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
abary_x(x, y, i, tbl = NULL, model = NULL, ...)abary_x(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
abary_x(40, 50, i = 0.05, model = "uniform", omega = 100)abary_x(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Abaryx1(x, y, i, tbl = NULL, model = NULL, ...)Abaryx1(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abaryx1(40, 50, i = 0.05, model = "uniform", omega = 100)Abaryx1(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Abaryx2(x, y, i, tbl = NULL, model = NULL, ...)Abaryx2(x, y, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Abaryx2(40, 50, i = 0.05, model = "uniform", omega = 100)Abaryx2(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
adotxy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)adotxy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
adotxy(40, 50, i = 0.05, model = "uniform", omega = 100)adotxy(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
adotxybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)adotxybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
adotxybar(40, 50, i = 0.05, model = "uniform", omega = 100)adotxybar(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
adotxybarn(x, y, n, i, tbl = NULL, model = NULL, ...)adotxybarn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
adotxybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)adotxybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
adotxyn(x, y, n, i, tbl = NULL, model = NULL, ...)adotxyn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
adotxyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)adotxyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes the prefunding ratio in Equation (16.18), capped at 1.
ag38_prefunding_ratio(excess_payment, nsp_required)ag38_prefunding_ratio(excess_payment, nsp_required)
excess_payment |
Excess payment or shadow-fund amount. |
nsp_required |
Net single premium required to fully fund the guarantee. |
Numeric scalar.
ag38_prefunding_ratio(60000, 100000)ag38_prefunding_ratio(60000, 100000)
Computes the main quantities in the Chapter 16 AG 38 reserve calculation, including the prefunding ratio, reduced deficiency reserve, Step (8) reserve, and final 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 |
Basic reserve. |
deficiency_reserve |
Deficiency reserve. |
excess_payment |
Excess payment or shadow-fund amount. |
nsp_required |
Net single premium required to fully fund the guarantee. |
valuation_nsp |
Valuation net single premium. |
surrender_charge |
Applicable surrender charge. |
A named list.
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 )
Computes
.
Computes
.
alphaF(x, i, tbl = NULL, model = NULL, ...) alphaF(x, i, tbl = NULL, model = NULL, ...)alphaF(x, i, tbl = NULL, model = NULL, ...) alphaF(x, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
alphaF(40, i = 0.05, model = "uniform", omega = 100) alphaF(40, i = 0.05, model = "uniform", omega = 100)alphaF(40, i = 0.05, model = "uniform", omega = 100) alphaF(40, i = 0.05, model = "uniform", omega = 100)
Annual whole life, temporary, deferred, and actuarial accumulated value annuity functions in immediate, due, and continuous forms.
Computes the annual whole life annuity-immediate
.
Computes the annual whole life annuity-due
.
Computes the continuous whole life annuity
.
Computes the annual temporary annuity-immediate
.
Computes the annual temporary annuity-due
.
Computes the continuous temporary annuity
.
Computes the annual deferred whole life annuity-immediate
.
Computes the annual deferred whole life annuity-due
.
Computes the continuous deferred whole life annuity
.
Computes .
Computes .
Computes .
ax(x, i, model, ..., k_max = 5000, tol = 1e-12) adotx(x, i, model, ..., k_max = 5000, tol = 1e-12) abarx(x, i, model, ..., tol = 1e-10) axn(x, n, i, model, ...) adotxn(x, n, i, model, ...) abarxn(x, n, i, model, ...) nax(x, n, i, model, ..., k_max = 5000, tol = 1e-12) nadotx(x, n, i, model, ..., k_max = 5000, tol = 1e-12) nabarx(x, n, i, model, ..., tol = 1e-10) sxn(x, n, i, model, ...) sdotxn(x, n, i, model, ...) sbarxn(x, n, i, model, ...)ax(x, i, model, ..., k_max = 5000, tol = 1e-12) adotx(x, i, model, ..., k_max = 5000, tol = 1e-12) abarx(x, i, model, ..., tol = 1e-10) axn(x, n, i, model, ...) adotxn(x, n, i, model, ...) abarxn(x, n, i, model, ...) nax(x, n, i, model, ..., k_max = 5000, tol = 1e-12) nadotx(x, n, i, model, ..., k_max = 5000, tol = 1e-12) nabarx(x, n, i, model, ..., tol = 1e-10) sxn(x, n, i, model, ...) sdotxn(x, n, i, model, ...) sbarxn(x, n, i, model, ...)
x |
Age. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters passed to the survival model. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
n |
Term in years. |
Naming convention follows Chapter 8 notation:
ax() =
adotx() =
abarx() =
axn() =
adotxn() =
abarxn() =
nax() =
nadotx() =
nabarx() =
sxn() =
sdotxn() =
sbarxn() =
These functions work directly from the Chapter 5 survival model functions
and the Chapter 7 pure endowment function nEx().
Numeric vector.
UDD-based approximations for Chapter 8 annuity functions.
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Uses the identity
together with the package's existing Chapter 7 UDD insurance approximation
for .
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()
Note that this function relies on the already-existing Abarxn_udd()
implementation in the package, so extra survival-model arguments are not used.
Numeric vector.
Woolhouse 2-term approximations for Chapter 8 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 Chapter 8 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. |
i |
Effective interest rate per period. |
due |
If TRUE, annuity-due; otherwise annuity-immediate. |
m |
Payment frequency per period (m = 1 means annual). |
cont |
If TRUE, continuous payment model. |
Present value.
annuity_certain(n = 10, i = 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 = 10, i = 0.05, due = TRUE) annuity_certain(n = 10, i = 0.05, cont = TRUE)
Computes
sdotxn_m(x, n, m, i, model, ...)sdotxn_m(x, n, m, i, model, ...)
x |
Age. |
n |
Term in years. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model name. |
... |
Additional parameters passed to the survival model. |
Numeric vector of actuarial accumulated values.
sdotxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)sdotxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes
sxn_m(x, n, m, i, model, ...)sxn_m(x, n, m, i, model, ...)
x |
Age. |
n |
Term in years. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model name. |
... |
Additional parameters passed to the survival model. |
Numeric vector of actuarial accumulated values.
sxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)sxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the deferred whole life m-thly annuity-due using
nadotx_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)
x |
Age. |
n |
Deferral period in years. |
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. |
Numeric vector of annuity values.
nadotx_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)nadotx_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the deferred whole life m-thly annuity-immediate using
nax_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12)nax_m(x, n, m, i, model, ..., k_max = 2e+05, tol = 1e-12)
x |
Age. |
n |
Deferral period in years. |
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. |
Numeric vector of annuity values.
nax_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)nax_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the exact temporary m-thly annuity-due.
adotxn_m(x, n, m, i, model, ...)adotxn_m(x, n, m, i, model, ...)
x |
Age. |
n |
Term in years. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model name. |
... |
Additional parameters passed to the survival model. |
Numeric vector of annuity values.
adotxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)adotxn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the exact temporary m-thly annuity-immediate.
axn_m(x, n, m, i, model, ...)axn_m(x, n, m, i, model, ...)
x |
Age. |
n |
Term in years. |
m |
Number of payments per year. |
i |
Effective annual interest rate. |
model |
Survival model name. |
... |
Additional parameters passed to the survival model. |
Numeric vector of annuity values.
axn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)axn_m(40, n = 10, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the exact whole life m-thly annuity-due.
adotx_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)
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. |
Numeric vector of annuity values.
adotx_m(40, m = 12, i = 0.05, model = "uniform", omega = 100)adotx_m(40, m = 12, i = 0.05, model = "uniform", omega = 100)
Computes the exact whole life m-thly annuity-immediate, with annual payment rate 1 split into m equal payments of size 1/m.
ax_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12)ax_m(x, m, i, model, ..., k_max = 2e+05, tol = 1e-12)
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. |
Numeric vector of annuity values.
ax_m(40, m = 12, i = 0.05, model = "uniform", omega = 100)ax_m(40, m = 12, i = 0.05, model = "uniform", omega = 100)
This file provides the core Chapter 8 identities linking annual and continuous annuity functions to the corresponding insurance functions.
Computes .
Computes .
Computes .
Computes
together with
.
Computes .
Computes .
Computes .
Computes .
Computes .
annuity_identity_ax(x, i, model, ...) annuity_identity_adotx(x, i, model, ...) annuity_identity_abarx(x, i, model, ...) annuity_identity_axn(x, n, i, model, ...) annuity_identity_adotxn(x, n, i, model, ...) annuity_identity_abarxn(x, n, i, model, ...) annuity_identity_nax(x, n, i, model, ..., k_max = 5000, tol = 1e-12) annuity_identity_nadotx(x, n, i, model, ..., k_max = 5000, tol = 1e-12) annuity_identity_nabarx(x, n, i, model, ..., tol = 1e-10)annuity_identity_ax(x, i, model, ...) annuity_identity_adotx(x, i, model, ...) annuity_identity_abarx(x, i, model, ...) annuity_identity_axn(x, n, i, model, ...) annuity_identity_adotxn(x, n, i, model, ...) annuity_identity_abarxn(x, n, i, model, ...) annuity_identity_nax(x, n, i, model, ..., k_max = 5000, tol = 1e-12) annuity_identity_nadotx(x, n, i, model, ..., k_max = 5000, tol = 1e-12) annuity_identity_nabarx(x, n, i, model, ..., tol = 1e-10)
x |
Age. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters passed to the survival model. |
n |
Term in years. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
Included identities:
whole life immediate:
whole life due:
whole life continuous:
temporary immediate:
temporary due:
temporary continuous:
deferred immediate:
deferred due:
deferred continuous:
These are wrapper functions that evaluate the Chapter 8 relationships using the Chapter 7 insurance functions already implemented in the package.
Hence
.
Numeric vector.
Chapter 8 non-level annuity functions for increasing and decreasing life annuities.
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Computes
Iax(x, i, model, ..., k_max = 5000, tol = 1e-12) Iaxn(x, n, i, model, ...) Daxn(x, n, i, model, ...) Iadotx(x, i, model, ..., k_max = 5000, tol = 1e-12) Iadotxn(x, n, i, model, ...) Dadotxn(x, n, i, model, ...) Iabarx(x, i, model, ..., tol = 1e-10) Iabarxn(x, n, i, model, ...) Dabarxn(x, n, i, model, ...)Iax(x, i, model, ..., k_max = 5000, tol = 1e-12) Iaxn(x, n, i, model, ...) Daxn(x, n, i, model, ...) Iadotx(x, i, model, ..., k_max = 5000, tol = 1e-12) Iadotxn(x, n, i, model, ...) Dadotxn(x, n, i, model, ...) 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 |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum summation horizon for non-terminating models. |
tol |
Truncation tolerance for non-terminating models. |
n |
Term in years. |
The functions implemented here match the notation in Section 8.6:
Iax() =
Iaxn() =
Daxn() =
Iadotx() =
Iadotxn() =
Dadotxn() =
Iabarx() =
Iabarxn() =
Dabarxn() =
Numeric vector.
Numeric vector.
Numeric vector.
Computes Equation (18.10).
APV_NR_db(PABz, v_to_ret, p_surv, adue_ret)APV_NR_db(PABz, v_to_ret, p_surv, adue_ret)
PABz |
Projected annual benefit at retirement. |
v_to_ret |
Discount factor from current age to retirement. |
p_surv |
Active-service survival probability to retirement. |
adue_ret |
Retirement annuity factor. |
Actuarial present value of the normal retirement benefit.
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)
Computes projected asset shares recursively using Equations (14.5b) and
(14.6b) of Chapter 14, with optional support for a survival benefit payable
at the end of year .
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 |
Level annual premium. |
r |
Numeric vector of percent-of-premium expense factors. |
e |
Numeric vector of fixed contract expenses. |
b1 |
Numeric vector of Cause 1 benefit amounts. |
b2 |
Numeric vector of Cause 2 benefit amounts. |
q1 |
Numeric vector of Cause 1 decrement probabilities. |
q2 |
Numeric vector of Cause 2 decrement probabilities. |
p_tau |
Numeric vector of in-force probabilities. |
i |
Effective annual interest rate. |
b3 |
Optional numeric vector of survival benefit amounts payable at the
end of year |
For policy year ,
so that
A data frame with columns k and AS.
General projected asset share path (multiple decrements)
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. |
r |
Expense percentages. |
e |
Fixed expenses. |
b_mat |
Matrix of benefits (rows = years, cols = causes). |
q_mat |
Matrix of decrement probabilities (same shape as b_mat). |
p_tau |
In-force probabilities. |
i |
Interest rate. |
b_surv |
Optional survival benefits. |
A data frame with columns k and AS. Column
k gives the policy year from 0 to n, and column
AS gives the corresponding projected asset share at each year.
Computes the year-by-year account value roll-forward for Type A universal
life using the explicit form in Equation (16.8), or Equation (16.9) when
.
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 vector |
r |
Percent-of-premium expense vector |
e |
Fixed expense vector |
qx |
Mortality vector |
ic |
Credited interest rate vector |
B |
Fixed death benefit face amount. |
iq |
Interest rate vector |
AV0 |
Initial account value. Defaults to 0. |
A data frame with columns t, premium, AV.
qx <- c(.00076, .00081, .00085, .00090, .00095) r <- c(.75, .10, .10, .10, .10) e <- c(100, 20, 20, 20, 20) G <- rep(5000, 5) AV_path_ul_typeA(G = G, r = r, e = e, qx = qx, ic = 0.03, B = 100000)qx <- c(.00076, .00081, .00085, .00090, .00095) r <- c(.75, .10, .10, .10, .10) e <- c(100, 20, 20, 20, 20) G <- rep(5000, 5) AV_path_ul_typeA(G = G, r = r, e = e, qx = qx, ic = 0.03, B = 100000)
Computes the year-by-year account value roll-forward for Type B universal life using Equations (16.4) and (16.5a).
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 vector |
r |
Percent-of-premium expense vector |
e |
Fixed expense vector |
qx |
Mortality vector |
ic |
Credited interest rate vector |
B |
Face amount. |
iq |
Interest rate vector |
AV0 |
Initial account value. Defaults to 0. |
A data frame with columns t, premium,
net_contribution, COI, and AV.
qx <- c(.00076, .00081, .00085, .00090, .00095) r <- c(.75, .10, .10, .10, .10) e <- c(100, 20, 20, 20, 20) G <- rep(5000, 5) AV_path_ul_typeB(G = G, r = r, e = e, qx = qx, ic = 0.03, B = 100000)qx <- c(.00076, .00081, .00085, .00090, .00095) r <- c(.75, .10, .10, .10, .10) e <- c(100, 20, 20, 20, 20) G <- rep(5000, 5) AV_path_ul_typeB(G = G, r = r, e = e, qx = qx, ic = 0.03, B = 100000)
Computes the accumulated value at retirement age for the defined
contribution model in Equation (18.1).
AVz_dc(x, z, Sx, c, i, g = NULL, s = NULL)AVz_dc(x, z, Sx, c, i, g = NULL, s = NULL)
x |
Entry age. |
z |
Retirement age. |
Sx |
Salary at age |
c |
Contribution rate as a proportion of salary. |
i |
Annual effective interest rate. |
g |
Optional constant annual salary growth rate. |
s |
Optional salary scale vector of length |
The accumulated value of contributions at age z.
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 a truncated whole life annuity-immediate under projected mortality.
ax_improved(x0, i, qx_base_vec, AAx_vec, base_year, issue_year)ax_improved(x0, i, qx_base_vec, AAx_vec, base_year, issue_year)
x0 |
Issue age. |
i |
Effective annual interest rate. |
qx_base_vec |
Base-year one-year death probabilities for successive ages. |
AAx_vec |
Mortality improvement factors for successive ages. |
base_year |
Base year. |
issue_year |
Issue year. |
Numeric scalar.
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 .
ax_y(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)ax_y(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
ax_y(40, 50, i = 0.05, model = "uniform", omega = 100)ax_y(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes the actuarial present value of a benefit payable at the end of the
year of decrement if decrement occurs by Cause , matching Equation
(14.3b) in Chapter 14.
Axj_md(qj, ptau, i, benefit = 1)Axj_md(qj, ptau, i, benefit = 1)
qj |
Numeric vector of conditional probabilities
|
ptau |
Numeric vector of survival probabilities
|
i |
Effective annual interest rate. |
benefit |
Benefit amount payable on decrement by Cause |
The function evaluates
with an optional benefit amount multiplier.
A numeric scalar.
q1 <- c(.02, .02, .02, .02, .02) q2 <- c(.03, .04, .05, .06, .00) q3 <- c(.00, .00, .00, .00, .98) qtau <- q1 + q2 + q3 ptau <- numeric(length(qtau)) ptau[1] <- 1 for (k in 2:length(qtau)) { ptau[k] <- prod(1 - qtau[1:(k - 1)]) } Axj_md(qj = q1, ptau = ptau, i = 0.06, benefit = 1000)q1 <- c(.02, .02, .02, .02, .02) q2 <- c(.03, .04, .05, .06, .00) q3 <- c(.00, .00, .00, .00, .98) qtau <- q1 + q2 + q3 ptau <- numeric(length(qtau)) ptau[1] <- 1 for (k in 2:length(qtau)) { ptau[k] <- prod(1 - qtau[1:(k - 1)]) } Axj_md(qj = q1, ptau = 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
using projected mortality rates.
axn_improved(x0, n, i, qx_base_vec, AAx_vec, base_year, issue_year)axn_improved(x0, n, i, qx_base_vec, AAx_vec, base_year, issue_year)
x0 |
Issue age. |
n |
Term in years. |
i |
Effective annual interest rate. |
qx_base_vec |
Base-year one-year death probabilities for ages
|
AAx_vec |
Mortality improvement factors for ages
|
base_year |
Base year. |
issue_year |
Issue year. |
Numeric scalar.
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 .
Axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)Axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
Axy(40, 50, i = 0.05, model = "uniform", omega = 100)Axy(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
axy(40, 50, i = 0.05, model = "uniform", omega = 100)axy(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)Axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
Axybar(40, 50, i = 0.05, model = "uniform", omega = 100)Axybar(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)axybar(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
axybar(40, 50, i = 0.05, model = "uniform", omega = 100)axybar(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes .
Axybarn(x, y, n, i, tbl = NULL, model = NULL, ...)Axybarn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Axybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)Axybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
axybarn(x, y, n, i, tbl = NULL, model = NULL, ...)axybarn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
axybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)axybarn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
Axybarn1(x, y, n, i, tbl = NULL, model = NULL, ...)Axybarn1(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Axybarn1(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)Axybarn1(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
Axyn(x, y, n, i, tbl = NULL, model = NULL, ...)Axyn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Axyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)Axyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
axyn(x, y, n, i, tbl = NULL, model = NULL, ...)axyn(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Shared documentation topic used to avoid filename collisions with case-distinct function names on case-insensitive file systems.
Numeric vector.
axyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)axyn(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
Axyn1(x, y, n, i, tbl = NULL, model = NULL, ...)Axyn1(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Axyn1(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)Axyn1(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
ay_x(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)ay_x(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000, tol = 1e-12)
x |
Age of first life. |
y |
Age of second life. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
k_max |
Maximum number of terms. |
tol |
Convergence tolerance. |
Numeric vector.
ay_x(40, 50, i = 0.05, model = "uniform", omega = 100)ay_x(40, 50, i = 0.05, model = "uniform", omega = 100)
Computes the FPT renewal premium
for whole life insurance.
Computes the FPT renewal premium
for whole life insurance.
betaF(x, i, tbl = NULL, model = NULL, ...) betaF(x, i, tbl = NULL, model = NULL, ...)betaF(x, i, tbl = NULL, model = NULL, ...) betaF(x, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
betaF(40, i = 0.05, model = "uniform", omega = 100) betaF(40, i = 0.05, model = "uniform", omega = 100)betaF(40, i = 0.05, model = "uniform", omega = 100) betaF(40, i = 0.05, model = "uniform", omega = 100)
Chapter 15 functions for actuarial present values when discounting uses
spot rates by maturity. If denotes the annual effective spot rate
for maturity , then the discount factor is .
Computes
Computes
Computes
using spot-rate discount factors.
For an immediate annuity,
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 rates. |
z |
Numeric vector of annual effective spot rates for maturities
|
benefit |
Amount of each annuity payment. |
type |
Either |
For an annuity-due,
where the time-0 discount factor is 1.
A numeric scalar.
A numeric scalar.
A numeric scalar.
A numeric scalar.
qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) nEx_spot(qx, z, benefit = 1000000) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) Axn1_spot(qx, z) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) Axn_spot(qx, z) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) axn_spot(qx, z, type = "due")qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) nEx_spot(qx, z, benefit = 1000000) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) Axn1_spot(qx, z) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) Axn_spot(qx, z) qx <- c(.02, .03, .04, .05, .06) z <- c(.03, .04, .05, .06, .07) axn_spot(qx, z, type = "due")
Chapter 15 functions for actuarial present values under variable annual
effective interest rates interpreted as a yearly scenario
.
Computes the APV of an -year pure endowment under a variable annual
interest scenario:
Computes the APV of an -year term insurance with benefit paid at the
end of the year of death under a variable annual interest scenario:
Computes the APV of an -year endowment insurance under a variable
annual interest scenario:
Computes the APV of an -year temporary life annuity under a variable
annual interest scenario.
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 rates
|
i |
Numeric vector of annual effective interest rates
|
benefit |
Amount of each annuity payment. |
type |
Either |
If a benefit amount is supplied, the function returns that benefit times the APV factor.
If a benefit amount is supplied, the function returns that benefit times the APV factor.
If a benefit amount is supplied, the function returns that benefit times the APV factor.
For an immediate annuity,
For an annuity-due,
with .
A numeric scalar.
A numeric scalar.
A numeric scalar.
A numeric scalar.
qx <- c(.03, .04, .05, .06, .07) nEx_var(qx = qx, i = c(.06, .07, .08, .09, .10), benefit = 1000) qx <- c(.03, .04, .05, .06, .07) Axn1_var(qx = qx, i = c(.06, .07, .08, .09, .10)) qx <- c(.03, .04, .05, .06, .07) Axn_var(qx = qx, i = c(.06, .07, .08, .09, .10)) qx <- rep(.02, 5) axn_var(qx = qx, i = c(.06, .05, .04, .03, .03), type = "immediate") axn_var(qx = qx, i = c(.03, .04, .05, .06, .07), type = "due")qx <- c(.03, .04, .05, .06, .07) nEx_var(qx = qx, i = c(.06, .07, .08, .09, .10), benefit = 1000) qx <- c(.03, .04, .05, .06, .07) Axn1_var(qx = qx, i = c(.06, .07, .08, .09, .10)) qx <- c(.03, .04, .05, .06, .07) Axn_var(qx = qx, i = c(.06, .07, .08, .09, .10)) qx <- rep(.02, 5) axn_var(qx = qx, i = c(.06, .05, .04, .03, .03), type = "immediate") axn_var(qx = qx, i = c(.03, .04, .05, .06, .07), type = "due")
Computes the one-period cost of insurance for a Type B universal life policy using Equation (16.5a):
coi_ul_typeB(B, qx, iq)coi_ul_typeB(B, qx, iq)
B |
Face amount. |
qx |
Mortality rate for the period. |
iq |
Interest rate used in the cost-of-insurance calculation. |
Numeric vector.
coi_ul_typeB(B = 100000, qx = 0.00076, iq = 0.03)coi_ul_typeB(B = 100000, qx = 0.00076, iq = 0.03)
Solves Equation (18.5) for 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 |
Entry age. |
z |
Retirement age. |
Sx |
Salary at age |
RR_target |
Target replacement ratio. |
i |
Annual effective interest rate. |
adue_z |
Whole life annuity-due factor at age |
g |
Optional constant annual salary growth rate. |
s |
Optional salary scale vector of length |
Required contribution rate.
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 of cumulative hazard values.
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 total gross gain into interest, mortality, and expense components in a user-specified order.
Decomposes total gross gain into interest, mortality, and expense components in a user-specified order. The first two components are computed sequentially, and the last component is taken as the balancing item so that the components sum exactly to total gain.
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") )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 t. |
Vt1G |
Gross reserve at duration t+1. |
G |
Gross premium. |
i_assumed |
Assumed annual effective interest rate. |
q_assumed |
Assumed mortality rate. |
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 rate. |
r_actual |
Actual percent-of-premium expense rate. |
e_actual |
Actual per-policy expense. |
s_actual |
Actual settlement expense. |
b |
Benefit amount. Default 1. |
order |
Character vector giving the order of decomposition. |
Named numeric vector.
Named numeric vector.
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, order = c("interest", "mortality", "expense") ) 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, order = c("interest", "mortality", "expense") )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, order = c("interest", "mortality", "expense") ) 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, order = c("interest", "mortality", "expense") )
Discount factor for compound interest
discount(i, t)discount(i, t)
i |
Effective interest rate. |
t |
Time (can be vector). |
Discount factor at time t.
discount(0.05, 0:5)discount(0.05, 0:5)
Returns the first duration for which the partial net present value
is nonnegative.
discounted_payback_period(Pi, r)discounted_payback_period(Pi, r)
Pi |
Profit signature vector. |
r |
Risk discount rate. |
Integer scalar, or NA_integer_ if the payback period 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)
Convenience functions for the CDF and density of .
F0(t, model, ...) f0(t, model, ...)F0(t, model, ...) f0(t, model, ...)
t |
Numeric vector of times ( |
model |
One of |
... |
Model parameters:
|
F0(t) computes
f0(t) computes
Numeric vector. For F0: CDF values in . For f0: density values ().
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 life_table object. |
x |
Ages. |
Numeric vector of d_x values.
Cause-specific decrements
dxj(lxtau, qxj)dxj(lxtau, qxj)
lxtau |
Number alive at age x in the multiple-decrement table. |
qxj |
Numeric vector of cause-specific decrement probabilities. |
Numeric vector.
dxj(1000, c(0.011, 0.100))dxj(1000, c(0.011, 0.100))
Total decrements
dxtau(lxtau, qxj)dxtau(lxtau, qxj)
lxtau |
Number alive at age x in the multiple-decrement table. |
qxj |
Numeric vector of cause-specific decrement probabilities. |
Numeric scalar.
dxtau(1000, c(0.011, 0.100))dxtau(1000, c(0.011, 0.100))
Computes the Chapter 10 conditional mean
for a fully discrete whole life insurance.
ELtx(x, t, i, P, model, ...)ELtx(x, t, i, P, model, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
P |
Annual premium. |
model |
Survival model. |
... |
Additional model parameters. |
Under the equivalence-principle premium, this equals the prospective
reserve .
Numeric vector.
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 .
Uses closed form for uniform and exponential; numeric integration otherwise.
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). |
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 life_table object. |
x |
Numeric vector of integer ages. |
assumption |
One of |
Numeric vector of complete expectations .
Computes with truncation.
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 < tol for several 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 life_table object. |
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 life_table object. |
x |
Numeric vector of integer ages. |
n |
Numeric vector of nonnegative numbers. |
assumption |
One of |
Numeric vector of temporary complete expectations.
Computes
for integer n in the discrete tabular setting.
ex_temp_curtate_tab(tbl, x, n)ex_temp_curtate_tab(tbl, x, n)
tbl |
A life_table object. |
x |
Numeric vector of integer ages. |
n |
Numeric vector of nonnegative integers. |
Numeric vector of temporary curtate expectations.
from spot ratesComputes the -year forward -year annual effective rate implied
by annual effective spot rates:
fnk_from_z(z, n, k)fnk_from_z(z, n, k)
z |
Numeric vector of annual effective spot rates. |
n |
Forward start in years. |
k |
Forward maturity in years. |
The input vector z should contain annual effective spot rates for
maturities 1, 2, ..., length(z).
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 an upper-left triangular matrix of annual effective forward rates
implied by annual effective spot rates .
forward_matrix_from_z(z)forward_matrix_from_z(z)
z |
Numeric vector of annual effective spot rates. |
Rows correspond to and columns correspond to
. Entries that are not determinable are returned as
NA.
A numeric matrix.
z <- c(0.03, 0.04, 0.05, 0.06, 0.07) forward_matrix_from_z(z)z <- c(0.03, 0.04, 0.05, 0.06, 0.07) forward_matrix_from_z(z)
Computes .
fx(t, x, model, ...)fx(t, x, model, ...)
t |
Numeric vector of durations ( |
x |
Numeric vector of ages ( |
model |
One of |
... |
Model parameters:
|
Vectorization rule:
- If t and x are the same length, values are computed elementwise.
- If one of t or x has length 1, it is recycled to match the other.
Numeric vector of densities ().
Computes the conditional density
for .
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 the gain or loss expression from Section 14.6.
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 premium reserve at time |
G |
Gross premium for the year. |
r |
Percent-of-premium expense factor. |
e |
Fixed expense at the beginning of the year. |
i |
Earned interest rate. |
b1 |
Cause 1 benefit. |
b2 |
Cause 2 benefit. |
s1 |
Claim settlement expense for Cause 1. |
s2 |
Claim settlement expense for Cause 2. |
q1 |
Cause 1 decrement probability. |
q2 |
Cause 2 decrement probability. |
Vt1 |
Gross premium reserve at time |
year_end_cause2 |
Logical; if |
q1prime |
Single-decrement Cause 1 probability for the year-end Cause 2 case. |
q2prime |
Single-decrement Cause 2 probability for the year-end Cause 2 case. |
With within-year decrement probabilities, the function evaluates
If year_end_cause2 = TRUE, the Cause 2 decrement is treated as
occurring only at year end, matching Equation (14.30).
A numeric scalar.
gain_loss_md( Vt = 115.00, G = 16, r = 0, e = 3, i = 0.06, b1 = 1000, b2 = 110, s1 = 0, s2 = 0, q1 = 0.01, q2 = 0.10, Vt1 = 128.83 )gain_loss_md( Vt = 115.00, G = 16, r = 0, e = 3, i = 0.06, b1 = 1000, b2 = 110, s1 = 0, s2 = 0, q1 = 0.01, q2 = 0.10, Vt1 = 128.83 )
Interest gain helper for continuous-style recursion
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 start of step. Default 0. |
h |
Step length. Default 1. |
Numeric vector.
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. |
Numeric vector.
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)
Mortality gain helper for continuous-style recursion
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 start of step. Default 0. |
h |
Step length. Default 1. |
Numeric vector.
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. |
Numeric vector.
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 the one-period guaranteed maturity fund roll-forward used in Example 16.9.
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 |
Expense factor applied to GMP. |
policy_charge |
Guaranteed policy charge. |
i |
Guaranteed interest rate. |
Numeric scalar.
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)
Total gain for a continuous-style one-step recursion
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 start of step. Default 0. |
h |
Step length. Default 1. |
Numeric vector.
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 Chapter 10 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. |
Numeric vector.
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 the Chapter 11 total gain under gross premiums and gross reserves.
Computes the Chapter 11 total gain under gross premiums and gross reserves.
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 )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 t. |
Vt1G |
Gross reserve at duration t+1. |
G |
Gross premium. |
i_actual |
Actual annual effective interest rate. |
q_actual |
Actual mortality rate. |
r_actual |
Actual percent-of-premium expense rate. |
e_actual |
Actual per-policy expense. |
s_actual |
Actual settlement expense. |
b |
Benefit amount. Default 1. |
Numeric vector.
Numeric vector.
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 )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 of hazard/force values.
Computes the Chapter 10 prospective reserve for an h-pay whole life policy.
htVx(x, h, t, i, model, ...)htVx(x, h, t, i, model, ...)
x |
Issue age. |
h |
Premium-paying period in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 participation, floor, cap, and optional margin to raw index growth rates for an indexed universal life contract.
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 |
Participation rate. |
floor |
Minimum credited rate. |
cap |
Maximum credited rate. |
margin |
Index margin. Defaults to 0. |
margin_after_participation |
Logical; if |
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)raw <- iP_eiul(c(1000, 1050, 1200, 1100)) i_credit_eiul(raw, part = 1.10, floor = 0.01, cap = 0.10)
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 index growth rate from an initial index value and 12 monthly closing values, matching Equation (16.13).
iMA_eiul(index)iMA_eiul(index)
index |
Numeric vector of length 13 containing the initial index value followed by the 12 monthly closing values. |
Numeric scalar.
idx <- c(1000, 1020, 1100, 1150, 1080, 1040, 960, 1030, 1000, 1070, 1150, 1200, 1150) iMA_eiul(idx)idx <- c(1000, 1020, 1100, 1150, 1080, 1040, 960, 1030, 1000, 1070, 1150, 1200, 1150) iMA_eiul(idx)
Converts a defined contribution accumulation to annual annuity-due income.
Income_dc(AVz, adue_z)Income_dc(AVz, adue_z)
AVz |
Accumulated value at retirement. |
adue_z |
Whole life annuity-due factor at retirement age. |
Annual retirement income.
Income_dc(AVz = 824211.35, adue_z = 12)Income_dc(AVz = 824211.35, adue_z = 12)
Provides consistent conversions between: - effective interest rate i - effective discount rate d - force of interest delta
interest_convert(i = NULL, d = NULL, delta = NULL, m = NULL)interest_convert(i = NULL, d = NULL, delta = NULL, m = NULL)
i |
Effective interest rate. |
d |
Effective discount rate. |
delta |
Force of interest. |
m |
Optional 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 (the nominal rate convertible m-thly).
interest_convert(i = 0.05) interest_convert(d = 0.04761905) interest_convert(delta = log(1.05))interest_convert(i = 0.05) interest_convert(d = 0.04761905) interest_convert(delta = log(1.05))
Computes annual point-to-point index growth rates from successive index values, matching Equation (16.12).
iP_eiul(index)iP_eiul(index)
index |
Numeric vector of index closing values. |
Numeric vector of growth rates.
iP_eiul(c(1000, 1050, 1200, 1100))iP_eiul(c(1000, 1050, 1200, 1100))
Computes the internal rate of return (IRR), defined as the rate for
which the net present value is zero.
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 |
Profit signature vector. |
interval |
Numeric vector of length 2 giving the search interval for
|
tol |
Tolerance passed to |
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)
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 l_x values. |
qx |
Numeric vector of q_x values. |
px |
Numeric vector of p_x values. |
S0 |
Numeric vector of S_0(x) values. |
radix |
Radix used when converting S0 to lx, or when building from qx/px. |
A data.frame with class "life_table".
Extract life-table survivor values
lx(tbl, x)lx(tbl, x)
tbl |
A life_table object. |
x |
Ages. |
Numeric vector of l_x values.
Returns from a select life table.
lx_select(tbl, x_sel, t)lx_select(tbl, x_sel, t)
tbl |
A select_life_table object. |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of durations since selection. |
Numeric vector of survivor values.
Converts Chapter 6 life-table values into Chapter 5
survival probabilities .
lx_to_S0(lx)lx_to_S0(lx)
lx |
Numeric vector of life-table survivor values. |
Numeric vector of values.
Computes the entry of , useful for Chapter 14 examples
involving discrete-time multi-state models such as CCRC and risk-class models.
markov_nstep_prob(P, n, i, j)markov_nstep_prob(P, n, i, j)
P |
Transition probability matrix. |
n |
Nonnegative integer number of steps. |
i |
Starting state index. |
j |
Ending state index. |
A numeric scalar.
P <- matrix( c(0.94, 0.03, 0.02, 0.01, 0.50, 0.30, 0.18, 0.02, 0.00, 0.00, 0.93, 0.07, 0.00, 0.00, 0.00, 1.00), nrow = 4, byrow = TRUE ) markov_nstep_prob(P, n = 3, i = 1, j = 1) markov_nstep_prob(P, n = 3, i = 1, j = 3)P <- matrix( c(0.94, 0.03, 0.02, 0.01, 0.50, 0.30, 0.18, 0.02, 0.00, 0.00, 0.93, 0.07, 0.00, 0.00, 0.00, 1.00), nrow = 4, byrow = TRUE ) markov_nstep_prob(P, n = 3, i = 1, j = 1) markov_nstep_prob(P, n = 3, i = 1, j = 3)
Build a multiple-decrement table
md_table(x, qxj, radix = 1e+05)md_table(x, qxj, radix = 1e+05)
x |
Integer vector of ages or durations. |
qxj |
Matrix/data.frame of cause-specific decrement probabilities. Rows correspond to ages in x, columns correspond to causes. |
radix |
Starting |
Data frame containing , ,
, , , and .
x <- 45:50 qmat <- cbind( q1 = c(.011, .012, .013, .014, .015, .016), q2 = c(.100, .100, .100, .100, .100, .100) ) md_table(x, qmat, radix = 1000)x <- 45:50 qmat <- cbind( q1 = c(.011, .012, .013, .014, .015, .016), q2 = c(.100, .100, .100, .100, .100, .100) ) md_table(x, qmat, radix = 1000)
Computes the mean reserve
.
Computes the mean reserve
.
meanVx(x, t, i, tbl = NULL, model = NULL, ...) meanVx(x, t, i, tbl = NULL, model = NULL, ...)meanVx(x, t, i, tbl = NULL, model = NULL, ...) meanVx(x, t, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
t |
Integer contract duration. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
meanVx(40, t = 10, i = 0.05, model = "uniform", omega = 100) meanVx(40, t = 10, i = 0.05, model = "uniform", omega = 100)meanVx(40, t = 10, i = 0.05, model = "uniform", omega = 100) meanVx(40, t = 10, i = 0.05, 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
naxn_improved(x0, u, 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)
x0 |
Issue age. |
u |
Deferral period in years. |
n |
Temporary payment period in years. |
i |
Effective annual interest rate. |
qx_base_vec |
Base-year one-year death probabilities for ages
|
AAx_vec |
Mortality improvement factors for ages
|
base_year |
Base year. |
issue_year |
Issue year. |
Numeric scalar.
Computes Equation (18.13).
NC_EAN_db(APV_total, adue_active)NC_EAN_db(APV_total, adue_active)
APV_total |
Total actuarial present value of benefits. |
adue_active |
Active-service annuity-due factor. |
Entry Age Normal normal cost.
NC_EAN_db(APV_total = 25000, adue_active = 15)NC_EAN_db(APV_total = 25000, adue_active = 15)
Computes the PUC normal cost as the APV 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 |
Projected benefit at retirement. |
total_service |
Total service at retirement. |
v_to_ret |
Discount factor to retirement. |
p_surv |
Active-service survival probability to retirement. |
adue_ret |
Retirement annuity factor. |
PUC normal cost.
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 TUC normal cost as the APV of the current year's accrual.
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 |
Benefit accrued in the current year. |
v_to_ret |
Discount factor to retirement. |
p_surv |
Active-service survival probability to retirement. |
adue_ret |
Retirement annuity factor. |
TUC normal cost.
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 life_table object. |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of _n d_x 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 .
nExy(x, y, n, i, tbl = NULL, model = NULL, ...)nExy(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
nExy(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)nExy(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
Computes .
nExybar(x, y, n, i, tbl = NULL, model = NULL, ...)nExybar(x, y, n, i, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term. |
i |
Effective annual interest rate. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
nExybar(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)nExybar(40, 50, n = 10, i = 0.05, model = "uniform", omega = 100)
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 select_life_table object. |
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 the sequence
of partial net present values from a profit signature.
NPV_partial(Pi, r)NPV_partial(Pi, r)
Pi |
Profit signature vector. |
r |
Risk discount rate. |
Numeric vector.
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)
Computes the Chapter 17 net present value:
NPV_profit(Pi, r)NPV_profit(Pi, r)
Pi |
Profit signature vector. |
r |
Risk discount rate. |
Numeric scalar.
Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_profit(Pi, r = 0.10)Pi <- c(-15.00, 8.42, 8.39, 8.58) NPV_profit(Pi, r = 0.10)
Compute n-year survival probability from a life table
npx(tbl, x, n)npx(tbl, x, n)
tbl |
A life_table object. |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of _n p_x values.
Computes
npx_select(tbl, x_sel, t, n)npx_select(tbl, x_sel, t, n)
tbl |
A select_life_table object. |
x_sel |
Numeric vector of ages at selection. |
t |
Numeric vector of current durations since selection. |
n |
Numeric vector of nonnegative integer future durations. |
in the discrete select-table setting.
Numeric vector of survival probabilities.
from a multiple-decrement table from a multiple-decrement table
npxtau_md(tbl, x, n)npxtau_md(tbl, x, n)
tbl |
Output from md_table(). |
x |
Starting age. |
n |
Number of years. |
Numeric scalar.
x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, qmat, radix = 1000) npxtau_md(tbl, x = 46, n = 3)x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, 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 life_table object. |
x |
Ages. |
n |
Nonnegative integer durations. |
Numeric vector of _n q_x values.
Computes
.
nqx_select(tbl, x_sel, t, n)nqx_select(tbl, x_sel, t, n)
tbl |
A select_life_table object. |
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.
from a multiple-decrement table from a multiple-decrement table
nqxj_md(tbl, x, n, j)nqxj_md(tbl, x, n, j)
tbl |
Output from md_table(). |
x |
Starting age. |
n |
Number of years. |
j |
Cause index. |
Numeric scalar.
x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, qmat, radix = 1000) nqxj_md(tbl, x = 46, n = 2, j = 1)x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, qmat, radix = 1000) nqxj_md(tbl, x = 46, n = 2, j = 1)
from a multiple-decrement table from a multiple-decrement table
nqxtau_md(tbl, x, n)nqxtau_md(tbl, x, n)
tbl |
Output from md_table(). |
x |
Starting age. |
n |
Number of years. |
Numeric scalar.
x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, qmat, radix = 1000) nqxtau_md(tbl, x = 46, n = 2)x <- 45:50 qmat <- cbind(q1 = c(.011, .012, .013, .014, .015, .016), q2 = rep(.1, 6)) tbl <- md_table(x, qmat, radix = 1000) nqxtau_md(tbl, x = 46, n = 2)
Computes the projected annual benefit for a CAE plan using Equation (18.9).
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 |
Current or entry age. |
z |
Retirement age. |
CASx |
Current annual salary at age |
p |
Accrual percentage, e.g. |
past_salary_total |
Optional total of actual past salaries. |
g |
Optional constant annual salary growth rate. |
s |
Optional salary scale vector of length |
Projected annual benefit.
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)
Computes the projected annual benefit for a final average salary plan using Equation (18.6).
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 |
Current or entry age. |
z |
Retirement age. |
CASx |
Current annual salary at age |
p |
Accrual percentage, e.g. |
fas_years |
Number of years in the final average salary period. |
past_service |
Past years of service already completed at age |
g |
Optional constant annual salary growth rate. |
s |
Optional salary scale vector of length |
Projected annual benefit.
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)
by trapezoidal ruleApproximates the annual continuous premium in the disability model allowing for recovery, as in Example 14.18.
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 |
Numeric vector of time points. |
tp00 |
Numeric vector of values |
tp01 |
Numeric vector of values |
delta |
Force of interest. |
mu02 |
Function of time returning |
mu12 |
Function of time returning |
B02 |
Benefit payable on death while healthy. |
B12 |
Benefit payable on death while disabled. |
R |
Continuous income rate while disabled. |
The numerator is
and the denominator is
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 ex1410 <- tp00_tp01_euler( h = 0.10, n = 2.0, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 ) Pbar_trapz_ms( t = ex1410$t, tp00 = ex1410$tp00, tp01 = ex1410$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 ex1410 <- tp00_tp01_euler( h = 0.10, n = 2.0, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 ) Pbar_trapz_ms( t = ex1410$t, tp00 = ex1410$tp00, tp01 = ex1410$tp01, delta = 0.04, mu02 = mu02, mu12 = mu12, B02 = 1000, B12 = 1000, R = 1000 )
Converts a Chapter 17 profit vector
into the corresponding profit signature
using Equation (17.3).
Pi_signature(Pr, p_tau)Pi_signature(Pr, p_tau)
Pr |
Profit vector of length |
p_tau |
One-year in-force probabilities. This may have length
|
Numeric vector of length .
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, ...)PnAdotx(x, n, i, model, ...)
x |
Issue age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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, ...)Pnax(x, n, i, model, ...)
x |
Issue age. |
n |
Deferral period. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
Pnax(40, n = 20, i = 0.05, model = "uniform", omega = 100)Pnax(40, n = 20, i = 0.05, model = "uniform", omega = 100)
Computes the Chapter 17 profit vector
where is the negative pre-contract expense and the yearly
expected profit values are calculated from the general discrete expression
in Equation (17.1).
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 |
Vector of gross premium reserves |
G |
Gross premium vector for policy years 1 through |
i |
Interest-rate vector for policy years 1 through |
r |
Percent-of-premium expense vector. |
e |
Fixed expense vector. |
q1 |
First decrement probabilities, typically death. |
q2 |
Second decrement probabilities, typically surrender or lapse. Defaults to 0. |
b1 |
Benefit vector for decrement 1. |
b2 |
Benefit vector for decrement 2. Defaults to 0. |
s1 |
Settlement-expense vector for decrement 1. Defaults to 0. |
s2 |
Settlement-expense vector for decrement 2. Defaults to 0. |
p_tau |
Optional vector of in-force probabilities
|
pre_contract_expense |
Positive pre-contract expense amount. The
returned first element is |
This implementation allows for two decrements, typically death and withdrawal/surrender.
Numeric vector of length .
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 the Chapter 17 profit margin:
profit_margin(NPV, APV_GP)profit_margin(NPV, APV_GP)
NPV |
Net present value of profits. |
APV_GP |
Actuarial present value of gross premiums. |
Numeric scalar.
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 (positive = inflow, negative = outflow). |
t |
Times of cash flows (same length as cf). |
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 deterministic cash flows using spot rates matched to their maturities.
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 |
Either |
For annual compounding, each positive-time cash flow at time is
discounted by .
For semiannual nominal compounding, each positive-time cash flow at time
is discounted by .
Time-0 cash flows are left undiscounted.
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" )
Computes projected one-year survival probability
.
px_proj(qx_base, AAx, base_year, proj_year)px_proj(qx_base, AAx, base_year, proj_year)
qx_base |
Base-year one-year death probability |
AAx |
Mortality improvement factor |
base_year |
Base year |
proj_year |
Projection year |
Numeric vector of projected one-year survival probabilities.
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.
Survival probability
pxtau(qxj)pxtau(qxj)
qxj |
Numeric vector of cause-specific decrement probabilities. |
Numeric scalar.
pxtau(c(0.011, 0.100))pxtau(c(0.011, 0.100))
Computes the one-year persistency rates under either
Equation (16.14) or Equation (16.15).
pxtau_ul(qd, qw, year_end_withdrawal = TRUE)pxtau_ul(qd, qw, year_end_withdrawal = TRUE)
qd |
Mortality probabilities. |
qw |
Withdrawal probabilities. |
year_end_withdrawal |
Logical; if |
Numeric vector.
qd <- c(.001, .002, .003) qw <- c(.02, .02, .03) pxtau_ul(qd, qw)qd <- c(.001, .002, .003) qw <- c(.02, .02, .03) pxtau_ul(qd, qw)
from independent probabilities under constant forceDependent probabilities from independent probabilities under constant force
qx_dep_cf(qxprime)qx_dep_cf(qxprime)
qxprime |
Numeric vector of independent probabilities. |
Numeric vector of dependent probabilities.
qx_dep_cf(c(0.20, 0.10))qx_dep_cf(c(0.20, 0.10))
from independent probabilities under SUDDTwo-decrement case only.
qx_dep_sudd(q1prime, q2prime)qx_dep_sudd(q1prime, q2prime)
q1prime |
Independent probability for decrement 1. |
q2prime |
Independent probability for decrement 2. |
Numeric vector c(q1, q2).
qx_dep_sudd(0.20, 0.10)qx_dep_sudd(0.20, 0.10)
Computes projected one-year death probability
.
qx_proj(qx_base, AAx, base_year, proj_year)qx_proj(qx_base, AAx, base_year, proj_year)
qx_base |
Base-year one-year death probability |
AAx |
Mortality improvement factor |
base_year |
Base year |
proj_year |
Projection year |
Numeric vector of projected one-year death probabilities.
Compute one-year death probability from a life table
qx_tab(tbl, x)qx_tab(tbl, x)
tbl |
A life_table object. |
x |
Ages. |
Numeric vector of q_x 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.
from dependent probabilities under MUDDIndependent probabilities from dependent probabilities under MUDD
qxprime_mudd(qxj)qxprime_mudd(qxj)
qxj |
Numeric vector of dependent probabilities |
Numeric vector of independent probabilities .
qxprime_mudd(c(.20, .10))qxprime_mudd(c(.20, .10))
from dependent probabilities under SUDDTwo-decrement case only.
qxprime_sudd(q1, q2)qxprime_sudd(q1, q2)
q1 |
Dependent probability for decrement 1. |
q2 |
Dependent probability for decrement 2. |
Numeric vector c(q1prime, q2prime).
qxprime_sudd(0.20, 0.10)qxprime_sudd(0.20, 0.10)
Total probability of decrement
qxtau(qxj)qxtau(qxj)
qxj |
Numeric vector of cause-specific decrement probabilities. |
Numeric scalar.
qxtau(c(0.011, 0.100))qxtau(c(0.011, 0.100))
Computes a DB replacement ratio as benefit divided by a chosen salary measure.
replacement_ratio_db(benefit, salary)replacement_ratio_db(benefit, salary)
benefit |
Annual retirement benefit. |
salary |
Salary measure used in the denominator. |
Replacement ratio.
replacement_ratio_db(benefit = 108008.66, salary = 187119.09)replacement_ratio_db(benefit = 108008.66, salary = 187119.09)
Computes the replacement ratio defined in Equation (18.4).
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 |
Entry age. |
z |
Retirement age. |
Sx |
Salary at age |
c |
Contribution rate. |
i |
Annual effective interest rate. |
adue_z |
Whole life annuity-due factor at age |
g |
Optional constant annual salary growth rate. |
s |
Optional salary scale vector of length |
Replacement ratio.
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 )
Chapter 10 reserve functions for deferred insurance contracts.
tVnAx(x, n, t, i, model, ...) htVnAx(x, n, h, t, i, model, ...)tVnAx(x, n, t, i, model, ...) htVnAx(x, n, h, t, i, model, ...)
x |
Issue age. |
n |
Deferral period. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
h |
Premium-paying period. |
tVnAx() computes the reserve for an -year deferred insurance
funded over the deferred period.
htVnAx() computes the reserve when premiums are limited to the first
years, with .
Numeric vector.
Numeric vector.
tVnAx(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100) htVnAx(40, n = 20, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100)tVnAx(40, n = 20, t = 10, i = 0.05, model = "uniform", omega = 100) htVnAx(40, n = 20, h = 10, t = 5, i = 0.05, model = "uniform", omega = 100)
capped at 1Computes the ratio in Equation (16.16).
rt_ul(AV, GMF)rt_ul(AV, GMF)
AV |
Account value. |
GMF |
Guaranteed maturity fund. |
Numeric scalar.
rt_ul(AV = 4918.20, GMF = 14678.57)rt_ul(AV = 4918.20, GMF = 14678.57)
Computes the survival distribution function .
S0(t, model, ...)S0(t, model, ...)
t |
Numeric vector of times ( |
model |
One of |
... |
Model parameters:
|
Supported models (Chapter 5): uniform (de Moivre), exponential, Gompertz, Makeham, Weibull.
Numeric vector of survival probabilities in .
Converts Chapter 5 survival function values into
Chapter 6 life-table 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 factors 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. |
g |
Annual salary growth rate. |
base_age |
Age at which the scale is normalized. |
s_base |
Salary scale value at |
Numeric vector of salary scale factors.
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))
Starting from a terminal reserve value at time T, computes reserves backward on a grid using the backward Euler-style Thiele step.
thiele_backward_path(times, V_terminal, P, delta, mu, benefit = 1)thiele_backward_path(times, V_terminal, P, delta, mu, benefit = 1)
times |
Vector of times in increasing order. |
V_terminal |
Reserve at the final time. |
P |
Premium rate, scalar or vector of length length(times)-1. |
delta |
Force of interest, scalar or vector of length length(times)-1. |
mu |
Force of mortality, scalar or vector of length length(times)-1. |
benefit |
Benefit amount, scalar or vector of length length(times)-1. |
Numeric vector of reserve values on the grid.
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 from a known reserve at
time .
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 |
Force of mortality at time t. |
benefit |
Benefit amount. Defaults to 1. |
h |
Step size. |
Numeric vector.
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 |
Force of mortality. |
benefit |
Benefit amount. Defaults to 1. |
Numeric vector.
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 right-hand sides of the coupled Thiele differential equations
in Equations (14.25) and (14.26) for the healthy-life reserve
and the disabled-life reserve
.
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 |
Value of |
V1 |
Value of |
delta |
Force of interest. |
Pbar |
Continuous premium rate. |
B |
Death benefit. |
R |
Continuous disability income rate. |
mu01 |
Function of time returning |
mu02 |
Function of time returning |
mu10 |
Function of time returning |
mu12 |
Function of time returning |
The equations are
and
A named numeric vector with components dV0 and dV1.
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 thiele_dVdt_01( t = 2.0, V0 = 0, V1 = 0, delta = 0.04, Pbar = 446.95, B = 1000, R = 1000, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = 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 thiele_dVdt_01( t = 2.0, V0 = 0, V1 = 0, delta = 0.04, Pbar = 446.95, B = 1000, R = 1000, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 )
Computes the backward Euler reserve path for the healthy-life reserve
and disabled-life reserve
using Equations (14.27) and (14.28).
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 |
Step size. |
n |
Final time. |
delta |
Force of interest. |
Pbar |
Continuous premium rate. |
B |
Death benefit. |
R |
Continuous disability income rate. |
mu01 |
Function of time returning |
mu02 |
Function of time returning |
mu10 |
Function of time returning |
mu12 |
Function of time returning |
V0_n |
Terminal value of |
V1_n |
Terminal value of |
A data frame with columns t, tV0, and tV1.
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 thiele_path_01( h = 0.10, n = 2.0, delta = 0.04, Pbar = 446.95, B = 1000, R = 1000, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = 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 thiele_path_01( h = 0.10, n = 2.0, delta = 0.04, Pbar = 446.95, B = 1000, R = 1000, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = mu12 )
and
Computes the Euler approximations in the disability model allowing for recovery, as in Equations (14.20) and (14.21).
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 |
Step size. |
n |
Final time. |
mu01 |
Function of time returning |
mu02 |
Function of time returning |
mu10 |
Function of time returning |
mu12 |
Function of time returning |
p00_0 |
Initial value of |
p01_0 |
Initial value of |
The model uses three states:
State 0: healthy
State 1: disabled
State 2: deceased
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( h = 0.10, n = 2.0, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = 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( h = 0.10, n = 2.0, mu01 = mu01, mu02 = mu02, mu10 = mu10, mu12 = 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:
|
Vectorization rule:
- If t and x are the same length, values are computed elementwise.
- If one of t or x has length 1, it is recycled to match the other.
Numeric vector in .
Computes survival over n years starting at age x0 in year
issue_year, using base-year mortality qx_base_vec and
improvement factors AAx_vec.
tpx_improved(x0, n, qx_base_vec, AAx_vec, base_year, issue_year)tpx_improved(x0, n, qx_base_vec, AAx_vec, base_year, issue_year)
x0 |
Issue age. |
n |
Number of years. |
qx_base_vec |
Base-year one-year death probabilities for successive ages. |
AAx_vec |
Mortality improvement factors for successive ages. |
base_year |
Base year. |
issue_year |
Issue year. |
The vectors should correspond to ages
x0, x0+1, ..., x0+n-1.
The survival probability is
.
Numeric scalar.
Computes for from a discrete life table
under one of the standard Chapter 6 assumptions:
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.
under constant forcesTotal survival probability under constant forces
tpx_tau_cf(mu, t)tpx_tau_cf(mu, t)
mu |
Numeric vector of cause-specific forces. |
t |
Time. |
Numeric scalar/vector.
tpx_tau_cf(c(0.10, 0.20), 5)tpx_tau_cf(c(0.10, 0.20), 5)
under constant forceSingle-decrement survival probability under constant force
tpxprimej_cf(mu, t)tpxprimej_cf(mu, t)
mu |
Force of decrement for cause j. |
t |
Time. |
Numeric scalar/vector.
tpxprimej_cf(0.10, 5)tpxprimej_cf(0.10, 5)
Computes from the one-year persistency rates.
tpxtau_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; if |
Numeric vector.
qd <- c(.001, .002, .003) qw <- c(.02, .02, .03) tpxtau_ul(qd, qw)qd <- c(.001, .002, .003) qw <- c(.02, .02, .03) tpxtau_ul(qd, qw)
Computes under independence.
tpxy(x, y, t, tbl = NULL, model = NULL, ...)tpxy(x, y, t, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
t |
Time. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tpxy(40, 50, t = 10, model = "uniform", omega = 100)tpxy(40, 50, t = 10, model = "uniform", omega = 100)
Computes .
tpxybar(x, y, t, tbl = NULL, model = NULL, ...)tpxybar(x, y, t, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
t |
Time. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tpxybar(40, 50, t = 10, model = "uniform", omega = 100)tpxybar(40, 50, t = 10, model = "uniform", omega = 100)
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 in .
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.
under constant forcesCause-specific probability under constant forces
tqxj_cf(mu, j, t)tqxj_cf(mu, j, t)
mu |
Numeric vector of cause-specific forces. |
j |
Cause index. |
t |
Time. |
Numeric scalar/vector.
tqxj_cf(c(0.10, 0.20), j = 1, t = 5)tqxj_cf(c(0.10, 0.20), j = 1, t = 5)
under MUDDIndependent probabilities under MUDD
tqxprime_mudd(qxj, t)tqxprime_mudd(qxj, t)
qxj |
Numeric vector of dependent probabilities |
t |
Time in [0,1]. |
Numeric vector.
tqxprime_mudd(c(.20, .10), t = 0.5)tqxprime_mudd(c(.20, .10), t = 0.5)
under constant forceSingle-decrement failure probability under constant force
tqxprimej_cf(mu, t)tqxprimej_cf(mu, t)
mu |
Force of decrement for cause j. |
t |
Time. |
Numeric scalar/vector.
tqxprimej_cf(0.10, 5)tqxprimej_cf(0.10, 5)
Computes .
tqxy(x, y, t, tbl = NULL, model = NULL, ...)tqxy(x, y, t, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
t |
Time. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqxy(40, 50, t = 10, model = "uniform", omega = 100)tqxy(40, 50, t = 10, model = "uniform", omega = 100)
Computes
under independence.
tqxy1(x, y, n, tbl = NULL, model = NULL, ...)tqxy1(x, y, n, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term in years. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqxy1(40, 50, n = 10, model = "uniform", omega = 100)tqxy1(40, 50, n = 10, model = "uniform", omega = 100)
Computes .
tqxy2(x, y, n, tbl = NULL, model = NULL, ...)tqxy2(x, y, n, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term in years. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqxy2(40, 50, n = 10, model = "uniform", omega = 100)tqxy2(40, 50, n = 10, model = "uniform", omega = 100)
Computes .
tqxybar(x, y, t, tbl = NULL, model = NULL, ...)tqxybar(x, y, t, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
t |
Time. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqxybar(40, 50, t = 10, model = "uniform", omega = 100)tqxybar(40, 50, t = 10, model = "uniform", omega = 100)
Computes
under independence.
tqyx1(x, y, n, tbl = NULL, model = NULL, ...)tqyx1(x, y, n, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term in years. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqyx1(40, 50, n = 10, model = "uniform", omega = 100)tqyx1(40, 50, n = 10, model = "uniform", omega = 100)
Computes .
tqyx2(x, y, n, tbl = NULL, model = NULL, ...)tqyx2(x, y, n, tbl = NULL, model = NULL, ...)
x |
Age of first life. |
y |
Age of second life. |
n |
Term in years. |
tbl |
Life table. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tqyx2(40, 50, n = 10, model = "uniform", omega = 100)tqyx2(40, 50, n = 10, model = "uniform", omega = 100)
Computes the interpolated reserve
for .
Computes the interpolated reserve
for .
tsVx(x, t, s, i, tbl = NULL, model = NULL, ...) tsVx(x, t, s, i, tbl = NULL, model = NULL, ...)tsVx(x, t, s, i, tbl = NULL, model = NULL, ...) tsVx(x, t, s, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
t |
Integer contract duration. |
s |
Fractional part of duration in [0, 1]. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
tsVx(40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100) tsVx(40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100)tsVx(40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100) tsVx(40, t = 10, s = 0.5, i = 0.05, model = "uniform", omega = 100)
Computes the interpolated reserve
for an n-year endowment insurance.
Computes the interpolated reserve
for an n-year endowment insurance.
tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...)tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn(x, n, t, s, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
n |
Term in years. |
t |
Integer duration with t < n. |
s |
Fractional part in [0, 1]. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
tsVxn(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)tsVxn(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)
Computes the interpolated reserve
for an n-year term insurance.
Computes the interpolated reserve
for an n-year term insurance.
tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...)tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...) tsVxn1(x, n, t, s, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
n |
Term in years. |
t |
Integer duration with t < n. |
s |
Fractional part in [0, 1]. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
tsVxn1(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)tsVxn1(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 the Chapter 10 reserve for a whole life insurance with continuous premiums and immediate payment of claims.
tVbarAbarx(x, t, i, model, ...)tVbarAbarx(x, t, i, model, ...)
x |
Issue age. |
t |
Duration, allowed to be any nonnegative numeric value. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
In the fully continuous setting, reserve time may be any
nonnegative real value.
Numeric vector.
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 Chapter 10 reserve for a discrete whole life insurance funded by continuous premiums.
tVbarx(x, t, i, model, ...)tVbarx(x, t, i, model, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tVbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100)tVbarx(40, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the Chapter 11 expense reserve for a fully discrete whole life insurance with renewal expenses.
Computes the Chapter 11 expense reserve for a fully discrete whole life insurance with renewal expenses.
tVEx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... ) tVEx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... )tVEx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... ) tVEx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... )
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
G |
Gross annual premium. |
benefit |
Insurance amount. Default 1. |
renewal_premium_pct |
Renewal percent-of-premium expense. |
renewal_policy_exp |
Renewal per-policy expense. |
settlement_exp |
Settlement expense at death. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
tVEx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 ) tVEx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 )tVEx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 ) tVEx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 )
Computes the FPT reserve for a whole life insurance.
For whole life insurance,
and for ,
.
Computes the FPT reserve for a whole life insurance.
For whole life insurance,
and for ,
.
tVFx(x, t, i, tbl = NULL, model = NULL, ...) tVFx(x, t, i, tbl = NULL, model = NULL, ...)tVFx(x, t, i, tbl = NULL, model = NULL, ...) tVFx(x, t, i, tbl = NULL, model = NULL, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
Numeric vector.
Numeric vector.
tVFx(40, t = 5, i = 0.05, model = "uniform", omega = 100) tVFx(40, t = 5, i = 0.05, model = "uniform", omega = 100)tVFx(40, t = 5, i = 0.05, model = "uniform", omega = 100) tVFx(40, t = 5, i = 0.05, model = "uniform", omega = 100)
Computes the Chapter 11 prospective gross premium reserve for a fully discrete whole life insurance with annual premiums and renewal expenses.
Computes the Chapter 11 prospective gross premium reserve for a fully discrete whole life insurance with annual premiums and renewal expenses.
tVGx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... ) tVGx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... )tVGx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... ) tVGx( x, t, i, G, benefit = 1, renewal_premium_pct = 0, renewal_policy_exp = 0, settlement_exp = 0, tbl = NULL, model = NULL, ... )
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
G |
Gross annual premium. |
benefit |
Insurance amount. Default 1. |
renewal_premium_pct |
Renewal percent-of-premium expense. |
renewal_policy_exp |
Renewal per-policy expense. |
settlement_exp |
Settlement expense at death. |
tbl |
Optional life table object. |
model |
Optional parametric survival model. |
... |
Additional model parameters. |
This function is intended for durations after issue, where future expenses are modeled through renewal premium expenses, renewal per-policy expenses, and settlement expense.
Numeric vector.
Numeric vector.
tVGx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 ) tVGx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 )tVGx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 ) tVGx( x = 40, t = 10, i = 0.05, G = 0.03, benefit = 1, renewal_premium_pct = 0.10, renewal_policy_exp = 0.002, settlement_exp = 0.02, model = "uniform", omega = 100 )
Computes the Chapter 10 reserve
for .
tVnAdotx(x, n, t, i, model, ...)tVnAdotx(x, n, t, i, model, ...)
x |
Issue age. |
n |
Deferral period. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 for an n-year deferred annuity-immediate
for .
tVnax(x, n, t, i, model, ...)tVnax(x, n, t, i, model, ...)
x |
Issue age. |
n |
Deferral period. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 prospective reserve for an n-year pure endowment.
tVnEx(x, n, t, i, model, ...)tVnEx(x, n, t, i, model, ...)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 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, ...)tVx(x, t, i, model, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
tVx(40, t = 10, i = 0.05, model = "uniform", omega = 100)tVx(40, t = 10, i = 0.05, model = "uniform", omega = 100)
Computes the Chapter 10 reserve for a whole life insurance funded by true m-thly premiums.
tVx_m(x, t, m, i, model, ...)tVx_m(x, t, m, i, model, ...)
x |
Issue age. |
t |
Duration. |
m |
Number of premium payments per year. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 retrospective reserve
.
tVx_ret(x, t, i, model, ...)tVx_ret(x, t, i, model, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 prospective reserve for an n-year endowment insurance.
tVxn(x, n, t, i, model, ...)tVxn(x, n, t, i, model, ...)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 retrospective reserve
for .
tVxn_ret(x, n, t, i, model, ...)tVxn_ret(x, n, t, i, model, ...)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 Chapter 10 prospective reserve for an n-year term insurance.
tVxn1(x, n, t, i, model, ...)tVxn1(x, n, t, i, model, ...)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 term reserve for .
tVxn1_ret(x, n, t, i, model, ...)tVxn1_ret(x, n, t, i, model, ...)
x |
Issue age. |
n |
Term in years. |
t |
Duration. |
i |
Effective annual interest rate. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 the zeroized reserve sequence by backward recursion, setting negative reserves equal to 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 vector. |
i |
Interest-rate vector. |
G |
Gross premium vector. |
benefit |
Death-benefit vector. |
r |
Percent-of-premium expense vector. |
e |
Fixed-expense vector. |
V_terminal |
Terminal reserve. Defaults to 0. |
floor_zero |
Logical; if |
For a death-only contract with no settlement expense and no second decrement, the recursion sets
equal to zero, solving backward for .
Numeric vector of zeroized reserves of length .
V_zeroized( qx = c(.015, .017, .019, .021, .024), i = 0.06, G = 19279, benefit = 1000000, e = 240 )V_zeroized( qx = c(.015, .017, .019, .021, .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 the Chapter 10 conditional variance
for a fully discrete whole life insurance.
varLtx(x, t, i, P, model, ...)varLtx(x, t, i, P, model, ...)
x |
Issue age. |
t |
Duration. |
i |
Effective annual interest rate. |
P |
Annual premium. |
model |
Survival model. |
... |
Additional model parameters. |
Numeric vector.
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 CRVM reserve from Equation (16.17).
Vprefloor_crvm_ul(r, pvfb_minus_pvfp)Vprefloor_crvm_ul(r, pvfb_minus_pvfp)
r |
Ratio |
pvfb_minus_pvfp |
Difference |
Numeric scalar.
Vprefloor_crvm_ul(r = 0.33506, pvfb_minus_pvfp = 70)Vprefloor_crvm_ul(r = 0.33506, pvfb_minus_pvfp = 70)
Computes the sequence of discount factors
where
vt_var(i)vt_var(i)
i |
Numeric vector of annual effective interest rates
|
This corresponds to the Chapter 15 notation for a fixed
scenario .
Numeric vector of discount factors of the same length as i.
vt_var(c(0.06, 0.07, 0.08))vt_var(c(0.06, 0.07, 0.08))
Bootstraps annual effective zero-coupon yields from par annual coupon-bearing bond yields of the same maturities.
z_from_coupon_annual(maturity, coupon_yield, par = 1000)z_from_coupon_annual(maturity, coupon_yield, par = 1000)
maturity |
Integer vector of maturities in years, in increasing order. |
coupon_yield |
Numeric vector of annual coupon yields. |
par |
Par value of each bond. |
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 the semiannual nominal annual zero-coupon yields from par coupon-bearing bond yields of the same maturities.
z_from_coupon_semi(maturity, coupon_yield, par = 1000)z_from_coupon_semi(maturity, coupon_yield, par = 1000)
maturity |
Numeric vector of maturities in years, typically
|
coupon_yield |
Numeric vector of nominal annual coupon yields convertible semiannually. |
par |
Par value of each bond. |
Both coupon yields and spot yields are interpreted as nominal annual rates convertible semiannually.
Numeric vector of semiannual nominal annual spot rates.
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 forward one-year rates
into annual effective spot rates
.
z_from_fn1(fn1)z_from_fn1(fn1)
fn1 |
Numeric vector of annual effective forward one-year rates. |
Since
the spot rates are recovered directly.
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))