Disabled - Deterministic - COLA Rider¶
Valuation Model¶
Documentation¶
-
class
DValColaRPMD
(*, valuation_dt: pandas._libs.tslibs.timestamps.Timestamp, assumption_set: str, policy_id: str, claim_id: str, gender: str, birth_dt: pandas._libs.tslibs.timestamps.Timestamp, incurred_dt: pandas._libs.tslibs.timestamps.Timestamp, termination_dt: pandas._libs.tslibs.timestamps.Timestamp, elimination_period: numpy.int64, idi_contract: str, idi_benefit_period: str, idi_diagnosis_grp: str, idi_occupation_class: str, cola_percent: float, benefit_amount: float, modifier_ctr: float = 1.0, modifier_interest: float = 1.0)¶ The disabled life reserve (DLR) valuation model for the cost of living adjustment (COLA) policy rider.
This model is a child of the DValBasePMD with the only change being how the monthly benefit is calculated. The base model uses the benefit amount passed while this model calculate the benefit with cola less the original benefit amount.
Parameters
- valuation_dtTimestamp
The valuation date which reserves are based.
- assumption_setstr
The assumption set to use for running the model. Options are :
stat
gaap
best-estimate
- policy_idstr
The policy ID of the disabled claimant.
- claim_idstr
The claim ID of the disabled claimant.
- genderstr
The gender of the disabled claimant.
- birth_dtTimestamp
The birth date of the disabled claimant.
- incurred_dtTimestamp
The date of disablement for the claimant (i.e., the disablement date).
- termination_dtTimestamp
The termination date of the disabled claimant (i.e., the date benefits will stop being paid).
- elimination_periodint64
The elimination days before benefits are paid for the disabled claimant.
- idi_contractstr
The IDI contract type of the disabled claimant.
- idi_benefit_periodstr
The IDI benefit period for the disabled claimant.
- idi_diagnosis_grpstr
The IDI diagnosis group of the disabled claimant.
- idi_occupation_classstr
The IDI occupation class of the disabled claimant.
- cola_percentfloat
The COLA percent for the disabled claimant (0 if no COLA provided).
- benefit_amountfloat
The benefit amount for the disabled claimant.
Sensitivities
- modifier_ctrfloat
Modifier for CTR.
- modifier_interestfloat
Interest rate modifier.
Meta
- model_versionstr
The model version generated by versioneer.
- last_commitstr
The last git commit.
- run_date_timeTimestamp
The run date and time.
- model_modestr
Mode used in CTR calculation as it varies whether policy is active or disabled.
- coverage_idstr
The coverage id which recognizes base policy vs riders.
Intermediates
- age_incurredint
The age when the claim was incurred for the claimant.
- start_pay_dtTimestamp
The date payments start for claimants.
- ctr_tableDataFrame
The claim termination rate (CTR) table.
Returns
- frameDataFrame
The frame of projected reserves.
Steps
Calculate Age Incurred - Calculate the age when claimant becomes disabled.
Calculate Benefit Start Date - Calculate date benefits start which is incurred date + elimination period days.
Create Projected Frame - Create projected benefit frame from valuation date to termination date by duration month.
Calculate Age Attained - Calculate age attained by policy duration on the frame.
Get CTR Table - Get claim termination rate (CTR) table based on assumption set.
Calculate Monthly Benefits - Calculate the monthly benefit amount for each duration.
Calculate Lives - Calculate the beginning, middle, and ending lives for each duration.
Calculate Discount Factors - Calculate beginning, middle, and ending discount factors for each duration.
Calculate PVFB - Calculate present value of future benefits (PVFB) for each duration.
Calculate DLR - Calculate disabled life reserves (DLR) for each duration as of valuation date.
Create Output Frame - Reduce output to only needed columns.
Usage¶
import pandas as pd
from footings_idi_model.models import DValColaRPMD
model = DValColaRPMD(
policy_id="policy-1",
claim_id="claim-1",
gender="M",
birth_dt=pd.Timestamp("1970-03-26"),
incurred_dt=pd.Timestamp("2015-06-02"),
termination_dt=pd.Timestamp("2035-03-26"),
elimination_period=90,
idi_contract="AS",
idi_benefit_period="TO65",
idi_diagnosis_grp="LOW",
idi_occupation_class="M",
cola_percent=0.02,
benefit_amount=200.0,
valuation_dt=pd.Timestamp("2020-03-31"),
assumption_set="STAT",
)
To run the model call the run
method.
output = model.run()
The model returns a DataFrame of the projected reserves.
output.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 181 entries, 0 to 180
Data columns (total 23 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 MODEL_VERSION 181 non-null object
1 LAST_COMMIT 181 non-null object
2 RUN_DATE_TIME 181 non-null datetime64[ns]
3 SOURCE 181 non-null object
4 POLICY_ID 181 non-null object
5 CLAIM_ID 181 non-null object
6 COVERAGE_ID 181 non-null object
7 DATE_BD 181 non-null datetime64[ns]
8 DATE_ED 181 non-null datetime64[ns]
9 DURATION_YEAR 181 non-null Int64
10 DURATION_MONTH 181 non-null Int64
11 BENEFIT_AMOUNT 181 non-null float64
12 CTR 181 non-null float64
13 LIVES_BD 181 non-null float64
14 LIVES_MD 181 non-null float64
15 LIVES_ED 181 non-null float64
16 DISCOUNT_BD 181 non-null float64
17 DISCOUNT_MD 181 non-null float64
18 DISCOUNT_ED 181 non-null float64
19 PVFB_BD 181 non-null float64
20 PVFB_ED 181 non-null float64
21 DATE_DLR 181 non-null datetime64[ns]
22 DLR 181 non-null float64
dtypes: Int64(2), datetime64[ns](4), float64(11), object(6)
memory usage: 34.3+ KB
output
MODEL_VERSION | LAST_COMMIT | RUN_DATE_TIME | SOURCE | POLICY_ID | CLAIM_ID | COVERAGE_ID | DATE_BD | DATE_ED | DURATION_YEAR | ... | LIVES_BD | LIVES_MD | LIVES_ED | DISCOUNT_BD | DISCOUNT_MD | DISCOUNT_ED | PVFB_BD | PVFB_ED | DATE_DLR | DLR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2020-03-02 | 2020-04-02 | 5 | ... | 1.000000 | 0.998906 | 0.997813 | 1.000000 | 0.998752 | 0.997506 | 6260.734262 | 6259.676743 | 2020-03-31 | 6285.44 |
1 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2020-04-02 | 2020-05-02 | 5 | ... | 0.997813 | 0.996752 | 0.995691 | 0.997506 | 0.996262 | 0.995019 | 6259.676743 | 6243.301747 | 2020-04-30 | 6296.79 |
2 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2020-05-02 | 2020-06-02 | 5 | ... | 0.995691 | 0.994632 | 0.993574 | 0.995019 | 0.993777 | 0.992537 | 6243.301747 | 6227.002321 | 2020-05-31 | 6307.14 |
3 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2020-06-02 | 2020-07-02 | 6 | ... | 0.993574 | 0.992457 | 0.991341 | 0.992537 | 0.991299 | 0.990062 | 6227.002321 | 6206.519148 | 2020-06-30 | 6314.93 |
4 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2020-07-02 | 2020-08-02 | 6 | ... | 0.991341 | 0.990227 | 0.989113 | 0.990062 | 0.988827 | 0.987593 | 6206.519148 | 6186.132974 | 2020-07-31 | 6322.57 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
176 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2034-11-02 | 2034-12-02 | 20 | ... | 0.773433 | 0.772879 | 0.772325 | 0.644390 | 0.643586 | 0.642783 | 216.785226 | 171.341463 | 2034-11-30 | 292.11 |
177 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2034-12-02 | 2035-01-02 | 20 | ... | 0.772325 | 0.771772 | 0.771219 | 0.642783 | 0.641981 | 0.641180 | 171.341463 | 126.075932 | 2034-12-31 | 216.84 |
178 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2035-01-02 | 2035-02-02 | 20 | ... | 0.771219 | 0.770667 | 0.770115 | 0.641180 | 0.640380 | 0.639581 | 126.075932 | 80.987934 | 2035-01-31 | 141.43 |
179 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2035-02-02 | 2035-03-02 | 20 | ... | 0.770115 | 0.769564 | 0.769012 | 0.639581 | 0.638783 | 0.637986 | 80.987934 | 36.076774 | 2035-02-28 | 65.89 |
180 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:50.168693 | DValColaRPMD | policy-1 | claim-1 | COLA | 2035-03-02 | 2035-04-02 | 20 | ... | 0.769012 | 0.768438 | 0.767864 | 0.637986 | 0.637190 | 0.636395 | 36.076774 | 0.000000 | 2035-03-31 | 3.95 |
181 rows × 23 columns
An audit of the model is ran by calling the audit
method shown below.
model.audit("Audit-DValColaRPMD.xlsx")
The audit file can be downloaded here.