Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
993 changes: 499 additions & 494 deletions docs/getting_started/tutorials/stochastic-tutorial.ipynb

Large diffs are not rendered by default.

5 changes: 2 additions & 3 deletions docs/getting_started/tutorials/tail-tutorial.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
"import pandas as pd\n",
"import numpy as np\n",
"import chainladder as cl\n",
"import matplotlib.pyplot as plt\n",
"\n",
"print(\"pandas: \" + pd.__version__)\n",
"print(\"numpy: \" + np.__version__)\n",
Expand Down Expand Up @@ -1229,14 +1228,14 @@
"try:\n",
" cl.TailCurve().fit(cl.Development().fit(quarterly))\n",
" print(\"This passes.\")\n",
"except:\n",
"except Exception:\n",
" print(\"This fails because we did not transform the triangle\")\n",
"\n",
"print(\"\\nSecond attempt:\")\n",
"try:\n",
" cl.TailCurve().fit(cl.Development().fit_transform(quarterly))\n",
" print(\"This passes because we transformed the triangle\")\n",
"except:\n",
"except Exception:\n",
" print(\"This fails.\")"
],
"outputs": [
Expand Down
76 changes: 47 additions & 29 deletions docs/user_guide/adjustments.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
"import chainladder as cl\n",
"import pandas as pd\n",
"\n",
"raa = cl.load_sample('raa')\n",
"raa = cl.load_sample(\"raa\")\n",
"cl.BootstrapODPSample(n_sims=500).fit_transform(raa)"
]
},
Expand Down Expand Up @@ -160,7 +160,7 @@
}
],
"source": [
"cl.BootstrapODPSample(n_sims=100, drop=[('1982', 12)]).fit_transform(raa)"
"cl.BootstrapODPSample(n_sims=100, drop=[(\"1982\", 12)]).fit_transform(raa)"
]
},
{
Expand All @@ -187,8 +187,8 @@
"\n",
":::{grid-item-card}\n",
":columns: 4\n",
":link: ../gallery/plot_bootstrap_comparison\n",
":link-type: doc\n",
":link: ../gallery/plot_bootstrap_comparison\n",
":link-type: doc\n",
"**[BootstrapODPSample Variability]**\n",
"```{image} ../images/plot_bootstrap_comparison.png\n",
"---\n",
Expand All @@ -199,7 +199,7 @@
"{bdg-warning}`medium`\n",
"\n",
":::\n",
"::::\n",
"::::\n",
"{cite}`shapland2016`"
]
},
Expand Down Expand Up @@ -364,14 +364,17 @@
}
],
"source": [
"triangle = cl.load_sample('berqsherm').loc['MedMal']\n",
"triangle = cl.load_sample(\"berqsherm\").loc[\"MedMal\"]\n",
"berq = cl.BerquistSherman(\n",
" paid_amount='Paid', incurred_amount='Incurred',\n",
" reported_count='Reported', closed_count='Closed',\n",
" trend=0.15).fit(triangle)\n",
" paid_amount=\"Paid\",\n",
" incurred_amount=\"Incurred\",\n",
" reported_count=\"Reported\",\n",
" closed_count=\"Closed\",\n",
" trend=0.15,\n",
").fit(triangle)\n",
"\n",
"# Only Reported triangle is left unadjusted\n",
"(triangle / berq.adjusted_triangle_)['Reported']"
"(triangle / berq.adjusted_triangle_)[\"Reported\"]"
]
},
{
Expand Down Expand Up @@ -517,7 +520,7 @@
}
],
"source": [
"(triangle / berq.adjusted_triangle_)['Paid']"
"(triangle / berq.adjusted_triangle_)[\"Paid\"]"
]
},
{
Expand All @@ -540,8 +543,8 @@
"\n",
":::{grid-item-card}\n",
":columns: 4\n",
":link: ../gallery/plot_berqsherm_case\n",
":link-type: doc\n",
":link: ../gallery/plot_berqsherm_case\n",
":link-type: doc\n",
"**[BerquistSherman Adjustment]**\n",
"```{image} ../images/plot_berqsherm_case.png\n",
"---\n",
Expand Down Expand Up @@ -649,8 +652,9 @@
],
"source": [
"rate_history = pd.DataFrame({\n",
" 'EffDate': ['2016-07-15', '2017-03-01', '2018-01-01', '2019-10-31'],\n",
" 'RateChange': [0.02, 0.05, -.03, 0.1]})\n",
" \"EffDate\": [\"2016-07-15\", \"2017-03-01\", \"2018-01-01\", \"2019-10-31\"],\n",
" \"RateChange\": [0.02, 0.05, -0.03, 0.1],\n",
"})\n",
"rate_history"
]
},
Expand Down Expand Up @@ -722,10 +726,13 @@
],
"source": [
"data = pd.DataFrame({\n",
" 'Year': [2016, 2017, 2018, 2019, 2020],\n",
" 'EarnedPremium': [10_000]*5})\n",
"prem_tri = cl.Triangle(data, origin='Year', columns='EarnedPremium', cumulative = True)\n",
"prem_tri = cl.ParallelogramOLF(rate_history, change_col='RateChange', date_col='EffDate').fit_transform(prem_tri)\n",
" \"Year\": [2016, 2017, 2018, 2019, 2020],\n",
" \"EarnedPremium\": [10_000] * 5,\n",
"})\n",
"prem_tri = cl.Triangle(data, origin=\"Year\", columns=\"EarnedPremium\", cumulative=True)\n",
"prem_tri = cl.ParallelogramOLF(\n",
" rate_history, change_col=\"RateChange\", date_col=\"EffDate\"\n",
").fit_transform(prem_tri)\n",
"prem_tri.olf_"
]
},
Expand All @@ -747,8 +754,8 @@
"\n",
":::{grid-item-card}\n",
":columns: 4\n",
":link: ../gallery/plot_capecod_onlevel\n",
":link-type: doc\n",
":link: ../gallery/plot_capecod_onlevel\n",
":link-type: doc\n",
"**[CapeCod Onleveling]**\n",
"```{image} ../images/plot_capecod_onlevel.png\n",
"---\n",
Expand Down Expand Up @@ -793,16 +800,27 @@
}
],
"source": [
"ppauto_loss = cl.load_sample('clrd').groupby('LOB').sum().loc['ppauto', 'CumPaidLoss']\n",
"ppauto_prem = cl.load_sample('clrd').groupby('LOB').sum() \\\n",
" .loc['ppauto']['EarnedPremDIR'].latest_diagonal\n",
"ppauto_loss = cl.load_sample(\"clrd\").groupby(\"LOB\").sum().loc[\"ppauto\", \"CumPaidLoss\"]\n",
"ppauto_prem = (\n",
" cl\n",
" .load_sample(\"clrd\")\n",
" .groupby(\"LOB\")\n",
" .sum()\n",
" .loc[\"ppauto\"][\"EarnedPremDIR\"]\n",
" .latest_diagonal\n",
")\n",
"\n",
"# Simple trend\n",
"a = cl.CapeCod(trend=0.05).fit(ppauto_loss, sample_weight=ppauto_prem).ultimate_.sum()\n",
"\n",
"# Equivalent using a Trend Estimator. This allows us to convert to more complex trends\n",
"b = cl.CapeCod().fit(cl.Trend(.05).fit_transform(ppauto_loss), sample_weight=ppauto_prem).ultimate_.sum()\n",
"a == b\n"
"b = (\n",
" cl\n",
" .CapeCod()\n",
" .fit(cl.Trend(0.05).fit_transform(ppauto_loss), sample_weight=ppauto_prem)\n",
" .ultimate_.sum()\n",
")\n",
"a == b"
]
},
{
Expand Down Expand Up @@ -998,10 +1016,10 @@
}
],
"source": [
"ppauto_loss = cl.load_sample('clrd').groupby('LOB').sum().loc['ppauto', 'CumPaidLoss']\n",
"ppauto_loss = cl.load_sample(\"clrd\").groupby(\"LOB\").sum().loc[\"ppauto\", \"CumPaidLoss\"]\n",
"cl.Trend(\n",
" trends=[.05, .03],\n",
" dates=[('1997-12-31', '1995-01-01'),('1995-01-01', '1992-07-01')]\n",
" trends=[0.05, 0.03],\n",
" dates=[(\"1997-12-31\", \"1995-01-01\"), (\"1995-01-01\", \"1992-07-01\")],\n",
").fit(ppauto_loss).trend_.round(2)"
]
}
Expand Down
Loading
Loading