Life Module
The life module provides tools for life insurance calculations including assurance, annuities, and reserves.
Life Module
Life assurance, annuities, reserves, and premium calculations.
This module provides tools for: - Life assurance calculations - Annuity pricing and valuation - Reserve calculations - Premium determination - Policy value calculations
- class actuneo.life.Annuities(mortality_table: MortalityTable | None = None, interest_rate: float = 0.05)[source]
Bases:
objectA class for calculating various types of annuities and annuity values.
- __init__(mortality_table: MortalityTable | None = None, interest_rate: float = 0.05)[source]
Initialize Annuities calculator.
- Parameters:
mortality_table – MortalityTable instance (None for deterministic annuities)
interest_rate – Annual interest rate for discounting
- annuity_certain_with_life_contingency(x: int, n: int, payment: float = 1.0) float[source]
Calculate present value of annuity certain with life contingency.
- Parameters:
x – Age
n – Certain period
payment – Annual payment amount
- Returns:
Present value of annuity certain with life contingency
- annuity_due(periods: int, payment: float = 1.0) float[source]
Calculate present value of annuity-due.
- Parameters:
periods – Number of periods
payment – Periodic payment amount
- Returns:
Present value of annuity-due
- annuity_with_withdrawal(principal: float, withdrawal_rate: float, periods: int | None = None) dict[source]
Calculate annuity payments from principal with systematic withdrawals.
- Parameters:
principal – Initial principal amount
withdrawal_rate – Annual withdrawal rate (decimal)
periods – Number of periods (None for perpetual)
- Returns:
Dictionary with payment amount, remaining principal, etc.
- contingent_annuity(x: int, y: int, payment: float = 1.0) float[source]
Calculate present value of contingent annuity.
- Parameters:
x – Age of annuitant
y – Age of contingent beneficiary
payment – Annual payment amount
- Returns:
Present value of contingent annuity
- decreasing_annuity(periods: int, payment: float = 1.0, decrease_rate: float = 1.0) float[source]
Calculate present value of decreasing annuity.
- Parameters:
periods – Number of periods
payment – Initial payment amount
decrease_rate – Rate of decrease per period
- Returns:
Present value of decreasing annuity
- deferred_life_annuity(x: int, u: int, payment: float = 1.0) float[source]
Calculate present value of deferred life annuity.
- Parameters:
x – Age
u – Deferment period
payment – Annual payment amount
- Returns:
Present value of deferred life annuity
- guaranteed_annuity(x: int, n: int, payment: float = 1.0) float[source]
Calculate present value of guaranteed annuity.
- Parameters:
x – Age
n – Guarantee period
payment – Annual payment amount
- Returns:
Present value of guaranteed annuity
- immediate_annuity(periods: int, payment: float = 1.0) float[source]
Calculate present value of immediate annuity.
- Parameters:
periods – Number of periods
payment – Periodic payment amount
- Returns:
Present value of immediate annuity
- increasing_annuity(periods: int, payment: float = 1.0, increase_rate: float = 1.0) float[source]
Calculate present value of increasing annuity.
- Parameters:
periods – Number of periods
payment – Initial payment amount
increase_rate – Rate of increase per period
- Returns:
Present value of increasing annuity
- joint_life_annuity(x: int, y: int, payment: float = 1.0) float[source]
Calculate present value of joint life annuity (last survivor).
- Parameters:
x – Age of first life
y – Age of second life
payment – Annual payment amount
- Returns:
Present value of joint life annuity
- life_annuity_due(x: int, payment: float = 1.0) float[source]
Calculate present value of life annuity-due.
- Parameters:
x – Age
payment – Annual payment amount
- Returns:
Present value of life annuity-due
- life_annuity_immediate(x: int, payment: float = 1.0) float[source]
Calculate present value of immediate life annuity.
- Parameters:
x – Age
payment – Annual payment amount
- Returns:
Present value of immediate life annuity
- class actuneo.life.LifeAssurance(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_loading: float = 0.0)[source]
Bases:
objectA class for calculating life assurance premiums, reserves, and values.
- __init__(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_loading: float = 0.0)[source]
Initialize LifeAssurance calculator.
- Parameters:
mortality_table – MortalityTable instance
interest_rate – Annual interest rate for discounting
expense_loading – Expense loading as percentage of premium
Calculate annual premium using annuity factor.
- Parameters:
net_single_premium – Net single premium
annuity_factor – Annuity factor for premium payments
gross_margin – Additional margin for expenses and profit
- Returns:
Annual premium
- contingent_assurance(x: int, y: int, n: int) float[source]
Calculate net single premium for contingent assurance (last survivor).
- Parameters:
x – Age of first life
y – Age of second life
n – Term in years
- Returns:
Net single premium for contingent assurance
- deferred_assurance(x: int, u: int, n: int) float[source]
Calculate net single premium for deferred assurance.
- Parameters:
x – Age at entry
u – Deferment period in years
n – Assurance term in years
- Returns:
Net single premium for deferred assurance
- endowment_assurance(x: int, n: int) float[source]
Calculate net single premium for endowment assurance.
- Parameters:
x – Age at entry
n – Term of assurance in years
- Returns:
Net single premium for endowment assurance
Calculate gross premium including loadings.
- Parameters:
net_premium – Net single premium
initial_expenses – Initial expense loading
- Returns:
Gross premium
- joint_life_assurance(x: int, y: int) float[source]
Calculate net single premium for joint life assurance.
- Parameters:
x – Age of first life
y – Age of second life
- Returns:
Net single premium for joint life assurance
- pure_endowment(x: int, n: int) float[source]
Calculate net single premium for pure endowment.
- Parameters:
x – Age at entry
n – Term in years
- Returns:
Net single premium for pure endowment
- reserve_endowment(x: int, n: int, duration: int) float[source]
Calculate prospective reserve for endowment assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- reserve_term(x: int, n: int, duration: int) float[source]
Calculate prospective reserve for term assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- reserve_whole_life(x: int, duration: int) float[source]
Calculate prospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- temporary_life_annuity(x: int, n: int) float[source]
Calculate net single premium for temporary life annuity.
- Parameters:
x – Age at entry
n – Term in years
- Returns:
Net single premium for temporary life annuity
- term_assurance(x: int, n: int, discrete: bool = True) float[source]
Calculate net single premium for term assurance.
- Parameters:
x – Age at entry
n – Term of assurance in years
discrete – True for discrete model, False for continuous
- Returns:
Net single premium for n-year term assurance
- class actuneo.life.Reserves(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_rate: float = 0.0, profit_margin: float = 0.0)[source]
Bases:
objectA class for calculating policy reserves and actuarial valuations.
- __init__(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_rate: float = 0.0, profit_margin: float = 0.0)[source]
Initialize Reserves calculator.
- Parameters:
mortality_table – MortalityTable instance
interest_rate – Annual interest rate for discounting
expense_rate – Annual expense rate as percentage of premium
profit_margin – Required profit margin
- contingency_reserve(base_reserve: float, risk_factor: float = 0.05) float[source]
Calculate contingency reserve for adverse deviations.
- Parameters:
base_reserve – Base mathematical reserve
risk_factor – Risk factor for contingency
- Returns:
Contingency reserve
- gross_reserve(net_reserve: float, duration: int, expense_reserve: float | None = None) float[source]
Calculate gross reserve including expenses and contingencies.
- Parameters:
net_reserve – Net mathematical reserve
duration – Duration in years
expense_reserve – Additional expense reserve
- Returns:
Gross reserve
Calculate net level premium reserve.
- Parameters:
x – Original age at entry
duration – Number of years in force
net_premium – Net level annual premium
sum_assured – Sum assured amount
- Returns:
Net level premium reserve
- prospective_reserve_endowment(x: int, n: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for endowment assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- prospective_reserve_term(x: int, n: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for term assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- prospective_reserve_whole_life(x: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- reserve_distribution(reserves: List[float], total_portfolio_value: float) Dict[str, float][source]
Analyze reserve distribution across portfolio.
- Parameters:
reserves – List of individual policy reserves
total_portfolio_value – Total portfolio value
- Returns:
Dictionary with distribution statistics
- reserve_release(initial_reserve: float, final_reserve: float, duration: int) float[source]
Calculate reserve release over a period.
- Parameters:
initial_reserve – Reserve at start of period
final_reserve – Reserve at end of period
duration – Duration in years
- Returns:
Reserve release amount
- retrospective_reserve_whole_life(x: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate retrospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Retrospective reserve
- terminal_reserve(x: int, n: int, sum_assured: float = 1000.0) float[source]
Calculate terminal reserve (reserve at maturity).
- Parameters:
x – Original age at entry
n – Term of policy
sum_assured – Sum assured amount
- Returns:
Terminal reserve (should be sum assured for endowment)
- zillmerized_reserve(net_reserve: float, initial_expenses: float, duration: int, amortization_period: int = 10) float[source]
Calculate Zillmerized reserve (reserve net of unamortized acquisition costs).
- Parameters:
net_reserve – Net mathematical reserve
initial_expenses – Initial acquisition expenses
duration – Duration in years
amortization_period – Period over which to amortize expenses
- Returns:
Zillmerized reserve
LifeAssurance
- class actuneo.life.LifeAssurance(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_loading: float = 0.0)[source]
Bases:
objectA class for calculating life assurance premiums, reserves, and values.
- __init__(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_loading: float = 0.0)[source]
Initialize LifeAssurance calculator.
- Parameters:
mortality_table – MortalityTable instance
interest_rate – Annual interest rate for discounting
expense_loading – Expense loading as percentage of premium
- annual_premium(net_single_premium: float, annuity_factor: float, gross_margin: float = 0.0) float[source]
Calculate annual premium using annuity factor.
- Parameters:
net_single_premium – Net single premium
annuity_factor – Annuity factor for premium payments
gross_margin – Additional margin for expenses and profit
- Returns:
Annual premium
- contingent_assurance(x: int, y: int, n: int) float[source]
Calculate net single premium for contingent assurance (last survivor).
- Parameters:
x – Age of first life
y – Age of second life
n – Term in years
- Returns:
Net single premium for contingent assurance
- deferred_assurance(x: int, u: int, n: int) float[source]
Calculate net single premium for deferred assurance.
- Parameters:
x – Age at entry
u – Deferment period in years
n – Assurance term in years
- Returns:
Net single premium for deferred assurance
- endowment_assurance(x: int, n: int) float[source]
Calculate net single premium for endowment assurance.
- Parameters:
x – Age at entry
n – Term of assurance in years
- Returns:
Net single premium for endowment assurance
- gross_premium(net_premium: float, initial_expenses: float = 0.0) float[source]
Calculate gross premium including loadings.
- Parameters:
net_premium – Net single premium
initial_expenses – Initial expense loading
- Returns:
Gross premium
- joint_life_assurance(x: int, y: int) float[source]
Calculate net single premium for joint life assurance.
- Parameters:
x – Age of first life
y – Age of second life
- Returns:
Net single premium for joint life assurance
- pure_endowment(x: int, n: int) float[source]
Calculate net single premium for pure endowment.
- Parameters:
x – Age at entry
n – Term in years
- Returns:
Net single premium for pure endowment
- reserve_endowment(x: int, n: int, duration: int) float[source]
Calculate prospective reserve for endowment assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- reserve_term(x: int, n: int, duration: int) float[source]
Calculate prospective reserve for term assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- reserve_whole_life(x: int, duration: int) float[source]
Calculate prospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years policy has been in force
- Returns:
Prospective reserve
- temporary_life_annuity(x: int, n: int) float[source]
Calculate net single premium for temporary life annuity.
- Parameters:
x – Age at entry
n – Term in years
- Returns:
Net single premium for temporary life annuity
- term_assurance(x: int, n: int, discrete: bool = True) float[source]
Calculate net single premium for term assurance.
- Parameters:
x – Age at entry
n – Term of assurance in years
discrete – True for discrete model, False for continuous
- Returns:
Net single premium for n-year term assurance
Annuities
- class actuneo.life.Annuities(mortality_table: MortalityTable | None = None, interest_rate: float = 0.05)[source]
Bases:
objectA class for calculating various types of annuities and annuity values.
- __init__(mortality_table: MortalityTable | None = None, interest_rate: float = 0.05)[source]
Initialize Annuities calculator.
- Parameters:
mortality_table – MortalityTable instance (None for deterministic annuities)
interest_rate – Annual interest rate for discounting
- annuity_certain_with_life_contingency(x: int, n: int, payment: float = 1.0) float[source]
Calculate present value of annuity certain with life contingency.
- Parameters:
x – Age
n – Certain period
payment – Annual payment amount
- Returns:
Present value of annuity certain with life contingency
- annuity_due(periods: int, payment: float = 1.0) float[source]
Calculate present value of annuity-due.
- Parameters:
periods – Number of periods
payment – Periodic payment amount
- Returns:
Present value of annuity-due
- annuity_with_withdrawal(principal: float, withdrawal_rate: float, periods: int | None = None) dict[source]
Calculate annuity payments from principal with systematic withdrawals.
- Parameters:
principal – Initial principal amount
withdrawal_rate – Annual withdrawal rate (decimal)
periods – Number of periods (None for perpetual)
- Returns:
Dictionary with payment amount, remaining principal, etc.
- contingent_annuity(x: int, y: int, payment: float = 1.0) float[source]
Calculate present value of contingent annuity.
- Parameters:
x – Age of annuitant
y – Age of contingent beneficiary
payment – Annual payment amount
- Returns:
Present value of contingent annuity
- decreasing_annuity(periods: int, payment: float = 1.0, decrease_rate: float = 1.0) float[source]
Calculate present value of decreasing annuity.
- Parameters:
periods – Number of periods
payment – Initial payment amount
decrease_rate – Rate of decrease per period
- Returns:
Present value of decreasing annuity
- deferred_life_annuity(x: int, u: int, payment: float = 1.0) float[source]
Calculate present value of deferred life annuity.
- Parameters:
x – Age
u – Deferment period
payment – Annual payment amount
- Returns:
Present value of deferred life annuity
- guaranteed_annuity(x: int, n: int, payment: float = 1.0) float[source]
Calculate present value of guaranteed annuity.
- Parameters:
x – Age
n – Guarantee period
payment – Annual payment amount
- Returns:
Present value of guaranteed annuity
- immediate_annuity(periods: int, payment: float = 1.0) float[source]
Calculate present value of immediate annuity.
- Parameters:
periods – Number of periods
payment – Periodic payment amount
- Returns:
Present value of immediate annuity
- increasing_annuity(periods: int, payment: float = 1.0, increase_rate: float = 1.0) float[source]
Calculate present value of increasing annuity.
- Parameters:
periods – Number of periods
payment – Initial payment amount
increase_rate – Rate of increase per period
- Returns:
Present value of increasing annuity
- joint_life_annuity(x: int, y: int, payment: float = 1.0) float[source]
Calculate present value of joint life annuity (last survivor).
- Parameters:
x – Age of first life
y – Age of second life
payment – Annual payment amount
- Returns:
Present value of joint life annuity
- life_annuity_due(x: int, payment: float = 1.0) float[source]
Calculate present value of life annuity-due.
- Parameters:
x – Age
payment – Annual payment amount
- Returns:
Present value of life annuity-due
- life_annuity_immediate(x: int, payment: float = 1.0) float[source]
Calculate present value of immediate life annuity.
- Parameters:
x – Age
payment – Annual payment amount
- Returns:
Present value of immediate life annuity
Reserves
- class actuneo.life.Reserves(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_rate: float = 0.0, profit_margin: float = 0.0)[source]
Bases:
objectA class for calculating policy reserves and actuarial valuations.
- __init__(mortality_table: MortalityTable, interest_rate: float = 0.05, expense_rate: float = 0.0, profit_margin: float = 0.0)[source]
Initialize Reserves calculator.
- Parameters:
mortality_table – MortalityTable instance
interest_rate – Annual interest rate for discounting
expense_rate – Annual expense rate as percentage of premium
profit_margin – Required profit margin
- contingency_reserve(base_reserve: float, risk_factor: float = 0.05) float[source]
Calculate contingency reserve for adverse deviations.
- Parameters:
base_reserve – Base mathematical reserve
risk_factor – Risk factor for contingency
- Returns:
Contingency reserve
- gross_reserve(net_reserve: float, duration: int, expense_reserve: float | None = None) float[source]
Calculate gross reserve including expenses and contingencies.
- Parameters:
net_reserve – Net mathematical reserve
duration – Duration in years
expense_reserve – Additional expense reserve
- Returns:
Gross reserve
- net_level_premium_reserve(x: int, duration: int, net_premium: float, sum_assured: float = 1000.0) float[source]
Calculate net level premium reserve.
- Parameters:
x – Original age at entry
duration – Number of years in force
net_premium – Net level annual premium
sum_assured – Sum assured amount
- Returns:
Net level premium reserve
- prospective_reserve_endowment(x: int, n: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for endowment assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- prospective_reserve_term(x: int, n: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for term assurance.
- Parameters:
x – Original age at entry
n – Original term
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- prospective_reserve_whole_life(x: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate prospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Prospective reserve
- reserve_distribution(reserves: List[float], total_portfolio_value: float) Dict[str, float][source]
Analyze reserve distribution across portfolio.
- Parameters:
reserves – List of individual policy reserves
total_portfolio_value – Total portfolio value
- Returns:
Dictionary with distribution statistics
- reserve_release(initial_reserve: float, final_reserve: float, duration: int) float[source]
Calculate reserve release over a period.
- Parameters:
initial_reserve – Reserve at start of period
final_reserve – Reserve at end of period
duration – Duration in years
- Returns:
Reserve release amount
- retrospective_reserve_whole_life(x: int, duration: int, annual_premium: float, sum_assured: float = 1000.0) float[source]
Calculate retrospective reserve for whole life assurance.
- Parameters:
x – Original age at entry
duration – Number of years in force
annual_premium – Annual premium amount
sum_assured – Sum assured amount
- Returns:
Retrospective reserve
- terminal_reserve(x: int, n: int, sum_assured: float = 1000.0) float[source]
Calculate terminal reserve (reserve at maturity).
- Parameters:
x – Original age at entry
n – Term of policy
sum_assured – Sum assured amount
- Returns:
Terminal reserve (should be sum assured for endowment)
- zillmerized_reserve(net_reserve: float, initial_expenses: float, duration: int, amortization_period: int = 10) float[source]
Calculate Zillmerized reserve (reserve net of unamortized acquisition costs).
- Parameters:
net_reserve – Net mathematical reserve
initial_expenses – Initial acquisition expenses
duration – Duration in years
amortization_period – Period over which to amortize expenses
- Returns:
Zillmerized reserve