From 3b4cea5d03a9a75de26e5cf5d337c1b8a36c2c42 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 08:29:58 -0500 Subject: [PATCH 1/7] DOCS: Shorten filenames. --- .../friedland_uspp_auto_increasing_case.csv | 56 ------------------- .../friedland_uspp_auto_increasing_claim.csv | 56 ------------------- .../friedland_uspp_increasing_claim_case.csv | 56 ------------------- 3 files changed, 168 deletions(-) delete mode 100644 chainladder/utils/data/friedland_uspp_auto_increasing_case.csv delete mode 100644 chainladder/utils/data/friedland_uspp_auto_increasing_claim.csv delete mode 100644 chainladder/utils/data/friedland_uspp_increasing_claim_case.csv diff --git a/chainladder/utils/data/friedland_uspp_auto_increasing_case.csv b/chainladder/utils/data/friedland_uspp_auto_increasing_case.csv deleted file mode 100644 index 3e593833..00000000 --- a/chainladder/utils/data/friedland_uspp_auto_increasing_case.csv +++ /dev/null @@ -1,56 +0,0 @@ -Accident Year,Calendar Year,Paid Claims,Reported Claims -1999,1999,294000,539000 -1999,2000,497000,630000 -1999,2001,588000,665000 -1999,2002,644000,686000 -1999,2003,672000,693000 -1999,2004,686000,693000 -1999,2005,693000,700000 -1999,2006,693000,700000 -1999,2007,700000,700000 -1999,2008,700000,700000 -2000,2000,308700,565950 -2000,2001,521850,661500 -2000,2002,617400,698250 -2000,2003,676200,720300 -2000,2004,705600,727650 -2000,2005,720300,727650 -2000,2006,727650,735000 -2000,2007,727650,735000 -2000,2008,735000,735000 -2001,2001,324135,594248 -2001,2002,547943,694575 -2001,2003,648270,733163 -2001,2004,710010,756315 -2001,2005,740880,764033 -2001,2006,756315,764033 -2001,2007,764033,771750 -2001,2008,764033,771750 -2002,2002,340342,623960 -2002,2003,575340,729304 -2002,2004,680684,769821 -2002,2005,745511,794131 -2002,2006,777924,802234 -2002,2007,794131,802234 -2002,2008,802234,810338 -2003,2003,357359,655158 -2003,2004,604107,765769 -2003,2005,714718,808312 -2003,2006,782786,833837 -2003,2007,816820,842346 -2003,2008,833837,842346 -2004,2004,375227,687916 -2004,2005,634312,804057 -2004,2006,750454,848727 -2004,2007,821925,878745 -2004,2008,857661,884463 -2005,2005,393988,722312 -2005,2006,666028,844260 -2005,2007,787976,897355 -2005,2008,863022,933377 -2006,2006,413688,758427 -2006,2007,699329,897702 -2006,2008,827375,962808 -2007,2007,434372,818067 -2007,2008,734295,979922 -2008,2008,456090,931185 diff --git a/chainladder/utils/data/friedland_uspp_auto_increasing_claim.csv b/chainladder/utils/data/friedland_uspp_auto_increasing_claim.csv deleted file mode 100644 index 2a3ebfb7..00000000 --- a/chainladder/utils/data/friedland_uspp_auto_increasing_claim.csv +++ /dev/null @@ -1,56 +0,0 @@ -Accident Year,Calendar Year,Paid Claims,Reported Claims -1999,1999,294000,539000 -1999,2000,497000,630000 -1999,2001,588000,665000 -1999,2002,644000,686000 -1999,2003,672000,693000 -1999,2004,686000,693000 -1999,2005,693000,700000 -1999,2006,693000,700000 -1999,2007,700000,700000 -1999,2008,700000,700000 -2000,2000,308700,565950 -2000,2001,521850,661500 -2000,2002,617400,698250 -2000,2003,676200,720300 -2000,2004,705600,727650 -2000,2005,720300,727650 -2000,2006,727650,735000 -2000,2007,727650,735000 -2000,2008,735000,735000 -2001,2001,324135,594248 -2001,2002,547943,694575 -2001,2003,648270,733163 -2001,2004,710010,756315 -2001,2005,740880,764033 -2001,2006,756315,764033 -2001,2007,764033,771750 -2001,2008,764033,771750 -2002,2002,340342,623960 -2002,2003,575340,729304 -2002,2004,680684,769821 -2002,2005,745511,794131 -2002,2006,777924,802234 -2002,2007,794131,802234 -2002,2008,802234,810838 -2003,2003,357359,655158 -2003,2004,604107,765769 -2003,2005,714718,808312 -2003,2006,782786,833837 -2003,2007,816820,842346 -2003,2008,833837,842346 -2004,2004,428831,786189 -2004,2005,724928,918923 -2004,2006,857661,969974 -2004,2007,939343,1000605 -2004,2008,980184,1010815 -2005,2005,478414,877093 -2005,2006,808748,1025173 -2005,2007,956828,1082127 -2005,2008,1047955,1116300 -2006,2006,531884,975121 -2006,2007,899137,1139751 -2006,2008,1063768,1203071 -2007,2007,589505,1080759 -2007,2008,996544,1263224 -2008,2008,651558,1194523 diff --git a/chainladder/utils/data/friedland_uspp_increasing_claim_case.csv b/chainladder/utils/data/friedland_uspp_increasing_claim_case.csv deleted file mode 100644 index c28a14b0..00000000 --- a/chainladder/utils/data/friedland_uspp_increasing_claim_case.csv +++ /dev/null @@ -1,56 +0,0 @@ -Accident Year,Calendar Year,Paid Claims,Reported Claims -1999,1999,294000,539000 -1999,2000,497000,630000 -1999,2001,588000,665000 -1999,2002,644000,686000 -1999,2003,672000,693000 -1999,2004,686000,693000 -1999,2005,693000,700000 -1999,2006,693000,700000 -1999,2007,700000,700000 -1999,2008,700000,565950 -2000,2000,308700,661500 -2000,2001,521850,698250 -2000,2002,617400,720300 -2000,2003,676200,727650 -2000,2004,705600,727650 -2000,2005,720300,735000 -2000,2006,727650,735000 -2000,2007,727560,735000 -2000,2008,735000,735000 -2001,2001,324135,594248 -2001,2002,547943,694575 -2001,2003,648270,733163 -2001,2004,710010,756315 -2001,2005,740880,764033 -2001,2006,756315,764033 -2001,2007,764033,771750 -2001,2008,764033,771750 -2002,2002,340342,623960 -2002,2003,575340,729304 -2002,2004,680684,769821 -2002,2005,745511,794131 -2002,2006,777924,802234 -2002,2007,794131,802234 -2002,2008,802234,810338 -2003,2003,357359,655158 -2003,2004,604107,765769 -2003,2005,714718,808312 -2003,2006,782786,833837 -2003,2007,816820,842346 -2003,2008,833837,842346 -2004,2004,428831,786189 -2004,2005,724928,918923 -2004,2006,857661,969974 -2004,2007,939343,1004280 -2004,2008,980184,1010815 -2005,2005,478414,877093 -2005,2006,808748,1025173 -2005,2007,956828,1089645 -2005,2008,1047955,1133386 -2006,2006,531884,975121 -2006,2007,899137,1154188 -2006,2008,1063768,1237897 -2007,2007,589505,1110234 -2008,2008,996544,1329895 -2008,2008,651558,1330264 From f5d8aa3bb09ec119a0d4515774ee70639719962f Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 08:30:15 -0500 Subject: [PATCH 2/7] DOCS: Document Friedland datasets. --- docs/library/sample_data.md | 69 ++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/docs/library/sample_data.md b/docs/library/sample_data.md index 27113437..e6c45f57 100644 --- a/docs/library/sample_data.md +++ b/docs/library/sample_data.md @@ -7,26 +7,49 @@ You can load any dataset with `cl.load_sample(...)` such as `cl.load_sample("abc \* Denotes datasets that are more interesting and possess unique characteristics. -| Dataset Name | Indexes | Columns | Origin Grain | Development Grain | -|--------------|----------------------------------------------------------|-------------------------------------------------------------------------------------|--------------------|--------------------| -| abc | (none) | (none) | Annual (11 Yrs) | Annual (11 Yrs) | -| auto | [lob] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | -| berqsherm | [LOB] | [Incurred, Paid, Reported, Closed] | Annual (8 Yrs) | Annual (8 Yrs) | -| cc_sample | [Total] | [loss, exposure] | Annual (5 Yrs) | Annual (5 Yrs) | -| clrd * | [GRNAME, LOB] | [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet] | Annual (10 Yrs) | Annual (10 Yrs) | -| genins | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) | -| ia_sample | [Total] | [loss, exposure] | Annual (6 Yrs) | Annual (6 Yrs) | -| liab * | [lob] | [values] | Annual (14 Yrs) | Annual (14 Yrs) | -| m3ir5 | (none) | (none) | Annual (14 Yrs) | Annual (14 Yrs) | -| mcl | [Total] | [incurred, paid] | Annual (7 Yrs) | Annual (7 Yrs) | -| mortgage | (none) | (none) | Annual (9 Yrs) | Annual (9 Yrs) | -| mw2008 | (none) | (none) | Annual (9 Yrs) | Annual (9 Yrs) | -| mw2014 | (none) | (none) | Annual (17 Yrs) | Annual (17 Yrs) | -| prism * | [ClaimNo, Line, Type, ClaimLiability, Limit, Deductible] | [reportedCount, closedPaidCount, Paid, Incurred] | Month (120 months) | Month (120 months) | -| quarterly * | [Total] | [incurred, paid] | Annual (12 Yrs) | Quarter (45 Qtrs) | -| raa | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) | -| tail_sample | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | -| ukmotor | (none) | (none) | Annual (7 Yrs) | Annual (7 Yrs) | -| usaa | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | -| usauto | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | -| xyz | [Total] | [Incurred, Paid, Reported, Closed, Premium] | Annual (11 Yrs) | Annual (11 Yrs) | +| Dataset Name | Indexes | Columns | Origin Grain | Development Grain | +|----------------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|--------------------------|--------------------------| +| abc | (none) | (none) | Annual (11 Yrs) | Annual (11 Yrs) | +| auto | [lob] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | +| berqsherm | [LOB] | [Incurred, Paid, Reported, Closed] | Annual (8 Yrs) | Annual (8 Yrs) | +| cc_sample | [Total] | [loss, exposure] | Annual (5 Yrs) | Annual (5 Yrs) | +| clrd * | [GRNAME, LOB] | [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_auto_bi_insurer* | (none) | [Paid Claims, Reported Claims] | Annual (9 Yrs) | Annual (9 Yrs) | +| friedland_auto_freq_sev* | (none) | [Closed Claim Counts, Reported Claim Counts, Reported Claims, Reported Severity] | Semiannual (10 Half-Yrs) | Semiannual (10 Half-Yrs) | +| friedland_autoprop | (none) | [Reported ALAE, Paid ALAE, Reported Claims, Paid Claims] | Annual (11 Yrs) | Annual (11 Yrs) | +| friedland_auto_salsub | (none) | [Reported Salvage and Subrogation, Received Salvage and Subrogation, Reported Claims, Paid Claims] | Annual (11 Yrs) | Annual (11 Yrs) | +| friedland_berq_sher_auto | (none) | [Paid Claims, Closed Claim Counts, Reported Claim Counts, Disposal Rate] | Annual (8 Yrs) | Annual (8 Yrs) | +| friedland_gl_insurer | (none) | [Closed Claim Counts, Reported Claim Counts, Disposal Rate Paid Claims] | Annual (8 Yrs) | Annual (8 Yrs) | +| friedland_med_mal | (none) | [Reported Claims, Paid Claims, Case Outstanding, Open Claim Counts] | Annual (8 Yrs) | Annual (8 Yrs) | +| friedland_qs | (none) | [Gross Reported Claims, Net Reported Claims, Net to Gross] | Annual (4 Yrs) | Annual (4 Yrs) | +| friedland_us_auto_chg_prod_mix | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_us_auto_incr_claim | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_us_auto_steady_state | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_us_industry_auto | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_us_industy_auto_case | (none) | [Case Outstanding, Incremental Paid Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_uspp_auto_incr_case | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_uspp_auto_incr_claim | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| frieldand_uspp_auto_steady_state | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_uspp_incr_claim_case | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_wc_self_insurer | (none) | [Closed Claim Counts, Reported Claim Counts, Paid Claims, Paid Severities, Reported Claims, Reported Severities] | Annual (8 Yrs) | Annual (10 Yrs) | +| friedland_xol | (none) | [Gross Reported Claims, Net Reported Claims, Ceded Reported Claims] | Annual (4 Yrs) | Annual (4 Yrs) | +| friedland_xyz_auto_bi* | (none) | [Paid Claims, Reported Claims] | Annual (11 Yrs) | Annual (11 Yrs) | +| friedland_xyz_case* | (none) | [Case Outstanding, Incremental Paid Claims, Incremental Paid to Previous Case, Case to Previous Case] | Annual (11 Yrs) | Annual (11 Yrs) | +| friedland_xyz_disp | (none) | [Disposal Rate, Closed Claim Counts, Paid Claims] | Annual (8 Yrs) | Annual (8 Yrs) | +| friedland_xyz_freq_sev* | (none) | [Closed Claim Counts, Reported Claim Counts, Reported Claims, Reported Severities] | Annual (11 Yrs) | Annual (11 Yrs) | +| genins | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) | +| ia_sample | [Total] | [loss, exposure] | Annual (6 Yrs) | Annual (6 Yrs) | +| liab * | [lob] | [values] | Annual (14 Yrs) | Annual (14 Yrs) | +| m3ir5 | (none) | (none) | Annual (14 Yrs) | Annual (14 Yrs) | +| mcl | [Total] | [incurred, paid] | Annual (7 Yrs) | Annual (7 Yrs) | +| mortgage | (none) | (none) | Annual (9 Yrs) | Annual (9 Yrs) | +| mw2008 | (none) | (none) | Annual (9 Yrs) | Annual (9 Yrs) | +| mw2014 | (none) | (none) | Annual (17 Yrs) | Annual (17 Yrs) | +| prism * | [ClaimNo, Line, Type, ClaimLiability, Limit, Deductible] | [reportedCount, closedPaidCount, Paid, Incurred] | Month (120 months) | Month (120 months) | +| quarterly * | [Total] | [incurred, paid] | Annual (12 Yrs) | Quarter (45 Qtrs) | +| raa | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) | +| tail_sample | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | +| ukmotor | (none) | (none) | Annual (7 Yrs) | Annual (7 Yrs) | +| usaa | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | +| usauto | [Total] | [incurred, paid] | Annual (10 Yrs) | Annual (10 Yrs) | +| xyz* | [Total] | [Incurred, Paid, Reported, Closed, Premium] | Annual (11 Yrs) | Annual (11 Yrs) | From 54d33a77b6c6c9b282db2887b3319a70047fe498 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 08:30:32 -0500 Subject: [PATCH 3/7] FEAT: Add Friedland datasets to load_sample. --- chainladder/utils/utility_functions.py | 102 +++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/chainladder/utils/utility_functions.py b/chainladder/utils/utility_functions.py index c7d61b90..79167cc5 100644 --- a/chainladder/utils/utility_functions.py +++ b/chainladder/utils/utility_functions.py @@ -162,6 +162,108 @@ def load_sample( origin: str = "AccidentDate" development: str = "PaymentDate" cumulative: bool = False + # Friedland datasets + if 'friedland' in key.lower(): + columns: list = [ + 'Paid Claims', + 'Reported Claims' + ] + origin: str = "Accident Year" + development: str = 'Calendar Year' + cumulative: bool = True + index: None = None + if 'autoprop' in key.lower(): + columns: list = [ + 'Reported ALAE', + 'Paid ALAE', + 'Reported Claims', + 'Paid Claims' + ] + if 'auto_salsub' in key.lower(): + columns: list = [ + 'Reported Salvage and Subrogation', + 'Received Salvage and Subrogation', + 'Reported Claims', + 'Paid Claims' + ] + if 'berq_sher_auto' in key.lower(): + columns: list = [ + 'Paid Claims', + 'Closed Claim Counts', + 'Reported Claim Counts', + 'Disposal Rate' + ] + if 'gl_insurer' in key.lower(): + columns: list = [ + 'Closed Claim Counts', + 'Reported Claim Counts', + 'Disposal Rate', + 'Paid Claims' + ] + if 'med_mal' in key.lower(): + columns: list = [ + 'Reported Claims', + 'Paid Claims', + 'Case Outstanding', + 'Open Claim Counts' + ] + if 'qs' in key.lower(): + columns: list = [ + 'Gross Reported Claims', + 'Net Reported Claims', + 'Net to Gross' + ] + if 'auto_case' in key.lower(): + columns: list = [ + 'Case Outstanding', + 'Incremental Paid Claims' + ] + if 'wc_self_insurer' in key.lower(): + columns: list = [ + 'Closed Claim Counts', + 'Reported Claim Counts', + 'Paid Claims', + 'Paid Severities', + 'Reported Claims', + 'Reported Severities' + ] + if 'xol' in key.lower(): + columns: list = [ + 'Gross Reported Claims', + 'Net Reported Claims', + 'Ceded Reported Claims' + ] + if 'xyz_case' in key.lower(): + columns: list = [ + 'Case Outstanding', + 'Incremental Paid Claims', + 'Incremental Paid to Previous Case', + 'Case to Previous Case' + ] + if 'xyz_disp' in key.lower(): + columns: list = [ + 'Disposal Rate', + 'Closed Claim Counts', + 'Paid Claims' + ] + if 'xyz_freq_sev' in key.lower(): + columns: list = [ + 'Closed Claim Counts', + 'Reported Claim Counts', + 'Reported Claims', + 'Reported Severities' + ] + if 'auto_freq_sev' in key.lower(): + columns: list = [ + 'Closed Claim Counts', + 'Reported Claim Counts', + 'Reported Claims', + 'Reported Severity' + ] + origin: str = "Accident Half-Year" + development: str = "Calendar Half-Year" + + df = pd.read_csv(filepath_or_buffer=dataset_path) From 28c90af2201000c4549db4aca234f0eada1e0991 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 08:30:56 -0500 Subject: [PATCH 4/7] FIX: Correct semiannual to months. --- .../utils/data/friedland_auto_freq_sev.csv | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/chainladder/utils/data/friedland_auto_freq_sev.csv b/chainladder/utils/data/friedland_auto_freq_sev.csv index dfefabc1..8e99ef45 100644 --- a/chainladder/utils/data/friedland_auto_freq_sev.csv +++ b/chainladder/utils/data/friedland_auto_freq_sev.csv @@ -1,56 +1,56 @@ Accident Half-Year,Calendar Half-Year,Closed Claim Counts,Reported Claim Counts,Reported Claims,Reported Severity -2003-02,2003-02,2547,3556,14235000,4003 -2003-02,2004-01,3262,3314,14960000,4514 -2003-02,2004-02,3287,3301,14921000,4520 -2003-02,2005-01,3291,3299,14911000,4520 -2003-02,2005-02,3292,3295,14926000,4530 -2003-02,2006-01,3292,3294,14864000,4512 -2003-02,2006-02,3292,3293,14860000,4513 -2003-02,2007-01,3292,3293,14854000,4511 -2003-02,2007-02,3292,3293,14850000,4510 -2003-02,2008-01,3292,3292,14847000,4510 +2003-07,2003-07,2547,3556,14235000,4003 +2003-07,2004-01,3262,3314,14960000,4514 +2003-07,2004-07,3287,3301,14921000,4520 +2003-07,2005-01,3291,3299,14911000,4520 +2003-07,2005-07,3292,3295,14926000,4530 +2003-07,2006-01,3292,3294,14864000,4512 +2003-07,2006-07,3292,3293,14860000,4513 +2003-07,2007-01,3292,3293,14854000,4511 +2003-07,2007-07,3292,3293,14850000,4510 +2003-07,2008-01,3292,3292,14847000,4510 2004-01,2004-01,2791,3492,14548000,4166 -2004-01,2004-02,3217,3262,14674000,4498 +2004-01,2004-07,3217,3262,14674000,4498 2004-01,2005-01,3240,3250,14643000,4506 -2004-01,2005-02,3242,3247,14626000,4505 +2004-01,2005-07,3242,3247,14626000,4505 2004-01,2006-01,3243,3247,14621000,4503 -2004-01,2006-02,3243,3245,14610000,4502 +2004-01,2006-07,3243,3245,14610000,4502 2004-01,2007-01,3243,3245,14610000,4502 -2004-01,2007-02,3243,3244,14611000,4504 +2004-01,2007-07,3243,3244,14611000,4504 2004-01,2008-01,3242,3243,14617000,4507 -2004-02,2004-02,2099,2980,12129000,4070 -2004-02,2005-01,2677,2712,12576000,4637 -2004-02,2005-02,2695,2704,12541000,4638 -2004-02,2006-01,2697,2702,12531000,4638 -2004-02,2006-02,2697,2700,12523000,4683 -2004-02,2007-01,2698,2700,12523000,4638 -2004-02,2007-02,2698,2699,12510000,4635 -2004-02,2008-01,2698,2699,12502000,4632 +2004-07,2004-07,2099,2980,12129000,4070 +2004-07,2005-01,2677,2712,12576000,4637 +2004-07,2005-07,2695,2704,12541000,4638 +2004-07,2006-01,2697,2702,12531000,4638 +2004-07,2006-07,2697,2700,12523000,4683 +2004-07,2007-01,2698,2700,12523000,4638 +2004-07,2007-07,2698,2699,12510000,4635 +2004-07,2008-01,2698,2699,12502000,4632 2005-01,2005-01,2370,2896,11980000,4137 -2005-01,2005-02,2735,2768,11921000,4307 +2005-01,2005-07,2735,2768,11921000,4307 2005-01,2006-01,2751,2761,11882000,4304 -2005-01,2006-02,2754,2758,11862000,4301 +2005-01,2006-07,2754,2758,11862000,4301 2005-01,2007-01,2755,2758,11854000,4298 -2005-01,2007-02,2755,2758,11844000,4294 +2005-01,2007-07,2755,2758,11844000,4294 2005-01,2008-01,2756,2757,11841000,4295 -2005-02,2005-02,1966,2814,11283000,4010 -2005-02,2006-01,2609,2650,11843000,4469 -2005-02,2006-02,2630,2640,11805000,4472 -2005-02,2007-01,2634,2639,11789000,4467 -2005-02,2007-02,2634,2638,11772000,4462 -2005-02,2008-01,2634,2636,11770000,4465 +2005-07,2005-07,1966,2814,11283000,4010 +2005-07,2006-01,2609,2650,11843000,4469 +2005-07,2006-07,2630,2640,11805000,4472 +2005-07,2007-01,2634,2639,11789000,4467 +2005-07,2007-07,2634,2638,11772000,4462 +2005-07,2008-01,2634,2636,11770000,4465 2006-01,2006-01,2261,2808,11947000,4254 -2006-01,2006-02,2671,2712,11856000,4372 +2006-01,2006-07,2671,2712,11856000,4372 2006-01,2007-01,2694,2704,11820000,4371 -2006-01,2007-02,2696,2701,11772000,4359 +2006-01,2007-07,2696,2701,11772000,4359 2006-01,2008-01,2697,2700,11760000,4356 -2006-02,2006-02,1949,2799,12503000,4467 -2006-02,2007-01,2637,2675,12762000,4771 -2006-02,2007-02,2659,2670,12706000,4759 -2006-02,2008-01,2662,2668,12697000,4759 +2006-07,2006-07,1949,2799,12503000,4467 +2006-07,2007-01,2637,2675,12762000,4771 +2006-07,2007-07,2659,2670,12706000,4759 +2006-07,2008-01,2662,2668,12697000,4759 2007-01,2007-01,2059,2578,11662000,4524 -2007-01,2007-02,2496,2533,11523000,4549 +2007-01,2007-07,2496,2533,11523000,4549 2007-01,2008-01,2520,2529,11492000,4544 -2007-02,2007-02,2083,2791,12647000,4531 -2007-02,2008-01,2732,2778,12854000,4627 +2007-07,2007-07,2083,2791,12647000,4531 +2007-07,2008-01,2732,2778,12854000,4627 2008-01,2008-01,2533,3139,14071000,4483 From 9454f8f25c4c11022ecc70f6bc080908be7318b6 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 09:48:40 -0500 Subject: [PATCH 5/7] FEAT: Add mack_1997 to load_sample. --- chainladder/utils/tests/test_utilities.py | 25 +++++++++++++++++++++-- docs/library/sample_data.md | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/chainladder/utils/tests/test_utilities.py b/chainladder/utils/tests/test_utilities.py index d3989920..f625a542 100644 --- a/chainladder/utils/tests/test_utilities.py +++ b/chainladder/utils/tests/test_utilities.py @@ -1,11 +1,12 @@ import pytest import chainladder as cl -from chainladder.utils.cupy import cp -import numpy as np import copy +import numpy as np import pandas as pd +from pathlib import Path + def test_non_vertical_line(): true_olf = ( @@ -221,3 +222,23 @@ def test_invalid_sample() -> None: """ with pytest.raises(ValueError): cl.load_sample(key="not_a_real_sample_38473743") + +def test_load_sample() -> None: + """ + Tests whether the supported sample data sets load. + """ + + # Get the folder containing the datasets. + data_dir: Path = Path(__file__).parent.parent / 'data' + + # Files to exclude from cl.load_sample(). + files_to_excl: list = [ + '__init__' + ] + + # Gather list of files to test. + datasets = [f.stem for f in data_dir.iterdir() if f.is_file() and f.stem not in files_to_excl] + + # Load each file. + for dataset in datasets: + cl.load_sample(dataset) diff --git a/docs/library/sample_data.md b/docs/library/sample_data.md index e6c45f57..493e33dc 100644 --- a/docs/library/sample_data.md +++ b/docs/library/sample_data.md @@ -40,6 +40,7 @@ You can load any dataset with `cl.load_sample(...)` such as `cl.load_sample("abc | genins | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) | | ia_sample | [Total] | [loss, exposure] | Annual (6 Yrs) | Annual (6 Yrs) | | liab * | [lob] | [values] | Annual (14 Yrs) | Annual (14 Yrs) | +| mack_1997 | (none) | [Case Incurred] | Annual (10 Yrs) | Annual (10 Yrs) | | m3ir5 | (none) | (none) | Annual (14 Yrs) | Annual (14 Yrs) | | mcl | [Total] | [incurred, paid] | Annual (7 Yrs) | Annual (7 Yrs) | | mortgage | (none) | (none) | Annual (9 Yrs) | Annual (9 Yrs) | From 78ad0c1e73b6dc9a4faf66b382f445b9bff32fe1 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 09:48:43 -0500 Subject: [PATCH 6/7] FEAT: Add mack_1997 to load_sample. --- chainladder/utils/utility_functions.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/chainladder/utils/utility_functions.py b/chainladder/utils/utility_functions.py index 79167cc5..2d9c7709 100644 --- a/chainladder/utils/utility_functions.py +++ b/chainladder/utils/utility_functions.py @@ -73,7 +73,9 @@ def load_sample( Invalid key supplied. The key should match the name, without extension, of one of the file names in the sample data set folder. Please refer to the documentation page on sample data sets to see what data are available. - """ + + You supplied: {} + """.format(key) ) # Set initial values for arguments to Triangle __init__. These may be overridden by @@ -162,6 +164,11 @@ def load_sample( origin: str = "AccidentDate" development: str = "PaymentDate" cumulative: bool = False + if 'mack_1997' in key.lower(): + columns = ['Case Incurred'] + origin = 'Accident Year' + development = 'Calendar Year' + cumulative: bool = True # Friedland datasets if 'friedland' in key.lower(): columns: list = [ From 2932f75db114f94d9d32a6a395b5a941c6f440b0 Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Thu, 30 Apr 2026 11:47:14 -0500 Subject: [PATCH 7/7] FIX: Adjust mixed cumulative/incremental Friedland triangles to be cumulative only. --- .../data/friedland_us_industry_auto_case.csv | 112 +++++++-------- chainladder/utils/data/friedland_xyz_case.csv | 134 +++++++++--------- chainladder/utils/utility_functions.py | 6 +- docs/library/sample_data.md | 4 +- 4 files changed, 127 insertions(+), 129 deletions(-) diff --git a/chainladder/utils/data/friedland_us_industry_auto_case.csv b/chainladder/utils/data/friedland_us_industry_auto_case.csv index da976957..70b87cc6 100644 --- a/chainladder/utils/data/friedland_us_industry_auto_case.csv +++ b/chainladder/utils/data/friedland_us_industry_auto_case.csv @@ -1,56 +1,56 @@ -Accident Year,Calendar Year,Case Outstanding,Incremental Paid Claims -1998,1998,18478233,18539254 -1998,1999,9937970,14691785 -1998,2000,5506911,6830969 -1998,2001,2892519,3830031 -1998,2002,1440783,2004496 -1998,2003,767842,868887 -1998,2004,413097,455900 -1998,2005,242778,225555 -1998,2006,169222,108579 -1998,2007,98117,88731 -1999,1999,18544291,20410193 -1999,2000,9955034,15680491 -1999,2001,5623522,7168718 -1999,2002,3060431,3899839 -1999,2003,1520760,2049291 -1999,2004,764736,953511 -1999,2005,443528,463714 -1999,2006,284732,253051 -1999,2007,185233,121726 -2000,2000,19034933,22120843 -2000,2001,10395464,16855171 -2000,2002,5969194,7413268 -2000,2003,3217937,4173103 -2000,2004,1567806,2172895 -2000,2005,842849,1004821 -2000,2006,457854,544233 -2000,2007,304704,248891 -2001,2001,19401810,22992259 -2001,2002,10487914,17103939 -2001,2003,5936461,7671637 -2001,2004,3056202,4326081 -2001,2005,1532147,2269520 -2001,2006,777926,1015365 -2001,2007,421141,499620 -2002,2002,20662461,24092782 -2002,2003,11176330,17702531 -2002,2004,6198509,8108490 -2002,2005,3350967,4449081 -2002,2006,1609188,2401492 -2002,2007,785497,1052839 -2003,2003,21078651,24084451 -2003,2004,11098119,17315161 -2003,2005,6398219,7670720 -2003,2006,3431210,4513869 -2003,2007,1634690,2346453 -2004,2004,21047539,24369770 -2004,2005,11150459,17120093 -2004,2006,6316995,7746815 -2004,2007,3201985,4537994 -2005,2005,21260172,25100697 -2005,2006,11087832,17601532 -2005,2007,6141416,7942765 -2006,2006,20973908,25608776 -2006,2007,11034842,17997721 -2007,2007,21623594,27229969 +Accident Year,Calendar Year,Case Outstanding,Incremental Paid Claims,Paid Claims +1998,1998,18478233,18539254,18539254 +1998,1999,9937970,14691785,33231039 +1998,2000,5506911,6830969,40062008 +1998,2001,2892519,3830031,43892039 +1998,2002,1440783,2004496,45896535 +1998,2003,767842,868887,46765422 +1998,2004,413097,455900,47221322 +1998,2005,242778,225555,47446877 +1998,2006,169222,108579,47555456 +1998,2007,98117,88731,47644187 +1999,1999,18544291,20410193,20410193 +1999,2000,9955034,15680491,36090684 +1999,2001,5623522,7168718,43259402 +1999,2002,3060431,3899839,47159241 +1999,2003,1520760,2049291,49208532 +1999,2004,764736,953511,50162043 +1999,2005,443528,463714,50625757 +1999,2006,284732,253051,50878808 +1999,2007,185233,121726,51000534 +2000,2000,19034933,22120843,22120843 +2000,2001,10395464,16855171,38976014 +2000,2002,5969194,7413268,46389282 +2000,2003,3217937,4173103,50562385 +2000,2004,1567806,2172895,52735280 +2000,2005,842849,1004821,53740101 +2000,2006,457854,544233,54284334 +2000,2007,304704,248891,54533225 +2001,2001,19401810,22992259,22992259 +2001,2002,10487914,17103939,40096198 +2001,2003,5936461,7671637,47767835 +2001,2004,3056202,4326081,52093916 +2001,2005,1532147,2269520,54363436 +2001,2006,777926,1015365,55378801 +2001,2007,421141,499620,55878421 +2002,2002,20662461,24092782,24092782 +2002,2003,11176330,17702531,41795313 +2002,2004,6198509,8108490,49903803 +2002,2005,3350967,4449081,54352884 +2002,2006,1609188,2401492,56754376 +2002,2007,785497,1052839,57807215 +2003,2003,21078651,24084451,24084451 +2003,2004,11098119,17315161,41399612 +2003,2005,6398219,7670720,49070332 +2003,2006,3431210,4513869,53584201 +2003,2007,1634690,2346453,55930654 +2004,2004,21047539,24369770,24369770 +2004,2005,11150459,17120093,41489863 +2004,2006,6316995,7746815,49236678 +2004,2007,3201985,4537994,53774672 +2005,2005,21260172,25100697,25100697 +2005,2006,11087832,17601532,42702229 +2005,2007,6141416,7942765,50644994 +2006,2006,20973908,25608776,25608776 +2006,2007,11034842,17997721,43606497 +2007,2007,21623594,27229969,27229969 diff --git a/chainladder/utils/data/friedland_xyz_case.csv b/chainladder/utils/data/friedland_xyz_case.csv index 95685907..475803a5 100644 --- a/chainladder/utils/data/friedland_xyz_case.csv +++ b/chainladder/utils/data/friedland_xyz_case.csv @@ -1,67 +1,67 @@ -Accident Year,Calendar Year,Case Outstanding,Incremental Paid Claims,Incremental Paid to Previous Case,Case to Previous Case -1998,1998,,,, -1998,1999,,,, -1998,2000,4861,6309,, -1998,2001,3859,2212,0.455,0.794 -1998,2002,3134,1561,0.405,0.812 -1998,2003,2447,1537,0.491,0.781 -1998,2004,1446,1622,0.663,0.591 -1998,2005,1947,1177,0.814,1.346 -1998,2006,853,892,0.458,0.438 -1998,2007,71,453,0.532,0.084 -1998,2008,0,58,0.816,0 -1999,1999,,,, -1999,2000,8589,4666,, -1999,2001,6544,5195,0.605,0.762 -1999,2002,5668,4110,0.628,0.866 -1999,2003,4347,4156,0.733,0.767 -1999,2004,1732,3906,0.899,0.398 -1999,2005,1583,1478,0.854,0.914 -1999,2006,649,635,0.401,0.41 -1999,2007,479,446,0.688,0.739 -1999,2008,290,225,0.469,0.605 -2000,2000,14374,1302,, -2000,2001,12237,5210,0.362,0.851 -2000,2002,9760,5627,0.46,0.798 -2000,2003,9316,5689,0.583,0.954 -2000,2004,5458,6202,0.666,0.586 -2000,2005,5605,4823,0.884,1.027 -2000,2006,3727,4369,0.78,0.665 -2000,2007,1603,2680,0.719,0.43 -2000,2008,465,880,0.549,0.29 -2001,2001,10288,1539,, -2001,2002,10052,4413,0.429,0.977 -2001,2003,8703,6367,0.633,0.866 -2001,2004,7969,6289,0.723,0.916 -2001,2005,9818,5778,0.725,1.232 -2001,2006,6046,6703,0.683,0.616 -2001,2007,1471,5980,0.989,0.243 -2001,2008,278,1450,0.985,0.189 -2002,2002,10494,2318,, -2002,2003,12439,5614,0.535,1.185 -2002,2004,12833,5891,0.474,1.032 -2002,2005,15572,8273,0.645,1.213 -2002,2006,12469,9850,0.633,0.801 -2002,2007,8072,8683,0.696,0.647 -2002,2008,3731,3809,0.472,0.462 -2003,2003,7908,1743,, -2003,2004,10755,4497,0.569,1.36 -2003,2005,17671,6443,0.599,1.643 -2003,2006,17702,10209,0.578,1.002 -2003,2007,9726,11613,0.656,0.549 -2003,2008,5052,4815,0.495,0.519 -2004,2004,14774,2221,, -2004,2005,30281,7677,0.52,2.05 -2004,2006,32916,16052,0.53,1.087 -2004,2007,28268,17489,0.531,0.859 -2004,2008,17477,9372,0.332,0.618 -2005,2005,25631,3043,, -2005,2006,35213,9176,0.358,1.374 -2005,2007,43268,14854,0.422,1.229 -2005,2008,30629,12953,0.299,0.708 -2006,2006,23535,3531,, -2006,2007,35005,8247,0.35,1.487 -2006,2008,25985,11041,0.315,0.742 -2007,2007,15948,3529,, -2007,2008,19867,8336,0.523,1.246 -2008,2008,15223,3409,, +Accident Year,Calendar Year,Case Outstanding,Incremental Paid Claims,Incremental Paid to Previous Case,Case to Previous Case,Paid Claims +1998,1998,,,,, +1998,1999,,,,, +1998,2000,4861,6309,,,6309 +1998,2001,3859,2212,0.455,0.794,8521 +1998,2002,3134,1561,0.405,0.812,10082 +1998,2003,2447,1537,0.491,0.781,11619 +1998,2004,1446,1622,0.663,0.591,13241 +1998,2005,1947,1177,0.814,1.346,14418 +1998,2006,853,892,0.458,0.438,15310 +1998,2007,71,453,0.532,0.084,15763 +1998,2008,0,58,0.816,0,15821 +1999,1999,,,,, +1999,2000,8589,4666,,,4666 +1999,2001,6544,5195,0.605,0.762,9861 +1999,2002,5668,4110,0.628,0.866,13971 +1999,2003,4347,4156,0.733,0.767,18127 +1999,2004,1732,3906,0.899,0.398,22033 +1999,2005,1583,1478,0.854,0.914,23511 +1999,2006,649,635,0.401,0.41,24146 +1999,2007,479,446,0.688,0.739,24592 +1999,2008,290,225,0.469,0.605,24817 +2000,2000,14374,1302,,,1302 +2000,2001,12237,5210,0.362,0.851,6512 +2000,2002,9760,5627,0.46,0.798,12139 +2000,2003,9316,5689,0.583,0.954,17828 +2000,2004,5458,6202,0.666,0.586,24030 +2000,2005,5605,4823,0.884,1.027,28853 +2000,2006,3727,4369,0.78,0.665,33222 +2000,2007,1603,2680,0.719,0.43,35902 +2000,2008,465,880,0.549,0.29,36782 +2001,2001,10288,1539,,,1539 +2001,2002,10052,4413,0.429,0.977,5952 +2001,2003,8703,6367,0.633,0.866,12319 +2001,2004,7969,6289,0.723,0.916,18608 +2001,2005,9818,5778,0.725,1.232,24386 +2001,2006,6046,6703,0.683,0.616,31089 +2001,2007,1471,5980,0.989,0.243,37069 +2001,2008,278,1450,0.985,0.189,38519 +2002,2002,10494,2318,,,2318 +2002,2003,12439,5614,0.535,1.185,7932 +2002,2004,12833,5891,0.474,1.032,13823 +2002,2005,15572,8273,0.645,1.213,22096 +2002,2006,12469,9850,0.633,0.801,31946 +2002,2007,8072,8683,0.696,0.647,40629 +2002,2008,3731,3809,0.472,0.462,44438 +2003,2003,7908,1743,,,1743 +2003,2004,10755,4497,0.569,1.36,6240 +2003,2005,17671,6443,0.599,1.643,12683 +2003,2006,17702,10209,0.578,1.002,22892 +2003,2007,9726,11613,0.656,0.549,34505 +2003,2008,5052,4815,0.495,0.519,39320 +2004,2004,14774,2221,,,2221 +2004,2005,30281,7677,0.52,2.05,9898 +2004,2006,32916,16052,0.53,1.087,25950 +2004,2007,28268,17489,0.531,0.859,43439 +2004,2008,17477,9372,0.332,0.618,52811 +2005,2005,25631,3043,,,3043 +2005,2006,35213,9176,0.358,1.374,12219 +2005,2007,43268,14854,0.422,1.229,27073 +2005,2008,30629,12953,0.299,0.708,40026 +2006,2006,23535,3531,,,3531 +2006,2007,35005,8247,0.35,1.487,11778 +2006,2008,25985,11041,0.315,0.742,22819 +2007,2007,15948,3529,,,3529 +2007,2008,19867,8336,0.523,1.246,11865 +2008,2008,15223,3409,,,3409 diff --git a/chainladder/utils/utility_functions.py b/chainladder/utils/utility_functions.py index 2d9c7709..efeb7e3b 100644 --- a/chainladder/utils/utility_functions.py +++ b/chainladder/utils/utility_functions.py @@ -223,7 +223,7 @@ def load_sample( if 'auto_case' in key.lower(): columns: list = [ 'Case Outstanding', - 'Incremental Paid Claims' + 'Paid Claims' ] if 'wc_self_insurer' in key.lower(): columns: list = [ @@ -243,9 +243,7 @@ def load_sample( if 'xyz_case' in key.lower(): columns: list = [ 'Case Outstanding', - 'Incremental Paid Claims', - 'Incremental Paid to Previous Case', - 'Case to Previous Case' + 'Paid Claims' ] if 'xyz_disp' in key.lower(): columns: list = [ diff --git a/docs/library/sample_data.md b/docs/library/sample_data.md index 493e33dc..9d8b221e 100644 --- a/docs/library/sample_data.md +++ b/docs/library/sample_data.md @@ -26,7 +26,7 @@ You can load any dataset with `cl.load_sample(...)` such as `cl.load_sample("abc | friedland_us_auto_incr_claim | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | | friedland_us_auto_steady_state | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | | friedland_us_industry_auto | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | -| friedland_us_industy_auto_case | (none) | [Case Outstanding, Incremental Paid Claims] | Annual (10 Yrs) | Annual (10 Yrs) | +| friedland_us_industy_auto_case | (none) | [Case Outstanding, Paid Claims] | Annual (10 Yrs) | Annual (10 Yrs) | | friedland_uspp_auto_incr_case | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | | friedland_uspp_auto_incr_claim | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | | frieldand_uspp_auto_steady_state | (none) | [Paid Claims, Reported Claims] | Annual (10 Yrs) | Annual (10 Yrs) | @@ -34,7 +34,7 @@ You can load any dataset with `cl.load_sample(...)` such as `cl.load_sample("abc | friedland_wc_self_insurer | (none) | [Closed Claim Counts, Reported Claim Counts, Paid Claims, Paid Severities, Reported Claims, Reported Severities] | Annual (8 Yrs) | Annual (10 Yrs) | | friedland_xol | (none) | [Gross Reported Claims, Net Reported Claims, Ceded Reported Claims] | Annual (4 Yrs) | Annual (4 Yrs) | | friedland_xyz_auto_bi* | (none) | [Paid Claims, Reported Claims] | Annual (11 Yrs) | Annual (11 Yrs) | -| friedland_xyz_case* | (none) | [Case Outstanding, Incremental Paid Claims, Incremental Paid to Previous Case, Case to Previous Case] | Annual (11 Yrs) | Annual (11 Yrs) | +| friedland_xyz_case* | (none) | [Case Outstanding, Paid Claims] | Annual (11 Yrs) | Annual (11 Yrs) | | friedland_xyz_disp | (none) | [Disposal Rate, Closed Claim Counts, Paid Claims] | Annual (8 Yrs) | Annual (8 Yrs) | | friedland_xyz_freq_sev* | (none) | [Closed Claim Counts, Reported Claim Counts, Reported Claims, Reported Severities] | Annual (11 Yrs) | Annual (11 Yrs) | | genins | (none) | (none) | Annual (10 Yrs) | Annual (10 Yrs) |