diff --git a/.gitignore b/.gitignore index 3ae4a10a..cbde3b23 100644 --- a/.gitignore +++ b/.gitignore @@ -115,7 +115,7 @@ settings.json # macOS related files *.DS_Store -*Icon +*Icon? *.r # asv environments diff --git a/docs/tutorials/deterministic-tutorial.ipynb b/docs/tutorials/deterministic-tutorial.ipynb index d04c1935..a1bfe2bb 100644 --- a/docs/tutorials/deterministic-tutorial.ipynb +++ b/docs/tutorials/deterministic-tutorial.ipynb @@ -22,7 +22,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "pandas: 1.3.1\n", + "pandas: 1.3.2\n", "numpy: 1.20.3\n", "chainladder: 0.8.8\n" ] @@ -2092,100 +2092,100 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", @@ -2203,64 +2203,64 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2268,11 +2268,11 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2281,10 +2281,10 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2294,9 +2294,9 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2307,8 +2307,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2320,7 +2320,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2444,24 +2444,73 @@ "tags": [] }, "source": [ - "### The Bornhuetter-Ferguson Method" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `BornhuetterFerguson` estimator is another deterministic method having many of the same attributes as the `Chainladder` estimator. It comes with one input assumption, the a priori (`apriori`). This is a scalar multiplier that will be applied to an exposure vector, which will produce an a priori ultimate estimate vector that we can use for the model." + "### The Bornhuetter-Ferguson Method\n", + "The `BornhuetterFerguson` estimator is another deterministic method having many of the same attributes as the `Chainladder` estimator. It comes with one assumption, the `apriori`. This is a scalar multiplier that is to be applied to an exposure vector to determine an apriori ultimate estimate of our model.\n", + "\n", + "Since the CAS Loss Reserve Database (clrd) has premium, we will use it as an example. Let's grab the paid loss and net earned premium for the commercial auto line of business." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 16, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
 
200187,787182,11088,158-182,340-72,364209,46387,46245,3770200187,787182,11088,158-182,340-72,364209,46387,46245,3770
2002-24,007-76,765-124,0489,899-125,615-212,094-58,022-45,3772002-24,007-76,765-124,0489,899-125,615-212,094-58,022-45,377
2003-81,818-7,335-52,380-74,468100,960-155,475-29,4392003-81,818-7,335-52,380-74,468100,960-155,475-29,439
2004-56,116138,769-41,694497,591203,342158,1052004-56,116138,769-41,694497,591203,342158,105
2005106,873-37,49677,233-91,479-106,3232005106,873-37,49677,233-91,479-106,323
200642,33498,24722,812-159,204200642,33498,24722,812-159,204
200748,990-79,30229,920200748,990-79,30229,920
2008-110,168-218,2272008-110,168-218,227
2009-13,8752009-13,875
20102010
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(1, 2, 10, 10)
Index:[LOB]
Columns:[CumPaidLoss, EarnedPremNet]
" + ], + "text/plain": [ + " Triangle Summary\n", + "Valuation: 1997-12\n", + "Grain: OYDY\n", + "Shape: (1, 2, 10, 10)\n", + "Index: [LOB]\n", + "Columns: [CumPaidLoss, EarnedPremNet]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "### The BornhuetterFerguson method\n", - "The `BornhuetterFerguson` estimator is another deterministic method having many of the same attributes as the `Chainladder` estimator. It comes with one assumption, the `apriori`. This is a scalar multiplier that is to be applied to an exposure vector to determine an apriori ultimate estimate of our model.\n", - "\n", - "Since the CAS Loss Reserve Database has premium, we will use it as an example. Let's grab the paid loss and net earned premium for the commercial auto line of business." + "comauto = (\n", + " cl.load_sample(\"clrd\")\n", + " .groupby(\"LOB\")\n", + " .sum()\n", + " .loc[\"comauto\"][[\"CumPaidLoss\", \"EarnedPremNet\"]]\n", + ")\n", + "comauto" ] }, { @@ -2472,10 +2521,24 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 17, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "BornhuetterFerguson(apriori=0.75)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "Let's set an apriori Loss Ratio estimate of 75%" + "bf_model = cl.BornhuetterFerguson(apriori=0.75)\n", + "bf_model" ] }, { @@ -2503,7 +2566,7 @@ ], "source": [ "bf_model.fit(\n", - " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal\n", + " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal,\n", ")" ] }, @@ -2614,7 +2677,7 @@ ], "source": [ "bf_model.fit(\n", - " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal\n", + " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal,\n", ")" ] }, @@ -2643,7 +2706,7 @@ ], "source": [ "b1 = cl.BornhuetterFerguson(apriori=0.75).fit(\n", - " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal\n", + " comauto[\"CumPaidLoss\"], sample_weight=comauto[\"EarnedPremNet\"].latest_diagonal,\n", ")\n", "\n", "b2 = cl.BornhuetterFerguson(apriori=1.00).fit(\n", @@ -2671,7 +2734,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -2766,7 +2829,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -3231,7 +3294,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 32, @@ -3270,7 +3333,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 33, @@ -3323,7 +3386,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 34, @@ -3385,7 +3448,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 35, @@ -3678,7 +3741,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/docs/tutorials/development-tutorial.ipynb b/docs/tutorials/development-tutorial.ipynb index 72ff8c65..2debba67 100644 --- a/docs/tutorials/development-tutorial.ipynb +++ b/docs/tutorials/development-tutorial.ipynb @@ -23,7 +23,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "pandas: 1.3.1\n", + "pandas: 1.3.2\n", "numpy: 1.20.3\n", "chainladder: 0.8.8\n" ] @@ -558,53 +558,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.49061.74561.46191.17391.11121.08731.05391.07481.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.490607 1.745557 1.461852 1.173852 1.111247 1.087341 1.053874 1.074753 1.017725" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development(average=[\"volume\", \"simple\", \"regression\"] * 3).fit(genins).ldf_" ] @@ -618,53 +574,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.49061.74561.45201.18101.11121.08481.05391.07661.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.490607 1.745557 1.451961 1.180984 1.111247 1.084818 1.053874 1.076555 1.017725" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development(average=[\"volume\"] + [\"simple\"] * 5 + [\"volume\"] * 3).fit(genins).ldf_" ] @@ -685,159 +597,27 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.49061.74731.45741.17391.10381.08631.05391.07661.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.490607 1.747333 1.457413 1.173852 1.103824 1.086269 1.053874 1.076555 1.017725" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development().fit(genins).ldf_" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.49061.74731.45741.17391.10381.08631.05391.07661.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.490607 1.747333 1.457413 1.173852 1.103824 1.086269 1.053874 1.076555 1.017725" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development(n_periods=-1).fit(genins).ldf_" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.46041.84651.39201.15391.08491.09741.05391.07661.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.460401 1.846507 1.392009 1.153852 1.084915 1.097355 1.053874 1.076555 1.017725" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development(n_periods=3).fit(genins).ldf_" ] @@ -851,53 +631,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
(All)3.53251.95021.48081.16511.10381.08251.05391.07661.0177
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 3.532471 1.950242 1.480761 1.165122 1.103824 1.082476 1.053874 1.076555 1.017725" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "cl.Development(n_periods=[8, 2, 6, 5, -1, 2, -1, -1, 5]).fit(genins).ldf_" ] @@ -1258,100 +994,100 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", @@ -1368,71 +1104,71 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1440,10 +1176,10 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1452,9 +1188,9 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1464,8 +1200,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1980,84 +1716,84 @@ "data": { "text/html": [ "\n", - "
 
20013.14321.54281.27831.23771.20921.04411.04041.06301.017720013.14321.54281.27831.23771.20921.04411.04041.06301.0177
20023.51061.75551.54531.13291.08451.12811.05731.086520023.51061.75551.54531.13291.08451.12811.05731.0865
20034.44851.71671.45831.23211.03691.12001.060620034.44851.71671.45831.23211.03691.12001.0606
20044.56801.54711.71181.07251.08741.047120044.56801.54711.71181.07251.08741.0471
20052.56421.87301.36151.17421.138320052.56421.87301.36151.17421.1383
20063.36561.63571.36921.236420063.36561.63571.36921.2364
20072.92281.87811.439420072.92281.87811.4394
20083.95332.015720083.95332.0157
20093.619220093.6192
\n", + "
\n", " \n", " \n", " \n", @@ -2074,71 +1810,71 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2146,10 +1882,10 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2158,8 +1894,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2170,8 +1906,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2554,7 +2290,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/docs/tutorials/stochastic-tutorial.ipynb b/docs/tutorials/stochastic-tutorial.ipynb index 3ffbae04..16a75f28 100644 --- a/docs/tutorials/stochastic-tutorial.ipynb +++ b/docs/tutorials/stochastic-tutorial.ipynb @@ -4,9 +4,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Stochastic methods\n", - "### Getting started\n", - "All exercises rely on chainladder v0.5.5 and later. There have also been breaking changes with `pandas 1.0` and if you are using an earlier version, date slicing may behave differently." + "## Applying Stochastic Methods\n", + "### Getting Started\n", + "This tutorial focuses on using stochastic methods to estimate ultimates. \n", + "\n", + "Note that a lot of the examples shown here might not be applicable in a real world scenario, and is only meant to demonstrate some of the functionalities included in the package. The user should always exercise their best actuarial judgement, and follow any applicable laws, the Code of Professional Conduct, and applicable Actuarial Standards of Practice.\n", + "\n", + "Be sure to make sure your packages are updated. For more info on how to update your pakages, visit [Keeping Packages Updated](https://chainladder-python.readthedocs.io/en/latest/install.html#keeping-packages-updated)." ] }, { @@ -18,29 +22,37 @@ "name": "stdout", "output_type": "stream", "text": [ - "chainladder:0.8.6\n", - "pandas:1.3.0\n" + "pandas: 1.3.2\n", + "numpy: 1.20.3\n", + "chainladder: 0.8.8\n" ] } ], "source": [ + "# Black linter, optional\n", + "%load_ext lab_black\n", + "\n", "import pandas as pd\n", "import numpy as np\n", "import chainladder as cl\n", - "import seaborn as sns\n", - "sns.set_style('whitegrid')\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "import os\n", + "\n", "%matplotlib inline\n", - "print('chainladder:' + cl.__version__)\n", - "print('pandas:' + pd.__version__)" + "\n", + "print(\"pandas: \" + pd.__version__)\n", + "print(\"numpy: \" + np.__version__)\n", + "print(\"chainladder: \" + cl.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### MackChainladder Intro\n", + "### Intro to MackChainladder\n", "\n", - "Like the basic `Chainladder` method, the `MackChainladder` is entirely specified by its development pattern selections. In fact, it is the basic `Chainladder` with a few extra features. Let's explore this a bit more with the Workers' Compensation industry triangle." + "Like the basic `Chainladder` method, the `MackChainladder` is entirely specified by its selected development pattern. In fact, it is the basic `Chainladder`, but with extra features." ] }, { @@ -60,16 +72,23 @@ } ], "source": [ - "tri = cl.load_sample('clrd').groupby('LOB').sum().loc['wkcomp', ['CumPaidLoss', 'EarnedPremNet']]\n", - "cl.Chainladder().fit(tri['CumPaidLoss']).ultimate_ == \\\n", - "cl.MackChainladder().fit(tri['CumPaidLoss']).ultimate_" + "clrd = (\n", + " cl.load_sample(\"clrd\")\n", + " .groupby(\"LOB\")\n", + " .sum()\n", + " .loc[\"wkcomp\", [\"CumPaidLoss\", \"EarnedPremNet\"]]\n", + ")\n", + "\n", + "cl.Chainladder().fit(clrd[\"CumPaidLoss\"]).ultimate_ == cl.MackChainladder().fit(\n", + " clrd[\"CumPaidLoss\"]\n", + ").ultimate_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's create a Mack Model." + "Let's create a Mack's Chainladder model." ] }, { @@ -78,22 +97,22 @@ "metadata": {}, "outputs": [], "source": [ - "mack = cl.MackChainladder().fit(tri['CumPaidLoss'])" + "mack = cl.MackChainladder().fit(clrd[\"CumPaidLoss\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "MackChainladder has the following additional fitted features that the deterministic `Chainladder` does not.\n", + "MackChainladder has the following additional fitted features that the deterministic `Chainladder` does not:\n", "\n", - "1. `full_std_err_`: The full standard error\n", - "2. `total_process_risk_`: The total process error\n", - "3. `total_parameter_risk_`: The total parameter error\n", - "4. `mack_std_err_`: The total prediction error by origin period\n", - "5. `total_mack_std_err_`: The total prediction error across all origin periods\n", + "- `full_std_err_`: The full standard error\n", + "- `total_process_risk_`: The total process error\n", + "- `total_parameter_risk_`: The total parameter error\n", + "- `mack_std_err_`: The total prediction error by origin period\n", + "- `total_mack_std_err_`: The total prediction error across all origin periods\n", "\n", - "Notice these are all measures of uncertainty, but where do they come from? Let's start by examining the `link_ratios` underlying the triangle." + "Notice these are all measures of uncertainty, but where can they be applied? Let's start by examining the `link_ratios` underlying the triangle between age 12 and 24." ] }, { @@ -180,15 +199,15 @@ } ], "source": [ - "tri_first_lags = tri[tri.development<=24][tri.origin<'1997']['CumPaidLoss']\n", - "tri_first_lags" + "clrd_first_lags = clrd[clrd.development <= 24][clrd.origin < \"1997\"][\"CumPaidLoss\"]\n", + "clrd_first_lags" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "A simple average link-ratio can be directly computed as follows:" + "A simple average link-ratio can be directly computed." ] }, { @@ -208,14 +227,14 @@ } ], "source": [ - "tri_first_lags.link_ratio.to_frame().mean().values[0]" + "clrd_first_lags.link_ratio.to_frame().mean()[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Verifying that this ties to our `Development` object:" + "We can also verify that the result is the same as the `Development` object." ] }, { @@ -235,19 +254,19 @@ } ], "source": [ - "cl.Development(average='simple').fit(tri['CumPaidLoss']).ldf_.to_frame().values[0, 0]" + "cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"]).ldf_.to_frame().values[0, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### A linear regression framework\n", + "### The Linear Regression Framework\n", "\n", - "Mack noticed that this estimate for an LDF is really just a linear regression fit. For the case of the `simple` average, it is a weighted regression where the weight is set to $\\left (\\frac{1}{X} \\right )^{2}$.\n", + "Mack noted that the estimate for the LDF is really just a linear regression fit. In the case of using the `simple` average, it is a weighted regression where the weight is $\\left (\\frac{1}{X} \\right )^{2}$.\n", "\n", - "Take a look at the fitted coefficient in the next cell and verify that it ties to the direct calculations above.\n", - "With the regression framework in hand, we get much more information about our LDF estimate than just the coefficient." + "Let's take a look at the fitted coefficient and verify that this ties to the direct calculations that we made earlier.\n", + "With the regression framework in hand, we can get more information about our LDF estimate than just the coefficient." ] }, { @@ -259,7 +278,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\jboga\\anaconda3\\envs\\cl_dev\\lib\\site-packages\\scipy\\stats\\stats.py:1604: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=9\n", + "/Users/kenneth.hsu/opt/anaconda3/envs/cl_dev/lib/python3.7/site-packages/scipy/stats/stats.py:1604: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=9\n", " \"anyway, n=%i\" % int(n))\n" ] }, @@ -278,10 +297,10 @@ " \n", "\n", "\n", - " \n", + " \n", "\n", "\n", - " \n", + " \n", "\n", "\n", " \n", @@ -327,8 +346,8 @@ "Dep. Variable: y R-squared (uncentered): 0.997\n", "Model: WLS Adj. R-squared (uncentered): 0.997\n", "Method: Least Squares F-statistic: 2887.\n", - "Date: Sun, 15 Aug 2021 Prob (F-statistic): 1.60e-11\n", - "Time: 09:39:58 Log-Likelihood: -107.89\n", + "Date: Fri, 10 Sep 2021 Prob (F-statistic): 1.60e-11\n", + "Time: 23:27:45 Log-Likelihood: -107.89\n", "No. Observations: 9 AIC: 217.8\n", "Df Residuals: 8 BIC: 218.0\n", "Df Model: 1 \n", @@ -356,12 +375,10 @@ } ], "source": [ - "import statsmodels.api as sm\n", - "import numpy as np\n", - "y = tri_first_lags.to_frame().values[:, 1]\n", - "X = tri_first_lags.to_frame().values[:, 0]\n", + "y = clrd_first_lags.to_frame().values[:, 1]\n", + "x = clrd_first_lags.to_frame().values[:, 0]\n", "\n", - "model = sm.WLS(y, X, weights=(1/X)**2)\n", + "model = sm.WLS(y, x, weights=(1 / x) ** 2)\n", "results = model.fit()\n", "results.summary()" ] @@ -370,7 +387,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "By toggling the weights of our regression, we can handle the most common types of averaging used in picking loss development factors." + "By toggling the weights of our regression, we can handle the most common types of averaging used in picking loss development factors.\n", + "- For simple average, the weights are $\\left (\\frac{1}{X} \\right )^{2}$\n", + "- For volume-weighted average, the weights are $\\left (\\frac{1}{X} \\right )$\n", + "- For \"regression\" average, the weights are 1" ] }, { @@ -382,32 +402,58 @@ "name": "stdout", "output_type": "stream", "text": [ - "Does this work for simple?\n", + "Simple average:\n", "True\n", - "Does this work for volume-weighted average?\n", + "Volume-weighted average:\n", "True\n", - "Does this work for regression average?\n", + "Regression average:\n", "True\n" ] } ], "source": [ - "print('Does this work for simple?')\n", - "print(round(cl.Development(average='simple').fit(tri_first_lags).ldf_.to_frame().values[0, 0], 8) == \\\n", - " round(sm.WLS(y, X, weights=(1/X)**2).fit().params[0],8))\n", - "print('Does this work for volume-weighted average?')\n", - "print(round(cl.Development(average='volume').fit(tri_first_lags).ldf_.to_frame().values[0, 0], 8) == \\\n", - " round(sm.WLS(y, X, weights=(1/X)).fit().params[0],8))\n", - "print('Does this work for regression average?')\n", - "print(round(cl.Development(average='regression').fit(tri_first_lags).ldf_.to_frame().values[0, 0], 8) == \\\n", - " round(sm.OLS(y, X).fit().params[0],8))" + "print(\"Simple average:\")\n", + "print(\n", + " round(\n", + " cl.Development(average=\"simple\")\n", + " .fit(clrd_first_lags)\n", + " .ldf_.to_frame()\n", + " .values[0, 0],\n", + " 10,\n", + " )\n", + " == round(sm.WLS(y, x, weights=(1 / x) ** 2).fit().params[0], 10)\n", + ")\n", + "\n", + "print(\"Volume-weighted average:\")\n", + "print(\n", + " round(\n", + " cl.Development(average=\"volume\")\n", + " .fit(clrd_first_lags)\n", + " .ldf_.to_frame()\n", + " .values[0, 0],\n", + " 10,\n", + " )\n", + " == round(sm.WLS(y, x, weights=(1 / x)).fit().params[0], 10)\n", + ")\n", + "\n", + "print(\"Regression average:\")\n", + "print(\n", + " round(\n", + " cl.Development(average=\"regression\")\n", + " .fit(clrd_first_lags)\n", + " .ldf_.to_frame()\n", + " .values[0, 0],\n", + " 10,\n", + " )\n", + " == round(sm.OLS(y, x, weights=1).fit().params[0], 10)\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This regression framework is what the `Development` estimator uses to set development patterns. Although we discard the information in deterministic approaches, `Development` has two useful statistics for estimating reserve variability, both of which come from the regression framework. The stastics are `std_err_` and `sigma_` and they are used by the `MackChainladder` estimator to determine the prediction error of our reserves." + "The regression framework is what the `Development` estimator uses to set development patterns. Although we discard the information in the deterministic methods, in the stochastic methods, `Development` has two useful statistics for estimating reserve variability, both of which come from the regression framework. The stastics are `sigma_` and `std_err_` , and they are used by the `MackChainladder` estimator to determine the prediction error of our reserves." ] }, { @@ -416,7 +462,7 @@ "metadata": {}, "outputs": [], "source": [ - "dev = cl.Development(average='simple').fit(tri['CumPaidLoss'])" + "dev = cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"])" ] }, { @@ -445,22 +491,22 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", "
 
20013.14321.54281.278320013.14321.54281.27831.20921.04411.04041.06301.01771.20921.04411.04041.06301.0177
20023.51061.75551.54531.13291.08451.12811.05731.086520023.51061.75551.54531.13291.08451.12811.05731.0865
20034.44851.71671.45831.23211.03691.12001.060620034.44851.71671.45831.23211.03691.12001.0606
200420041.54711.54711.07251.08741.04711.07251.08741.0471
20052.56421.87301.36151.17421.138320052.56421.87301.36151.17421.1383
20063.36561.63571.36921.236420063.36561.63571.36921.2364
20072.92281.87811.439420072.92281.87811.4394
20083.953320083.9533
20093.619220093.6192Method: Least Squares F-statistic: 2887.
Date: Sun, 15 Aug 2021 Prob (F-statistic): 1.60e-11Date: Fri, 10 Sep 2021 Prob (F-statistic): 1.60e-11
Time: 09:39:58 Log-Likelihood: -107.89Time: 23:27:45 Log-Likelihood: -107.89
No. Observations: 9 AIC: 217.8
(All)0.04110.01200.00510.00370.00330.00330.00420.00680.12320.03400.01350.00910.00740.00670.00730.00970.0032
" ], "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 0.041066 0.012024 0.005101 0.003734 0.003303 0.003337 0.00419 0.006831 0.003222" + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 0.123197 0.034009 0.013495 0.009146 0.007386 0.006673 0.007257 0.00966 0.003222" ] }, "execution_count": 10, @@ -469,7 +515,7 @@ } ], "source": [ - "dev.std_err_" + "dev.sigma_" ] }, { @@ -498,22 +544,22 @@ " \n", " \n", " (All)\n", - " 0.1232\n", - " 0.0340\n", - " 0.0135\n", - " 0.0091\n", - " 0.0074\n", - " 0.0067\n", - " 0.0073\n", - " 0.0097\n", + " 0.0411\n", + " 0.0120\n", + " 0.0051\n", + " 0.0037\n", + " 0.0033\n", + " 0.0033\n", + " 0.0042\n", + " 0.0068\n", " 0.0032\n", " \n", " \n", "" ], "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 0.123197 0.034009 0.013495 0.009146 0.007386 0.006673 0.007257 0.00966 0.003222" + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 0.041066 0.012024 0.005101 0.003734 0.003303 0.003337 0.00419 0.006831 0.003222" ] }, "execution_count": 11, @@ -522,16 +568,14 @@ } ], "source": [ - "dev.sigma_" + "dev.std_err_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Since the regression framework is weighted, we can easily turn on/off any observation we want using the dropping capabilities of the `Development` estimator. Dropping link ratios not only affects the `ldf_` and `cdf_`, but also the `std_err_` and `sigma` of the regression.\n", - "\n", - "Here we eliminate the 1988 valuation from our triangle, which is identical to eliminating the first observation from our 12-24 regression fit." + "Remember that `std_err_` is calculated as $\\frac{\\sigma}{\\sqrt{N}}$." ] }, { @@ -540,32 +584,252 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Does this work for dropping observations?\n", - "True\n" - ] + "data": { + "text/plain": [ + "array([0.0411, 0.012 , 0.0051, 0.0037, 0.0033, 0.0033, 0.0042, 0.0068,\n", + " 0.0032])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print('Does this work for dropping observations?')\n", - "print(round(cl.Development(average='volume', drop_valuation='1988') \\\n", - " .fit(tri['CumPaidLoss']).std_err_.to_frame().values[0, 0], 8) == \\\n", - " round(sm.WLS(y[1:], X[1:], weights=(1/X[1:])).fit().bse[0],8))" + "np.round(\n", + " dev.sigma_.to_frame().transpose()[\"(All)\"].values\n", + " / np.sqrt(clrd[\"CumPaidLoss\"].age_to_age.to_frame().count()).values,\n", + " 4,\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "With `sigma_` and `std_err_` in hand, Mack goes on to develop recursive formulas to estimate `parameter_risk_` and `process_risk_`." + "Since the regression framework uses the weighting method, we can easily turn \"on and off\" any observation we want using the dropping capabilities such as `drop_valuation` in the `Development` estimator. Dropping link ratios not only affects the `ldf_` and `cdf_`, but also the `std_err_` and `sigma` of the estimates.\n", + "\n", + "Can we eliminate the 1988 valuation from our triangle, which is identical to eliminating the first observation from our 12-24 regression fit? Let's calculate the `std_err` for the `ldf_` of ages 12-24, and compare it to the value calculated using the weighted least squares regression." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
1224364860728496108120
1988285,804638,532865,100996,3631,084,3511,133,1881,169,7491,196,9171,229,2031,241,715
1989307,720684,140916,9961,065,6741,154,0721,210,4791,249,8861,291,5121,308,706
1990320,124757,4791,017,1441,169,0141,258,9751,315,3681,368,3741,394,675
1991347,417793,7491,053,4141,209,5561,307,1641,381,6451,414,747
1992342,982781,4021,014,9821,172,9151,281,8641,328,801
1993342,385743,433959,1471,113,3141,187,581
1994351,060750,392993,7511,114,842
1995343,841768,575962,081
1996381,484736,040
1997340,132
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1988 285804.0 638532.0 865100.0 996363.0 1084351.0 1133188.0 1169749.0 1196917.0 1229203.0 1241715.0\n", + "1989 307720.0 684140.0 916996.0 1065674.0 1154072.0 1210479.0 1249886.0 1291512.0 1308706.0 NaN\n", + "1990 320124.0 757479.0 1017144.0 1169014.0 1258975.0 1315368.0 1368374.0 1394675.0 NaN NaN\n", + "1991 347417.0 793749.0 1053414.0 1209556.0 1307164.0 1381645.0 1414747.0 NaN NaN NaN\n", + "1992 342982.0 781402.0 1014982.0 1172915.0 1281864.0 1328801.0 NaN NaN NaN NaN\n", + "1993 342385.0 743433.0 959147.0 1113314.0 1187581.0 NaN NaN NaN NaN NaN\n", + "1994 351060.0 750392.0 993751.0 1114842.0 NaN NaN NaN NaN NaN NaN\n", + "1995 343841.0 768575.0 962081.0 NaN NaN NaN NaN NaN NaN NaN\n", + "1996 381484.0 736040.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "1997 340132.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clrd[\"CumPaidLoss\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "round(\n", + " cl.Development(average=\"volume\", drop_valuation=\"1988\")\n", + " .fit(clrd[\"CumPaidLoss\"])\n", + " .std_err_.to_frame()\n", + " .values[0, 0],\n", + " 8,\n", + ") == round(sm.WLS(y[1:], x[1:], weights=(1 / x[1:])).fit().bse[0], 8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With `sigma_` and `std_err_` in hand, Mack goes on to develop recursive formulas to estimate `parameter_risk_` and `process_risk_`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { @@ -745,7 +1009,7 @@ "1997 0.0 14499.310582 21075.422823 24748.584403 27093.408297 28657.082880 29907.337622 31164.059421 33102.891878 33896.767821 33947.259341" ] }, - "execution_count": 13, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -754,87 +1018,758 @@ "mack.parameter_risk_" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Assumption of Independence\n", - "The Mack model makes a lot of assumptions about independence (i.e. covariance between random processes is 0). This means many of the Variance estimates in the `MackChainladder` model follow the form of $Var(A+B) = Var(A)+Var(B)$.\n", - "\n", - "Notice the square of `mack_std_err_` is simply the sum of the sqaures of `parameter_risk_` and `process_risk_`." - ] - }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Parameter risk and process risk are independent?\n", - "True\n" - ] - } - ], - "source": [ - "print('Parameter risk and process risk are independent?')\n", - "print(round(mack.mack_std_err_**2, 4) == round(mack.parameter_risk_**2 + mack.process_risk_**2, 4))" - ] - }, + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12243648607284961081209999
198800000000001,786
19890000000005,0895,413
19900000000012,71613,89814,030
199100000009,79116,36617,39617,506
19920000008,93513,29818,62619,55519,650
1993000009,13812,79216,09020,53621,37521,457
1994000010,22514,11616,97319,77323,69524,49224,564
199500013,10217,44920,43422,80425,18028,51429,26429,324
19960025,02031,62635,69238,46840,64642,71145,29846,05246,091
1997043,22462,19572,72579,31383,51886,64989,32791,96293,04593,064
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120 9999\n", + "1988 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1786.361888\n", + "1989 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5089.178360 5412.690643\n", + "1990 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 12715.830121 13897.867439 14030.088287\n", + "1991 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 9791.406888 16366.403244 17395.742449 17505.761711\n", + "1992 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 8935.018632 13297.970777 18626.292883 19555.442335 19650.390741\n", + "1993 0.0 0.000000 0.000000 0.000000 0.000000 9138.261738 12791.894216 16089.736384 20536.049213 21375.214311 21456.500712\n", + "1994 0.0 0.000000 0.000000 0.000000 10224.862489 14116.221900 16973.053193 19773.012411 23694.524776 24492.049755 24564.094599\n", + "1995 0.0 0.000000 0.000000 13102.112109 17448.727071 20433.824628 22804.105513 25179.674557 28513.597608 29264.184137 29324.035626\n", + "1996 0.0 0.000000 25019.931172 31625.831305 35691.638815 38467.636171 40646.204205 42710.593579 45298.452925 46052.488614 46090.778483\n", + "1997 0.0 43224.455819 62195.286837 72725.026610 79312.695910 83518.132020 86648.812027 89327.026162 91961.614291 93044.819214 93064.102475" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mack.process_risk_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Assumption of Independence\n", + "The Mack model makes a lot of assumptions about independence (i.e. the covariance between random processes is 0). This means that many of the Variance estimates in the `MackChainladder` model follow the form of $Var(A+B) = Var(A)+Var(B)$. \n", + "\n", + "First, `mack_std_err_`2 $=$ `parameter_risk_`2 $+$ `process_risk_`2, the parameter risk and process risk is assumed to be independent. " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12243648607284961081209999
19885,899,487
198953,474,62959,942,191
1990252,315,077318,202,202325,521,571
1991131,677,828403,094,112475,836,802483,598,214
1992100,880,179232,603,431497,040,939568,692,440576,100,599
199399,801,841199,401,152325,904,005572,006,803639,209,994645,915,677
1994121,874,576235,033,680345,157,930481,280,614738,380,263810,270,433817,126,887
1995195,879,863349,828,815483,758,514609,246,045757,631,4821,023,325,7661,100,370,4991,107,147,524
1996703,858,0581,127,626,9041,440,168,3521,678,591,8281,882,843,8002,096,883,9252,418,319,3742,524,434,5102,531,273,439
19972,078,583,5884,312,427,1525,901,421,9257,024,556,5067,796,506,7758,402,465,4698,950,516,2039,552,739,9549,806,329,2519,813,343,586
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120 9999\n", + "1988 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.899487e+06\n", + "1989 NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.347463e+07 5.994219e+07\n", + "1990 NaN NaN NaN NaN NaN NaN NaN NaN 2.523151e+08 3.182022e+08 3.255216e+08\n", + "1991 NaN NaN NaN NaN NaN NaN NaN 1.316778e+08 4.030941e+08 4.758368e+08 4.835982e+08\n", + "1992 NaN NaN NaN NaN NaN NaN 1.008802e+08 2.326034e+08 4.970409e+08 5.686924e+08 5.761006e+08\n", + "1993 NaN NaN NaN NaN NaN 9.980184e+07 1.994012e+08 3.259040e+08 5.720068e+08 6.392100e+08 6.459157e+08\n", + "1994 NaN NaN NaN NaN 1.218746e+08 2.350337e+08 3.451579e+08 4.812806e+08 7.383803e+08 8.102704e+08 8.171269e+08\n", + "1995 NaN NaN NaN 1.958799e+08 3.498288e+08 4.837585e+08 6.092460e+08 7.576315e+08 1.023326e+09 1.100370e+09 1.107148e+09\n", + "1996 NaN NaN 7.038581e+08 1.127627e+09 1.440168e+09 1.678592e+09 1.882844e+09 2.096884e+09 2.418319e+09 2.524435e+09 2.531273e+09\n", + "1997 NaN 2.078584e+09 4.312427e+09 5.901422e+09 7.024557e+09 7.796507e+09 8.402465e+09 8.950516e+09 9.552740e+09 9.806329e+09 9.813344e+09" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mack.parameter_risk_ ** 2 + mack.process_risk_ ** 2" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12243648607284961081209999
198800000000005,899,487
198900000000053,474,62959,942,191
199000000000252,315,077318,202,202325,521,571
19910000000131,677,828403,094,112475,836,802483,598,214
1992000000100,880,179232,603,431497,040,939568,692,440576,100,599
19930000099,801,841199,401,152325,904,005572,006,803639,209,994645,915,677
19940000121,874,576235,033,680345,157,930481,280,614738,380,263810,270,433817,126,887
1995000195,879,863349,828,815483,758,514609,246,045757,631,4821,023,325,7661,100,370,4991,107,147,524
199600703,858,0581,127,626,9041,440,168,3521,678,591,8281,882,843,8002,096,883,9252,418,319,3742,524,434,5102,531,273,439
199702,078,583,5884,312,427,1525,901,421,9257,024,556,5067,796,506,7758,402,465,4698,950,516,2039,552,739,9549,806,329,2519,813,343,586
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120 9999\n", + "1988 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.899487e+06\n", + "1989 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.347463e+07 5.994219e+07\n", + "1990 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.523151e+08 3.182022e+08 3.255216e+08\n", + "1991 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.316778e+08 4.030941e+08 4.758368e+08 4.835982e+08\n", + "1992 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.008802e+08 2.326034e+08 4.970409e+08 5.686924e+08 5.761006e+08\n", + "1993 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 9.980184e+07 1.994012e+08 3.259040e+08 5.720068e+08 6.392100e+08 6.459157e+08\n", + "1994 0.0 0.000000e+00 0.000000e+00 0.000000e+00 1.218746e+08 2.350337e+08 3.451579e+08 4.812806e+08 7.383803e+08 8.102704e+08 8.171269e+08\n", + "1995 0.0 0.000000e+00 0.000000e+00 1.958799e+08 3.498288e+08 4.837585e+08 6.092460e+08 7.576315e+08 1.023326e+09 1.100370e+09 1.107148e+09\n", + "1996 0.0 0.000000e+00 7.038581e+08 1.127627e+09 1.440168e+09 1.678592e+09 1.882844e+09 2.096884e+09 2.418319e+09 2.524435e+09 2.531273e+09\n", + "1997 0.0 2.078584e+09 4.312427e+09 5.901422e+09 7.024557e+09 7.796507e+09 8.402465e+09 8.950516e+09 9.552740e+09 9.806329e+09 9.813344e+09" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mack.mack_std_err_ ** 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Second, `total_process_risk_` 2 $= \\sum_{origin} $ `process_risk_` 2, the process risk is assumed to be independent between origins." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12243648607284961081209999
198801,868,353,5814,494,250,6616,460,788,0437,973,402,7039,155,354,14610,211,709,42011,360,087,73013,081,563,68813,595,400,48713,630,883,498
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120 9999\n", + "1988 0.0 1.868354e+09 4.494251e+09 6.460788e+09 7.973403e+09 9.155354e+09 1.021171e+10 1.136009e+10 1.308156e+10 1.359540e+10 1.363088e+10" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mack.total_process_risk_ ** 2" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12243648607284961081209999
19881,868,353,5814,494,250,6616,460,788,0437,973,402,7039,155,354,14610,211,709,42011,360,087,73013,081,563,68813,595,400,48713,630,883,498
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120 9999\n", + "1988 NaN 1.868354e+09 4.494251e+09 6.460788e+09 7.973403e+09 9.155354e+09 1.021171e+10 1.136009e+10 1.308156e+10 1.359540e+10 1.363088e+10" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(mack.process_risk_ ** 2).sum(axis=\"origin\")" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This independence assumption applies to variance of each origin period." + "Lastly, independence is also assumed to apply to the overall standard error of reserves, as expected." ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 21, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total Parameter and process risk across origin periods is independent?\n", - "True\n" - ] + "data": { + "text/plain": [ + "106186322665.56236" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print('Total Parameter and process risk across origin periods is independent?')\n", - "print(round(mack.total_process_risk_**2, 4) == round((mack.process_risk_**2).sum('origin'), 4))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Independence is also assumed to apply to the overall standard error of reserves, `total_mack_std_err_`." + "(mack.parameter_risk_ ** 2 + mack.process_risk_ ** 2).sum(axis=2).sum(axis=3)" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "True" + "106186322665.56236" ] }, - "execution_count": 16, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(mack.total_process_risk_**2 + mack.total_parameter_risk_**2).to_frame().values[0, -1] == \\\n", - "(mack.total_mack_std_err_**2).values[0,0]" + "(mack.mack_std_err_ ** 2).sum(axis=2).sum(axis=3)" ] }, { @@ -849,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -920,25 +1855,27 @@ "1997 99062.321728" ] }, - "execution_count": 17, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "mack.mack_std_err_[mack.mack_std_err_.development==mack.mack_std_err_.development.max()]" + "mack.mack_std_err_[\n", + " mack.mack_std_err_.development == mack.mack_std_err_.development.max()\n", + "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "These are probably easier to see in the `summary_` of the `MackChainladder` model." + "With the `summary_` method, we can more easily look at the result of the `MackChainladder` model." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1042,7 +1979,7 @@ "1997 340132.0 1.056335e+06 1.396467e+06 99062.321728" ] }, - "execution_count": 18, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1051,14 +1988,31 @@ "mack.summary_" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualize the paid to date, the estimated reserves, and their standard errors with a histogram." + ] + }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "text/plain": [ + "(0.0, 1800000.0)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", "text/plain": [ "
" ] @@ -1070,24 +2024,69 @@ } ], "source": [ - "plot_data = mack.summary_.to_frame()\n", - "g = plot_data[['Latest', 'IBNR']] \\\n", - " .plot(kind='bar', stacked=True,\n", - " yerr=pd.DataFrame({'latest': plot_data['Mack Std Err']*0,\n", - " 'IBNR': plot_data['Mack Std Err']}),\n", - " ylim=(0, None), title='Mack Chainladder Ultimate')\n", - "g.set_xlabel('Accident Year')\n", - "g.set_ylabel('Loss');" + "plt.bar(\n", + " mack.summary_.to_frame().index.year,\n", + " mack.summary_.to_frame()[\"Latest\"],\n", + " label=\"Paid\",\n", + ")\n", + "plt.bar(\n", + " mack.summary_.to_frame().index.year,\n", + " mack.summary_.to_frame()[\"IBNR\"],\n", + " bottom=mack.summary_.to_frame()[\"Latest\"],\n", + " yerr=mack.summary_.to_frame()[\"Mack Std Err\"],\n", + " label=\"Reserves\",\n", + ")\n", + "plt.legend(loc=\"upper left\")\n", + "plt.ylim(0, 1800000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also simulate the (assumed) normally distributed IBNR with `np.random.normal()`." ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "text/plain": [ + "(array([ 1., 2., 8., 7., 13., 17., 30., 29., 41., 72., 66.,\n", + " 94., 142., 185., 195., 274., 312., 351., 392., 419., 509., 491.,\n", + " 546., 540., 577., 537., 534., 524., 483., 448., 401., 348., 300.,\n", + " 268., 210., 163., 118., 94., 68., 59., 41., 25., 19., 18.,\n", + " 7., 5., 3., 5., 5., 4.]),\n", + " array([2205914.99241981, 2229332.0230648 , 2252749.05370978,\n", + " 2276166.08435476, 2299583.11499975, 2323000.14564473,\n", + " 2346417.17628971, 2369834.2069347 , 2393251.23757968,\n", + " 2416668.26822466, 2440085.29886965, 2463502.32951463,\n", + " 2486919.36015961, 2510336.3908046 , 2533753.42144958,\n", + " 2557170.45209456, 2580587.48273955, 2604004.51338453,\n", + " 2627421.54402951, 2650838.5746745 , 2674255.60531948,\n", + " 2697672.63596446, 2721089.66660945, 2744506.69725443,\n", + " 2767923.72789941, 2791340.7585444 , 2814757.78918938,\n", + " 2838174.81983436, 2861591.85047935, 2885008.88112433,\n", + " 2908425.91176931, 2931842.9424143 , 2955259.97305928,\n", + " 2978677.00370426, 3002094.03434925, 3025511.06499423,\n", + " 3048928.09563921, 3072345.1262842 , 3095762.15692918,\n", + " 3119179.18757416, 3142596.21821915, 3166013.24886413,\n", + " 3189430.27950911, 3212847.3101541 , 3236264.34079908,\n", + " 3259681.37144406, 3283098.40208905, 3306515.43273403,\n", + " 3329932.46337901, 3353349.494024 , 3376766.52466898]),\n", + " )" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", "text/plain": [ "
" ] @@ -1099,11 +2098,14 @@ } ], "source": [ - "dist = pd.Series(np.random.normal(mack.ibnr_.sum(),\n", - " mack.total_mack_std_err_.values[0, 0], size=10000))\n", - "dist.plot(\n", - " kind='hist', bins=50,\n", - " title=\"Normally distributed IBNR estimate with a mean of \" + '{:,}'.format(round(mack.ibnr_.sum(),0))[:-2]);" + "ibnr_mean = mack.ibnr_.sum()\n", + "ibnr_sd = mack.total_mack_std_err_.values[0, 0]\n", + "n_trials = 10000\n", + "\n", + "np.random.seed(2021)\n", + "dist = np.random.normal(ibnr_mean, ibnr_sd, size=n_trials)\n", + "\n", + "plt.hist(dist, bins=50)" ] }, { @@ -1111,21 +2113,69 @@ "metadata": {}, "source": [ "### ODP Bootstrap Model\n", + "The `MackChainladder` focuses on a regression framework for determining the variability of reserve estimates. An alternative approach is to use the statistical bootstrapping, or sampling from a triangle with replacement to simulate new triangles.\n", "\n", - "The `MackChainladder` focused on a regression framework for determining the variability of reserve estimates. An alternative approach is to use statistical bootstrapping or sampling from a triangle with replacement to simulate new triangles.\n", - "\n", - "Bootstrapping imposes less model constraints than the `MackChainladder` which allows for greater applicability in different scenarios. Sampling new triangles can be accomplished through the `BootstrapODPSample` estimator. This estimator will take a single triangle and simulate new ones from it.\n", - "\n", - "Notice how easy it is to simulate 10,000 new triangles from an existing triangle by accessing the `resampled_triangles_` attribute." + "Bootstrapping imposes less model constraints than the `MackChainladder`, which allows for greater applicability in different scenarios. Sampling new triangles can be accomplished through the `BootstrapODPSample` estimator. This estimator will take a single triangle and simulate new ones from it. To simulate new triangles randomly from an existing triangle, we specify `n_sims` with how many triangles we want to simulate, and access the `resampled_triangles_` attribute to get the simulated triangles. Notice that the shape of `resampled_triangles_` matches `n_sims` at the first index." ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(10000, 1, 10, 10)
Index:[LOB]
Columns:[CumPaidLoss]
" + ], + "text/plain": [ + " Triangle Summary\n", + "Valuation: 1997-12\n", + "Grain: OYDY\n", + "Shape: (10000, 1, 10, 10)\n", + "Index: [LOB]\n", + "Columns: [CumPaidLoss]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "samples = cl.BootstrapODPSample(n_sims=10000).fit(tri['CumPaidLoss']).resampled_triangles_" + "samples = (\n", + " cl.BootstrapODPSample(n_sims=10000).fit(clrd[\"CumPaidLoss\"]).resampled_triangles_\n", + ")\n", + "samples" ] }, { @@ -1135,15 +2185,6 @@ "Alternatively, we could use `BootstrapODPSample` to transform our triangle into a resampled set." ] }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "samples = cl.BootstrapODPSample(n_sims=10000).fit_transform(tri['CumPaidLoss'])" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -1155,34 +2196,76 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Percentage difference in estimate using original triangle and BootstrapODPSample is 0\n" + "Chainladder's IBNR estimate: 2777812.6890986315\n", + "BootstrapODPSample's mean IBNR estimate: 2781565.8361817487\n", + "Difference $: -3753.147083117161\n", + "Difference %: 0.0013511159689946605\n" ] } ], "source": [ - "difference = round(1 - cl.Chainladder().fit(samples).ibnr_.sum('origin').mean() / \\\n", - " cl.Chainladder().fit(tri['CumPaidLoss']).ibnr_.sum())\n", - "print(\"Percentage difference in estimate using original triangle and BootstrapODPSample is \" +str(difference))" + "ibnr_cl = cl.Chainladder().fit(clrd[\"CumPaidLoss\"]).ibnr_.sum()\n", + "ibnr_bootstrap = cl.Chainladder().fit(samples).ibnr_.sum(\"origin\").mean()\n", + "\n", + "print(\n", + " \"Chainladder's IBNR estimate:\", ibnr_cl,\n", + ")\n", + "print(\n", + " \"BootstrapODPSample's mean IBNR estimate:\", ibnr_bootstrap,\n", + ")\n", + "print(\"Difference $:\", ibnr_cl - ibnr_bootstrap)\n", + "print(\"Difference %:\", abs(ibnr_cl - ibnr_bootstrap) / ibnr_cl)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Using deterministic methods with Bootstrap samples\n", + "### Using Deterministic Methods with Bootstrapped Samples\n", "Our `samples` is just another triangle object with all the functionality of a regular triangle. This means we can apply any functionality we want to our `samples` including any deterministic methods we learned about previously." ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Pipeline(steps=[('dev', Development(average='simple')),\n", + " ('tail', TailConstant(tail=1.05))])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pipe = cl.Pipeline(\n", + " [(\"dev\", cl.Development(average=\"simple\")), (\"tail\", cl.TailConstant(1.05))]\n", + ")\n", + "pipe.fit(samples)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now instead of a single `ldf_` (and `cdf_`) array across developmental ages, we have 10,000 arrays of `ldf_` (and `cdf_`)." + ] + }, + { + "cell_type": "code", + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1192,196 +2275,350 @@ " \n", " \n", " \n", - " Triangle Summary\n", + " 12-24\n", + " 24-36\n", + " 36-48\n", + " 48-60\n", + " 60-72\n", + " 72-84\n", + " 84-96\n", + " 96-108\n", + " 108-120\n", " \n", " \n", " \n", " \n", - " Valuation:\n", - " 1997-12\n", + " (All)\n", + " 2.2103\n", + " 1.3282\n", + " 1.1569\n", + " 1.0835\n", + " 1.0501\n", + " 1.0263\n", + " 1.0200\n", + " 1.0218\n", + " 1.0136\n", " \n", - " \n", - " Grain:\n", - " OYDY\n", + " \n", + "" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 2.210262 1.328198 1.156936 1.083481 1.050097 1.026309 1.019968 1.021753 1.013629" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pipe.named_steps.dev.ldf_.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
Shape:(10000, 1, 10, 10)(All)2.24501.31991.15131.07841.03841.02911.03431.02041.0104
Index:[LOB]
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 2.244998 1.319929 1.151285 1.078419 1.038406 1.029083 1.034327 1.020422 1.010429" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pipe.named_steps.dev.ldf_.iloc[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
Columns:[CumPaidLoss](All)2.23941.30951.15081.08471.04941.02691.02761.01861.0044
" ], "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (10000, 1, 10, 10)\n", - "Index: [LOB]\n", - "Columns: [CumPaidLoss]" + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 2.239391 1.309469 1.150834 1.084685 1.049395 1.026938 1.027573 1.018562 1.004405" ] }, - "execution_count": 24, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "samples" + "pipe.named_steps.dev.ldf_.iloc[9999]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This allows us to look at the varibility of any fitted property used. Let's look at the distribution of the age-to-age factor between age 12 and 24, and compare it against the LDF calculated from the non-bootstrapped triangle." ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Pipeline(steps=[('dev', Development(average='simple')),\n", - " ('tail', TailConstant(tail=1.05))])" + "" ] }, - "execution_count": 25, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAU+ElEQVR4nO3df5BV5X3H8fdHxF/4E1mQ8CNopP5KIjpbdLS1JtBIY1pMWjIkbUISOvyjqc4kreBkJkk7mP2jzZgmtR3GpKHTGLptJFKTmiAN0QQFV4MxCMSNom4gsOIPEBUEv/1jD/VmuZe9u3vPPvee83nNMPfe5zzn7mcfmO99eO65z1VEYGZmxXJM6gBmZtZ4Lu5mZgXk4m5mVkAu7mZmBeTibmZWQMemDgAwbty4mDZtWuoYVhJbt24F4LzzzkucxGx4Hnnkkecjoq3asaYo7tOmTaOrqyt1DCuJq6++GoC1a9cmzWE2XJKeqXXMyzJmZgXUFDN3s5H0uc99LnUEs9y5uFvpzJ49O3UEs9x5WcZKZ+PGjWzcuDF1DLNceeZupXPTTTcBfkPVis0zdzOzAnJxNzMrIBd3M7MCcnE3Mysgv6FqpXPrrbdWbZ+2+HtV27d1XJtnHLNcuLhb6VxxxRWpI5jlzssyVjrr1q1j3bp1qWOY5cozdyudW265BfB17lZsnrmbmRWQi7uZWQG5uJuZFZCLu5lZAdX1hqqk04E7gHcCAXwK2Ar8BzAN2AZ8OCJezPovARYCh4C/iogfNDi32ZDddtttqSOY5a7emftXgHsj4nzgYmAzsBhYExHTgTXZYyRdCMwHLgLmALdLGtXo4GZDNWPGDGbMmJE6hlmuBpy5SzoVuAr4BEBEHAAOSJoLXJ11Ww6sBW4G5gIrImI/8LSkbmAm8GCDs5sNyYT5SwE4cdqMtEHMclTPssw5QC/wr5IuBh4BbgQmRMQOgIjYIWl81n8S8FDF+T1Z22+RtAhYBDB16tQh/wJm1dTaSgDg5XUrABd3K7Z6lmWOBS4F/jkiLgH2kS3B1KAqbXFEQ8SyiGiPiPa2tra6wpqZWX3qKe49QE9ErM8e/xd9xX6npIkA2e2uiv5TKs6fDGxvTFwzM6vHgMU9In4DPCfpvKxpFvAEsApYkLUtAO7O7q8C5ks6XtLZwHRgQ0NTm5nZUdW7t8yngW9JOg54CvgkfS8MnZIWAs8C8wAiYpOkTvpeAA4C10fEoYYnNzOzmuoq7hGxEWivcmhWjf5LgaVDj2WWnzOvuSF1BLPceVdIK53RZ05OHcEsd95+wErn1e71vNq9fuCOZi3MM3crnT0bVgJw0rmXJU5ilh/P3M3MCsjF3cysgFzczcwKyMXdzKyA/Iaqlc64D3wmdQSz3Lm4W+kce+rgNqqrtcPkto5rGxHHLBdelrHS2bf5fvZtvj91DLNceeZupbP3Z98HYMwFVyVOYpYfz9zNzArIxd3MrIBc3M3MCshr7tbSjvZdqWZl5uJupdN23ZLUEcxy5+JupTPqpNNSRzDLnYu7tYRGLr+88vh9AJz8rtkNe06zZuPibqWTd3H3J1qtGfhqGTOzAnJxNzMrIBd3M7MCcnE3Mysgv6FqpTN+3hdSRzDLXV0zd0nbJD0uaaOkrqxtrKTVkp7Mbs+o6L9EUrekrZKuySu82VAcM/oEjhl9QuoYZrkazLLMeyJiRkS0Z48XA2siYjqwJnuMpAuB+cBFwBzgdkmjGpjZbFj2Pvo99j7qbQus2Iaz5j4XWJ7dXw5cV9G+IiL2R8TTQDcwcxg/x6yh9m15gH1bHkgdwyxX9Rb3AH4o6RFJi7K2CRGxAyC7HZ+1TwKeqzi3J2v7LZIWSeqS1NXb2zu09GZmVlW9b6heGRHbJY0HVkvacpS+qtIWRzRELAOWAbS3tx9x3MzMhq6umXtEbM9udwEr6Vtm2SlpIkB2uyvr3gNMqTh9MrC9UYHNzGxgA87cJY0BjomIvdn99wF/C6wCFgAd2e3d2SmrgDslfRl4GzAd2JBDdiugVtqfvZWyWvnUsywzAVgp6XD/OyPiXkkPA52SFgLPAvMAImKTpE7gCeAgcH1EHMolvdkQnPXRjtQRzHI3YHGPiKeAi6u07wZm1ThnKbB02OnMzGxIvP2Alc7L6+/i5fV3pY5hlitvP2BJpFyvfu1XfW8BnXbZh5JlMMubZ+5mZgXk4m5mVkAu7mZmBeQ1dysdHXt86ghmuXNxt9KZ8OEvpo5gljsvy5iZFZCLu5XOSz/9Ni/99NupY5jlysXdSuf1Zx7j9WceSx3DLFcu7mZmBeTibmZWQC7uZmYF5EshrXRGnXhq6ghmuXNxt9Jp++AtqSOY5c7LMmZmBeTibqXz4o+/yYs//mbqGGa58rKMlc7+X29JHcEsdy7uZiOk1heUbOu4doSTWBl4WcbMrIBc3M3MCsjLMlY6x54yLnUEs9y5uFvpjPvjz6aOYJa7updlJI2S9DNJ92SPx0paLenJ7PaMir5LJHVL2irpmjyCm5lZbYOZud8IbAYOf3Z7MbAmIjokLc4e3yzpQmA+cBHwNuA+Sb8TEYcamNtaRK0rRFJ64b5lAIydvShxErP81DVzlzQZuBa4o6J5LrA8u78cuK6ifUVE7I+Ip4FuYGZD0po1wIFdT3Fg11OpY5jlqt5lmduAvwHerGibEBE7ALLb8Vn7JOC5in49WZuZmY2QAYu7pA8AuyLikTqfU1XaosrzLpLUJamrt7e3zqc2M7N61DNzvxL4E0nbgBXAeyX9O7BT0kSA7HZX1r8HmFJx/mRge/8njYhlEdEeEe1tbW3D+BXMzKy/AYt7RCyJiMkRMY2+N0r/NyL+AlgFLMi6LQDuzu6vAuZLOl7S2cB0YEPDk5sN0eixkxg91iuFVmzDuc69A+iUtBB4FpgHEBGbJHUCTwAHget9pYw1kzPnfDp1BLPcDaq4R8RaYG12fzcwq0a/pcDSYWYzM7Mh8t4yVjq77/0qu+/9auoYZrny9gNWOm+88OvUEcxy55m7mVkBubibmRWQi7uZWQF5zd1K57jx56SOYJY7F3crHe8GaWXgZRkzswLyzN1K5/n//nugeb6Rqdae99s6rh3hJFYkLu5WOgf3Pp86glnuvCxjZlZALu5mZgXk4m5mVkBec7fSOX7S+akjmOXOxd1K54w/+ETqCGa5c3G3hqh1OZ+ZpeE1dyud3pW30rvy1tQxzHLlmbuVzqHX9qSOYJY7z9zNzArIxd3MrIBc3M3MCshr7lY6J7z94tQR6jLYK5C80ZhVcnG30jn9yo+kjmCWOy/LmJkV0IDFXdIJkjZIekzSJklfzNrHSlot6cns9oyKc5ZI6pa0VdI1ef4CZoO1s/Pz7Oz8fOoYZrmqZ+a+H3hvRFwMzADmSLocWAysiYjpwJrsMZIuBOYDFwFzgNsljcohu9mQxMH9xMH9qWOY5WrANfeICOCV7OHo7E8Ac4Grs/blwFrg5qx9RUTsB56W1A3MBB5sZHBLw9sMmLWGutbcJY2StBHYBayOiPXAhIjYAZDdjs+6TwKeqzi9J2vr/5yLJHVJ6urt7R3Gr2BmZv3VVdwj4lBEzAAmAzMlvfMo3VXtKao857KIaI+I9ra2trrCmplZfQZ1KWREvCRpLX1r6TslTYyIHZIm0jerh76Z+pSK0yYD2xsR1qwRTnzHzNQRzHJXz9UybZJOz+6fCMwGtgCrgAVZtwXA3dn9VcB8ScdLOhuYDmxocG6zITvtsg9x2mUfSh3DLFf1zNwnAsuzK16OAToj4h5JDwKdkhYCzwLzACJik6RO4AngIHB9RBzKJ76ZmVVTz9UyPwcuqdK+G5hV45ylwNJhpzPLwW/uXAzAWR/tSJzELD/+hKqZWQG5uJuZFZCLu5lZAbm4m5kVkLf8tdIZc/7vp45gljsXdyudUy71l1pY8XlZxkrnzTde5803Xk8dwyxXnrlb6ez6zy8Avs7dis0zdzOzAnJxNzMrIBd3M7MCcnE3Mysgv6FqpXPyu2anjpCLWl+BuK3Dl36WkYu7lU5Ri7tZJS/LWOkcevVlDr36cuoYZrlycbfS6f3ul+j97pdSxzDLlYu7mVkBubibmRWQ31C1qmpdeWFmrcHF3azgjvZC7cski8vFveTKOEM/5ZL3p45gljsXdyudMRdclTqCWe78hqqVzsE9vRzc05s6hlmuXNytdJ6/5x94/p5/SB3DLFcDFndJUyT9SNJmSZsk3Zi1j5W0WtKT2e0ZFecskdQtaauka/L8BczM7Ej1zNwPAp+JiAuAy4HrJV0ILAbWRMR0YE32mOzYfOAiYA5wu6RReYQ3M7PqBizuEbEjIh7N7u8FNgOTgLnA8qzbcuC67P5cYEVE7I+Ip4FuYGaDc5uZ2VEMas1d0jTgEmA9MCEidkDfCwAwPus2CXiu4rSerK3/cy2S1CWpq7fXb26ZmTVS3ZdCSjoZ+A5wU0TskVSza5W2OKIhYhmwDKC9vf2I42Z5OXXmB1NHMMtdXcVd0mj6Cvu3IuKurHmnpIkRsUPSRGBX1t4DTKk4fTKwvVGBzYbrpHMvSx3BLHf1XC0j4OvA5oj4csWhVcCC7P4C4O6K9vmSjpd0NjAd2NC4yGbD88buHt7Y3ZM6hlmu6pm5Xwl8DHhc0sas7RagA+iUtBB4FpgHEBGbJHUCT9B3pc31EXGo0cHNhmr3D74GwFkf7UicxCw/Axb3iPgJ1dfRAWbVOGcpsHQYuczMbBj8CVUzswJycTczKyAXdzOzAvKWv1Y6p10xP3UEs9y5uFvpnDhtRuoIZrnzsoyVzoGdT3Fg51OpY5jlysXdSueFNct4Yc2y1DHMcuXibmZWQF5zNyuxWl+Qvq3j2hFOYo3mmbuZWQG5uJuZFZCXZax0Tr9qwcCdzFqci7uVzgmTL0gdwSx3Xpax0nm9ZzOv92xOHcMsVy7uVjov3b+cl+5fPnBHsxbmZZmSqHXJm5kVk4u7mR3B17+3Pi/LmJkVkIu7mVkBeVnGSmfsrEWpI5jlzsXdSue4CeekjmCWOy/LWOm8tm0jr23bmDqGWa48cy8YX/I4sJfXrQD8jUxWbAPO3CV9Q9IuSb+oaBsrabWkJ7PbMyqOLZHULWmrpGvyCm5mZrXVsyzzTWBOv7bFwJqImA6syR4j6UJgPnBRds7tkkY1LK2ZmdVlwOIeEfcDL/Rrngsc/vz2cuC6ivYVEbE/Ip4GuoGZjYlqZmb1Guqa+4SI2AEQETskjc/aJwEPVfTrydqOIGkRsAhg6tSpQ4xhZiPJn1xtHY1+Q1VV2qJax4hYBiwDaG9vr9rHLA9nXnND6ghmuRtqcd8paWI2a58I7Mrae4ApFf0mA9uHE9Cs0UafOTl1BLPcDfU691XA4a+zWQDcXdE+X9Lxks4GpgMbhhfRrLFe7V7Pq93rU8cwy9WAM3dJ3wauBsZJ6gE+D3QAnZIWAs8C8wAiYpOkTuAJ4CBwfUQcyim72ZDs2bASgJPOvSxxErP8DFjcI+IjNQ7NqtF/KbB0OKHMzGx4vP2AmVkBubibmRWQi7uZWQF54zArnXEf+EzqCGa5c3G30jn21LbUEcxy5+LeBAa7Ta8/6j08+zbfD8CYC65KnKQ4vC1B83Fxb0Hes3149v7s+4CLuxWbi7uZ5cYz+nR8tYyZWQG5uJuZFZCLu5lZAXnN3Uqn7bolqSOY5c7F3Upn1EmnpY5gljsvy1jpvPL4fbzy+H2pY5jlysXdSsfF3crAyzJmNuJ8/Xv+PHM3Mysgz9zNrGl4Rt84Lu4jyHvCmNlIcXG30hk/7wupI5jlzsU9B56hN7djRp+QOoJZ7lzcrXT2Ptr34nvKpV7HbRX+zoPB89UyVjr7tjzAvi0PpI5hlivP3M2scHzVTY7FXdIc4CvAKOCOiOjI62c1iv9BmFlR5FLcJY0C/gn4Q6AHeFjSqoh4Io+flze/QWpWDGWawOU1c58JdEfEUwCSVgBzgVyK+2D/wlyszaxSypqQ1wuLIqLxTyr9GTAnIv4ye/wx4LKIuKGizyJgUfbwPGBrHU89Dni+wXFHirOn4expOPvIeHtEtFU7kNfMXVXafutVJCKWAcsG9aRSV0S0DydYKs6ehrOn4ezp5XUpZA8wpeLxZGB7Tj/LzMz6yau4PwxMl3S2pOOA+cCqnH6WmZn1k8uyTEQclHQD8AP6LoX8RkRsasBTD2oZp8k4exrOnoazJ5bLG6pmZpaWtx8wMysgF3czswJqiuIuaYqkH0naLGmTpBur9JGkf5TULennki6tOLZN0uOSNkrqasLs50t6UNJ+SZ/td2yOpK3Z77V45JI3JHuzj/ufZ/9Wfi5pnaSLK441+7gfLXuzj/vcLPdGSV2Sfq/iWJJxb0DuZGM+ZBGR/A8wEbg0u38K8Evgwn593g/8D33X0F8OrK84tg0Y18TZxwO/CywFPlvRPgr4FXAOcBzwWP9zmzV7i4z7FcAZ2f0/OvxvpkXGvWr2Fhn3k3nr/bx3A1tSj/twcqce86H+aYqZe0TsiIhHs/t7gc3ApH7d5gL/Fn0eAk6XNHGEox6hnuwRsSsiHgbe6Hf6/2/TEBEHgMPbNIyIYWZPqs7s6yLixezhQ/R93gJaY9xrZU+qzuyvRFYRgTG89QHGZOM+zNwtqSmKeyVJ04BLgPX9Dk0Cnqt43MNbfzkB/FDSI9m2BkkcJXstR/udRtQQskNrjftC+v7nB6037pXZoQXGXdIHJW0Bvgd8KmtuinEfQm5okjEfjKbaz13SycB3gJsiYk//w1VOOfzKemVEbJc0HlgtaUtE3J9n1v4GyF7ztCptIz5bGGJ2aJFxl/Qe+grk4TXUlhn3KtmhBcY9IlYCKyVdBfwdMJsmGPch5oYmGPPBapqZu6TR9A36tyLiripdam5pEBGHb3cBK+n779+IqSN7Lcm3aRhG9pYYd0nvBu4A5kbE7qy5Jca9RvaWGPfDsgL4DknjSDzuw8idfMyHoimKuyQBXwc2R8SXa3RbBXxcfS4HXo6IHZLGSDole54xwPuAX4xIcOrOXkvSbRqGk70Vxl3SVOAu4GMR8cuKQ00/7rWyt8i4n5v1Q31XtR0H7CbhuA8nd+oxH6qm+IRqdsnRA8DjwJtZ8y3AVICI+Jds0L8GzAFeBT4ZEV2SzqHvlRT6lpnujIilTZb9LKALODXr8wp979TvkfR+4Dbe2qahJbLTty1qs4/7HcCfAs9kxw9GtttfC4x71ewt8u/9ZuDj9L0J/xrw1xHxk+z8JOM+nNypx3yomqK4m5lZYzXFsoyZmTWWi7uZWQG5uJuZFZCLu5lZAbm4m5kVkIu7mVkBubibmRXQ/wEy+npFUDlK7QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "pipe = cl.Pipeline([\n", - " ('dev', cl.Development(average='simple')),\n", - " ('tail', cl.TailConstant(1.05))])\n", - "pipe.fit(samples)" + "resampled_ldf = pipe.named_steps.dev.ldf_\n", + "plt.hist(pipe.named_steps.dev.ldf_.values[:, 0, 0, 0], bins=50)\n", + "\n", + "orig_dev = cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"])\n", + "plt.axvline(orig_dev.ldf_.values[0, 0, 0, 0], color=\"black\", linestyle=\"dashed\")" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ - "Now instead of a single `cdf_` vector, we have 10,000." + "### Bootstrap vs Mack\n", + "We can approximate some of the Mack's parameters calculated using the regression framework." ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ + "
\n", + "\n", "\n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Triangle SummaryStd_BootstrapStd_Mack
Valuation:2261-1212-240.0435390.041066
Grain:OYDY24-360.0120660.012024
Shape:(10000, 1, 1, 9)36-480.0073090.005101
Index:[LOB]48-600.0051820.003734
Columns:[CumPaidLoss]60-720.0040690.003303
72-840.0036920.003337
84-960.0037940.004190
96-1080.0041470.006831
108-1200.0041940.003222
" + "\n", + "
" ], "text/plain": [ - " Triangle Summary\n", - "Valuation: 2261-12\n", - "Grain: OYDY\n", - "Shape: (10000, 1, 1, 9)\n", - "Index: [LOB]\n", - "Columns: [CumPaidLoss]" + " Std_Bootstrap Std_Mack\n", + "12-24 0.043539 0.041066\n", + "24-36 0.012066 0.012024\n", + "36-48 0.007309 0.005101\n", + "48-60 0.005182 0.003734\n", + "60-72 0.004069 0.003303\n", + "72-84 0.003692 0.003337\n", + "84-96 0.003794 0.004190\n", + "96-108 0.004147 0.006831\n", + "108-120 0.004194 0.003222" ] }, - "execution_count": 26, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pipe.named_steps.dev.cdf_" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This allows us to look at the varibility of any fitted property used in our prior tutorials." + "bootstrap_vs_mack = resampled_ldf.std(\"index\").to_frame().T\n", + "bootstrap_vs_mack.rename(columns={\"(All)\": \"Std_Bootstrap\"}, inplace=True)\n", + "bootstrap_vs_mack = bootstrap_vs_mack.merge(\n", + " orig_dev.std_err_.to_frame().T, left_index=True, right_index=True\n", + ")\n", + "bootstrap_vs_mack.rename(columns={\"(All)\": \"Std_Mack\"}, inplace=True)\n", + "\n", + "bootstrap_vs_mack" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 35, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12-24 LDF of original Triangle: 2.2067\n" - ] - }, { "data": { - "image/png": "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\n", "text/plain": [ - "
" + "([,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " [Text(0, 0, '12-24'),\n", + " Text(1, 0, '24-36'),\n", + " Text(2, 0, '36-48'),\n", + " Text(3, 0, '48-60'),\n", + " Text(4, 0, '60-72'),\n", + " Text(5, 0, '72-84'),\n", + " Text(6, 0, '84-96'),\n", + " Text(7, 0, '96-108'),\n", + " Text(8, 0, '108-120')])" ] }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "orig_dev = cl.Development(average='simple').fit(tri['CumPaidLoss'])\n", - "resampled_ldf = pipe.named_steps.dev.ldf_\n", - "print(\"12-24 LDF of original Triangle: \" + str(round(orig_dev.ldf_.values[0,0,0,0],4)))\n", - "pd.Series(resampled_ldf.values[:, 0, 0, 0]).plot(\n", - " kind='hist', bins=100,\n", - " title='Age 12-14 LDF distribution using Bootstrap');" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Comparison between Bootstrap and Mack\n", - "We should even be able to approximate some of the Mack parameters calculated using the regression framework." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, { "data": { - "image/png": "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r2X+/PksXryYXr16cf755zN06FAymQyffPIJS5cu5aqrrlqrO4na5JLc2wLZ9zorzayFu1fWsuxroJ2ZnQp85u6Pm1lOyX358uUNjgbepUuXXDaVs3yOiF5eXl5wI7Arptwoptw1FFdFRcUa/aY3xcDVNftlz2Qya8xbvnw5L730Ev3796eiooJ33nmHcePGcemllzJ8+HA6d+7Ms88+yxVXXMHgwYOZOnUqd955Jy1atOCCCy7g8ccfZ9CgQdx3333069ePCy+8kP79+/ODH/yAKVOm8Nlnn62xfMaMGey3334MGDCA+fPns/vuu3PppZeyYsUKjj76aAYPHkxlZSXt27dnxIgRTJs2jauuuoobbrih1vOX6/eeS3JfDLTJmi6Kib22ZW2ARcC5QMbMjgC6AneZWT93/7SunZSUlDR68m5IPvdXVlaW9+NriGLKjWLKXUNxlZWVNUlCz1Zz+8uWLVtjXklJCT179mTs2LEAvP/++5x44olkMhn23XdfAA466CDGjRvH/Pnz2XfffWnbti0Qui748MMP2WeffVb1Q3PZZZdx2223MXnyZHbZZRf69OlDSUnJquUtWrTAzGjVqhXbbrst7s4ll1xCu3btWLFixap1Dj74YFq1akWPHj0YM2ZMreepuLj4W+d35syZtZ6HXOrcXwD6AJhZD2B21rIyoJOZbWFmmwC9gJfcvZe7H+ruvYHXgVPqS+wiIkn57ne/C4ReIt9+O7z3MWPGDDp06MAuu+zCrFmzqKysJJPJMGPGDDp27EhRUdGqbn4nTZrEr371K+6++24AnnzyyTWWw+rBre+//37atGnDqFGj+PnPf055eTmZTAaAf//73wC8+uqrdOrUab2PK5eS+wPAkWb2ItAMGGRm/YHW7n67mQ0BHif8UIx39/nrHZWIbBwqyhv3teQcX4WcPn06AwYMoKioiG+++YahQ4fSuXNnRo4cSSaToXnz5lx55ZXsuOOOHHPMMZx00klUVVWx//77c8QRR7BgwQLeeecdJkyYwN57782gQYPYbLPN+M53vkPv3r1ZsWLFquXZevbsyZAhQ3jllVdo3bo1O++8MwsWLADgueee4+mnn6aqqopRo0at96loMLm7exVwZo3Zb2ctnwJMqefzvdc1OBFJucZ+Jz2H7XXv3p2XXnqp1mV//vOfvzVv0KBBDBo0aI1522yz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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1393,36 +2630,48 @@ } ], "source": [ - "mack_vs_bs = resampled_ldf.std('index').to_frame().append(\n", - " orig_dev.std_err_.to_frame()).T\n", - "mack_vs_bs.columns = ['Mack', 'Bootstrap']\n", - "mack_vs_bs.plot(kind='bar', title='Mack Regression Framework LDF Std Err\\nvs\\nBootstrap Simulated LDF Std Err');" + "width = 0.3\n", + "ages = np.arange(len(bootstrap_vs_mack))\n", + "\n", + "plt.bar(\n", + " ages - width / 2,\n", + " bootstrap_vs_mack[\"Std_Bootstrap\"],\n", + " width=width,\n", + " label=\"Bootstrap\",\n", + ")\n", + "plt.bar(ages + width / 2, bootstrap_vs_mack[\"Std_Mack\"], width=width, label=\"Mack\")\n", + "plt.legend(loc=\"upper right\")\n", + "plt.xticks(ages, bootstrap_vs_mack.index)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "While the `MackChainladder` produces statistics about the mean and variance of reserve estimates, those have to be fit to a distribution using MLE, MoM, etc to see the range of outcomes of reserves. With `BootstrapODPSample` based fits, we can use the empirical distribution directly if we choose to." + "While the `MackChainladder` produces statistics about the mean and variance of reserve estimates, the variance or precentile of reserves would need to be fited using maximum likelihood estimation or method of moments. However, for `BootstrapODPSample` based fits, we can use the empirical distribution from the samples directly to get information about variance or the precentile of the IBNR reserves." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "99%-ile of reserve estimate is 3,148,326.0\n" + "Standard deviation of reserve estimate: 137,429.0\n", + "99th percentile of reserve estimate: 3,098,903.0\n" ] } ], "source": [ - "ibnr = cl.Chainladder().fit(samples).ibnr_.sum('origin')\n", + "ibnr = cl.Chainladder().fit(samples).ibnr_.sum(\"origin\")\n", + "\n", + "ibnr_std = ibnr.std()\n", + "print(\"Standard deviation of reserve estimate: \" + f\"{round(ibnr_std,0):,}\")\n", "ibnr_99 = ibnr.quantile(q=0.99)\n", - "print(\"99%-ile of reserve estimate is \" +'{:0,}'.format(round(ibnr_99,0)))" + "print(\"99th percentile of reserve estimate: \" + f\"{round(ibnr_99,0):,}\")" ] }, { @@ -1434,12 +2683,22 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", "text/plain": [ "
" ] @@ -1451,24 +2710,25 @@ } ], "source": [ - "ax = ibnr.plot(kind='hist', bins=50, alpha=0.7, color='green').plot()\n", - "dist.plot(kind='hist', bins=50, alpha=0.4, color='blue', title='Mack vs Bootstrap Variability');" + "plt.hist(ibnr.to_frame(), bins=50, label=\"Bootstrap\", alpha=0.3)\n", + "plt.hist(dist, bins=50, label=\"Mack\", alpha=0.3)\n", + "plt.legend(loc=\"upper right\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Expected loss methods with Bootstrap\n", + "### Bootstrapping with the Bornhuetter-Ferguson Method\n", "\n", - "So far, we've only applied the multiplicative methods (i.e. basic chainladder) in a stochastic context. It is possible to use an expected loss method like the `BornhuetterFerguson`. \n", + "So far, we've only applied the multiplicative methods (i.e. basic chainladder) in a stochastic context. It is possible to use an expected loss method like the `BornhuetterFerguson` method does. \n", "\n", "To do this, we will need an exposure vector." ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1539,150 +2799,365 @@ "1997 2207902.0" ] }, - "execution_count": 31, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "tri['EarnedPremNet'].latest_diagonal" + "clrd[\"EarnedPremNet\"].latest_diagonal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Passing an `apriori_sigma` to the `BornhuetterFerguson` estimator tells it to consider the apriori selection itself as a random variable. Fitting a stochastic `BornhuetterFerguson` looks very much like the determinsitic version." + "Passing an `apriori_sigma` to the `BornhuetterFerguson` estimator tells it to consider the `apriori` selection itself as a random variable. Fitting a stochastic `BornhuetterFerguson` looks very much like the determinsitic version. Let's assume that the `apriori` is 80% (of `clrd[\"EarnedPremNet\"]`) and its standard deviation is 10%." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 39, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(775, 6, 10, 1)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet]
" - ], "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (775, 6, 10, 1)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." + "BornhuetterFerguson(apriori=0.8, apriori_sigma=0.1)" ] }, - "execution_count": 2, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import chainladder as cl\n", - "import numpy as np\n", - "clrd = cl.load_sample('clrd')\n", - "np.prod(clrd, axis=3)" + "bf = cl.BornhuetterFerguson(apriori=0.80, apriori_sigma=0.10)\n", + "bf.fit(samples, sample_weight=clrd[\"EarnedPremNet\"].latest_diagonal)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's restate or sampled triangles so that the upper left portion of the triangle with known values. We will need to start with the `full_triangle_`, then take out the upper left (the simulated values) with `X_`, then add back the actual values from the raw triangle." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 40, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import numpy as np\n", - "\n", - "np.tan(cl.load_sample('raa')).T.plot()" + "restated_triangle = bf.full_triangle_ - bf.X_ + clrd[\"CumPaidLoss\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can use our knowledge of `Triangle` manipulation to grab most things we would want out of our model." + "We can also look at how a certain origin period developed with the sampled triangles. Let's take a look at origin year 1995." ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
development12243648607284961081201329999
LOB
0343841.0768575.0962081.01.184930e+061.315205e+061.400447e+061.447582e+061.485251e+061.526492e+061.552707e+061.552707e+061.552707e+06
1343841.0768575.0962081.01.082201e+061.191106e+061.248812e+061.293653e+061.349283e+061.383138e+061.400879e+061.400879e+061.400879e+06
2343841.0768575.0962081.01.211063e+061.328168e+061.406148e+061.465325e+061.505972e+061.540961e+061.565586e+061.565586e+061.565586e+06
3343841.0768575.0962081.01.184973e+061.330960e+061.403923e+061.455171e+061.492134e+061.512202e+061.532659e+061.532659e+061.532659e+06
4343841.0768575.0962081.01.186503e+061.335649e+061.418617e+061.473770e+061.510360e+061.550455e+061.557972e+061.557972e+061.557972e+06
.......................................
9995343841.0768575.0962081.01.212646e+061.366604e+061.445909e+061.506575e+061.557685e+061.583318e+061.611444e+061.611444e+061.611444e+06
9996343841.0768575.0962081.01.195146e+061.320163e+061.401087e+061.465300e+061.514647e+061.544027e+061.554032e+061.554032e+061.554032e+06
9997343841.0768575.0962081.01.129131e+061.280615e+061.361857e+061.437630e+061.492000e+061.543808e+061.570633e+061.570633e+061.570633e+06
9998343841.0768575.0962081.01.194892e+061.324839e+061.404544e+061.458666e+061.504585e+061.536639e+061.553463e+061.553463e+061.553463e+06
9999343841.0768575.0962081.01.250963e+061.425409e+061.536006e+061.598882e+061.665861e+061.711738e+061.722854e+061.722854e+061.722854e+06
\n", + "

10000 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + "development 12 24 36 48 60 \\\n", + "LOB \n", + "0 343841.0 768575.0 962081.0 1.184930e+06 1.315205e+06 \n", + "1 343841.0 768575.0 962081.0 1.082201e+06 1.191106e+06 \n", + "2 343841.0 768575.0 962081.0 1.211063e+06 1.328168e+06 \n", + "3 343841.0 768575.0 962081.0 1.184973e+06 1.330960e+06 \n", + "4 343841.0 768575.0 962081.0 1.186503e+06 1.335649e+06 \n", + "... ... ... ... ... ... \n", + "9995 343841.0 768575.0 962081.0 1.212646e+06 1.366604e+06 \n", + "9996 343841.0 768575.0 962081.0 1.195146e+06 1.320163e+06 \n", + "9997 343841.0 768575.0 962081.0 1.129131e+06 1.280615e+06 \n", + "9998 343841.0 768575.0 962081.0 1.194892e+06 1.324839e+06 \n", + "9999 343841.0 768575.0 962081.0 1.250963e+06 1.425409e+06 \n", + "\n", + "development 72 84 96 108 \\\n", + "LOB \n", + "0 1.400447e+06 1.447582e+06 1.485251e+06 1.526492e+06 \n", + "1 1.248812e+06 1.293653e+06 1.349283e+06 1.383138e+06 \n", + "2 1.406148e+06 1.465325e+06 1.505972e+06 1.540961e+06 \n", + "3 1.403923e+06 1.455171e+06 1.492134e+06 1.512202e+06 \n", + "4 1.418617e+06 1.473770e+06 1.510360e+06 1.550455e+06 \n", + "... ... ... ... ... \n", + "9995 1.445909e+06 1.506575e+06 1.557685e+06 1.583318e+06 \n", + "9996 1.401087e+06 1.465300e+06 1.514647e+06 1.544027e+06 \n", + "9997 1.361857e+06 1.437630e+06 1.492000e+06 1.543808e+06 \n", + "9998 1.404544e+06 1.458666e+06 1.504585e+06 1.536639e+06 \n", + "9999 1.536006e+06 1.598882e+06 1.665861e+06 1.711738e+06 \n", + "\n", + "development 120 132 9999 \n", + "LOB \n", + "0 1.552707e+06 1.552707e+06 1.552707e+06 \n", + "1 1.400879e+06 1.400879e+06 1.400879e+06 \n", + "2 1.565586e+06 1.565586e+06 1.565586e+06 \n", + "3 1.532659e+06 1.532659e+06 1.532659e+06 \n", + "4 1.557972e+06 1.557972e+06 1.557972e+06 \n", + "... ... ... ... \n", + "9995 1.611444e+06 1.611444e+06 1.611444e+06 \n", + "9996 1.554032e+06 1.554032e+06 1.554032e+06 \n", + "9997 1.570633e+06 1.570633e+06 1.570633e+06 \n", + "9998 1.553463e+06 1.553463e+06 1.553463e+06 \n", + "9999 1.722854e+06 1.722854e+06 1.722854e+06 \n", + "\n", + "[10000 rows x 12 columns]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Grab completed triangle replacing simulated known data with actual known data\n", - "full_triangle = bf.full_triangle_ - bf.X_ + tri['CumPaidLoss']\n", - "# Limiting to the current year for plotting\n", - "current_year = full_triangle[full_triangle.origin==full_triangle.origin.max()].to_frame().T" + "restated_triangle_1995_df = restated_triangle[\n", + " restated_triangle.origin == \"1995\"\n", + "].to_frame()\n", + "restated_triangle_1995_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, plotting the expected development of our full triangle over time from the Bootstrap `BornhuetterFerguson` model fans out to greater uncertainty the farther we get from our valuation date." + "For simplicity, let's only graph the first 1,000 simulations. As expected, plotting the expected development of our full triangle over time from the Bootstrap `BornhuetterFerguson` model fans out to greater uncertainty the farther we get from our valuation date. And notice that for 1997 and prior (age 36 and prior), there is no variability as we have restated the simulated triangles with actual data." ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 42, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1694,10 +3169,15 @@ } ], "source": [ - "# Plot the data\n", - "current_year.iloc[:, :200].reset_index(drop=True).plot(\n", - " color='green', legend=False, alpha=0.1,\n", - " title='Current Accident Year Expected Development Distribution', grid=True);" + "plt.plot(\n", + " restated_triangle_1995_df.T.reset_index(drop=True).iloc[:, 0:1000],\n", + " color=\"blue\",\n", + " alpha=0.01,\n", + ")\n", + "plt.xticks(\n", + " np.arange(0, 12, 1),\n", + " [\"12\", \"24\", \"36\", \"48\", \"60\", \"72\", \"84\", \"96\", \"108\", \"120\", \"132\", \"Ult\"],\n", + ")" ] }, { @@ -1705,24 +3185,17 @@ "metadata": {}, "source": [ "### Recap\n", - "- The Mack method approaches stochastic reserving from a regression point of view
\n", - "- Bootstrap methods approach stochastic reserving from a simulation point of view
\n", - "- Where they assumptions of each model are not violated, they produce resonably consistent estimates of reserve variability
\n", - "- Mack does impose more assumptions (i.e. constraints) on the reserve estimate making the Bootstrap approach more suitable in a broader set of applciations
\n", - "- Both methods converge to their corresponding deterministic point estimates
" + "- The Mack method approaches stochastic reserving from a regression point of view\n", + "- Bootstrap methods approach stochastic reserving from a simulation point of view\n", + "- When the assumptions of the model are not violated, they will both produce resonably consistent estimates of reserve variability\n", + "- Mack does impose more assumptions (i.e. constraints) on the reserve estimate making the Bootstrap approach more suitable in a broader set of applciations\n", + "- Both methods converge to their corresponding deterministic point estimates" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1736,7 +3209,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.7.7" } }, "nbformat": 4, diff --git a/docs/tutorials/tail-tutorial.ipynb b/docs/tutorials/tail-tutorial.ipynb index 880928c9..104614b4 100644 --- a/docs/tutorials/tail-tutorial.ipynb +++ b/docs/tutorials/tail-tutorial.ipynb @@ -23,7 +23,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "pandas: 1.3.1\n", + "pandas: 1.3.2\n", "numpy: 1.20.3\n", "chainladder: 0.8.8\n" ] @@ -1342,7 +1342,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/docs/tutorials/triangle-tutorial.ipynb b/docs/tutorials/triangle-tutorial.ipynb index a8bb7081..0bf32300 100644 --- a/docs/tutorials/triangle-tutorial.ipynb +++ b/docs/tutorials/triangle-tutorial.ipynb @@ -49,7 +49,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "pandas: 1.3.1\n", + "pandas: 1.3.2\n", "numpy: 1.20.3\n", "chainladder: 0.8.8\n" ] @@ -932,82 +932,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1990
198118.83
198216.70
198323.47
198427.07
198526.18
198615.85
198712.31
198813.11
19895.39
19902.06
" - ], - "text/plain": [ - " 1990\n", - "1981 18.834\n", - "1982 16.704\n", - "1983 23.466\n", - "1984 27.067\n", - "1985 26.180\n", - "1986 15.852\n", - "1987 12.314\n", - "1988 13.112\n", - "1989 5.395\n", - "1990 2.063" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "raa.latest_diagonal / 1000" ] @@ -1021,20 +948,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Timestamp('1990-12-31 23:59:59.999999999')" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "raa.valuation_date" ] @@ -1052,20 +968,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Is triangle cumulative? True\n", - "Does triangle contain ultimate projections? False\n", - "Is this a valuation triangle? False\n", - "Has the triangle been \"squared\"? False\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Is triangle cumulative?\", raa.is_cumulative)\n", "print(\"Does triangle contain ultimate projections?\", raa.is_ultimate)\n", @@ -1082,18 +987,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Origin grain: Y\n", - "Development grain: Y\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Origin grain:\", raa.origin_grain)\n", "print(\"Development grain:\", raa.development_grain)" @@ -1116,300 +1012,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GRCODEGRNAMEAccidentYearDevelopmentYearDevelopmentLagIncurLossCumPaidLossBulkLossEarnedPremDIREarnedPremCededEarnedPremNetSinglePostedReserve97LOB
086Allstate Ins Co Grp1988198813674047057112773740069959573947420281872wkcomp
186Allstate Ins Co Grp1988198923629881559056017340069959573947420281872wkcomp
286Allstate Ins Co Grp1988199033472882207442776340069959573947420281872wkcomp
386Allstate Ins Co Grp1988199143306482515951528040069959573947420281872wkcomp
486Allstate Ins Co Grp1988199253546902741562768940069959573947420281872wkcomp
.............................................
4284044598College Liability Ins Co Ltd RRG1995199623432498239703971630othliab
4284144598College Liability Ins Co Ltd RRG19951997383957519039703971630othliab
4284244598College Liability Ins Co Ltd RRG19961996112569825702571630othliab
4284344598College Liability Ins Co Ltd RRG19961997295172825702571630othliab
4284444598College Liability Ins Co Ltd RRG1997199718347725602561630othliab
\n", - "

42845 rows × 14 columns

\n", - "
" - ], - "text/plain": [ - " GRCODE GRNAME AccidentYear \\\n", - "0 86 Allstate Ins Co Grp 1988 \n", - "1 86 Allstate Ins Co Grp 1988 \n", - "2 86 Allstate Ins Co Grp 1988 \n", - "3 86 Allstate Ins Co Grp 1988 \n", - "4 86 Allstate Ins Co Grp 1988 \n", - "... ... ... ... \n", - "42840 44598 College Liability Ins Co Ltd RRG 1995 \n", - "42841 44598 College Liability Ins Co Ltd RRG 1995 \n", - "42842 44598 College Liability Ins Co Ltd RRG 1996 \n", - "42843 44598 College Liability Ins Co Ltd RRG 1996 \n", - "42844 44598 College Liability Ins Co Ltd RRG 1997 \n", - "\n", - " DevelopmentYear DevelopmentLag IncurLoss CumPaidLoss BulkLoss \\\n", - "0 1988 1 367404 70571 127737 \n", - "1 1989 2 362988 155905 60173 \n", - "2 1990 3 347288 220744 27763 \n", - "3 1991 4 330648 251595 15280 \n", - "4 1992 5 354690 274156 27689 \n", - "... ... ... ... ... ... \n", - "42840 1996 2 343 249 82 \n", - "42841 1997 3 839 575 190 \n", - "42842 1996 1 125 6 98 \n", - "42843 1997 2 95 17 28 \n", - "42844 1997 1 83 4 77 \n", - "\n", - " EarnedPremDIR EarnedPremCeded EarnedPremNet Single PostedReserve97 \\\n", - "0 400699 5957 394742 0 281872 \n", - "1 400699 5957 394742 0 281872 \n", - "2 400699 5957 394742 0 281872 \n", - "3 400699 5957 394742 0 281872 \n", - "4 400699 5957 394742 0 281872 \n", - "... ... ... ... ... ... \n", - "42840 397 0 397 1 630 \n", - "42841 397 0 397 1 630 \n", - "42842 257 0 257 1 630 \n", - "42843 257 0 257 1 630 \n", - "42844 256 0 256 1 630 \n", - "\n", - " LOB \n", - "0 wkcomp \n", - "1 wkcomp \n", - "2 wkcomp \n", - "3 wkcomp \n", - "4 wkcomp \n", - "... ... \n", - "42840 othliab \n", - "42841 othliab \n", - "42842 othliab \n", - "42843 othliab \n", - "42844 othliab \n", - "\n", - "[42845 rows x 14 columns]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd_df = pd.read_csv(\n", " \"https://raw.githubusercontent.com/casact/chainladder-python/master/chainladder/utils/data/clrd.csv\"\n", @@ -1426,57 +1031,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(775, 6, 10, 10)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (775, 6, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd = cl.Triangle(\n", " clrd_df,\n", @@ -1527,78 +1084,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GRNAMELOB
0Adriatic Ins Coothliab
1Adriatic Ins Coppauto
2Aegis Grpcomauto
3Aegis Grpothliab
4Aegis Grpppauto
\n", - "
" - ], - "text/plain": [ - " GRNAME LOB\n", - "0 Adriatic Ins Co othliab\n", - "1 Adriatic Ins Co ppauto\n", - "2 Aegis Grp comauto\n", - "3 Aegis Grp othliab\n", - "4 Aegis Grp ppauto" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.index.head()" ] @@ -1612,18 +1100,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data structure of clrd: \n", - "Sum of all data values: 3661713596.0\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Data structure of clrd:\", type(clrd.values))\n", "print(\"Sum of all data values:\", np.nansum(clrd.values))" @@ -1646,57 +1125,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(775, 3, 10, 10)
Index:[GRNAME, LOB]
Columns:[CumPaidLoss, IncurLoss, BulkLoss]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (775, 3, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [CumPaidLoss, IncurLoss, BulkLoss]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[[\"CumPaidLoss\", \"IncurLoss\", \"BulkLoss\"]]" ] @@ -1710,57 +1141,9 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(132, 6, 10, 10)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (132, 6, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[clrd[\"LOB\"] == \"wkcomp\"]" ] @@ -1774,181 +1157,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1224364860728496108120
198870,571155,905220,744251,595274,156287,676298,499304,873321,808325,322
198966,547136,447179,142211,343231,430244,750254,557270,059273,873
199052,233133,370178,444204,442222,193232,940253,337256,788
199159,315128,051169,793196,685213,165234,676239,195
199239,99189,873114,117133,003154,362159,496
199319,74447,22961,90985,09987,215
199420,37946,77388,63691,077
199518,75684,71287,311
199642,60944,916
1997691
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1988 70571.0 155905.0 220744.0 251595.0 274156.0 287676.0 298499.0 304873.0 321808.0 325322.0\n", - "1989 66547.0 136447.0 179142.0 211343.0 231430.0 244750.0 254557.0 270059.0 273873.0 NaN\n", - "1990 52233.0 133370.0 178444.0 204442.0 222193.0 232940.0 253337.0 256788.0 NaN NaN\n", - "1991 59315.0 128051.0 169793.0 196685.0 213165.0 234676.0 239195.0 NaN NaN NaN\n", - "1992 39991.0 89873.0 114117.0 133003.0 154362.0 159496.0 NaN NaN NaN NaN\n", - "1993 19744.0 47229.0 61909.0 85099.0 87215.0 NaN NaN NaN NaN NaN\n", - "1994 20379.0 46773.0 88636.0 91077.0 NaN NaN NaN NaN NaN NaN\n", - "1995 18756.0 84712.0 87311.0 NaN NaN NaN NaN NaN NaN NaN\n", - "1996 42609.0 44916.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "1997 691.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.loc[\"Allstate Ins Co Grp\"].iloc[-1][\"CumPaidLoss\"]" ] @@ -1963,57 +1174,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(775, 2, 10, 10)
Index:[GRNAME, LOB]
Columns:[CaseIncurLoss, PaidToInc]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (775, 2, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [CaseIncurLoss, PaidToInc]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[\"CaseIncurLoss\"] = clrd[\"IncurLoss\"] - clrd[\"BulkLoss\"]\n", "clrd[\"PaidToInc\"] = clrd[\"CumPaidLoss\"] / clrd[\"CaseIncurLoss\"]\n", @@ -2029,181 +1192,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1224364860728496108120
19883,577,7807,059,9668,826,1519,862,68710,474,69810,814,57610,994,01411,091,36311,171,59011,203,949
19894,090,6807,964,7029,937,52011,098,58811,766,48812,118,79012,311,62912,434,82612,492,899
19904,578,4428,808,48610,985,34712,229,00112,878,54513,238,66713,452,99313,559,557
19914,648,7568,961,75511,154,24412,409,59213,092,03713,447,48113,642,414
19925,139,1429,757,69912,027,98313,289,48513,992,82114,347,271
19935,653,37910,599,42312,953,81214,292,51615,005,138
19946,246,44711,394,96013,845,76415,249,326
19956,473,84311,612,15114,010,098
19966,591,59911,473,912
19976,451,896
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1988 3577780.0 7059966.0 8826151.0 9862687.0 10474698.0 10814576.0 10994014.0 11091363.0 11171590.0 11203949.0\n", - "1989 4090680.0 7964702.0 9937520.0 11098588.0 11766488.0 12118790.0 12311629.0 12434826.0 12492899.0 NaN\n", - "1990 4578442.0 8808486.0 10985347.0 12229001.0 12878545.0 13238667.0 13452993.0 13559557.0 NaN NaN\n", - "1991 4648756.0 8961755.0 11154244.0 12409592.0 13092037.0 13447481.0 13642414.0 NaN NaN NaN\n", - "1992 5139142.0 9757699.0 12027983.0 13289485.0 13992821.0 14347271.0 NaN NaN NaN NaN\n", - "1993 5653379.0 10599423.0 12953812.0 14292516.0 15005138.0 NaN NaN NaN NaN NaN\n", - "1994 6246447.0 11394960.0 13845764.0 15249326.0 NaN NaN NaN NaN NaN NaN\n", - "1995 6473843.0 11612151.0 14010098.0 NaN NaN NaN NaN NaN NaN NaN\n", - "1996 6591599.0 11473912.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "1997 6451896.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[\"CumPaidLoss\"].sum()" ] @@ -2217,181 +1208,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1224364860728496108120
19880.25810.50930.63680.71150.75570.78020.79320.80020.80600.8083
19890.26860.52300.65260.72880.77270.79580.80850.81660.8204
19900.27280.52490.65460.72870.76740.78880.80160.8080
19910.25400.48960.60930.67790.71520.73460.7453
19920.25950.49270.60740.67110.70660.7245
19930.26450.49590.60610.66870.7021
19940.27090.49420.60050.6614
19950.26510.47550.5737
19960.26350.4586
19970.2552
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1988 0.258115 0.509334 0.636753 0.711533 0.755686 0.780206 0.793152 0.800175 0.805963 0.808297\n", - "1989 0.268634 0.523039 0.652594 0.728841 0.772701 0.795837 0.808501 0.816591 0.820405 NaN\n", - "1990 0.272814 0.524868 0.654580 0.728685 0.767389 0.788847 0.801618 0.807968 NaN NaN\n", - "1991 0.253951 0.489561 0.609332 0.677909 0.715189 0.734607 0.745255 NaN NaN NaN\n", - "1992 0.259518 0.492747 0.607392 0.671096 0.706613 0.724512 NaN NaN NaN NaN\n", - "1993 0.264522 0.495948 0.606111 0.668749 0.702092 NaN NaN NaN NaN NaN\n", - "1994 0.270903 0.494190 0.600480 0.661351 NaN NaN NaN NaN NaN NaN\n", - "1995 0.265095 0.475502 0.573694 NaN NaN NaN NaN NaN NaN NaN\n", - "1996 0.263451 0.458585 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "1997 0.255201 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[\"CumPaidLoss\"].sum() / clrd[\"EarnedPremNet\"].sum()" ] @@ -2405,57 +1224,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(6, 8, 10, 10)
Index:[LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet, CaseIncurLoss, PaidToInc]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (6, 8, 10, 10)\n", - "Index: [LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.groupby(\"LOB\").sum()" ] @@ -2469,21 +1240,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['comauto', 'medmal', 'othliab', 'ppauto', 'prodliab', 'wkcomp'],\n", - " dtype=object)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "np.unique(clrd[\"LOB\"])" ] @@ -2497,238 +1256,18 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(1, 8, 10, 10)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet, CaseIncurLoss, PaidToInc]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (1, 8, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.sum(axis=\"index\").sum(axis=\"segments\")" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1224364860728496108120
198856,387,73459,928,52061,653,45862,644,63163,182,71063,438,08063,440,90463,452,11163,522,98163,518,183
198962,840,44866,705,57068,666,92869,702,28370,188,01370,355,67970,389,85770,453,15870,483,269
199070,064,96774,084,38875,879,27676,812,99077,179,57277,240,32177,283,93777,345,588
199174,611,61178,513,12180,235,90880,967,06181,178,87681,185,48481,278,636
199281,213,79185,089,37086,443,88286,783,10786,908,61087,086,637
199387,896,22791,685,45693,018,48593,167,81093,473,079
199494,593,70298,130,71899,071,78199,809,122
199597,722,814101,192,332102,056,680
199698,497,932100,917,690
199796,832,221
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1988 5.638773e+07 5.992852e+07 6.165346e+07 6.264463e+07 6.318271e+07 6.343808e+07 6.344090e+07 6.345211e+07 6.352298e+07 6.351818e+07\n", - "1989 6.284045e+07 6.670557e+07 6.866693e+07 6.970228e+07 7.018801e+07 7.035568e+07 7.038986e+07 7.045316e+07 7.048327e+07 NaN\n", - "1990 7.006497e+07 7.408439e+07 7.587928e+07 7.681299e+07 7.717957e+07 7.724032e+07 7.728394e+07 7.734559e+07 NaN NaN\n", - "1991 7.461161e+07 7.851312e+07 8.023591e+07 8.096706e+07 8.117888e+07 8.118548e+07 8.127864e+07 NaN NaN NaN\n", - "1992 8.121379e+07 8.508937e+07 8.644388e+07 8.678311e+07 8.690861e+07 8.708664e+07 NaN NaN NaN NaN\n", - "1993 8.789623e+07 9.168546e+07 9.301849e+07 9.316781e+07 9.347308e+07 NaN NaN NaN NaN NaN\n", - "1994 9.459370e+07 9.813072e+07 9.907178e+07 9.980912e+07 NaN NaN NaN NaN NaN NaN\n", - "1995 9.772281e+07 1.011923e+08 1.020567e+08 NaN NaN NaN NaN NaN NaN NaN\n", - "1996 9.849793e+07 1.009177e+08 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "1997 9.683222e+07 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.sum(axis=0).sum(axis=1)" ] @@ -2740,206 +1279,52 @@ "### Accessor Methods\n", "`Pandas` has special \"accessor\" methods for `str` and `dt`. These allow for the manipulation of data within each cell of data:\n", "\n", - "```python\n", - "# splits lastname from first name by a comma-delimiter\n", - "df['Last_First'].str.split(',')\n", - "\n", - "# pulls the year out of each date in a dataframe column\n", - "df['Accident Date'].dt.year \n", - "```\n", - "\n", - "`chainladder` also has special \"accessor\" methods to help us manipulate the `origin`, `development` and `valuation` vectors of a triangle." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may want to extract only the latest accident period for every triangle." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(775, 8, 1, 10)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet, CaseIncurLoss, PaidToInc]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (775, 8, 1, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clrd[clrd.origin == clrd.origin.max()]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this triangle has only 1 row; however, all of the columns would exist, but only the youngest age would have values." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may want to extract particular diagonals from our triangles using its `valuation` vector." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
12243648607284
198810,994,014
198912,118,790
199012,878,545
199112,409,592
199212,027,983
199310,599,423
19946,246,447
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84\n", - "1988 NaN NaN NaN NaN NaN NaN 10994014.0\n", - "1989 NaN NaN NaN NaN NaN 12118790.0 NaN\n", - "1990 NaN NaN NaN NaN 12878545.0 NaN NaN\n", - "1991 NaN NaN NaN 12409592.0 NaN NaN NaN\n", - "1992 NaN NaN 12027983.0 NaN NaN NaN NaN\n", - "1993 NaN 10599423.0 NaN NaN NaN NaN NaN\n", - "1994 6246447.0 NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "```python\n", + "# splits lastname from first name by a comma-delimiter\n", + "df['Last_First'].str.split(',')\n", + "\n", + "# pulls the year out of each date in a dataframe column\n", + "df['Accident Date'].dt.year \n", + "```\n", + "\n", + "`chainladder` also has special \"accessor\" methods to help us manipulate the `origin`, `development` and `valuation` vectors of a triangle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may want to extract only the latest accident period for every triangle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "clrd[clrd.origin == clrd.origin.max()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that this triangle has only 1 row; however, all of the columns would exist, but only the youngest age would have values." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may want to extract particular diagonals from our triangles using its `valuation` vector." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "clrd[(clrd.valuation >= \"1994\") & (clrd.valuation < \"1995\")][\"CumPaidLoss\"].sum()" ] @@ -2953,82 +1338,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
24-36
19881.2502
19891.2477
19901.2471
19911.2446
19921.2327
19931.2221
19941.2151
19951.2065
1996
1997
" - ], - "text/plain": [ - " 24-36\n", - "1988 1.250169\n", - "1989 1.247695\n", - "1990 1.247132\n", - "1991 1.244650\n", - "1992 1.232666\n", - "1993 1.222124\n", - "1994 1.215078\n", - "1995 1.206503\n", - "1996 NaN\n", - "1997 NaN" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[(clrd.development > 12) & (clrd.development <= 36)][\"CumPaidLoss\"].sum().link_ratio" ] @@ -3043,220 +1355,18 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(6, 1, 10, 1)
Index:[LOB]
Columns:[CumPaidLoss]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (6, 1, 10, 1)\n", - "Index: [LOB]\n", - "Columns: [CumPaidLoss]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.groupby(\"LOB\").sum().latest_diagonal[\"CumPaidLoss\"]" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
origin1988198919901991199219931994199519961997
LOB
comauto626097674441718396711762731033762039768095675166510191272342
medmal21723922270723571727592326700727623525244920922210747420361
othliab31788935068436110342608538925043499540224429433219125854130
ppauto8690036982374710728411107136211155512112249826126004321180727999008425754249
prodliab1109731126141212551002767605994462111264620182810710682
wkcomp1241715130870613946751414747132880111875811114842962081736040340132
\n", - "
" - ], - "text/plain": [ - "origin 1988 1989 1990 1991 1992 1993 1994 \\\n", - "LOB \n", - "comauto 626097 674441 718396 711762 731033 762039 768095 \n", - "medmal 217239 222707 235717 275923 267007 276235 252449 \n", - "othliab 317889 350684 361103 426085 389250 434995 402244 \n", - "ppauto 8690036 9823747 10728411 10713621 11555121 12249826 12600432 \n", - "prodliab 110973 112614 121255 100276 76059 94462 111264 \n", - "wkcomp 1241715 1308706 1394675 1414747 1328801 1187581 1114842 \n", - "\n", - "origin 1995 1996 1997 \n", - "LOB \n", - "comauto 675166 510191 272342 \n", - "medmal 209222 107474 20361 \n", - "othliab 294332 191258 54130 \n", - "ppauto 11807279 9900842 5754249 \n", - "prodliab 62018 28107 10682 \n", - "wkcomp 962081 736040 340132 " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd.groupby(\"LOB\").sum().latest_diagonal[\"CumPaidLoss\"].to_frame().astype(int)" ] @@ -3270,27 +1380,9 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "LOB\n", - "comauto 718396\n", - "medmal 235717\n", - "othliab 361103\n", - "ppauto 10728411\n", - "prodliab 121255\n", - "wkcomp 1394675\n", - "dtype: int64" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[clrd.origin == \"1990\"].groupby(\"LOB\").sum().latest_diagonal[\n", " \"CumPaidLoss\"\n", @@ -3314,7 +1406,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3330,20 +1422,9 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.769123134328358" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[clrd.origin == \"1997\"][clrd.development == 12][\"NetPaidLossRatio\"].max()" ] @@ -3357,57 +1438,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Triangle Summary
Valuation:1997-12
Grain:OYDY
Shape:(4, 9, 10, 10)
Index:[GRNAME, LOB]
Columns:[IncurLoss, CumPaidLoss, BulkLoss, EarnedPremDIR, EarnedPremCeded, EarnedPremNet, CaseIncurLoss, PaidToInc, NetPaidLossRatio]
" - ], - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (4, 9, 10, 10)\n", - "Index: [GRNAME, LOB]\n", - "Columns: [IncurLoss, CumPaidLoss, BulkLoss, EarnedPremD..." - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clrd[clrd[\"GRNAME\"] == \"Alaska Nat Ins Co\"]" ] @@ -13180,7 +11213,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/environment-dev.yaml b/environment-dev.yaml index f07b8821..dd726780 100644 --- a/environment-dev.yaml +++ b/environment-dev.yaml @@ -15,6 +15,7 @@ dependencies: - pandas - scikit-learn + - statsmodels - sparse - dill - xlcompose