Main Content

developmentTriangle

Create developmentTriangle object

Since R2020b

Description

Use this workflow to generate projected ultimate claims for a developmentTriangle:

  1. Load or generate the claims data for the development triangle.

  2. Create a developmentTriangle object.

  3. Use view to display the developmentTriangle data and use claimsPlot to plot the reported claims.

  4. Use linkRatios to compute the link ratio factors (development factors or age-to-age factors) and use linkRatioAverages to calculate averages from those factors. Also, you can plot link ratios using linkRatiosPlot.

  5. Use cdfSummary to calculate the cumulative development factors (CDFs) and the percentage of total claims.

  6. Use ultimateClaims to calculate the projected ultimate claims.

  7. Use fullTriangle to display the development triangle that includes ultimate claims.

Creation

Description

example

dT = developmentTriangle(data) creates a developmentTriangle object using data. You can plot dT using claimsPlot.

example

dT = developmentTriangle(___,Name,Value) sets properties using name-value pair arguments. Specify one or more name-value pair arguments after the input argument in the previous syntax. For example, dT_reported = developmentTriangle(data,'Origin','AccidentYear','Development','DevelopmentYear','Claims','ReportedClaims').

Input Arguments

expand all

Claims data, specified as a table with at least three columns. If you specify data as a three-column table and do not specify name-value pair arguments for 'Origin', 'Development' and 'Claims', the software obtains origin years from the first column, development years from the second column, and claims from the third column by default.

Data Types: table

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: dT_reported = developmentTriangle(data,'Origin','AccidentYear','Development','DevelopmentYear','Claims','ReportedClaims')

Name of the column containing the origin years, specified as the comma-separated pair consisting of 'Origin' and a character vector or string.

Data Types: char | string

Name of column containing development years, specified as the comma-separated pair consisting of 'Development' and a character vector or string.

Data Types: char | string

Name of column containing claims periods, specified as the comma-separated pair consisting of 'Claims' and a character vector or string.

Data Types: double

Flag to indicate if data is cumulative or incremental, specified as the comma-separated pair consisting of 'Cumulative' and a scalar logical value.

Data Types: logical

Properties

expand all

Name of column containing origin years, returned as a cell array.

Data Types: cell

Name of column containing development years, returned as a cell array.

Data Types: cell

Name of column containing claims period, returned as a vector.

Data Types: double

Latest claim values for each Origin period, returned as a vector.

Data Types: double

User-defined description, returned as a string.

Data Types: string

Selected link ratios for the CDF calculations, returned as a vector.

Data Types: double

Tail factor constant, returned as a numeric.

Data Types: double

Object Functions

viewDisplay developmentTriangle object
linkRatios Compute link ratios for developmentTriangle object
linkRatioAverages Compute link ratio averages for developmentTriangle object
cdfSummary Compute CDFs to ultimate claims for developmentTriangle object
ultimateClaimsCompute ultimate claims for developmentTriangle object
fullTriangle Display full development triangle including ultimate claims
linkRatiosPlot Plot link ratios for development triangle
claimsPlot Plot claims for development triangle

Examples

collapse all

Create a developmentTriangle object using simulated claims data.

load InsuranceClaimsData.mat;
disp(data)
    OriginYear    DevelopmentYear    ReportedClaims    PaidClaims
    __________    _______________    ______________    __________

       2010              12              3995.7          1893.9  
       2010              24                4635          3371.2  
       2010              36              4866.8          4079.1  
       2010              48              4964.1            4487  
       2010              60              5013.7          4711.4  
       2010              72              5038.8          4805.6  
       2010              84                5059          4853.7  
       2010              96              5074.1          4877.9  
       2010             108              5084.3          4887.7  
       2010             120              5089.4          4892.6  
       2011              12                3968          2055.5  
       2011              24              4682.3          3638.3  
       2011              36              4963.2          4365.9  
       2011              48              5062.5          4758.9  
       2011              60              5113.1          4949.2  
       2011              72              5138.7          5048.2  
       2011              84              5154.1          5098.7  
       2011              96              5169.6          5124.2  
       2011             108              5179.9          5134.4  
       2012              12                4217          2242.4  
       2012              24              5060.4          3946.7  
       2012              36                5364          4696.6  
       2012              48              5508.9          5119.3  
       2012              60              5558.4          5324.1  
       2012              72              5586.2          5430.5  
       2012              84              5608.6          5484.8  
       2012              96              5625.4          5512.3  
       2013              12              4374.2          2373.8  
       2013              24              5205.3          4130.4  
       2013              36              5517.7          4915.2  
       2013              48              5661.1          5357.6  
       2013              60              5740.4          5571.9  
       2013              72              5780.6          5677.8  
       2013              84              5803.7          5728.9  
       2014              12              4499.7          2421.8  
       2014              24              5309.6          4189.6  
       2014              36              5628.2          4985.6  
       2014              48              5785.8          5434.3  
       2014              60              5849.4          5651.7  
       2014              72              5878.7          5759.1  
       2015              12              4530.2          2484.1  
       2015              24              5300.4          4272.6  
       2015              36              5565.4          5084.4  
       2015              48              5715.7          5541.9  
       2015              60              5772.8          5763.6  
       2016              12              4572.6          2481.7  
       2016              24              5304.2          4218.9  
       2016              36              5569.5          5020.5  
       2016              48              5714.3          5472.4  
       2017              12              4680.6          2577.9  
       2017              24              5523.1          4382.4  
       2017              36              5854.4          5171.2  
       2018              12              4696.7            2580  
       2018              24              5495.1          4386.1  
       2019              12              4945.9          2764.8  

Use developmentTriangle to convert the data to a development triangle, which is the standard form for representing claims data.

dT = developmentTriangle(data)
dT = 
  developmentTriangle with properties:

                          Origin: {10x1 cell}
                     Development: {10x1 cell}
                          Claims: [10x10 double]
                  LatestDiagonal: [10x1 double]
                     Description: ""
                      TailFactor: 1
    CumulativeDevelopmentFactors: [1.3069 1.1107 1.0516 1.0261 1.0152 1.0098 1.0060 1.0030 1.0010 1]
               SelectedLinkRatio: [1.1767 1.0563 1.0249 1.0107 1.0054 1.0038 1.0030 1.0020 1.0010]

Use the view function to display the developmentTriangle contents in table form. Each row represents an origin period and each column represents a development period.

developmentTriangleTable = view(dT)
developmentTriangleTable=10×10 table
              12        24        36        48        60        72        84        96       108       120  
            ______    ______    ______    ______    ______    ______    ______    ______    ______    ______

    2010    3995.7      4635    4866.8    4964.1    5013.7    5038.8      5059    5074.1    5084.3    5089.4
    2011      3968    4682.3    4963.2    5062.5    5113.1    5138.7    5154.1    5169.6    5179.9       NaN
    2012      4217    5060.4      5364    5508.9    5558.4    5586.2    5608.6    5625.4       NaN       NaN
    2013    4374.2    5205.3    5517.7    5661.1    5740.4    5780.6    5803.7       NaN       NaN       NaN
    2014    4499.7    5309.6    5628.2    5785.8    5849.4    5878.7       NaN       NaN       NaN       NaN
    2015    4530.2    5300.4    5565.4    5715.7    5772.8       NaN       NaN       NaN       NaN       NaN
    2016    4572.6    5304.2    5569.5    5714.3       NaN       NaN       NaN       NaN       NaN       NaN
    2017    4680.6    5523.1    5854.4       NaN       NaN       NaN       NaN       NaN       NaN       NaN
    2018    4696.7    5495.1       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
    2019    4945.9       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN

To visualize the development triangles, use plot.

plot(table2array(developmentTriangleTable)');
xticklabels(developmentTriangleTable.Properties.VariableNames)
xlabel('Development Year')
ylabel('Reported Claims')
title('Development Reported Claims')
legend(developmentTriangleTable.Properties.RowNames)
grid on

Figure contains an axes object. The axes object with title Development Reported Claims, xlabel Development Year, ylabel Reported Claims contains 10 objects of type line. These objects represent 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.

Version History

Introduced in R2020b