Disabled - Deterministic - CAT Rider¶
Valuation Model¶
Documentation¶
-
class
DValCatRPMD
(*, 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 catastrophic (CAT) policy rider.
This model is a child of the DValBasePMD with the only change being the model mode is changed from DLR to DLRCAT. This is to notify the model to calculate a different set of claim termination rates.
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 benefit cost 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 DValCatRPMD
model = DValCatRPMD(
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.0,
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:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2020-03-02 | 2020-04-02 | 5 | ... | 1.000000 | 0.998690 | 0.997381 | 1.000000 | 0.998752 | 0.997506 | 24907.469142 | 24894.598893 | 2020-03-31 | 25017.89 |
1 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2020-04-02 | 2020-05-02 | 5 | ... | 0.997381 | 0.996111 | 0.994841 | 0.997506 | 0.996262 | 0.995019 | 24894.598893 | 24696.121514 | 2020-04-30 | 24957.65 |
2 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2020-05-02 | 2020-06-02 | 5 | ... | 0.994841 | 0.993574 | 0.992307 | 0.995019 | 0.993777 | 0.992537 | 24696.121514 | 24498.643272 | 2020-05-31 | 24884.70 |
3 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2020-06-02 | 2020-07-02 | 6 | ... | 0.992307 | 0.990969 | 0.989630 | 0.992537 | 0.991299 | 0.990062 | 24498.643272 | 24302.174048 | 2020-06-30 | 24818.44 |
4 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2020-07-02 | 2020-08-02 | 6 | ... | 0.989630 | 0.988295 | 0.986960 | 0.990062 | 0.988827 | 0.987593 | 24302.174048 | 24106.723558 | 2020-07-31 | 24752.26 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
176 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2034-11-02 | 2034-12-02 | 20 | ... | 0.756533 | 0.755991 | 0.755450 | 0.644390 | 0.643586 | 0.642783 | 464.201274 | 366.892171 | 2034-11-30 | 653.76 |
177 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2034-12-02 | 2035-01-02 | 20 | ... | 0.755450 | 0.754909 | 0.754368 | 0.642783 | 0.641981 | 0.641180 | 366.892171 | 269.964719 | 2034-12-31 | 485.29 |
178 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2035-01-02 | 2035-02-02 | 20 | ... | 0.754368 | 0.753828 | 0.753288 | 0.641180 | 0.640380 | 0.639581 | 269.964719 | 173.417421 | 2035-01-31 | 316.53 |
179 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2035-02-02 | 2035-03-02 | 20 | ... | 0.753288 | 0.752748 | 0.752209 | 0.639581 | 0.638783 | 0.637986 | 173.417421 | 77.248786 | 2035-02-28 | 147.46 |
180 | 0.6.0 | 5d026f4756f03f9cb797de5a8f0c3c6d2b349ccb | 2021-03-25 11:29:46.453332 | DValCatRPMD | policy-1 | claim-1 | CAT | 2035-03-02 | 2035-04-02 | 20 | ... | 0.752209 | 0.751647 | 0.751086 | 0.637986 | 0.637190 | 0.636395 | 77.248786 | 0.000000 | 2035-03-31 | 8.83 |
181 rows × 23 columns
An audit of the model is ran by calling the audit
method shown below.
model.audit("Audit-DValCatRPMD.xlsx")
The audit file can be downloaded here.