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

  1. Calculate Age Incurred - Calculate the age when claimant becomes disabled.

  2. Calculate Benefit Start Date - Calculate date benefits start which is incurred date + elimination period days.

  3. Create Projected Frame - Create projected benefit frame from valuation date to termination date by duration month.

  4. Calculate Age Attained - Calculate age attained by policy duration on the frame.

  5. Get CTR Table - Get claim termination rate (CTR) table based on assumption set.

  6. Calculate Monthly Benefits - Calculate the benefit cost for each duration.

  7. Calculate Lives - Calculate the beginning, middle, and ending lives for each duration.

  8. Calculate Discount Factors - Calculate beginning, middle, and ending discount factors for each duration.

  9. Calculate PVFB - Calculate present value of future benefits (PVFB) for each duration.

  10. Calculate DLR - Calculate disabled life reserves (DLR) for each duration as of valuation date.

  11. 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.

Projection Model

Documentation

To be completed.

Usage

To be completed.