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

  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 monthly benefit amount 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 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.

Projection Model

Documentation

To be completed.

Usage

To be completed.