Multi Year¶
Table of Contents
Description¶
Graphene provides a built-in template for modelling multi-year or mid-year inception contracts. The Multi Year template allows users to model contracts whose inception and expiry span periods that are larger than the periods of their subject losses by automatically repeating occurrences to cover the extended period.
A couple of common scenarios are supported by this layer:
Applying single year trials to contracts that span the length of multiple years, by repeating the occurrences of each trial to encompass the dates from inception until the expiration date.
Applying single year trials to contracts that incept mid-year and expire in the second year, by repeating the occurrences of the trial when wrapping into the second year. This ensures seasonality of events is maintained.
Additionally, there are some features that make this template applicable to a wide variety of use cases:
The ability to be used with any underlying schema that contains the
inception_date
andexpiration_date
parameters.A configurable trial length that allows for differences in accounting methods for the
Time
value.A configurable trial begin setting, to adapt for differences in accounting methods for the
Time
value.
Structure¶
This is an example of a contract using the built-in Multi Year template.
{
"_schema": "MultiYear_1.0",
"layer_schema": "QuotaShare_1.0",
"inception_date": 120,
"expiration_date": 485,
"trial_length": 365,
"premium_value": 100000,
"brokerage": 0.1,
"limit_value": 1000000,
"share": 0.5
}
Note
Any parameters that follow the trial_length
parameter in this example are inherited from the referenced layer template. In this case, the Quota Share (QS) template.
Parameters¶
The parameters are defined as follows:
Parameter Name |
Required |
Type |
Default |
Description |
---|---|---|---|---|
|
Yes |
|
The name of the underlying wrapped layer. Note: The template assumes and forwards any parameters of this schema, including its required parameters. |
|
|
No |
|
|
Time value on which the contract incepts. This is used to calculate the number of trial repetitions necessary for the coverage period. See Timestamps for more details on time. |
|
No |
|
|
Time value on which the contract expires. This is used to calculate the number of trial repetitions necessary for the coverage period. See Timestamps for more details on time. |
|
No |
|
|
The length of time that trials span, in the same units as other time values. This will determine how many times the trial is repeated to cover the |
|
No |
|
|
Time value at which the trial begins in accordance with the time units are being used. For example, if using POSIX timestamps, |
Note
In addition to the above parameters, this template forwards parameters to the template referenced by layer_schema
.
Implementation details¶
The Multi Year template allows multi-year, or mid-year inception contracts by looping a trial repeatedly.
For example, imagine a contract begins on day 120 of a trial and expires on day 485 (i.e. one year later). If the simulation available only contains trials that span from day 0 to day 365, the Multi Year template can be used to wrap that contract to retain seasonality. The template will loop the trial into multiple “years” by repeating all the occurrences with an additional value of 365 added to their Time
value.
The Multi Year template will decide how many times the trial needs to be repeated by looking at the inception_date
, expiration_date
, trial_length
, and trial_begin
parameters.
Limitations¶
The Multi Year template acts only on the input parameters and does not assess or validate the inputs specified versus the time values present in the ledger input. It is the user’s responsibility to ensure consistency between both.
The Multi Year template provides a maximum of 100 trial repetitions. If the inputs are specified such that the ledger data needs to be repeated a large number of times, this will result in the system doing no operation where this template is used. As an example:
{
"_schema": "MultiYear_1.0",
"layer_schema": "QuotaShare_1.0",
"inception_date": 0,
"expiration_date": 365,
"premium_value": 100000,
"brokerage": 0.1,
"limit_value": 1000000,
"share": 0.5,
"trial_length": 1
}
In this case, the node will end up behaving equivalently to {}
, because the ledger input would have been repeated over 100 times, thanks to a trial_length
of 1
and total time span of 365
.
Output Records¶
The Multi Year financial structure does not output any additional output record types on its own. The output records will depend on the template referenced by layer_schema
.
Advanced Usage¶
Leap Years¶
No native support for handling leap years is provided by the Multi Year template. However, a common way to support
modelling of leap years is to assume all years are 365.25 days in length. If your input trials are modelled this way,
and you need support for modeling multiple years or mid-year inception contracts, specify the trial_length
parameter
so that it agrees with the modelled events. For example:
{
"_schema": "MultiYear_1.0",
"layer_schema": "QuotaShare_1.0",
"inception_date": 120.0,
"expiration_date": 485.25,
"trial_length": 365.25,
"premium_value": 100000,
"brokerage": 0.1,
"limit_value": 1000000,
"share": 0.5,
}
Using this scheme, Time=365.25
corresponds to 01 January, 00:00:00 on the second year of the simulated events. This will
affect exported ledger data, and needs to be considered when specifying the inception and expiry dates, especially for any
downstream structures.
Since the Multi Year template provides only basic convenience for dealing with contracts that have varying inception and
expiry dates, it is not immune to error; no validation is performed. When using input data that models leap years with 0.25
extra days, overlapping events may result. If the trial_length
parameter remains set to the default of 365 days, the
resulting output will have extra loss on the first day of the second simulated year. The first and second years will
overlap each other by 0.25 days (or 6 hours).
+------------------------------------------+
| Year 1 modelled input (365.25 days) | |
+------------------------------------------+
+-------------------------------------------+
| | Year 2 modelled input (repeated Year 1) |
+-------------------------------------------+
^ ^
Overlap Year 2, January 01 | |
00:00:00 - 06:00:00
(365.0 - 365.25)
Note
To avoid unintentional repetition or overlap of events, ensure the trial_length
matches the range of potential
time values that are present in the modelled output.
Variable Length Years¶
No support is provided for extending a fixed-year-length data set to a different length on a per-year basis.
If the input data contains modelled events for years with different time spans, this template may still be used, although there may be no convenience gained. The transformation applied will not be able to selectively extend some years to a wider time range without also potentially causing unintended repetition of events.
Note
If the input data contains events for multiple years of varying length, the Multi Year template may not be suitable.
Custom Time Offsets¶
The trial_length
and trial_begin
parameters are useful when your time values are not consistent with the defaults
assumed by this template (365
and 0
, respectively). For example, if you are using POSIX timestamps, and your ledger data
begins at timestamp 1577836800
(January 1st, 2020), covering a one-year time span:
{
"_schema": "MultiYear_1.0",
"layer_schema": "QuotaShare_1.0",
"inception_date": 1577836800,
"expiration_date": 1640995200,
"trial_length": 31622400,
"trial_begin": 1577836800,
"premium_value": 100000,
"brokerage": 0.1,
"limit_value": 1000000,
"share": 0.5
}
The contract modelled here covers two years (expiration_date
is equivalent to January 01, 2022). The trial_length
in
this case is equal to the number of seconds in 366
days, because 2020 is a leap year, and that is the year for which the
modelled losses are available. Handling trials with inconsistent year lengths is not the intended use of the Multi Year template,
but this helps illustrate how the repetition will function in unusual cases.
+------------------------------------+
| Year 1 modelled input (366 days) | unused extra day | |
+------------------------------------+ v v
+------------------------------------------+-+
| Year 2 (covered by 366 days from Year 1) | |
+------------------------------------------+-+
^ ^
January 01, 2021 | |
January 01, 2022 contract expiration |
Using the Multi Year template to repeat a leap year may not be ideal, due to the arbitrary exclusion of the 366th day of modelled losses. Model output that matches the year(s) being modelled should be used when possible.
Note
Use the trial_length
and trial_begin
parameters when your trials cover a time range other than [0, 365)
.