The primary outcome of running PROC HPCDM is the estimate of the compound distribution of aggregate loss, given the distributions of frequency and severity of the individual losses. This aggregate loss is often referred to as the ground-up loss. If you are an insurance company or a bank, you are also interested in acting on the ground-up loss by computing an entity that is derived from the ground-up loss. For example, you might want to estimate the distribution of the amount that you are expected to pay for the losses or the distribution of the amount that you can offload onto another organization, such as a reinsurance company. PROC HPCDM enables you to specify a severity adjustment program, which is a sequence of SAS programming statements that adjust the severity of the individual loss event to compute the entity of interest. Your severity adjustment program can use external information that is recorded as variables in the observations of the DATA= data set in addition to placeholder symbols for information that PROC HPCDM generates internally, such as the severity of the current loss event (_SEV_) and the sum of the adjusted severity values of the events that have been simulated thus far for the current sample point (_CUMADJSEV_). If you are doing a scenario analysis such that a scenario contains more than one observation, then you can also access the cumulative severity and cumulative adjusted severity for the current observation by using the _CUMSEVFOROBS_ and _CUMADJSEVFOROBS_ symbols.
This example continues the example of the section Scenario Analysis to illustrate how you can estimate the distribution of the aggregate amount that is paid to a group of policyholders. Let the amount that is paid to an individual policyholder be computed by using what is usually referred to as a disappearing deductible (Klugman, Panjer, and Willmot, 1998, Ch. 2). If X denotes the ground-up loss that a policyholder incurs, d denotes the lower limit on the deductible, denotes the upper limit on the deductible, and u denotes the limit on the total payments that are made to a policyholder in a year, then Y, the amount that is paid to the policyholder for each loss event, is defined as follows:
You can encode this logic by using a set of SAS programming statements.
Extend the Work.GroupOfPolicies
data set in the example in the section Scenario Analysis to include the following three additional variables for each policyholder: LowDeductible
to record d, HighDeductible
to record , and Limit
to record u. The data set contains the observations as shown in Output 4.1.1.
Output 4.1.1: Scenario Analysis Data for Multiple Policyholders with Policy Provisions
policyholderId | age | gender | carType | annualMiles | education | carSafety | income | lowDeductible | highDeductible | limit | annualLimit |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1.18 | 2 | 1 | 2.2948 | 3 | 0.99532 | 1.59870 | 400 | 1400 | 7500 | 10000 |
2 | 0.66 | 2 | 2 | 2.8148 | 1 | 0.05625 | 0.67539 | 300 | 1300 | 2500 | 20000 |
3 | 0.82 | 1 | 2 | 1.6130 | 2 | 0.84146 | 1.05940 | 100 | 1100 | 5000 | 10000 |
4 | 0.44 | 1 | 1 | 1.2280 | 3 | 0.14324 | 0.24110 | 300 | 800 | 5000 | 20000 |
5 | 0.44 | 1 | 1 | 0.9670 | 2 | 0.08656 | 0.65979 | 100 | 1100 | 5000 | 20000 |
The following PROC HPCDM step estimates the compound distributions of the aggregate loss and the aggregate amount that is
paid to the group of policyholders in the Work.GroupOfPolicies
data set by using the count model that is stored in the Work.CountregModel
item store and the lognormal severity model that is stored in the Work.SevRegEst
data set:
/* Simulate the aggregate loss distribution and aggregate adjusted loss distribution for the scenario with multiple policyholders */ proc hpcdm data=groupOfPolicies nreplicates=10000 seed=13579 print=all countstore=work.countregmodel severityest=work.sevregest plots=(edf pdf) nperturbedSamples=50 adjustedseverity=amountPaid; severitymodel logn; if (_sev_ <= lowDeductible) then amountPaid = 0; else do; if (_sev_ <= highDeductible) then amountPaid = highDeductible * (_sev_-lowDeductible)/(highDeductible-lowDeductible); else amountPaid = MIN(_sev_, limit); /* imposes per-loss payment limit */ end; run;
The preceding step uses a severity adjustment program to compute the value of the symbol AmountPaid
and specifies that symbol in the ADJUSTEDSEVERITY= option in the PROC HPCDM step. The program is executed for each simulated
loss event. The PROC HPCDM supplies your program with the value of the severity in the _SEV_ placeholder symbol.
The "Sample Summary Statistics" table in Output 4.1.2 shows the summary statistics of the compound distribution of the aggregate ground-up loss. The "Adjusted Sample Summary Statistics"
table shows the summary statistics of the compound distribution of the aggregate AmountPaid
. The average aggregate payment is about 4,321, as compared to the average aggregate ground-up loss of 5,883.
The perturbation summary of the distribution of AmountPaid
is shown in Output 4.1.3. It shows that you can expect to pay a median of 2,568 270 to this group of five policyholders in a year. Also, if the 99.5th percentile defines the worst case, then you can expect
to pay 29,098 2,881 in the worst-case.
The empirical distribution function (EDF) and probability density function plots of the aggregate adjusted loss are shown in Output 4.1.4. Both plots indicate a heavy-tailed distribution of the total amount paid.
Now consider that, in the future, you want to modify the policy provisions to add a limit on the total amount of payment that
is made to an individual policyholder in one year and to impose a group limit of 50,000 on the total amount of payments that
are made to the group as a whole in one year. You can analyze the effects of these modified policy provisions on the distribution
of the aggregate paid amount by recording the individual policyholder’s annual limit in the AnnualLimit
variable of the input data set and then modifying your severity adjustment program by using the placeholder symbols _CUMADJSEVFOROBS_
and _CUMADJSEV_ as shown in the following PROC HPCDM step:
/* Simulate the aggregate loss distribution and aggregate adjusted loss distribution for the modified set of policy provisions */ proc hpcdm data=groupOfPolicies nreplicates=10000 seed=13579 print=all countstore=work.countregmodel severityest=work.sevregest plots=none nperturbedSamples=50 adjustedseverity=amountPaid; severitymodel logn; if (_sev_ <= lowDeductible) then amountPaid = 0; else do; if (_sev_ <= highDeductible) then amountPaid = highDeductible * (_sev_-lowDeductible)/(highDeductible-lowDeductible); else amountPaid = MIN(_sev_, limit); /* imposes per-loss payment limit */ /* impose policyholder's annual limit */ amountPaid = MIN(amountPaid, MAX(0,annualLimit - _cumadjsevforobs_)); /* impose group's annual limit */ amountPaid = MIN(amountPaid, MAX(0,50000 - _cumadjsev_)); end; run;
The results of the perturbation analysis for these modified policy provisions are shown in Output 4.1.5. When compared to the results of Output 4.1.3, the additional policy provisions of restricting the total payment to the policyholder and the group have kept the median payment unchanged, but the provisions have reduced the worst-case payment (99.5th percentile) to 22,881 1,119 from 29,098 2,881.
Output 4.1.5: Perturbation Summary of the Total Amount Paid for Modified Policy Provisions
Adjusted Sample Percentile Perturbation Analysis |
||
---|---|---|
Percentile | Estimate | Standard Error |
0 | 0 | 0 |
1 | 0 | 0 |
5 | 0 | 0 |
25 | 604.60948 | 126.17884 |
50 | 2568.4 | 270.29467 |
75 | 6126.0 | 579.35289 |
95 | 13865.7 | 1135.7 |
99 | 20869.0 | 896.03211 |
99.5 | 22880.5 | 1118.9 |
Number of Perturbed Samples = 50 | ||
Size of Each Sample = 10000 |