Skip to content

Instantly share code, notes, and snippets.

View acturtle's full-sized avatar

acturtle

View GitHub Profile
@acturtle
acturtle / terminal
Created August 24, 2023 12:25
actuaries_digital_11
pip install cashflower
@acturtle
acturtle / input.py
Created August 24, 2023 12:13
actuaries_digital_10
main = ModelPointSet(data=pd.DataFrame({
"id": [1, 2, 3],
"sum_assured": [100_000, 50_000, 200_000],
"remaining_term": [36, 24, 60],
}))
fund = ModelPointSet(data=pd.DataFrame({
"id": [1, 1, 3],
"fund_code": ["AX", "BP", "FY"],
"value": [10_000, 5_000, 12_000]
@acturtle
acturtle / input.py
Created August 24, 2023 12:02
actuaries_digital_09
import sqlite3
conn = sqlite3.connect("model_point")
sql_query = pd.read_sql_query("SELECT * FROM policyholder", conn)
main = ModelPointSet(data=pd.DataFrame(sql_query))
@acturtle
acturtle / input.py
Created August 24, 2023 11:08
actuaries_digital_08
main = ModelPointSet(data=pd.read_csv("data.csv"))
@acturtle
acturtle / input.py
Created August 24, 2023 11:05
actuaries_digital_07
main = ModelPointSet(data=pd.DataFrame({
"id": [1, 2, 3],
"sum_assured": [100_000, 50_000, 200_000],
"remaining_term": [36, 24, 60],
}))
@acturtle
acturtle / output
Created August 24, 2023 08:48
actuaries_digital_06
t survival_rate expected_benefit net_single_premium
0 1.000000 0.00 9375.89
1 0.997000 300.00 9422.77
2 0.994009 299.10 9168.39
3 0.991027 298.20 8913.63
...
34 0.902891 271.68 808.58
35 0.900182 270.87 539.58
36 0.897482 270.05 270.05
@acturtle
acturtle / model.py
Created August 24, 2023 08:28
actuaries_digital_05
@variable()
def net_single_premium(t):
if t == settings["T_MAX_CALCULATION"]:
return expected_benefit(t)
return expected_benefit(t) + net_single_premium(t+1) * 1/(1+assumption["INTEREST_RATE"])
@acturtle
acturtle / model.py
Created August 24, 2023 08:25
actuaries_digital_04
@variable()
def expected_benefit(t):
if t == 0:
return 0
if t > main.get("remaining_term"):
return 0
return survival_rate(t-1) * assumption["DEATH_PROB"] * main.get("sum_assured")
@acturtle
acturtle / model.py
Last active August 24, 2023 09:00
actuaries_digital_03
from cashflower import variable
from input import assumption, main
from settings import settings
@variable()
def survival_rate(t):
if t == 0:
return 1
@acturtle
acturtle / input.py
Created August 24, 2023 08:15
actuaries_digital_02
import pandas as pd
from cashflower import ModelPointSet
main = ModelPointSet(data=pd.DataFrame({
"id": [1],
"sum_assured": [100_000],
"remaining_term": [36],
}))