A suite of functions that works together to simulate, in order, the (1) frequency, (2) time, and (3) size of major revisions of incurred loss, for each of the claims occurring in each of the periods.
claim_majRev_freq(
claims,
rfun,
paramfun,
frequency_vector = claims$frequency_vector,
claim_size_list = claims$claim_size_list,
...
)claim_majRev_time(
claims,
majRev_list,
rfun,
paramfun,
claim_size_list = claims$claim_size_list,
settlement_list = claims$settlement_list,
payment_delay_list = claims$payment_delay_list,
...
)
claim_majRev_size(majRev_list, rfun, paramfun, ...)
A nested list structure such that the jth component of the ith sub-list is a list of information on major revisions of the jth claim of occurrence period i. The "unit list" (i.e. the smallest, innermost sub-list) contains the following components:
majRev_freq | Number of major revisions of incurred loss
[claim_majRev_freq()]. |
majRev_time | Time of major revisions (from claim notification)
[claim_majRev_time()]. |
majRev_factor | Major revision multiplier of incurred loss
[claim_majRev_size()]. |
majRev_atP | An indicator, 1 if the last major revision occurs at the
time of the last major payment (i.e. second last payment), 0 otherwise
[claim_majRev_time()]. |
an claims object containing all the
simulated quantities (other than those related to incurred loss), see
claims.
optional alternative random sampling function for:
claim_majRev_freq: the number of major revisions;
claim_majRev_time: the epochs of major revisions measured from claim
notification;
claim_majRev_size: the sizes of the major revision multipliers.
See Details for default.
parameters for the random sampling function, as a function of
other claim characteristics such as claim_size; see Details.
a vector of claim frequencies for all the periods
(not required if the claims argument is provided); see
claim_frequency.
list of claim sizes (not required if the claims
argument is provided); see claim_size.
other arguments/parameters to be passed onto paramfun.
nested list of major revision histories (with non-empty revision frequencies).
list of settlement delays (not required if the
claims argument is provided); see claim_closure.
(compound) list of inter partial delays (not
required if the claims argument is provided); see
claim_payment_delay.
Let K represent the number of major revisions associated with a particular claim. The notification of a claim is considered as a major revision, so all claims have at least 1 major revision (\(K \ge 1\)).
The default majRev_freq_function specifies that no additional major revisions
will occur for claims of size smaller than or equal to claim_size_benchmark
(0.075 * ref_claim by default). For claims above this threshold,
| \(Pr(K = 2)\) | \(= 0.1 + 0.3min(1, (claim_size - 0.075 * ref_claim) / 0.925 * ref_claim)\) |
| \(Pr(K = 3)\) | \(= 0.5min(1, max(0, claim_size - 0.25 * ref_claim)/ (0.75 * ref_claim))\) |
| \(Pr(K = 1)\) | \(= 1 - Pr(K = 2) - Pr(K = 3)\) |
where ref_claim is a package-wise global variable that user should define
by set_parameters (if moving away from the default).
The idea is that major revisions are more likely for larger claims, and do
not occur at all for the smallest claims. Note also that by default a claim
may experience up to a maximum of 2 major revisions in addition to the
one at claim notification. This is taken as an assumption in the default
setting of claim_majRev_size(). If user decides to modify this assumption,
they will need to take care of the part on the major revision size as well.
Let \(\tau_k\) represent the epoch of the kth major revision (time measured from claim notification), \(k = 1, ..., K\). As the notification of a claim is considered a major revision itself, we have \(\tau_1 = 0\) for all claims.
The last major revision for a claim may occur at the time of the second last
partial payment (which is usually the major settlement payment) with
probability
$$0.2 min(1, max(0, (claim_size - ref_claim) / (14 * ref_claim)))$$
where ref_claim is a package-wise global variable that user should define
by set_parameters (if moving away from the default).
Now, if there is a major revision at the time of the second last partial
payment, then \(\tau_k, k = 2, ..., K - 1\) are sampled from a triangular
distribution with parameters (see also ptri)
min = time_to_second_last_payment / 3
max = time_to_second_last_payment
maximum density at mode = time_to_second_last_payment / 3.
Otherwise (i.e. no major revision at the time of the second last partial payment), \(\tau_k, k = 2, ..., K\) are sampled from a triangular distribution with parameters
min = settlement_delay / 3
max = settlement_delay
maximum density at mode = settlement_delay / 3.
Note that when there is a major revision at the time of the second last
partial payment, majRev_atP (one of the output list components) will be set
to be 1.
As mentioned in
the frequency section ("Details - claim_majRev_freq"), the default function
for the major revision multipliers assumes that there are only up to 2 major
revisions (in addition to the one at claim notification) for all claims.
By default,
the first major revision multiplier \(g_1\) is simply 1 (no meaning);
the second major revision multiplier \(g_2\) is sampled from a lognormal
distribution with parameters meanlog \( = 1.8\) and sdlog \(= 0.2\);
the third major revision multiplier \(g_3\) is sampled from a lognormal
distribution with parameters meanlog \(= 1 + 0.07(6 - g_2)\) and sdlog
\(= 0.1\). Note that the third major revision is likely to be smaller than
the second.
The revision multipliers are subject to further constraints to ensure that
the revised incurred estimate never falls below what has already been paid.
This is dicussed in claim_history.
The major revision multipliers apply to the incurred loss estimates, that
is, a revision multiplier of 2.54 means that at the time of the major
revision the incurred loss increases by a factor of 2.54. We highlight this
as in the case of minor revisions, the multipliers will instead apply to
outstanding claim amounts, see claim_minRev.
claims
set.seed(1)
test_claims <- SynthETIC::test_claims_object
major <- claim_majRev_freq(test_claims)
major[[1]][[1]] # the "unit list" for the first claim
# update the timing information
major <- claim_majRev_time(test_claims, major)
# observe how this has changed
major[[1]][[1]]
# update the revision multipliers
major <- claim_majRev_size(major)
# again observe how this has changed
major[[1]][[1]]
Run the code above in your browser using DataLab