← Back to Cashflow Modelling in Python

Full code (Term Annuity)

Input

# input.py
from cashflower import ModelPointSet
import pandas as pd

policy = ModelPointSet(data=pd.DataFrame({
    "id": [1, 2],
    "benefit": [2000, 3000],
    "mortality_rate": [0.004, 0.005],
    "remaining_term": [120, 48],
}))

interest_rate = 0.003

Model

# model.py
from cashflower import variable

from input import policy, interest_rate
from settings import settings


@variable()
def survival_rate(t):
    if t == 0:
        return 1
    else:
        q = policy.get("mortality_rate")
        return survival_rate(t - 1) * (1 - q)


@variable()
def expected_benefit(t):
    if t == 0 or t > policy.get("remaining_term"):
        return 0
    else:
        B = policy.get("benefit")
        return B * survival_rate(t)


@variable()
def actuarial_present_value(t):
    if t == settings["T_MAX_CALCULATION"]:
        return expected_benefit(t)
    else:
        v = 1 / (1 + interest_rate)
        return expected_benefit(t) + v * actuarial_present_value(t+1)