Main Content

bornhuetterFerguson

Create bornhuetterFerguson object

Description

Use this workflow to generate unpaid claims for a bornhuetterFerguson:

  1. Load or generate the data for the Bornhuetter-Ferguson technique.

  2. Create a developmentTriangle object.

  3. Create an expectedClaims object.

  4. Create a bornhuetterFerguson object.

  5. Use the ultimateClaims function to calculate the ultimate claims.

  6. Use the ibnr function to calculate the incurred-but-not-reported (IBNR) claims.

  7. Use the unpaidClaims function to calculate the unpaid claims.

  8. Use the summary function to generate a summary report for the Bornhuetter-Ferguson technique.

Creation

Description

example

bf = bornhuetterFerguson(dT_reported,dT_paid,expectedClaims) creates a bornhuetterFerguson object using the developmentTriangle objects for reported claims (dT_reported) and paid claims (dT_paid) and the expectedClaims.

Input Arguments

expand all

Development triangle for reported claims, specified as a previously created developmentTriangle object.

Data Types: object

Development triangle for paid claims, specified as a previously created developmentTriangle object.

Data Types: object

Expected claims estimates for each Origin period, specified as an array.

Data Types: double

Properties

expand all

Development triangle for reported claims, returned as a developmentTriangle object containing the origin years, development years, and claims.

Data Types: object

Development triangle for paid claims, returned as a developmentTriangle object containing the origin years, development years, and claims.

Data Types: object

Expected claims estimates for each Origin period, returned as an array.

Data Types: double

Object Functions

ultimateClaimsCompute projected ultimate claims for bornhuetterFerguson object
ibnrCompute IBNR claims for bornhuetterFerguson object
unpaidClaimsCompute unpaid claims estimates for bornhuetterFerguson object
summaryDisplay summary report for Bornhuetter-Ferguson analysis

Examples

collapse all

Create a bornhuetterFerguson object containing simulated insurance claims data.

load InsuranceClaimsData.mat;
head(data)
ans=8×4 table
    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  

Use developmentTriangle to convert the data to a development triangle, which is the standard form for representing claims data. Create two developmentTriangle objects, one for reported claims and one for paid claims.

dT_reported = developmentTriangle(data,'Origin','OriginYear','Development','DevelopmentYear','Claims','ReportedClaims')
dT_reported = 
  developmentTriangle with properties:

                          Origin: {10x1 cell}
                     Development: {10x1 cell}
                          Claims: [10x10 double]
                  LatestDiagonal: [10x1 double]
                     Description: ""
                      TailFactor: 1
    CumulativeDevelopmentFactors: [1x10 double]
               SelectedLinkRatio: [1x9 double]

dT_paid = developmentTriangle(data,'Origin','OriginYear','Development','DevelopmentYear','Claims','PaidClaims')
dT_paid = 
  developmentTriangle with properties:

                          Origin: {10x1 cell}
                     Development: {10x1 cell}
                          Claims: [10x10 double]
                  LatestDiagonal: [10x1 double]
                     Description: ""
                      TailFactor: 1
    CumulativeDevelopmentFactors: [1x10 double]
               SelectedLinkRatio: [1x9 double]

Create an expectedClaims object where the first input argument is the reported development triangle and the second input argument is the paid development triangle.

earnedPremium = [17000; 18000; 10000; 19000; 16000; 10000; 11000; 10000; 14000; 10000];
ec = expectedClaims(dT_reported, dT_paid,earnedPremium)
ec = 
  expectedClaims with properties:

         ReportedTriangle: [1x1 developmentTriangle]
             PaidTriangle: [1x1 developmentTriangle]
            EarnedPremium: [10x1 double]
            InitialClaims: [10x1 double]
          CaseOutstanding: [10x1 double]
    EstimatedClaimsRatios: [10x1 double]
     SelectedClaimsRatios: [10x1 double]

Create a bornhuetterFerguson object with reported claims, paid claims, and expected claims to calculate ultimate claims, case outstanding, IBNR claims, and unpaid claims estimates.

bf = bornhuetterFerguson(dT_reported, dT_paid, ec.InitialClaims)
bf = 
  bornhuetterFerguson with properties:

     ReportedTriangle: [1x1 developmentTriangle]
         PaidTriangle: [1x1 developmentTriangle]
       ExpectedClaims: [10x1 double]
    PercentUnreported: [10x1 double]
        PercentUnpaid: [10x1 double]
      CaseOutstanding: [10x1 double]

Introduced in R2020b