def test_constant_balances(): raa = cl.load_dataset('quarterly') assert np.prod( cl.TailConstant(1.05, decay=0.8).fit(raa).ldf_.iloc[0, 1].values[0, 0, 0, -5:]) == 1.05
def test_pipeline(): tri = cl.load_sample('clrd').groupby('LOB').sum()[[ 'CumPaidLoss', 'IncurLoss', 'EarnedPremDIR' ]] tri['CaseIncurredLoss'] = tri['IncurLoss'] - tri['CumPaidLoss'] X = tri[['CumPaidLoss', 'CaseIncurredLoss']] sample_weight = tri['EarnedPremDIR'].latest_diagonal dev = [ cl.Development(), cl.ClarkLDF(), cl.Trend(), cl.IncrementalAdditive(), cl.MunichAdjustment(paid_to_incurred=('CumPaidLoss', 'CaseIncurredLoss')), cl.CaseOutstanding(paid_to_incurred=('CumPaidLoss', 'CaseIncurredLoss')) ] tail = [cl.TailCurve(), cl.TailConstant(), cl.TailBondy(), cl.TailClark()] ibnr = [ cl.Chainladder(), cl.BornhuetterFerguson(), cl.Benktander(n_iters=2), cl.CapeCod() ] for model in list(itertools.product(dev, tail, ibnr)): print(model) cl.Pipeline( steps=[('dev', model[0]), ('tail', model[1]), ('ibnr', model[2])]).fit_predict( X, sample_weight=sample_weight).ibnr_.sum( 'origin').sum('columns').sum()
def test_struhuss(): X = cl.load_sample("cc_sample")["loss"] X = cl.TailConstant(tail=1 / 0.85).fit_transform( cl.Development().fit_transform(X)) sample_weight = cl.load_sample("cc_sample")["exposure"].latest_diagonal ibnr = int( cl.CapeCod(trend=0.07, decay=0.75).fit(X, sample_weight=sample_weight).ibnr_.sum()) assert ibnr == 17052
def test_basic_transform(raa): cl.Development().fit_transform(raa) cl.ClarkLDF().fit_transform(raa) cl.TailClark().fit_transform(raa) cl.TailBondy().fit_transform(raa) cl.TailConstant().fit_transform(raa) cl.TailCurve().fit_transform(raa) cl.BootstrapODPSample().fit_transform(raa) cl.IncrementalAdditive().fit_transform(raa, sample_weight=raa.latest_diagonal)
def test_basic_transform(): tri = cl.load_sample("raa") cl.Development().fit_transform(tri) cl.ClarkLDF().fit_transform(tri) cl.TailClark().fit_transform(tri) cl.TailBondy().fit_transform(tri) cl.TailConstant().fit_transform(tri) cl.TailCurve().fit_transform(tri) cl.BootstrapODPSample().fit_transform(tri) cl.IncrementalAdditive().fit_transform(tri, sample_weight=tri.latest_diagonal)
def test_constant_balances(): raa = cl.load_sample('quarterly') xp = raa.get_array_module() assert round( float( xp.prod( cl.TailConstant(1.05, decay=0.8).fit(raa).ldf_.iloc[0, 1].values[0, 0, 0, -5:])), 3) == 1.050
def test_constant_balances(qtr): xp = qtr.get_array_module() assert (round( float( xp.prod( cl.TailConstant(1.05, decay=0.8).fit(qtr).ldf_.iloc[0, 1].values[0, 0, 0, -5:])), 3, ) == 1.050)
def test_mack_to_triangle(): assert ( cl.MackChainladder() .fit( cl.TailConstant().fit_transform( cl.Development().fit_transform(cl.load_sample("ABC")) ) ) .summary_ == cl.MackChainladder() .fit(cl.Development().fit_transform(cl.load_sample("ABC"))) .summary_ )
def test_mack_to_triangle(): assert cl.MackChainladder().fit(cl.TailConstant().fit_transform(cl.Development().fit_transform(cl.load_dataset('ABC')))).summary_ == \ cl.MackChainladder().fit(cl.Development().fit_transform(cl.load_dataset('ABC'))).summary_