From c56e176f073dfc26340269bbabc28296832904ad Mon Sep 17 00:00:00 2001 From: Gene Dan Date: Fri, 4 Sep 2026 21:11:40 -0500 Subject: [PATCH 1/2] [FIX] Apply Ruff fix to tutorial and user guide. --- .../tutorials/stochastic-tutorial.ipynb | 993 +++++++++--------- .../tutorials/tail-tutorial.ipynb | 5 +- docs/user_guide/adjustments.ipynb | 76 +- docs/user_guide/development.ipynb | 249 +++-- docs/user_guide/methods.ipynb | 87 +- docs/user_guide/tails.ipynb | 147 +-- docs/user_guide/triangle.ipynb | 171 +-- pyproject.toml | 8 - 8 files changed, 925 insertions(+), 811 deletions(-) diff --git a/docs/getting_started/tutorials/stochastic-tutorial.ipynb b/docs/getting_started/tutorials/stochastic-tutorial.ipynb index 8d7de0b4b..9f2293fae 100644 --- a/docs/getting_started/tutorials/stochastic-tutorial.ipynb +++ b/docs/getting_started/tutorials/stochastic-tutorial.ipynb @@ -11,12 +11,24 @@ }, { "cell_type": "code", + "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.146577Z", "start_time": "2026-01-28T04:16:41.842692Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pandas: 2.3.3\n", + "numpy: 2.2.6\n", + "chainladder: 0.8.26\n" + ] + } + ], "source": [ "# Black linter, optional\n", "# import jupyter_black as jb\n", @@ -31,19 +43,7 @@ "print(\"pandas: \" + pd.__version__)\n", "print(\"numpy: \" + np.__version__)\n", "print(\"chainladder: \" + cl.__version__)" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pandas: 2.3.3\n", - "numpy: 2.2.6\n", - "chainladder: 0.8.26\n" - ] - } - ], - "execution_count": 1 + ] }, { "cell_type": "markdown", @@ -64,24 +64,13 @@ }, { "cell_type": "code", + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.585032Z", "start_time": "2026-01-28T04:16:43.257746Z" } }, - "source": [ - "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_" - ], "outputs": [ { "data": { @@ -94,7 +83,19 @@ "output_type": "execute_result" } ], - "execution_count": 2 + "source": [ + "clrd = (\n", + " cl\n", + " .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", @@ -105,17 +106,17 @@ }, { "cell_type": "code", + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.647022Z", "start_time": "2026-01-28T04:16:43.598508Z" } }, + "outputs": [], "source": [ "mack = cl.MackChainladder().fit(clrd[\"CumPaidLoss\"])" - ], - "outputs": [], - "execution_count": 3 + ] }, { "cell_type": "markdown", @@ -134,31 +135,16 @@ }, { "cell_type": "code", + "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.700990Z", "start_time": "2026-01-28T04:16:43.693923Z" } }, - "source": [ - "clrd_first_lags = clrd[clrd.development <= 24][clrd.origin < \"1997\"][\"CumPaidLoss\"]\n", - "clrd_first_lags" - ], "outputs": [ { "data": { - "text/plain": [ - " 12 24\n", - "1988 285804.0 638532.0\n", - "1989 307720.0 684140.0\n", - "1990 320124.0 757479.0\n", - "1991 347417.0 793749.0\n", - "1992 342982.0 781402.0\n", - "1993 342385.0 743433.0\n", - "1994 351060.0 750392.0\n", - "1995 343841.0 768575.0\n", - "1996 381484.0 736040.0" - ], "text/html": [ "\n", " \n", @@ -216,6 +202,18 @@ " \n", " \n", "
" + ], + "text/plain": [ + " 12 24\n", + "1988 285804.0 638532.0\n", + "1989 307720.0 684140.0\n", + "1990 320124.0 757479.0\n", + "1991 347417.0 793749.0\n", + "1992 342982.0 781402.0\n", + "1993 342385.0 743433.0\n", + "1994 351060.0 750392.0\n", + "1995 343841.0 768575.0\n", + "1996 381484.0 736040.0" ] }, "execution_count": 4, @@ -223,7 +221,10 @@ "output_type": "execute_result" } ], - "execution_count": 4 + "source": [ + "clrd_first_lags = clrd[clrd.development <= 24][clrd.origin < \"1997\"][\"CumPaidLoss\"]\n", + "clrd_first_lags" + ] }, { "cell_type": "markdown", @@ -234,15 +235,13 @@ }, { "cell_type": "code", + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.797670Z", "start_time": "2026-01-28T04:16:43.793413Z" } }, - "source": [ - "clrd_first_lags.link_ratio.to_frame().mean().iloc[0]" - ], "outputs": [ { "name": "stderr", @@ -263,7 +262,9 @@ "output_type": "execute_result" } ], - "execution_count": 5 + "source": [ + "clrd_first_lags.link_ratio.to_frame().mean().iloc[0]" + ] }, { "cell_type": "markdown", @@ -274,17 +275,13 @@ }, { "cell_type": "code", + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.911843Z", "start_time": "2026-01-28T04:16:43.893014Z" } }, - "source": [ - "cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"]).ldf_.to_frame(\n", - " origin_as_datetime=False\n", - ").values[0, 0]" - ], "outputs": [ { "data": { @@ -297,7 +294,11 @@ "output_type": "execute_result" } ], - "execution_count": 6 + "source": [ + "cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"]).ldf_.to_frame(\n", + " origin_as_datetime=False\n", + ").values[0, 0]" + ] }, { "cell_type": "markdown", @@ -313,20 +314,13 @@ }, { "cell_type": "code", + "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:43.995558Z", "start_time": "2026-01-28T04:16:43.966625Z" } }, - "source": [ - "y = clrd_first_lags.to_frame(origin_as_datetime=True).values[:, 1]\n", - "x = clrd_first_lags.to_frame(origin_as_datetime=True).values[:, 0]\n", - "\n", - "model = sm.WLS(y, x, weights=(1 / x) ** 2)\n", - "results = model.fit()\n", - "results.summary()" - ], "outputs": [ { "name": "stderr", @@ -338,36 +332,6 @@ }, { "data": { - "text/plain": [ - "\n", - "\"\"\"\n", - " WLS Regression Results \n", - "=======================================================================================\n", - "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: Tue, 27 Jan 2026 Prob (F-statistic): 1.60e-11\n", - "Time: 22:16:43 Log-Likelihood: -107.89\n", - "No. Observations: 9 AIC: 217.8\n", - "Df Residuals: 8 BIC: 218.0\n", - "Df Model: 1 \n", - "Covariance Type: nonrobust \n", - "==============================================================================\n", - " coef std err t P>|t| [0.025 0.975]\n", - "------------------------------------------------------------------------------\n", - "x1 2.2067 0.041 53.735 0.000 2.112 2.301\n", - "==============================================================================\n", - "Omnibus: 7.448 Durbin-Watson: 1.177\n", - "Prob(Omnibus): 0.024 Jarque-Bera (JB): 2.533\n", - "Skew: -1.187 Prob(JB): 0.282\n", - "Kurtosis: 4.058 Cond. No. 1.00\n", - "==============================================================================\n", - "\n", - "Notes:\n", - "[1] R² is computed without centering (uncentered) since the model does not contain a constant.\n", - "[2] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "\"\"\"" - ], "text/html": [ "\n", "\n", @@ -422,14 +386,51 @@ "\n", "
WLS Regression Results


Notes:
[1] R² is computed without centering (uncentered) since the model does not contain a constant.
[2] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], - "text/latex": "\\begin{center}\n\\begin{tabular}{lclc}\n\\toprule\n\\textbf{Dep. Variable:} & y & \\textbf{ R-squared (uncentered):} & 0.997 \\\\\n\\textbf{Model:} & WLS & \\textbf{ Adj. R-squared (uncentered):} & 0.997 \\\\\n\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 2887. \\\\\n\\textbf{Date:} & Tue, 27 Jan 2026 & \\textbf{ Prob (F-statistic):} & 1.60e-11 \\\\\n\\textbf{Time:} & 22:16:43 & \\textbf{ Log-Likelihood: } & -107.89 \\\\\n\\textbf{No. Observations:} & 9 & \\textbf{ AIC: } & 217.8 \\\\\n\\textbf{Df Residuals:} & 8 & \\textbf{ BIC: } & 218.0 \\\\\n\\textbf{Df Model:} & 1 & \\textbf{ } & \\\\\n\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n\\bottomrule\n\\end{tabular}\n\\begin{tabular}{lcccccc}\n & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n\\midrule\n\\textbf{x1} & 2.2067 & 0.041 & 53.735 & 0.000 & 2.112 & 2.301 \\\\\n\\bottomrule\n\\end{tabular}\n\\begin{tabular}{lclc}\n\\textbf{Omnibus:} & 7.448 & \\textbf{ Durbin-Watson: } & 1.177 \\\\\n\\textbf{Prob(Omnibus):} & 0.024 & \\textbf{ Jarque-Bera (JB): } & 2.533 \\\\\n\\textbf{Skew:} & -1.187 & \\textbf{ Prob(JB): } & 0.282 \\\\\n\\textbf{Kurtosis:} & 4.058 & \\textbf{ Cond. No. } & 1.00 \\\\\n\\bottomrule\n\\end{tabular}\n%\\caption{WLS Regression Results}\n\\end{center}\n\nNotes: \\newline\n [1] R² is computed without centering (uncentered) since the model does not contain a constant. \\newline\n [2] Standard Errors assume that the covariance matrix of the errors is correctly specified." + "text/latex": "\\begin{center}\n\\begin{tabular}{lclc}\n\\toprule\n\\textbf{Dep. Variable:} & y & \\textbf{ R-squared (uncentered):} & 0.997 \\\\\n\\textbf{Model:} & WLS & \\textbf{ Adj. R-squared (uncentered):} & 0.997 \\\\\n\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 2887. \\\\\n\\textbf{Date:} & Tue, 27 Jan 2026 & \\textbf{ Prob (F-statistic):} & 1.60e-11 \\\\\n\\textbf{Time:} & 22:16:43 & \\textbf{ Log-Likelihood: } & -107.89 \\\\\n\\textbf{No. Observations:} & 9 & \\textbf{ AIC: } & 217.8 \\\\\n\\textbf{Df Residuals:} & 8 & \\textbf{ BIC: } & 218.0 \\\\\n\\textbf{Df Model:} & 1 & \\textbf{ } & \\\\\n\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n\\bottomrule\n\\end{tabular}\n\\begin{tabular}{lcccccc}\n & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n\\midrule\n\\textbf{x1} & 2.2067 & 0.041 & 53.735 & 0.000 & 2.112 & 2.301 \\\\\n\\bottomrule\n\\end{tabular}\n\\begin{tabular}{lclc}\n\\textbf{Omnibus:} & 7.448 & \\textbf{ Durbin-Watson: } & 1.177 \\\\\n\\textbf{Prob(Omnibus):} & 0.024 & \\textbf{ Jarque-Bera (JB): } & 2.533 \\\\\n\\textbf{Skew:} & -1.187 & \\textbf{ Prob(JB): } & 0.282 \\\\\n\\textbf{Kurtosis:} & 4.058 & \\textbf{ Cond. No. } & 1.00 \\\\\n\\bottomrule\n\\end{tabular}\n%\\caption{WLS Regression Results}\n\\end{center}\n\nNotes: \\newline\n [1] R² is computed without centering (uncentered) since the model does not contain a constant. \\newline\n [2] Standard Errors assume that the covariance matrix of the errors is correctly specified.", + "text/plain": [ + "\n", + "\"\"\"\n", + " WLS Regression Results \n", + "=======================================================================================\n", + "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: Tue, 27 Jan 2026 Prob (F-statistic): 1.60e-11\n", + "Time: 22:16:43 Log-Likelihood: -107.89\n", + "No. Observations: 9 AIC: 217.8\n", + "Df Residuals: 8 BIC: 218.0\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "x1 2.2067 0.041 53.735 0.000 2.112 2.301\n", + "==============================================================================\n", + "Omnibus: 7.448 Durbin-Watson: 1.177\n", + "Prob(Omnibus): 0.024 Jarque-Bera (JB): 2.533\n", + "Skew: -1.187 Prob(JB): 0.282\n", + "Kurtosis: 4.058 Cond. No. 1.00\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] R² is computed without centering (uncentered) since the model does not contain a constant.\n", + "[2] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 7 + "source": [ + "y = clrd_first_lags.to_frame(origin_as_datetime=True).values[:, 1]\n", + "x = clrd_first_lags.to_frame(origin_as_datetime=True).values[:, 0]\n", + "\n", + "model = sm.WLS(y, x, weights=(1 / x) ** 2)\n", + "results = model.fit()\n", + "results.summary()" + ] }, { "cell_type": "markdown", @@ -443,17 +444,33 @@ }, { "cell_type": "code", + "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.075340Z", "start_time": "2026-01-28T04:16:44.034202Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simple average:\n", + "True\n", + "Volume-weighted average:\n", + "True\n", + "Regression average:\n", + "True\n" + ] + } + ], "source": [ "print(\"Simple average:\")\n", "print(\n", " round(\n", - " cl.Development(average=\"simple\")\n", + " cl\n", + " .Development(average=\"simple\")\n", " .fit(clrd_first_lags)\n", " .ldf_.to_frame(origin_as_datetime=False)\n", " .values[0, 0],\n", @@ -465,7 +482,8 @@ "print(\"Volume-weighted average:\")\n", "print(\n", " round(\n", - " cl.Development(average=\"volume\")\n", + " cl\n", + " .Development(average=\"volume\")\n", " .fit(clrd_first_lags)\n", " .ldf_.to_frame(origin_as_datetime=False)\n", " .values[0, 0],\n", @@ -477,7 +495,8 @@ "print(\"Regression average:\")\n", "print(\n", " round(\n", - " cl.Development(average=\"regression\")\n", + " cl\n", + " .Development(average=\"regression\")\n", " .fit(clrd_first_lags)\n", " .ldf_.to_frame(origin_as_datetime=False)\n", " .values[0, 0],\n", @@ -485,22 +504,7 @@ " )\n", " == round(sm.OLS(y, x).fit().params[0], 10)\n", ")" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simple average:\n", - "True\n", - "Volume-weighted average:\n", - "True\n", - "Regression average:\n", - "True\n" - ] - } - ], - "execution_count": 8 + ] }, { "cell_type": "markdown", @@ -511,36 +515,30 @@ }, { "cell_type": "code", + "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.108239Z", "start_time": "2026-01-28T04:16:44.091913Z" } }, + "outputs": [], "source": [ "dev = cl.Development(average=\"simple\").fit(clrd[\"CumPaidLoss\"])" - ], - "outputs": [], - "execution_count": 9 + ] }, { "cell_type": "code", + "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.150151Z", "start_time": "2026-01-28T04:16:44.142976Z" } }, - "source": [ - "dev.sigma_" - ], "outputs": [ { "data": { - "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" - ], "text/html": [ "\n", " \n", @@ -572,6 +570,10 @@ " \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" ] }, "execution_count": 10, @@ -579,26 +581,22 @@ "output_type": "execute_result" } ], - "execution_count": 10 + "source": [ + "dev.sigma_" + ] }, { "cell_type": "code", + "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.244837Z", "start_time": "2026-01-28T04:16:44.238291Z" } }, - "source": [ - "dev.std_err_" - ], "outputs": [ { "data": { - "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" - ], "text/html": [ "\n", " \n", @@ -630,6 +628,10 @@ " \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.041066 0.012024 0.005101 0.003734 0.003303 0.003337 0.00419 0.006831 0.003222" ] }, "execution_count": 11, @@ -637,7 +639,9 @@ "output_type": "execute_result" } ], - "execution_count": 11 + "source": [ + "dev.std_err_" + ] }, { "cell_type": "markdown", @@ -648,21 +652,13 @@ }, { "cell_type": "code", + "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.365964Z", "start_time": "2026-01-28T04:16:44.359348Z" } }, - "source": [ - "np.round(\n", - " dev.sigma_.to_frame(origin_as_datetime=False).transpose()[\"(All)\"].values\n", - " / np.sqrt(\n", - " clrd[\"CumPaidLoss\"].age_to_age.to_frame(origin_as_datetime=False).count()\n", - " ).values,\n", - " 4,\n", - ")" - ], "outputs": [ { "data": { @@ -676,7 +672,15 @@ "output_type": "execute_result" } ], - "execution_count": 12 + "source": [ + "np.round(\n", + " dev.sigma_.to_frame(origin_as_datetime=False).transpose()[\"(All)\"].values\n", + " / np.sqrt(\n", + " clrd[\"CumPaidLoss\"].age_to_age.to_frame(origin_as_datetime=False).count()\n", + " ).values,\n", + " 4,\n", + ")" + ] }, { "cell_type": "markdown", @@ -689,31 +693,16 @@ }, { "cell_type": "code", + "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.519452Z", "start_time": "2026-01-28T04:16:44.501645Z" } }, - "source": [ - "clrd[\"CumPaidLoss\"]" - ], "outputs": [ { "data": { - "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" - ], "text/html": [ "\n", " \n", @@ -864,6 +853,19 @@ " \n", " \n", "
" + ], + "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, @@ -871,25 +873,19 @@ "output_type": "execute_result" } ], - "execution_count": 13 + "source": [ + "clrd[\"CumPaidLoss\"]" + ] }, { "cell_type": "code", + "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.644869Z", "start_time": "2026-01-28T04:16:44.620756Z" } }, - "source": [ - "round(\n", - " cl.Development(average=\"volume\", drop_valuation=\"1988\")\n", - " .fit(clrd[\"CumPaidLoss\"])\n", - " .std_err_.to_frame(origin_as_datetime=False)\n", - " .values[0, 0],\n", - " 8,\n", - ") == round(sm.WLS(y[1:], x[1:], weights=(1 / x[1:])).fit().bse[0], 8)" - ], "outputs": [ { "data": { @@ -902,7 +898,16 @@ "output_type": "execute_result" } ], - "execution_count": 14 + "source": [ + "round(\n", + " cl\n", + " .Development(average=\"volume\", drop_valuation=\"1988\")\n", + " .fit(clrd[\"CumPaidLoss\"])\n", + " .std_err_.to_frame(origin_as_datetime=False)\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", @@ -913,31 +918,16 @@ }, { "cell_type": "code", + "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.707178Z", "start_time": "2026-01-28T04:16:44.695143Z" } }, - "source": [ - "mack.parameter_risk_" - ], "outputs": [ { "data": { - "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 0.000000\n", - "1989 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5251.180091 5251.180091\n", - "1990 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 9519.597764 11182.642025 11182.642025\n", - "1991 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5983.826435 11629.056593 13161.494851 13161.494851\n", - "1992 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 4587.550645 7467.757613 12251.618351 13648.337451 13648.337451\n", - "1993 0.0 0.000000 0.000000 0.000000 0.000000 4036.584426 5980.685134 8186.842405 12258.771773 13502.229704 13502.229704\n", - "1994 0.0 0.000000 0.000000 0.000000 4162.542848 5980.464847 7554.693620 9503.083404 13302.246384 14505.513836 14505.513836\n", - "1995 0.0 0.000000 0.000000 4920.825234 6735.780467 8137.402853 9445.571257 11118.249482 14501.741876 15619.795959 15619.795959\n", - "1996 0.0 0.000000 8823.893815 11288.653535 12894.776869 14100.808340 15189.795391 16513.301328 19140.782034 20089.868162 20089.868162\n", - "1997 0.0 14499.310582 21075.422823 24748.584403 27093.408297 28657.082880 29907.337622 31164.059421 33102.891878 33896.767821 33896.767821" - ], "text/html": [ "\n", " \n", @@ -1099,6 +1089,19 @@ " \n", " \n", "
" + ], + "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 0.000000\n", + "1989 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5251.180091 5251.180091\n", + "1990 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 9519.597764 11182.642025 11182.642025\n", + "1991 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5983.826435 11629.056593 13161.494851 13161.494851\n", + "1992 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 4587.550645 7467.757613 12251.618351 13648.337451 13648.337451\n", + "1993 0.0 0.000000 0.000000 0.000000 0.000000 4036.584426 5980.685134 8186.842405 12258.771773 13502.229704 13502.229704\n", + "1994 0.0 0.000000 0.000000 0.000000 4162.542848 5980.464847 7554.693620 9503.083404 13302.246384 14505.513836 14505.513836\n", + "1995 0.0 0.000000 0.000000 4920.825234 6735.780467 8137.402853 9445.571257 11118.249482 14501.741876 15619.795959 15619.795959\n", + "1996 0.0 0.000000 8823.893815 11288.653535 12894.776869 14100.808340 15189.795391 16513.301328 19140.782034 20089.868162 20089.868162\n", + "1997 0.0 14499.310582 21075.422823 24748.584403 27093.408297 28657.082880 29907.337622 31164.059421 33102.891878 33896.767821 33896.767821" ] }, "execution_count": 15, @@ -1106,35 +1109,22 @@ "output_type": "execute_result" } ], - "execution_count": 15 + "source": [ + "mack.parameter_risk_" + ] }, { "cell_type": "code", + "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.832523Z", "start_time": "2026-01-28T04:16:44.824637Z" } }, - "source": [ - "mack.process_risk_" - ], "outputs": [ { "data": { - "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 0.000000\n", - "1989 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5089.178360 5089.178360\n", - "1990 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 12715.830121 13897.867439 13897.867439\n", - "1991 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 9791.406888 16366.403244 17395.742449 17395.742449\n", - "1992 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 8935.018632 13297.970777 18626.292883 19555.442335 19555.442335\n", - "1993 0.0 0.000000 0.000000 0.000000 0.000000 9138.261738 12791.894216 16089.736384 20536.049213 21375.214311 21375.214311\n", - "1994 0.0 0.000000 0.000000 0.000000 10224.862489 14116.221900 16973.053193 19773.012411 23694.524776 24492.049755 24492.049755\n", - "1995 0.0 0.000000 0.000000 13102.112109 17448.727071 20433.824628 22804.105513 25179.674557 28513.597608 29264.184137 29264.184137\n", - "1996 0.0 0.000000 25019.931172 31625.831305 35691.638815 38467.636171 40646.204205 42710.593579 45298.452925 46052.488614 46052.488614\n", - "1997 0.0 43224.455819 62195.286837 72725.026610 79312.695910 83518.132020 86648.812027 89327.026162 91961.614291 93044.819214 93044.819214" - ], "text/html": [ "\n", " \n", @@ -1296,6 +1286,19 @@ " \n", " \n", "
" + ], + "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 0.000000\n", + "1989 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5089.178360 5089.178360\n", + "1990 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 12715.830121 13897.867439 13897.867439\n", + "1991 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 9791.406888 16366.403244 17395.742449 17395.742449\n", + "1992 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 8935.018632 13297.970777 18626.292883 19555.442335 19555.442335\n", + "1993 0.0 0.000000 0.000000 0.000000 0.000000 9138.261738 12791.894216 16089.736384 20536.049213 21375.214311 21375.214311\n", + "1994 0.0 0.000000 0.000000 0.000000 10224.862489 14116.221900 16973.053193 19773.012411 23694.524776 24492.049755 24492.049755\n", + "1995 0.0 0.000000 0.000000 13102.112109 17448.727071 20433.824628 22804.105513 25179.674557 28513.597608 29264.184137 29264.184137\n", + "1996 0.0 0.000000 25019.931172 31625.831305 35691.638815 38467.636171 40646.204205 42710.593579 45298.452925 46052.488614 46052.488614\n", + "1997 0.0 43224.455819 62195.286837 72725.026610 79312.695910 83518.132020 86648.812027 89327.026162 91961.614291 93044.819214 93044.819214" ] }, "execution_count": 16, @@ -1303,7 +1306,9 @@ "output_type": "execute_result" } ], - "execution_count": 16 + "source": [ + "mack.process_risk_" + ] }, { "cell_type": "markdown", @@ -1317,31 +1322,16 @@ }, { "cell_type": "code", + "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:44.988825Z", "start_time": "2026-01-28T04:16:44.979356Z" } }, - "source": [ - "mack.parameter_risk_**2 + mack.process_risk_**2" - ], "outputs": [ { "data": { - "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 NaN\n", - "1989 NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.347463e+07 5.347463e+07\n", - "1990 NaN NaN NaN NaN NaN NaN NaN NaN 2.523151e+08 3.182022e+08 3.182022e+08\n", - "1991 NaN NaN NaN NaN NaN NaN NaN 1.316778e+08 4.030941e+08 4.758368e+08 4.758368e+08\n", - "1992 NaN NaN NaN NaN NaN NaN 1.008802e+08 2.326034e+08 4.970409e+08 5.686924e+08 5.686924e+08\n", - "1993 NaN NaN NaN NaN NaN 9.980184e+07 1.994012e+08 3.259040e+08 5.720068e+08 6.392100e+08 6.392100e+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.102704e+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.100370e+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.524435e+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.806329e+09" - ], "text/html": [ "\n", " \n", @@ -1503,6 +1493,19 @@ " \n", " \n", "
" + ], + "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 NaN\n", + "1989 NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.347463e+07 5.347463e+07\n", + "1990 NaN NaN NaN NaN NaN NaN NaN NaN 2.523151e+08 3.182022e+08 3.182022e+08\n", + "1991 NaN NaN NaN NaN NaN NaN NaN 1.316778e+08 4.030941e+08 4.758368e+08 4.758368e+08\n", + "1992 NaN NaN NaN NaN NaN NaN 1.008802e+08 2.326034e+08 4.970409e+08 5.686924e+08 5.686924e+08\n", + "1993 NaN NaN NaN NaN NaN 9.980184e+07 1.994012e+08 3.259040e+08 5.720068e+08 6.392100e+08 6.392100e+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.102704e+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.100370e+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.524435e+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.806329e+09" ] }, "execution_count": 17, @@ -1510,35 +1513,22 @@ "output_type": "execute_result" } ], - "execution_count": 17 + "source": [ + "mack.parameter_risk_**2 + mack.process_risk_**2" + ] }, { "cell_type": "code", + "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.067694Z", "start_time": "2026-01-28T04:16:45.057230Z" } }, - "source": [ - "mack.mack_std_err_**2" - ], "outputs": [ { "data": { - "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 0.000000e+00\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.347463e+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.182022e+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.758368e+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.686924e+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.392100e+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.102704e+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.100370e+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.524435e+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.806329e+09" - ], "text/html": [ "\n", " \n", @@ -1700,6 +1690,19 @@ " \n", " \n", "
" + ], + "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 0.000000e+00\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.347463e+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.182022e+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.758368e+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.686924e+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.392100e+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.102704e+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.100370e+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.524435e+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.806329e+09" ] }, "execution_count": 18, @@ -1707,7 +1710,9 @@ "output_type": "execute_result" } ], - "execution_count": 18 + "source": [ + "mack.mack_std_err_**2" + ] }, { "cell_type": "markdown", @@ -1718,22 +1723,16 @@ }, { "cell_type": "code", + "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.254800Z", "start_time": "2026-01-28T04:16:45.246676Z" } }, - "source": [ - "mack.total_process_risk_**2" - ], "outputs": [ { "data": { - "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.359540e+10" - ], "text/html": [ "\n", " \n", @@ -1769,6 +1768,10 @@ " \n", " \n", "
" + ], + "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.359540e+10" ] }, "execution_count": 19, @@ -1776,26 +1779,22 @@ "output_type": "execute_result" } ], - "execution_count": 19 + "source": [ + "mack.total_process_risk_**2" + ] }, { "cell_type": "code", + "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.415608Z", "start_time": "2026-01-28T04:16:45.408581Z" } }, - "source": [ - "(mack.process_risk_**2).sum(axis=\"origin\")" - ], "outputs": [ { "data": { - "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.359540e+10" - ], "text/html": [ "\n", " \n", @@ -1831,6 +1830,10 @@ " \n", " \n", "
" + ], + "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.359540e+10" ] }, "execution_count": 20, @@ -1838,7 +1841,9 @@ "output_type": "execute_result" } ], - "execution_count": 20 + "source": [ + "(mack.process_risk_**2).sum(axis=\"origin\")" + ] }, { "cell_type": "markdown", @@ -1849,15 +1854,13 @@ }, { "cell_type": "code", + "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.507195Z", "start_time": "2026-01-28T04:16:45.503439Z" } }, - "source": [ - "(mack.parameter_risk_**2 + mack.process_risk_**2).sum(axis=2).sum(axis=3)" - ], "outputs": [ { "data": { @@ -1870,19 +1873,19 @@ "output_type": "execute_result" } ], - "execution_count": 21 + "source": [ + "(mack.parameter_risk_**2 + mack.process_risk_**2).sum(axis=2).sum(axis=3)" + ] }, { "cell_type": "code", + "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.617984Z", "start_time": "2026-01-28T04:16:45.611421Z" } }, - "source": [ - "(mack.mack_std_err_**2).sum(axis=2).sum(axis=3)" - ], "outputs": [ { "data": { @@ -1895,7 +1898,9 @@ "output_type": "execute_result" } ], - "execution_count": 22 + "source": [ + "(mack.mack_std_err_**2).sum(axis=2).sum(axis=3)" + ] }, { "cell_type": "markdown", @@ -1917,33 +1922,16 @@ }, { "cell_type": "code", + "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.732698Z", "start_time": "2026-01-28T04:16:45.719602Z" } }, - "source": [ - "mack.mack_std_err_[\n", - " mack.mack_std_err_.development == mack.mack_std_err_.development.max()\n", - "]" - ], "outputs": [ { "data": { - "text/plain": [ - " 9999\n", - "1988 NaN\n", - "1989 7312.634869\n", - "1990 17838.223062\n", - "1991 21813.683826\n", - "1992 23847.273221\n", - "1993 25282.602592\n", - "1994 28465.249566\n", - "1995 33171.832916\n", - "1996 50243.750958\n", - "1997 99026.911753" - ], "text/html": [ "\n", " \n", @@ -1995,6 +1983,19 @@ " \n", " \n", "
" + ], + "text/plain": [ + " 9999\n", + "1988 NaN\n", + "1989 7312.634869\n", + "1990 17838.223062\n", + "1991 21813.683826\n", + "1992 23847.273221\n", + "1993 25282.602592\n", + "1994 28465.249566\n", + "1995 33171.832916\n", + "1996 50243.750958\n", + "1997 99026.911753" ] }, "execution_count": 23, @@ -2002,7 +2003,11 @@ "output_type": "execute_result" } ], - "execution_count": 23 + "source": [ + "mack.mack_std_err_[\n", + " mack.mack_std_err_.development == mack.mack_std_err_.development.max()\n", + "]" + ] }, { "cell_type": "markdown", @@ -2013,31 +2018,16 @@ }, { "cell_type": "code", + "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:45.841342Z", "start_time": "2026-01-28T04:16:45.828449Z" } }, - "source": [ - "mack.summary_" - ], "outputs": [ { "data": { - "text/plain": [ - " Latest IBNR Ultimate Mack Std Err\n", - "1988 1241715.0 NaN 1.241715e+06 NaN\n", - "1989 1308706.0 1.332126e+04 1.322027e+06 7312.634869\n", - "1990 1394675.0 4.221037e+04 1.436885e+06 17838.223062\n", - "1991 1414747.0 7.940888e+04 1.494156e+06 21813.683826\n", - "1992 1328801.0 1.197087e+05 1.448510e+06 23847.273221\n", - "1993 1187581.0 1.671916e+05 1.354773e+06 25282.602592\n", - "1994 1114842.0 2.604007e+05 1.375243e+06 28465.249566\n", - "1995 962081.0 4.024025e+05 1.364484e+06 33171.832916\n", - "1996 736040.0 6.368335e+05 1.372874e+06 50243.750958\n", - "1997 340132.0 1.056335e+06 1.396467e+06 99026.911753" - ], "text/html": [ "\n", " \n", @@ -2122,6 +2112,19 @@ " \n", " \n", "
" + ], + "text/plain": [ + " Latest IBNR Ultimate Mack Std Err\n", + "1988 1241715.0 NaN 1.241715e+06 NaN\n", + "1989 1308706.0 1.332126e+04 1.322027e+06 7312.634869\n", + "1990 1394675.0 4.221037e+04 1.436885e+06 17838.223062\n", + "1991 1414747.0 7.940888e+04 1.494156e+06 21813.683826\n", + "1992 1328801.0 1.197087e+05 1.448510e+06 23847.273221\n", + "1993 1187581.0 1.671916e+05 1.354773e+06 25282.602592\n", + "1994 1114842.0 2.604007e+05 1.375243e+06 28465.249566\n", + "1995 962081.0 4.024025e+05 1.364484e+06 33171.832916\n", + "1996 736040.0 6.368335e+05 1.372874e+06 50243.750958\n", + "1997 340132.0 1.056335e+06 1.396467e+06 99026.911753" ] }, "execution_count": 24, @@ -2129,7 +2132,9 @@ "output_type": "execute_result" } ], - "execution_count": 24 + "source": [ + "mack.summary_" + ] }, { "cell_type": "markdown", @@ -2140,28 +2145,13 @@ }, { "cell_type": "code", + "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:46.070621Z", "start_time": "2026-01-28T04:16:45.929574Z" } }, - "source": [ - "plt.bar(\n", - " mack.summary_.to_frame(origin_as_datetime=True).index.year,\n", - " mack.summary_.to_frame(origin_as_datetime=True)[\"Latest\"],\n", - " label=\"Paid\",\n", - ")\n", - "plt.bar(\n", - " mack.summary_.to_frame(origin_as_datetime=True).index.year,\n", - " mack.summary_.to_frame(origin_as_datetime=True)[\"IBNR\"],\n", - " bottom=mack.summary_.to_frame(origin_as_datetime=True)[\"Latest\"],\n", - " yerr=mack.summary_.to_frame(origin_as_datetime=True)[\"Mack Std Err\"],\n", - " label=\"Reserves\",\n", - ")\n", - "plt.legend(loc=\"upper left\")\n", - "plt.ylim(0, 1800000)" - ], "outputs": [ { "data": { @@ -2175,16 +2165,31 @@ }, { "data": { + "image/png": "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sLAw3XDDDdqzZ4/r/dGjR2vYsGF64oknFBMTox49emjixIlKTk5uUGdCQoIee+wx1+tXX31VvXr1kr+/v3r27KlZs2a53qutrVVWVpaio6Pl7++vLl26KC8v72xOGwDAi7i9MlJTU6OEhAT97ne/04033nhKfYYPH66Kigq99tpr6tatm/bt2yen0+l2sd7us88+0yeffKIuXbpIkvLy8vTnP/9ZBQUF6t69uzZs2KDf/va3Cg8P11VXXaVHH31Un3/+ud5//3116tRJO3fu1Pfffy9JOn78uIYMGaKUlBT99a9/lZ+fn6ZOnaqhQ4fqX//6l2sFZO3atQoODnYFoB+Pu2vXLl1wwQWSpG3btulf//qX3nrrLUnSggULNGnSJL300ktKTEzU1q1bNXbsWAUGBiojI0MvvPCC3n33XS1ZskSdO3dWWVmZysrKPDmVAIBWxO0wkpaWprS0tFNuv2rVKv3f//2fdu/erbCwMElSfHy8u4f1WsuXL1dQUJBOnDghh8MhHx8fvfTSS3I4HHryySe1Zs0apaSkSJLOP/98ffzxx3r55Zd11VVXqbS0VImJierfv7+k+vO6ePFiOZ1Ovfrqq7LZbJKkuXPnKjQ0VOvXr9fgwYMlSYGBgXr11VfrnZ5JSEjQwoUL9eijj0r6IXwkJyerW7dukqTc3FxNnz7dFUa7du2qzz//XC+//LIyMjJUWlqq7t2768orr5TNZnOFKwAAGtPsF7C+++676t+/v5555hnFxsbqwgsv1P333+/6C74xDodDVVVV9TZvNWjQIBUXF+vvf/+7MjIylJmZqZtuukk7d+7U0aNHde211yooKMi1zZ8/X7t27ZIk3X333Vq0aJH69u2rBx54QJ988onrc//5z39q586d6tixo6tvWFiYjh075uovSb17925wncjIkSO1cOFCSZJlWXrjjTc0cuRIST+sjO3atUtjxoypV9fUqVNdnzt69GgVFxerR48euueee/Thhx826xwCAFq3Zr+Adffu3fr444/l7++vd955RwcPHtQf/vAHffvtt/Wub/i5vLw8TZkypblLaxECAwNdKw5z5sxRQkKCXnvtNV188cWSpBUrVig2NrZeH7vdLumHVaqvv/5aK1eu1OrVq3XNNddo3LhxmjZtmqqrq5WUlKQFCxY0OGZ4eHi94/+nW2+9VQ8++KC2bNmi77//XmVlZRoxYoQkqbq6WpI0e/bsBteW+Pr6SpL69eunkpISvf/++1qzZo2GDx+u1NTUete7AADwo2YPI06nUzabTQsWLFBIyA/P/sjPz9fNN9+sWbNmKSAgoEGfnJwcZWdnu15XVVUpLi6uuUs1zsfHRxMnTlR2dra2b98uu92u0tJSXXXVVU32CQ8PV0ZGhjIyMjRgwABNmDBB06ZNU79+/bR48WJFREQoODjYrTrOO+88XXXVVVqwYIG+//57XXvttYqIiJAkRUZGKiYmRrt373atljQmODhYI0aM0IgRI3TzzTdr6NChOnTokOtUHQAAP2r2MBIdHa3Y2FhXEJGkXr16ybIs/fvf/1b37t0b9LHb7a6//tuaW265RRMmTNDLL7+s+++/X/fdd5+cTqeuvPJKVVZWauPGjQoODlZGRoYmTZqkpKQk/epXv5LD4dDy5cvVq1cvST+cann22Wd1ww036LHHHtN5552nr7/+Wm+//bYeeOABnXfeeSetY+TIkcrNzVVtba2ee+65eu9NmTJF99xzj0JCQjR06FA5HA5t3rxZ3333nbKzs5Wfn6/o6GglJibKx8dHS5cuVVRUlEJDQ5tr2gAArVizh5ErrrhCS5cuVXV1tYKCgiRJ27dvl4+Pzy/+QjwjrfSJqH5+fsrKytIzzzyjkpIShYeHKy8vT7t371ZoaKj69euniRMnSpLat2+vnJwc7dmzRwEBARowYIAWLVokSerQoYM2bNigBx98UDfeeKOOHDmi2NhYXXPNNae0UnLzzTcrKytLvr6+GjZsWL337rjjDnXo0EHPPvusJkyYoMDAQPXu3Vv33nuvJKljx4565plntGPHDvn6+uqSSy7RypUr5ePDM/YAAA3ZLMuy3OlQXV2tnTt3SpISExOVn5+vQYMGKSwsTJ07d1ZOTo727t2r+fPnu9r36tVLl112maZMmaKDBw/qjjvu0FVXXaXZs2ef0jGrqqoUEhKiysrKBr9Ijx07ppKSEnXt2lX+/v7uDAUtBD9DAPBOJ/v9/XNu/6m6efNmJSYmKjExUZKUnZ2txMRETZo0SZK0b98+lZaWutoHBQVp9erVOnz4sPr376+RI0cqPT1dL7zwgruHBgAAXsjt0zQDBw7UyRZT5s2b12Bfz5496z1UCwAA4EecxAcAAEYRRgAAgFFeE0bcvA4XLQg/OwBo21p9GGnXrp0k6ejRo4Yrwen68Wf3488SANC2NPtzRpqbr6+vQkNDtX//fkk/PF/jxy+GQ8tmWZaOHj2q/fv3KzQ01PU4eQBA29Lqw4gkRUVFSZIrkKB1CQ0Ndf0MAQBtj1eEEZvNpujoaEVEROj48eOmy4Eb2rVrx4oIALRxXhFGfuTr68svNgAAWplWfwErAABo3QgjAADAKMII4CE1NTWy2Wyy2WyqqakxXQ4AtBiEEQAAYBRhBAAAGEUYAQAARnnVrb1As5kccuafUfuz7+B5Ilpqf4ZPCp5ceWb9AbRaNTU1CgoKkiRVV1crMDDQcEVnhpURAABgFGEEAAAYRRgBAABGEUYAAIBRXMAKeEhge5us3GDTZbjN2y6UA9DysDICAACMIowAAACjCCMAAMAowghaHb5wDgC8CxewAt6MJ8cCaAVYGQEAAEaxMgLP4i91AMB/YGUEAAAYRRgBAABGcZoGwEm11ifHAqeCJwy3DG6vjGzYsEHp6emKiYmRzWbTsmXLTrnvxo0b5efnp759+7p7WMDlx1+OVm6wAs/0ehEAgHFur4zU1NQoISFBv/vd73TjjTeecr/Dhw9r1KhRuuaaa1RRUeHuYQGj4o8tNF1CA3tMFwAAZ4nbYSQtLU1paWluH+iuu+7SbbfdJl9fX7dWUwAAgHfzyAWsc+fO1e7du5Wbm3tK7R0Oh6qqquptANAW8IRhtEXNHkZ27Nihhx56SH/+85/l53dqCzF5eXkKCQlxbXFxcc1cJQDgTBCicCaa9W6auro63XbbbZoyZYouvPDCU+6Xk5Oj7Oxs1+uqqioCiZfg2gsAbR4Pf2ygWcPIkSNHtHnzZm3dulVZWVmSJKfTKcuy5Ofnpw8//FBXX311g352u112u705SwMAAC1Es4aR4OBgffrpp/X2zZo1S+vWrdObb76prl27NufhAQBAK+B2GKmurtbOnTtdr0tKSlRcXKywsDB17txZOTk52rt3r+bPny8fHx9dfPHF9fpHRETI39+/wX4AOJt4mBXQergdRjZv3qxBgwa5Xv94bUdGRobmzZunffv2qbS09OxVCACtBdcCeBbz7TXcDiMDBw6UZVlNvj9v3ryT9p88ebImT57s7mEBAICX4rtpAKCtY4UBhvGtvQAAwChWRgC0PPylDrQprIwAAACjWBkBgBYksL1NVm6w6TIAj2JlBAAAGEUYAQAARnGapg3jCZXery1/MSGnOzyL+caZYGUEAAAYxcpIa8WtjwBwxljRaRkII20Y/xECAFoCTtMAAACjWBlppdryhYkAAO/CyggAADCKlREAAFoZb7vmj5URAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGNXmHwcf/9AK0yU0sOep60yXAACAx7AyAgAAjCKMAAAAowgjAADAKMIIAAAwyu0wsmHDBqWnpysmJkY2m03Lli07afu3335b1157rcLDwxUcHKyUlBR98MEHp1svAADwMm6HkZqaGiUkJGjmzJmn1H7Dhg269tprtXLlShUVFWnQoEFKT0/X1q1b3S4WAAB4H7dv7U1LS1NaWtopt58xY0a9108++aT+8pe/6L333lNiYqK7hwcAAF7G488ZcTqdOnLkiMLCwpps43A45HA4XK+rqqo8URoAADDA4xewTps2TdXV1Ro+fHiTbfLy8hQSEuLa4uLiPFghAADwJI+GkYULF2rKlClasmSJIiIimmyXk5OjyspK11ZWVubBKgEAgCd57DTNokWLdMcdd2jp0qVKTU09aVu73S673e6hygC0NPHHFpouoYE9pgsAvJhHVkbeeOMNZWZm6o033tB11/G9KwAA4Cdur4xUV1dr586drtclJSUqLi5WWFiYOnfurJycHO3du1fz58+X9MOpmYyMDD3//PNKTk5WeXm5JCkgIEAhISFnaRgAAKC1cntlZPPmzUpMTHTdlpudna3ExERNmjRJkrRv3z6Vlpa62r/yyis6ceKExo0bp+joaNc2fvz4szQEAADQmrm9MjJw4EBZltXk+/Pmzav3ev369e4eAgAAtCF8Nw0AADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMcvtx8ACAxsUfW2i6hAb2mC4AOAWsjAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwyu0wsmHDBqWnpysmJkY2m03Lli37xT7r169Xv379ZLfb1a1bN82bN+80SgUA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zZ49WyUlJbruuuuMjNuUM51vSZo7d6569eql8PBwFRYWavz48brvvvvUo0cPSVKvXr00dOhQjR07VgUFBTp+/LiysrL03//9323uNkhPzPePQaRLly6aNm2aDhw44Orb1laiPDHfnTt3rnfMoKAgSdIFF1yg8847zwOjbDk8Md/BwcG66667lJubq7i4OHXp0kXPPvusJOmWW27x7IC9jenbeVqSjz76yJLUYMvIyLAsy7Kef/5567zzzrPatWtnde7c2XrkkUcsh8NR7zO2b99u3XjjjVZERITVoUMHq0+fPg1u9f3HP/5hDR482AoLC7M6duxoXXbZZdbKlSs9NcwW42zM94MPPmhFRkZa7dq1s7p3725Nnz7dcjqd9dp8++231q233moFBQVZwcHBVmZmpnXkyBFPDbPF8MR8z507t9FjtMX/1Xjq3/fPlZSUtNlbez0137W1tdYf//hHKyIiwurYsaOVmppa75ZhnB6bZVlW80ceAACAxnEyFwAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYNT/B5uNTaohOxItAAAAAElFTkSuQmCC", "text/plain": [ "
" - ], - "image/png": "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sLAw3XDDDdqzZ4/r/dGjR2vYsGF64oknFBMTox49emjixIlKTk5uUGdCQoIee+wx1+tXX31VvXr1kr+/v3r27KlZs2a53qutrVVWVpaio6Pl7++vLl26KC8v72xOGwDAi7i9MlJTU6OEhAT97ne/04033nhKfYYPH66Kigq99tpr6tatm/bt2yen0+l2sd7us88+0yeffKIuXbpIkvLy8vTnP/9ZBQUF6t69uzZs2KDf/va3Cg8P11VXXaVHH31Un3/+ud5//3116tRJO3fu1Pfffy9JOn78uIYMGaKUlBT99a9/lZ+fn6ZOnaqhQ4fqX//6l2sFZO3atQoODnYFoB+Pu2vXLl1wwQWSpG3btulf//qX3nrrLUnSggULNGnSJL300ktKTEzU1q1bNXbsWAUGBiojI0MvvPCC3n33XS1ZskSdO3dWWVmZysrKPDmVAIBWxO0wkpaWprS0tFNuv2rVKv3f//2fdu/erbCwMElSfHy8u4f1WsuXL1dQUJBOnDghh8MhHx8fvfTSS3I4HHryySe1Zs0apaSkSJLOP/98ffzxx3r55Zd11VVXqbS0VImJierfv7+k+vO6ePFiOZ1Ovfrqq7LZbJKkuXPnKjQ0VOvXr9fgwYMlSYGBgXr11VfrnZ5JSEjQwoUL9eijj0r6IXwkJyerW7dukqTc3FxNnz7dFUa7du2qzz//XC+//LIyMjJUWlqq7t2768orr5TNZnOFKwAAGtPsF7C+++676t+/v5555hnFxsbqwgsv1P333+/6C74xDodDVVVV9TZvNWjQIBUXF+vvf/+7MjIylJmZqZtuukk7d+7U0aNHde211yooKMi1zZ8/X7t27ZIk3X333Vq0aJH69u2rBx54QJ988onrc//5z39q586d6tixo6tvWFiYjh075uovSb17925wncjIkSO1cOFCSZJlWXrjjTc0cuRIST+sjO3atUtjxoypV9fUqVNdnzt69GgVFxerR48euueee/Thhx826xwCAFq3Zr+Adffu3fr444/l7++vd955RwcPHtQf/vAHffvtt/Wub/i5vLw8TZkypblLaxECAwNdKw5z5sxRQkKCXnvtNV188cWSpBUrVig2NrZeH7vdLumHVaqvv/5aK1eu1OrVq3XNNddo3LhxmjZtmqqrq5WUlKQFCxY0OGZ4eHi94/+nW2+9VQ8++KC2bNmi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BAAAGEUYAQAARnGapg3jCZXery1/MSGnOzyL+caZYGUEAAAYxcpIa8WtjwBwxljRaRkII20Y/xECAFoCTtMAAACjWBlppdryhYkAAO/CyggAADCKlREAAFoZb7vmj5URAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGNXmHwcf/9AK0yU0sOep60yXAACAx7AyAgAAjCKMAAAAowgjAADAKMIIAAAwyu0wsmHDBqWnpysmJkY2m03Lli07afu3335b1157rcLDwxUcHKyUlBR98MEHp1svAADwMm6HkZqaGiUkJGjmzJmn1H7Dhg269tprtXLlShUVFWnQoEFKT0/X1q1b3S4WAAB4H7dv7U1LS1NaWtopt58xY0a9108++aT+8pe/6L333lNiYqK7hwcAAF7G488ZcTqdOnLkiMLCwpps43A45HA4XK+rqqo8URoAADDA4xewTps2TdXV1Ro+fHiTbfLy8hQSEuLa4uLiPFghAADwJI+GkYULF2rKlClasmSJIiIimmyXk5OjyspK11ZWVubBKgEAgCd57DTNokWLdMcdd2jp0qVKTU09aVu73S673e6hygC0NPHHFpouoYE9pgsAvJhHVkbeeOMNZWZm6o033tB11/G9KwAA4Cdur4xUV1dr586drtclJSUqLi5WWFiYOnfurJycHO3du1fz58+X9MOpmYyMDD3//PNKTk5WeXm5JCkgIEAhISFnaRgAAKC1cntlZPPmzUpMTHTdlpudna3ExERNmjRJkrRv3z6Vlpa62r/yyis6ceKExo0bp+joaNc2fvz4szQEAADQmrm9MjJw4EBZltXk+/Pmzav3ev369e4eAgAAtCF8Nw0AADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMcvtx8ACAxsUfW2i6hAb2mC4AOAWsjAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwyu0wsmHDBqWnpysmJkY2m03Lli37xT7r169Xv379ZLfb1a1bN82bN+80SgUA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zZ49WyUlJbruuuuMjNuUM51vSZo7d6569eql8PBwFRYWavz48brvvvvUo0cPSVKvXr00dOhQjR07VgUFBTp+/LiysrL03//9323uNkhPzPePQaRLly6aNm2aDhw44Orb1laiPDHfnTt3rnfMoKAgSdIFF1yg8847zwOjbDk8Md/BwcG66667lJubq7i4OHXp0kXPPvusJOmWW27x7IC9jenbeVqSjz76yJLUYMvIyLAsy7Kef/5567zzzrPatWtnde7c2XrkkUcsh8NR7zO2b99u3XjjjVZERITVoUMHq0+fPg1u9f3HP/5hDR482AoLC7M6duxoXXbZZdbKlSs9NcwW42zM94MPPmhFRkZa7dq1s7p3725Nnz7dcjqd9dp8++231q233moFBQVZwcHBVmZmpnXkyBFPDbPF8MR8z507t9FjtMX/1Xjq3/fPlZSUtNlbez0137W1tdYf//hHKyIiwurYsaOVmppa75ZhnB6bZVlW80ceAACAxnEyFwAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYNT/B5uNTaohOxItAAAAAElFTkSuQmCC" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 25 + "source": [ + "plt.bar(\n", + " mack.summary_.to_frame(origin_as_datetime=True).index.year,\n", + " mack.summary_.to_frame(origin_as_datetime=True)[\"Latest\"],\n", + " label=\"Paid\",\n", + ")\n", + "plt.bar(\n", + " mack.summary_.to_frame(origin_as_datetime=True).index.year,\n", + " mack.summary_.to_frame(origin_as_datetime=True)[\"IBNR\"],\n", + " bottom=mack.summary_.to_frame(origin_as_datetime=True)[\"Latest\"],\n", + " yerr=mack.summary_.to_frame(origin_as_datetime=True)[\"Mack Std Err\"],\n", + " label=\"Reserves\",\n", + ")\n", + "plt.legend(loc=\"upper left\")\n", + "plt.ylim(0, 1800000)" + ] }, { "cell_type": "markdown", @@ -2195,22 +2200,13 @@ }, { "cell_type": "code", + "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:46.331457Z", "start_time": "2026-01-28T04:16:46.202689Z" } }, - "source": [ - "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)" - ], "outputs": [ { "data": { @@ -2246,16 +2242,25 @@ }, { "data": { + "image/png": "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Aldc53a7VV5ergULFgTb9uzZ0+ZrL3qyLxo3qXcfCz7P541ZpxwLrjFMWS0/P984nU6zd+9e8/HHHweXTz75JNhn7ty5pri4OPh5xYoVJi4uzvzyl78M2ebs2bOR2IUu154xu1RvPMXTnnGrrq42AwYMMPPnzzdVVVWmrKzMJCUlmeXLl0diF7pce8Zs6dKlZsCAAeZnP/uZOXHihNm9e7e5+eabzUMPPRSJXYiI4uJiU1FRYU6ePGneffddU1xcbKKioszu3buNMZeP2VtvvWViY2PNs88+a44ePWqWLl1q+vTpYw4fPhypXYiIcMettx8LjAl/zC7FKZ4vIOmKy4YNG4J9/uzP/szk5eUFPw8bNuyK2yxdurTL64+E9ozZpXpjQGnvuO3bt89kZGSY+Ph4M2LECPPUU0+FXJPSk7VnzJqamswTTzxhbr75ZnPdddeZ1NRU873vfc/87//+b5fXHykPP/ywGTZsmImLizODBw82U6dODR4wjLny39kvfvELM3LkSBMXF2e+9KUvhXVxaE8R7rj19mOBMe37W/usaz0WRBnTi+dFAQCAlXrVc1AAAED3QEABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAEiS3njjDd1///1KSUlRVFSUXnvttbC/wxijZ599ViNHjlR8fLxuvPFGPfXUU2F/T49+Fw8AAGi78+fP6/bbb9fDDz+smTNntus7vv/972v37t169tlnNXbsWNXX16u+vj7s7+FJsgAA4DJRUVF69dVXNWPGjGBbIBDQP/7jP+pnP/uZGhoaNGbMGP3TP/2Tvva1r0mSjh49qnHjxum9997Tbbfddk2/zykeAADQJvPnz5fH49GWLVv07rvv6pvf/KbuvfdeHTt2TJK0bds2jRgxQmVlZUpLS9Pw4cP113/91+2aQSGgAACAq6qurtaGDRu0detWTZ48WTfffLMWLVqkSZMmacOGDZKkEydO6L/+67+0detWvfLKK9q4caMqKyv14IMPhv17XIMCAACu6vDhw2ppadHIkSND2gOBgAYNGiRJam1tVSAQ0CuvvBLs9/LLL2v8+PGqqqoK67QPAQUAAFzVuXPnFBMTo8rKSsXExISs69+/vyRpyJAhio2NDQkxo0ePlvTpDAwBBQAAdKg777xTLS0tqqur0+TJk6/YZ+LEiWpubtYf/vAH3XzzzZKkDz/8UJI0bNiwsH6Pu3gAAICkT2dJjh8/LunTQPKjH/1I99xzjxITEzV06FD95V/+pd566y0999xzuvPOO3XmzBmVl5dr3LhxysnJUWtrq+666y71799fq1evVmtrqwoKCuRwOLR79+6waiGgAAAASdLevXt1zz33XNael5enjRs3qqmpScuXL9crr7yijz76SDfccIMyMzP15JNPauzYsZKk06dPq7CwULt371a/fv00ffp0Pffcc0pMTAyrFgIKAACwDrcZAwAA6xBQAACAdQgoAADAOgQUAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGCd/wMoh7ka13nNdwAAAABJRU5ErkJggg==", "text/plain": [ "
" - ], - "image/png": "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Aldc53a7VV5ergULFgTb9uzZ0+ZrL3qyLxo3qXcfCz7P541ZpxwLrjFMWS0/P984nU6zd+9e8/HHHweXTz75JNhn7ty5pri4OPh5xYoVJi4uzvzyl78M2ebs2bOR2IUu154xu1RvPMXTnnGrrq42AwYMMPPnzzdVVVWmrKzMJCUlmeXLl0diF7pce8Zs6dKlZsCAAeZnP/uZOXHihNm9e7e5+eabzUMPPRSJXYiI4uJiU1FRYU6ePGneffddU1xcbKKioszu3buNMZeP2VtvvWViY2PNs88+a44ePWqWLl1q+vTpYw4fPhypXYiIcMettx8LjAl/zC7FKZ4vIOmKy4YNG4J9/uzP/szk5eUFPw8bNuyK2yxdurTL64+E9ozZpXpjQGnvuO3bt89kZGSY+Ph4M2LECPPUU0+FXJPSk7VnzJqamswTTzxhbr75ZnPdddeZ1NRU873vfc/87//+b5fXHykPP/ywGTZsmImLizODBw82U6dODR4wjLny39kvfvELM3LkSBMXF2e+9KUvhXVxaE8R7rj19mOBMe37W/usaz0WRBnTi+dFAQCAlXrVc1AAAED3QEABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAEiS3njjDd1///1KSUlRVFSUXnvttbC/wxijZ599ViNHjlR8fLxuvPFGPfXUU2F/T49+Fw8AAGi78+fP6/bbb9fDDz+smTNntus7vv/972v37t169tlnNXbsWNXX16u+vj7s7+FJsgAA4DJRUVF69dVXNWPGjGBbIBDQP/7jP+pnP/uZGhoaNGbMGP3TP/2Tvva1r0mSjh49qnHjxum9997Tbbfddk2/zykeAADQJvPnz5fH49GWLVv07rvv6pvf/KbuvfdeHTt2TJK0bds2jRgxQmVlZUpLS9Pw4cP113/91+2aQSGgAACAq6qurtaGDRu0detWTZ48WTfffLMWLVqkSZMmacOGDZKkEydO6L/+67+0detWvfLKK9q4caMqKyv14IMPhv17XIMCAACu6vDhw2ppadHIkSND2gOBgAYNGiRJam1tVSAQ0CuvvBLs9/LLL2v8+PGqqqoK67QPAQUAAFzVuXPnFBMTo8rKSsXExISs69+/vyRpyJAhio2NDQkxo0ePlvTpDAwBBQAAdKg777xTLS0tqqur0+TJk6/YZ+LEiWpubtYf/vAH3XzzzZKkDz/8UJI0bNiwsH6Pu3gAAICkT2dJjh8/LunTQPKjH/1I99xzjxITEzV06FD95V/+pd566y0999xzuvPOO3XmzBmVl5dr3LhxysnJUWtrq+666y71799fq1evVmtrqwoKCuRwOLR79+6waiGgAAAASdLevXt1zz33XNael5enjRs3qqmpScuXL9crr7yijz76SDfccIMyMzP15JNPauzYsZKk06dPq7CwULt371a/fv00ffp0Pffcc0pMTAyrFgIKAACwDrcZAwAA6xBQAACAdQgoAADAOgQUAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGCd/wMoh7ka13nNdwAAAABJRU5ErkJggg==" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 26 + "source": [ + "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)" + ] }, { "cell_type": "markdown", @@ -2269,29 +2274,16 @@ }, { "cell_type": "code", + "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:46.549305Z", "start_time": "2026-01-28T04:16:46.346183Z" } }, - "source": [ - "samples = (\n", - " cl.BootstrapODPSample(n_sims=10000).fit(clrd[\"CumPaidLoss\"]).resampled_triangles_\n", - ")\n", - "samples" - ], "outputs": [ { "data": { - "text/plain": [ - " Triangle Summary\n", - "Valuation: 1997-12\n", - "Grain: OYDY\n", - "Shape: (10000, 1, 10, 10)\n", - "Index: [LOB]\n", - "Columns: [CumPaidLoss]" - ], "text/html": [ "\n", " \n", @@ -2323,6 +2315,14 @@ " \n", " \n", "
" + ], + "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, @@ -2330,7 +2330,12 @@ "output_type": "execute_result" } ], - "execution_count": 27 + "source": [ + "samples = (\n", + " cl.BootstrapODPSample(n_sims=10000).fit(clrd[\"CumPaidLoss\"]).resampled_triangles_\n", + ")\n", + "samples" + ] }, { "cell_type": "markdown", @@ -2350,27 +2355,13 @@ }, { "cell_type": "code", + "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:46.960375Z", "start_time": "2026-01-28T04:16:46.598075Z" } }, - "source": [ - "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:\",\n", - " ibnr_cl,\n", - ")\n", - "print(\n", - " \"BootstrapODPSample's mean IBNR estimate:\",\n", - " ibnr_bootstrap,\n", - ")\n", - "print(\"Difference $:\", ibnr_cl - ibnr_bootstrap)\n", - "print(\"Difference %:\", abs(ibnr_cl - ibnr_bootstrap) / ibnr_cl)" - ], "outputs": [ { "name": "stdout", @@ -2397,7 +2388,21 @@ ] } ], - "execution_count": 28 + "source": [ + "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:\",\n", + " ibnr_cl,\n", + ")\n", + "print(\n", + " \"BootstrapODPSample's mean IBNR estimate:\",\n", + " ibnr_bootstrap,\n", + ")\n", + "print(\"Difference $:\", ibnr_cl - ibnr_bootstrap)\n", + "print(\"Difference %:\", abs(ibnr_cl - ibnr_bootstrap) / ibnr_cl)" + ] }, { "cell_type": "markdown", @@ -2409,26 +2414,16 @@ }, { "cell_type": "code", + "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2026-01-28T04:16:47.280565Z", "start_time": "2026-01-28T04:16:47.015333Z" } }, - "source": [ - "pipe = cl.Pipeline(\n", - " steps=[(\"dev\", cl.Development(average=\"simple\")), (\"tail\", cl.TailConstant(1.05))]\n", - ")\n", - "\n", - "pipe.fit(samples)" - ], "outputs": [ { "data": { - "text/plain": [ - "Pipeline(steps=[('dev', Development(average='simple')),\n", - " ('tail', TailConstant(tail=1.05))])" - ], "text/html": [ "