From e306be9a9a9f3881f2d78020dd56bf9785245aba Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Mon, 3 Aug 2026 12:22:39 -0400 Subject: [PATCH 01/11] Add Friedland Chapter 7 Jupyter notebook --- docs/_toc.yml | 2 +- docs/friedland/chapter_7.ipynb | 10252 +++++++++++++++++++++++++++++++ docs/friedland/chapter_7.rst | 595 -- 3 files changed, 10253 insertions(+), 596 deletions(-) create mode 100644 docs/friedland/chapter_7.ipynb delete mode 100644 docs/friedland/chapter_7.rst diff --git a/docs/_toc.yml b/docs/_toc.yml index 3cf0a5b9a..6347da100 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -34,7 +34,7 @@ parts: - file: friedland/index.rst sections: - file: friedland/chapter_6.rst - - file: friedland/chapter_7.rst + - file: friedland/chapter_7.ipynb - file: friedland/chapter_9.ipynb - file: friedland/chapter_10.ipynb - chapters: diff --git a/docs/friedland/chapter_7.ipynb b/docs/friedland/chapter_7.ipynb new file mode 100644 index 000000000..c30dc908f --- /dev/null +++ b/docs/friedland/chapter_7.ipynb @@ -0,0 +1,10252 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3f7daee7", + "metadata": {}, + "source": [ + "# Chapter 7 - Development Method\n", + "\n", + "> The development technique, also known as the chain ladder technique, is one of\n", + "> the most frequently used methodologies for estimating unpaid claims.\n", + ">\n", + "> -- Friedland, p84\n", + "\n", + "This chapter covers the foundational development method (or chainladder) method. In the chainladder package, this is implemented in the ``Development`` estimator. The develops ultimate claims for each accident year based on the assumption that future claims will develop similarly to prior years' claims. The development method consists of the following steps: \n", + "\n", + "1. Compile claims data in a development triangle;\n", + "1. Calculate age-to-age factors;\n", + "1. Calculate averages of the age-to-age factors;\n", + "1. Select claim development factors (CDFs);\n", + "1. Select the tail factor;\n", + "1. Calculate cumulative CDFs;\n", + "\n", + "In this chapter we will recreate the following Friedland Chapter 7 exhibits using the chainladder package:\n", + "\n", + "- **Exhibit I** — U.S. Industry Auto\n", + "- **Exhibit II** — XYZ Insurer (Auto BI)\n", + "- **Exhibit III** — U.S. PP Auto (impact of changing conditions)\n", + "- **Exhibit IV** — U.S. Auto (impact of change in product mix)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f42e0344", + "metadata": {}, + "outputs": [], + "source": [ + "import chainladder as cl\n", + "from IPython.display import display, HTML, Markdown\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "\n", + "pd.set_option(\"display.max_columns\", None)\n", + "pd.set_option(\"display.width\", 1000)\n", + "\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\n", + " \"ignore\",\n", + " message=r\"Some exclusions have been ignored\\..*link ratio\\(s\\) is required.*\",\n", + " category=UserWarning,\n", + ")\n", + "\n", + "\n", + "#pd.options.display.float_format = '{:,.0f}'.format" + ] + }, + { + "cell_type": "markdown", + "id": "4bc06bc9", + "metadata": {}, + "source": [ + "## Exhibit I — U.S. Industry Auto (Impact of Changing Conditions)\n", + "\n", + "In Exhibit I, Friedland demonstrates seven steps of the development method by examining industry-aggregated accident year claim development data for U.S. private passenger auto insurance. \n", + "\n", + "### Exhibit I, Sheet 1 - U.S. Industry Auto - Reported Claims ($000)\n", + "\n", + "We begin by generating Sheet 1, Parts 1-4 which contain the data triangle and age-to-age factors for US Industry Auto reported claims under the increasing claim ratio scenario (p. 106).\n", + "\n", + "#### PART 1 - Data Triangle\n", + "\n", + "We have already imported the necessary packages loading the ``Triangle`` at the top of p106. Let's take a look at the ``Triangle`` we just loaded.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6d335ac0", + "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
199837,017,48743,169,00945,568,91946,784,55847,337,31847,533,26447,634,41947,689,65547,724,67847,742,304
199938,954,48446,045,71848,882,92450,219,67250,729,29250,926,77951,069,28551,163,54051,185,767
200041,155,77649,371,47852,358,47653,780,32254,303,08654,582,95054,742,18854,837,929
200142,394,06950,584,11253,704,29655,150,11855,895,58356,156,72756,299,562
200244,755,24352,971,64356,102,31257,703,85158,363,56458,592,712
200345,163,10252,497,73155,468,55157,015,41157,565,344
200445,417,30952,640,32255,553,67356,976,657
200546,360,86953,790,06156,786,410
200646,582,68454,641,339
200748,853,563
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1998 37017487.0 43169009.0 45568919.0 46784558.0 47337318.0 47533264.0 47634419.0 47689655.0 47724678.0 47742304.0\n", + "1999 38954484.0 46045718.0 48882924.0 50219672.0 50729292.0 50926779.0 51069285.0 51163540.0 51185767.0 NaN\n", + "2000 41155776.0 49371478.0 52358476.0 53780322.0 54303086.0 54582950.0 54742188.0 54837929.0 NaN NaN\n", + "2001 42394069.0 50584112.0 53704296.0 55150118.0 55895583.0 56156727.0 56299562.0 NaN NaN NaN\n", + "2002 44755243.0 52971643.0 56102312.0 57703851.0 58363564.0 58592712.0 NaN NaN NaN NaN\n", + "2003 45163102.0 52497731.0 55468551.0 57015411.0 57565344.0 NaN NaN NaN NaN NaN\n", + "2004 45417309.0 52640322.0 55553673.0 56976657.0 NaN NaN NaN NaN NaN NaN\n", + "2005 46360869.0 53790061.0 56786410.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 46582684.0 54641339.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 48853563.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tri = cl.load_sample('friedland_us_industry_auto')\n", + "tri['Reported Claims']" + ] + }, + { + "cell_type": "markdown", + "id": "69b7941b", + "metadata": {}, + "source": [ + "#### PART 2 - Age-to-Age Factors\n", + "\n", + "To calculate age-to-age factors, use the ``age-to-age`` attribute of the ``Triangle``." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2f69b262", + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19981.16601.05601.02701.01201.00401.00201.00101.00101.0000
19991.18201.06201.02701.01001.00401.00301.00201.0000
20001.20001.06101.02701.01001.00501.00301.0020
20011.19301.06201.02701.01401.00501.0030
20021.18401.05901.02901.01101.0040
20031.16201.05701.02801.0100
20041.15901.05501.0260
20051.16001.0560
20061.1730
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "1998 1.166 1.056 1.027 1.012 1.004 1.002 1.001 1.001 1.0\n", + "1999 1.182 1.062 1.027 1.010 1.004 1.003 1.002 1.000 NaN\n", + "2000 1.200 1.061 1.027 1.010 1.005 1.003 1.002 NaN NaN\n", + "2001 1.193 1.062 1.027 1.014 1.005 1.003 NaN NaN NaN\n", + "2002 1.184 1.059 1.029 1.011 1.004 NaN NaN NaN NaN\n", + "2003 1.162 1.057 1.028 1.010 NaN NaN NaN NaN NaN\n", + "2004 1.159 1.055 1.026 NaN NaN NaN NaN NaN NaN\n", + "2005 1.160 1.056 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 1.173 NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tri['Reported Claims'].age_to_age.round(decimals = 3)" + ] + }, + { + "cell_type": "markdown", + "id": "77c22573", + "metadata": {}, + "source": [ + "#### PART 3 - Average Age-to-Age Factors\n", + "\n", + "To calculate the average age-to-age factors, we will use the ``Development`` estimator to ``fit_transform`` the original ``Triangle``. This calculates the averages but also preserves the ability to apply other estimators later. The specific choices of average paramters (n_period, etc.) are provided to ``Development``. The attribute for the calculated average age-to-age factors is the ``ldf_``." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "10865a15", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Reported Claims - Simple Average (Latest 5)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16801.05801.02701.01101.00401.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Reported Claims - Simple Average (Latest 3)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16401.05601.02701.01201.00501.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Reported Claims - Medial Average (Latest 5 x 1)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16501.05701.02701.01001.00401.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.165 1.057 1.027 1.01 1.004 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Reported Claims - Volume-weighted Average (Latest 5)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16801.05801.02701.01101.00401.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Reported Claims - Volume-weighted Average (Latest 3)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16401.05601.02701.01201.00501.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Reported Claims - Geometric Average (Latest 4)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.16401.05701.02701.01101.00401.00301.00201.00101.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.164 1.057 1.027 1.011 1.004 1.003 1.002 1.001 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Markdown(\"##### Reported Claims - Simple Average (Latest 5)\"))\n", + "reported_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Reported Claims'])\n", + "display(reported_simple_5.ldf_.round(3))\n", + "\n", + "display(Markdown(\"##### Reported Claims - Simple Average (Latest 3)\"))\n", + "reported_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Reported Claims'])\n", + "display(reported_simple_3.ldf_.round(3))\n", + "\n", + "display(Markdown(\"##### Reported Claims - Medial Average (Latest 5 x 1)\"))\n", + "reported_medial_5x1 = cl.Development(n_periods=5, average='simple', drop_high = 1, drop_low = 1).fit_transform(tri['Reported Claims'])\n", + "display(reported_medial_5x1.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"##### Reported Claims - Volume-weighted Average (Latest 5)\"))\n", + "reported_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Reported Claims'])\n", + "display(reported_volume_5.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"##### Reported Claims - Volume-weighted Average (Latest 3)\"))\n", + "reported_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Reported Claims'])\n", + "display(reported_volume_3.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"##### Reported Claims - Geometric Average (Latest 4)\"))\n", + "reported_volume_3 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims'])\n", + "display(reported_volume_3.ldf_.round(decimals = 3))\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "9962ffae", + "metadata": {}, + "source": [ + "#### PART 4 - Selected Age-to-Age Factors\n", + "\n", + "For the prior selected, we need to create a hard-coded pattern, using the ``DevelopmentConstant`` estimator. In a production workflow, you can save the development pattern from the prior analysis and load for reference in a subsequent analysis. \n", + "\n", + "We will also be using the ``TailConstant`` estimator to add a tail factor to selected development patterns. We add the tail factor to a transformed ``Triangle`` (i.e. applying ``fit_transform`` of the ``Development`` estimator to a ``Triangle``) by using ``fit_transform`` once again." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2b3d7c62", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Prior Selected" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-120120-132
(All)1.16001.05701.02801.01201.00501.00301.00101.00101.00001.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "(All) 1.16 1.057 1.028 1.012 1.005 1.003 1.001 1.001 1.0 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "reported_prior_method = cl.DevelopmentConstant(\n", + " patterns = {\n", + " 12:1.16, \n", + " 24:1.057, \n", + " 36:1.028, \n", + " 48:1.012, \n", + " 60:1.005, \n", + " 72:1.003, \n", + " 84:1.001, \n", + " 96:1.001, \n", + " 108:1.000\n", + " }, \n", + " style='ldf'\n", + " )\n", + "\n", + "reported_prior_ft = reported_prior_method.fit_transform(tri['Reported Claims'])\n", + "reported_tail_method = cl.TailConstant(\n", + " tail = 1,\n", + " projection_period = 0\n", + " )\n", + "reported_prior_selected = reported_tail_method.fit_transform(reported_prior_ft)\n", + "display(Markdown(\"##### Prior Selected\"))\n", + "display(reported_prior_selected.ldf_)" + ] + }, + { + "cell_type": "markdown", + "id": "2c4cc531", + "metadata": {}, + "source": [ + "Next, we can select some factors. We can also reuse the `TailConstant` from the previous step. This is fairly common in practice, as tail factors are selected less frequently than the development pattern itself, so need to be carried from analysis to analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7c66ca14", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Selected" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-120120-132
(All)1.16411.05591.02731.01151.00461.00281.00161.00061.00041.0000
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "(All) 1.164093 1.055879 1.027349 1.011532 1.004584 1.002753 1.001585 1.000584 1.000369 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "reported_selected_pattern = reported_tail_method.fit_transform(reported_simple_3)\n", + "display(Markdown(\"##### Selected\"))\n", + "display(reported_selected_pattern.ldf_)" + ] + }, + { + "cell_type": "markdown", + "id": "70edfe0c", + "metadata": {}, + "source": [ + "The Development estimator has a ``cdf_`` attribute that will automatically multiply age-to-age factors cumulatively into age-to-ultimate factors. The Friedland text uses the rounded LDF to calculate CDF. This can be achieved in this package by using the ``incr_to_cum()`` method of the rounded age-to-age factors." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bdb96633", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### CDF to Ultimate (without rounding)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)1.28997692842843771.10813861976398691.04949345751452541.02155445751002221.00990849807236581.00530021728234491.00254018500303091.00095395484909181.0003693267453791.0
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "(All) 1.289977 1.108139 1.049493 1.021554 1.009908 1.0053 1.00254 1.000954 1.000369 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### CDF to Ultimate (with rounding)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)1.29201.11001.05101.02301.01101.00601.00301.00101.00001.0000
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "(All) 1.292 1.11 1.051 1.023 1.011 1.006 1.003 1.001 1.0 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from contextlib import contextmanager\n", + "from chainladder.core.display import TriangleDisplay\n", + "\n", + "@contextmanager\n", + "def unrounded_triangle_display():\n", + " original = TriangleDisplay._get_format_str\n", + " TriangleDisplay._get_format_str = staticmethod(lambda data: \"{}\")\n", + " try:\n", + " yield\n", + " finally:\n", + " TriangleDisplay._get_format_str = staticmethod(original)\n", + "\n", + "display(Markdown(\"##### CDF to Ultimate (without rounding)\"))\n", + "with unrounded_triangle_display():\n", + " display(reported_selected_pattern.cdf_)\n", + "\n", + "display(Markdown(\"##### CDF to Ultimate (with rounding)\"))\n", + "reported_selected_cdf = reported_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3)\n", + "display(reported_selected_cdf)\n" + ] + }, + { + "cell_type": "markdown", + "id": "5d961615", + "metadata": {}, + "source": [ + "To calculate % reported, we will use ``Triangle`` manipulation from Chapter 5 directly on the development pattern (which is also a ``Triangle``)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "496165f8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "##### Percent Reported" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)0.77400.90100.95100.97800.98900.99400.99700.99901.00001.0000
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "(All) 0.774 0.901 0.951 0.978 0.989 0.994 0.997 0.999 1.0 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Markdown(\"##### Percent Reported\"))\n", + "display((1 / reported_selected_cdf).round(decimals = 3))" + ] + }, + { + "cell_type": "markdown", + "id": "e4b038d4", + "metadata": {}, + "source": [ + "### Exhibit I, Sheet 2 (p. 107)\n", + "\n", + "Moving onto the next page, all the calculations are identical to the previous page. We will manually repeat the same code. In a production workflow, commonly repeated methods and selections can be streamlined, which we will demonstrate in Exhibit II." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "531bcf38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Part 1 - Data Triangle" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
199818,539,25433,231,03940,062,00843,892,03945,896,53546,765,42247,221,32247,446,87747,555,45647,644,187
199920,410,19336,090,68443,259,40247,159,24149,208,53250,162,04350,625,75750,878,80851,000,534
200022,120,84338,976,01446,389,28250,562,38552,735,28053,740,10154,284,33454,533,225
200122,992,25940,096,19847,767,83552,093,91654,363,43655,378,80155,878,421
200224,092,78241,795,31349,903,80354,352,88456,754,37657,807,215
200324,084,45141,399,61249,070,33253,584,20155,930,654
200424,369,77041,489,86349,236,67853,774,672
200525,100,69742,702,22950,644,994
200625,608,77643,606,497
200727,229,969
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0\n", + "1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN\n", + "2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN\n", + "2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN\n", + "2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN\n", + "2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN\n", + "2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN\n", + "2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "#### Part 2 - Age-to-Age Factors" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19981.79201.20601.09601.04601.01901.01001.00501.00201.0020
19991.76801.19901.09001.04301.01901.00901.00501.0020
20001.76201.19001.09001.04301.01901.01001.0050
20011.74401.19101.09101.04401.01901.0090
20021.73501.19401.08901.04401.0190
20031.71901.18501.09201.0440
20041.70301.18701.0920
20051.70101.1860
20061.7030
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "1998 1.792 1.206 1.096 1.046 1.019 1.010 1.005 1.002 1.002\n", + "1999 1.768 1.199 1.090 1.043 1.019 1.009 1.005 1.002 NaN\n", + "2000 1.762 1.190 1.090 1.043 1.019 1.010 1.005 NaN NaN\n", + "2001 1.744 1.191 1.091 1.044 1.019 1.009 NaN NaN NaN\n", + "2002 1.735 1.194 1.089 1.044 1.019 NaN NaN NaN NaN\n", + "2003 1.719 1.185 1.092 1.044 NaN NaN NaN NaN NaN\n", + "2004 1.703 1.187 1.092 NaN NaN NaN NaN NaN NaN\n", + "2005 1.701 1.186 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 1.703 NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "#### Part 3 - Average Age-to-Age Factors" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Simple Average" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 5" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.71201.18901.09101.04401.01901.01001.00501.00201.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 3" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.70201.18601.09101.04401.01901.00901.00501.00201.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Medial Average" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 5 x 1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.70811.18801.09081.04361.01891.00951.00481.00231.0019
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.708081 1.188017 1.090837 1.043604 1.018888 1.009496 1.004777 1.00234 1.001866" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Volume-weighted Average" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 5" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.71201.18901.09101.04401.01901.01001.00501.00201.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 3" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.70201.18601.09101.04401.01901.00901.00501.00201.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Geometric Average" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Latest 4" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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)1.70601.18801.09101.04401.01901.01001.00501.00201.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "(All) 1.706 1.188 1.091 1.044 1.019 1.01 1.005 1.002 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "#### Part 4 - Selected Age-to-Age Factors" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "#### Prior Selected" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-120120-132
(All)1.70701.18901.09101.04401.01901.01001.00501.00301.00101.0020
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "(All) 1.707 1.189 1.091 1.044 1.019 1.01 1.005 1.003 1.001 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Selected" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
199818,539,25433,231,03940,062,00843,892,03945,896,53546,765,42247,221,32247,446,87747,555,45647,644,187
199920,410,19336,090,68443,259,40247,159,24149,208,53250,162,04350,625,75750,878,80851,000,534
200022,120,84338,976,01446,389,28250,562,38552,735,28053,740,10154,284,33454,533,225
200122,992,25940,096,19847,767,83552,093,91654,363,43655,378,80155,878,421
200224,092,78241,795,31349,903,80354,352,88456,754,37657,807,215
200324,084,45141,399,61249,070,33253,584,20155,930,654
200424,369,77041,489,86349,236,67853,774,672
200525,100,69742,702,22950,644,994
200625,608,77643,606,497
200727,229,969
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0\n", + "1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN\n", + "2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN\n", + "2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN\n", + "2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN\n", + "2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN\n", + "2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN\n", + "2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### CDF to Ultimate" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)2.39001.40401.18401.08501.04001.02001.01101.00601.00401.0020
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "(All) 2.39 1.404 1.184 1.085 1.04 1.02 1.011 1.006 1.004 1.002" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Percent Reported" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)0.41800.71200.84500.92200.96200.98000.98900.99400.99600.9980
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "(All) 0.418 0.712 0.845 0.922 0.962 0.98 0.989 0.994 0.996 0.998" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Markdown(\"#### Part 1 - Data Triangle\"))\n", + "display(tri['Paid Claims'])\n", + "\n", + "display(Markdown(\"#### Part 2 - Age-to-Age Factors\"))\n", + "display(tri['Paid Claims'].age_to_age.round(decimals = 3))\n", + "\n", + "display(Markdown(\"#### Part 3 - Average Age-to-Age Factors\"))\n", + "\n", + "display(Markdown(\"##### Simple Average\"))\n", + "display(Markdown(\"##### Latest 5\"))\n", + "paid_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Paid Claims'])\n", + "display(paid_simple_5.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"##### Latest 3\"))\n", + "paid_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Paid Claims'])\n", + "display(paid_simple_3.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"##### Medial Average\"))\n", + "display(Markdown(\"##### Latest 5 x 1\"))\n", + "paid_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1, preserve=1).fit_transform(tri['Paid Claims'])\n", + "display(paid_medial_5x1.ldf_)\n", + "\n", + "display(Markdown(\"##### Volume-weighted Average\"))\n", + "display(Markdown(\"##### Latest 5\"))\n", + "paid_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Paid Claims'])\n", + "display(paid_volume_5.ldf_.round(decimals = 3) )\n", + "\n", + "display(Markdown(\"##### Latest 3\"))\n", + "paid_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Paid Claims'])\n", + "display(paid_volume_3.ldf_.round(decimals = 3) )\n", + "\n", + "display(Markdown(\"##### Geometric Average\"))\n", + "display(Markdown(\"##### Latest 4\"))\n", + "paid_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Paid Claims'])\n", + "display(paid_geometric_4.ldf_.round(decimals = 3))\n", + "\n", + "display(Markdown(\"#### Part 4 - Selected Age-to-Age Factors\"))\n", + "display(Markdown(\"#### Prior Selected\"))\n", + "\n", + "paid_prior_method = cl.DevelopmentConstant(\n", + " patterns = {\n", + " 12:1.707, \n", + " 24:1.189, \n", + " 36:1.091, \n", + " 48:1.044, \n", + " 60:1.019, \n", + " 72:1.01, \n", + " 84:1.005, \n", + " 96:1.003, \n", + " 108:1.001\n", + " }, \n", + " style='ldf'\n", + " )\n", + "paid_prior_ft = paid_prior_method.fit_transform(tri['Paid Claims'])\n", + "paid_tail_method = cl.TailConstant(\n", + " tail = 1.002,\n", + " projection_period = 0\n", + " )\n", + "paid_prior_selected = paid_tail_method.fit_transform(paid_prior_ft)\n", + "display(paid_prior_selected.ldf_)\n", + "\n", + "display(Markdown(\"##### Selected\"))\n", + "paid_selected_pattern = paid_tail_method.fit_transform(paid_simple_3)\n", + "display(paid_selected_pattern)\n", + "\n", + "display(Markdown(\"##### CDF to Ultimate\"))\n", + "paid_selected_cdf = paid_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3)\n", + "display(paid_selected_cdf)\n", + "\n", + "display(Markdown(\"##### Percent Reported\"))\n", + "display((1 / paid_selected_cdf).round(decimals = 3))\n" + ] + }, + { + "cell_type": "markdown", + "id": "b43918c2", + "metadata": {}, + "source": [ + "### Exhibit I, Sheet 3 (p. 108)\n", + "\n", + "This is a common report layout for reserving analyses. Some ``Pandas`` manipulation is needed to retrieve all the figures from the transformed ``Triangle`` objects and achieve the tabular look. We will create a function to reuse the manipulation throughout this chapter." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fd322ebc", + "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", + "
AgeReported ClaimsPaid ClaimsReported CDFPaid CDFReported UltimatePaid Ultimate
199812047742304.047644187.01.0000001.0020004.774230e+074.773948e+07
199910851185767.051000534.01.0003691.0038705.120467e+075.119788e+07
20009654837929.054533225.01.0009541.0062195.489024e+075.487237e+07
20018456299562.055878421.01.0025401.0110365.644257e+075.649507e+07
20027258592712.057807215.01.0053001.0206045.890327e+075.899830e+07
20036057565344.055930654.01.0099081.0397525.813573e+075.815399e+07
20044856976657.053774672.01.0215541.0853415.820476e+075.836386e+07
20053656786410.050644994.01.0494931.1842185.959697e+075.997474e+07
20062454641339.043606497.01.1081391.4044856.055018e+076.124466e+07
20071248853563.027229969.01.2899772.3906886.301997e+076.509837e+07
\n", + "
" + ], + "text/plain": [ + " Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", + "1998 120 47742304.0 47644187.0 1.000000 1.002000 4.774230e+07 4.773948e+07\n", + "1999 108 51185767.0 51000534.0 1.000369 1.003870 5.120467e+07 5.119788e+07\n", + "2000 96 54837929.0 54533225.0 1.000954 1.006219 5.489024e+07 5.487237e+07\n", + "2001 84 56299562.0 55878421.0 1.002540 1.011036 5.644257e+07 5.649507e+07\n", + "2002 72 58592712.0 57807215.0 1.005300 1.020604 5.890327e+07 5.899830e+07\n", + "2003 60 57565344.0 55930654.0 1.009908 1.039752 5.813573e+07 5.815399e+07\n", + "2004 48 56976657.0 53774672.0 1.021554 1.085341 5.820476e+07 5.836386e+07\n", + "2005 36 56786410.0 50644994.0 1.049493 1.184218 5.959697e+07 5.997474e+07\n", + "2006 24 54641339.0 43606497.0 1.108139 1.404485 6.055018e+07 6.124466e+07\n", + "2007 12 48853563.0 27229969.0 1.289977 2.390688 6.301997e+07 6.509837e+07" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame():\n", + " output = pd.DataFrame() # initializing a DataFrame\n", + " output[\"Reported Claims\"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index\n", + " age = reported.development.iloc[::-1] # flipping the age order\n", + " age.index = output.index # forcing the index to match\n", + " output['Age'] = age\n", + " output = output[['Age','Reported Claims']] # reordering the columns\n", + " output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses\n", + " reported_cdf = reported.cdf_.T # transposing the CDF\n", + " reported_cdf.index = output.index[::-1] # forcing the index to match\n", + " output[\"Reported CDF\"] = reported_cdf \n", + " paid_cdf = paid.cdf_.T\n", + " paid_cdf.index = output.index[::-1]\n", + " output[\"Paid CDF\"] = paid_cdf\n", + " output[\"Reported Ultimate\"] = cl.Chainladder().fit(reported).ultimate_.to_frame(origin_as_datetime=False) # using the Chainladder estimator to return the ultimate\n", + " output[\"Paid Ultimate\"] = cl.Chainladder().fit(paid).ultimate_.to_frame(origin_as_datetime=False)\n", + " return output\n", + "\n", + "exhibit = development_summary(reported_selected_pattern,paid_selected_pattern)\n", + "display(exhibit)" + ] + }, + { + "cell_type": "markdown", + "id": "5c49069a", + "metadata": {}, + "source": [ + "Unfortunately this does not match the table from the text, due to rounding. We will construct a separate, rounded exhibit to reconcile to the text." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "275bf425", + "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", + "
Reported CDFPaid CDFReported UltimatePaid Ultimate
19981.0001.00247742304.047739475.0
19991.0001.00451185767.051204536.0
20001.0011.00654892767.054860424.0
20011.0031.01156468461.056493084.0
20021.0061.02058944268.058963359.0
20031.0111.04058198563.058167880.0
20041.0231.08558287120.058345519.0
20051.0511.18459682517.059963673.0
20061.1101.40460651886.061223522.0
20071.2922.39063118803.065079626.0
\n", + "
" + ], + "text/plain": [ + " Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", + "1998 1.000 1.002 47742304.0 47739475.0\n", + "1999 1.000 1.004 51185767.0 51204536.0\n", + "2000 1.001 1.006 54892767.0 54860424.0\n", + "2001 1.003 1.011 56468461.0 56493084.0\n", + "2002 1.006 1.020 58944268.0 58963359.0\n", + "2003 1.011 1.040 58198563.0 58167880.0\n", + "2004 1.023 1.085 58287120.0 58345519.0\n", + "2005 1.051 1.184 59682517.0 59963673.0\n", + "2006 1.110 1.404 60651886.0 61223522.0\n", + "2007 1.292 2.390 63118803.0 65079626.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def rounded_development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame():\n", + " output = pd.DataFrame() # initializing a DataFrame\n", + " output[\"Reported Claims\"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index\n", + " age = reported.development.iloc[::-1] # flipping the age order\n", + " age.index = output.index # forcing the index to match\n", + " output['Age'] = age\n", + " output = output[['Age','Reported Claims']] # reordering the columns\n", + " output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses\n", + " reported_cdf = reported.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T\n", + " reported_cdf.index = output.index[::-1]\n", + " output[\"Reported CDF\"] = reported_cdf\n", + " paid_cdf = paid.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T\n", + " paid_cdf.index = output.index[::-1]\n", + " output[\"Paid CDF\"] = paid_cdf\n", + " output[\"Reported Ultimate\"] = (output['Reported Claims'] * output[\"Reported CDF\"]).round(decimals = 0) # taking a short cut to calculate the ultimate without using Chainladder \n", + " output[\"Paid Ultimate\"] = (output['Paid Claims'] * output[\"Paid CDF\"]).round(decimals = 0)\n", + " return output\n", + "\n", + "rounded_exhibit = rounded_development_summary(reported_selected_pattern,paid_selected_pattern)\n", + "display(rounded_exhibit[['Reported CDF','Paid CDF','Reported Ultimate','Paid Ultimate']]) # only displaying the rounded columns\n" + ] + }, + { + "cell_type": "markdown", + "id": "30855316", + "metadata": {}, + "source": [ + "### Exhibit I, Sheet 4 p109\n", + "\n", + "This is another common report layout for reserving analyses. The manipulation here are more straight-forward that the previous exhibit." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "0afe3488", + "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", + "
Case OutstandingReported Method IBNRPaid Method IBNRReported Method UnpaidPaid Method Unpaid
199898117.00.0-2829.098117.095288.0
1999185233.00.018769.0185233.0204002.0
2000304704.054838.022495.0359542.0327199.0
2001421141.0168899.0193522.0590040.0614663.0
2002785497.0351556.0370647.01137053.01156144.0
20031634690.0633219.0602536.02267909.02237226.0
20043201985.01310463.01368862.04512448.04570847.0
20056141416.02896107.03177263.09037523.09318679.0
200611034842.06010547.06582183.017045389.017617025.0
200721623594.014265240.016226063.035888834.037849657.0
\n", + "
" + ], + "text/plain": [ + " Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid\n", + "1998 98117.0 0.0 -2829.0 98117.0 95288.0\n", + "1999 185233.0 0.0 18769.0 185233.0 204002.0\n", + "2000 304704.0 54838.0 22495.0 359542.0 327199.0\n", + "2001 421141.0 168899.0 193522.0 590040.0 614663.0\n", + "2002 785497.0 351556.0 370647.0 1137053.0 1156144.0\n", + "2003 1634690.0 633219.0 602536.0 2267909.0 2237226.0\n", + "2004 3201985.0 1310463.0 1368862.0 4512448.0 4570847.0\n", + "2005 6141416.0 2896107.0 3177263.0 9037523.0 9318679.0\n", + "2006 11034842.0 6010547.0 6582183.0 17045389.0 17617025.0\n", + "2007 21623594.0 14265240.0 16226063.0 35888834.0 37849657.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def unpaid_summary(dev_sum: pd.DataFrame()) -> pd.DataFrame():\n", + " output = dev_sum.loc[:,['Reported Claims','Paid Claims','Reported Ultimate','Paid Ultimate']]\n", + " output['Case Outstanding'] = output['Reported Claims'] - output['Paid Claims']\n", + " output['Reported Method IBNR'] = output['Reported Ultimate'] - output['Reported Claims']\n", + " output['Paid Method IBNR'] = output['Paid Ultimate'] - output['Reported Claims']\n", + " output['Reported Method Unpaid'] = output['Reported Method IBNR'] + output['Case Outstanding']\n", + " output['Paid Method Unpaid'] = output['Paid Method IBNR'] + output['Case Outstanding']\n", + " return output\n", + "\n", + "unpaid_exhibit = unpaid_summary(rounded_exhibit)\n", + "display(unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']])" + ] + }, + { + "cell_type": "markdown", + "id": "550d195d", + "metadata": {}, + "source": [ + "# Exhibit II - XYZ Insurer\n", + "\n", + "In Exhibit II, Friedland applies the Development method to XYZ Insurer, a private passenger automobile bodily injury liability insurer to illustrate how the method performs in scenarios where due to changing conditions historical claims experience may not be an appropriate predictor of future claims activity. We reproduce these results in the following cells." + ] + }, + { + "cell_type": "markdown", + "id": "08b3f118", + "metadata": {}, + "source": [ + "### Exhibit II, Sheet 1 p110\n", + "\n", + "Now that we have walked through an analysis step by step, let's introduce some scaling by streamlining the entire exhibit into single function. " + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "9ba05d2f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PART 1 - Data Triangle\n", + " 12 24 36 48 60 72 84 96 108 120 132\n", + "1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + "1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + "2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + "2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + "2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + "2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + "2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + "2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "PART 2 - Age-to-Age Factors\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "1998 NaN NaN 1.108227 1.067528 1.064392 1.044146 1.114243 0.987596 0.979707 0.999179\n", + "1999 NaN 1.237646 1.197135 1.144305 1.057447 1.055967 0.988085 1.011131 1.001436 NaN\n", + "2000 1.196032 1.168062 1.239452 1.086354 1.168543 1.072291 1.015048 0.993094 NaN NaN\n", + "2001 1.353175 1.313547 1.264295 1.286967 1.085689 1.037834 1.006668 NaN NaN NaN\n", + "2002 1.590040 1.308591 1.413078 1.179122 1.096524 0.989076 NaN NaN NaN NaN\n", + "2003 1.760957 1.786055 1.337353 1.089595 1.003210 NaN NaN NaN NaN NaN\n", + "2004 2.364225 1.465057 1.218140 0.980211 NaN NaN NaN NaN NaN NaN\n", + "2005 1.654181 1.482965 1.004478 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 1.728479 1.043199 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1.629204 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "PART 3 - Average Age-to-Age Factor\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "simple_5 1.827 1.417 1.247 1.124 1.082 1.040 1.031 0.997 0.991 0.999\n", + "simple_3 1.671 1.330 1.187 1.083 1.062 1.033 1.003 0.997 0.991 0.999\n", + "simple_2 1.679 1.263 1.111 1.035 1.050 1.013 1.011 1.002 0.991 0.999\n", + "volume_4 1.802 1.376 1.185 1.094 1.081 1.033 1.019 0.998 0.993 0.999\n", + "volume_3 1.674 1.325 1.147 1.060 1.060 1.028 1.005 0.998 0.993 0.999\n", + "volume_2 1.687 1.265 1.102 1.020 1.050 1.010 1.011 1.000 0.993 0.999\n", + "geometric_3 1.670 1.314 1.178 1.080 1.061 1.033 1.003 0.997 0.991 0.999\n", + "medial 5x1 1.715 1.419 1.273 1.118 1.080 1.046 1.011 0.993 0.991 0.999\n", + "PART 4 - Selected Age-to-Age Factor\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144\n", + "Selected 1.687 1.265 1.102 1.02 1.05 1.01 1.011 1.0 0.993 0.999 1.0\n", + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult\n", + "CDF to Ultimate 2.551 1.512 1.196 1.085 1.064 1.013 1.003 0.992 0.992 0.999 1.0\n", + "Percent Reported 0.392 0.661 0.836 0.922 0.940 0.987 0.997 1.008 1.008 1.001 1.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\utils\\triangle_weight.py:361: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", + " warnings.warn(warning)\n", + "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\development\\base.py:272: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", + " warnings.warn(warning)\n" + ] + }, + { + "data": { + "text/plain": [ + "{'simple_5': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'simple_3': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'simple_2': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'volume_4': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'volume_3': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'volume_2': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'geometric_3': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'medial 5x1': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", + " 'Selected': 12 24 36 48 60 72 84 96 108 120 132\n", + " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", + " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", + " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", + " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", + " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", + " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", + " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", + " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", + " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN}" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]:\n", + " print('PART 1 - Data Triangle')\n", + " print(tri)\n", + " print('PART 2 - Age-to-Age Factors')\n", + " print(tri.age_to_age)\n", + " devs = {}\n", + " print('PART 3 - Average Age-to-Age Factor')\n", + " for k,v in avg_params.items():\n", + " devs[k] = cl.Development(**v).fit_transform(tri)\n", + " def print_ldfs(ldf_dict:dict[cl.Triangle()]):\n", + " print(pd.concat([v.to_frame().rename(index={'(All)':k}) for k,v in ldf_dict.items()]))\n", + " return None\n", + " print_ldfs({k:v.ldf_.round(decimals=3) for k,v in devs.items()})\n", + " devs[\"Selected\"] = cl.TailConstant(tail = tail, projection_period = 0).fit_transform(devs[selected_avg])\n", + " selected = {}\n", + " selected['CDF to Ultimate'] = devs[\"Selected\"].ldf_.round(decimals=3).incr_to_cum().round(decimals=3)\n", + " selected['Percent Reported'] = (1/selected['CDF to Ultimate']).round(decimals=3)\n", + " print('PART 4 - Selected Age-to-Age Factor')\n", + " print_ldfs({'Selected':devs['Selected'].ldf_.round(decimals=3)})\n", + " print_ldfs(selected)\n", + " return devs\n", + "\n", + "import re\n", + "tri = cl.load_sample('friedland_xyz_auto_bi')\n", + "assumptions_list = ['simple_5','simple_3','simple_2','volume_4','volume_3','volume_2','geometric_3']\n", + "assumptions = {x:{'n_periods':int(re.match(r'.+_(.+)', x).group(1)),'average':re.match(r'(.+)_', x).group(1)} for x in assumptions_list}\n", + "assumptions['medial 5x1'] = {'n_periods':5, 'average':'simple','drop_high':1, 'drop_low':1}\n", + "reported_devs = dev_exhibit(tri['Reported Claims'],assumptions,'volume_2',1)\n", + "display(reported_devs)" + ] + }, + { + "cell_type": "markdown", + "id": "e849b1b9", + "metadata": {}, + "source": [ + "### Exhibit II, Sheet 2 (p. 111)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "61ff6e10", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PART 1 - Data Triangle\n", + " 12 24 36 48 60 72 84 96 108 120 132\n", + "1998 NaN NaN 6309.0 8521.0 10082.0 11620.0 13242.0 14419.0 15311.0 15764.0 15822.0\n", + "1999 NaN 4666.0 9861.0 13971.0 18127.0 22032.0 23511.0 24146.0 24592.0 24817.0 NaN\n", + "2000 1302.0 6513.0 12139.0 17828.0 24030.0 28853.0 33222.0 35902.0 36782.0 NaN NaN\n", + "2001 1539.0 5952.0 12319.0 18609.0 24387.0 31090.0 37070.0 38519.0 NaN NaN NaN\n", + "2002 2318.0 7932.0 13822.0 22095.0 31945.0 40629.0 44437.0 NaN NaN NaN NaN\n", + "2003 1743.0 6240.0 12683.0 22892.0 34505.0 39320.0 NaN NaN NaN NaN NaN\n", + "2004 2221.0 9898.0 25950.0 43439.0 52811.0 NaN NaN NaN NaN NaN NaN\n", + "2005 3043.0 12219.0 27073.0 40026.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 3531.0 11778.0 22819.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 3529.0 11865.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 3409.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "PART 2 - Age-to-Age Factors\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "1998 NaN NaN 1.350610 1.183194 1.152549 1.139587 1.088884 1.061863 1.029587 1.003679\n", + "1999 NaN 2.113373 1.416793 1.297473 1.215425 1.067130 1.027009 1.018471 1.009149 NaN\n", + "2000 5.002304 1.863811 1.468655 1.347880 1.200707 1.151423 1.080669 1.024511 NaN NaN\n", + "2001 3.867446 2.069724 1.510593 1.310495 1.274860 1.192345 1.039088 NaN NaN NaN\n", + "2002 3.421915 1.742562 1.598539 1.445802 1.271842 1.093726 NaN NaN NaN NaN\n", + "2003 3.580034 2.032532 1.804936 1.507295 1.139545 NaN NaN NaN NaN NaN\n", + "2004 4.456551 2.621742 1.673950 1.215751 NaN NaN NaN NaN NaN NaN\n", + "2005 4.015445 2.215648 1.478447 NaN NaN NaN NaN NaN NaN NaN\n", + "2006 3.335599 1.937426 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2007 3.362142 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "PART 3 - Average Age-to-Age Factor\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "simple_5 3.750 2.110 1.613 1.365 1.220 1.129 1.059 1.035 1.019 1.004\n", + "simple_3 3.571 2.258 1.652 1.390 1.229 1.146 1.049 1.035 1.019 1.004\n", + "simple_2 3.349 2.077 1.576 1.362 1.206 1.143 1.060 1.021 1.019 1.004\n", + "volume_4 3.713 2.206 1.615 1.342 1.218 1.128 1.056 1.030 1.017 1.004\n", + "volume_3 3.550 2.238 1.619 1.349 1.222 1.141 1.051 1.030 1.017 1.004\n", + "volume_2 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004\n", + "geometric_3 3.558 2.241 1.647 1.384 1.227 1.145 1.049 1.035 1.019 1.004\n", + "medial 5x1 3.653 2.062 1.594 1.368 1.229 1.128 1.060 1.025 1.019 1.004\n", + "PART 4 - Selected Age-to-Age Factor\n", + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144\n", + "Selected 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 1.01\n", + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult\n", + "CDF to Ultimate 21.999 6.569 3.160 2.007 1.525 1.268 1.116 1.054 1.031 1.014 1.01\n", + "Percent Reported 0.045 0.152 0.316 0.498 0.656 0.789 0.896 0.949 0.970 0.986 0.99\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\utils\\triangle_weight.py:361: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", + " warnings.warn(warning)\n", + "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\development\\base.py:272: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", + " warnings.warn(warning)\n" + ] + } + ], + "source": [ + "paid_devs = dev_exhibit(tri['Paid Claims'],assumptions,'volume_2',1.01)" + ] + }, + { + "cell_type": "markdown", + "id": "5f9a5cfe", + "metadata": {}, + "source": [ + "### Exhibit II, Sheet 3 (p. 112)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "ddbe5caf", + "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", + "
AgeReported ClaimsPaid ClaimsReported CDFPaid CDFReported UltimatePaid Ultimate
199813215822.015822.01.0001.01015822.015980.0
199912025107.024817.00.9991.01425082.025164.0
200010837246.036782.00.9921.03136948.037922.0
20019638798.038519.00.9921.05438488.040599.0
20028448169.044437.01.0031.11648314.049592.0
20037244373.039320.01.0131.26844950.049858.0
20046070288.052811.01.0641.52574786.080537.0
20054870655.040026.01.0852.00776661.080332.0
20063648804.022819.01.1963.16058370.072108.0
20072431732.011865.01.5126.56947979.077941.0
20081218632.03409.02.55121.99947530.074995.0
\n", + "
" + ], + "text/plain": [ + " Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", + "1998 132 15822.0 15822.0 1.000 1.010 15822.0 15980.0\n", + "1999 120 25107.0 24817.0 0.999 1.014 25082.0 25164.0\n", + "2000 108 37246.0 36782.0 0.992 1.031 36948.0 37922.0\n", + "2001 96 38798.0 38519.0 0.992 1.054 38488.0 40599.0\n", + "2002 84 48169.0 44437.0 1.003 1.116 48314.0 49592.0\n", + "2003 72 44373.0 39320.0 1.013 1.268 44950.0 49858.0\n", + "2004 60 70288.0 52811.0 1.064 1.525 74786.0 80537.0\n", + "2005 48 70655.0 40026.0 1.085 2.007 76661.0 80332.0\n", + "2006 36 48804.0 22819.0 1.196 3.160 58370.0 72108.0\n", + "2007 24 31732.0 11865.0 1.512 6.569 47979.0 77941.0\n", + "2008 12 18632.0 3409.0 2.551 21.999 47530.0 74995.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "exhibit = rounded_development_summary(reported_devs[\"Selected\"],paid_devs[\"Selected\"])\n", + "display(exhibit)" + ] + }, + { + "cell_type": "markdown", + "id": "bad2ac2d", + "metadata": {}, + "source": [ + "### Exhibit II, Sheet 4 p113" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "ebca99e7", + "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", + "
Case OutstandingReported Method IBNRPaid Method IBNRReported Method UnpaidPaid Method Unpaid
19980.00.0158.00.0158.0
1999290.0-25.057.0265.0347.0
2000464.0-298.0676.0166.01140.0
2001279.0-310.01801.0-31.02080.0
20023732.0145.01423.03877.05155.0
20035053.0577.05485.05630.010538.0
200417477.04498.010249.021975.027726.0
200530629.06006.09677.036635.040306.0
200625985.09566.023304.035551.049289.0
200719867.016247.046209.036114.066076.0
200815223.028898.056363.044121.071586.0
\n", + "
" + ], + "text/plain": [ + " Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid\n", + "1998 0.0 0.0 158.0 0.0 158.0\n", + "1999 290.0 -25.0 57.0 265.0 347.0\n", + "2000 464.0 -298.0 676.0 166.0 1140.0\n", + "2001 279.0 -310.0 1801.0 -31.0 2080.0\n", + "2002 3732.0 145.0 1423.0 3877.0 5155.0\n", + "2003 5053.0 577.0 5485.0 5630.0 10538.0\n", + "2004 17477.0 4498.0 10249.0 21975.0 27726.0\n", + "2005 30629.0 6006.0 9677.0 36635.0 40306.0\n", + "2006 25985.0 9566.0 23304.0 35551.0 49289.0\n", + "2007 19867.0 16247.0 46209.0 36114.0 66076.0\n", + "2008 15223.0 28898.0 56363.0 44121.0 71586.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "unpaid_exhibit = unpaid_summary(exhibit)\n", + "display(unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']])" + ] + }, + { + "cell_type": "markdown", + "id": "d0f4b576", + "metadata": {}, + "source": [ + "### Persisting the Selected Estimators\n", + "\n", + "The selected reported and paid development estimators are reused in later chapters, such as the Bornhuetter-Ferguson technique in Chapter 9. Rather than refitting them, we persist the fitted estimators with ``to_json`` so they can be recalled directly. JSON is used rather than a pickle so the saved estimators load reliably across package and dependency versions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "892a00dd", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "data_dir = os.path.join(os.path.dirname(cl.__file__), \"utils\", \"data\")\n", + "\n", + "#with open(os.path.join(data_dir, \"friedland_ch7_xyz_reported.json\"), \"w\") as f:\n", + " #_ = f.write(reported_devs[\"Selected\"].to_json())\n", + "\n", + "#with open(os.path.join(data_dir, \"friedland_ch7_xyz_paid.json\"), \"w\") as f:\n", + " #_ = f.write(paid_devs[\"Selected\"].to_json())" + ] + }, + { + "cell_type": "markdown", + "id": "7a9e5a4a", + "metadata": {}, + "source": [ + "## Exhibit III — U.S. Industry P.P. Auto (Impact of Changing Conditions)\n", + "\n", + "In order to illustrate the assumptions and corresponding limitations of the Development method, Exhibit III applies the method to the **U.S. Private Passenger Industry Auto** (USPP Auto) example under four different scenarios:\n", + "\n", + "1. stable claim ratios and no change in case outstanding strength (steady state);\n", + "1. increasing claim ratios but no change in case outstanding strength;\n", + "1. stable claim ratios but increasing case outstanding strength; and\n", + "1. increasing claim ratios and increasing case outstanding strength.\n", + "\n", + "The key assumptions of this study are as follows:\n", + "\n", + "- the earned premium for the first year (1999) is assumed to be $1 million with a 5% annual premium trend;\n", + "- (discuss assumed claim ratios)\n", + "\n", + "Since the USPP Auto dataset is contained in the `chainladder` package, we simply load it into a triangle as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5595108e", + "metadata": {}, + "outputs": [], + "source": [ + "triangles = cl.load_sample(\"friedland_uspp\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79e5ac39", + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [], + "source": [ + "def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]:\n", + " display('')\n", + " display(HTML(\"\"\"\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " \"\"\"))\n", + " display(tri)\n", + " display(HTML(\"\"\"\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " \"\"\"))\n", + " age_to_age_df = tri.age_to_age.to_frame(origin_as_datetime=False)\n", + " display(\n", + " age_to_age_df.style.format(precision=3, na_rep=\"\")\n", + " )\n", + " devs = {}\n", + " display(HTML(\"\"\"\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " \"\"\"))\n", + " for k,v in avg_params.items():\n", + " devs[k] = cl.Development(**v).fit_transform(tri)\n", + " def print_ldfs(ldf_dict:dict[cl.Triangle()]):\n", + " with pd.option_context(\"display.float_format\", \"{:.3f}\".format):\n", + " display(pd.concat([v.to_frame().rename(index={'(All)':k}) for k,v in ldf_dict.items()]))\n", + " return None\n", + " print_ldfs({k:v.ldf_.round(decimals=3) for k,v in devs.items()})\n", + " devs[\"Selected\"] = cl.TailConstant(tail = tail, projection_period = 0).fit_transform(devs[selected_avg])\n", + " selected = {}\n", + " selected['CDF to Ultimate'] = devs[\"Selected\"].ldf_.round(decimals=3).incr_to_cum().round(decimals=3)\n", + " selected['Percent Reported'] = (1/selected['CDF to Ultimate']).round(decimals=3)\n", + " display(HTML(\"\"\"\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " \"\"\"))\n", + " print_ldfs({'Selected':devs['Selected'].ldf_.round(decimals=3)})\n", + " print_ldfs(selected)\n", + " return devs" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "99de7a11", + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [], + "source": [ + "#| hide-input\n", + "\n", + "def ex3sht1(\n", + " tri: cl.Triangle,\n", + " dev_input: dict,\n", + " tail_input: dict\n", + ") -> tuple:\n", + " \n", + " def format_col(x, reverse = False):\n", + " if reverse is True:\n", + " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", + " return x.to_frame().squeeze().reset_index(drop=True)\n", + "\n", + " def col_diff(x, y):\n", + " return x.squeeze() - y.squeeze()\n", + "\n", + " def col_div(x, y):\n", + " return x.squeeze() / y.squeeze()\n", + "\n", + " def col_mult(x, y):\n", + " return x.squeeze() * y.squeeze()\n", + "\n", + " title = (\"Exhibit III, Sheet 1, Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\")\n", + " #scenario = \"Steady State\"\n", + "\n", + " dev = cl.Development(**dev_input).fit(tri)\n", + " model = cl.Chainladder().fit(dev.transform(tri))\n", + " tail = cl.TailConstant(**tail_input).fit_transform(dev.transform(tri))\n", + " ult = model.ultimate_\n", + " ibnr = model.ibnr_\n", + "\n", + " col1 = pd.DataFrame({\"Accident Year\" : format_col(tri.origin.astype(str))})\n", + " col2 = pd.DataFrame({\"Earned Premium\" : format_col(tri.latest_diagonal.loc[\"Steady State\", \"Earned Premium\"])})\n", + " col4 = pd.DataFrame({\"Ult. Claims\" : format_col(ult.loc[\"Steady State\", \"Reported Claims\"])})\n", + " col3 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col4, col2)})\n", + " col5 = pd.DataFrame({\"Rep. Claims 12/31/08\" : format_col(tri.latest_diagonal.loc[\"Steady State\", \"Reported Claims\"])})\n", + " col6 = pd.DataFrame({\"Actual IBNR\" : col_diff(col4, col5)})\n", + " col8 = pd.DataFrame({\"Ult. Claims\" : format_col(ult.loc[\"Increasing Claim\", \"Reported Claims\"])})\n", + " col9 = pd.DataFrame({\"Rep. Claims 12/31/08\" : format_col(tri.latest_diagonal.loc[\"Increasing Claim\", \"Reported Claims\"])})\n", + " col7 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col8, col2)})\n", + " col10 = pd.DataFrame({\"Actual IBNR\" : col_diff(col8, col9)})\n", + " col11 = pd.DataFrame({\"Accident Year\" : tri.origin.astype(str)})\n", + " col12 = pd.DataFrame({\"Earned Premium\" : format_col(tri.latest_diagonal.loc[\"Steady State\", \"Earned Premium\"])})\n", + " col14 = pd.DataFrame({\"Ult. Claims\" : format_col(ult.loc[\"Steady State\", \"Reported Claims\"])})\n", + " col13 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col14, col12)})\n", + " col15 = pd.DataFrame({\"Rep. Claims 12/31/08\" : format_col(tri.latest_diagonal.loc[\"Increasing Case\", \"Reported Claims\"])})\n", + " col16 = pd.DataFrame({\"Actual IBNR\" : col_diff(col14, col15)})\n", + " col18 = pd.DataFrame({\"Ult. Claims\" : format_col(ult.loc[\"Increasing Claim\", \"Reported Claims\"])})\n", + " col17 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col18, col12)})\n", + " col19 = pd.DataFrame({\"Rep. Claims 12/31/08\" : format_col(tri.latest_diagonal.loc[\"Increasing Claim Case\", \"Reported Claims\"])})\n", + " col20 = pd.DataFrame({\"Actual IBNR\" : col_diff(col18, col19)})\n", + "\n", + " cols = [col1, col2, col3, col4, col5, col6]\n", + " df1 = pd.concat([col1, col2], axis=1)\n", + " df2 = pd.concat([col3, col4, col5, col6], axis=1)\n", + " df3 = pd.concat([col7, col8, col9, col10], axis=1)\n", + " df4 = pd.concat([col11, col12], axis=1)\n", + " df5 = pd.concat([col13, col14, col15, col16], axis=1)\n", + " df6 = pd.concat([col17, col18, col19, col20], axis=1)\n", + "\n", + " dfs_upper = [df1, df2, df3]\n", + " dfs_lower = [df4, df5, df6]\n", + "\n", + " results_upper = pd.concat(dfs_upper, axis=1, keys=[\"\", \"Steady State\", \"Increasing Claim Ratios\"])\n", + " results_upper = results_upper.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", + " results_upper.index.name = \"Accident Year\" \n", + " results_upper.loc[\"Total\"] = results_upper.sum()\n", + "\n", + " #remove the totals from the ratio columns (where totals do not make sense)\n", + " results_upper.loc[\"Total\", (\"Steady State\", \"Ult. Claim Ratio\")] = np.nan\n", + " results_upper.loc[\"Total\", (\"Increasing Claim Ratios\", \"Ult. Claim Ratio\")] = np.nan\n", + "\n", + " results_lower = pd.concat(dfs_lower, axis=1, keys=[\"\", \"Increasing Case Outstanding Strength\", \"Increasing Claim Ratios and Case Outstanding Strength\"])\n", + " results_lower = results_lower.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", + " results_lower.index.name = \"Accident Year\" \n", + " results_lower.loc[\"Total\"] = results_lower.sum()\n", + "\n", + " #remove the totals from the ratio columns (where totals do not make sense)\n", + " results_lower.loc[\"Total\", (\"Increasing Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", + " results_lower.loc[\"Total\", (\"Increasing Claim Ratios and Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", + "\n", + " display(HTML(\"\"\"\n", + "

\n", + " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", + "

\n", + " \"\"\"))\n", + " display(results_upper)\n", + " display(results_lower)\n", + "\n", + " return (results_upper, results_lower)" + ] + }, + { + "cell_type": "markdown", + "id": "1af7e20d", + "metadata": {}, + "source": [ + "## Exhibit III — U.S. Private-Passenger Industry Auto - Impact of Changing Conditions\n", + "\n", + "### Exhibit III, Sheet 1 - Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", + "\n", + "We first reproduce Exhibit III, Sheet 1 of Chapter 7 of Friedland (p. 114), which summarizes the earned premium and claim ratio assumptions under the four scenarios:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "06a03be7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "

\n", + " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
Steady StateIncreasing Claim Ratios
Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,0001700,000700,00001700,000700,0000
20001,050,0001735,000735,00001735,000735,0000
20011,102,5001771,750771,75001771,750771,7500
20021,157,6251810,338810,33801810,338810,3380
20031,215,5061850,855842,3468,5091850,855842,3468,509
20041,276,2821893,397884,4638,93411,021,0251,010,81510,210
20051,340,0961938,068919,30618,76211,139,0821,116,30022,782
20061,407,1001984,970935,72249,24811,266,3911,203,07163,320
20071,477,45511,034,219930,797103,42211,403,5821,263,224140,358
20081,551,32811,085,930836,166249,76411,551,3281,194,523356,805
Total12,577,893NaN8,804,5278,365,888438,639NaN10,249,3519,647,367601,984
\n", + "
" + ], + "text/plain": [ + " Steady State Increasing Claim Ratios \n", + " Earned Premium Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR\n", + "Accident Year \n", + "1999 1,000,000 1 700,000 700,000 0 1 700,000 700,000 0\n", + "2000 1,050,000 1 735,000 735,000 0 1 735,000 735,000 0\n", + "2001 1,102,500 1 771,750 771,750 0 1 771,750 771,750 0\n", + "2002 1,157,625 1 810,338 810,338 0 1 810,338 810,338 0\n", + "2003 1,215,506 1 850,855 842,346 8,509 1 850,855 842,346 8,509\n", + "2004 1,276,282 1 893,397 884,463 8,934 1 1,021,025 1,010,815 10,210\n", + "2005 1,340,096 1 938,068 919,306 18,762 1 1,139,082 1,116,300 22,782\n", + "2006 1,407,100 1 984,970 935,722 49,248 1 1,266,391 1,203,071 63,320\n", + "2007 1,477,455 1 1,034,219 930,797 103,422 1 1,403,582 1,263,224 140,358\n", + "2008 1,551,328 1 1,085,930 836,166 249,764 1 1,551,328 1,194,523 356,805\n", + "Total 12,577,893 NaN 8,804,527 8,365,888 438,639 NaN 10,249,351 9,647,367 601,984" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,0001700,000700,00001700,000700,0000
20001,050,0001735,000735,00001735,000735,0000
20011,102,5001771,750771,75001771,750771,7500
20021,157,6251810,338810,33801810,338810,3380
20031,215,5061850,855842,3468,5091850,855842,3468,509
20041,276,2821893,397884,4638,93411,021,0251,010,81510,210
20051,340,0961938,068933,3774,69111,139,0821,133,3865,696
20061,407,1001984,970962,80822,16211,266,3911,237,89728,494
20071,477,45511,034,219979,92254,29711,403,5821,329,89573,687
20081,551,32811,085,930931,185154,74511,551,3281,330,264221,064
Total12,577,893NaN8,804,5278,551,189253,338NaN10,249,3519,901,691347,660
\n", + "
" + ], + "text/plain": [ + " Increasing Case Outstanding Strength Increasing Claim Ratios and Case Outstanding Strength \n", + " Earned Premium Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR\n", + "Accident Year \n", + "1999 1,000,000 1 700,000 700,000 0 1 700,000 700,000 0\n", + "2000 1,050,000 1 735,000 735,000 0 1 735,000 735,000 0\n", + "2001 1,102,500 1 771,750 771,750 0 1 771,750 771,750 0\n", + "2002 1,157,625 1 810,338 810,338 0 1 810,338 810,338 0\n", + "2003 1,215,506 1 850,855 842,346 8,509 1 850,855 842,346 8,509\n", + "2004 1,276,282 1 893,397 884,463 8,934 1 1,021,025 1,010,815 10,210\n", + "2005 1,340,096 1 938,068 933,377 4,691 1 1,139,082 1,133,386 5,696\n", + "2006 1,407,100 1 984,970 962,808 22,162 1 1,266,391 1,237,897 28,494\n", + "2007 1,477,455 1 1,034,219 979,922 54,297 1 1,403,582 1,329,895 73,687\n", + "2008 1,551,328 1 1,085,930 931,185 154,745 1 1,551,328 1,330,264 221,064\n", + "Total 12,577,893 NaN 8,804,527 8,551,189 253,338 NaN 10,249,351 9,901,691 347,660" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dev_input = {\n", + " \"average\" : \"volume\",\n", + " \"n_periods\" : 5\n", + "}\n", + "\n", + "tail_input = {\n", + " \"tail\" : 1.0,\n", + " \"projection_period\" : -1\n", + "}\n", + "\n", + "res_up, res_low = ex3sht1(triangles, dev_input, tail_input)" + ] + }, + { + "cell_type": "markdown", + "id": "e8023233", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 2 - Sheet 2: USPP Auto Steady-State - Reported Claims\n", + "\n", + "We then generate Sheet 2, Parts 1-4 which contain the data triangle and age-to-age factors for USPP reported claims under the steady-state scenario (p. 115)." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "3f94ce14", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999539,000630,000665,000686,000693,000693,000700,000700,000700,000700,000
2000565,950661,500698,250720,300727,650727,650735,000735,000735,000
2001594,248694,575733,163756,315764,033764,033771,750771,750
2002623,960729,304769,821794,131802,234802,234810,338
2003655,158765,769808,312833,837842,346842,346
2004687,916804,057848,727875,529884,463
2005722,312844,260891,164919,306
2006758,427886,473935,722
2007796,348930,797
2008836,166
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", + "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", + "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", + "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", + "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", + "2004 687,916 804,057 848,727 875,529 884,463 NaN NaN NaN NaN NaN\n", + "2005 722,312 844,260 891,164 919,306 NaN NaN NaN NaN NaN NaN\n", + "2006 758,427 886,473 935,722 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 796,348 930,797 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 836,166 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.1691.0561.0321.0101.0001.0101.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.169 1.056 1.032 1.010 1.000 1.010 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.1691.0561.0321.0101.0001.0101.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.169 1.056 1.032 1.010 1.000 1.010 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.3001.1121.0531.0201.0101.0101.0001.0001.0001.000
Percent Reported0.7690.8990.9500.9800.9900.9901.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.300 1.112 1.053 1.020 1.010 1.010 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.769 0.899 0.950 0.980 0.990 0.990 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Steady State\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "582c31f3", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 3: USPP Auto Steady-State - Paid Claims\n", + "\n", + "We then generate Sheet 3, Parts 1-4 which contain the data triangle and age-to-age factors for USPP paid claims under the steady-state scenario (p. 116)." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "80dde7e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999294,000497,000588,000644,000672,000686,000693,000693,000700,000700,000
2000308,700521,850617,400676,200705,600720,300727,650727,650735,000
2001324,135547,943648,270710,010740,880756,315764,033764,033
2002340,342575,340680,684745,511777,924794,131802,234
2003357,359604,107714,718782,786816,820833,837
2004375,227634,312750,454821,925857,661
2005393,988666,028787,976863,022
2006413,688699,329827,375
2007434,372734,295
2008456,090
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", + "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", + "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", + "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", + "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", + "2004 375,227 634,312 750,454 821,925 857,661 NaN NaN NaN NaN NaN\n", + "2005 393,988 666,028 787,976 863,022 NaN NaN NaN NaN NaN NaN\n", + "2006 413,688 699,329 827,375 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 434,372 734,295 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 456,090 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.6901.1831.0951.0431.0211.0101.0001.0101.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.6901.1831.0951.0431.0211.0101.0001.0101.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate2.3781.4071.1901.0861.0421.0201.0101.0101.0001.000
Percent Reported0.4210.7110.8400.9210.9600.9800.9900.9901.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 2.378 1.407 1.190 1.086 1.042 1.020 1.010 1.010 1.000 1.000\n", + "Percent Reported 0.421 0.711 0.840 0.921 0.960 0.980 0.990 0.990 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Steady State\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "31ba3995", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 4: USPP Auto Increasing Claim Ratios - Reported Claims\n", + "\n", + "We then generate Sheet 4, Parts 1-4 which contain the data triangle and age-to-age factors for USPP reported claims under the increasing claim ratio scenario (p. 117)." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "35744cce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999539,000630,000665,000686,000693,000693,000700,000700,000700,000700,000
2000565,950661,500698,250720,300727,650727,650735,000735,000735,000
2001594,248694,575733,163756,315764,033764,033771,750771,750
2002623,960729,304769,821794,131802,234802,234810,338
2003655,158765,769808,312833,837842,346842,346
2004786,189918,923969,9741,000,6051,010,815
2005877,0931,025,1731,082,1271,116,300
2006975,1211,139,7511,203,071
20071,080,7591,263,224
20081,194,523
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", + "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", + "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", + "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", + "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", + "2004 786,189 918,923 969,974 1,000,605 1,010,815 NaN NaN NaN NaN NaN\n", + "2005 877,093 1,025,173 1,082,127 1,116,300 NaN NaN NaN NaN NaN NaN\n", + "2006 975,121 1,139,751 1,203,071 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1,080,759 1,263,224 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1,194,523 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.1691.0561.0321.0101.0001.0101.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.169 1.056 1.032 1.010 1.000 1.010 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.1691.0561.0321.0101.0001.0101.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.169 1.056 1.032 1.010 1.000 1.010 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.3001.1121.0531.0201.0101.0101.0001.0001.0001.000
Percent Reported0.7690.8990.9500.9800.9900.9901.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.300 1.112 1.053 1.020 1.010 1.010 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.769 0.899 0.950 0.980 0.990 0.990 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Claim\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "cd087aa9", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 5: USPP Auto Increasing Claim Ratios - Paid Claims\n", + "\n", + "We then generate Sheet 5, Parts 1-4 which contain the data triangle and age-to-age factors for USPP paid claims under the increasing claim ratio scenario (p. 118)." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "8d9a4359", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999294,000497,000588,000644,000672,000686,000693,000693,000700,000700,000
2000308,700521,850617,400676,200705,600720,300727,650727,650735,000
2001324,135547,943648,270710,010740,880756,315764,033764,033
2002340,342575,340680,684745,511777,924794,131802,234
2003357,359604,107714,718782,786816,820833,837
2004428,831724,928857,661939,343980,184
2005478,414808,748956,8281,047,955
2006531,884899,1371,063,768
2007589,505996,544
2008651,558
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", + "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", + "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", + "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", + "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", + "2004 428,831 724,928 857,661 939,343 980,184 NaN NaN NaN NaN NaN\n", + "2005 478,414 808,748 956,828 1,047,955 NaN NaN NaN NaN NaN NaN\n", + "2006 531,884 899,137 1,063,768 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 589,505 996,544 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 651,558 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.6901.1831.0951.0431.0211.0101.0001.0101.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.6901.1831.0951.0431.0211.0101.0001.0101.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate2.3781.4071.1901.0861.0421.0201.0101.0101.0001.000
Percent Reported0.4210.7110.8400.9210.9600.9800.9900.9901.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 2.378 1.407 1.190 1.086 1.042 1.020 1.010 1.010 1.000 1.000\n", + "Percent Reported 0.421 0.711 0.840 0.921 0.960 0.980 0.990 0.990 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Claim\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "c12b6661", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 6: USPP Auto Increasing Case Outstanding Strength - Reported Claims\n", + "\n", + "We then generate Sheet 6, Parts 1-4 which contain the data triangle and age-to-age factors for USPP reported claims under the increasing case outstanding strength scenario (p. 119)." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "0ab5bcf6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999539,000630,000665,000686,000693,000693,000700,000700,000700,000700,000
2000565,950661,500698,250720,300727,650727,650735,000735,000735,000
2001594,248694,575733,163756,315764,033764,033771,750771,750
2002623,960729,304769,821794,131802,234802,234810,338
2003655,158765,769808,312833,837842,346842,346
2004687,916804,057848,727878,745884,463
2005722,312844,260897,355933,377
2006758,427897,702962,808
2007818,067979,922
2008931,185
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", + "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", + "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", + "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", + "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", + "2004 687,916 804,057 848,727 878,745 884,463 NaN NaN NaN NaN NaN\n", + "2005 722,312 844,260 897,355 933,377 NaN NaN NaN NaN NaN NaN\n", + "2006 758,427 897,702 962,808 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 818,067 979,922 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 931,185 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.1781.0611.0341.0091.0001.0101.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.178 1.061 1.034 1.009 1.000 1.010 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.1781.0611.0341.0091.0001.0101.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.178 1.061 1.034 1.009 1.000 1.010 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.3171.1181.0541.0191.0101.0101.0001.0001.0001.000
Percent Reported0.7590.8940.9490.9810.9900.9901.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.317 1.118 1.054 1.019 1.010 1.010 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.759 0.894 0.949 0.981 0.990 0.990 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Case\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "fce58cd8", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 7: USPP Auto Increasing Case Outstanding Strength - Paid Claims\n", + "\n", + "We then generate Sheet 7, Parts 1-4 which contain the data triangle and age-to-age factors for USPP paid claims under the increasing case outstanding strength scenario (p. 120)." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "5a759ad5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999294,000497,000588,000644,000672,000686,000693,000693,000700,000700,000
2000308,700521,850617,400676,200705,600720,300727,650727,650735,000
2001324,135547,943648,270710,010740,880756,315764,033764,033
2002340,342575,340680,684745,511777,924794,131802,234
2003357,359604,107714,718782,786816,820833,837
2004375,227634,312750,454821,925857,661
2005393,988666,028787,976863,022
2006413,688699,329827,375
2007434,372734,295
2008456,090
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", + "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", + "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", + "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", + "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", + "2004 375,227 634,312 750,454 821,925 857,661 NaN NaN NaN NaN NaN\n", + "2005 393,988 666,028 787,976 863,022 NaN NaN NaN NaN NaN NaN\n", + "2006 413,688 699,329 827,375 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 434,372 734,295 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 456,090 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.6901.1831.0951.0431.0211.0101.0001.0101.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.6901.1831.0951.0431.0211.0101.0001.0101.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate2.3781.4071.1901.0861.0421.0201.0101.0101.0001.000
Percent Reported0.4210.7110.8400.9210.9600.9800.9900.9901.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 2.378 1.407 1.190 1.086 1.042 1.020 1.010 1.010 1.000 1.000\n", + "Percent Reported 0.421 0.711 0.840 0.921 0.960 0.980 0.990 0.990 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Case\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "dcd4322b", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 8: USPP Auto Increasing Claim Ratios and Increasing Case Outstanding Strength - Reported Claims\n", + "\n", + "We then generate Sheet 8, Parts 1-4 which contain the data triangle and age-to-age factors for USPP reported claims under the increasing claims ratio / increasing case outstanding strength scenario (p. 121)." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "ec0b53a5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999539,000630,000665,000686,000693,000693,000700,000700,000700,000700,000
2000565,950661,500698,250720,300727,650727,650735,000735,000735,000
2001594,248694,575733,163756,315764,033764,033771,750771,750
2002623,960729,304769,821794,131802,234802,234810,338
2003655,158765,769808,312833,837842,346842,346
2004786,189918,923969,9741,004,2801,010,815
2005877,0931,025,1731,089,6451,133,386
2006975,1211,154,1881,237,897
20071,110,2341,329,895
20081,330,264
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", + "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", + "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", + "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", + "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", + "2004 786,189 918,923 969,974 1,004,280 1,010,815 NaN NaN NaN NaN NaN\n", + "2005 877,093 1,025,173 1,089,645 1,133,386 NaN NaN NaN NaN NaN NaN\n", + "2006 975,121 1,154,188 1,237,897 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1,110,234 1,329,895 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1,330,264 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.1791.0611.0351.0091.0001.0101.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.179 1.061 1.035 1.009 1.000 1.010 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.1791.0611.0351.0091.0001.0101.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.179 1.061 1.035 1.009 1.000 1.010 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.3191.1191.0551.0191.0101.0101.0001.0001.0001.000
Percent Reported0.7580.8940.9480.9810.9900.9901.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.319 1.119 1.055 1.019 1.010 1.010 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.758 0.894 0.948 0.981 0.990 0.990 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Claim Case\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "9a085c93", + "metadata": {}, + "source": [ + "### Exhibit III, Sheet 9: USPP Auto Increasing Claim Ratios and Increasing Case Outstanding Strength - Paid Claims\n", + "\n", + "We then generate Sheet 9, Parts 1-4 which contain the data triangle and age-to-age factors for USPP paid claims under the increasing claims ratio / increasing case outstanding strength scenario (p. 122):" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "16a0f5fd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999294,000497,000588,000644,000672,000686,000693,000693,000700,000700,000
2000308,700521,850617,400676,200705,600720,300727,650727,650735,000
2001324,135547,943648,270710,010740,880756,315764,033764,033
2002340,342575,340680,684745,511777,924794,131802,234
2003357,359604,107714,718782,786816,820833,837
2004428,831724,928857,661939,343980,184
2005478,414808,748956,8281,047,955
2006531,884899,1371,063,768
2007589,505996,544
2008651,558
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", + "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", + "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", + "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", + "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", + "2004 428,831 724,928 857,661 939,343 980,184 NaN NaN NaN NaN NaN\n", + "2005 478,414 808,748 956,828 1,047,955 NaN NaN NaN NaN NaN NaN\n", + "2006 531,884 899,137 1,063,768 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 589,505 996,544 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 651,558 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.6901.1831.0951.0431.0211.0101.0001.0101.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.6901.1831.0951.0431.0211.0101.0001.0101.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.690 1.183 1.095 1.043 1.021 1.010 1.000 1.010 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate2.3781.4071.1901.0861.0421.0201.0101.0101.0001.000
Percent Reported0.4210.7110.8400.9210.9600.9800.9900.9901.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 2.378 1.407 1.190 1.086 1.042 1.020 1.010 1.010 1.000 1.000\n", + "Percent Reported 0.421 0.711 0.840 0.921 0.960 0.980 0.990 0.990 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(triangles.loc[\"Increasing Claim Case\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "191822b3", + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [], + "source": [ + "#| hide-input\n", + "\n", + "def Ex10Sht10(scenario, tr):\n", + "\n", + " def format_col(x, reverse = False):\n", + " if reverse is True:\n", + " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", + " return x.to_frame().squeeze().reset_index(drop=True)\n", + "\n", + " def col_diff(x, y):\n", + " return x.squeeze() - y.squeeze()\n", + "\n", + " def col_mult(x, y):\n", + " return x.squeeze() * y.squeeze()\n", + "\n", + " tri = tr.copy()\n", + "\n", + " dev_input = {\n", + " \"average\" : \"volume\",\n", + " \"n_periods\" : 5\n", + " }\n", + "\n", + " tail_input = {\n", + " \"tail\" : 1.0,\n", + " \"projection_period\" : -1\n", + " }\n", + "\n", + " dev = cl.Development(**dev_input)\n", + " tail = cl.TailConstant(**tail_input)\n", + " tri = tail.fit_transform(dev.fit_transform(tri))\n", + "\n", + " actual_scenario = (\n", + " \"Steady State\"\n", + " if scenario in [\"Steady State\", \"Increasing Case\"]\n", + " else \"Increasing Claim\"\n", + " )\n", + "\n", + " cdf = format_col(tri.cdf_.loc[actual_scenario][\"Reported Claims\"], reverse=True)\n", + " ult = format_col(tri.loc[actual_scenario][\"Reported Claims\"].latest_diagonal)\n", + " \n", + " col1 = pd.DataFrame({\n", + " \"Accident Year\" : format_col(tr.origin)\n", + " })\n", + "\n", + " col2 = pd.DataFrame({\n", + " \"Age of Accident Year at 12/31/08\" : format_col(tr.development, reverse=True)\n", + "\n", + " })\n", + "\n", + " col3 = pd.DataFrame({\n", + " \"Claims at 12/31/2008 - Reported\" : format_col(tri.loc[scenario][\"Reported Claims\"].latest_diagonal)\n", + "\n", + " })\n", + "\n", + " col4 = pd.DataFrame({\n", + " \"Claims at 12/31/2008 - Paid\" : format_col(tri.loc[scenario][\"Paid Claims\"].latest_diagonal)\n", + "\n", + " })\n", + "\n", + " col5 = pd.DataFrame({\n", + " \"Case Outstanding\" : col_diff(col3, col4)\n", + "\n", + " })\n", + "\n", + " col6 = pd.DataFrame({\n", + " \"CDF to Ult. - Reported\" : format_col(tri.cdf_.loc[scenario][\"Reported Claims\"], reverse=True)\n", + "\n", + " })\n", + "\n", + " col7 = pd.DataFrame({\n", + " \"CDF to Ult. - Paid\" : format_col(tri.cdf_.loc[scenario][\"Paid Claims\"], reverse=True)\n", + " })\n", + "\n", + " col8 = pd.DataFrame({\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\" : col_mult(col3, col6)\n", + " })\n", + "\n", + " col9 = pd.DataFrame({\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\" : col_mult(col4, col7)\n", + " })\n", + "\n", + " col10 = pd.DataFrame({\n", + " \"Estimated IBNR Using Dev. Method - Reported\" : col_diff(col8, col3)\n", + " })\n", + "\n", + " col11 = pd.DataFrame({\n", + " \"Estimated IBNR Using Dev. Method - Paid\" : col_diff(col9, col3)\n", + " })\n", + "\n", + " col12 = pd.DataFrame({\n", + " \"Actual IBNR\" : col_diff(col_mult(ult, cdf), col3)\n", + " })\n", + "\n", + " col13 = pd.DataFrame({\n", + " \"Difference from Actual IBNR - Reported\" : col_diff(col12, col10)\n", + " })\n", + "\n", + " col14 = pd.DataFrame({\n", + " \"Difference from Actual IBNR - Paid\" : col_diff(col12, col11)\n", + " })\n", + "\n", + "\n", + " cols = [col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14]\n", + "\n", + " results = pd.concat(cols, axis=1)\n", + "\n", + " \n", + "\n", + " display(\n", + " results\n", + " )\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "4a34afcd", + "metadata": {}, + "source": [ + "### Exhibit III, Sheets 10 and 11: USPP Auto Development of Unpaid Claim Estimate\n", + "\n", + "We then generate Sheets 10 and 11 which illustrate the differences between the actual IBNR and the IBNR obtained through the development method for each scenario (pp. 123-124)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48f63e22", + "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", + "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1
3200284810,338802,2348,10411810,338810,3370-1001
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
5200460884,463857,66126,80211893,397893,3978,9348,9348,93400
6200548919,306863,02256,28411938,068938,06718,76218,76118,76200
7200636935,722827,375108,34711984,970984,97049,24849,24849,24800
8200724930,797734,295196,502111,034,2191,034,218103,422103,421103,42201
9200812836,166456,090380,076121,085,9301,085,928249,764249,762249,76402
\n", + "
" + ], + "text/plain": [ + " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", + "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", + "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", + "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", + "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", + "5 2004 60 884,463 857,661 26,802 1 1 893,397 893,397 8,934 8,934 8,934 0 0\n", + "6 2005 48 919,306 863,022 56,284 1 1 938,068 938,067 18,762 18,761 18,762 0 0\n", + "7 2006 36 935,722 827,375 108,347 1 1 984,970 984,970 49,248 49,248 49,248 0 0\n", + "8 2007 24 930,797 734,295 196,502 1 1 1,034,219 1,034,218 103,422 103,421 103,422 0 1\n", + "9 2008 12 836,166 456,090 380,076 1 2 1,085,930 1,085,928 249,764 249,762 249,764 0 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1
3200284810,338802,2348,10411810,338810,3370-1001
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
52004601,010,815980,18430,631111,021,0251,021,02510,21010,21010,21000
62005481,116,3001,047,95568,345111,139,0821,139,08122,78222,78122,78200
72006361,203,0711,063,768139,303111,266,3911,266,39063,32063,31963,32000
82007241,263,224996,544266,680111,403,5821,403,583140,358140,359140,3580-0
92008121,194,523651,558542,965121,551,3281,551,328356,805356,805356,80500
\n", + "
" + ], + "text/plain": [ + " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", + "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", + "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", + "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", + "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", + "5 2004 60 1,010,815 980,184 30,631 1 1 1,021,025 1,021,025 10,210 10,210 10,210 0 0\n", + "6 2005 48 1,116,300 1,047,955 68,345 1 1 1,139,082 1,139,081 22,782 22,781 22,782 0 0\n", + "7 2006 36 1,203,071 1,063,768 139,303 1 1 1,266,391 1,266,390 63,320 63,319 63,320 0 0\n", + "8 2007 24 1,263,224 996,544 266,680 1 1 1,403,582 1,403,583 140,358 140,359 140,358 0 -0\n", + "9 2008 12 1,194,523 651,558 542,965 1 2 1,551,328 1,551,328 356,805 356,805 356,805 0 0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1
3200284810,338802,2348,10411810,338810,3370-1001
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
5200460884,463857,66126,80211893,397893,3978,9348,9348,93400
6200548933,377863,02270,35511951,657938,06718,2804,6904,691-13,5890
7200636962,808827,375135,433111,015,301984,97052,49322,16222,162-30,3310
8200724979,922734,295245,627111,096,2351,034,218116,31354,29654,297-62,0161
9200812931,185456,090475,095121,227,5891,085,928296,404154,743154,745-141,6592
\n", + "
" + ], + "text/plain": [ + " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", + "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", + "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", + "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", + "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", + "5 2004 60 884,463 857,661 26,802 1 1 893,397 893,397 8,934 8,934 8,934 0 0\n", + "6 2005 48 933,377 863,022 70,355 1 1 951,657 938,067 18,280 4,690 4,691 -13,589 0\n", + "7 2006 36 962,808 827,375 135,433 1 1 1,015,301 984,970 52,493 22,162 22,162 -30,331 0\n", + "8 2007 24 979,922 734,295 245,627 1 1 1,096,235 1,034,218 116,313 54,296 54,297 -62,016 1\n", + "9 2008 12 931,185 456,090 475,095 1 2 1,227,589 1,085,928 296,404 154,743 154,745 -141,659 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1
3200284810,338802,2348,10411810,338810,3370-1001
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
52004601,010,815980,18430,631111,021,0251,021,02510,21010,21010,21000
62005481,133,3861,047,95585,431111,155,4821,139,08122,0965,6955,696-16,4000
72006361,237,8971,063,768174,129111,305,6391,266,39067,74228,49328,494-39,2490
82007241,329,895996,544333,351111,488,8751,403,583158,98073,68873,687-85,293-0
92008121,330,264651,558678,706121,756,5041,551,328426,240221,064221,064-205,1760
\n", + "
" + ], + "text/plain": [ + " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", + "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", + "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", + "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", + "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", + "5 2004 60 1,010,815 980,184 30,631 1 1 1,021,025 1,021,025 10,210 10,210 10,210 0 0\n", + "6 2005 48 1,133,386 1,047,955 85,431 1 1 1,155,482 1,139,081 22,096 5,695 5,696 -16,400 0\n", + "7 2006 36 1,237,897 1,063,768 174,129 1 1 1,305,639 1,266,390 67,742 28,493 28,494 -39,249 0\n", + "8 2007 24 1,329,895 996,544 333,351 1 1 1,488,875 1,403,583 158,980 73,688 73,687 -85,293 -0\n", + "9 2008 12 1,330,264 651,558 678,706 1 2 1,756,504 1,551,328 426,240 221,064 221,064 -205,176 0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scenarios = [\"Steady State\",\"Increasing Claim\",\"Increasing Case\",\"Increasing Claim Case\"]\n", + "\n", + "for scenario in scenarios:\n", + " Ex10Sht10(scenario, triangles)" + ] + }, + { + "cell_type": "markdown", + "id": "82fddb5f", + "metadata": {}, + "source": [ + "## Exhibit IV — Impact of Changing Product Mix Example\n", + "\n", + "In order to illustrate the assumptions and corresponding limitations of the Development method, Exhibit III applies the method to the **U.S. Private Passenger Industry Auto** (USPP Auto) example under four different scenarios:\n", + "\n", + "1. stable claim ratios and no change in case outstanding strength (steady state);\n", + "1. increasing claim ratios but no change in case outstanding strength;\n", + "1. stable claim ratios but increasing case outstanding strength; and\n", + "1. increasing claim ratios and increasing case outstanding strength.\n", + "\n", + "The key assumptions of this study are as follows:\n", + "\n", + "- the earned premium for the first year (1999) is assumed to be $1 million with a 5% annual premium trend;\n", + "- (discuss assumed claim ratios)\n", + "\n", + "Since the USPP Auto dataset is contained in the `chainladder` package, we simply load it into a triangle as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b98e5e9c", + "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
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,0001,500,000
20001,061,5501,316,7001,445,8501,526,7001,550,8501,567,6501,575,0001,575,0001,575,000
20011,114,6281,382,5351,518,1431,603,0351,628,3931,646,0331,653,7501,653,750
20021,170,3591,451,6621,594,0501,683,1871,709,8121,728,3341,736,438
20031,228,8771,524,2451,673,7521,767,3461,795,3031,814,751
20041,290,3211,600,4571,757,4401,855,7131,885,068
20051,354,8371,680,4801,845,3121,948,499
20061,422,5791,764,5041,937,577
20071,493,707
20083,421,122
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 1,011,000 1,254,000 1,377,000 1,454,000 1,477,000 1,493,000 1,500,000 1,500,000 1,500,000 1,500,000\n", + "2000 1,061,550 1,316,700 1,445,850 1,526,700 1,550,850 1,567,650 1,575,000 1,575,000 1,575,000 NaN\n", + "2001 1,114,628 1,382,535 1,518,143 1,603,035 1,628,393 1,646,033 1,653,750 1,653,750 NaN NaN\n", + "2002 1,170,359 1,451,662 1,594,050 1,683,187 1,709,812 1,728,334 1,736,438 NaN NaN NaN\n", + "2003 1,228,877 1,524,245 1,673,752 1,767,346 1,795,303 1,814,751 NaN NaN NaN NaN\n", + "2004 1,290,321 1,600,457 1,757,440 1,855,713 1,885,068 NaN NaN NaN NaN NaN\n", + "2005 1,354,837 1,680,480 1,845,312 1,948,499 NaN NaN NaN NaN NaN NaN\n", + "2006 1,422,579 1,764,504 1,937,577 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1,493,707 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 3,421,122 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/friedland/chapter_7.rst b/docs/friedland/chapter_7.rst deleted file mode 100644 index 0bc55bb98..000000000 --- a/docs/friedland/chapter_7.rst +++ /dev/null @@ -1,595 +0,0 @@ -================================================================ -Chapter 7 - Development Technique -================================================================ - - The development technique, also known as the chain ladder technique, is one of the most frequently used methodologies for estimating unpaid claims. - - -- Friedland, p84 - -This chapter covers the foundational development/chainladder method. In the chainladder package, this is implemented in the ``Development`` estimator. - -.. doctest:: - - >>> import numpy as np - >>> import pandas as pd - >>> import chainladder as cl - >>> pd.set_option('display.max_columns', None) - >>> pd.set_option('display.width', 1000) - -Exhibit I Sheet 1 p106 -########################## - -Diving straight into Exhibit 1. - -PART 1 - Data Triangle ------------------------ - -We have already imported the necessary packages loading the ``Triangle`` at the top of p106. Let's take a look at the ``Triangle`` we just loaded. - -.. doctest:: - - >>> tri = cl.load_sample('friedland_us_industry_auto') - >>> tri['Reported Claims'] - 12 24 36 48 60 72 84 96 108 120 - 1998 37017487.0 43169009.0 45568919.0 46784558.0 47337318.0 47533264.0 47634419.0 47689655.0 47724678.0 47742304.0 - 1999 38954484.0 46045718.0 48882924.0 50219672.0 50729292.0 50926779.0 51069285.0 51163540.0 51185767.0 NaN - 2000 41155776.0 49371478.0 52358476.0 53780322.0 54303086.0 54582950.0 54742188.0 54837929.0 NaN NaN - 2001 42394069.0 50584112.0 53704296.0 55150118.0 55895583.0 56156727.0 56299562.0 NaN NaN NaN - 2002 44755243.0 52971643.0 56102312.0 57703851.0 58363564.0 58592712.0 NaN NaN NaN NaN - 2003 45163102.0 52497731.0 55468551.0 57015411.0 57565344.0 NaN NaN NaN NaN NaN - 2004 45417309.0 52640322.0 55553673.0 56976657.0 NaN NaN NaN NaN NaN NaN - 2005 46360869.0 53790061.0 56786410.0 NaN NaN NaN NaN NaN NaN NaN - 2006 46582684.0 54641339.0 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 48853563.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN - -PART 2 - Age-to-Age Factors ----------------------------- - -To calculate age-to-age factors, use the ``age-to-age`` attribute of the ``Triangle``. - -.. doctest:: - - >>> tri['Reported Claims'].age_to_age.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - 1998 1.166 1.056 1.027 1.012 1.004 1.002 1.001 1.001 1.0 - 1999 1.182 1.062 1.027 1.010 1.004 1.003 1.002 1.000 NaN - 2000 1.200 1.061 1.027 1.010 1.005 1.003 1.002 NaN NaN - 2001 1.193 1.062 1.027 1.014 1.005 1.003 NaN NaN NaN - 2002 1.184 1.059 1.029 1.011 1.004 NaN NaN NaN NaN - 2003 1.162 1.057 1.028 1.010 NaN NaN NaN NaN NaN - 2004 1.159 1.055 1.026 NaN NaN NaN NaN NaN NaN - 2005 1.160 1.056 NaN NaN NaN NaN NaN NaN NaN - 2006 1.173 NaN NaN NaN NaN NaN NaN NaN NaN - -PART 3 - Average Age-to-Age Factors ------------------------------------- - -To calculate the average age-to-age factors, we will use the ``Development`` estimator to ``fit_transform`` the original ``Triangle``. This calculates the averages but also preserves the ability to apply other estimators later. The specific choices of average paramters (n_period, etc.) are provided to ``Development``. The attribute for the calculated average age-to-age factors is the ``ldf_``. - -.. doctest:: - - # Simple Average - # Latest 5 - >>> reported_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Reported Claims']) - >>> reported_simple_5.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0 - - # Latest 3 - >>> reported_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Reported Claims']) - >>> reported_simple_3.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 - - # Medial Average - # Latest 5x1 - >>> reported_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1).fit_transform(tri['Reported Claims']) - >>> reported_medial_5x1.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.165 1.057 1.027 1.01 1.004 1.003 1.002 1.001 1.0 - - # Volume-weighted Average - # Latest 5 - >>> reported_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Reported Claims']) - >>> reported_volume_5.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0 - - # Latest 3 - >>> reported_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Reported Claims']) - >>> reported_volume_3.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 - - # Geometric Average - # Latest 4 - >>> reported_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims']) - >>> reported_geometric_4.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.164 1.057 1.027 1.011 1.004 1.003 1.002 1.001 1.0 - -PART 4 - Selected Age-to-Age Factors --------------------------------------- - -For the prior selected, we need to create a hard-coded pattern, using the ``DevelopmentConstant`` estimator. In a production workflow, you can save the development pattern from the prior analysis and load for reference in a subsequent analysis. - -We will also be using the ``TailConstant`` estimator to add a tail factor to selected development patterns. We add the tail factor to a transformed ``Triangle`` (i.e. applying ``fit_transforme`` of the ``Development`` estimator to a ``Triangle``) by using ``fit_transform`` once again. - -.. doctest:: - - # Prior Selected - >>> reported_prior_method = cl.DevelopmentConstant( - ... patterns = { - ... 12:1.16, - ... 24:1.057, - ... 36:1.028, - ... 48:1.012, - ... 60:1.005, - ... 72:1.003, - ... 84:1.001, - ... 96:1.001, - ... 108:1.000 - ... }, - ... style='ldf' - ... ) - >>> reported_prior_ft = reported_prior_method.fit_transform(tri['Reported Claims']) - >>> reported_tail_method = cl.TailConstant( - ... tail = 1, - ... projection_period = 0 - ... ) - >>> reported_prior_selected = reported_tail_method.fit_transform(reported_prior_ft) - >>> reported_prior_selected.ldf_ - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - (All) 1.16 1.057 1.028 1.012 1.005 1.003 1.001 1.001 1.0 1.0 - -Next we can select some factors. We can also reuse the `TailConstant` from the previous step. This is fairly common in practice, as tail factors are selected less frequently than the development pattern itself, so need to be carried from analysis to analysis. - -.. doctest:: - - # Selected - >>> reported_selected_pattern = reported_tail_method.fit_transform(reported_simple_3) - >>> reported_selected_pattern.ldf_.round(decimals=3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 1.0 - -The Development estimator has a ``cdf_`` attribute that will automatically multiply age-to-age factors cumulatively into age-to-ultimate factors. The Friedland text uses the rounded LDF to calculate CDF. This can be achieved in this package by using the ``incr_to_cum()`` method of the rounded age-to-age factors. - -.. doctest:: - - # CDF to Ultimate - # First without rounding - >>> reported_selected_pattern.cdf_ - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult - (All) 1.289977 1.108139 1.049493 1.021554 1.009908 1.0053 1.00254 1.000954 1.000369 1.0 - - # Then with rounding - >>> reported_selected_cdf = reported_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3) - >>> reported_selected_cdf - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult - (All) 1.292 1.11 1.051 1.023 1.011 1.006 1.003 1.001 1.0 1.0 - -To calculate % reported, we will use ``Triangle`` manipulation from Chapter 5 directly on the development pattern (which is also a ``Triangle``). - -.. doctest:: - - # Percent Reported - >>> (1 / reported_selected_cdf).round(decimals = 3) - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult - (All) 0.774 0.901 0.951 0.978 0.989 0.994 0.997 0.999 1.0 1.0 - -Exhibit I Sheet 2 p107 -########################## - -Moving onto the next page, all the calculations are identical to the previous page. We will manually repeat the same code. In a production workflow, commonly repeated methods and selections can be streamlined, which we will demonstrate in Exhibit II. - -PART 1 - Data Triangle ------------------------ - -.. doctest:: - - >>> tri['Paid Claims'] - 12 24 36 48 60 72 84 96 108 120 - 1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0 - 1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN - 2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN - 2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN - 2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN - 2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN - 2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN - 2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN - 2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN - -PART 2 - Age-to-Age Factors ----------------------------- - -.. doctest:: - - >>> tri['Paid Claims'].age_to_age.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - 1998 1.792 1.206 1.096 1.046 1.019 1.010 1.005 1.002 1.002 - 1999 1.768 1.199 1.090 1.043 1.019 1.009 1.005 1.002 NaN - 2000 1.762 1.190 1.090 1.043 1.019 1.010 1.005 NaN NaN - 2001 1.744 1.191 1.091 1.044 1.019 1.009 NaN NaN NaN - 2002 1.735 1.194 1.089 1.044 1.019 NaN NaN NaN NaN - 2003 1.719 1.185 1.092 1.044 NaN NaN NaN NaN NaN - 2004 1.703 1.187 1.092 NaN NaN NaN NaN NaN NaN - 2005 1.701 1.186 NaN NaN NaN NaN NaN NaN NaN - 2006 1.703 NaN NaN NaN NaN NaN NaN NaN NaN - -PART 3 - Average Age-to-Age Factors ------------------------------------- - -.. doctest:: - - # Simple Average - # Latest 5 - >>> paid_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Paid Claims']) - >>> paid_simple_5.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002 - - # Latest 3 - >>> paid_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Paid Claims']) - >>> paid_simple_3.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 - - # Medial Average - # Latest 5x1 - >>> paid_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1).fit_transform(tri['Paid Claims']) - >>> paid_medial_5x1.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.708 1.188 1.091 1.044 1.019 1.009 1.005 1.002 1.002 - - # Volume-weighted Average - # Latest 5 - >>> paid_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Paid Claims']) - >>> paid_volume_5.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002 - - # Latest 3 - >>> paid_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Paid Claims']) - >>> paid_volume_3.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 - - # Geometric Average - # Latest 4 - >>> paid_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Paid Claims']) - >>> paid_geometric_4.ldf_.round(decimals = 3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 - (All) 1.706 1.188 1.091 1.044 1.019 1.01 1.005 1.002 1.002 - -PART 4 - Selected Age-to-Age Factors --------------------------------------- - -.. doctest:: - - # Prior Selected - >>> paid_prior_method = cl.DevelopmentConstant( - ... patterns = { - ... 12:1.707, - ... 24:1.189, - ... 36:1.091, - ... 48:1.044, - ... 60:1.019, - ... 72:1.01, - ... 84:1.005, - ... 96:1.003, - ... 108:1.001 - ... }, - ... style='ldf' - ... ) - >>> paid_prior_ft = paid_prior_method.fit_transform(tri['Paid Claims']) - >>> paid_tail_method = cl.TailConstant( - ... tail = 1.002, - ... projection_period = 0 - ... ) - >>> paid_prior_selected = paid_tail_method.fit_transform(paid_prior_ft) - >>> paid_prior_selected.ldf_ - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - (All) 1.707 1.189 1.091 1.044 1.019 1.01 1.005 1.003 1.001 1.002 - - # Selected - >>> paid_selected_pattern = paid_tail_method.fit_transform(paid_simple_3) - >>> paid_selected_pattern.ldf_.round(decimals=3) - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 1.002 - - # CDF to Ultimate - >>> paid_selected_cdf = paid_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3) - >>> paid_selected_cdf - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult - (All) 2.39 1.404 1.184 1.085 1.04 1.02 1.011 1.006 1.004 1.002 - - # Percent Reported - >>> (1 / paid_selected_cdf).round(decimals = 3) - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult - (All) 0.418 0.712 0.845 0.922 0.962 0.98 0.989 0.994 0.996 0.998 - -Exhibit I Sheet 3 p108 -########################## - -This is a common report layout for reserving analyses. Some ``Pandas`` manipulation is needed to retrieve all the figures from the transformed ``Triangle`` objects and achieve the tabular look. We will create a function to reuse the manipulation throughout this chapter. - -.. doctest:: - - >>> def development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame(): - ... output = pd.DataFrame() # initializing a DataFrame - ... output["Reported Claims"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index - ... age = reported.development.iloc[::-1] # flipping the age order - ... age.index = output.index # forcing the index to match - ... output['Age'] = age - ... output = output[['Age','Reported Claims']] # reordering the columns - ... output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses - ... reported_cdf = reported.cdf_.T # transposing the CDF - ... reported_cdf.index = output.index[::-1] # forcing the index to match - ... output["Reported CDF"] = reported_cdf - ... paid_cdf = paid.cdf_.T - ... paid_cdf.index = output.index[::-1] - ... output["Paid CDF"] = paid_cdf - ... output["Reported Ultimate"] = cl.Chainladder().fit(reported).ultimate_.to_frame(origin_as_datetime=False) # using the Chainladder estimator to return the ultimate - ... output["Paid Ultimate"] = cl.Chainladder().fit(paid).ultimate_.to_frame(origin_as_datetime=False) - ... return output - >>> exhibit = development_summary(reported_selected_pattern,paid_selected_pattern) - >>> exhibit - Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate - 1998 120 47742304.0 47644187.0 1.000000 1.002000 4.774230e+07 4.773948e+07 - 1999 108 51185767.0 51000534.0 1.000369 1.003870 5.120467e+07 5.119788e+07 - 2000 96 54837929.0 54533225.0 1.000954 1.006219 5.489024e+07 5.487237e+07 - 2001 84 56299562.0 55878421.0 1.002540 1.011036 5.644257e+07 5.649507e+07 - 2002 72 58592712.0 57807215.0 1.005300 1.020604 5.890327e+07 5.899830e+07 - 2003 60 57565344.0 55930654.0 1.009908 1.039752 5.813573e+07 5.815399e+07 - 2004 48 56976657.0 53774672.0 1.021554 1.085341 5.820476e+07 5.836386e+07 - 2005 36 56786410.0 50644994.0 1.049493 1.184218 5.959697e+07 5.997474e+07 - 2006 24 54641339.0 43606497.0 1.108139 1.404485 6.055018e+07 6.124466e+07 - 2007 12 48853563.0 27229969.0 1.289977 2.390688 6.301997e+07 6.509837e+07 - -Unfortunately this does not match the table from the text, due to rounding. We will construct a separate, rounded exhibit to reconcile to the text. - -.. doctest:: - - >>> def rounded_development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame(): - ... output = pd.DataFrame() # initializing a DataFrame - ... output["Reported Claims"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index - ... age = reported.development.iloc[::-1] # flipping the age order - ... age.index = output.index # forcing the index to match - ... output['Age'] = age - ... output = output[['Age','Reported Claims']] # reordering the columns - ... output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses - ... reported_cdf = reported.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T - ... reported_cdf.index = output.index[::-1] - ... output["Reported CDF"] = reported_cdf - ... paid_cdf = paid.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T - ... paid_cdf.index = output.index[::-1] - ... output["Paid CDF"] = paid_cdf - ... output["Reported Ultimate"] = (output['Reported Claims'] * output["Reported CDF"]).round(decimals = 0) # taking a short cut to calculate the ultimate without using Chainladder - ... output["Paid Ultimate"] = (output['Paid Claims'] * output["Paid CDF"]).round(decimals = 0) - ... return output - >>> rounded_exhibit = rounded_development_summary(reported_selected_pattern,paid_selected_pattern) - >>> rounded_exhibit[['Reported CDF','Paid CDF','Reported Ultimate','Paid Ultimate']] # only displaying the rounded columns - Reported CDF Paid CDF Reported Ultimate Paid Ultimate - 1998 1.000 1.002 47742304.0 47739475.0 - 1999 1.000 1.004 51185767.0 51204536.0 - 2000 1.001 1.006 54892767.0 54860424.0 - 2001 1.003 1.011 56468461.0 56493084.0 - 2002 1.006 1.020 58944268.0 58963359.0 - 2003 1.011 1.040 58198563.0 58167880.0 - 2004 1.023 1.085 58287120.0 58345519.0 - 2005 1.051 1.184 59682517.0 59963673.0 - 2006 1.110 1.404 60651886.0 61223522.0 - 2007 1.292 2.390 63118803.0 65079626.0 - -Exhibit I Sheet 4 p109 -########################## - -This is another common report layout for reserving analyses. The manipulation here are more straight-forward that the previous exhibit. - -.. doctest:: - - >>> def unpaid_summary(dev_sum: pd.DataFrame()) -> pd.DataFrame(): - ... output = dev_sum.loc[:,['Reported Claims','Paid Claims','Reported Ultimate','Paid Ultimate']] - ... output['Case Outstanding'] = output['Reported Claims'] - output['Paid Claims'] - ... output['Reported Method IBNR'] = output['Reported Ultimate'] - output['Reported Claims'] - ... output['Paid Method IBNR'] = output['Paid Ultimate'] - output['Reported Claims'] - ... output['Reported Method Unpaid'] = output['Reported Method IBNR'] + output['Case Outstanding'] - ... output['Paid Method Unpaid'] = output['Paid Method IBNR'] + output['Case Outstanding'] - ... return output - >>> unpaid_exhibit = unpaid_summary(rounded_exhibit) - >>> unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']] - Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid - 1998 98117.0 0.0 -2829.0 98117.0 95288.0 - 1999 185233.0 0.0 18769.0 185233.0 204002.0 - 2000 304704.0 54838.0 22495.0 359542.0 327199.0 - 2001 421141.0 168899.0 193522.0 590040.0 614663.0 - 2002 785497.0 351556.0 370647.0 1137053.0 1156144.0 - 2003 1634690.0 633219.0 602536.0 2267909.0 2237226.0 - 2004 3201985.0 1310463.0 1368862.0 4512448.0 4570847.0 - 2005 6141416.0 2896107.0 3177263.0 9037523.0 9318679.0 - 2006 11034842.0 6010547.0 6582183.0 17045389.0 17617025.0 - 2007 21623594.0 14265240.0 16226063.0 35888834.0 37849657.0 - -Exhibit II Sheet 1 p110 -################################ - -Now that we have walked through an analysis step by step, let's introduce some scaling by streamlining the entire exhibit into single function. - -.. doctest:: - - >>> def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]: - ... print('PART 1 - Data Triangle') - ... print(tri) - ... print('PART 2 - Age-to-Age Factors') - ... print(tri.age_to_age) - ... devs = {} - ... print('PART 3 - Average Age-to-Age Factor') - ... for k,v in avg_params.items(): - ... devs[k] = cl.Development(**v).fit_transform(tri) - ... def print_ldfs(ldf_dict:dict[cl.Triangle()]): - ... print(pd.concat([v.to_frame().rename(index={'(All)':k}) for k,v in ldf_dict.items()])) - ... return None - ... print_ldfs({k:v.ldf_.round(decimals=3) for k,v in devs.items()}) - ... devs["Selected"] = cl.TailConstant(tail = tail, projection_period = 0).fit_transform(devs[selected_avg]) - ... selected = {} - ... selected['CDF to Ultimate'] = devs["Selected"].ldf_.round(decimals=3).incr_to_cum().round(decimals=3) - ... selected['Percent Reported'] = (1/selected['CDF to Ultimate']).round(decimals=3) - ... print('PART 4 - Selected Age-to-Age Factor') - ... print_ldfs({'Selected':devs['Selected'].ldf_.round(decimals=3)}) - ... print_ldfs(selected) - ... return devs - >>> import re - >>> tri = cl.load_sample('friedland_xyz_auto_bi') - >>> assumptions_list = ['simple_5','simple_3','simple_2','volume_4','volume_3','volume_2','geometric_3'] - >>> assumptions = {x:{'n_periods':int(re.match(r'.+_(.+)', x).group(1)),'average':re.match(r'(.+)_', x).group(1)} for x in assumptions_list} - >>> assumptions['medial 5x1'] = {'n_periods':5, 'average':'simple','drop_high':1, 'drop_low':1} - >>> reported_devs = dev_exhibit(tri['Reported Claims'],assumptions,'volume_2',1) - PART 1 - Data Triangle - 12 24 36 48 60 72 84 96 108 120 132 - 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0 - 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN - 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN - 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN - 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN - 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN - 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN - 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN - 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN - 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN - PART 2 - Age-to-Age Factors - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - 1998 NaN NaN 1.108227 1.067528 1.064392 1.044146 1.114243 0.987596 0.979707 0.999179 - 1999 NaN 1.237646 1.197135 1.144305 1.057447 1.055967 0.988085 1.011131 1.001436 NaN - 2000 1.196032 1.168062 1.239452 1.086354 1.168543 1.072291 1.015048 0.993094 NaN NaN - 2001 1.353175 1.313547 1.264295 1.286967 1.085689 1.037834 1.006668 NaN NaN NaN - 2002 1.590040 1.308591 1.413078 1.179122 1.096524 0.989076 NaN NaN NaN NaN - 2003 1.760957 1.786055 1.337353 1.089595 1.003210 NaN NaN NaN NaN NaN - 2004 2.364225 1.465057 1.218140 0.980211 NaN NaN NaN NaN NaN NaN - 2005 1.654181 1.482965 1.004478 NaN NaN NaN NaN NaN NaN NaN - 2006 1.728479 1.043199 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 1.629204 NaN NaN NaN NaN NaN NaN NaN NaN NaN - PART 3 - Average Age-to-Age Factor - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - simple_5 1.827 1.417 1.247 1.124 1.082 1.040 1.031 0.997 0.991 0.999 - simple_3 1.671 1.330 1.187 1.083 1.062 1.033 1.003 0.997 0.991 0.999 - simple_2 1.679 1.263 1.111 1.035 1.050 1.013 1.011 1.002 0.991 0.999 - volume_4 1.802 1.376 1.185 1.094 1.081 1.033 1.019 0.998 0.993 0.999 - volume_3 1.674 1.325 1.147 1.060 1.060 1.028 1.005 0.998 0.993 0.999 - volume_2 1.687 1.265 1.102 1.020 1.050 1.010 1.011 1.000 0.993 0.999 - geometric_3 1.670 1.314 1.178 1.080 1.061 1.033 1.003 0.997 0.991 0.999 - medial 5x1 1.715 1.419 1.273 1.118 1.080 1.046 1.011 0.993 0.991 0.999 - PART 4 - Selected Age-to-Age Factor - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144 - Selected 1.687 1.265 1.102 1.02 1.05 1.01 1.011 1.0 0.993 0.999 1.0 - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult - CDF to Ultimate 2.551 1.512 1.196 1.085 1.064 1.013 1.003 0.992 0.992 0.999 1.0 - Percent Reported 0.392 0.661 0.836 0.922 0.940 0.987 0.997 1.008 1.008 1.001 1.0 - -Exhibit II Sheet 2 p111 -########################## - -.. doctest:: - - >>> paid_devs = dev_exhibit(tri['Paid Claims'],assumptions,'volume_2',1.01) - PART 1 - Data Triangle - 12 24 36 48 60 72 84 96 108 120 132 - 1998 NaN NaN 6309.0 8521.0 10082.0 11620.0 13242.0 14419.0 15311.0 15764.0 15822.0 - 1999 NaN 4666.0 9861.0 13971.0 18127.0 22032.0 23511.0 24146.0 24592.0 24817.0 NaN - 2000 1302.0 6513.0 12139.0 17828.0 24030.0 28853.0 33222.0 35902.0 36782.0 NaN NaN - 2001 1539.0 5952.0 12319.0 18609.0 24387.0 31090.0 37070.0 38519.0 NaN NaN NaN - 2002 2318.0 7932.0 13822.0 22095.0 31945.0 40629.0 44437.0 NaN NaN NaN NaN - 2003 1743.0 6240.0 12683.0 22892.0 34505.0 39320.0 NaN NaN NaN NaN NaN - 2004 2221.0 9898.0 25950.0 43439.0 52811.0 NaN NaN NaN NaN NaN NaN - 2005 3043.0 12219.0 27073.0 40026.0 NaN NaN NaN NaN NaN NaN NaN - 2006 3531.0 11778.0 22819.0 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 3529.0 11865.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN - 2008 3409.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN - PART 2 - Age-to-Age Factors - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - 1998 NaN NaN 1.350610 1.183194 1.152549 1.139587 1.088884 1.061863 1.029587 1.003679 - 1999 NaN 2.113373 1.416793 1.297473 1.215425 1.067130 1.027009 1.018471 1.009149 NaN - 2000 5.002304 1.863811 1.468655 1.347880 1.200707 1.151423 1.080669 1.024511 NaN NaN - 2001 3.867446 2.069724 1.510593 1.310495 1.274860 1.192345 1.039088 NaN NaN NaN - 2002 3.421915 1.742562 1.598539 1.445802 1.271842 1.093726 NaN NaN NaN NaN - 2003 3.580034 2.032532 1.804936 1.507295 1.139545 NaN NaN NaN NaN NaN - 2004 4.456551 2.621742 1.673950 1.215751 NaN NaN NaN NaN NaN NaN - 2005 4.015445 2.215648 1.478447 NaN NaN NaN NaN NaN NaN NaN - 2006 3.335599 1.937426 NaN NaN NaN NaN NaN NaN NaN NaN - 2007 3.362142 NaN NaN NaN NaN NaN NaN NaN NaN NaN - PART 3 - Average Age-to-Age Factor - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 - simple_5 3.750 2.110 1.613 1.365 1.220 1.129 1.059 1.035 1.019 1.004 - simple_3 3.571 2.258 1.652 1.390 1.229 1.146 1.049 1.035 1.019 1.004 - simple_2 3.349 2.077 1.576 1.362 1.206 1.143 1.060 1.021 1.019 1.004 - volume_4 3.713 2.206 1.615 1.342 1.218 1.128 1.056 1.030 1.017 1.004 - volume_3 3.550 2.238 1.619 1.349 1.222 1.141 1.051 1.030 1.017 1.004 - volume_2 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 - geometric_3 3.558 2.241 1.647 1.384 1.227 1.145 1.049 1.035 1.019 1.004 - medial 5x1 3.653 2.062 1.594 1.368 1.229 1.128 1.060 1.025 1.019 1.004 - PART 4 - Selected Age-to-Age Factor - 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144 - Selected 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 1.01 - 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult - CDF to Ultimate 21.999 6.569 3.160 2.007 1.525 1.268 1.116 1.054 1.031 1.014 1.01 - Percent Reported 0.045 0.152 0.316 0.498 0.656 0.789 0.896 0.949 0.970 0.986 0.99 - -Exhibit II Sheet 3 p112 -########################## - -.. doctest:: - - >>> exhibit = rounded_development_summary(reported_devs["Selected"],paid_devs["Selected"]) - >>> exhibit - Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate - 1998 132 15822.0 15822.0 1.000 1.010 15822.0 15980.0 - 1999 120 25107.0 24817.0 0.999 1.014 25082.0 25164.0 - 2000 108 37246.0 36782.0 0.992 1.031 36948.0 37922.0 - 2001 96 38798.0 38519.0 0.992 1.054 38488.0 40599.0 - 2002 84 48169.0 44437.0 1.003 1.116 48314.0 49592.0 - 2003 72 44373.0 39320.0 1.013 1.268 44950.0 49858.0 - 2004 60 70288.0 52811.0 1.064 1.525 74786.0 80537.0 - 2005 48 70655.0 40026.0 1.085 2.007 76661.0 80332.0 - 2006 36 48804.0 22819.0 1.196 3.160 58370.0 72108.0 - 2007 24 31732.0 11865.0 1.512 6.569 47979.0 77941.0 - 2008 12 18632.0 3409.0 2.551 21.999 47530.0 74995.0 - -Exhibit II Sheet 4 p113 -########################## - -.. doctest:: - - >>> unpaid_exhibit = unpaid_summary(exhibit) - >>> unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']] - Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid - 1998 0.0 0.0 158.0 0.0 158.0 - 1999 290.0 -25.0 57.0 265.0 347.0 - 2000 464.0 -298.0 676.0 166.0 1140.0 - 2001 279.0 -310.0 1801.0 -31.0 2080.0 - 2002 3732.0 145.0 1423.0 3877.0 5155.0 - 2003 5053.0 577.0 5485.0 5630.0 10538.0 - 2004 17477.0 4498.0 10249.0 21975.0 27726.0 - 2005 30629.0 6006.0 9677.0 36635.0 40306.0 - 2006 25985.0 9566.0 23304.0 35551.0 49289.0 - 2007 19867.0 16247.0 46209.0 36114.0 66076.0 - 2008 15223.0 28898.0 56363.0 44121.0 71586.0 - -Persisting the Selected Estimators -################################## - -The selected reported and paid development estimators are reused in later chapters, such as the Bornhuetter-Ferguson technique in Chapter 9. Rather than refitting them, we persist the fitted estimators with ``to_json`` so they can be recalled directly. JSON is used rather than a pickle so the saved estimators load reliably across package and dependency versions. - -.. doctest:: - - >>> import os - >>> data_dir = os.path.join(os.path.dirname(cl.__file__), "utils", "data") - >>> with open(os.path.join(data_dir, "friedland_ch7_xyz_reported.json"), "w") as f: - ... _ = f.write(reported_devs["Selected"].to_json()) - >>> with open(os.path.join(data_dir, "friedland_ch7_xyz_paid.json"), "w") as f: - ... _ = f.write(paid_devs["Selected"].to_json()) - -Exhibit III Sheet 1 p114 -########################## - -WIP From bcf6e2b344de127186aac899db387bb1b3202cdc Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Mon, 3 Aug 2026 12:44:51 -0400 Subject: [PATCH 02/11] Fix reported geometric development variable name --- docs/friedland/chapter_7.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/friedland/chapter_7.ipynb b/docs/friedland/chapter_7.ipynb index c30dc908f..decd20669 100644 --- a/docs/friedland/chapter_7.ipynb +++ b/docs/friedland/chapter_7.ipynb @@ -438,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "id": "10865a15", "metadata": {}, "outputs": [ @@ -789,8 +789,8 @@ "display(reported_volume_3.ldf_.round(decimals = 3))\n", "\n", "display(Markdown(\"##### Reported Claims - Geometric Average (Latest 4)\"))\n", - "reported_volume_3 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims'])\n", - "display(reported_volume_3.ldf_.round(decimals = 3))\n", + "reported_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims'])\n", + "display(reported_geometric_4.ldf_.round(decimals = 3))\n", "\n" ] }, From e809abb78e21b709f79af9018423d4a2e3bd3786 Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:30:01 -0400 Subject: [PATCH 03/11] DOCS: Continue Chapter 7 notebook conversion --- docs/friedland/{chapter_7.ipynb => chapter_7_part_2.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/friedland/{chapter_7.ipynb => chapter_7_part_2.ipynb} (100%) diff --git a/docs/friedland/chapter_7.ipynb b/docs/friedland/chapter_7_part_2.ipynb similarity index 100% rename from docs/friedland/chapter_7.ipynb rename to docs/friedland/chapter_7_part_2.ipynb From 9be61ee20a99fa09029a24e63a86b672590ad24e Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:40:10 -0400 Subject: [PATCH 04/11] Continue chapter 7 notebook migration - restored chapter 7 .rst file --- docs/_toc.yml | 5 +- docs/friedland/chapter_7.rst | 595 +++ docs/friedland/chapter_7_part_2.ipynb | 4978 ++++--------------------- 3 files changed, 1315 insertions(+), 4263 deletions(-) create mode 100644 docs/friedland/chapter_7.rst diff --git a/docs/_toc.yml b/docs/_toc.yml index 6347da100..1462e8f68 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -34,7 +34,10 @@ parts: - file: friedland/index.rst sections: - file: friedland/chapter_6.rst - - file: friedland/chapter_7.ipynb + - file: friedland/chapter_7.rst + title: Chapter 7 - Part I + - file: friedland/chapter_7_part_2.ipynb + title: Chapter 7 - Part II - file: friedland/chapter_9.ipynb - file: friedland/chapter_10.ipynb - chapters: diff --git a/docs/friedland/chapter_7.rst b/docs/friedland/chapter_7.rst new file mode 100644 index 000000000..0bc55bb98 --- /dev/null +++ b/docs/friedland/chapter_7.rst @@ -0,0 +1,595 @@ +================================================================ +Chapter 7 - Development Technique +================================================================ + + The development technique, also known as the chain ladder technique, is one of the most frequently used methodologies for estimating unpaid claims. + + -- Friedland, p84 + +This chapter covers the foundational development/chainladder method. In the chainladder package, this is implemented in the ``Development`` estimator. + +.. doctest:: + + >>> import numpy as np + >>> import pandas as pd + >>> import chainladder as cl + >>> pd.set_option('display.max_columns', None) + >>> pd.set_option('display.width', 1000) + +Exhibit I Sheet 1 p106 +########################## + +Diving straight into Exhibit 1. + +PART 1 - Data Triangle +----------------------- + +We have already imported the necessary packages loading the ``Triangle`` at the top of p106. Let's take a look at the ``Triangle`` we just loaded. + +.. doctest:: + + >>> tri = cl.load_sample('friedland_us_industry_auto') + >>> tri['Reported Claims'] + 12 24 36 48 60 72 84 96 108 120 + 1998 37017487.0 43169009.0 45568919.0 46784558.0 47337318.0 47533264.0 47634419.0 47689655.0 47724678.0 47742304.0 + 1999 38954484.0 46045718.0 48882924.0 50219672.0 50729292.0 50926779.0 51069285.0 51163540.0 51185767.0 NaN + 2000 41155776.0 49371478.0 52358476.0 53780322.0 54303086.0 54582950.0 54742188.0 54837929.0 NaN NaN + 2001 42394069.0 50584112.0 53704296.0 55150118.0 55895583.0 56156727.0 56299562.0 NaN NaN NaN + 2002 44755243.0 52971643.0 56102312.0 57703851.0 58363564.0 58592712.0 NaN NaN NaN NaN + 2003 45163102.0 52497731.0 55468551.0 57015411.0 57565344.0 NaN NaN NaN NaN NaN + 2004 45417309.0 52640322.0 55553673.0 56976657.0 NaN NaN NaN NaN NaN NaN + 2005 46360869.0 53790061.0 56786410.0 NaN NaN NaN NaN NaN NaN NaN + 2006 46582684.0 54641339.0 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 48853563.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN + +PART 2 - Age-to-Age Factors +---------------------------- + +To calculate age-to-age factors, use the ``age-to-age`` attribute of the ``Triangle``. + +.. doctest:: + + >>> tri['Reported Claims'].age_to_age.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + 1998 1.166 1.056 1.027 1.012 1.004 1.002 1.001 1.001 1.0 + 1999 1.182 1.062 1.027 1.010 1.004 1.003 1.002 1.000 NaN + 2000 1.200 1.061 1.027 1.010 1.005 1.003 1.002 NaN NaN + 2001 1.193 1.062 1.027 1.014 1.005 1.003 NaN NaN NaN + 2002 1.184 1.059 1.029 1.011 1.004 NaN NaN NaN NaN + 2003 1.162 1.057 1.028 1.010 NaN NaN NaN NaN NaN + 2004 1.159 1.055 1.026 NaN NaN NaN NaN NaN NaN + 2005 1.160 1.056 NaN NaN NaN NaN NaN NaN NaN + 2006 1.173 NaN NaN NaN NaN NaN NaN NaN NaN + +PART 3 - Average Age-to-Age Factors +------------------------------------ + +To calculate the average age-to-age factors, we will use the ``Development`` estimator to ``fit_transform`` the original ``Triangle``. This calculates the averages but also preserves the ability to apply other estimators later. The specific choices of average paramters (n_period, etc.) are provided to ``Development``. The attribute for the calculated average age-to-age factors is the ``ldf_``. + +.. doctest:: + + # Simple Average + # Latest 5 + >>> reported_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Reported Claims']) + >>> reported_simple_5.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0 + + # Latest 3 + >>> reported_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Reported Claims']) + >>> reported_simple_3.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 + + # Medial Average + # Latest 5x1 + >>> reported_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1).fit_transform(tri['Reported Claims']) + >>> reported_medial_5x1.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.165 1.057 1.027 1.01 1.004 1.003 1.002 1.001 1.0 + + # Volume-weighted Average + # Latest 5 + >>> reported_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Reported Claims']) + >>> reported_volume_5.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0 + + # Latest 3 + >>> reported_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Reported Claims']) + >>> reported_volume_3.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 + + # Geometric Average + # Latest 4 + >>> reported_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims']) + >>> reported_geometric_4.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.164 1.057 1.027 1.011 1.004 1.003 1.002 1.001 1.0 + +PART 4 - Selected Age-to-Age Factors +-------------------------------------- + +For the prior selected, we need to create a hard-coded pattern, using the ``DevelopmentConstant`` estimator. In a production workflow, you can save the development pattern from the prior analysis and load for reference in a subsequent analysis. + +We will also be using the ``TailConstant`` estimator to add a tail factor to selected development patterns. We add the tail factor to a transformed ``Triangle`` (i.e. applying ``fit_transforme`` of the ``Development`` estimator to a ``Triangle``) by using ``fit_transform`` once again. + +.. doctest:: + + # Prior Selected + >>> reported_prior_method = cl.DevelopmentConstant( + ... patterns = { + ... 12:1.16, + ... 24:1.057, + ... 36:1.028, + ... 48:1.012, + ... 60:1.005, + ... 72:1.003, + ... 84:1.001, + ... 96:1.001, + ... 108:1.000 + ... }, + ... style='ldf' + ... ) + >>> reported_prior_ft = reported_prior_method.fit_transform(tri['Reported Claims']) + >>> reported_tail_method = cl.TailConstant( + ... tail = 1, + ... projection_period = 0 + ... ) + >>> reported_prior_selected = reported_tail_method.fit_transform(reported_prior_ft) + >>> reported_prior_selected.ldf_ + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + (All) 1.16 1.057 1.028 1.012 1.005 1.003 1.001 1.001 1.0 1.0 + +Next we can select some factors. We can also reuse the `TailConstant` from the previous step. This is fairly common in practice, as tail factors are selected less frequently than the development pattern itself, so need to be carried from analysis to analysis. + +.. doctest:: + + # Selected + >>> reported_selected_pattern = reported_tail_method.fit_transform(reported_simple_3) + >>> reported_selected_pattern.ldf_.round(decimals=3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + (All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0 1.0 + +The Development estimator has a ``cdf_`` attribute that will automatically multiply age-to-age factors cumulatively into age-to-ultimate factors. The Friedland text uses the rounded LDF to calculate CDF. This can be achieved in this package by using the ``incr_to_cum()`` method of the rounded age-to-age factors. + +.. doctest:: + + # CDF to Ultimate + # First without rounding + >>> reported_selected_pattern.cdf_ + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult + (All) 1.289977 1.108139 1.049493 1.021554 1.009908 1.0053 1.00254 1.000954 1.000369 1.0 + + # Then with rounding + >>> reported_selected_cdf = reported_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3) + >>> reported_selected_cdf + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult + (All) 1.292 1.11 1.051 1.023 1.011 1.006 1.003 1.001 1.0 1.0 + +To calculate % reported, we will use ``Triangle`` manipulation from Chapter 5 directly on the development pattern (which is also a ``Triangle``). + +.. doctest:: + + # Percent Reported + >>> (1 / reported_selected_cdf).round(decimals = 3) + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult + (All) 0.774 0.901 0.951 0.978 0.989 0.994 0.997 0.999 1.0 1.0 + +Exhibit I Sheet 2 p107 +########################## + +Moving onto the next page, all the calculations are identical to the previous page. We will manually repeat the same code. In a production workflow, commonly repeated methods and selections can be streamlined, which we will demonstrate in Exhibit II. + +PART 1 - Data Triangle +----------------------- + +.. doctest:: + + >>> tri['Paid Claims'] + 12 24 36 48 60 72 84 96 108 120 + 1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0 + 1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN + 2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN + 2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN + 2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN + 2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN + 2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN + 2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN + 2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN + +PART 2 - Age-to-Age Factors +---------------------------- + +.. doctest:: + + >>> tri['Paid Claims'].age_to_age.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + 1998 1.792 1.206 1.096 1.046 1.019 1.010 1.005 1.002 1.002 + 1999 1.768 1.199 1.090 1.043 1.019 1.009 1.005 1.002 NaN + 2000 1.762 1.190 1.090 1.043 1.019 1.010 1.005 NaN NaN + 2001 1.744 1.191 1.091 1.044 1.019 1.009 NaN NaN NaN + 2002 1.735 1.194 1.089 1.044 1.019 NaN NaN NaN NaN + 2003 1.719 1.185 1.092 1.044 NaN NaN NaN NaN NaN + 2004 1.703 1.187 1.092 NaN NaN NaN NaN NaN NaN + 2005 1.701 1.186 NaN NaN NaN NaN NaN NaN NaN + 2006 1.703 NaN NaN NaN NaN NaN NaN NaN NaN + +PART 3 - Average Age-to-Age Factors +------------------------------------ + +.. doctest:: + + # Simple Average + # Latest 5 + >>> paid_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Paid Claims']) + >>> paid_simple_5.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002 + + # Latest 3 + >>> paid_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Paid Claims']) + >>> paid_simple_3.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 + + # Medial Average + # Latest 5x1 + >>> paid_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1).fit_transform(tri['Paid Claims']) + >>> paid_medial_5x1.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.708 1.188 1.091 1.044 1.019 1.009 1.005 1.002 1.002 + + # Volume-weighted Average + # Latest 5 + >>> paid_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Paid Claims']) + >>> paid_volume_5.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002 + + # Latest 3 + >>> paid_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Paid Claims']) + >>> paid_volume_3.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 + + # Geometric Average + # Latest 4 + >>> paid_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Paid Claims']) + >>> paid_geometric_4.ldf_.round(decimals = 3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 + (All) 1.706 1.188 1.091 1.044 1.019 1.01 1.005 1.002 1.002 + +PART 4 - Selected Age-to-Age Factors +-------------------------------------- + +.. doctest:: + + # Prior Selected + >>> paid_prior_method = cl.DevelopmentConstant( + ... patterns = { + ... 12:1.707, + ... 24:1.189, + ... 36:1.091, + ... 48:1.044, + ... 60:1.019, + ... 72:1.01, + ... 84:1.005, + ... 96:1.003, + ... 108:1.001 + ... }, + ... style='ldf' + ... ) + >>> paid_prior_ft = paid_prior_method.fit_transform(tri['Paid Claims']) + >>> paid_tail_method = cl.TailConstant( + ... tail = 1.002, + ... projection_period = 0 + ... ) + >>> paid_prior_selected = paid_tail_method.fit_transform(paid_prior_ft) + >>> paid_prior_selected.ldf_ + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + (All) 1.707 1.189 1.091 1.044 1.019 1.01 1.005 1.003 1.001 1.002 + + # Selected + >>> paid_selected_pattern = paid_tail_method.fit_transform(paid_simple_3) + >>> paid_selected_pattern.ldf_.round(decimals=3) + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + (All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002 1.002 + + # CDF to Ultimate + >>> paid_selected_cdf = paid_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3) + >>> paid_selected_cdf + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult + (All) 2.39 1.404 1.184 1.085 1.04 1.02 1.011 1.006 1.004 1.002 + + # Percent Reported + >>> (1 / paid_selected_cdf).round(decimals = 3) + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult + (All) 0.418 0.712 0.845 0.922 0.962 0.98 0.989 0.994 0.996 0.998 + +Exhibit I Sheet 3 p108 +########################## + +This is a common report layout for reserving analyses. Some ``Pandas`` manipulation is needed to retrieve all the figures from the transformed ``Triangle`` objects and achieve the tabular look. We will create a function to reuse the manipulation throughout this chapter. + +.. doctest:: + + >>> def development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame(): + ... output = pd.DataFrame() # initializing a DataFrame + ... output["Reported Claims"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index + ... age = reported.development.iloc[::-1] # flipping the age order + ... age.index = output.index # forcing the index to match + ... output['Age'] = age + ... output = output[['Age','Reported Claims']] # reordering the columns + ... output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses + ... reported_cdf = reported.cdf_.T # transposing the CDF + ... reported_cdf.index = output.index[::-1] # forcing the index to match + ... output["Reported CDF"] = reported_cdf + ... paid_cdf = paid.cdf_.T + ... paid_cdf.index = output.index[::-1] + ... output["Paid CDF"] = paid_cdf + ... output["Reported Ultimate"] = cl.Chainladder().fit(reported).ultimate_.to_frame(origin_as_datetime=False) # using the Chainladder estimator to return the ultimate + ... output["Paid Ultimate"] = cl.Chainladder().fit(paid).ultimate_.to_frame(origin_as_datetime=False) + ... return output + >>> exhibit = development_summary(reported_selected_pattern,paid_selected_pattern) + >>> exhibit + Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate + 1998 120 47742304.0 47644187.0 1.000000 1.002000 4.774230e+07 4.773948e+07 + 1999 108 51185767.0 51000534.0 1.000369 1.003870 5.120467e+07 5.119788e+07 + 2000 96 54837929.0 54533225.0 1.000954 1.006219 5.489024e+07 5.487237e+07 + 2001 84 56299562.0 55878421.0 1.002540 1.011036 5.644257e+07 5.649507e+07 + 2002 72 58592712.0 57807215.0 1.005300 1.020604 5.890327e+07 5.899830e+07 + 2003 60 57565344.0 55930654.0 1.009908 1.039752 5.813573e+07 5.815399e+07 + 2004 48 56976657.0 53774672.0 1.021554 1.085341 5.820476e+07 5.836386e+07 + 2005 36 56786410.0 50644994.0 1.049493 1.184218 5.959697e+07 5.997474e+07 + 2006 24 54641339.0 43606497.0 1.108139 1.404485 6.055018e+07 6.124466e+07 + 2007 12 48853563.0 27229969.0 1.289977 2.390688 6.301997e+07 6.509837e+07 + +Unfortunately this does not match the table from the text, due to rounding. We will construct a separate, rounded exhibit to reconcile to the text. + +.. doctest:: + + >>> def rounded_development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame(): + ... output = pd.DataFrame() # initializing a DataFrame + ... output["Reported Claims"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index + ... age = reported.development.iloc[::-1] # flipping the age order + ... age.index = output.index # forcing the index to match + ... output['Age'] = age + ... output = output[['Age','Reported Claims']] # reordering the columns + ... output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses + ... reported_cdf = reported.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T + ... reported_cdf.index = output.index[::-1] + ... output["Reported CDF"] = reported_cdf + ... paid_cdf = paid.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T + ... paid_cdf.index = output.index[::-1] + ... output["Paid CDF"] = paid_cdf + ... output["Reported Ultimate"] = (output['Reported Claims'] * output["Reported CDF"]).round(decimals = 0) # taking a short cut to calculate the ultimate without using Chainladder + ... output["Paid Ultimate"] = (output['Paid Claims'] * output["Paid CDF"]).round(decimals = 0) + ... return output + >>> rounded_exhibit = rounded_development_summary(reported_selected_pattern,paid_selected_pattern) + >>> rounded_exhibit[['Reported CDF','Paid CDF','Reported Ultimate','Paid Ultimate']] # only displaying the rounded columns + Reported CDF Paid CDF Reported Ultimate Paid Ultimate + 1998 1.000 1.002 47742304.0 47739475.0 + 1999 1.000 1.004 51185767.0 51204536.0 + 2000 1.001 1.006 54892767.0 54860424.0 + 2001 1.003 1.011 56468461.0 56493084.0 + 2002 1.006 1.020 58944268.0 58963359.0 + 2003 1.011 1.040 58198563.0 58167880.0 + 2004 1.023 1.085 58287120.0 58345519.0 + 2005 1.051 1.184 59682517.0 59963673.0 + 2006 1.110 1.404 60651886.0 61223522.0 + 2007 1.292 2.390 63118803.0 65079626.0 + +Exhibit I Sheet 4 p109 +########################## + +This is another common report layout for reserving analyses. The manipulation here are more straight-forward that the previous exhibit. + +.. doctest:: + + >>> def unpaid_summary(dev_sum: pd.DataFrame()) -> pd.DataFrame(): + ... output = dev_sum.loc[:,['Reported Claims','Paid Claims','Reported Ultimate','Paid Ultimate']] + ... output['Case Outstanding'] = output['Reported Claims'] - output['Paid Claims'] + ... output['Reported Method IBNR'] = output['Reported Ultimate'] - output['Reported Claims'] + ... output['Paid Method IBNR'] = output['Paid Ultimate'] - output['Reported Claims'] + ... output['Reported Method Unpaid'] = output['Reported Method IBNR'] + output['Case Outstanding'] + ... output['Paid Method Unpaid'] = output['Paid Method IBNR'] + output['Case Outstanding'] + ... return output + >>> unpaid_exhibit = unpaid_summary(rounded_exhibit) + >>> unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']] + Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid + 1998 98117.0 0.0 -2829.0 98117.0 95288.0 + 1999 185233.0 0.0 18769.0 185233.0 204002.0 + 2000 304704.0 54838.0 22495.0 359542.0 327199.0 + 2001 421141.0 168899.0 193522.0 590040.0 614663.0 + 2002 785497.0 351556.0 370647.0 1137053.0 1156144.0 + 2003 1634690.0 633219.0 602536.0 2267909.0 2237226.0 + 2004 3201985.0 1310463.0 1368862.0 4512448.0 4570847.0 + 2005 6141416.0 2896107.0 3177263.0 9037523.0 9318679.0 + 2006 11034842.0 6010547.0 6582183.0 17045389.0 17617025.0 + 2007 21623594.0 14265240.0 16226063.0 35888834.0 37849657.0 + +Exhibit II Sheet 1 p110 +################################ + +Now that we have walked through an analysis step by step, let's introduce some scaling by streamlining the entire exhibit into single function. + +.. doctest:: + + >>> def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]: + ... print('PART 1 - Data Triangle') + ... print(tri) + ... print('PART 2 - Age-to-Age Factors') + ... print(tri.age_to_age) + ... devs = {} + ... print('PART 3 - Average Age-to-Age Factor') + ... for k,v in avg_params.items(): + ... devs[k] = cl.Development(**v).fit_transform(tri) + ... def print_ldfs(ldf_dict:dict[cl.Triangle()]): + ... print(pd.concat([v.to_frame().rename(index={'(All)':k}) for k,v in ldf_dict.items()])) + ... return None + ... print_ldfs({k:v.ldf_.round(decimals=3) for k,v in devs.items()}) + ... devs["Selected"] = cl.TailConstant(tail = tail, projection_period = 0).fit_transform(devs[selected_avg]) + ... selected = {} + ... selected['CDF to Ultimate'] = devs["Selected"].ldf_.round(decimals=3).incr_to_cum().round(decimals=3) + ... selected['Percent Reported'] = (1/selected['CDF to Ultimate']).round(decimals=3) + ... print('PART 4 - Selected Age-to-Age Factor') + ... print_ldfs({'Selected':devs['Selected'].ldf_.round(decimals=3)}) + ... print_ldfs(selected) + ... return devs + >>> import re + >>> tri = cl.load_sample('friedland_xyz_auto_bi') + >>> assumptions_list = ['simple_5','simple_3','simple_2','volume_4','volume_3','volume_2','geometric_3'] + >>> assumptions = {x:{'n_periods':int(re.match(r'.+_(.+)', x).group(1)),'average':re.match(r'(.+)_', x).group(1)} for x in assumptions_list} + >>> assumptions['medial 5x1'] = {'n_periods':5, 'average':'simple','drop_high':1, 'drop_low':1} + >>> reported_devs = dev_exhibit(tri['Reported Claims'],assumptions,'volume_2',1) + PART 1 - Data Triangle + 12 24 36 48 60 72 84 96 108 120 132 + 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0 + 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN + 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN + 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN + 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN + 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN + 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN + 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN + 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN + 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + PART 2 - Age-to-Age Factors + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + 1998 NaN NaN 1.108227 1.067528 1.064392 1.044146 1.114243 0.987596 0.979707 0.999179 + 1999 NaN 1.237646 1.197135 1.144305 1.057447 1.055967 0.988085 1.011131 1.001436 NaN + 2000 1.196032 1.168062 1.239452 1.086354 1.168543 1.072291 1.015048 0.993094 NaN NaN + 2001 1.353175 1.313547 1.264295 1.286967 1.085689 1.037834 1.006668 NaN NaN NaN + 2002 1.590040 1.308591 1.413078 1.179122 1.096524 0.989076 NaN NaN NaN NaN + 2003 1.760957 1.786055 1.337353 1.089595 1.003210 NaN NaN NaN NaN NaN + 2004 2.364225 1.465057 1.218140 0.980211 NaN NaN NaN NaN NaN NaN + 2005 1.654181 1.482965 1.004478 NaN NaN NaN NaN NaN NaN NaN + 2006 1.728479 1.043199 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 1.629204 NaN NaN NaN NaN NaN NaN NaN NaN NaN + PART 3 - Average Age-to-Age Factor + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + simple_5 1.827 1.417 1.247 1.124 1.082 1.040 1.031 0.997 0.991 0.999 + simple_3 1.671 1.330 1.187 1.083 1.062 1.033 1.003 0.997 0.991 0.999 + simple_2 1.679 1.263 1.111 1.035 1.050 1.013 1.011 1.002 0.991 0.999 + volume_4 1.802 1.376 1.185 1.094 1.081 1.033 1.019 0.998 0.993 0.999 + volume_3 1.674 1.325 1.147 1.060 1.060 1.028 1.005 0.998 0.993 0.999 + volume_2 1.687 1.265 1.102 1.020 1.050 1.010 1.011 1.000 0.993 0.999 + geometric_3 1.670 1.314 1.178 1.080 1.061 1.033 1.003 0.997 0.991 0.999 + medial 5x1 1.715 1.419 1.273 1.118 1.080 1.046 1.011 0.993 0.991 0.999 + PART 4 - Selected Age-to-Age Factor + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144 + Selected 1.687 1.265 1.102 1.02 1.05 1.01 1.011 1.0 0.993 0.999 1.0 + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult + CDF to Ultimate 2.551 1.512 1.196 1.085 1.064 1.013 1.003 0.992 0.992 0.999 1.0 + Percent Reported 0.392 0.661 0.836 0.922 0.940 0.987 0.997 1.008 1.008 1.001 1.0 + +Exhibit II Sheet 2 p111 +########################## + +.. doctest:: + + >>> paid_devs = dev_exhibit(tri['Paid Claims'],assumptions,'volume_2',1.01) + PART 1 - Data Triangle + 12 24 36 48 60 72 84 96 108 120 132 + 1998 NaN NaN 6309.0 8521.0 10082.0 11620.0 13242.0 14419.0 15311.0 15764.0 15822.0 + 1999 NaN 4666.0 9861.0 13971.0 18127.0 22032.0 23511.0 24146.0 24592.0 24817.0 NaN + 2000 1302.0 6513.0 12139.0 17828.0 24030.0 28853.0 33222.0 35902.0 36782.0 NaN NaN + 2001 1539.0 5952.0 12319.0 18609.0 24387.0 31090.0 37070.0 38519.0 NaN NaN NaN + 2002 2318.0 7932.0 13822.0 22095.0 31945.0 40629.0 44437.0 NaN NaN NaN NaN + 2003 1743.0 6240.0 12683.0 22892.0 34505.0 39320.0 NaN NaN NaN NaN NaN + 2004 2221.0 9898.0 25950.0 43439.0 52811.0 NaN NaN NaN NaN NaN NaN + 2005 3043.0 12219.0 27073.0 40026.0 NaN NaN NaN NaN NaN NaN NaN + 2006 3531.0 11778.0 22819.0 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 3529.0 11865.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN + 2008 3409.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN + PART 2 - Age-to-Age Factors + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + 1998 NaN NaN 1.350610 1.183194 1.152549 1.139587 1.088884 1.061863 1.029587 1.003679 + 1999 NaN 2.113373 1.416793 1.297473 1.215425 1.067130 1.027009 1.018471 1.009149 NaN + 2000 5.002304 1.863811 1.468655 1.347880 1.200707 1.151423 1.080669 1.024511 NaN NaN + 2001 3.867446 2.069724 1.510593 1.310495 1.274860 1.192345 1.039088 NaN NaN NaN + 2002 3.421915 1.742562 1.598539 1.445802 1.271842 1.093726 NaN NaN NaN NaN + 2003 3.580034 2.032532 1.804936 1.507295 1.139545 NaN NaN NaN NaN NaN + 2004 4.456551 2.621742 1.673950 1.215751 NaN NaN NaN NaN NaN NaN + 2005 4.015445 2.215648 1.478447 NaN NaN NaN NaN NaN NaN NaN + 2006 3.335599 1.937426 NaN NaN NaN NaN NaN NaN NaN NaN + 2007 3.362142 NaN NaN NaN NaN NaN NaN NaN NaN NaN + PART 3 - Average Age-to-Age Factor + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 + simple_5 3.750 2.110 1.613 1.365 1.220 1.129 1.059 1.035 1.019 1.004 + simple_3 3.571 2.258 1.652 1.390 1.229 1.146 1.049 1.035 1.019 1.004 + simple_2 3.349 2.077 1.576 1.362 1.206 1.143 1.060 1.021 1.019 1.004 + volume_4 3.713 2.206 1.615 1.342 1.218 1.128 1.056 1.030 1.017 1.004 + volume_3 3.550 2.238 1.619 1.349 1.222 1.141 1.051 1.030 1.017 1.004 + volume_2 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 + geometric_3 3.558 2.241 1.647 1.384 1.227 1.145 1.049 1.035 1.019 1.004 + medial 5x1 3.653 2.062 1.594 1.368 1.229 1.128 1.060 1.025 1.019 1.004 + PART 4 - Selected Age-to-Age Factor + 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144 + Selected 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 1.01 + 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult + CDF to Ultimate 21.999 6.569 3.160 2.007 1.525 1.268 1.116 1.054 1.031 1.014 1.01 + Percent Reported 0.045 0.152 0.316 0.498 0.656 0.789 0.896 0.949 0.970 0.986 0.99 + +Exhibit II Sheet 3 p112 +########################## + +.. doctest:: + + >>> exhibit = rounded_development_summary(reported_devs["Selected"],paid_devs["Selected"]) + >>> exhibit + Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate + 1998 132 15822.0 15822.0 1.000 1.010 15822.0 15980.0 + 1999 120 25107.0 24817.0 0.999 1.014 25082.0 25164.0 + 2000 108 37246.0 36782.0 0.992 1.031 36948.0 37922.0 + 2001 96 38798.0 38519.0 0.992 1.054 38488.0 40599.0 + 2002 84 48169.0 44437.0 1.003 1.116 48314.0 49592.0 + 2003 72 44373.0 39320.0 1.013 1.268 44950.0 49858.0 + 2004 60 70288.0 52811.0 1.064 1.525 74786.0 80537.0 + 2005 48 70655.0 40026.0 1.085 2.007 76661.0 80332.0 + 2006 36 48804.0 22819.0 1.196 3.160 58370.0 72108.0 + 2007 24 31732.0 11865.0 1.512 6.569 47979.0 77941.0 + 2008 12 18632.0 3409.0 2.551 21.999 47530.0 74995.0 + +Exhibit II Sheet 4 p113 +########################## + +.. doctest:: + + >>> unpaid_exhibit = unpaid_summary(exhibit) + >>> unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']] + Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid + 1998 0.0 0.0 158.0 0.0 158.0 + 1999 290.0 -25.0 57.0 265.0 347.0 + 2000 464.0 -298.0 676.0 166.0 1140.0 + 2001 279.0 -310.0 1801.0 -31.0 2080.0 + 2002 3732.0 145.0 1423.0 3877.0 5155.0 + 2003 5053.0 577.0 5485.0 5630.0 10538.0 + 2004 17477.0 4498.0 10249.0 21975.0 27726.0 + 2005 30629.0 6006.0 9677.0 36635.0 40306.0 + 2006 25985.0 9566.0 23304.0 35551.0 49289.0 + 2007 19867.0 16247.0 46209.0 36114.0 66076.0 + 2008 15223.0 28898.0 56363.0 44121.0 71586.0 + +Persisting the Selected Estimators +################################## + +The selected reported and paid development estimators are reused in later chapters, such as the Bornhuetter-Ferguson technique in Chapter 9. Rather than refitting them, we persist the fitted estimators with ``to_json`` so they can be recalled directly. JSON is used rather than a pickle so the saved estimators load reliably across package and dependency versions. + +.. doctest:: + + >>> import os + >>> data_dir = os.path.join(os.path.dirname(cl.__file__), "utils", "data") + >>> with open(os.path.join(data_dir, "friedland_ch7_xyz_reported.json"), "w") as f: + ... _ = f.write(reported_devs["Selected"].to_json()) + >>> with open(os.path.join(data_dir, "friedland_ch7_xyz_paid.json"), "w") as f: + ... _ = f.write(paid_devs["Selected"].to_json()) + +Exhibit III Sheet 1 p114 +########################## + +WIP diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index decd20669..efc5d71ff 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -2,3563 +2,38 @@ "cells": [ { "cell_type": "markdown", - "id": "3f7daee7", + "id": "e74a94cb", "metadata": {}, "source": [ - "# Chapter 7 - Development Method\n", - "\n", - "> The development technique, also known as the chain ladder technique, is one of\n", - "> the most frequently used methodologies for estimating unpaid claims.\n", - ">\n", - "> -- Friedland, p84\n", - "\n", - "This chapter covers the foundational development method (or chainladder) method. In the chainladder package, this is implemented in the ``Development`` estimator. The develops ultimate claims for each accident year based on the assumption that future claims will develop similarly to prior years' claims. The development method consists of the following steps: \n", - "\n", - "1. Compile claims data in a development triangle;\n", - "1. Calculate age-to-age factors;\n", - "1. Calculate averages of the age-to-age factors;\n", - "1. Select claim development factors (CDFs);\n", - "1. Select the tail factor;\n", - "1. Calculate cumulative CDFs;\n", - "\n", - "In this chapter we will recreate the following Friedland Chapter 7 exhibits using the chainladder package:\n", - "\n", - "- **Exhibit I** — U.S. Industry Auto\n", - "- **Exhibit II** — XYZ Insurer (Auto BI)\n", - "- **Exhibit III** — U.S. PP Auto (impact of changing conditions)\n", - "- **Exhibit IV** — U.S. Auto (impact of change in product mix)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "f42e0344", - "metadata": {}, - "outputs": [], - "source": [ - "import chainladder as cl\n", - "from IPython.display import display, HTML, Markdown\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "\n", - "pd.set_option(\"display.max_columns\", None)\n", - "pd.set_option(\"display.width\", 1000)\n", - "\n", - "import warnings\n", - "\n", - "warnings.filterwarnings(\n", - " \"ignore\",\n", - " message=r\"Some exclusions have been ignored\\..*link ratio\\(s\\) is required.*\",\n", - " category=UserWarning,\n", - ")\n", - "\n", - "\n", - "#pd.options.display.float_format = '{:,.0f}'.format" - ] - }, - { - "cell_type": "markdown", - "id": "4bc06bc9", - "metadata": {}, - "source": [ - "## Exhibit I — U.S. Industry Auto (Impact of Changing Conditions)\n", - "\n", - "In Exhibit I, Friedland demonstrates seven steps of the development method by examining industry-aggregated accident year claim development data for U.S. private passenger auto insurance. \n", - "\n", - "### Exhibit I, Sheet 1 - U.S. Industry Auto - Reported Claims ($000)\n", - "\n", - "We begin by generating Sheet 1, Parts 1-4 which contain the data triangle and age-to-age factors for US Industry Auto reported claims under the increasing claim ratio scenario (p. 106).\n", - "\n", - "#### PART 1 - Data Triangle\n", - "\n", - "We have already imported the necessary packages loading the ``Triangle`` at the top of p106. Let's take a look at the ``Triangle`` we just loaded.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6d335ac0", - "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
199837,017,48743,169,00945,568,91946,784,55847,337,31847,533,26447,634,41947,689,65547,724,67847,742,304
199938,954,48446,045,71848,882,92450,219,67250,729,29250,926,77951,069,28551,163,54051,185,767
200041,155,77649,371,47852,358,47653,780,32254,303,08654,582,95054,742,18854,837,929
200142,394,06950,584,11253,704,29655,150,11855,895,58356,156,72756,299,562
200244,755,24352,971,64356,102,31257,703,85158,363,56458,592,712
200345,163,10252,497,73155,468,55157,015,41157,565,344
200445,417,30952,640,32255,553,67356,976,657
200546,360,86953,790,06156,786,410
200646,582,68454,641,339
200748,853,563
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1998 37017487.0 43169009.0 45568919.0 46784558.0 47337318.0 47533264.0 47634419.0 47689655.0 47724678.0 47742304.0\n", - "1999 38954484.0 46045718.0 48882924.0 50219672.0 50729292.0 50926779.0 51069285.0 51163540.0 51185767.0 NaN\n", - "2000 41155776.0 49371478.0 52358476.0 53780322.0 54303086.0 54582950.0 54742188.0 54837929.0 NaN NaN\n", - "2001 42394069.0 50584112.0 53704296.0 55150118.0 55895583.0 56156727.0 56299562.0 NaN NaN NaN\n", - "2002 44755243.0 52971643.0 56102312.0 57703851.0 58363564.0 58592712.0 NaN NaN NaN NaN\n", - "2003 45163102.0 52497731.0 55468551.0 57015411.0 57565344.0 NaN NaN NaN NaN NaN\n", - "2004 45417309.0 52640322.0 55553673.0 56976657.0 NaN NaN NaN NaN NaN NaN\n", - "2005 46360869.0 53790061.0 56786410.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 46582684.0 54641339.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 48853563.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tri = cl.load_sample('friedland_us_industry_auto')\n", - "tri['Reported Claims']" - ] - }, - { - "cell_type": "markdown", - "id": "69b7941b", - "metadata": {}, - "source": [ - "#### PART 2 - Age-to-Age Factors\n", - "\n", - "To calculate age-to-age factors, use the ``age-to-age`` attribute of the ``Triangle``." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2f69b262", - "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", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19981.16601.05601.02701.01201.00401.00201.00101.00101.0000
19991.18201.06201.02701.01001.00401.00301.00201.0000
20001.20001.06101.02701.01001.00501.00301.0020
20011.19301.06201.02701.01401.00501.0030
20021.18401.05901.02901.01101.0040
20031.16201.05701.02801.0100
20041.15901.05501.0260
20051.16001.0560
20061.1730
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "1998 1.166 1.056 1.027 1.012 1.004 1.002 1.001 1.001 1.0\n", - "1999 1.182 1.062 1.027 1.010 1.004 1.003 1.002 1.000 NaN\n", - "2000 1.200 1.061 1.027 1.010 1.005 1.003 1.002 NaN NaN\n", - "2001 1.193 1.062 1.027 1.014 1.005 1.003 NaN NaN NaN\n", - "2002 1.184 1.059 1.029 1.011 1.004 NaN NaN NaN NaN\n", - "2003 1.162 1.057 1.028 1.010 NaN NaN NaN NaN NaN\n", - "2004 1.159 1.055 1.026 NaN NaN NaN NaN NaN NaN\n", - "2005 1.160 1.056 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 1.173 NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tri['Reported Claims'].age_to_age.round(decimals = 3)" - ] - }, - { - "cell_type": "markdown", - "id": "77c22573", - "metadata": {}, - "source": [ - "#### PART 3 - Average Age-to-Age Factors\n", - "\n", - "To calculate the average age-to-age factors, we will use the ``Development`` estimator to ``fit_transform`` the original ``Triangle``. This calculates the averages but also preserves the ability to apply other estimators later. The specific choices of average paramters (n_period, etc.) are provided to ``Development``. The attribute for the calculated average age-to-age factors is the ``ldf_``." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "10865a15", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "##### Reported Claims - Simple Average (Latest 5)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16801.05801.02701.01101.00401.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Reported Claims - Simple Average (Latest 3)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16401.05601.02701.01201.00501.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Reported Claims - Medial Average (Latest 5 x 1)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16501.05701.02701.01001.00401.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.165 1.057 1.027 1.01 1.004 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Reported Claims - Volume-weighted Average (Latest 5)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16801.05801.02701.01101.00401.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.168 1.058 1.027 1.011 1.004 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Reported Claims - Volume-weighted Average (Latest 3)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16401.05601.02701.01201.00501.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.164 1.056 1.027 1.012 1.005 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Reported Claims - Geometric Average (Latest 4)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.16401.05701.02701.01101.00401.00301.00201.00101.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.164 1.057 1.027 1.011 1.004 1.003 1.002 1.001 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(Markdown(\"##### Reported Claims - Simple Average (Latest 5)\"))\n", - "reported_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Reported Claims'])\n", - "display(reported_simple_5.ldf_.round(3))\n", - "\n", - "display(Markdown(\"##### Reported Claims - Simple Average (Latest 3)\"))\n", - "reported_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Reported Claims'])\n", - "display(reported_simple_3.ldf_.round(3))\n", - "\n", - "display(Markdown(\"##### Reported Claims - Medial Average (Latest 5 x 1)\"))\n", - "reported_medial_5x1 = cl.Development(n_periods=5, average='simple', drop_high = 1, drop_low = 1).fit_transform(tri['Reported Claims'])\n", - "display(reported_medial_5x1.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"##### Reported Claims - Volume-weighted Average (Latest 5)\"))\n", - "reported_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Reported Claims'])\n", - "display(reported_volume_5.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"##### Reported Claims - Volume-weighted Average (Latest 3)\"))\n", - "reported_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Reported Claims'])\n", - "display(reported_volume_3.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"##### Reported Claims - Geometric Average (Latest 4)\"))\n", - "reported_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Reported Claims'])\n", - "display(reported_geometric_4.ldf_.round(decimals = 3))\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "9962ffae", - "metadata": {}, - "source": [ - "#### PART 4 - Selected Age-to-Age Factors\n", - "\n", - "For the prior selected, we need to create a hard-coded pattern, using the ``DevelopmentConstant`` estimator. In a production workflow, you can save the development pattern from the prior analysis and load for reference in a subsequent analysis. \n", - "\n", - "We will also be using the ``TailConstant`` estimator to add a tail factor to selected development patterns. We add the tail factor to a transformed ``Triangle`` (i.e. applying ``fit_transform`` of the ``Development`` estimator to a ``Triangle``) by using ``fit_transform`` once again." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2b3d7c62", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "##### Prior Selected" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-120120-132
(All)1.16001.05701.02801.01201.00501.00301.00101.00101.00001.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "(All) 1.16 1.057 1.028 1.012 1.005 1.003 1.001 1.001 1.0 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "reported_prior_method = cl.DevelopmentConstant(\n", - " patterns = {\n", - " 12:1.16, \n", - " 24:1.057, \n", - " 36:1.028, \n", - " 48:1.012, \n", - " 60:1.005, \n", - " 72:1.003, \n", - " 84:1.001, \n", - " 96:1.001, \n", - " 108:1.000\n", - " }, \n", - " style='ldf'\n", - " )\n", - "\n", - "reported_prior_ft = reported_prior_method.fit_transform(tri['Reported Claims'])\n", - "reported_tail_method = cl.TailConstant(\n", - " tail = 1,\n", - " projection_period = 0\n", - " )\n", - "reported_prior_selected = reported_tail_method.fit_transform(reported_prior_ft)\n", - "display(Markdown(\"##### Prior Selected\"))\n", - "display(reported_prior_selected.ldf_)" - ] - }, - { - "cell_type": "markdown", - "id": "2c4cc531", - "metadata": {}, - "source": [ - "Next, we can select some factors. We can also reuse the `TailConstant` from the previous step. This is fairly common in practice, as tail factors are selected less frequently than the development pattern itself, so need to be carried from analysis to analysis." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7c66ca14", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "##### Selected" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-120120-132
(All)1.16411.05591.02731.01151.00461.00281.00161.00061.00041.0000
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "(All) 1.164093 1.055879 1.027349 1.011532 1.004584 1.002753 1.001585 1.000584 1.000369 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "reported_selected_pattern = reported_tail_method.fit_transform(reported_simple_3)\n", - "display(Markdown(\"##### Selected\"))\n", - "display(reported_selected_pattern.ldf_)" - ] - }, - { - "cell_type": "markdown", - "id": "70edfe0c", - "metadata": {}, - "source": [ - "The Development estimator has a ``cdf_`` attribute that will automatically multiply age-to-age factors cumulatively into age-to-ultimate factors. The Friedland text uses the rounded LDF to calculate CDF. This can be achieved in this package by using the ``incr_to_cum()`` method of the rounded age-to-age factors." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "bdb96633", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "##### CDF to Ultimate (without rounding)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)1.28997692842843771.10813861976398691.04949345751452541.02155445751002221.00990849807236581.00530021728234491.00254018500303091.00095395484909181.0003693267453791.0
" - ], - "text/plain": [ - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", - "(All) 1.289977 1.108139 1.049493 1.021554 1.009908 1.0053 1.00254 1.000954 1.000369 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### CDF to Ultimate (with rounding)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)1.29201.11001.05101.02301.01101.00601.00301.00101.00001.0000
" - ], - "text/plain": [ - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", - "(All) 1.292 1.11 1.051 1.023 1.011 1.006 1.003 1.001 1.0 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from contextlib import contextmanager\n", - "from chainladder.core.display import TriangleDisplay\n", - "\n", - "@contextmanager\n", - "def unrounded_triangle_display():\n", - " original = TriangleDisplay._get_format_str\n", - " TriangleDisplay._get_format_str = staticmethod(lambda data: \"{}\")\n", - " try:\n", - " yield\n", - " finally:\n", - " TriangleDisplay._get_format_str = staticmethod(original)\n", - "\n", - "display(Markdown(\"##### CDF to Ultimate (without rounding)\"))\n", - "with unrounded_triangle_display():\n", - " display(reported_selected_pattern.cdf_)\n", - "\n", - "display(Markdown(\"##### CDF to Ultimate (with rounding)\"))\n", - "reported_selected_cdf = reported_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3)\n", - "display(reported_selected_cdf)\n" - ] - }, - { - "cell_type": "markdown", - "id": "5d961615", - "metadata": {}, - "source": [ - "To calculate % reported, we will use ``Triangle`` manipulation from Chapter 5 directly on the development pattern (which is also a ``Triangle``)." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "496165f8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "##### Percent Reported" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)0.77400.90100.95100.97800.98900.99400.99700.99901.00001.0000
" - ], - "text/plain": [ - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", - "(All) 0.774 0.901 0.951 0.978 0.989 0.994 0.997 0.999 1.0 1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(Markdown(\"##### Percent Reported\"))\n", - "display((1 / reported_selected_cdf).round(decimals = 3))" - ] - }, - { - "cell_type": "markdown", - "id": "e4b038d4", - "metadata": {}, - "source": [ - "### Exhibit I, Sheet 2 (p. 107)\n", - "\n", - "Moving onto the next page, all the calculations are identical to the previous page. We will manually repeat the same code. In a production workflow, commonly repeated methods and selections can be streamlined, which we will demonstrate in Exhibit II." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "531bcf38", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Part 1 - Data Triangle" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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
199818,539,25433,231,03940,062,00843,892,03945,896,53546,765,42247,221,32247,446,87747,555,45647,644,187
199920,410,19336,090,68443,259,40247,159,24149,208,53250,162,04350,625,75750,878,80851,000,534
200022,120,84338,976,01446,389,28250,562,38552,735,28053,740,10154,284,33454,533,225
200122,992,25940,096,19847,767,83552,093,91654,363,43655,378,80155,878,421
200224,092,78241,795,31349,903,80354,352,88456,754,37657,807,215
200324,084,45141,399,61249,070,33253,584,20155,930,654
200424,369,77041,489,86349,236,67853,774,672
200525,100,69742,702,22950,644,994
200625,608,77643,606,497
200727,229,969
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0\n", - "1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN\n", - "2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN\n", - "2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN\n", - "2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN\n", - "2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN\n", - "2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN\n", - "2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "#### Part 2 - Age-to-Age Factors" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19981.79201.20601.09601.04601.01901.01001.00501.00201.0020
19991.76801.19901.09001.04301.01901.00901.00501.0020
20001.76201.19001.09001.04301.01901.01001.0050
20011.74401.19101.09101.04401.01901.0090
20021.73501.19401.08901.04401.0190
20031.71901.18501.09201.0440
20041.70301.18701.0920
20051.70101.1860
20061.7030
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "1998 1.792 1.206 1.096 1.046 1.019 1.010 1.005 1.002 1.002\n", - "1999 1.768 1.199 1.090 1.043 1.019 1.009 1.005 1.002 NaN\n", - "2000 1.762 1.190 1.090 1.043 1.019 1.010 1.005 NaN NaN\n", - "2001 1.744 1.191 1.091 1.044 1.019 1.009 NaN NaN NaN\n", - "2002 1.735 1.194 1.089 1.044 1.019 NaN NaN NaN NaN\n", - "2003 1.719 1.185 1.092 1.044 NaN NaN NaN NaN NaN\n", - "2004 1.703 1.187 1.092 NaN NaN NaN NaN NaN NaN\n", - "2005 1.701 1.186 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 1.703 NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "#### Part 3 - Average Age-to-Age Factors" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Simple Average" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 5" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.71201.18901.09101.04401.01901.01001.00501.00201.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 3" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.70201.18601.09101.04401.01901.00901.00501.00201.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Medial Average" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 5 x 1" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.70811.18801.09081.04361.01891.00951.00481.00231.0019
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.708081 1.188017 1.090837 1.043604 1.018888 1.009496 1.004777 1.00234 1.001866" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Volume-weighted Average" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 5" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.71201.18901.09101.04401.01901.01001.00501.00201.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.712 1.189 1.091 1.044 1.019 1.01 1.005 1.002 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 3" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.70201.18601.09101.04401.01901.00901.00501.00201.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.702 1.186 1.091 1.044 1.019 1.009 1.005 1.002 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Geometric Average" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Latest 4" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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)1.70601.18801.09101.04401.01901.01001.00501.00201.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "(All) 1.706 1.188 1.091 1.044 1.019 1.01 1.005 1.002 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "#### Part 4 - Selected Age-to-Age Factors" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "#### Prior Selected" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-120120-132
(All)1.70701.18901.09101.04401.01901.01001.00501.00301.00101.0020
" - ], - "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "(All) 1.707 1.189 1.091 1.044 1.019 1.01 1.005 1.003 1.001 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Selected" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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
199818,539,25433,231,03940,062,00843,892,03945,896,53546,765,42247,221,32247,446,87747,555,45647,644,187
199920,410,19336,090,68443,259,40247,159,24149,208,53250,162,04350,625,75750,878,80851,000,534
200022,120,84338,976,01446,389,28250,562,38552,735,28053,740,10154,284,33454,533,225
200122,992,25940,096,19847,767,83552,093,91654,363,43655,378,80155,878,421
200224,092,78241,795,31349,903,80354,352,88456,754,37657,807,215
200324,084,45141,399,61249,070,33253,584,20155,930,654
200424,369,77041,489,86349,236,67853,774,672
200525,100,69742,702,22950,644,994
200625,608,77643,606,497
200727,229,969
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1998 18539254.0 33231039.0 40062008.0 43892039.0 45896535.0 46765422.0 47221322.0 47446877.0 47555456.0 47644187.0\n", - "1999 20410193.0 36090684.0 43259402.0 47159241.0 49208532.0 50162043.0 50625757.0 50878808.0 51000534.0 NaN\n", - "2000 22120843.0 38976014.0 46389282.0 50562385.0 52735280.0 53740101.0 54284334.0 54533225.0 NaN NaN\n", - "2001 22992259.0 40096198.0 47767835.0 52093916.0 54363436.0 55378801.0 55878421.0 NaN NaN NaN\n", - "2002 24092782.0 41795313.0 49903803.0 54352884.0 56754376.0 57807215.0 NaN NaN NaN NaN\n", - "2003 24084451.0 41399612.0 49070332.0 53584201.0 55930654.0 NaN NaN NaN NaN NaN\n", - "2004 24369770.0 41489863.0 49236678.0 53774672.0 NaN NaN NaN NaN NaN NaN\n", - "2005 25100697.0 42702229.0 50644994.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 25608776.0 43606497.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 27229969.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### CDF to Ultimate" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)2.39001.40401.18401.08501.04001.02001.01101.00601.00401.0020
" - ], - "text/plain": [ - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", - "(All) 2.39 1.404 1.184 1.085 1.04 1.02 1.011 1.006 1.004 1.002" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "##### Percent Reported" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
(All)0.41800.71200.84500.92200.96200.98000.98900.99400.99600.9980
" - ], - "text/plain": [ - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", - "(All) 0.418 0.712 0.845 0.922 0.962 0.98 0.989 0.994 0.996 0.998" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(Markdown(\"#### Part 1 - Data Triangle\"))\n", - "display(tri['Paid Claims'])\n", - "\n", - "display(Markdown(\"#### Part 2 - Age-to-Age Factors\"))\n", - "display(tri['Paid Claims'].age_to_age.round(decimals = 3))\n", - "\n", - "display(Markdown(\"#### Part 3 - Average Age-to-Age Factors\"))\n", - "\n", - "display(Markdown(\"##### Simple Average\"))\n", - "display(Markdown(\"##### Latest 5\"))\n", - "paid_simple_5 = cl.Development(n_periods=5, average='simple').fit_transform(tri['Paid Claims'])\n", - "display(paid_simple_5.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"##### Latest 3\"))\n", - "paid_simple_3 = cl.Development(n_periods=3, average='simple').fit_transform(tri['Paid Claims'])\n", - "display(paid_simple_3.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"##### Medial Average\"))\n", - "display(Markdown(\"##### Latest 5 x 1\"))\n", - "paid_medial_5x1 = cl.Development(n_periods=5, average='simple',drop_high = 1, drop_low = 1, preserve=1).fit_transform(tri['Paid Claims'])\n", - "display(paid_medial_5x1.ldf_)\n", - "\n", - "display(Markdown(\"##### Volume-weighted Average\"))\n", - "display(Markdown(\"##### Latest 5\"))\n", - "paid_volume_5 = cl.Development(n_periods=5, average='volume').fit_transform(tri['Paid Claims'])\n", - "display(paid_volume_5.ldf_.round(decimals = 3) )\n", - "\n", - "display(Markdown(\"##### Latest 3\"))\n", - "paid_volume_3 = cl.Development(n_periods=3, average='volume').fit_transform(tri['Paid Claims'])\n", - "display(paid_volume_3.ldf_.round(decimals = 3) )\n", - "\n", - "display(Markdown(\"##### Geometric Average\"))\n", - "display(Markdown(\"##### Latest 4\"))\n", - "paid_geometric_4 = cl.Development(n_periods=4, average='geometric').fit_transform(tri['Paid Claims'])\n", - "display(paid_geometric_4.ldf_.round(decimals = 3))\n", - "\n", - "display(Markdown(\"#### Part 4 - Selected Age-to-Age Factors\"))\n", - "display(Markdown(\"#### Prior Selected\"))\n", - "\n", - "paid_prior_method = cl.DevelopmentConstant(\n", - " patterns = {\n", - " 12:1.707, \n", - " 24:1.189, \n", - " 36:1.091, \n", - " 48:1.044, \n", - " 60:1.019, \n", - " 72:1.01, \n", - " 84:1.005, \n", - " 96:1.003, \n", - " 108:1.001\n", - " }, \n", - " style='ldf'\n", - " )\n", - "paid_prior_ft = paid_prior_method.fit_transform(tri['Paid Claims'])\n", - "paid_tail_method = cl.TailConstant(\n", - " tail = 1.002,\n", - " projection_period = 0\n", - " )\n", - "paid_prior_selected = paid_tail_method.fit_transform(paid_prior_ft)\n", - "display(paid_prior_selected.ldf_)\n", - "\n", - "display(Markdown(\"##### Selected\"))\n", - "paid_selected_pattern = paid_tail_method.fit_transform(paid_simple_3)\n", - "display(paid_selected_pattern)\n", - "\n", - "display(Markdown(\"##### CDF to Ultimate\"))\n", - "paid_selected_cdf = paid_selected_pattern.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3)\n", - "display(paid_selected_cdf)\n", - "\n", - "display(Markdown(\"##### Percent Reported\"))\n", - "display((1 / paid_selected_cdf).round(decimals = 3))\n" - ] - }, - { - "cell_type": "markdown", - "id": "b43918c2", - "metadata": {}, - "source": [ - "### Exhibit I, Sheet 3 (p. 108)\n", - "\n", - "This is a common report layout for reserving analyses. Some ``Pandas`` manipulation is needed to retrieve all the figures from the transformed ``Triangle`` objects and achieve the tabular look. We will create a function to reuse the manipulation throughout this chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "fd322ebc", - "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", - "
AgeReported ClaimsPaid ClaimsReported CDFPaid CDFReported UltimatePaid Ultimate
199812047742304.047644187.01.0000001.0020004.774230e+074.773948e+07
199910851185767.051000534.01.0003691.0038705.120467e+075.119788e+07
20009654837929.054533225.01.0009541.0062195.489024e+075.487237e+07
20018456299562.055878421.01.0025401.0110365.644257e+075.649507e+07
20027258592712.057807215.01.0053001.0206045.890327e+075.899830e+07
20036057565344.055930654.01.0099081.0397525.813573e+075.815399e+07
20044856976657.053774672.01.0215541.0853415.820476e+075.836386e+07
20053656786410.050644994.01.0494931.1842185.959697e+075.997474e+07
20062454641339.043606497.01.1081391.4044856.055018e+076.124466e+07
20071248853563.027229969.01.2899772.3906886.301997e+076.509837e+07
\n", - "
" - ], - "text/plain": [ - " Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", - "1998 120 47742304.0 47644187.0 1.000000 1.002000 4.774230e+07 4.773948e+07\n", - "1999 108 51185767.0 51000534.0 1.000369 1.003870 5.120467e+07 5.119788e+07\n", - "2000 96 54837929.0 54533225.0 1.000954 1.006219 5.489024e+07 5.487237e+07\n", - "2001 84 56299562.0 55878421.0 1.002540 1.011036 5.644257e+07 5.649507e+07\n", - "2002 72 58592712.0 57807215.0 1.005300 1.020604 5.890327e+07 5.899830e+07\n", - "2003 60 57565344.0 55930654.0 1.009908 1.039752 5.813573e+07 5.815399e+07\n", - "2004 48 56976657.0 53774672.0 1.021554 1.085341 5.820476e+07 5.836386e+07\n", - "2005 36 56786410.0 50644994.0 1.049493 1.184218 5.959697e+07 5.997474e+07\n", - "2006 24 54641339.0 43606497.0 1.108139 1.404485 6.055018e+07 6.124466e+07\n", - "2007 12 48853563.0 27229969.0 1.289977 2.390688 6.301997e+07 6.509837e+07" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame():\n", - " output = pd.DataFrame() # initializing a DataFrame\n", - " output[\"Reported Claims\"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index\n", - " age = reported.development.iloc[::-1] # flipping the age order\n", - " age.index = output.index # forcing the index to match\n", - " output['Age'] = age\n", - " output = output[['Age','Reported Claims']] # reordering the columns\n", - " output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses\n", - " reported_cdf = reported.cdf_.T # transposing the CDF\n", - " reported_cdf.index = output.index[::-1] # forcing the index to match\n", - " output[\"Reported CDF\"] = reported_cdf \n", - " paid_cdf = paid.cdf_.T\n", - " paid_cdf.index = output.index[::-1]\n", - " output[\"Paid CDF\"] = paid_cdf\n", - " output[\"Reported Ultimate\"] = cl.Chainladder().fit(reported).ultimate_.to_frame(origin_as_datetime=False) # using the Chainladder estimator to return the ultimate\n", - " output[\"Paid Ultimate\"] = cl.Chainladder().fit(paid).ultimate_.to_frame(origin_as_datetime=False)\n", - " return output\n", - "\n", - "exhibit = development_summary(reported_selected_pattern,paid_selected_pattern)\n", - "display(exhibit)" - ] - }, - { - "cell_type": "markdown", - "id": "5c49069a", - "metadata": {}, - "source": [ - "Unfortunately this does not match the table from the text, due to rounding. We will construct a separate, rounded exhibit to reconcile to the text." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "275bf425", - "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", - "
Reported CDFPaid CDFReported UltimatePaid Ultimate
19981.0001.00247742304.047739475.0
19991.0001.00451185767.051204536.0
20001.0011.00654892767.054860424.0
20011.0031.01156468461.056493084.0
20021.0061.02058944268.058963359.0
20031.0111.04058198563.058167880.0
20041.0231.08558287120.058345519.0
20051.0511.18459682517.059963673.0
20061.1101.40460651886.061223522.0
20071.2922.39063118803.065079626.0
\n", - "
" - ], - "text/plain": [ - " Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", - "1998 1.000 1.002 47742304.0 47739475.0\n", - "1999 1.000 1.004 51185767.0 51204536.0\n", - "2000 1.001 1.006 54892767.0 54860424.0\n", - "2001 1.003 1.011 56468461.0 56493084.0\n", - "2002 1.006 1.020 58944268.0 58963359.0\n", - "2003 1.011 1.040 58198563.0 58167880.0\n", - "2004 1.023 1.085 58287120.0 58345519.0\n", - "2005 1.051 1.184 59682517.0 59963673.0\n", - "2006 1.110 1.404 60651886.0 61223522.0\n", - "2007 1.292 2.390 63118803.0 65079626.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def rounded_development_summary(reported: cl.Triangle(), paid: cl.Triangle()) -> pd.DataFrame():\n", - " output = pd.DataFrame() # initializing a DataFrame\n", - " output[\"Reported Claims\"] = reported.latest_diagonal.to_frame(origin_as_datetime=False) # using a vector of losses to anchor the exhibit index\n", - " age = reported.development.iloc[::-1] # flipping the age order\n", - " age.index = output.index # forcing the index to match\n", - " output['Age'] = age\n", - " output = output[['Age','Reported Claims']] # reordering the columns\n", - " output ['Paid Claims'] = paid.latest_diagonal.to_frame(origin_as_datetime=False) # adding in paid losses\n", - " reported_cdf = reported.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T\n", - " reported_cdf.index = output.index[::-1]\n", - " output[\"Reported CDF\"] = reported_cdf\n", - " paid_cdf = paid.ldf_.round(decimals = 3).incr_to_cum().round(decimals = 3).T\n", - " paid_cdf.index = output.index[::-1]\n", - " output[\"Paid CDF\"] = paid_cdf\n", - " output[\"Reported Ultimate\"] = (output['Reported Claims'] * output[\"Reported CDF\"]).round(decimals = 0) # taking a short cut to calculate the ultimate without using Chainladder \n", - " output[\"Paid Ultimate\"] = (output['Paid Claims'] * output[\"Paid CDF\"]).round(decimals = 0)\n", - " return output\n", - "\n", - "rounded_exhibit = rounded_development_summary(reported_selected_pattern,paid_selected_pattern)\n", - "display(rounded_exhibit[['Reported CDF','Paid CDF','Reported Ultimate','Paid Ultimate']]) # only displaying the rounded columns\n" - ] - }, - { - "cell_type": "markdown", - "id": "30855316", - "metadata": {}, - "source": [ - "### Exhibit I, Sheet 4 p109\n", - "\n", - "This is another common report layout for reserving analyses. The manipulation here are more straight-forward that the previous exhibit." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "0afe3488", - "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", - "
Case OutstandingReported Method IBNRPaid Method IBNRReported Method UnpaidPaid Method Unpaid
199898117.00.0-2829.098117.095288.0
1999185233.00.018769.0185233.0204002.0
2000304704.054838.022495.0359542.0327199.0
2001421141.0168899.0193522.0590040.0614663.0
2002785497.0351556.0370647.01137053.01156144.0
20031634690.0633219.0602536.02267909.02237226.0
20043201985.01310463.01368862.04512448.04570847.0
20056141416.02896107.03177263.09037523.09318679.0
200611034842.06010547.06582183.017045389.017617025.0
200721623594.014265240.016226063.035888834.037849657.0
\n", - "
" - ], - "text/plain": [ - " Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid\n", - "1998 98117.0 0.0 -2829.0 98117.0 95288.0\n", - "1999 185233.0 0.0 18769.0 185233.0 204002.0\n", - "2000 304704.0 54838.0 22495.0 359542.0 327199.0\n", - "2001 421141.0 168899.0 193522.0 590040.0 614663.0\n", - "2002 785497.0 351556.0 370647.0 1137053.0 1156144.0\n", - "2003 1634690.0 633219.0 602536.0 2267909.0 2237226.0\n", - "2004 3201985.0 1310463.0 1368862.0 4512448.0 4570847.0\n", - "2005 6141416.0 2896107.0 3177263.0 9037523.0 9318679.0\n", - "2006 11034842.0 6010547.0 6582183.0 17045389.0 17617025.0\n", - "2007 21623594.0 14265240.0 16226063.0 35888834.0 37849657.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def unpaid_summary(dev_sum: pd.DataFrame()) -> pd.DataFrame():\n", - " output = dev_sum.loc[:,['Reported Claims','Paid Claims','Reported Ultimate','Paid Ultimate']]\n", - " output['Case Outstanding'] = output['Reported Claims'] - output['Paid Claims']\n", - " output['Reported Method IBNR'] = output['Reported Ultimate'] - output['Reported Claims']\n", - " output['Paid Method IBNR'] = output['Paid Ultimate'] - output['Reported Claims']\n", - " output['Reported Method Unpaid'] = output['Reported Method IBNR'] + output['Case Outstanding']\n", - " output['Paid Method Unpaid'] = output['Paid Method IBNR'] + output['Case Outstanding']\n", - " return output\n", - "\n", - "unpaid_exhibit = unpaid_summary(rounded_exhibit)\n", - "display(unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']])" - ] - }, - { - "cell_type": "markdown", - "id": "550d195d", - "metadata": {}, - "source": [ - "# Exhibit II - XYZ Insurer\n", - "\n", - "In Exhibit II, Friedland applies the Development method to XYZ Insurer, a private passenger automobile bodily injury liability insurer to illustrate how the method performs in scenarios where due to changing conditions historical claims experience may not be an appropriate predictor of future claims activity. We reproduce these results in the following cells." - ] - }, - { - "cell_type": "markdown", - "id": "08b3f118", - "metadata": {}, - "source": [ - "### Exhibit II, Sheet 1 p110\n", - "\n", - "Now that we have walked through an analysis step by step, let's introduce some scaling by streamlining the entire exhibit into single function. " - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "9ba05d2f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PART 1 - Data Triangle\n", - " 12 24 36 48 60 72 84 96 108 120 132\n", - "1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - "1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - "2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - "2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - "2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - "2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - "2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - "2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "PART 2 - Age-to-Age Factors\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "1998 NaN NaN 1.108227 1.067528 1.064392 1.044146 1.114243 0.987596 0.979707 0.999179\n", - "1999 NaN 1.237646 1.197135 1.144305 1.057447 1.055967 0.988085 1.011131 1.001436 NaN\n", - "2000 1.196032 1.168062 1.239452 1.086354 1.168543 1.072291 1.015048 0.993094 NaN NaN\n", - "2001 1.353175 1.313547 1.264295 1.286967 1.085689 1.037834 1.006668 NaN NaN NaN\n", - "2002 1.590040 1.308591 1.413078 1.179122 1.096524 0.989076 NaN NaN NaN NaN\n", - "2003 1.760957 1.786055 1.337353 1.089595 1.003210 NaN NaN NaN NaN NaN\n", - "2004 2.364225 1.465057 1.218140 0.980211 NaN NaN NaN NaN NaN NaN\n", - "2005 1.654181 1.482965 1.004478 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 1.728479 1.043199 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1.629204 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "PART 3 - Average Age-to-Age Factor\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "simple_5 1.827 1.417 1.247 1.124 1.082 1.040 1.031 0.997 0.991 0.999\n", - "simple_3 1.671 1.330 1.187 1.083 1.062 1.033 1.003 0.997 0.991 0.999\n", - "simple_2 1.679 1.263 1.111 1.035 1.050 1.013 1.011 1.002 0.991 0.999\n", - "volume_4 1.802 1.376 1.185 1.094 1.081 1.033 1.019 0.998 0.993 0.999\n", - "volume_3 1.674 1.325 1.147 1.060 1.060 1.028 1.005 0.998 0.993 0.999\n", - "volume_2 1.687 1.265 1.102 1.020 1.050 1.010 1.011 1.000 0.993 0.999\n", - "geometric_3 1.670 1.314 1.178 1.080 1.061 1.033 1.003 0.997 0.991 0.999\n", - "medial 5x1 1.715 1.419 1.273 1.118 1.080 1.046 1.011 0.993 0.991 0.999\n", - "PART 4 - Selected Age-to-Age Factor\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144\n", - "Selected 1.687 1.265 1.102 1.02 1.05 1.01 1.011 1.0 0.993 0.999 1.0\n", - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult\n", - "CDF to Ultimate 2.551 1.512 1.196 1.085 1.064 1.013 1.003 0.992 0.992 0.999 1.0\n", - "Percent Reported 0.392 0.661 0.836 0.922 0.940 0.987 0.997 1.008 1.008 1.001 1.0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\utils\\triangle_weight.py:361: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", - " warnings.warn(warning)\n", - "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\development\\base.py:272: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", - " warnings.warn(warning)\n" - ] - }, - { - "data": { - "text/plain": [ - "{'simple_5': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'simple_3': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'simple_2': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'volume_4': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'volume_3': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'volume_2': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'geometric_3': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'medial 5x1': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN,\n", - " 'Selected': 12 24 36 48 60 72 84 96 108 120 132\n", - " 1998 NaN NaN 11171.0 12380.0 13216.0 14067.0 14688.0 16366.0 16163.0 15835.0 15822.0\n", - " 1999 NaN 13255.0 16405.0 19639.0 22473.0 23764.0 25094.0 24795.0 25071.0 25107.0 NaN\n", - " 2000 15676.0 18749.0 21900.0 27144.0 29488.0 34458.0 36949.0 37505.0 37246.0 NaN NaN\n", - " 2001 11827.0 16004.0 21022.0 26578.0 34205.0 37136.0 38541.0 38798.0 NaN NaN NaN\n", - " 2002 12811.0 20370.0 26656.0 37667.0 44414.0 48701.0 48169.0 NaN NaN NaN NaN\n", - " 2003 9651.0 16995.0 30354.0 40594.0 44231.0 44373.0 NaN NaN NaN NaN NaN\n", - " 2004 16995.0 40180.0 58866.0 71707.0 70288.0 NaN NaN NaN NaN NaN NaN\n", - " 2005 28674.0 47432.0 70340.0 70655.0 NaN NaN NaN NaN NaN NaN NaN\n", - " 2006 27066.0 46783.0 48804.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2007 19477.0 31732.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - " 2008 18632.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN}" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]:\n", - " print('PART 1 - Data Triangle')\n", - " print(tri)\n", - " print('PART 2 - Age-to-Age Factors')\n", - " print(tri.age_to_age)\n", - " devs = {}\n", - " print('PART 3 - Average Age-to-Age Factor')\n", - " for k,v in avg_params.items():\n", - " devs[k] = cl.Development(**v).fit_transform(tri)\n", - " def print_ldfs(ldf_dict:dict[cl.Triangle()]):\n", - " print(pd.concat([v.to_frame().rename(index={'(All)':k}) for k,v in ldf_dict.items()]))\n", - " return None\n", - " print_ldfs({k:v.ldf_.round(decimals=3) for k,v in devs.items()})\n", - " devs[\"Selected\"] = cl.TailConstant(tail = tail, projection_period = 0).fit_transform(devs[selected_avg])\n", - " selected = {}\n", - " selected['CDF to Ultimate'] = devs[\"Selected\"].ldf_.round(decimals=3).incr_to_cum().round(decimals=3)\n", - " selected['Percent Reported'] = (1/selected['CDF to Ultimate']).round(decimals=3)\n", - " print('PART 4 - Selected Age-to-Age Factor')\n", - " print_ldfs({'Selected':devs['Selected'].ldf_.round(decimals=3)})\n", - " print_ldfs(selected)\n", - " return devs\n", - "\n", - "import re\n", - "tri = cl.load_sample('friedland_xyz_auto_bi')\n", - "assumptions_list = ['simple_5','simple_3','simple_2','volume_4','volume_3','volume_2','geometric_3']\n", - "assumptions = {x:{'n_periods':int(re.match(r'.+_(.+)', x).group(1)),'average':re.match(r'(.+)_', x).group(1)} for x in assumptions_list}\n", - "assumptions['medial 5x1'] = {'n_periods':5, 'average':'simple','drop_high':1, 'drop_low':1}\n", - "reported_devs = dev_exhibit(tri['Reported Claims'],assumptions,'volume_2',1)\n", - "display(reported_devs)" - ] - }, - { - "cell_type": "markdown", - "id": "e849b1b9", - "metadata": {}, - "source": [ - "### Exhibit II, Sheet 2 (p. 111)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "61ff6e10", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PART 1 - Data Triangle\n", - " 12 24 36 48 60 72 84 96 108 120 132\n", - "1998 NaN NaN 6309.0 8521.0 10082.0 11620.0 13242.0 14419.0 15311.0 15764.0 15822.0\n", - "1999 NaN 4666.0 9861.0 13971.0 18127.0 22032.0 23511.0 24146.0 24592.0 24817.0 NaN\n", - "2000 1302.0 6513.0 12139.0 17828.0 24030.0 28853.0 33222.0 35902.0 36782.0 NaN NaN\n", - "2001 1539.0 5952.0 12319.0 18609.0 24387.0 31090.0 37070.0 38519.0 NaN NaN NaN\n", - "2002 2318.0 7932.0 13822.0 22095.0 31945.0 40629.0 44437.0 NaN NaN NaN NaN\n", - "2003 1743.0 6240.0 12683.0 22892.0 34505.0 39320.0 NaN NaN NaN NaN NaN\n", - "2004 2221.0 9898.0 25950.0 43439.0 52811.0 NaN NaN NaN NaN NaN NaN\n", - "2005 3043.0 12219.0 27073.0 40026.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 3531.0 11778.0 22819.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 3529.0 11865.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 3409.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "PART 2 - Age-to-Age Factors\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "1998 NaN NaN 1.350610 1.183194 1.152549 1.139587 1.088884 1.061863 1.029587 1.003679\n", - "1999 NaN 2.113373 1.416793 1.297473 1.215425 1.067130 1.027009 1.018471 1.009149 NaN\n", - "2000 5.002304 1.863811 1.468655 1.347880 1.200707 1.151423 1.080669 1.024511 NaN NaN\n", - "2001 3.867446 2.069724 1.510593 1.310495 1.274860 1.192345 1.039088 NaN NaN NaN\n", - "2002 3.421915 1.742562 1.598539 1.445802 1.271842 1.093726 NaN NaN NaN NaN\n", - "2003 3.580034 2.032532 1.804936 1.507295 1.139545 NaN NaN NaN NaN NaN\n", - "2004 4.456551 2.621742 1.673950 1.215751 NaN NaN NaN NaN NaN NaN\n", - "2005 4.015445 2.215648 1.478447 NaN NaN NaN NaN NaN NaN NaN\n", - "2006 3.335599 1.937426 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2007 3.362142 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "PART 3 - Average Age-to-Age Factor\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", - "simple_5 3.750 2.110 1.613 1.365 1.220 1.129 1.059 1.035 1.019 1.004\n", - "simple_3 3.571 2.258 1.652 1.390 1.229 1.146 1.049 1.035 1.019 1.004\n", - "simple_2 3.349 2.077 1.576 1.362 1.206 1.143 1.060 1.021 1.019 1.004\n", - "volume_4 3.713 2.206 1.615 1.342 1.218 1.128 1.056 1.030 1.017 1.004\n", - "volume_3 3.550 2.238 1.619 1.349 1.222 1.141 1.051 1.030 1.017 1.004\n", - "volume_2 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004\n", - "geometric_3 3.558 2.241 1.647 1.384 1.227 1.145 1.049 1.035 1.019 1.004\n", - "medial 5x1 3.653 2.062 1.594 1.368 1.229 1.128 1.060 1.025 1.019 1.004\n", - "PART 4 - Selected Age-to-Age Factor\n", - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132 132-144\n", - "Selected 3.349 2.079 1.574 1.316 1.203 1.136 1.059 1.022 1.017 1.004 1.01\n", - " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult 132-Ult\n", - "CDF to Ultimate 21.999 6.569 3.160 2.007 1.525 1.268 1.116 1.054 1.031 1.014 1.01\n", - "Percent Reported 0.045 0.152 0.316 0.498 0.656 0.789 0.896 0.949 0.970 0.986 0.99\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\utils\\triangle_weight.py:361: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", - " warnings.warn(warning)\n", - "C:\\Users\\Shahen Alexanian\\Documents\\Github\\chainladder-python\\chainladder\\development\\base.py:272: UserWarning: Some exclusions have been ignored. At least 1 (use preserve = ...) link ratio(s) is required for development estimation.\n", - " warnings.warn(warning)\n" - ] - } - ], - "source": [ - "paid_devs = dev_exhibit(tri['Paid Claims'],assumptions,'volume_2',1.01)" - ] - }, - { - "cell_type": "markdown", - "id": "5f9a5cfe", - "metadata": {}, - "source": [ - "### Exhibit II, Sheet 3 (p. 112)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "ddbe5caf", - "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", - "
AgeReported ClaimsPaid ClaimsReported CDFPaid CDFReported UltimatePaid Ultimate
199813215822.015822.01.0001.01015822.015980.0
199912025107.024817.00.9991.01425082.025164.0
200010837246.036782.00.9921.03136948.037922.0
20019638798.038519.00.9921.05438488.040599.0
20028448169.044437.01.0031.11648314.049592.0
20037244373.039320.01.0131.26844950.049858.0
20046070288.052811.01.0641.52574786.080537.0
20054870655.040026.01.0852.00776661.080332.0
20063648804.022819.01.1963.16058370.072108.0
20072431732.011865.01.5126.56947979.077941.0
20081218632.03409.02.55121.99947530.074995.0
\n", - "
" - ], - "text/plain": [ - " Age Reported Claims Paid Claims Reported CDF Paid CDF Reported Ultimate Paid Ultimate\n", - "1998 132 15822.0 15822.0 1.000 1.010 15822.0 15980.0\n", - "1999 120 25107.0 24817.0 0.999 1.014 25082.0 25164.0\n", - "2000 108 37246.0 36782.0 0.992 1.031 36948.0 37922.0\n", - "2001 96 38798.0 38519.0 0.992 1.054 38488.0 40599.0\n", - "2002 84 48169.0 44437.0 1.003 1.116 48314.0 49592.0\n", - "2003 72 44373.0 39320.0 1.013 1.268 44950.0 49858.0\n", - "2004 60 70288.0 52811.0 1.064 1.525 74786.0 80537.0\n", - "2005 48 70655.0 40026.0 1.085 2.007 76661.0 80332.0\n", - "2006 36 48804.0 22819.0 1.196 3.160 58370.0 72108.0\n", - "2007 24 31732.0 11865.0 1.512 6.569 47979.0 77941.0\n", - "2008 12 18632.0 3409.0 2.551 21.999 47530.0 74995.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "exhibit = rounded_development_summary(reported_devs[\"Selected\"],paid_devs[\"Selected\"])\n", - "display(exhibit)" - ] - }, - { - "cell_type": "markdown", - "id": "bad2ac2d", - "metadata": {}, - "source": [ - "### Exhibit II, Sheet 4 p113" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "ebca99e7", - "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", - "
Case OutstandingReported Method IBNRPaid Method IBNRReported Method UnpaidPaid Method Unpaid
19980.00.0158.00.0158.0
1999290.0-25.057.0265.0347.0
2000464.0-298.0676.0166.01140.0
2001279.0-310.01801.0-31.02080.0
20023732.0145.01423.03877.05155.0
20035053.0577.05485.05630.010538.0
200417477.04498.010249.021975.027726.0
200530629.06006.09677.036635.040306.0
200625985.09566.023304.035551.049289.0
200719867.016247.046209.036114.066076.0
200815223.028898.056363.044121.071586.0
\n", - "
" - ], - "text/plain": [ - " Case Outstanding Reported Method IBNR Paid Method IBNR Reported Method Unpaid Paid Method Unpaid\n", - "1998 0.0 0.0 158.0 0.0 158.0\n", - "1999 290.0 -25.0 57.0 265.0 347.0\n", - "2000 464.0 -298.0 676.0 166.0 1140.0\n", - "2001 279.0 -310.0 1801.0 -31.0 2080.0\n", - "2002 3732.0 145.0 1423.0 3877.0 5155.0\n", - "2003 5053.0 577.0 5485.0 5630.0 10538.0\n", - "2004 17477.0 4498.0 10249.0 21975.0 27726.0\n", - "2005 30629.0 6006.0 9677.0 36635.0 40306.0\n", - "2006 25985.0 9566.0 23304.0 35551.0 49289.0\n", - "2007 19867.0 16247.0 46209.0 36114.0 66076.0\n", - "2008 15223.0 28898.0 56363.0 44121.0 71586.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "unpaid_exhibit = unpaid_summary(exhibit)\n", - "display(unpaid_exhibit[['Case Outstanding','Reported Method IBNR','Paid Method IBNR','Reported Method Unpaid','Paid Method Unpaid']])" - ] - }, - { - "cell_type": "markdown", - "id": "d0f4b576", - "metadata": {}, - "source": [ - "### Persisting the Selected Estimators\n", - "\n", - "The selected reported and paid development estimators are reused in later chapters, such as the Bornhuetter-Ferguson technique in Chapter 9. Rather than refitting them, we persist the fitted estimators with ``to_json`` so they can be recalled directly. JSON is used rather than a pickle so the saved estimators load reliably across package and dependency versions." + "# Chapter 7 — Part II" ] }, { "cell_type": "code", - "execution_count": null, - "id": "892a00dd", + "execution_count": 1, + "id": "f42e0344", "metadata": {}, "outputs": [], "source": [ - "import os\n", - "data_dir = os.path.join(os.path.dirname(cl.__file__), \"utils\", \"data\")\n", + "import chainladder as cl\n", + "from IPython.display import display, HTML, Markdown\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "\n", + "pd.set_option(\"display.max_columns\", None)\n", + "pd.set_option(\"display.width\", 1000)\n", + "\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\n", + " \"ignore\",\n", + " message=r\"Some exclusions have been ignored\\..*link ratio\\(s\\) is required.*\",\n", + " category=UserWarning,\n", + ")\n", "\n", - "#with open(os.path.join(data_dir, \"friedland_ch7_xyz_reported.json\"), \"w\") as f:\n", - " #_ = f.write(reported_devs[\"Selected\"].to_json())\n", "\n", - "#with open(os.path.join(data_dir, \"friedland_ch7_xyz_paid.json\"), \"w\") as f:\n", - " #_ = f.write(paid_devs[\"Selected\"].to_json())" + "#pd.options.display.float_format = '{:,.0f}'.format" ] }, { @@ -3585,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "5595108e", "metadata": {}, "outputs": [], @@ -3595,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "79e5ac39", "metadata": { "tags": [ @@ -3650,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 4, "id": "99de7a11", "metadata": { "tags": [ @@ -3700,7 +175,7 @@ " col9 = pd.DataFrame({\"Rep. Claims 12/31/08\" : format_col(tri.latest_diagonal.loc[\"Increasing Claim\", \"Reported Claims\"])})\n", " col7 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col8, col2)})\n", " col10 = pd.DataFrame({\"Actual IBNR\" : col_diff(col8, col9)})\n", - " col11 = pd.DataFrame({\"Accident Year\" : tri.origin.astype(str)})\n", + " col11 = pd.DataFrame({\"Accident Year\" : format_col(tri.origin.astype(str))})\n", " col12 = pd.DataFrame({\"Earned Premium\" : format_col(tri.latest_diagonal.loc[\"Steady State\", \"Earned Premium\"])})\n", " col14 = pd.DataFrame({\"Ult. Claims\" : format_col(ult.loc[\"Steady State\", \"Reported Claims\"])})\n", " col13 = pd.DataFrame({\"Ult. Claim Ratio\" : col_div(col14, col12)})\n", @@ -3723,274 +198,284 @@ " dfs_lower = [df4, df5, df6]\n", "\n", " results_upper = pd.concat(dfs_upper, axis=1, keys=[\"\", \"Steady State\", \"Increasing Claim Ratios\"])\n", - " results_upper = results_upper.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", - " results_upper.index.name = \"Accident Year\" \n", - " results_upper.loc[\"Total\"] = results_upper.sum()\n", - "\n", - " #remove the totals from the ratio columns (where totals do not make sense)\n", - " results_upper.loc[\"Total\", (\"Steady State\", \"Ult. Claim Ratio\")] = np.nan\n", - " results_upper.loc[\"Total\", (\"Increasing Claim Ratios\", \"Ult. Claim Ratio\")] = np.nan\n", - "\n", - " results_lower = pd.concat(dfs_lower, axis=1, keys=[\"\", \"Increasing Case Outstanding Strength\", \"Increasing Claim Ratios and Case Outstanding Strength\"])\n", - " results_lower = results_lower.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", - " results_lower.index.name = \"Accident Year\" \n", - " results_lower.loc[\"Total\"] = results_lower.sum()\n", - "\n", - " #remove the totals from the ratio columns (where totals do not make sense)\n", - " results_lower.loc[\"Total\", (\"Increasing Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", - " results_lower.loc[\"Total\", (\"Increasing Claim Ratios and Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", - "\n", - " display(HTML(\"\"\"\n", - "

\n", - " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", - "

\n", - " \"\"\"))\n", - " display(results_upper)\n", - " display(results_lower)\n", - "\n", - " return (results_upper, results_lower)" - ] - }, - { - "cell_type": "markdown", - "id": "1af7e20d", - "metadata": {}, - "source": [ - "## Exhibit III — U.S. Private-Passenger Industry Auto - Impact of Changing Conditions\n", - "\n", - "### Exhibit III, Sheet 1 - Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", - "\n", - "We first reproduce Exhibit III, Sheet 1 of Chapter 7 of Friedland (p. 114), which summarizes the earned premium and claim ratio assumptions under the four scenarios:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "06a03be7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "

\n", - " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", - "

\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", + " results_upper = results_upper.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", + " results_upper.index.name = \"Accident Year\" \n", + " results_upper.loc[\"Total\"] = results_upper.sum()\n", + "\n", + " #remove the totals from the ratio columns (where totals do not make sense)\n", + " results_upper.loc[\"Total\", (\"Steady State\", \"Ult. Claim Ratio\")] = np.nan\n", + " results_upper.loc[\"Total\", (\"Increasing Claim Ratios\", \"Ult. Claim Ratio\")] = np.nan\n", + "\n", + " results_lower = pd.concat(dfs_lower, axis=1, keys=[\"\", \"Increasing Case Outstanding Strength\", \"Increasing Claim Ratios and Case Outstanding Strength\"])\n", + " results_lower = results_lower.set_index((\"\", \"Accident Year\")) #since its multi-index, I needed to use the tuple to designate the index col\n", + " results_lower.index.name = \"Accident Year\" \n", + " results_lower.loc[\"Total\"] = results_lower.sum()\n", + "\n", + " #remove the totals from the ratio columns (where totals do not make sense)\n", + " results_lower.loc[\"Total\", (\"Increasing Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", + " results_lower.loc[\"Total\", (\"Increasing Claim Ratios and Case Outstanding Strength\", \"Ult. Claim Ratio\")] = np.nan\n", + "\n", + " display(HTML(\"\"\"\n", + "

\n", + " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", + "

\n", + " \"\"\"))\n", + " \n", + " upper_formats = {\n", + " (\"Steady State\", \"Ult. Claim Ratio\"): \"{:.1%}\",\n", + " (\"Steady State\", \"Ult. Claims\"): \"{:,.0f}\",\n", + " (\"Steady State\", \"Rep. Claims 12/31/08\"): \"{:,.0f}\",\n", + " (\"Steady State\", \"Actual IBNR\"): \"{:,.0f}\",\n", + "\n", + " (\"Increasing Claim Ratios\", \"Ult. Claim Ratio\"): \"{:.1%}\",\n", + " (\"Increasing Claim Ratios\", \"Ult. Claims\"): \"{:,.0f}\",\n", + " (\"Increasing Claim Ratios\", \"Rep. Claims 12/31/08\"): \"{:,.0f}\",\n", + " (\"Increasing Claim Ratios\", \"Actual IBNR\"): \"{:,.0f}\",\n", + "\n", + " (\"\", \"Earned Premium\"): \"{:,.0f}\",\n", + " }\n", + "\n", + " display(\n", + " results_upper.style.format(\n", + " upper_formats,\n", + " na_rep=\"\"\n", + " )\n", + " )\n", + " \n", + " lower_formats = {\n", + " (\"Increasing Case Outstanding Strength\", \"Ult. Claim Ratio\"): \"{:.1%}\",\n", + " (\"Increasing Case Outstanding Strength\", \"Ult. Claims\"): \"{:,.0f}\",\n", + " (\"Increasing Case Outstanding Strength\", \"Rep. Claims 12/31/08\"): \"{:,.0f}\",\n", + " (\"Increasing Case Outstanding Strength\", \"Actual IBNR\"): \"{:,.0f}\",\n", + "\n", + " (\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\",\n", + " \"Ult. Claim Ratio\",\n", + " ): \"{:.1%}\",\n", + " (\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\",\n", + " \"Ult. Claims\",\n", + " ): \"{:,.0f}\",\n", + " (\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\",\n", + " \"Rep. Claims 12/31/08\",\n", + " ): \"{:,.0f}\",\n", + " (\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\",\n", + " \"Actual IBNR\",\n", + " ): \"{:,.0f}\",\n", + "\n", + " (\"\", \"Earned Premium\"): \"{:,.0f}\",\n", + " }\n", + "\n", + " display(\n", + " results_lower.style.format(\n", + " lower_formats,\n", + " na_rep=\"\"\n", + " )\n", + " )\n", + "\n", + " return (results_upper, results_lower)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "06a03be7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "

\n", + " Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
Steady StateIncreasing Claim Ratios
Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,0001700,000700,00001700,000700,0000
20001,050,0001735,000735,00001735,000735,0000
20011,102,5001771,750771,75001771,750771,7500
20021,157,6251810,338810,33801810,338810,3380
20031,215,5061850,855842,3468,5091850,855842,3468,509
20041,276,2821893,397884,4638,93411,021,0251,010,81510,210
20051,340,0961938,068919,30618,76211,139,0821,116,30022,782
20061,407,1001984,970935,72249,24811,266,3911,203,07163,320
20071,477,45511,034,219930,797103,42211,403,5821,263,224140,358
\n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
20081,551,32811,085,930836,166249,76411,551,3281,194,523356,805 Steady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year         
Total12,577,893NaN8,804,5278,365,888438,639NaN10,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n", - "
" + "\n" ], "text/plain": [ - " Steady State Increasing Claim Ratios \n", - " Earned Premium Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR\n", - "Accident Year \n", - "1999 1,000,000 1 700,000 700,000 0 1 700,000 700,000 0\n", - "2000 1,050,000 1 735,000 735,000 0 1 735,000 735,000 0\n", - "2001 1,102,500 1 771,750 771,750 0 1 771,750 771,750 0\n", - "2002 1,157,625 1 810,338 810,338 0 1 810,338 810,338 0\n", - "2003 1,215,506 1 850,855 842,346 8,509 1 850,855 842,346 8,509\n", - "2004 1,276,282 1 893,397 884,463 8,934 1 1,021,025 1,010,815 10,210\n", - "2005 1,340,096 1 938,068 919,306 18,762 1 1,139,082 1,116,300 22,782\n", - "2006 1,407,100 1 984,970 935,722 49,248 1 1,266,391 1,203,071 63,320\n", - "2007 1,477,455 1 1,034,219 930,797 103,422 1 1,403,582 1,263,224 140,358\n", - "2008 1,551,328 1 1,085,930 836,166 249,764 1 1,551,328 1,194,523 356,805\n", - "Total 12,577,893 NaN 8,804,527 8,365,888 438,639 NaN 10,249,351 9,647,367 601,984" + "" ] }, "metadata": {}, @@ -3999,209 +484,179 @@ { "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year         
19991,000,0001700,000700,00001700,000700,0000
20001,050,0001735,000735,00001735,000735,0000
20011,102,5001771,750771,75001771,750771,7500
20021,157,6251810,338810,33801810,338810,3380
20031,215,5061850,855842,3468,5091850,855842,3468,509
20041,276,2821893,397884,4638,93411,021,0251,010,81510,210
20051,340,0961938,068933,3774,69111,139,0821,133,3865,696
20061,407,1001984,970962,80822,16211,266,3911,237,89728,494
20071,477,45511,034,219979,92254,29711,403,5821,329,89573,687
20081,551,32811,085,930931,185154,74511,551,3281,330,264221,064
Total12,577,893NaN8,804,5278,551,189253,338NaN10,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n", - "
" + "\n" ], "text/plain": [ - " Increasing Case Outstanding Strength Increasing Claim Ratios and Case Outstanding Strength \n", - " Earned Premium Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR Ult. Claim Ratio Ult. Claims Rep. Claims 12/31/08 Actual IBNR\n", - "Accident Year \n", - "1999 1,000,000 1 700,000 700,000 0 1 700,000 700,000 0\n", - "2000 1,050,000 1 735,000 735,000 0 1 735,000 735,000 0\n", - "2001 1,102,500 1 771,750 771,750 0 1 771,750 771,750 0\n", - "2002 1,157,625 1 810,338 810,338 0 1 810,338 810,338 0\n", - "2003 1,215,506 1 850,855 842,346 8,509 1 850,855 842,346 8,509\n", - "2004 1,276,282 1 893,397 884,463 8,934 1 1,021,025 1,010,815 10,210\n", - "2005 1,340,096 1 938,068 933,377 4,691 1 1,139,082 1,133,386 5,696\n", - "2006 1,407,100 1 984,970 962,808 22,162 1 1,266,391 1,237,897 28,494\n", - "2007 1,477,455 1 1,034,219 979,922 54,297 1 1,403,582 1,329,895 73,687\n", - "2008 1,551,328 1 1,085,930 931,185 154,745 1 1,551,328 1,330,264 221,064\n", - "Total 12,577,893 NaN 8,804,527 8,551,189 253,338 NaN 10,249,351 9,901,691 347,660" + "" ] }, "metadata": {}, @@ -4218,7 +673,6 @@ " \"tail\" : 1.0,\n", " \"projection_period\" : -1\n", "}\n", - "\n", "res_up, res_low = ex3sht1(triangles, dev_input, tail_input)" ] }, @@ -4234,7 +688,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 6, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -4417,17 +871,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", - "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", - "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", - "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", - "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", - "2004 687,916 804,057 848,727 875,529 884,463 NaN NaN NaN NaN NaN\n", - "2005 722,312 844,260 891,164 919,306 NaN NaN NaN NaN NaN NaN\n", - "2006 758,427 886,473 935,722 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 796,348 930,797 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 836,166 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539000.0 630000.0 665000.0 686000.0 693000.0 693000.0 700000.0 700000.0 700000.0 700000.0\n", + "2000 565950.0 661500.0 698250.0 720300.0 727650.0 727650.0 735000.0 735000.0 735000.0 NaN\n", + "2001 594248.0 694575.0 733163.0 756315.0 764033.0 764033.0 771750.0 771750.0 NaN NaN\n", + "2002 623960.0 729304.0 769821.0 794131.0 802234.0 802234.0 810338.0 NaN NaN NaN\n", + "2003 655158.0 765769.0 808312.0 833837.0 842346.0 842346.0 NaN NaN NaN NaN\n", + "2004 687916.0 804057.0 848727.0 875529.0 884463.0 NaN NaN NaN NaN NaN\n", + "2005 722312.0 844260.0 891164.0 919306.0 NaN NaN NaN NaN NaN NaN\n", + "2006 758427.0 886473.0 935722.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 796348.0 930797.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 836166.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -4454,135 +908,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4826,7 +1280,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 7, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -5009,17 +1463,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", - "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", - "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", - "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", - "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", - "2004 375,227 634,312 750,454 821,925 857,661 NaN NaN NaN NaN NaN\n", - "2005 393,988 666,028 787,976 863,022 NaN NaN NaN NaN NaN NaN\n", - "2006 413,688 699,329 827,375 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 434,372 734,295 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 456,090 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294000.0 497000.0 588000.0 644000.0 672000.0 686000.0 693000.0 693000.0 700000.0 700000.0\n", + "2000 308700.0 521850.0 617400.0 676200.0 705600.0 720300.0 727650.0 727650.0 735000.0 NaN\n", + "2001 324135.0 547943.0 648270.0 710010.0 740880.0 756315.0 764033.0 764033.0 NaN NaN\n", + "2002 340342.0 575340.0 680684.0 745511.0 777924.0 794131.0 802234.0 NaN NaN NaN\n", + "2003 357359.0 604107.0 714718.0 782786.0 816820.0 833837.0 NaN NaN NaN NaN\n", + "2004 375227.0 634312.0 750454.0 821925.0 857661.0 NaN NaN NaN NaN NaN\n", + "2005 393988.0 666028.0 787976.0 863022.0 NaN NaN NaN NaN NaN NaN\n", + "2006 413688.0 699329.0 827375.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 434372.0 734295.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 456090.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -5046,135 +1500,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, From f6b1cd28bf306d229bfc07cdd356488fa58e38a5 Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Mon, 10 Aug 2026 21:46:17 -0400 Subject: [PATCH 05/11] Complete Exhibit IV, Sheet 1 --- docs/friedland/chapter_7_part_2.ipynb | 8705 ++++++++++++++++++------- 1 file changed, 6509 insertions(+), 2196 deletions(-) diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index efc5d71ff..e974852dd 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -5,12 +5,14 @@ "id": "e74a94cb", "metadata": {}, "source": [ - "# Chapter 7 — Part II" + "# Chapter 7 — Part II\n", + "\n", + "This second part concludes Chapter 7 of Friedland by generating Exhibits III and IV." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 201, "id": "f42e0344", "metadata": {}, "outputs": [], @@ -60,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 202, "id": "5595108e", "metadata": {}, "outputs": [], @@ -68,9 +70,17 @@ "triangles = cl.load_sample(\"friedland_uspp\")" ] }, + { + "cell_type": "markdown", + "id": "6118594f", + "metadata": {}, + "source": [ + "For the sheets depicting the claim triangles and age-to-age factors, we reuse the function `dev_exhibit` used in Part I:" + ] + }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 203, "id": "79e5ac39", "metadata": { "tags": [ @@ -123,9 +133,17 @@ " return devs" ] }, + { + "cell_type": "markdown", + "id": "796caf1c", + "metadata": {}, + "source": [ + "We also define a special formatting function `ex_sht1` in order to create Sheet 1 of Exhibit III, which has its own unique layout:" + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "99de7a11", "metadata": { "tags": [ @@ -134,8 +152,6 @@ }, "outputs": [], "source": [ - "#| hide-input\n", - "\n", "def ex3sht1(\n", " tri: cl.Triangle,\n", " dev_input: dict,\n", @@ -278,9 +294,25 @@ " return (results_upper, results_lower)" ] }, + { + "cell_type": "markdown", + "id": "e64c791b", + "metadata": {}, + "source": [ + "### Exhibit III Sheet 1: Summary of Earned Premium and Claim Ratio Assumptions and Actual IBNR" + ] + }, + { + "cell_type": "markdown", + "id": "6250f087", + "metadata": {}, + "source": [ + "We begin by generating Exhibit III, Sheet 1:" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 205, "id": "06a03be7", "metadata": {}, "outputs": [ @@ -305,25 +337,25 @@ "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", @@ -340,142 +372,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Steady StateIncreasing Claim RatiosSteady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -486,25 +518,25 @@ "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", @@ -521,142 +553,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding StrengthIncreasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -688,7 +720,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 206, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -908,135 +940,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1280,7 +1312,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 207, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -1500,135 +1532,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1872,7 +1904,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 208, "id": "35744cce", "metadata": {}, "outputs": [ @@ -2055,17 +2087,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", - "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", - "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", - "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", - "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", - "2004 786,189 918,923 969,974 1,000,605 1,010,815 NaN NaN NaN NaN NaN\n", - "2005 877,093 1,025,173 1,082,127 1,116,300 NaN NaN NaN NaN NaN NaN\n", - "2006 975,121 1,139,751 1,203,071 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1,080,759 1,263,224 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 1,194,523 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539000.0 630000.0 665000.0 686000.0 693000.0 693000.0 700000.0 700000.0 700000.0 700000.0\n", + "2000 565950.0 661500.0 698250.0 720300.0 727650.0 727650.0 735000.0 735000.0 735000.0 NaN\n", + "2001 594248.0 694575.0 733163.0 756315.0 764033.0 764033.0 771750.0 771750.0 NaN NaN\n", + "2002 623960.0 729304.0 769821.0 794131.0 802234.0 802234.0 810338.0 NaN NaN NaN\n", + "2003 655158.0 765769.0 808312.0 833837.0 842346.0 842346.0 NaN NaN NaN NaN\n", + "2004 786189.0 918923.0 969974.0 1000605.0 1010815.0 NaN NaN NaN NaN NaN\n", + "2005 877093.0 1025173.0 1082127.0 1116300.0 NaN NaN NaN NaN NaN NaN\n", + "2006 975121.0 1139751.0 1203071.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1080759.0 1263224.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1194523.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -2092,135 +2124,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2464,7 +2496,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 209, "id": "8d9a4359", "metadata": {}, "outputs": [ @@ -2647,17 +2679,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", - "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", - "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", - "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", - "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", - "2004 428,831 724,928 857,661 939,343 980,184 NaN NaN NaN NaN NaN\n", - "2005 478,414 808,748 956,828 1,047,955 NaN NaN NaN NaN NaN NaN\n", - "2006 531,884 899,137 1,063,768 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 589,505 996,544 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 651,558 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294000.0 497000.0 588000.0 644000.0 672000.0 686000.0 693000.0 693000.0 700000.0 700000.0\n", + "2000 308700.0 521850.0 617400.0 676200.0 705600.0 720300.0 727650.0 727650.0 735000.0 NaN\n", + "2001 324135.0 547943.0 648270.0 710010.0 740880.0 756315.0 764033.0 764033.0 NaN NaN\n", + "2002 340342.0 575340.0 680684.0 745511.0 777924.0 794131.0 802234.0 NaN NaN NaN\n", + "2003 357359.0 604107.0 714718.0 782786.0 816820.0 833837.0 NaN NaN NaN NaN\n", + "2004 428831.0 724928.0 857661.0 939343.0 980184.0 NaN NaN NaN NaN NaN\n", + "2005 478414.0 808748.0 956828.0 1047955.0 NaN NaN NaN NaN NaN NaN\n", + "2006 531884.0 899137.0 1063768.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 589505.0 996544.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 651558.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -2684,135 +2716,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3056,7 +3088,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 210, "id": "0ab5bcf6", "metadata": {}, "outputs": [ @@ -3239,17 +3271,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", - "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", - "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", - "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", - "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", - "2004 687,916 804,057 848,727 878,745 884,463 NaN NaN NaN NaN NaN\n", - "2005 722,312 844,260 897,355 933,377 NaN NaN NaN NaN NaN NaN\n", - "2006 758,427 897,702 962,808 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 818,067 979,922 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 931,185 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539000.0 630000.0 665000.0 686000.0 693000.0 693000.0 700000.0 700000.0 700000.0 700000.0\n", + "2000 565950.0 661500.0 698250.0 720300.0 727650.0 727650.0 735000.0 735000.0 735000.0 NaN\n", + "2001 594248.0 694575.0 733163.0 756315.0 764033.0 764033.0 771750.0 771750.0 NaN NaN\n", + "2002 623960.0 729304.0 769821.0 794131.0 802234.0 802234.0 810338.0 NaN NaN NaN\n", + "2003 655158.0 765769.0 808312.0 833837.0 842346.0 842346.0 NaN NaN NaN NaN\n", + "2004 687916.0 804057.0 848727.0 878745.0 884463.0 NaN NaN NaN NaN NaN\n", + "2005 722312.0 844260.0 897355.0 933377.0 NaN NaN NaN NaN NaN NaN\n", + "2006 758427.0 897702.0 962808.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 818067.0 979922.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 931185.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -3276,135 +3308,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3648,7 +3680,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 211, "id": "5a759ad5", "metadata": {}, "outputs": [ @@ -3831,17 +3863,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", - "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", - "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", - "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", - "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", - "2004 375,227 634,312 750,454 821,925 857,661 NaN NaN NaN NaN NaN\n", - "2005 393,988 666,028 787,976 863,022 NaN NaN NaN NaN NaN NaN\n", - "2006 413,688 699,329 827,375 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 434,372 734,295 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 456,090 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294000.0 497000.0 588000.0 644000.0 672000.0 686000.0 693000.0 693000.0 700000.0 700000.0\n", + "2000 308700.0 521850.0 617400.0 676200.0 705600.0 720300.0 727650.0 727650.0 735000.0 NaN\n", + "2001 324135.0 547943.0 648270.0 710010.0 740880.0 756315.0 764033.0 764033.0 NaN NaN\n", + "2002 340342.0 575340.0 680684.0 745511.0 777924.0 794131.0 802234.0 NaN NaN NaN\n", + "2003 357359.0 604107.0 714718.0 782786.0 816820.0 833837.0 NaN NaN NaN NaN\n", + "2004 375227.0 634312.0 750454.0 821925.0 857661.0 NaN NaN NaN NaN NaN\n", + "2005 393988.0 666028.0 787976.0 863022.0 NaN NaN NaN NaN NaN NaN\n", + "2006 413688.0 699329.0 827375.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 434372.0 734295.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 456090.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -3868,135 +3900,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4240,7 +4272,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 212, "id": "ec0b53a5", "metadata": {}, "outputs": [ @@ -4423,17 +4455,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 539,000 630,000 665,000 686,000 693,000 693,000 700,000 700,000 700,000 700,000\n", - "2000 565,950 661,500 698,250 720,300 727,650 727,650 735,000 735,000 735,000 NaN\n", - "2001 594,248 694,575 733,163 756,315 764,033 764,033 771,750 771,750 NaN NaN\n", - "2002 623,960 729,304 769,821 794,131 802,234 802,234 810,338 NaN NaN NaN\n", - "2003 655,158 765,769 808,312 833,837 842,346 842,346 NaN NaN NaN NaN\n", - "2004 786,189 918,923 969,974 1,004,280 1,010,815 NaN NaN NaN NaN NaN\n", - "2005 877,093 1,025,173 1,089,645 1,133,386 NaN NaN NaN NaN NaN NaN\n", - "2006 975,121 1,154,188 1,237,897 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1,110,234 1,329,895 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 1,330,264 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 539000.0 630000.0 665000.0 686000.0 693000.0 693000.0 700000.0 700000.0 700000.0 700000.0\n", + "2000 565950.0 661500.0 698250.0 720300.0 727650.0 727650.0 735000.0 735000.0 735000.0 NaN\n", + "2001 594248.0 694575.0 733163.0 756315.0 764033.0 764033.0 771750.0 771750.0 NaN NaN\n", + "2002 623960.0 729304.0 769821.0 794131.0 802234.0 802234.0 810338.0 NaN NaN NaN\n", + "2003 655158.0 765769.0 808312.0 833837.0 842346.0 842346.0 NaN NaN NaN NaN\n", + "2004 786189.0 918923.0 969974.0 1004280.0 1010815.0 NaN NaN NaN NaN NaN\n", + "2005 877093.0 1025173.0 1089645.0 1133386.0 NaN NaN NaN NaN NaN NaN\n", + "2006 975121.0 1154188.0 1237897.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1110234.0 1329895.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1330264.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -4460,135 +4492,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4832,7 +4864,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 213, "id": "16a0f5fd", "metadata": {}, "outputs": [ @@ -5015,17 +5047,17 @@ "" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 294,000 497,000 588,000 644,000 672,000 686,000 693,000 693,000 700,000 700,000\n", - "2000 308,700 521,850 617,400 676,200 705,600 720,300 727,650 727,650 735,000 NaN\n", - "2001 324,135 547,943 648,270 710,010 740,880 756,315 764,033 764,033 NaN NaN\n", - "2002 340,342 575,340 680,684 745,511 777,924 794,131 802,234 NaN NaN NaN\n", - "2003 357,359 604,107 714,718 782,786 816,820 833,837 NaN NaN NaN NaN\n", - "2004 428,831 724,928 857,661 939,343 980,184 NaN NaN NaN NaN NaN\n", - "2005 478,414 808,748 956,828 1,047,955 NaN NaN NaN NaN NaN NaN\n", - "2006 531,884 899,137 1,063,768 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 589,505 996,544 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 651,558 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 294000.0 497000.0 588000.0 644000.0 672000.0 686000.0 693000.0 693000.0 700000.0 700000.0\n", + "2000 308700.0 521850.0 617400.0 676200.0 705600.0 720300.0 727650.0 727650.0 735000.0 NaN\n", + "2001 324135.0 547943.0 648270.0 710010.0 740880.0 756315.0 764033.0 764033.0 NaN NaN\n", + "2002 340342.0 575340.0 680684.0 745511.0 777924.0 794131.0 802234.0 NaN NaN NaN\n", + "2003 357359.0 604107.0 714718.0 782786.0 816820.0 833837.0 NaN NaN NaN NaN\n", + "2004 428831.0 724928.0 857661.0 939343.0 980184.0 NaN NaN NaN NaN NaN\n", + "2005 478414.0 808748.0 956828.0 1047955.0 NaN NaN NaN NaN NaN NaN\n", + "2006 531884.0 899137.0 1063768.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 589505.0 996544.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 651558.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, @@ -5052,135 +5084,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5414,7 +5446,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 227, "id": "191822b3", "metadata": { "tags": [ @@ -5425,7 +5457,7 @@ "source": [ "#| hide-input\n", "\n", - "def Ex10Sht10(scenario, tr):\n", + "def Ex3Sht10(scenario, tr):\n", "\n", " def format_col(x, reverse = False):\n", " if reverse is True:\n", @@ -5529,10 +5561,48 @@ "\n", " results = pd.concat(cols, axis=1)\n", "\n", + " format_dict = {\n", + " # Dollar amounts\n", + " \"Claims at 12/31/2008 - Reported\": \"{:,.0f}\",\n", + " \"Claims at 12/31/2008 - Paid\": \"{:,.0f}\",\n", + " \"Case Outstanding\": \"{:,.0f}\",\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\": \"{:,.0f}\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\": \"{:,.0f}\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\": \"{:,.0f}\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\": \"{:,.0f}\",\n", + " \"Actual IBNR\": \"{:,.0f}\",\n", + " \"Difference from Actual IBNR - Reported\": \"{:,.0f}\",\n", + " \"Difference from Actual IBNR - Paid\": \"{:,.0f}\",\n", + "\n", + " # Ages\n", + " \"Age of Accident Year at 12/31/08\": \"{:.0f}\",\n", + "\n", + " # Factors\n", + " \"CDF to Ult. - Reported\": \"{:.3f}\",\n", + " \"CDF to Ult. - Paid\": \"{:.3f}\",\n", + " }\n", + "\n", + " results = results.set_index(\"Accident Year\")\n", + "\n", + " total_cols = [\n", + " \"Claims at 12/31/2008 - Reported\",\n", + " \"Claims at 12/31/2008 - Paid\",\n", + " \"Case Outstanding\",\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\",\n", + " \"Actual IBNR\",\n", + " \"Difference from Actual IBNR - Reported\",\n", + " \"Difference from Actual IBNR - Paid\",\n", + " ]\n", " \n", + " results.loc[\"Total\", total_cols] = results[total_cols].sum()\n", + "\n", + " display(HTML(f\"

Exhibit III Sheets 10 and 11 — {scenario}

\"))\n", "\n", " display(\n", - " results\n", + " results.style.format(format_dict, na_rep=\"\")\n", " )\n", "\n" ] @@ -5549,234 +5619,244 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 228, "id": "48f63e22", "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
3200284810,338802,2348,10411810,338810,3370-1001Accident Year             
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
5200460884,463857,66126,80211893,397893,3978,9348,9348,93400
6200548919,306863,02256,28411938,068938,06718,76218,76118,76200
7200636935,722827,375108,34711984,970984,97049,24849,24849,24800
8200724930,797734,295196,502111,034,2191,034,218103,422103,421103,42201
9200812836,166456,090380,076121,085,9301,085,928249,764249,762249,764021999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n", - "
" + "\n" ], "text/plain": [ - " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", - "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", - "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", - "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", - "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", - "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", - "5 2004 60 884,463 857,661 26,802 1 1 893,397 893,397 8,934 8,934 8,934 0 0\n", - "6 2005 48 919,306 863,022 56,284 1 1 938,068 938,067 18,762 18,761 18,762 0 0\n", - "7 2006 36 935,722 827,375 108,347 1 1 984,970 984,970 49,248 49,248 49,248 0 0\n", - "8 2007 24 930,797 734,295 196,502 1 1 1,034,219 1,034,218 103,422 103,421 103,422 0 1\n", - "9 2008 12 836,166 456,090 380,076 1 2 1,085,930 1,085,928 249,764 249,762 249,764 0 2" + "" ] }, "metadata": {}, @@ -5785,227 +5865,237 @@ { "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
3200284810,338802,2348,10411810,338810,3370-1001Accident Year             
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
52004601,010,815980,18430,631111,021,0251,021,02510,21010,21010,21000
62005481,116,3001,047,95568,345111,139,0821,139,08122,78222,78122,78200
72006361,203,0711,063,768139,303111,266,3911,266,39063,32063,31963,32000
82007241,263,224996,544266,680111,403,5821,403,583140,358140,359140,3580-0
92008121,194,523651,558542,965121,551,3281,551,328356,805356,805356,805001999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n", - "
" + "\n" ], "text/plain": [ - " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", - "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", - "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", - "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", - "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", - "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", - "5 2004 60 1,010,815 980,184 30,631 1 1 1,021,025 1,021,025 10,210 10,210 10,210 0 0\n", - "6 2005 48 1,116,300 1,047,955 68,345 1 1 1,139,082 1,139,081 22,782 22,781 22,782 0 0\n", - "7 2006 36 1,203,071 1,063,768 139,303 1 1 1,266,391 1,266,390 63,320 63,319 63,320 0 0\n", - "8 2007 24 1,263,224 996,544 266,680 1 1 1,403,582 1,403,583 140,358 140,359 140,358 0 -0\n", - "9 2008 12 1,194,523 651,558 542,965 1 2 1,551,328 1,551,328 356,805 356,805 356,805 0 0" + "" ] }, "metadata": {}, @@ -6014,227 +6104,237 @@ { "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1
3200284810,338802,2348,10411810,338810,3370-1001
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
5200460884,463857,66126,80211893,397893,3978,9348,9348,93400
6200548933,377863,02270,35511951,657938,06718,2804,6904,691-13,5890
7200636962,808827,375135,433111,015,301984,97052,49322,16222,162-30,3310
8200724979,922734,295245,627111,096,2351,034,218116,31354,29654,297-62,0161
9200812931,185456,090475,095121,227,5891,085,928296,404154,743154,745-141,65921999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n", - "
" + "\n" ], "text/plain": [ - " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", - "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", - "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", - "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", - "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", - "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", - "5 2004 60 884,463 857,661 26,802 1 1 893,397 893,397 8,934 8,934 8,934 0 0\n", - "6 2005 48 933,377 863,022 70,355 1 1 951,657 938,067 18,280 4,690 4,691 -13,589 0\n", - "7 2006 36 962,808 827,375 135,433 1 1 1,015,301 984,970 52,493 22,162 22,162 -30,331 0\n", - "8 2007 24 979,922 734,295 245,627 1 1 1,096,235 1,034,218 116,313 54,296 54,297 -62,016 1\n", - "9 2008 12 931,185 456,090 475,095 1 2 1,227,589 1,085,928 296,404 154,743 154,745 -141,659 2" + "" ] }, "metadata": {}, @@ -6243,227 +6343,237 @@ { "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
Accident YearAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
01999120700,000700,000011700,000700,00000000
12000108735,000735,000011735,000735,00000000
2200196771,750764,0337,71711771,750771,7510100-1 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
3200284810,338802,2348,10411810,338810,3370-1001Accident Year             
4200372842,346833,8378,50911850,855850,8548,5098,5088,50900
52004601,010,815980,18430,631111,021,0251,021,02510,21010,21010,21000
62005481,133,3861,047,95585,431111,155,4821,139,08122,0965,6955,696-16,4000
72006361,237,8971,063,768174,129111,305,6391,266,39067,74228,49328,494-39,2490
82007241,329,895996,544333,351111,488,8751,403,583158,98073,68873,687-85,293-0
92008121,330,264651,558678,706121,756,5041,551,328426,240221,064221,064-205,17601999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,1181
\n", - "
" + "\n" ], "text/plain": [ - " Accident Year Age of Accident Year at 12/31/08 Claims at 12/31/2008 - Reported Claims at 12/31/2008 - Paid Case Outstanding CDF to Ult. - Reported CDF to Ult. - Paid Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", - "0 1999 120 700,000 700,000 0 1 1 700,000 700,000 0 0 0 0 0\n", - "1 2000 108 735,000 735,000 0 1 1 735,000 735,000 0 0 0 0 0\n", - "2 2001 96 771,750 764,033 7,717 1 1 771,750 771,751 0 1 0 0 -1\n", - "3 2002 84 810,338 802,234 8,104 1 1 810,338 810,337 0 -1 0 0 1\n", - "4 2003 72 842,346 833,837 8,509 1 1 850,855 850,854 8,509 8,508 8,509 0 0\n", - "5 2004 60 1,010,815 980,184 30,631 1 1 1,021,025 1,021,025 10,210 10,210 10,210 0 0\n", - "6 2005 48 1,133,386 1,047,955 85,431 1 1 1,155,482 1,139,081 22,096 5,695 5,696 -16,400 0\n", - "7 2006 36 1,237,897 1,063,768 174,129 1 1 1,305,639 1,266,390 67,742 28,493 28,494 -39,249 0\n", - "8 2007 24 1,329,895 996,544 333,351 1 1 1,488,875 1,403,583 158,980 73,688 73,687 -85,293 -0\n", - "9 2008 12 1,330,264 651,558 678,706 1 2 1,756,504 1,551,328 426,240 221,064 221,064 -205,176 0" + "" ] }, "metadata": {}, @@ -6474,7 +6584,7 @@ "scenarios = [\"Steady State\",\"Increasing Claim\",\"Increasing Case\",\"Increasing Claim Case\"]\n", "\n", "for scenario in scenarios:\n", - " Ex10Sht10(scenario, triangles)" + " Ex3Sht10(scenario, triangles)" ] }, { @@ -6501,41 +6611,663 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "b98e5e9c", + "execution_count": 197, + "id": "8d88d02f", + "metadata": {}, + "outputs": [], + "source": [ + "data = cl.load_sample(\"friedland_us_auto\")\n", + "tri = data.copy()" + ] + }, + { + "cell_type": "markdown", + "id": "f1f909dd", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 1\n", + "\n", + "To use Chainladder to reproduce Sheet 1 of Exhibit IV, we create the following function to take care of the necessary formatting, and to perform the appropriate transformations/slicing of the data triangle to apply the development method and determine the IBNR. " + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "id": "3db66603", + "metadata": {}, + "outputs": [], + "source": [ + "def Ex4Sht1(scenario, tri):\n", + "\n", + " def format_col(x, reverse = False):\n", + " if reverse is True:\n", + " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", + " return x.to_frame().squeeze().reset_index(drop=True)\n", + "\n", + " def col_add(x, y):\n", + " return x.squeeze() + y.squeeze()\n", + "\n", + " def col_diff(x, y):\n", + " return x.squeeze() - y.squeeze()\n", + "\n", + " def col_div(x, y):\n", + " return x.squeeze() / y.squeeze()\n", + "\n", + " def col_mult(x, y):\n", + " return x.squeeze() * y.squeeze()\n", + "\n", + " tri = data.copy()\n", + "\n", + " dev_input = {\n", + " \"average\" : \"volume\",\n", + " \"n_periods\" : 5\n", + " }\n", + "\n", + " tail_input = {\n", + " \"tail\" : 1.0,\n", + " \"projection_period\" : -1\n", + " }\n", + "\n", + " dev = cl.Development(**dev_input)\n", + " tail = cl.TailConstant(**tail_input)\n", + " tri = tail.fit_transform(dev.fit_transform(tri))\n", + "\n", + " col1 = pd.DataFrame({\n", + " \"Accident Year\" : format_col(tri.origin)\n", + " })\n", + "\n", + " col2 = pd.DataFrame({\n", + " \"Priv Pass Auto\" : format_col(tri.loc[\"Steady State\"][\"Earned Premium\"].latest_diagonal / 2)\n", + " })\n", + "\n", + " col3 = pd.DataFrame({\n", + " \"Comm Auto\" : col_diff(\n", + " format_col(tri.loc[scenario][\"Earned Premium\"].latest_diagonal),\n", + " col2\n", + " )\n", + " })\n", + "\n", + " col4 = pd.DataFrame({\n", + " \"Total\" : format_col(tri.loc[scenario][\"Earned Premium\"].latest_diagonal)\n", + " })\n", + "\n", + " col5 = pd.DataFrame({\n", + " \"Priv Pass Auto (%)\" : pd.Series([0.7] * 10) \n", + " })\n", + "\n", + " col6 = pd.DataFrame({\n", + " \"Comm Auto (%)\" : pd.Series([0.8] * 10) \n", + " })\n", + "\n", + " col8 = pd.DataFrame({\n", + " \"Priv Pass Auto\" : col_mult(col2, col5) \n", + " })\n", + "\n", + " col9 = pd.DataFrame({\n", + " \"Comm Auto\" : col_mult(col3, col6) \n", + " })\n", + "\n", + " col10 = pd.DataFrame({\n", + " \"Comm Auto\" : col_add(col8, col9) \n", + " })\n", + "\n", + " col7 = pd.DataFrame({\n", + " \"Total (%)\" : col_div(col10, col4) \n", + " })\n", + "\n", + " col11 = pd.DataFrame({\n", + " \"Reported Claims as at 12/31/2008\" : format_col(tri.loc[scenario][\"Reported Claims\"].latest_diagonal) \n", + " })\n", + "\n", + " col12 = pd.DataFrame({\n", + " \"Actual IBNR\" : col_diff(col10, col11) \n", + " })\n", + "\n", + "\n", + " cols = [col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12]\n", + "\n", + " results = pd.concat(cols, axis=1)\n", + "\n", + " format_dict = {\n", + " # Dollar amounts\n", + " \"Priv Pass Auto\": \"{:,.0f}\",\n", + " \"Comm Auto\": \"{:,.0f}\",\n", + " \"Total\": \"{:,.0f}\",\n", + " \"Reported Claims as at 12/31/2008\" : \"{:,.0f}\",\n", + " \"Actual IBNR\" : \"{:,.0f}\",\n", + "\n", + " # Percentages\n", + " \"Priv Pass Auto (%)\": \"{:.1%}\",\n", + " \"Comm Auto (%)\": \"{:.1%}\",\n", + " \"Total (%)\": \"{:.1%}\",\n", + "\n", + " # Factors\n", + " \"CDF to Ult. - Reported\": \"{:.3f}\",\n", + " \"CDF to Ult. - Paid\": \"{:.3f}\",\n", + " }\n", + "\n", + " results = results.set_index(\"Accident Year\")\n", + "\n", + " total_cols = [\n", + " \"Priv Pass Auto\",\n", + " \"Comm Auto\",\n", + " \"Total\",\n", + " \"Reported Claims as at 12/31/2008\",\n", + " \"Actual IBNR\",\n", + " ]\n", + "\n", + " results.loc[\"Total\", total_cols] = results[total_cols].sum()\n", + "\n", + " display(HTML(f\"

Exhibit IV, Sheet 1 — {scenario}

\"))\n", + "\n", + " display(\n", + " results.style.format(format_dict, na_rep=\"\").set_table_styles([\n", + " {\n", + " \"selector\": \"th.col_heading\",\n", + " \"props\": [\n", + " (\"white-space\", \"normal\"),\n", + " (\"max-width\", \"80px\"),\n", + " ]\n", + " }\n", + " ])\n", + " )\n", + "\n", + " return results" + ] + }, + { + "cell_type": "markdown", + "id": "46324359", + "metadata": {}, + "source": [ + "Having defined the function, we generate Sheet 1, which contains the development of losses under the Steady State and Changing Product Mix scenarios (p. 125):" + ] + }, + { + "cell_type": "code", + "execution_count": 232, + "id": "346c3742", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", + "

Exhibit IV, Sheet 1 — Steady State

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
1224364860728496108120
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year           
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,00019991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,634
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Exhibit IV, Sheet 1 — Changing Product Mix

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year           
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,084
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scenarios = [\"Steady State\", \"Changing Product Mix\"]\n", + "\n", + "for scenario in scenarios:\n", + " _ = Ex4Sht1(scenario, tri)" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "id": "b98e5e9c", + "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", @@ -6632,7 +7364,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6644,7 +7376,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6659,26 +7391,3607 @@ "
1224364860728496108120
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,0001,500,000
20071,493,7071,852,729
20083,421,1221,568,393
" ], "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 1,011,000 1,254,000 1,377,000 1,454,000 1,477,000 1,493,000 1,500,000 1,500,000 1,500,000 1,500,000\n", - "2000 1,061,550 1,316,700 1,445,850 1,526,700 1,550,850 1,567,650 1,575,000 1,575,000 1,575,000 NaN\n", - "2001 1,114,628 1,382,535 1,518,143 1,603,035 1,628,393 1,646,033 1,653,750 1,653,750 NaN NaN\n", - "2002 1,170,359 1,451,662 1,594,050 1,683,187 1,709,812 1,728,334 1,736,438 NaN NaN NaN\n", - "2003 1,228,877 1,524,245 1,673,752 1,767,346 1,795,303 1,814,751 NaN NaN NaN NaN\n", - "2004 1,290,321 1,600,457 1,757,440 1,855,713 1,885,068 NaN NaN NaN NaN NaN\n", - "2005 1,354,837 1,680,480 1,845,312 1,948,499 NaN NaN NaN NaN NaN NaN\n", - "2006 1,422,579 1,764,504 1,937,577 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1,493,707 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 3,421,122 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 1011000.0 1254000.0 1377000.0 1454000.0 1477000.0 1493000.0 1500000.0 1500000.0 1500000.0 1500000.0\n", + "2000 1061550.0 1316700.0 1445850.0 1526700.0 1550850.0 1567650.0 1575000.0 1575000.0 1575000.0 NaN\n", + "2001 1114628.0 1382535.0 1518143.0 1603035.0 1628393.0 1646033.0 1653750.0 1653750.0 NaN NaN\n", + "2002 1170359.0 1451662.0 1594050.0 1683187.0 1709812.0 1728334.0 1736438.0 NaN NaN NaN\n", + "2003 1228877.0 1524245.0 1673752.0 1767346.0 1795303.0 1814751.0 NaN NaN NaN NaN\n", + "2004 1290321.0 1600457.0 1757440.0 1855713.0 1885068.0 NaN NaN NaN NaN NaN\n", + "2005 1354837.0 1680480.0 1845312.0 1948499.0 NaN NaN NaN NaN NaN NaN\n", + "2006 1422579.0 1764504.0 1937577.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1493707.0 1852729.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1568393.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" ] }, - "execution_count": 65, "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n" + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.24041.09811.05591.01581.01081.00471.00001.00001.0000
20001.24041.09811.05591.01581.01081.00471.00001.0000
20011.24041.09811.05591.01581.01081.00471.0000
20021.24041.09811.05591.01581.01081.0047
20031.24041.09811.05591.01581.0108
20041.24041.09811.05591.0158
20051.24041.09811.0559
20061.24041.0981
20071.2404
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "1999 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 1.0 1.0 1.0\n", + "2000 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 1.0 1.0 NaN\n", + "2001 1.240356 1.098086 1.055918 1.015819 1.010833 1.004688 1.0 NaN NaN\n", + "2002 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 NaN NaN NaN\n", + "2003 1.240356 1.098086 1.055919 1.015819 1.010833 NaN NaN NaN NaN\n", + "2004 1.240356 1.098086 1.055918 1.015819 NaN NaN NaN NaN NaN\n", + "2005 1.240356 1.098086 1.055918 NaN NaN NaN NaN NaN NaN\n", + "2006 1.240356 1.098086 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1.240356 NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
2007
19991.0000
20001.0000
20011.0000
20021.0047
20031.0108
20041.0158
20051.0559
20061.0981
20071.2404
" + ], + "text/plain": [ + " 2007\n", + "1999 1.000000\n", + "2000 1.000000\n", + "2001 1.000000\n", + "2002 1.004689\n", + "2003 1.010833\n", + "2004 1.015819\n", + "2005 1.055918\n", + "2006 1.098086\n", + "2007 1.240356" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
2007
19991.0000
20001.0000
20011.0000
20021.0047
20031.0108
20041.0158
20051.0559
20061.0981
20071.2404
" + ], + "text/plain": [ + " 2007\n", + "1999 1.000000\n", + "2000 1.000000\n", + "2001 1.000000\n", + "2002 1.004689\n", + "2003 1.010833\n", + "2004 1.015819\n", + "2005 1.055918\n", + "2006 1.098086\n", + "2007 1.240356" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def format_col(x, reverse = False):\n", + " if reverse is True:\n", + " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", + " return x.to_frame().squeeze().reset_index(drop=True)\n", + "\n", + "def col_diff(x, y):\n", + " return x.squeeze() - y.squeeze()\n", + "\n", + "def col_mult(x, y):\n", + " return x.squeeze() * y.squeeze()\n", + "\n", + "data = cl.load_sample(\"friedland_us_auto\")\n", + "\n", + "scenario = \"Steady State\" #(can be \"Steady State\" or \"Changing Product Mix\")\n", + "\n", + "#Sheet 2\n", + "\n", + "tri = data.loc[\"Steady State\"][\"Reported Claims\"]\n", + "\n", + "#Part 1\n", + "display(tri)\n", + "#Part 2\n", + "display(tri.link_ratio)\n", + "#Part 3\n", + "dev = cl.Development(n_periods = 5, average = 'volume', preserve=1).fit_transform(tri)\n", + "display(dev.link_ratio.latest_diagonal)\n", + "#Part 4\n", + "display(dev.link_ratio.latest_diagonal)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "fdbc301f", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 2 - U.S. Auto Steady-State - Reported Claims\n", + "\n", + "We now use the 'dev_exhibit' function to generate Exhibit IV, Sheet 2 (p. 126):" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "id": "8a7c6e5d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,0001,500,000
20001,061,5501,316,7001,445,8501,526,7001,550,8501,567,6501,575,0001,575,0001,575,000
20011,114,6281,382,5351,518,1431,603,0351,628,3931,646,0331,653,7501,653,750
20021,170,3591,451,6621,594,0501,683,1871,709,8121,728,3341,736,438
20031,228,8771,524,2451,673,7521,767,3461,795,3031,814,751
20041,290,3211,600,4571,757,4401,855,7131,885,068
20051,354,8371,680,4801,845,3121,948,499
20061,422,5791,764,5041,937,577
20071,493,7071,852,729
20081,568,393
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 1011000.0 1254000.0 1377000.0 1454000.0 1477000.0 1493000.0 1500000.0 1500000.0 1500000.0 1500000.0\n", + "2000 1061550.0 1316700.0 1445850.0 1526700.0 1550850.0 1567650.0 1575000.0 1575000.0 1575000.0 NaN\n", + "2001 1114628.0 1382535.0 1518143.0 1603035.0 1628393.0 1646033.0 1653750.0 1653750.0 NaN NaN\n", + "2002 1170359.0 1451662.0 1594050.0 1683187.0 1709812.0 1728334.0 1736438.0 NaN NaN NaN\n", + "2003 1228877.0 1524245.0 1673752.0 1767346.0 1795303.0 1814751.0 NaN NaN NaN NaN\n", + "2004 1290321.0 1600457.0 1757440.0 1855713.0 1885068.0 NaN NaN NaN NaN NaN\n", + "2005 1354837.0 1680480.0 1845312.0 1948499.0 NaN NaN NaN NaN NaN NaN\n", + "2006 1422579.0 1764504.0 1937577.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 1493707.0 1852729.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1568393.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.240
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.2401.0981.0561.0161.0111.0051.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.240 1.098 1.056 1.016 1.011 1.005 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.2401.0981.0561.0161.0111.0051.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.240 1.098 1.056 1.016 1.011 1.005 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.4841.1971.0901.0321.0161.0051.0001.0001.0001.000
Percent Reported0.6740.8350.9170.9690.9840.9951.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.484 1.197 1.090 1.032 1.016 1.005 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.674 0.835 0.917 0.969 0.984 0.995 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(data.loc[\"Steady State\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "a58d9059", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 3 - U.S. Auto Steady-State - Paid Claims\n", + "\n", + "We now use the 'dev_exhibit' function to generate Exhibit IV, Sheet 3 (p. 127):" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "8c9306e2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999470,000865,0001,124,0001,300,0001,400,0001,446,0001,469,0001,477,0001,492,0001,500,000
2000493,500908,2501,180,2001,365,0001,470,0001,518,3001,542,4501,550,8501,566,600
2001518,175953,6631,239,2101,433,2501,543,5001,594,2151,619,5731,628,393
2002544,0841,001,3461,301,1711,504,9131,620,6751,673,9261,700,551
2003571,2881,051,4131,366,2291,580,1581,701,7091,757,622
2004599,8521,103,9841,434,5401,659,1661,786,794
2005629,8451,159,1831,506,2681,742,124
2006661,3371,217,1421,581,581
2007694,4041,277,999
2008729,124
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 470000.0 865000.0 1124000.0 1300000.0 1400000.0 1446000.0 1469000.0 1477000.0 1492000.0 1500000.0\n", + "2000 493500.0 908250.0 1180200.0 1365000.0 1470000.0 1518300.0 1542450.0 1550850.0 1566600.0 NaN\n", + "2001 518175.0 953663.0 1239210.0 1433250.0 1543500.0 1594215.0 1619573.0 1628393.0 NaN NaN\n", + "2002 544084.0 1001346.0 1301171.0 1504913.0 1620675.0 1673926.0 1700551.0 NaN NaN NaN\n", + "2003 571288.0 1051413.0 1366229.0 1580158.0 1701709.0 1757622.0 NaN NaN NaN NaN\n", + "2004 599852.0 1103984.0 1434540.0 1659166.0 1786794.0 NaN NaN NaN NaN NaN\n", + "2005 629845.0 1159183.0 1506268.0 1742124.0 NaN NaN NaN NaN NaN NaN\n", + "2006 661337.0 1217142.0 1581581.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 694404.0 1277999.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 729124.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.840
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.8401.2991.1571.0771.0331.0161.0051.0101.005
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.840 1.299 1.157 1.077 1.033 1.016 1.005 1.010 1.005" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.8401.2991.1571.0771.0331.0161.0051.0101.0051.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.840 1.299 1.157 1.077 1.033 1.016 1.005 1.010 1.005 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate3.1891.7331.3341.1531.0711.0361.0201.0151.0051.000
Percent Reported0.3140.5770.7500.8670.9340.9650.9800.9850.9951.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 3.189 1.733 1.334 1.153 1.071 1.036 1.020 1.015 1.005 1.000\n", + "Percent Reported 0.314 0.577 0.750 0.867 0.934 0.965 0.980 0.985 0.995 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(data.loc[\"Steady State\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "7b782ca9", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 4 - U.S. Auto Changing Product Mix - Reported Claims\n", + "\n", + "We now use the 'dev_exhibit' function to generate Exhibit IV, Sheet 4 (p. 128):" + ] + }, + { + "cell_type": "code", + "execution_count": 233, + "id": "5c96f69e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,0001,500,000
20001,061,5501,316,7001,445,8501,526,7001,550,8501,567,6501,575,0001,575,0001,575,000
20011,114,6281,382,5351,518,1431,603,0351,628,3931,646,0331,653,7501,653,750
20021,170,3591,451,6621,594,0501,683,1871,709,8121,728,3341,736,438
20031,228,8771,524,2451,673,7521,767,3461,795,3031,814,751
20041,290,3211,600,4571,757,4401,855,7131,885,068
20051,505,4381,879,5802,072,4902,193,545
20061,776,4912,232,3892,471,446
20072,119,8322,680,487
20082,556,695
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 1011000.0 1254000.0 1377000.0 1454000.0 1477000.0 1493000.0 1500000.0 1500000.0 1500000.0 1500000.0\n", + "2000 1061550.0 1316700.0 1445850.0 1526700.0 1550850.0 1567650.0 1575000.0 1575000.0 1575000.0 NaN\n", + "2001 1114628.0 1382535.0 1518143.0 1603035.0 1628393.0 1646033.0 1653750.0 1653750.0 NaN NaN\n", + "2002 1170359.0 1451662.0 1594050.0 1683187.0 1709812.0 1728334.0 1736438.0 NaN NaN NaN\n", + "2003 1228877.0 1524245.0 1673752.0 1767346.0 1795303.0 1814751.0 NaN NaN NaN NaN\n", + "2004 1290321.0 1600457.0 1757440.0 1855713.0 1885068.0 NaN NaN NaN NaN NaN\n", + "2005 1505438.0 1879580.0 2072490.0 2193545.0 NaN NaN NaN NaN NaN NaN\n", + "2006 1776491.0 2232389.0 2471446.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 2119832.0 2680487.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 2556695.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.264
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.2521.1011.0571.0161.0111.0051.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.252 1.101 1.057 1.016 1.011 1.005 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.2521.1011.0571.0161.0111.0051.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.252 1.101 1.057 1.016 1.011 1.005 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate1.5041.2011.0911.0321.0161.0051.0001.0001.0001.000
Percent Reported0.6650.8330.9170.9690.9840.9951.0001.0001.0001.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 1.504 1.201 1.091 1.032 1.016 1.005 1.000 1.000 1.000 1.000\n", + "Percent Reported 0.665 0.833 0.917 0.969 0.984 0.995 1.000 1.000 1.000 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(\n", + " data.loc[\"Changing Product Mix\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "bcaa5b7d", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 5 - U.S. Auto Changing Product Mix - Paid Claims\n", + "\n", + "We now use the 'dev_exhibit' function to generate Exhibit IV, Sheet 5 (p. 129):" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "id": "e0cc72a6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 1 - Data Triangle\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
1999470,000865,0001,124,0001,300,0001,400,0001,446,0001,469,0001,477,0001,492,0001,500,000
2000493,500908,2501,180,2001,365,0001,470,0001,518,3001,542,4501,550,8501,566,600
2001518,175953,6631,239,2101,433,2501,543,5001,594,2151,619,5731,628,393
2002544,0841,001,3461,301,1711,504,9131,620,6751,673,9261,700,551
2003571,2881,051,4131,366,2291,580,1581,701,7091,757,622
2004599,8521,103,9841,434,5401,659,1661,786,794
2005686,0011,276,6011,677,2891,951,435
2006793,3051,493,0741,983,482
2007927,8741,766,164
20081,097,644
" + ], + "text/plain": [ + " 12 24 36 48 60 72 84 96 108 120\n", + "1999 470000.0 865000.0 1124000.0 1300000.0 1400000.0 1446000.0 1469000.0 1477000.0 1492000.0 1500000.0\n", + "2000 493500.0 908250.0 1180200.0 1365000.0 1470000.0 1518300.0 1542450.0 1550850.0 1566600.0 NaN\n", + "2001 518175.0 953663.0 1239210.0 1433250.0 1543500.0 1594215.0 1619573.0 1628393.0 NaN NaN\n", + "2002 544084.0 1001346.0 1301171.0 1504913.0 1620675.0 1673926.0 1700551.0 NaN NaN NaN\n", + "2003 571288.0 1051413.0 1366229.0 1580158.0 1701709.0 1757622.0 NaN NaN NaN NaN\n", + "2004 599852.0 1103984.0 1434540.0 1659166.0 1786794.0 NaN NaN NaN NaN NaN\n", + "2005 686001.0 1276601.0 1677289.0 1951435.0 NaN NaN NaN NaN NaN NaN\n", + "2006 793305.0 1493074.0 1983482.0 NaN NaN NaN NaN NaN NaN NaN\n", + "2007 927874.0 1766164.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", + "2008 1097644.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 2 - Age-to-Age Factors\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
 12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.903
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 3 - Average Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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
volume_51.8701.3101.1581.0771.0331.0161.0051.0101.005
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", + "volume_5 1.870 1.310 1.158 1.077 1.033 1.016 1.005 1.010 1.005" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " PART 4 - Selected Age-to-Age Factor\n", + "

\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-2424-3636-4848-6060-7272-8484-9696-108108-120120-132
Selected1.8701.3101.1581.0771.0331.0161.0051.0101.0051.000
\n", + "
" + ], + "text/plain": [ + " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120 120-132\n", + "Selected 1.870 1.310 1.158 1.077 1.033 1.016 1.005 1.010 1.005 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
12-Ult24-Ult36-Ult48-Ult60-Ult72-Ult84-Ult96-Ult108-Ult120-Ult
CDF to Ultimate3.2711.7491.3351.1531.0711.0361.0201.0151.0051.000
Percent Reported0.3060.5720.7490.8670.9340.9650.9800.9850.9951.000
\n", + "
" + ], + "text/plain": [ + " 12-Ult 24-Ult 36-Ult 48-Ult 60-Ult 72-Ult 84-Ult 96-Ult 108-Ult 120-Ult\n", + "CDF to Ultimate 3.271 1.749 1.335 1.153 1.071 1.036 1.020 1.015 1.005 1.000\n", + "Percent Reported 0.306 0.572 0.749 0.867 0.934 0.965 0.980 0.985 0.995 1.000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = dev_exhibit(data.loc[\"Changing Product Mix\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + ] + }, + { + "cell_type": "markdown", + "id": "0b198ff1", + "metadata": {}, + "source": [ + "### Exhibit IV, Sheet 6\n", + "\n", + "Finally, we produce the summary table contained in Exhibit IV, Sheet 6 (p. 130) by defining the following function to handle formatting:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "768432dc", + "metadata": {}, + "outputs": [], + "source": [ + "def Ex4Sht6(scenario, tr):\n", + "\n", + " def format_col(x, reverse = False):\n", + " if reverse is True:\n", + " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", + " return x.to_frame().squeeze().reset_index(drop=True)\n", + "\n", + " def col_diff(x, y):\n", + " return x.squeeze() - y.squeeze()\n", + "\n", + " def col_mult(x, y):\n", + " return x.squeeze() * y.squeeze()\n", + "\n", + " def col_sum(x, y):\n", + " return x.squeeze() + y.squeeze()\n", + "\n", + " tri = tr.copy()\n", + "\n", + " dev_input = {\n", + " \"average\" : \"volume\",\n", + " \"n_periods\" : 5\n", + " }\n", + "\n", + " tail_input = {\n", + " \"tail\" : 1.0,\n", + " \"projection_period\" : -1\n", + " }\n", + "\n", + " dev = cl.Development(**dev_input)\n", + " tail = cl.TailConstant(**tail_input)\n", + " tri = tail.fit_transform(dev.fit_transform(tri))\n", + "\n", + " \n", + " col1 = pd.DataFrame({\n", + " \"Accident Year\" : format_col(tr.origin)\n", + " })\n", + "\n", + " col2 = pd.DataFrame({\n", + " \"Age of Accident Year at 12/31/08\" : format_col(tr.development, reverse=True)\n", + "\n", + " })\n", + "\n", + " col3 = pd.DataFrame({\n", + " \"Claims at 12/31/2008 - Reported\" : format_col(tri.loc[scenario][\"Reported Claims\"].latest_diagonal)\n", + "\n", + " })\n", + "\n", + " col4 = pd.DataFrame({\n", + " \"Claims at 12/31/2008 - Paid\" : format_col(tri.loc[scenario][\"Paid Claims\"].latest_diagonal)\n", + "\n", + " })\n", + "\n", + " col5 = pd.DataFrame({\n", + " \"Case Outstanding\" : col_diff(col3, col4)\n", + "\n", + " })\n", + "\n", + " col6 = pd.DataFrame({\n", + " \"CDF to Ult. - Reported\" : format_col(tri.cdf_.loc[scenario][\"Reported Claims\"], reverse=True)\n", + "\n", + " })\n", + "\n", + " col7 = pd.DataFrame({\n", + " \"CDF to Ult. - Paid\" : format_col(tri.cdf_.loc[scenario][\"Paid Claims\"], reverse=True)\n", + " })\n", + "\n", + " col8 = pd.DataFrame({\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\" : col_mult(col3, col6)\n", + " })\n", + "\n", + " col9 = pd.DataFrame({\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\" : col_mult(col4, col7)\n", + " })\n", + "\n", + " col10 = pd.DataFrame({\n", + " \"Estimated IBNR Using Dev. Method - Reported\" : col_diff(col8, col3)\n", + " })\n", + "\n", + " col11 = pd.DataFrame({\n", + " \"Estimated IBNR Using Dev. Method - Paid\" : col_diff(col9, col3)\n", + " })\n", + "\n", + " colA = col_mult(\n", + " format_col(tri.loc[\"Steady State\"][\"Earned Premium\"].latest_diagonal / 2),\n", + " pd.Series([0.7] * 10)\n", + " )\n", + " colB = col_diff(\n", + " format_col(tri.loc[scenario][\"Earned Premium\"].latest_diagonal), \n", + " format_col(tri.loc[\"Steady State\"][\"Earned Premium\"].latest_diagonal / 2)\n", + " ) * pd.Series([0.8] * 10)\n", + " colC = format_col(tri.loc[scenario][\"Reported Claims\"].latest_diagonal)\n", + " colD = col_diff(\n", + " col_sum(\n", + " colA, \n", + " colB\n", + " ), \n", + " colC)\n", + "\n", + " col12 = pd.DataFrame({\n", + " \"Actual IBNR\" : format_col(colD) # col_diff(col_mult(ult, cdf), col3)\n", + " })\n", + "\n", + " col13 = pd.DataFrame({\n", + " \"Difference from Actual IBNR - Reported\" : col_diff(col12, col10)\n", + " })\n", + "\n", + " col14 = pd.DataFrame({\n", + " \"Difference from Actual IBNR - Paid\" : col_diff(col12, col11)\n", + " })\n", + "\n", + "\n", + " cols = [col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14]\n", + "\n", + " results = pd.concat(cols, axis=1)\n", + "\n", + " format_dict = {\n", + " # Dollar amounts\n", + " \"Claims at 12/31/2008 - Reported\": \"{:,.0f}\",\n", + " \"Claims at 12/31/2008 - Paid\": \"{:,.0f}\",\n", + " \"Case Outstanding\": \"{:,.0f}\",\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\": \"{:,.0f}\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\": \"{:,.0f}\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\": \"{:,.0f}\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\": \"{:,.0f}\",\n", + " \"Actual IBNR\": \"{:,.0f}\",\n", + " \"Difference from Actual IBNR - Reported\": \"{:,.0f}\",\n", + " \"Difference from Actual IBNR - Paid\": \"{:,.0f}\",\n", + "\n", + " # Ages\n", + " \"Age of Accident Year at 12/31/08\": \"{:.0f}\",\n", + "\n", + " # Factors\n", + " \"CDF to Ult. - Reported\": \"{:.3f}\",\n", + " \"CDF to Ult. - Paid\": \"{:.3f}\",\n", + " }\n", + "\n", + " results = results.set_index(\"Accident Year\")\n", + "\n", + " total_cols = [\n", + " \"Claims at 12/31/2008 - Reported\",\n", + " \"Claims at 12/31/2008 - Paid\",\n", + " \"Case Outstanding\",\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\",\n", + " \"Actual IBNR\",\n", + " \"Difference from Actual IBNR - Reported\",\n", + " \"Difference from Actual IBNR - Paid\",\n", + " ]\n", + " \n", + " results.loc[\"Total\", total_cols] = results[total_cols].sum()\n", + "\n", + " display(HTML(f\"

Exhibit IV Sheet 6 — {scenario}

\"))\n", + "\n", + " display(\n", + " results.style.format(format_dict, na_rep=\"\")\n", + " )\n" + ] + }, + { + "cell_type": "markdown", + "id": "afa6fa66", + "metadata": {}, + "source": [ + "Finally, we generate the tables in Sheet 6 calling the function once for each scenario:" + ] + }, + { + "cell_type": "code", + "execution_count": 255, + "id": "9b97c370", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Exhibit IV Sheet 6 — Steady State

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-01
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Exhibit IV Sheet 6 — Changing Product Mix

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,383
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scenarios = [\"Steady State\", \"Changing Product Mix\"]\n", + "triangles = data\n", + "\n", + "for scenario in scenarios:\n", + " _ = Ex4Sht6(scenario, triangles)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "id": "04ea6834", + "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", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1001
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,35400
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,111-183,401-252,799-241,512
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303-360,796-583,085-540,099
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178-464,304-1,001,592-875,483
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,246-229,703-1,515,653-1,265,949
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scenario = \"Changing Product Mix\"\n", + "triangles = data\n", + "Ex4Sht6(scenario, triangles)" ] } ], From 546fc25f70958bcfef2b67afbbcb85bc38750bbb Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Tue, 11 Aug 2026 23:14:47 -0400 Subject: [PATCH 06/11] Add validation against Friedland exhibits --- docs/friedland/chapter_7_part_2.ipynb | 3394 +++++++++------ docs/friedland/friedland_assertions.py | 241 ++ .../friedland_ch7_part2_reference.json | 3839 +++++++++++++++++ 3 files changed, 6215 insertions(+), 1259 deletions(-) create mode 100644 docs/friedland/friedland_assertions.py create mode 100644 docs/friedland/friedland_ch7_part2_reference.json diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index e974852dd..0bd56bb9c 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -12,16 +12,18 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 50, "id": "f42e0344", "metadata": {}, "outputs": [], "source": [ "import chainladder as cl\n", "from IPython.display import display, HTML, Markdown\n", + "import json\n", "import numpy as np\n", "import pandas as pd\n", "\n", + "import friedland_assertions\n", "\n", "pd.set_option(\"display.max_columns\", None)\n", "pd.set_option(\"display.width\", 1000)\n", @@ -34,6 +36,10 @@ " category=UserWarning,\n", ")\n", "\n", + "friedland = friedland_assertions.load_friedland_reference(\n", + " \"friedland_ch7_part2_reference.json\"\n", + ")\n", + "\n", "\n", "#pd.options.display.float_format = '{:,.0f}'.format" ] @@ -62,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 202, + "execution_count": 51, "id": "5595108e", "metadata": {}, "outputs": [], @@ -80,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 203, + "execution_count": 52, "id": "79e5ac39", "metadata": { "tags": [ @@ -143,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "id": "99de7a11", "metadata": { "tags": [ @@ -312,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 205, + "execution_count": 54, "id": "06a03be7", "metadata": {}, "outputs": [ @@ -337,25 +343,25 @@ "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", @@ -372,142 +378,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Steady StateIncreasing Claim RatiosSteady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -518,25 +524,25 @@ "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", @@ -553,142 +559,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding StrengthIncreasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -705,7 +711,18 @@ " \"tail\" : 1.0,\n", " \"projection_period\" : -1\n", "}\n", - "res_up, res_low = ex3sht1(triangles, dev_input, tail_input)" + "\n", + "res_up, res_low = ex3sht1(\n", + " triangles,\n", + " dev_input,\n", + " tail_input,\n", + ")\n", + "\n", + "friedland_assertions.assert_ex3_sheet1(\n", + " res_up,\n", + " res_low,\n", + " friedland[\"exhibit_iii\"][\"sheet_1\"],\n", + ")" ] }, { @@ -720,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 206, + "execution_count": 55, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -940,135 +957,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1297,7 +1314,17 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Steady State\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Steady State\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Steady State\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_2\"],\n", + ")" ] }, { @@ -1312,7 +1339,7 @@ }, { "cell_type": "code", - "execution_count": 207, + "execution_count": 56, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -1532,135 +1559,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1889,7 +1916,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Steady State\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Steady State\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Steady State\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_3\"],\n", + ")" ] }, { @@ -1904,7 +1942,7 @@ }, { "cell_type": "code", - "execution_count": 208, + "execution_count": 57, "id": "35744cce", "metadata": {}, "outputs": [ @@ -2124,135 +2162,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2481,7 +2519,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Claim\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Claim\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Claim\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_4\"],\n", + ")" ] }, { @@ -2496,7 +2545,7 @@ }, { "cell_type": "code", - "execution_count": 209, + "execution_count": 58, "id": "8d9a4359", "metadata": {}, "outputs": [ @@ -2716,135 +2765,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3073,7 +3122,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Claim\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Claim\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Claim\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_5\"],\n", + ")" ] }, { @@ -3088,7 +3148,7 @@ }, { "cell_type": "code", - "execution_count": 210, + "execution_count": 59, "id": "0ab5bcf6", "metadata": {}, "outputs": [ @@ -3308,135 +3368,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3665,7 +3725,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Case\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Case\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Case\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_6\"],\n", + ")" ] }, { @@ -3680,7 +3751,7 @@ }, { "cell_type": "code", - "execution_count": 211, + "execution_count": 60, "id": "5a759ad5", "metadata": {}, "outputs": [ @@ -3900,135 +3971,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4257,7 +4328,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Case\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Case\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Case\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_7\"],\n", + ")" ] }, { @@ -4272,7 +4354,7 @@ }, { "cell_type": "code", - "execution_count": 212, + "execution_count": 61, "id": "ec0b53a5", "metadata": {}, "outputs": [ @@ -4492,135 +4574,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4849,7 +4931,18 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Claim Case\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Claim Case\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Claim Case\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_8\"],\n", + ")" ] }, { @@ -4864,7 +4957,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 62, "id": "16a0f5fd", "metadata": {}, "outputs": [ @@ -5084,135 +5177,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5441,12 +5534,23 @@ } ], "source": [ - "_ = dev_exhibit(triangles.loc[\"Increasing Claim Case\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " triangles.loc[\"Increasing Claim Case\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " triangles.loc[\"Increasing Claim Case\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iii\"][\"sheet_9\"],\n", + ")" ] }, { "cell_type": "code", - "execution_count": 227, + "execution_count": 63, "id": "191822b3", "metadata": { "tags": [ @@ -5604,6 +5708,8 @@ " display(\n", " results.style.format(format_dict, na_rep=\"\")\n", " )\n", + "\n", + " return results\n", "\n" ] }, @@ -5619,7 +5725,783 @@ }, { "cell_type": "code", - "execution_count": 228, + "execution_count": 64, + "id": "1bbad6f0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "def assert_ex3_sheet10_or_11(results, expected_rows, **kwargs):\n", + " assert_summary_rows(\n", + " results,\n", + " expected_rows,\n", + " ratio_positions=(4, 5),\n", + " difference_positions=(11, 12),\n", + " label=\"Exhibit III Sheet 10/11\",\n", + " **kwargs,\n", + " )\n", + "\n" + ] + } + ], + "source": [ + "import inspect\n", + "print(inspect.getsource(friedland_assertions.assert_ex3_sheet10_or_11))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e0f134ea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Exhibit III Sheets 10 and 11 — Steady State

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Exhibit III Sheets 10 and 11 — Increasing Claim

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Exhibit III Sheets 10 and 11 — Increasing Case

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "result = Ex3Sht10(\"Steady State\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Steady-State\"][\"rows\"],\n", + ")\n", + "\n", + "result = Ex3Sht10(\"Increasing Claim\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Increasing Claim Ratios\"][\"rows\"],\n", + ")\n", + "\n", + "result = Ex3Sht10(\"Increasing Case\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_11\"][\"Increasing Case Outstanding Strength\"][\"rows\"],\n", + ")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "48f63e22", "metadata": {}, "outputs": [ @@ -6583,6 +7465,8 @@ "source": [ "scenarios = [\"Steady State\",\"Increasing Claim\",\"Increasing Case\",\"Increasing Claim Case\"]\n", "\n", + "\n", + "\n", "for scenario in scenarios:\n", " Ex3Sht10(scenario, triangles)" ] @@ -6594,17 +7478,9 @@ "source": [ "## Exhibit IV — Impact of Changing Product Mix Example\n", "\n", - "In order to illustrate the assumptions and corresponding limitations of the Development method, Exhibit III applies the method to the **U.S. Private Passenger Industry Auto** (USPP Auto) example under four different scenarios:\n", - "\n", - "1. stable claim ratios and no change in case outstanding strength (steady state);\n", - "1. increasing claim ratios but no change in case outstanding strength;\n", - "1. stable claim ratios but increasing case outstanding strength; and\n", - "1. increasing claim ratios and increasing case outstanding strength.\n", - "\n", - "The key assumptions of this study are as follows:\n", + "In Exhibit IV, Friedland demonstrates the effect of changes in product mix on the development method in order to further illustrate its limitations before segueing into more advanced methods. The changing product mix in this example refers to the proportion of earned premiums attributable to the private passenger and commercial portfolios of U.S. Auto over a ten-year experience period. \n", "\n", - "- the earned premium for the first year (1999) is assumed to be $1 million with a 5% annual premium trend;\n", - "- (discuss assumed claim ratios)\n", + "In the steady state scenario, both lines have an equal proportion of the total earned premiums (which increase by 5% annually), while in the changing product mix scenario, the proportionate share of earned premiums of commercial lines increases relative to private passenger (specifically, commercial's earned premium increases by 30% annually from the seventh development year). Other than the earned premium, the other key assumption of this study are as follows are assumed ultimate claim ratios of 70% and 80%, respectively, for private passenger and commercial.\n", "\n", "Since the USPP Auto dataset is contained in the `chainladder` package, we simply load it into a triangle as follows:" ] @@ -6625,7 +7501,7 @@ "id": "f1f909dd", "metadata": {}, "source": [ - "### Exhibit IV, Sheet 1\n", + "### Exhibit IV, Sheet 1 - Summary of Assumptions - Earned Premiums and Claim Ratios\n", "\n", "To use Chainladder to reproduce Sheet 1 of Exhibit IV, we create the following function to take care of the necessary formatting, and to perform the appropriate transformations/slicing of the data triangle to apply the development method and determine the IBNR. " ] diff --git a/docs/friedland/friedland_assertions.py b/docs/friedland/friedland_assertions.py new file mode 100644 index 000000000..69fd12127 --- /dev/null +++ b/docs/friedland/friedland_assertions.py @@ -0,0 +1,241 @@ + +import json +from pathlib import Path + +import numpy as np +import pandas as pd + + +def load_friedland_reference(path="friedland_ch7_part2_reference.json"): + """Load benchmark values transcribed from the published Friedland exhibits.""" + with open(path, encoding="utf-8") as f: + return json.load(f) + + +def _numeric_frame(obj): + """Convert a chainladder Triangle-like object or DataFrame to a numeric DataFrame.""" + if hasattr(obj, "to_frame"): + try: + df = obj.to_frame(origin_as_datetime=False) + except TypeError: + df = obj.to_frame() + else: + df = pd.DataFrame(obj) + return df.apply(pd.to_numeric, errors="coerce") + + +def _assert_rows(actual, expected_rows, atol, label): + """Compare the non-missing cells in each Friedland accident-year row.""" + actual = _numeric_frame(actual) + actual.index = actual.index.map(str) + + for year, expected in expected_rows.items(): + if year not in actual.index: + raise AssertionError(f"{label}: accident year {year} not found.") + observed = actual.loc[year].dropna().to_numpy(dtype=float) + expected = np.asarray(expected, dtype=float) + + if observed.size != expected.size: + raise AssertionError( + f"{label}, AY {year}: expected {expected.size} displayed values " + f"but found {observed.size}." + ) + + np.testing.assert_allclose( + observed, expected, rtol=1e-5, atol=atol, + err_msg=f"{label}, AY {year}" + ) + + +def assert_dev_exhibit( + tri, + devs, + reference, + *, + selected_key="Selected", + average_key="volume_5", + dollar_atol=1.0, + factor_atol=0.0015, +): + """ + Validate one of Friedland's four-part development exhibits. + + Parameters + ---------- + tri: + The input triangle displayed in Part 1. + devs: + Dictionary returned by dev_exhibit(). + reference: + One sheet from friedland_ch7_part2_reference.json. + """ + # Part 1: cumulative claims triangle + _assert_rows( + tri, reference["triangle"], dollar_atol, + "Part 1 - Data Triangle" + ) + + # Part 2: age-to-age factors + _assert_rows( + tri.age_to_age, reference["age_to_age"], factor_atol, + "Part 2 - Age-to-Age Factors" + ) + + # Part 3: latest-5 volume-weighted average + avg = _numeric_frame(devs[average_key].ldf_).to_numpy(dtype=float) + avg = avg[np.isfinite(avg)] + expected_avg = np.asarray(reference["latest_5_volume_weighted"], dtype=float) + # Friedland does not print the tail factor in Part 3. + avg = avg[: expected_avg.size] + np.testing.assert_allclose( + avg, expected_avg, rtol=0, atol=factor_atol, + err_msg="Part 3 - Latest 5 volume-weighted factors" + ) + + # Part 4: selected LDF, CDF and percent developed + selected = devs[selected_key].ldf_ + ldf = _numeric_frame(selected.round(3)).to_numpy(dtype=float) + ldf = ldf[np.isfinite(ldf)] + + np.testing.assert_allclose( + ldf[:len(reference["selected_ldf"])], + reference["selected_ldf"], + rtol=0, + atol=factor_atol, + err_msg="Part 4 - Selected LDF", +) + + cdf_obj = selected.incr_to_cum().round(3) + + cdf = _numeric_frame(cdf_obj).to_numpy(dtype=float) + cdf = cdf[np.isfinite(cdf)] + + np.testing.assert_allclose( + cdf[:len(reference["cdf_to_ultimate"])], + reference["cdf_to_ultimate"], + rtol=0, + atol=factor_atol, + err_msg="Part 4 - CDF to Ultimate", + ) + + pct = 1 / cdf + np.testing.assert_allclose( + pct[:len(reference["percent_developed"])], + reference["percent_developed"], + rtol=0, atol=factor_atol, + err_msg="Part 4 - Percent Reported/Paid" + ) + + +def assert_summary_rows( + actual, + expected_rows, + *, + ratio_positions=(), + difference_positions=(), + dollar_atol=2.0, + dollar_rtol=1e-5, + difference_atol=5.0, + factor_atol=0.0005, + label="summary exhibit", +): + """ + Compare a summary DataFrame to Friedland row-by-row. + + `ratio_positions` are zero-based positions containing ratios/factors + rather than dollar values. + """ + if "Total" in actual.index: + actual = actual.drop(index="Total") + + actual = actual.copy() + actual.index = actual.index.map(str) + arr = actual.apply(pd.to_numeric, errors="coerce") + + for year, expected in expected_rows.items(): + observed = arr.loc[year].to_numpy(dtype=float) + expected = np.asarray(expected, dtype=float) + + if observed.size != expected.size: + raise AssertionError( + f"{label}, AY {year}: expected {expected.size} columns " + f"but found {observed.size}." + ) + + for j, (obs, exp) in enumerate(zip(observed, expected)): + if j in ratio_positions: + ok = np.isclose( + obs, + exp, + rtol=0, + atol=factor_atol, + ) + tolerance = f"atol={factor_atol}" + + elif j in difference_positions: + ok = np.isclose( + obs, + exp, + rtol=0, + atol=difference_atol, + ) + tolerance = f"atol={difference_atol}" + + else: + ok = np.isclose( + obs, + exp, + rtol=dollar_rtol, + atol=dollar_atol, + ) + tolerance = ( + f"atol={dollar_atol}, " + f"rtol={dollar_rtol}" + ) + + if not ok: + raise AssertionError( + f"{label}, AY {year}, column {j}: " + f"actual={obs}, Friedland={exp}, " + f"tolerance={tolerance}" + ) + +def assert_ex3_sheet1(results_upper, results_lower, ref, **kwargs): + # Published row order: + # EP, ratio, ultimate, reported, IBNR, ratio, ultimate, reported, IBNR + assert_summary_rows( + results_upper, ref["upper_rows"], + ratio_positions=(1, 5), label="Exhibit III Sheet 1 (upper)", **kwargs + ) + assert_summary_rows( + results_lower, ref["lower_rows"], + ratio_positions=(1, 5), label="Exhibit III Sheet 1 (lower)", **kwargs + ) + + +def assert_ex3_sheet10_or_11(results, expected_rows, **kwargs): + assert_summary_rows( + results, + expected_rows, + ratio_positions=(4, 5), + difference_positions=(11, 12), + label="Exhibit III Sheet 10/11", + **kwargs, + ) + + +def assert_ex4_sheet1(results, expected_rows, **kwargs): + # PP premium, Comm premium, Total premium, + # PP ratio, Comm ratio, Total ratio, + # PP ultimate, Comm ultimate, Total ultimate, reported, actual IBNR + assert_summary_rows( + results, expected_rows, + ratio_positions=(3, 4, 5), label="Exhibit IV Sheet 1", **kwargs + ) + + +def assert_ex4_sheet6(results, expected_rows, **kwargs): + assert_summary_rows( + results, expected_rows, + ratio_positions=(4, 5), label="Exhibit IV Sheet 6", **kwargs + ) diff --git a/docs/friedland/friedland_ch7_part2_reference.json b/docs/friedland/friedland_ch7_part2_reference.json new file mode 100644 index 000000000..6d0b352f4 --- /dev/null +++ b/docs/friedland/friedland_ch7_part2_reference.json @@ -0,0 +1,3839 @@ +{ + "metadata": { + "source": "Friedland, Chapter 7 - Development Technique, Exhibits III and IV", + "source_file": "Pages from 5_Friedland.pdf", + "note": "Programmatically transcribed from the supplied PDF. Compare dollar values at whole-dollar precision and printed development factors at 0.001 precision." + }, + "exhibit_iii": { + "sheet_2": { + "triangle": { + "1999": [ + 539000.0, + 630000.0, + 665000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 565950.0, + 661500.0, + 698250.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0, + 735000.0, + 735000.0 + ], + "2001": [ + 594248.0, + 694575.0, + 733163.0, + 756315.0, + 764033.0, + 764033.0, + 771750.0, + 771750.0 + ], + "2002": [ + 623960.0, + 729304.0, + 769821.0, + 794131.0, + 802234.0, + 802234.0, + 810338.0 + ], + "2003": [ + 655158.0, + 765769.0, + 808312.0, + 833837.0, + 842346.0, + 842346.0 + ], + "2004": [ + 687916.0, + 804057.0, + 848727.0, + 875529.0, + 884463.0 + ], + "2005": [ + 722312.0, + 844260.0, + 891164.0, + 919306.0 + ], + "2006": [ + 758427.0, + 886473.0, + 935722.0 + ], + "2007": [ + 796348.0, + 930797.0 + ], + "2008": [ + 836166.0 + ] + }, + "age_to_age": { + "1999": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "2001": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2002": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01 + ], + "2003": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0 + ], + "2004": [ + 1.169, + 1.056, + 1.032, + 1.01 + ], + "2005": [ + 1.169, + 1.056, + 1.032 + ], + "2006": [ + 1.169, + 1.056 + ], + "2007": [ + 1.169 + ] + }, + "latest_5_volume_weighted": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.299, + 1.111, + 1.053, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.77, + 0.9, + 0.95, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_3": { + "triangle": { + "1999": [ + 294000.0, + 497000.0, + 588000.0, + 644000.0, + 672000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 308700.0, + 521850.0, + 617400.0, + 676200.0, + 705600.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0 + ], + "2001": [ + 324135.0, + 547943.0, + 648270.0, + 710010.0, + 740880.0, + 756315.0, + 764033.0, + 764033.0 + ], + "2002": [ + 340342.0, + 575340.0, + 680684.0, + 745511.0, + 777924.0, + 794131.0, + 802234.0 + ], + "2003": [ + 357359.0, + 604107.0, + 714718.0, + 782786.0, + 816820.0, + 833837.0 + ], + "2004": [ + 375227.0, + 634312.0, + 750454.0, + 821925.0, + 857661.0 + ], + "2005": [ + 393988.0, + 666028.0, + 787976.0, + 863022.0 + ], + "2006": [ + 413688.0, + 699329.0, + 827375.0 + ], + "2007": [ + 434372.0, + 734295.0 + ], + "2008": [ + 456090.0 + ] + }, + "age_to_age": { + "1999": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2000": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01 + ], + "2001": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0 + ], + "2002": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01 + ], + "2003": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021 + ], + "2004": [ + 1.69, + 1.183, + 1.095, + 1.043 + ], + "2005": [ + 1.69, + 1.183, + 1.095 + ], + "2006": [ + 1.69, + 1.183 + ], + "2007": [ + 1.69 + ] + }, + "latest_5_volume_weighted": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "selected_ldf": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 2.381, + 1.408, + 1.19, + 1.087, + 1.042, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.42, + 0.71, + 0.84, + 0.92, + 0.96, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0 + ] + }, + "sheet_4": { + "triangle": { + "1999": [ + 539000.0, + 630000.0, + 665000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 565950.0, + 661500.0, + 698250.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0, + 735000.0, + 735000.0 + ], + "2001": [ + 594248.0, + 694575.0, + 733163.0, + 756315.0, + 764033.0, + 764033.0, + 771750.0, + 771750.0 + ], + "2002": [ + 623960.0, + 729304.0, + 769821.0, + 794131.0, + 802234.0, + 802234.0, + 810338.0 + ], + "2003": [ + 655158.0, + 765769.0, + 808312.0, + 833837.0, + 842346.0, + 842346.0 + ], + "2004": [ + 786189.0, + 918923.0, + 969974.0, + 1000605.0, + 1010815.0 + ], + "2005": [ + 877093.0, + 1025173.0, + 1082127.0, + 1116300.0 + ], + "2006": [ + 975121.0, + 1139751.0, + 1203071.0 + ], + "2007": [ + 1080759.0, + 1263224.0 + ], + "2008": [ + 1194523.0 + ] + }, + "age_to_age": { + "1999": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "2001": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2002": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01 + ], + "2003": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0 + ], + "2004": [ + 1.169, + 1.056, + 1.032, + 1.01 + ], + "2005": [ + 1.169, + 1.056, + 1.032 + ], + "2006": [ + 1.169, + 1.056 + ], + "2007": [ + 1.169 + ] + }, + "latest_5_volume_weighted": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.299, + 1.111, + 1.053, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.77, + 0.9, + 0.95, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_5": { + "triangle": { + "1999": [ + 294000.0, + 497000.0, + 588000.0, + 644000.0, + 672000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 308700.0, + 521850.0, + 617400.0, + 676200.0, + 705600.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0 + ], + "2001": [ + 324135.0, + 547943.0, + 648270.0, + 710010.0, + 740880.0, + 756315.0, + 764033.0, + 764033.0 + ], + "2002": [ + 340342.0, + 575340.0, + 680684.0, + 745511.0, + 777924.0, + 794131.0, + 802234.0 + ], + "2003": [ + 357359.0, + 604107.0, + 714718.0, + 782786.0, + 816820.0, + 833837.0 + ], + "2004": [ + 428831.0, + 724928.0, + 857661.0, + 939343.0, + 980184.0 + ], + "2005": [ + 478414.0, + 808748.0, + 956828.0, + 1047955.0 + ], + "2006": [ + 531884.0, + 899137.0, + 1063768.0 + ], + "2007": [ + 589505.0, + 996544.0 + ], + "2008": [ + 651558.0 + ] + }, + "age_to_age": { + "1999": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2000": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01 + ], + "2001": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0 + ], + "2002": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01 + ], + "2003": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021 + ], + "2004": [ + 1.69, + 1.183, + 1.095, + 1.043 + ], + "2005": [ + 1.69, + 1.183, + 1.095 + ], + "2006": [ + 1.69, + 1.183 + ], + "2007": [ + 1.69 + ] + }, + "latest_5_volume_weighted": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "selected_ldf": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 2.381, + 1.408, + 1.19, + 1.087, + 1.042, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.42, + 0.71, + 0.84, + 0.92, + 0.96, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0 + ] + }, + "sheet_6": { + "triangle": { + "1999": [ + 539000.0, + 630000.0, + 665000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 565950.0, + 661500.0, + 698250.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0, + 735000.0, + 735000.0 + ], + "2001": [ + 594248.0, + 694575.0, + 733163.0, + 756315.0, + 764033.0, + 764033.0, + 771750.0, + 771750.0 + ], + "2002": [ + 623960.0, + 729304.0, + 769821.0, + 794131.0, + 802234.0, + 802234.0, + 810338.0 + ], + "2003": [ + 655158.0, + 765769.0, + 808312.0, + 833837.0, + 842346.0, + 842346.0 + ], + "2004": [ + 687916.0, + 804057.0, + 848727.0, + 878745.0, + 884463.0 + ], + "2005": [ + 722312.0, + 844260.0, + 897355.0, + 933377.0 + ], + "2006": [ + 758427.0, + 897702.0, + 962808.0 + ], + "2007": [ + 818067.0, + 979922.0 + ], + "2008": [ + 931185.0 + ] + }, + "age_to_age": { + "1999": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "2001": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2002": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01 + ], + "2003": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0 + ], + "2004": [ + 1.169, + 1.056, + 1.035, + 1.007 + ], + "2005": [ + 1.169, + 1.063, + 1.04 + ], + "2006": [ + 1.184, + 1.073 + ], + "2007": [ + 1.198 + ] + }, + "latest_5_volume_weighted": [ + 1.178, + 1.061, + 1.034, + 1.009, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.178, + 1.061, + 1.034, + 1.009, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.318, + 1.119, + 1.055, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.759, + 0.894, + 0.948, + 0.981, + 0.99, + 0.99, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_7": { + "triangle": { + "1999": [ + 294000.0, + 497000.0, + 588000.0, + 644000.0, + 672000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 308700.0, + 521850.0, + 617400.0, + 676200.0, + 705600.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0 + ], + "2001": [ + 324135.0, + 547943.0, + 648270.0, + 710010.0, + 740880.0, + 756315.0, + 764033.0, + 764033.0 + ], + "2002": [ + 340342.0, + 575340.0, + 680684.0, + 745511.0, + 777924.0, + 794131.0, + 802234.0 + ], + "2003": [ + 357359.0, + 604107.0, + 714718.0, + 782786.0, + 816820.0, + 833837.0 + ], + "2004": [ + 375227.0, + 634312.0, + 750454.0, + 821925.0, + 857661.0 + ], + "2005": [ + 393988.0, + 666028.0, + 787976.0, + 863022.0 + ], + "2006": [ + 413688.0, + 699329.0, + 827375.0 + ], + "2007": [ + 434372.0, + 734295.0 + ], + "2008": [ + 456090.0 + ] + }, + "age_to_age": { + "1999": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2000": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01 + ], + "2001": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0 + ], + "2002": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01 + ], + "2003": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021 + ], + "2004": [ + 1.69, + 1.183, + 1.095, + 1.043 + ], + "2005": [ + 1.69, + 1.183, + 1.095 + ], + "2006": [ + 1.69, + 1.183 + ], + "2007": [ + 1.69 + ] + }, + "latest_5_volume_weighted": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "selected_ldf": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 2.381, + 1.408, + 1.19, + 1.087, + 1.042, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.42, + 0.71, + 0.84, + 0.92, + 0.96, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0 + ] + }, + "sheet_8": { + "triangle": { + "1999": [ + 539000.0, + 630000.0, + 665000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 565950.0, + 661500.0, + 698250.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0, + 735000.0, + 735000.0 + ], + "2001": [ + 594248.0, + 694575.0, + 733163.0, + 756315.0, + 764033.0, + 764033.0, + 771750.0, + 771750.0 + ], + "2002": [ + 623960.0, + 729304.0, + 769821.0, + 794131.0, + 802234.0, + 802234.0, + 810338.0 + ], + "2003": [ + 655158.0, + 765769.0, + 808312.0, + 833837.0, + 842346.0, + 842346.0 + ], + "2004": [ + 786189.0, + 918923.0, + 969974.0, + 1004280.0, + 1010815.0 + ], + "2005": [ + 877093.0, + 1025173.0, + 1089645.0, + 1133386.0 + ], + "2006": [ + 975121.0, + 1154188.0, + 1237897.0 + ], + "2007": [ + 1110234.0, + 1329895.0 + ], + "2008": [ + 1330264.0 + ] + }, + "age_to_age": { + "1999": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "2001": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2002": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0, + 1.01 + ], + "2003": [ + 1.169, + 1.056, + 1.032, + 1.01, + 1.0 + ], + "2004": [ + 1.169, + 1.056, + 1.035, + 1.007 + ], + "2005": [ + 1.169, + 1.063, + 1.04 + ], + "2006": [ + 1.184, + 1.073 + ], + "2007": [ + 1.198 + ] + }, + "latest_5_volume_weighted": [ + 1.179, + 1.061, + 1.035, + 1.009, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.179, + 1.061, + 1.035, + 1.009, + 1.0, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.32, + 1.12, + 1.055, + 1.019, + 1.01, + 1.01, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.757, + 0.893, + 0.948, + 0.981, + 0.99, + 0.99, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_9": { + "triangle": { + "1999": [ + 294000.0, + 497000.0, + 588000.0, + 644000.0, + 672000.0, + 686000.0, + 693000.0, + 693000.0, + 700000.0, + 700000.0 + ], + "2000": [ + 308700.0, + 521850.0, + 617400.0, + 676200.0, + 705600.0, + 720300.0, + 727650.0, + 727650.0, + 735000.0 + ], + "2001": [ + 324135.0, + 547943.0, + 648270.0, + 710010.0, + 740880.0, + 756315.0, + 764033.0, + 764033.0 + ], + "2002": [ + 340342.0, + 575340.0, + 680684.0, + 745511.0, + 777924.0, + 794131.0, + 802234.0 + ], + "2003": [ + 357359.0, + 604107.0, + 714718.0, + 782786.0, + 816820.0, + 833837.0 + ], + "2004": [ + 428831.0, + 724928.0, + 857661.0, + 939343.0, + 980184.0 + ], + "2005": [ + 478414.0, + 808748.0, + 956828.0, + 1047955.0 + ], + "2006": [ + 531884.0, + 899137.0, + 1063768.0 + ], + "2007": [ + 589505.0, + 996544.0 + ], + "2008": [ + 651558.0 + ] + }, + "age_to_age": { + "1999": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "2000": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01 + ], + "2001": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0 + ], + "2002": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01 + ], + "2003": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021 + ], + "2004": [ + 1.69, + 1.183, + 1.095, + 1.043 + ], + "2005": [ + 1.69, + 1.183, + 1.095 + ], + "2006": [ + 1.69, + 1.183 + ], + "2007": [ + 1.69 + ] + }, + "latest_5_volume_weighted": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0 + ], + "selected_ldf": [ + 1.69, + 1.183, + 1.095, + 1.043, + 1.021, + 1.01, + 1.0, + 1.01, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 2.381, + 1.408, + 1.19, + 1.087, + 1.042, + 1.02, + 1.01, + 1.01, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.42, + 0.71, + 0.84, + 0.92, + 0.96, + 0.98, + 0.99, + 0.99, + 1.0, + 1.0 + ] + }, + "sheet_1": { + "upper_rows": { + "1999": [ + 1000000.0, + 0.7, + 700000.0, + 700000.0, + 0.0, + 0.7, + 700000.0, + 700000.0, + 0.0 + ], + "2000": [ + 1050000.0, + 0.7, + 735000.0, + 735000.0, + 0.0, + 0.7, + 735000.0, + 735000.0, + 0.0 + ], + "2001": [ + 1102500.0, + 0.7, + 771750.0, + 771750.0, + 0.0, + 0.7, + 771750.0, + 771750.0, + 0.0 + ], + "2002": [ + 1157625.0, + 0.7, + 810338.0, + 810338.0, + 0.0, + 0.7, + 810338.0, + 810338.0, + 0.0 + ], + "2003": [ + 1215506.0, + 0.7, + 850854.0, + 842346.0, + 8509.0, + 0.7, + 850854.0, + 842346.0, + 8509.0 + ], + "2004": [ + 1276282.0, + 0.7, + 893397.0, + 884463.0, + 8934.0, + 0.8, + 1021025.0, + 1010815.0, + 10210.0 + ], + "2005": [ + 1340096.0, + 0.7, + 938067.0, + 919306.0, + 18761.0, + 0.85, + 1139081.0, + 1116300.0, + 22782.0 + ], + "2006": [ + 1407100.0, + 0.7, + 984970.0, + 935722.0, + 49249.0, + 0.9, + 1266390.0, + 1203071.0, + 63320.0 + ], + "2007": [ + 1477455.0, + 0.7, + 1034219.0, + 930797.0, + 103422.0, + 0.95, + 1403583.0, + 1263224.0, + 140358.0 + ], + "2008": [ + 1551328.0, + 0.7, + 1085930.0, + 836166.0, + 249764.0, + 1.0, + 1551328.0, + 1194523.0, + 356805.0 + ] + }, + "upper_total": [ + 12577893.0, + 8804525.0, + 8365887.0, + 438638.0, + 10249350.0, + 9647366.0, + 601984.0 + ], + "lower_rows": { + "1999": [ + 1000000.0, + 0.7, + 700000.0, + 700000.0, + 0.0, + 0.7, + 700000.0, + 700000.0, + 0.0 + ], + "2000": [ + 1050000.0, + 0.7, + 735000.0, + 735000.0, + 0.0, + 0.7, + 735000.0, + 735000.0, + 0.0 + ], + "2001": [ + 1102500.0, + 0.7, + 771750.0, + 771750.0, + 0.0, + 0.7, + 771750.0, + 771750.0, + 0.0 + ], + "2002": [ + 1157625.0, + 0.7, + 810338.0, + 810338.0, + 0.0, + 0.7, + 810338.0, + 810338.0, + 0.0 + ], + "2003": [ + 1215506.0, + 0.7, + 850854.0, + 842346.0, + 8509.0, + 0.7, + 850854.0, + 842346.0, + 8509.0 + ], + "2004": [ + 1276282.0, + 0.7, + 893397.0, + 884463.0, + 8934.0, + 0.8, + 1021025.0, + 1010815.0, + 10210.0 + ], + "2005": [ + 1340096.0, + 0.7, + 938067.0, + 933377.0, + 4690.0, + 0.85, + 1139081.0, + 1133386.0, + 5695.0 + ], + "2006": [ + 1407100.0, + 0.7, + 984970.0, + 962808.0, + 22162.0, + 0.9, + 1266390.0, + 1237897.0, + 28494.0 + ], + "2007": [ + 1477455.0, + 0.7, + 1034219.0, + 979922.0, + 54296.0, + 0.95, + 1403583.0, + 1329895.0, + 73688.0 + ], + "2008": [ + 1551328.0, + 0.7, + 1085930.0, + 931185.0, + 154745.0, + 1.0, + 1551328.0, + 1330264.0, + 221064.0 + ] + }, + "lower_total": [ + 12577893.0, + 8804525.0, + 8551189.0, + 253336.0, + 10249350.0, + 9901689.0, + 347660.0 + ] + }, + "sheet_10": { + "Steady-State": { + "rows": { + "1999": [ + 120.0, + 700000.0, + 700000.0, + 0.0, + 1.0, + 1.0, + 700000.0, + 700000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 735000.0, + 735000.0, + 0.0, + 1.0, + 1.0, + 735000.0, + 735000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 771750.0, + 764033.0, + 7718.0, + 1.0, + 1.01, + 771750.0, + 771750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 810338.0, + 802234.0, + 8103.0, + 1.0, + 1.01, + 810338.0, + 810338.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 842346.0, + 833837.0, + 8509.0, + 1.01, + 1.02, + 850854.0, + 850854.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 884463.0, + 857661.0, + 26802.0, + 1.01, + 1.042, + 893397.0, + 893397.0, + 8934.0, + 8934.0, + 8934.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 919306.0, + 863022.0, + 56284.0, + 1.02, + 1.087, + 938067.0, + 938067.0, + 18761.0, + 18761.0, + 18761.0, + 0.0, + 0.0 + ], + "2006": [ + 36.0, + 935722.0, + 827375.0, + 108347.0, + 1.053, + 1.19, + 984970.0, + 984970.0, + 49249.0, + 49249.0, + 49249.0, + 0.0, + 0.0 + ], + "2007": [ + 24.0, + 930797.0, + 734295.0, + 196502.0, + 1.111, + 1.408, + 1034219.0, + 1034219.0, + 103422.0, + 103422.0, + 103422.0, + 0.0, + 0.0 + ], + "2008": [ + 12.0, + 836166.0, + 456090.0, + 380075.0, + 1.299, + 2.381, + 1085930.0, + 1085930.0, + 249764.0, + 249764.0, + 249764.0, + 0.0, + 0.0 + ] + }, + "total": [ + 8365887.0, + 7573548.0, + 792339.0, + 8804525.0, + 8804525.0, + 438638.0, + 438638.0, + 438638.0, + 0.0, + 0.0 + ] + }, + "Increasing Claim Ratios": { + "rows": { + "1999": [ + 120.0, + 700000.0, + 700000.0, + 0.0, + 1.0, + 1.0, + 700000.0, + 700000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 735000.0, + 735000.0, + 0.0, + 1.0, + 1.0, + 735000.0, + 735000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 771750.0, + 764033.0, + 7718.0, + 1.0, + 1.01, + 771750.0, + 771750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 810338.0, + 802234.0, + 8103.0, + 1.0, + 1.01, + 810338.0, + 810338.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 842346.0, + 833837.0, + 8509.0, + 1.01, + 1.02, + 850854.0, + 850854.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 1010815.0, + 980184.0, + 30631.0, + 1.01, + 1.042, + 1021025.0, + 1021025.0, + 10210.0, + 10210.0, + 10210.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 1116300.0, + 1047955.0, + 68345.0, + 1.02, + 1.087, + 1139081.0, + 1139081.0, + 22782.0, + 22782.0, + 22782.0, + 0.0, + 0.0 + ], + "2006": [ + 36.0, + 1203071.0, + 1063768.0, + 139303.0, + 1.053, + 1.19, + 1266390.0, + 1266390.0, + 63320.0, + 63320.0, + 63320.0, + 0.0, + 0.0 + ], + "2007": [ + 24.0, + 1263224.0, + 996544.0, + 266681.0, + 1.111, + 1.408, + 1403583.0, + 1403583.0, + 140358.0, + 140358.0, + 140358.0, + 0.0, + 0.0 + ], + "2008": [ + 12.0, + 1194523.0, + 651558.0, + 542965.0, + 1.299, + 2.381, + 1551328.0, + 1551328.0, + 356805.0, + 356805.0, + 356805.0, + 0.0, + 0.0 + ] + }, + "total": [ + 9647366.0, + 8575112.0, + 1072254.0, + 10249350.0, + 10249350.0, + 601984.0, + 601984.0, + 601984.0, + 0.0, + 0.0 + ] + } + }, + "sheet_11": { + "Increasing Case Outstanding Strength": { + "rows": { + "1999": [ + 120.0, + 700000.0, + 700000.0, + 0.0, + 1.0, + 1.0, + 700000.0, + 700000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 735000.0, + 735000.0, + 0.0, + 1.0, + 1.0, + 735000.0, + 735000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 771750.0, + 764033.0, + 7718.0, + 1.0, + 1.01, + 771750.0, + 771750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 810338.0, + 802234.0, + 8103.0, + 1.0, + 1.01, + 810338.0, + 810338.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 842346.0, + 833837.0, + 8509.0, + 1.01, + 1.02, + 850854.0, + 850854.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 884463.0, + 857661.0, + 26802.0, + 1.01, + 1.042, + 893397.0, + 893397.0, + 8934.0, + 8934.0, + 8934.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 933377.0, + 863022.0, + 70355.0, + 1.02, + 1.087, + 951656.0, + 938067.0, + 18279.0, + 4690.0, + 4690.0, + -13589.0, + 0.0 + ], + "2006": [ + 36.0, + 962808.0, + 827375.0, + 135433.0, + 1.055, + 1.19, + 1015302.0, + 984970.0, + 52493.0, + 22162.0, + 22162.0, + -30331.0, + 0.0 + ], + "2007": [ + 24.0, + 979922.0, + 734295.0, + 245627.0, + 1.119, + 1.408, + 1096235.0, + 1034219.0, + 116313.0, + 54296.0, + 54296.0, + -62017.0, + 0.0 + ], + "2008": [ + 12.0, + 931185.0, + 456090.0, + 475094.0, + 1.318, + 2.381, + 1227589.0, + 1085930.0, + 296404.0, + 154745.0, + 154745.0, + -141659.0, + 0.0 + ] + }, + "total": [ + 8551189.0, + 7573548.0, + 977641.0, + 9052121.0, + 8804525.0, + 500932.0, + 253336.0, + 253336.0, + -247596.0, + 0.0 + ] + }, + "Increasing Claim Ratios and Case Outstanding Strength": { + "rows": { + "1999": [ + 120.0, + 700000.0, + 700000.0, + 0.0, + 1.0, + 1.0, + 700000.0, + 700000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 735000.0, + 735000.0, + 0.0, + 1.0, + 1.0, + 735000.0, + 735000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 771750.0, + 764033.0, + 7718.0, + 1.0, + 1.01, + 771750.0, + 771750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 810338.0, + 802234.0, + 8103.0, + 1.0, + 1.01, + 810338.0, + 810338.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 842346.0, + 833837.0, + 8509.0, + 1.01, + 1.02, + 850854.0, + 850854.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 1010815.0, + 980184.0, + 30631.0, + 1.01, + 1.042, + 1021025.0, + 1021025.0, + 10210.0, + 10210.0, + 10210.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 1133386.0, + 1047955.0, + 85431.0, + 1.019, + 1.087, + 1155482.0, + 1139081.0, + 22096.0, + 5695.0, + 5695.0, + -16400.0, + 0.0 + ], + "2006": [ + 36.0, + 1237897.0, + 1063768.0, + 174129.0, + 1.055, + 1.19, + 1305639.0, + 1266390.0, + 67742.0, + 28494.0, + 28494.0, + -39248.0, + 0.0 + ], + "2007": [ + 24.0, + 1329895.0, + 996544.0, + 333351.0, + 1.12, + 1.408, + 1488874.0, + 1403583.0, + 158980.0, + 73688.0, + 73688.0, + -85292.0, + 0.0 + ], + "2008": [ + 12.0, + 1330264.0, + 651558.0, + 678706.0, + 1.32, + 2.381, + 1756504.0, + 1551328.0, + 426240.0, + 221064.0, + 221064.0, + -205176.0, + 0.0 + ] + }, + "total": [ + 9901689.0, + 8575112.0, + 1326577.0, + 10595466.0, + 10249350.0, + 693777.0, + 347660.0, + 347660.0, + -346116.0, + 0.0 + ] + } + } + }, + "exhibit_iv": { + "sheet_2": { + "triangle": { + "1999": [ + 1011000.0, + 1254000.0, + 1377000.0, + 1454000.0, + 1477000.0, + 1493000.0, + 1500000.0, + 1500000.0, + 1500000.0, + 1500000.0 + ], + "2000": [ + 1061550.0, + 1316700.0, + 1445850.0, + 1526700.0, + 1550850.0, + 1567650.0, + 1575000.0, + 1575000.0, + 1575000.0 + ], + "2001": [ + 1114628.0, + 1382535.0, + 1518143.0, + 1603035.0, + 1628393.0, + 1646033.0, + 1653750.0, + 1653750.0 + ], + "2002": [ + 1170359.0, + 1451662.0, + 1594050.0, + 1683187.0, + 1709812.0, + 1728334.0, + 1736438.0 + ], + "2003": [ + 1228877.0, + 1524245.0, + 1673752.0, + 1767346.0, + 1795303.0, + 1814751.0 + ], + "2004": [ + 1290321.0, + 1600457.0, + 1757440.0, + 1855713.0, + 1885068.0 + ], + "2005": [ + 1354837.0, + 1680480.0, + 1845312.0, + 1948499.0 + ], + "2006": [ + 1422579.0, + 1764504.0, + 1937577.0 + ], + "2007": [ + 1493707.0, + 1852729.0 + ], + "2008": [ + 1568393.0 + ] + }, + "age_to_age": { + "1999": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0 + ], + "2001": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0 + ], + "2002": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005 + ], + "2003": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011 + ], + "2004": [ + 1.24, + 1.098, + 1.056, + 1.016 + ], + "2005": [ + 1.24, + 1.098, + 1.056 + ], + "2006": [ + 1.24, + 1.098 + ], + "2007": [ + 1.24 + ] + }, + "latest_5_volume_weighted": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.484, + 1.196, + 1.089, + 1.032, + 1.016, + 1.005, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.674, + 0.836, + 0.9179999999999999, + 0.9690000000000001, + 0.985, + 0.995, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_3": { + "triangle": { + "1999": [ + 470000.0, + 865000.0, + 1124000.0, + 1300000.0, + 1400000.0, + 1446000.0, + 1469000.0, + 1477000.0, + 1492000.0, + 1500000.0 + ], + "2000": [ + 493500.0, + 908250.0, + 1180200.0, + 1365000.0, + 1470000.0, + 1518300.0, + 1542450.0, + 1550850.0, + 1566600.0 + ], + "2001": [ + 518175.0, + 953663.0, + 1239210.0, + 1433250.0, + 1543500.0, + 1594215.0, + 1619573.0, + 1628393.0 + ], + "2002": [ + 544084.0, + 1001346.0, + 1301171.0, + 1504913.0, + 1620675.0, + 1673926.0, + 1700551.0 + ], + "2003": [ + 571288.0, + 1051413.0, + 1366229.0, + 1580158.0, + 1701709.0, + 1757622.0 + ], + "2004": [ + 599852.0, + 1103984.0, + 1434540.0, + 1659166.0, + 1786794.0 + ], + "2005": [ + 629845.0, + 1159183.0, + 1506268.0, + 1742124.0 + ], + "2006": [ + 661337.0, + 1217142.0, + 1581581.0 + ], + "2007": [ + 694404.0, + 1277999.0 + ], + "2008": [ + 729124.0 + ] + }, + "age_to_age": { + "1999": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005 + ], + "2000": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01 + ], + "2001": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005 + ], + "2002": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016 + ], + "2003": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033 + ], + "2004": [ + 1.84, + 1.299, + 1.157, + 1.077 + ], + "2005": [ + 1.84, + 1.299, + 1.157 + ], + "2006": [ + 1.84, + 1.299 + ], + "2007": [ + 1.84 + ] + }, + "latest_5_volume_weighted": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005 + ], + "selected_ldf": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005, + 1.0 + ], + "cdf_to_ultimate": [ + 3.191, + 1.734, + 1.335, + 1.154, + 1.071, + 1.037, + 1.021, + 1.016, + 1.005, + 1.0 + ], + "percent_developed": [ + 0.313, + 0.5770000000000001, + 0.7490000000000001, + 0.867, + 0.9329999999999999, + 0.9640000000000001, + 0.9790000000000001, + 0.985, + 0.995, + 1.0 + ] + }, + "sheet_4": { + "triangle": { + "1999": [ + 1011000.0, + 1254000.0, + 1377000.0, + 1454000.0, + 1477000.0, + 1493000.0, + 1500000.0, + 1500000.0, + 1500000.0, + 1500000.0 + ], + "2000": [ + 1061550.0, + 1316700.0, + 1445850.0, + 1526700.0, + 1550850.0, + 1567650.0, + 1575000.0, + 1575000.0, + 1575000.0 + ], + "2001": [ + 1114628.0, + 1382535.0, + 1518143.0, + 1603035.0, + 1628393.0, + 1646033.0, + 1653750.0, + 1653750.0 + ], + "2002": [ + 1170359.0, + 1451662.0, + 1594050.0, + 1683187.0, + 1709812.0, + 1728334.0, + 1736438.0 + ], + "2003": [ + 1228877.0, + 1524245.0, + 1673752.0, + 1767346.0, + 1795303.0, + 1814751.0 + ], + "2004": [ + 1290321.0, + 1600457.0, + 1757440.0, + 1855713.0, + 1885068.0 + ], + "2005": [ + 1505438.0, + 1879580.0, + 2072490.0, + 2193545.0 + ], + "2006": [ + 1776491.0, + 2232389.0, + 2471446.0 + ], + "2007": [ + 2119832.0, + 2680487.0 + ], + "2008": [ + 2556695.0 + ] + }, + "age_to_age": { + "1999": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0 + ], + "2000": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0 + ], + "2001": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005, + 1.0 + ], + "2002": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011, + 1.005 + ], + "2003": [ + 1.24, + 1.098, + 1.056, + 1.016, + 1.011 + ], + "2004": [ + 1.24, + 1.098, + 1.056, + 1.016 + ], + "2005": [ + 1.249, + 1.103, + 1.058 + ], + "2006": [ + 1.257, + 1.107 + ], + "2007": [ + 1.264 + ] + }, + "latest_5_volume_weighted": [ + 1.252, + 1.101, + 1.057, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0 + ], + "selected_ldf": [ + 1.252, + 1.101, + 1.057, + 1.016, + 1.011, + 1.005, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "cdf_to_ultimate": [ + 1.503, + 1.2, + 1.09, + 1.032, + 1.016, + 1.005, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "percent_developed": [ + 0.665, + 0.833, + 0.917, + 0.9690000000000001, + 0.985, + 0.995, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "sheet_5": { + "triangle": { + "1999": [ + 470000.0, + 865000.0, + 1124000.0, + 1300000.0, + 1400000.0, + 1446000.0, + 1469000.0, + 1477000.0, + 1492000.0, + 1500000.0 + ], + "2000": [ + 493500.0, + 908250.0, + 1180200.0, + 1365000.0, + 1470000.0, + 1518300.0, + 1542450.0, + 1550850.0, + 1566600.0 + ], + "2001": [ + 518175.0, + 953663.0, + 1239210.0, + 1433250.0, + 1543500.0, + 1594215.0, + 1619573.0, + 1628393.0 + ], + "2002": [ + 544084.0, + 1001346.0, + 1301171.0, + 1504913.0, + 1620675.0, + 1673926.0, + 1700551.0 + ], + "2003": [ + 571288.0, + 1051413.0, + 1366229.0, + 1580158.0, + 1701709.0, + 1757622.0 + ], + "2004": [ + 599852.0, + 1103984.0, + 1434540.0, + 1659166.0, + 1786794.0 + ], + "2005": [ + 686001.0, + 1276601.0, + 1677289.0, + 1951435.0 + ], + "2006": [ + 793305.0, + 1493074.0, + 1983482.0 + ], + "2007": [ + 927874.0, + 1766164.0 + ], + "2008": [ + 1097644.0 + ] + }, + "age_to_age": { + "1999": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005 + ], + "2000": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01 + ], + "2001": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016, + 1.005 + ], + "2002": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033, + 1.016 + ], + "2003": [ + 1.84, + 1.299, + 1.157, + 1.077, + 1.033 + ], + "2004": [ + 1.84, + 1.299, + 1.157, + 1.077 + ], + "2005": [ + 1.861, + 1.314, + 1.163 + ], + "2006": [ + 1.882, + 1.328 + ], + "2007": [ + 1.903 + ] + }, + "latest_5_volume_weighted": [ + 1.87, + 1.31, + 1.158, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005 + ], + "selected_ldf": [ + 1.87, + 1.31, + 1.158, + 1.077, + 1.033, + 1.016, + 1.005, + 1.01, + 1.005, + 1.0 + ], + "cdf_to_ultimate": [ + 3.273, + 1.75, + 1.336, + 1.154, + 1.071, + 1.037, + 1.021, + 1.016, + 1.005, + 1.0 + ], + "percent_developed": [ + 0.306, + 0.5710000000000001, + 0.748, + 0.867, + 0.9329999999999999, + 0.9640000000000001, + 0.9790000000000001, + 0.985, + 0.995, + 1.0 + ] + }, + "sheet_1": { + "Steady-State (No Change in Product Mix)": { + "rows": { + "1999": [ + 1000000.0, + 1000000.0, + 2000000.0, + 0.7, + 0.8, + 0.75, + 700000.0, + 800000.0, + 1500000.0, + 1500000.0, + 0.0 + ], + "2000": [ + 1050000.0, + 1050000.0, + 2100000.0, + 0.7, + 0.8, + 0.75, + 735000.0, + 840000.0, + 1575000.0, + 1575000.0, + 0.0 + ], + "2001": [ + 1102500.0, + 1102500.0, + 2205000.0, + 0.7, + 0.8, + 0.75, + 771750.0, + 882000.0, + 1653750.0, + 1653750.0, + 0.0 + ], + "2002": [ + 1157625.0, + 1157625.0, + 2315250.0, + 0.7, + 0.8, + 0.75, + 810338.0, + 926100.0, + 1736438.0, + 1736438.0, + 0.0 + ], + "2003": [ + 1215506.0, + 1215506.0, + 2431013.0, + 0.7, + 0.8, + 0.75, + 850854.0, + 972405.0, + 1823259.0, + 1814751.0, + 8509.0 + ], + "2004": [ + 1276282.0, + 1276282.0, + 2552563.0, + 0.7, + 0.8, + 0.75, + 893397.0, + 1021025.0, + 1914422.0, + 1885068.0, + 29354.0 + ], + "2005": [ + 1340096.0, + 1340096.0, + 2680191.0, + 0.7, + 0.8, + 0.75, + 938067.0, + 1072077.0, + 2010143.0, + 1948499.0, + 61644.0 + ], + "2006": [ + 1407100.0, + 1407100.0, + 2814201.0, + 0.7, + 0.8, + 0.75, + 984970.0, + 1125680.0, + 2110651.0, + 1937577.0, + 173073.0 + ], + "2007": [ + 1477455.0, + 1477455.0, + 2954911.0, + 0.7, + 0.8, + 0.75, + 1034219.0, + 1181964.0, + 2216183.0, + 1852729.0, + 363454.0 + ], + "2008": [ + 1551328.0, + 1551328.0, + 3102656.0, + 0.7, + 0.8, + 0.75, + 1085930.0, + 1241063.0, + 2326992.0, + 1568393.0, + 758599.0 + ] + }, + "total": [ + 12577893.0, + 12577893.0, + 25155785.0, + 8804525.0, + 10062314.0, + 18866839.0, + 17472204.0, + 1394634.0 + ] + }, + "Changing Product Mix": { + "rows": { + "1999": [ + 1000000.0, + 1000000.0, + 2000000.0, + 0.7, + 0.8, + 0.75, + 700000.0, + 800000.0, + 1500000.0, + 1500000.0, + 0.0 + ], + "2000": [ + 1050000.0, + 1050000.0, + 2100000.0, + 0.7, + 0.8, + 0.75, + 735000.0, + 840000.0, + 1575000.0, + 1575000.0, + 0.0 + ], + "2001": [ + 1102500.0, + 1102500.0, + 2205000.0, + 0.7, + 0.8, + 0.75, + 771750.0, + 882000.0, + 1653750.0, + 1653750.0, + 0.0 + ], + "2002": [ + 1157625.0, + 1157625.0, + 2315250.0, + 0.7, + 0.8, + 0.75, + 810338.0, + 926100.0, + 1736438.0, + 1736438.0, + 0.0 + ], + "2003": [ + 1215506.0, + 1215506.0, + 2431013.0, + 0.7, + 0.8, + 0.75, + 850854.0, + 972405.0, + 1823259.0, + 1814751.0, + 8509.0 + ], + "2004": [ + 1276282.0, + 1276282.0, + 2552563.0, + 0.7, + 0.8, + 0.75, + 893397.0, + 1021025.0, + 1914422.0, + 1885068.0, + 29354.0 + ], + "2005": [ + 1340096.0, + 1659166.0, + 2999262.0, + 0.7, + 0.8, + 0.755, + 938067.0, + 1327333.0, + 2265400.0, + 2193545.0, + 71855.0 + ], + "2006": [ + 1407100.0, + 2156916.0, + 3564016.0, + 0.7, + 0.8, + 0.7609999999999999, + 984970.0, + 1725533.0, + 2710503.0, + 2471446.0, + 239057.0 + ], + "2007": [ + 1477455.0, + 2803991.0, + 4281446.0, + 0.7, + 0.8, + 0.765, + 1034219.0, + 2243192.0, + 3277411.0, + 2680487.0, + 596924.0 + ], + "2008": [ + 1551328.0, + 3645188.0, + 5196516.0, + 0.7, + 0.8, + 0.77, + 1085930.0, + 2916150.0, + 4002080.0, + 2556695.0, + 1445385.0 + ] + }, + "total": [ + 12577893.0, + 17067173.0, + 29645066.0, + 8804525.0, + 13653738.0, + 22458263.0, + 20067179.0, + 2391084.0 + ] + } + }, + "sheet_6": { + "Steady-State (No Change in Product Mix)": { + "rows": { + "1999": [ + 120.0, + 1500000.0, + 1500000.0, + 0.0, + 1.0, + 1.0, + 1500000.0, + 1500000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 1575000.0, + 1566600.0, + 8400.0, + 1.0, + 1.005, + 1575000.0, + 1575000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 1653750.0, + 1628393.0, + 25358.0, + 1.0, + 1.016, + 1653750.0, + 1653750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 1736438.0, + 1700551.0, + 35886.0, + 1.0, + 1.021, + 1736438.0, + 1736438.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 1814751.0, + 1757622.0, + 57129.0, + 1.005, + 1.037, + 1823259.0, + 1823259.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 1885068.0, + 1786794.0, + 98274.0, + 1.016, + 1.071, + 1914422.0, + 1914422.0, + 29354.0, + 29354.0, + 29354.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 1948499.0, + 1742124.0, + 206375.0, + 1.032, + 1.154, + 2010143.0, + 2010143.0, + 61644.0, + 61644.0, + 61644.0, + 0.0, + 0.0 + ], + "2006": [ + 36.0, + 1937577.0, + 1581581.0, + 355996.0, + 1.089, + 1.335, + 2110651.0, + 2110651.0, + 173073.0, + 173073.0, + 173073.0, + 0.0, + 0.0 + ], + "2007": [ + 24.0, + 1852729.0, + 1277999.0, + 574730.0, + 1.196, + 1.734, + 2216183.0, + 2216183.0, + 363454.0, + 363454.0, + 363454.0, + 0.0, + 0.0 + ], + "2008": [ + 12.0, + 1568393.0, + 729124.0, + 839269.0, + 1.484, + 3.191, + 2326992.0, + 2326992.0, + 758599.0, + 758599.0, + 758599.0, + 0.0, + 0.0 + ] + }, + "total": [ + 17472204.0, + 15270788.0, + 2201416.0, + 18866839.0, + 18866839.0, + 1394634.0, + 1394634.0, + 1394634.0, + 0.0, + 0.0 + ] + }, + "Changing Product Mix": { + "rows": { + "1999": [ + 120.0, + 1500000.0, + 1500000.0, + 0.0, + 1.0, + 1.0, + 1500000.0, + 1500000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2000": [ + 108.0, + 1575000.0, + 1566600.0, + 8400.0, + 1.0, + 1.005, + 1575000.0, + 1575000.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2001": [ + 96.0, + 1653750.0, + 1628393.0, + 25358.0, + 1.0, + 1.016, + 1653750.0, + 1653750.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2002": [ + 84.0, + 1736438.0, + 1700551.0, + 35886.0, + 1.0, + 1.021, + 1736438.0, + 1736438.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "2003": [ + 72.0, + 1814751.0, + 1757622.0, + 57129.0, + 1.005, + 1.037, + 1823259.0, + 1823259.0, + 8509.0, + 8509.0, + 8509.0, + 0.0, + 0.0 + ], + "2004": [ + 60.0, + 1885068.0, + 1786794.0, + 98274.0, + 1.016, + 1.071, + 1914422.0, + 1914422.0, + 29354.0, + 29354.0, + 29354.0, + 0.0, + 0.0 + ], + "2005": [ + 48.0, + 2193545.0, + 1951435.0, + 242111.0, + 1.032, + 1.154, + 2262942.0, + 2251655.0, + 69397.0, + 58110.0, + 71855.0, + 2458.0, + 13745.0 + ], + "2006": [ + 36.0, + 2471446.0, + 1983482.0, + 487964.0, + 1.09, + 1.336, + 2693735.0, + 2650749.0, + 222289.0, + 179303.0, + 239057.0, + 16768.0, + 59754.0 + ], + "2007": [ + 24.0, + 2680487.0, + 1766164.0, + 914323.0, + 1.2, + 1.75, + 3217775.0, + 3091666.0, + 537288.0, + 411179.0, + 596924.0, + 59636.0, + 185746.0 + ], + "2008": [ + 12.0, + 2556695.0, + 1097644.0, + 1459051.0, + 1.503, + 3.273, + 3842645.0, + 3592939.0, + 1285950.0, + 1036245.0, + 1445385.0, + 159435.0, + 409141.0 + ] + }, + "total": [ + 20067179.0, + 16738684.0, + 3328495.0, + 22219966.0, + 21789878.0, + 2152787.0, + 1722699.0, + 2391084.0, + 238297.0, + 668386.0 + ] + } + } + } +} \ No newline at end of file From 487c741354a7e16e434dd9934e0b3da469647272 Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Tue, 11 Aug 2026 23:24:34 -0400 Subject: [PATCH 07/11] Some cosmetic amendments to notebook --- docs/friedland/chapter_7_part_2.ipynb | 8141 ++++++++++--------------- 1 file changed, 3385 insertions(+), 4756 deletions(-) diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index 0bd56bb9c..9b901a82a 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 107, "id": "f42e0344", "metadata": {}, "outputs": [], @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 108, "id": "5595108e", "metadata": {}, "outputs": [], @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 109, "id": "79e5ac39", "metadata": { "tags": [ @@ -149,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 110, "id": "99de7a11", "metadata": { "tags": [ @@ -318,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 111, "id": "06a03be7", "metadata": {}, "outputs": [ @@ -343,25 +343,25 @@ "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", @@ -378,142 +378,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Steady StateIncreasing Claim RatiosSteady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -524,25 +524,25 @@ "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", @@ -559,142 +559,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding StrengthIncreasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -737,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 112, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -957,135 +957,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1339,7 +1339,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 113, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -1559,135 +1559,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1942,7 +1942,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 114, "id": "35744cce", "metadata": {}, "outputs": [ @@ -2162,135 +2162,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2545,7 +2545,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 115, "id": "8d9a4359", "metadata": {}, "outputs": [ @@ -2765,135 +2765,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3148,7 +3148,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 116, "id": "0ab5bcf6", "metadata": {}, "outputs": [ @@ -3368,135 +3368,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3751,7 +3751,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 117, "id": "5a759ad5", "metadata": {}, "outputs": [ @@ -3971,135 +3971,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4354,7 +4354,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 118, "id": "ec0b53a5", "metadata": {}, "outputs": [ @@ -4574,135 +4574,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4957,7 +4957,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 119, "id": "16a0f5fd", "metadata": {}, "outputs": [ @@ -5177,135 +5177,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5550,7 +5550,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 120, "id": "191822b3", "metadata": { "tags": [ @@ -5725,7 +5725,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 121, "id": "1bbad6f0", "metadata": {}, "outputs": [ @@ -5753,7 +5753,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 122, "id": "e0f134ea", "metadata": {}, "outputs": [ @@ -5774,23 +5774,23 @@ "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", @@ -5811,186 +5811,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,639051999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6013,23 +6013,23 @@ "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", @@ -6050,186 +6050,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,984011999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6252,23 +6252,23 @@ "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", @@ -6289,934 +6289,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,59551999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "result = Ex3Sht10(\"Steady State\", triangles)\n", - "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Steady-State\"][\"rows\"],\n", - ")\n", - "\n", - "result = Ex3Sht10(\"Increasing Claim\", triangles)\n", - "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Increasing Claim Ratios\"][\"rows\"],\n", - ")\n", - "\n", - "result = Ex3Sht10(\"Increasing Case\", triangles)\n", - "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_11\"][\"Increasing Case Outstanding Strength\"][\"rows\"],\n", - ")\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "48f63e22", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

Exhibit III Sheets 10 and 11 — Steady State

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - " \n", - " \n", - " \n", - "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

Exhibit III Sheets 10 and 11 — Increasing Claim

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - " \n", - " \n", - " \n", - "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

Exhibit III Sheets 10 and 11 — Increasing Case

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - " \n", - " \n", - " \n", - "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n" - ], - "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7239,23 +6491,23 @@ "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", @@ -7276,186 +6528,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,11811999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,1181
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7463,12 +6715,35 @@ } ], "source": [ - "scenarios = [\"Steady State\",\"Increasing Claim\",\"Increasing Case\",\"Increasing Claim Case\"]\n", + "result = Ex3Sht10(\"Steady State\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Steady-State\"][\"rows\"],\n", + ")\n", + "\n", + "result = Ex3Sht10(\"Increasing Claim\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Increasing Claim Ratios\"][\"rows\"],\n", + ")\n", "\n", + "result = Ex3Sht10(\"Increasing Case\", triangles)\n", + "\n", + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_11\"][\"Increasing Case Outstanding Strength\"][\"rows\"],\n", + ")\n", "\n", + "result = Ex3Sht10(\"Increasing Claim Case\", triangles)\n", "\n", - "for scenario in scenarios:\n", - " Ex3Sht10(scenario, triangles)" + "friedland_assertions.assert_ex3_sheet10_or_11(\n", + " result,\n", + " friedland[\"exhibit_iii\"][\"sheet_11\"][\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\"\n", + " ][\"rows\"],\n", + ")" ] }, { @@ -7487,7 +6762,7 @@ }, { "cell_type": "code", - "execution_count": 197, + "execution_count": 123, "id": "8d88d02f", "metadata": {}, "outputs": [], @@ -7508,7 +6783,7 @@ }, { "cell_type": "code", - "execution_count": 231, + "execution_count": 124, "id": "3db66603", "metadata": {}, "outputs": [], @@ -7624,806 +6899,54 @@ "\n", " results = results.set_index(\"Accident Year\")\n", "\n", - " total_cols = [\n", - " \"Priv Pass Auto\",\n", - " \"Comm Auto\",\n", - " \"Total\",\n", - " \"Reported Claims as at 12/31/2008\",\n", - " \"Actual IBNR\",\n", - " ]\n", - "\n", - " results.loc[\"Total\", total_cols] = results[total_cols].sum()\n", - "\n", - " display(HTML(f\"

Exhibit IV, Sheet 1 — {scenario}

\"))\n", - "\n", - " display(\n", - " results.style.format(format_dict, na_rep=\"\").set_table_styles([\n", - " {\n", - " \"selector\": \"th.col_heading\",\n", - " \"props\": [\n", - " (\"white-space\", \"normal\"),\n", - " (\"max-width\", \"80px\"),\n", - " ]\n", - " }\n", - " ])\n", - " )\n", - "\n", - " return results" - ] - }, - { - "cell_type": "markdown", - "id": "46324359", - "metadata": {}, - "source": [ - "Having defined the function, we generate Sheet 1, which contains the development of losses under the Steady State and Changing Product Mix scenarios (p. 125):" - ] - }, - { - "cell_type": "code", - "execution_count": 232, - "id": "346c3742", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

Exhibit IV, Sheet 1 — Steady State

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year           
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,634
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

Exhibit IV, Sheet 1 — Changing Product Mix

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year           
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,084
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "scenarios = [\"Steady State\", \"Changing Product Mix\"]\n", - "\n", - "for scenario in scenarios:\n", - " _ = Ex4Sht1(scenario, tri)" - ] - }, - { - "cell_type": "code", - "execution_count": 189, - "id": "b98e5e9c", - "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
19991,011,0001,254,0001,377,0001,454,0001,477,0001,493,0001,500,0001,500,0001,500,0001,500,000
20001,061,5501,316,7001,445,8501,526,7001,550,8501,567,6501,575,0001,575,0001,575,000
20011,114,6281,382,5351,518,1431,603,0351,628,3931,646,0331,653,7501,653,750
20021,170,3591,451,6621,594,0501,683,1871,709,8121,728,3341,736,438
20031,228,8771,524,2451,673,7521,767,3461,795,3031,814,751
20041,290,3211,600,4571,757,4401,855,7131,885,068
20051,354,8371,680,4801,845,3121,948,499
20061,422,5791,764,5041,937,577
20071,493,7071,852,729
20081,568,393
" - ], - "text/plain": [ - " 12 24 36 48 60 72 84 96 108 120\n", - "1999 1011000.0 1254000.0 1377000.0 1454000.0 1477000.0 1493000.0 1500000.0 1500000.0 1500000.0 1500000.0\n", - "2000 1061550.0 1316700.0 1445850.0 1526700.0 1550850.0 1567650.0 1575000.0 1575000.0 1575000.0 NaN\n", - "2001 1114628.0 1382535.0 1518143.0 1603035.0 1628393.0 1646033.0 1653750.0 1653750.0 NaN NaN\n", - "2002 1170359.0 1451662.0 1594050.0 1683187.0 1709812.0 1728334.0 1736438.0 NaN NaN NaN\n", - "2003 1228877.0 1524245.0 1673752.0 1767346.0 1795303.0 1814751.0 NaN NaN NaN NaN\n", - "2004 1290321.0 1600457.0 1757440.0 1855713.0 1885068.0 NaN NaN NaN NaN NaN\n", - "2005 1354837.0 1680480.0 1845312.0 1948499.0 NaN NaN NaN NaN NaN NaN\n", - "2006 1422579.0 1764504.0 1937577.0 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1493707.0 1852729.0 NaN NaN NaN NaN NaN NaN NaN NaN\n", - "2008 1568393.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
12-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.24041.09811.05591.01581.01081.00471.00001.00001.0000
20001.24041.09811.05591.01581.01081.00471.00001.0000
20011.24041.09811.05591.01581.01081.00471.0000
20021.24041.09811.05591.01581.01081.0047
20031.24041.09811.05591.01581.0108
20041.24041.09811.05591.0158
20051.24041.09811.0559
20061.24041.0981
20071.2404
" + " total_cols = [\n", + " \"Priv Pass Auto\",\n", + " \"Comm Auto\",\n", + " \"Total\",\n", + " \"Reported Claims as at 12/31/2008\",\n", + " \"Actual IBNR\",\n", + " ]\n", + "\n", + " results.loc[\"Total\", total_cols] = results[total_cols].sum()\n", + "\n", + " display(HTML(f\"

Exhibit IV, Sheet 1 — {scenario}

\"))\n", + "\n", + " display(\n", + " results.style.format(format_dict, na_rep=\"\").set_table_styles([\n", + " {\n", + " \"selector\": \"th.col_heading\",\n", + " \"props\": [\n", + " (\"white-space\", \"normal\"),\n", + " (\"max-width\", \"80px\"),\n", + " ]\n", + " }\n", + " ])\n", + " )\n", + "\n", + " return results" + ] + }, + { + "cell_type": "markdown", + "id": "46324359", + "metadata": {}, + "source": [ + "Having defined the function, we generate Sheet 1, which contains the development of losses under the Steady State and Changing Product Mix scenarios (p. 125):" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "346c3742", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Exhibit IV, Sheet 1 — Steady State

" ], "text/plain": [ - " 12-24 24-36 36-48 48-60 60-72 72-84 84-96 96-108 108-120\n", - "1999 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 1.0 1.0 1.0\n", - "2000 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 1.0 1.0 NaN\n", - "2001 1.240356 1.098086 1.055918 1.015819 1.010833 1.004688 1.0 NaN NaN\n", - "2002 1.240356 1.098086 1.055919 1.015818 1.010833 1.004689 NaN NaN NaN\n", - "2003 1.240356 1.098086 1.055919 1.015819 1.010833 NaN NaN NaN NaN\n", - "2004 1.240356 1.098086 1.055918 1.015819 NaN NaN NaN NaN NaN\n", - "2005 1.240356 1.098086 1.055918 NaN NaN NaN NaN NaN NaN\n", - "2006 1.240356 1.098086 NaN NaN NaN NaN NaN NaN NaN\n", - "2007 1.240356 NaN NaN NaN NaN NaN NaN NaN NaN" + "" ] }, "metadata": {}, @@ -8432,64 +6955,203 @@ { "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
2007
19991.0000
20001.0000
20011.0000
20021.0047
20031.0108
20041.0158
20051.0559 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
20061.0981Accident Year           
20071.240419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,634
" + "\n" ], "text/plain": [ - " 2007\n", - "1999 1.000000\n", - "2000 1.000000\n", - "2001 1.000000\n", - "2002 1.004689\n", - "2003 1.010833\n", - "2004 1.015819\n", - "2005 1.055918\n", - "2006 1.098086\n", - "2007 1.240356" + "" ] }, "metadata": {}, @@ -8498,64 +7160,215 @@ { "data": { "text/html": [ - "\n", + "

Exhibit IV, Sheet 1 — Changing Product Mix

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
2007
19991.0000
20001.0000
20011.0000
20021.0047
20031.0108
20041.0158
20051.0559 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
20061.0981Accident Year           
20071.240419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,084
" + "\n" ], "text/plain": [ - " 2007\n", - "1999 1.000000\n", - "2000 1.000000\n", - "2001 1.000000\n", - "2002 1.004689\n", - "2003 1.010833\n", - "2004 1.015819\n", - "2005 1.055918\n", - "2006 1.098086\n", - "2007 1.240356" + "" ] }, "metadata": {}, @@ -8563,35 +7376,23 @@ } ], "source": [ - "def format_col(x, reverse = False):\n", - " if reverse is True:\n", - " return x.to_frame().squeeze()[::-1].reset_index(drop=True)\n", - " return x.to_frame().squeeze().reset_index(drop=True)\n", - "\n", - "def col_diff(x, y):\n", - " return x.squeeze() - y.squeeze()\n", - "\n", - "def col_mult(x, y):\n", - " return x.squeeze() * y.squeeze()\n", - "\n", - "data = cl.load_sample(\"friedland_us_auto\")\n", - "\n", - "scenario = \"Steady State\" #(can be \"Steady State\" or \"Changing Product Mix\")\n", + "result = Ex4Sht1(\"Steady State\", data)\n", "\n", - "#Sheet 2\n", + "friedland_assertions.assert_ex4_sheet1(\n", + " result,\n", + " friedland[\"exhibit_iv\"][\"sheet_1\"][\n", + " \"Steady-State (No Change in Product Mix)\"\n", + " ][\"rows\"],\n", + ")\n", "\n", - "tri = data.loc[\"Steady State\"][\"Reported Claims\"]\n", + "result = Ex4Sht1(\"Changing Product Mix\", data)\n", "\n", - "#Part 1\n", - "display(tri)\n", - "#Part 2\n", - "display(tri.link_ratio)\n", - "#Part 3\n", - "dev = cl.Development(n_periods = 5, average = 'volume', preserve=1).fit_transform(tri)\n", - "display(dev.link_ratio.latest_diagonal)\n", - "#Part 4\n", - "display(dev.link_ratio.latest_diagonal)\n", - "\n" + "friedland_assertions.assert_ex4_sheet1(\n", + " result,\n", + " friedland[\"exhibit_iv\"][\"sheet_1\"][\n", + " \"Changing Product Mix\"\n", + " ][\"rows\"],\n", + ")" ] }, { @@ -8606,7 +7407,7 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 126, "id": "8a7c6e5d", "metadata": {}, "outputs": [ @@ -8826,135 +7627,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.24019991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.240
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -9183,7 +7984,18 @@ } ], "source": [ - "_ = dev_exhibit(data.loc[\"Steady State\", \"Reported Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " data.loc[\"Steady State\", \"Reported Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " data.loc[\"Steady State\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iv\"][\"sheet_2\"],\n", + ")" ] }, { @@ -9198,7 +8010,7 @@ }, { "cell_type": "code", - "execution_count": 191, + "execution_count": 127, "id": "8c9306e2", "metadata": {}, "outputs": [ @@ -9418,135 +8230,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.84019991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.840
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -9775,7 +8587,18 @@ } ], "source": [ - "_ = dev_exhibit(data.loc[\"Steady State\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " data.loc[\"Steady State\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " data.loc[\"Steady State\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iv\"][\"sheet_3\"],\n", + ")" ] }, { @@ -9790,7 +8613,7 @@ }, { "cell_type": "code", - "execution_count": 233, + "execution_count": 128, "id": "5c96f69e", "metadata": {}, "outputs": [ @@ -10010,135 +8833,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.26419991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.264
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10367,12 +9190,18 @@ } ], "source": [ - "_ = dev_exhibit(\n", + "devs = dev_exhibit(\n", " data.loc[\"Changing Product Mix\", \"Reported Claims\"],\n", " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )" + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " data.loc[\"Changing Product Mix\", \"Reported Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iv\"][\"sheet_4\"],\n", + ")" ] }, { @@ -10387,7 +9216,7 @@ }, { "cell_type": "code", - "execution_count": 193, + "execution_count": 129, "id": "e0cc72a6", "metadata": {}, "outputs": [ @@ -10607,135 +9436,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.90319991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.903
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10964,7 +9793,18 @@ } ], "source": [ - "_ = dev_exhibit(data.loc[\"Changing Product Mix\", \"Paid Claims\"],avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},selected_avg='volume_5',tail=1)" + "devs = dev_exhibit(\n", + " data.loc[\"Changing Product Mix\", \"Paid Claims\"],\n", + " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", + " selected_avg='volume_5',\n", + " tail=1\n", + " )\n", + "\n", + "friedland_assertions.assert_dev_exhibit(\n", + " data.loc[\"Changing Product Mix\", \"Paid Claims\"],\n", + " devs,\n", + " friedland[\"exhibit_iv\"][\"sheet_5\"],\n", + ")" ] }, { @@ -10979,7 +9819,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 130, "id": "768432dc", "metadata": {}, "outputs": [], @@ -11141,7 +9981,9 @@ "\n", " display(\n", " results.style.format(format_dict, na_rep=\"\")\n", - " )\n" + " )\n", + "\n", + " return results\n" ] }, { @@ -11154,7 +9996,7 @@ }, { "cell_type": "code", - "execution_count": 255, + "execution_count": 132, "id": "9b97c370", "metadata": {}, "outputs": [ @@ -11175,23 +10017,23 @@ "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", @@ -11212,186 +10054,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-0119991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-01
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -11414,23 +10256,23 @@ "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", @@ -11451,186 +10293,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,38319991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,383
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -11638,236 +10480,23 @@ } ], "source": [ - "scenarios = [\"Steady State\", \"Changing Product Mix\"]\n", - "triangles = data\n", + "result = Ex4Sht6(\"Steady State\", data)\n", "\n", - "for scenario in scenarios:\n", - " _ = Ex4Sht6(scenario, triangles)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "id": "04ea6834", - "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", - "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year             
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1001
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,35400
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,111-183,401-252,799-241,512
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303-360,796-583,085-540,099
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178-464,304-1,001,592-875,483
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,246-229,703-1,515,653-1,265,949
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "scenario = \"Changing Product Mix\"\n", - "triangles = data\n", - "Ex4Sht6(scenario, triangles)" + "friedland_assertions.assert_ex4_sheet6(\n", + " result,\n", + " friedland[\"exhibit_iv\"][\"sheet_6\"][\n", + " \"Steady-State (No Change in Product Mix)\"\n", + " ][\"rows\"],\n", + ")\n", + "\n", + "result = Ex4Sht6(\"Changing Product Mix\", data)\n", + "\n", + "friedland_assertions.assert_ex4_sheet6(\n", + " result,\n", + " friedland[\"exhibit_iv\"][\"sheet_6\"][\n", + " \"Changing Product Mix\"\n", + " ][\"rows\"],\n", + ")" ] } ], From d1f6c6a10c5cf5c56492e9a836577796339da4eb Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Tue, 11 Aug 2026 23:32:37 -0400 Subject: [PATCH 08/11] Removed unnecessary import in friedland_assertions.py to appease the Bugbot --- docs/friedland/friedland_assertions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/friedland/friedland_assertions.py b/docs/friedland/friedland_assertions.py index 69fd12127..f4c92b5f2 100644 --- a/docs/friedland/friedland_assertions.py +++ b/docs/friedland/friedland_assertions.py @@ -1,6 +1,5 @@ import json -from pathlib import Path import numpy as np import pandas as pd From 8b71b9c6c6b05e24a4321b25c25d8d811c150792 Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Wed, 12 Aug 2026 07:39:40 -0400 Subject: [PATCH 09/11] Move Friedland reconciliation assertions into notebook and remove vestigial files. --- docs/friedland/chapter_7_part_2.ipynb | 7050 +++++++++-------- docs/friedland/friedland_assertions.py | 240 - .../friedland_ch7_part2_reference.json | 3839 --------- 3 files changed, 3701 insertions(+), 7428 deletions(-) delete mode 100644 docs/friedland/friedland_assertions.py delete mode 100644 docs/friedland/friedland_ch7_part2_reference.json diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index 9b901a82a..e7bc6bafb 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 507, "id": "f42e0344", "metadata": {}, "outputs": [], @@ -23,8 +23,6 @@ "import numpy as np\n", "import pandas as pd\n", "\n", - "import friedland_assertions\n", - "\n", "pd.set_option(\"display.max_columns\", None)\n", "pd.set_option(\"display.width\", 1000)\n", "\n", @@ -34,14 +32,7 @@ " \"ignore\",\n", " message=r\"Some exclusions have been ignored\\..*link ratio\\(s\\) is required.*\",\n", " category=UserWarning,\n", - ")\n", - "\n", - "friedland = friedland_assertions.load_friedland_reference(\n", - " \"friedland_ch7_part2_reference.json\"\n", - ")\n", - "\n", - "\n", - "#pd.options.display.float_format = '{:,.0f}'.format" + ")\n" ] }, { @@ -68,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 508, "id": "5595108e", "metadata": {}, "outputs": [], @@ -86,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 509, "id": "79e5ac39", "metadata": { "tags": [ @@ -149,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 510, "id": "99de7a11", "metadata": { "tags": [ @@ -318,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 511, "id": "06a03be7", "metadata": {}, "outputs": [ @@ -343,25 +334,25 @@ "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", @@ -378,142 +369,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Steady StateIncreasing Claim RatiosSteady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -524,25 +515,25 @@ "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", @@ -559,142 +550,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding StrengthIncreasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -716,12 +707,101 @@ " triangles,\n", " dev_input,\n", " tail_input,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 512, + "id": "8f547560", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " res_up.loc[\n", + " res_up.index != \"Total\",\n", + " (\"Steady State\", [\"Ult. Claims\", \"Actual IBNR\"]),\n", + " ].values,\n", + " np.array([\n", + " [700000, 0],\n", + " [735000, 0],\n", + " [771750, 0],\n", + " [810338, 0],\n", + " [850854, 8509],\n", + " [893397, 8934],\n", + " [938067, 18761],\n", + " [984970, 49249],\n", + " [1034219, 103422],\n", + " [1085930, 249764],\n", + " ]),\n", + " atol=1,\n", + " rtol=0,\n", + ")\n", + "\n", + "assert np.allclose(\n", + " res_up.loc[\n", + " res_up.index != \"Total\",\n", + " (\"Increasing Claim Ratios\", [\"Ult. Claims\", \"Actual IBNR\"]),\n", + " ].values,\n", + " np.array([\n", + " [700000, 0],\n", + " [735000, 0],\n", + " [771750, 0],\n", + " [810338, 0],\n", + " [850854, 8509],\n", + " [1021025, 10210],\n", + " [1139081, 22782],\n", + " [1266390, 63320],\n", + " [1403583, 140358],\n", + " [1551328, 356805],\n", + " ]),\n", + " atol=1,\n", + " rtol=0,\n", ")\n", "\n", - "friedland_assertions.assert_ex3_sheet1(\n", - " res_up,\n", - " res_low,\n", - " friedland[\"exhibit_iii\"][\"sheet_1\"],\n", + "assert np.allclose(\n", + " res_low.loc[\n", + " res_low.index != \"Total\",\n", + " (\"Increasing Case Outstanding Strength\", [\"Ult. Claims\", \"Actual IBNR\"]),\n", + " ].values,\n", + " np.array([\n", + " [700000, 0],\n", + " [735000, 0],\n", + " [771750, 0],\n", + " [810338, 0],\n", + " [850854, 8509],\n", + " [893397, 8934],\n", + " [938067, 4690],\n", + " [984970, 22162],\n", + " [1034219, 54296],\n", + " [1085930, 154745],\n", + " ]),\n", + " atol=2,\n", + " rtol=0,\n", + ")\n", + "\n", + "assert np.allclose(\n", + " res_low.loc[\n", + " res_low.index != \"Total\",\n", + " (\n", + " \"Increasing Claim Ratios and Case Outstanding Strength\",\n", + " [\"Ult. Claims\", \"Actual IBNR\"],\n", + " ),\n", + " ].values,\n", + " np.array([\n", + " [700000, 0],\n", + " [735000, 0],\n", + " [771750, 0],\n", + " [810338, 0],\n", + " [850854, 8509],\n", + " [1021025, 10210],\n", + " [1139081, 5695],\n", + " [1266390, 28494],\n", + " [1403583, 73688],\n", + " [1551328, 221064],\n", + " ]),\n", + " atol=1,\n", + " rtol=0,\n", ")" ] }, @@ -737,7 +817,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 513, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -957,135 +1037,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1318,12 +1398,24 @@ " triangles.loc[\"Steady State\", \"Reported Claims\"],\n", " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Steady State\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_2\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 514, + "id": "81e510ee", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.169, 1.056, 1.032, 1.010, 1.000,\n", + " 1.010, 1.000, 1.000, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -1339,7 +1431,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 515, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -1559,135 +1651,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1921,12 +2013,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Steady State\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_3\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 516, + "id": "025358aa", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.690, 1.183, 1.095, 1.043, 1.021,\n", + " 1.010, 1.000, 1.010, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -1942,7 +2046,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 517, "id": "35744cce", "metadata": {}, "outputs": [ @@ -2162,135 +2266,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2524,12 +2628,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Claim\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_4\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 518, + "id": "7cc96844", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.169, 1.056, 1.032, 1.010, 1.000,\n", + " 1.010, 1.000, 1.000, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -2545,7 +2661,7 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 519, "id": "8d9a4359", "metadata": {}, "outputs": [ @@ -2765,135 +2881,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3127,12 +3243,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Claim\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_5\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 520, + "id": "b5a6558d", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.690, 1.183, 1.095, 1.043, 1.021,\n", + " 1.010, 1.000, 1.010, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -3148,7 +3276,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 521, "id": "0ab5bcf6", "metadata": {}, "outputs": [ @@ -3368,135 +3496,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3730,12 +3858,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Case\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_6\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 522, + "id": "2960fa5a", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.178, 1.061, 1.034, 1.009, 1.000,\n", + " 1.010, 1.000, 1.000, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -3751,7 +3891,7 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 523, "id": "5a759ad5", "metadata": {}, "outputs": [ @@ -3971,135 +4111,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4333,12 +4473,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Case\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_7\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 524, + "id": "009fb8f3", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.690, 1.183, 1.095, 1.043, 1.021,\n", + " 1.010, 1.000, 1.010, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -4354,7 +4506,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 525, "id": "ec0b53a5", "metadata": {}, "outputs": [ @@ -4574,135 +4726,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4936,12 +5088,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Claim Case\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_8\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 526, + "id": "715e4a58", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.179, 1.061, 1.035, 1.009, 1.000,\n", + " 1.010, 1.000, 1.000, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -4957,7 +5121,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 527, "id": "16a0f5fd", "metadata": {}, "outputs": [ @@ -5177,135 +5341,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5539,18 +5703,40 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " triangles.loc[\"Increasing Claim Case\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iii\"][\"sheet_9\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 528, + "id": "2fffd889", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.690, 1.183, 1.095, 1.043, 1.021,\n", + " 1.010, 1.000, 1.010, 1.000, 1.000,\n", + " ]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, + { + "cell_type": "markdown", + "id": "4a34afcd", + "metadata": {}, + "source": [ + "### Exhibit III, Sheets 10 and 11: USPP Auto Development of Unpaid Claim Estimate\n", + "\n", + "We first create a function to handle formatting as follows:" + ] + }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 529, "id": "191822b3", "metadata": { "tags": [ @@ -5559,8 +5745,6 @@ }, "outputs": [], "source": [ - "#| hide-input\n", - "\n", "def Ex3Sht10(scenario, tr):\n", "\n", " def format_col(x, reverse = False):\n", @@ -5715,45 +5899,15 @@ }, { "cell_type": "markdown", - "id": "4a34afcd", + "id": "71ab9a93", "metadata": {}, "source": [ - "### Exhibit III, Sheets 10 and 11: USPP Auto Development of Unpaid Claim Estimate\n", - "\n", "We then generate Sheets 10 and 11 which illustrate the differences between the actual IBNR and the IBNR obtained through the development method for each scenario (pp. 123-124)." ] }, { "cell_type": "code", - "execution_count": 121, - "id": "1bbad6f0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "def assert_ex3_sheet10_or_11(results, expected_rows, **kwargs):\n", - " assert_summary_rows(\n", - " results,\n", - " expected_rows,\n", - " ratio_positions=(4, 5),\n", - " difference_positions=(11, 12),\n", - " label=\"Exhibit III Sheet 10/11\",\n", - " **kwargs,\n", - " )\n", - "\n" - ] - } - ], - "source": [ - "import inspect\n", - "print(inspect.getsource(friedland_assertions.assert_ex3_sheet10_or_11))" - ] - }, - { - "cell_type": "code", - "execution_count": 122, + "execution_count": 530, "id": "e0f134ea", "metadata": {}, "outputs": [ @@ -5774,23 +5928,23 @@ "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", @@ -5811,186 +5965,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,639051999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6013,23 +6167,23 @@ "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", @@ -6050,186 +6204,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,984011999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6252,23 +6406,23 @@ "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", @@ -6289,186 +6443,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,59551999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6491,23 +6645,23 @@ "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", @@ -6528,186 +6682,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,11811999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,1181
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6715,35 +6869,112 @@ } ], "source": [ - "result = Ex3Sht10(\"Steady State\", triangles)\n", + "res_1 = Ex3Sht10(\"Steady State\", triangles)\n", "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Steady-State\"][\"rows\"],\n", - ")\n", + "res_2 = Ex3Sht10(\"Increasing Claim\", triangles)\n", "\n", - "result = Ex3Sht10(\"Increasing Claim\", triangles)\n", + "res_3 = Ex3Sht10(\"Increasing Case\", triangles)\n", "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_10\"][\"Increasing Claim Ratios\"][\"rows\"],\n", + "res_4 = Ex3Sht10(\"Increasing Claim Case\", triangles)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 531, + "id": "21931acb", + "metadata": {}, + "outputs": [], + "source": [ + "estimate_cols = [\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\", # (8)\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\", # (9)\n", + " \"Estimated IBNR Using Dev. Method - Reported\", # (10)\n", + " \"Estimated IBNR Using Dev. Method - Paid\", # (11)\n", + "]\n", + "\n", + "assert np.allclose(\n", + " res_1.loc[\n", + " res_1.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [700000, 700000, 0, 0],\n", + " [735000, 735000, 0, 0],\n", + " [771750, 771750, 0, 0],\n", + " [810338, 810338, 0, 0],\n", + " [850854, 850854, 8509, 8509],\n", + " [893397, 893397, 8934, 8934],\n", + " [938067, 938067, 18761, 18761],\n", + " [984970, 984970, 49249, 49249],\n", + " [1034219, 1034219, 103422, 103422],\n", + " [1085930, 1085930, 249764, 249764],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", ")\n", "\n", - "result = Ex3Sht10(\"Increasing Case\", triangles)\n", - "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_11\"][\"Increasing Case Outstanding Strength\"][\"rows\"],\n", + "assert np.allclose(\n", + " res_2.loc[\n", + " res_2.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [700000, 700000, 0, 0],\n", + " [735000, 735000, 0, 0],\n", + " [771750, 771750, 0, 0],\n", + " [810338, 810338, 0, 0],\n", + " [850854, 850854, 8509, 8509],\n", + " [1021025, 1021025, 10210, 10210],\n", + " [1139081, 1139081, 22782, 22782],\n", + " [1266390, 1266390, 63320, 63320],\n", + " [1403583, 1403583, 140358, 140358],\n", + " [1551328, 1551328, 356805, 356805],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", ")\n", "\n", - "result = Ex3Sht10(\"Increasing Claim Case\", triangles)\n", + "assert np.allclose(\n", + " res_3.loc[\n", + " res_3.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [700000, 700000, 0, 0],\n", + " [735000, 735000, 0, 0],\n", + " [771750, 771750, 0, 0],\n", + " [810338, 810338, 0, 0],\n", + " [850854, 850854, 8509, 8509],\n", + " [893397, 893397, 8934, 8934],\n", + " [951656, 938067, 18279, 4690],\n", + " [1015302, 984970, 52493, 22162],\n", + " [1096235, 1034219, 116313, 54296],\n", + " [1227589, 1085930, 296404, 154745],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", + ")\n", "\n", - "friedland_assertions.assert_ex3_sheet10_or_11(\n", - " result,\n", - " friedland[\"exhibit_iii\"][\"sheet_11\"][\n", - " \"Increasing Claim Ratios and Case Outstanding Strength\"\n", - " ][\"rows\"],\n", - ")" + "assert np.allclose(\n", + " res_4.loc[\n", + " res_4.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [700000, 700000, 0, 0],\n", + " [735000, 735000, 0, 0],\n", + " [771750, 771750, 0, 0],\n", + " [810338, 810338, 0, 0],\n", + " [850854, 850854, 8509, 8509],\n", + " [1021025, 1021025, 10210, 10210],\n", + " [1155482, 1139081, 22096, 5695],\n", + " [1305639, 1266390, 67742, 28494],\n", + " [1488874, 1403583, 158980, 73688],\n", + " [1756504, 1551328, 426240, 221064],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", + ")\n" ] }, { @@ -6762,7 +6993,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 532, "id": "8d88d02f", "metadata": {}, "outputs": [], @@ -6783,7 +7014,7 @@ }, { "cell_type": "code", - "execution_count": 124, + "execution_count": 533, "id": "3db66603", "metadata": {}, "outputs": [], @@ -6807,7 +7038,7 @@ " def col_mult(x, y):\n", " return x.squeeze() * y.squeeze()\n", "\n", - " tri = data.copy()\n", + " tri = tri.copy()\n", "\n", " dev_input = {\n", " \"average\" : \"volume\",\n", @@ -6936,7 +7167,7 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 534, "id": "346c3742", "metadata": {}, "outputs": [ @@ -6956,26 +7187,26 @@ "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", @@ -6994,164 +7225,164 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNRPriv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,63419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,634
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7173,26 +7404,26 @@ "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", @@ -7211,164 +7442,164 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNRPriv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,08419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,084
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7376,22 +7607,52 @@ } ], "source": [ - "result = Ex4Sht1(\"Steady State\", data)\n", + "res_1 = Ex4Sht1(\"Steady State\", data)\n", "\n", - "friedland_assertions.assert_ex4_sheet1(\n", - " result,\n", - " friedland[\"exhibit_iv\"][\"sheet_1\"][\n", - " \"Steady-State (No Change in Product Mix)\"\n", - " ][\"rows\"],\n", + "res_2 = Ex4Sht1(\"Changing Product Mix\", data)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 535, + "id": "c6744884", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " res_1.iloc[:-1, [8, 10]].values,\n", + " np.array([\n", + " [1500000, 0],\n", + " [1575000, 0],\n", + " [1653750, 0],\n", + " [1736438, 0],\n", + " [1823259, 8509],\n", + " [1914422, 29354],\n", + " [2010143, 61644],\n", + " [2110651, 173073],\n", + " [2216183, 363454],\n", + " [2326992, 758599],\n", + " ]),\n", + " atol=2,\n", + " rtol=0,\n", ")\n", "\n", - "result = Ex4Sht1(\"Changing Product Mix\", data)\n", - "\n", - "friedland_assertions.assert_ex4_sheet1(\n", - " result,\n", - " friedland[\"exhibit_iv\"][\"sheet_1\"][\n", - " \"Changing Product Mix\"\n", - " ][\"rows\"],\n", + "assert np.allclose(\n", + " res_2.iloc[:-1, [8, 10]].values,\n", + " np.array([\n", + " [1500000, 0],\n", + " [1575000, 0],\n", + " [1653750, 0],\n", + " [1736438, 0],\n", + " [1823259, 8509],\n", + " [1914422, 29354],\n", + " [2265400, 71855],\n", + " [2710503, 239057],\n", + " [3277411, 596924],\n", + " [4002080, 1445385],\n", + " ]),\n", + " atol=2,\n", + " rtol=0,\n", ")" ] }, @@ -7407,7 +7668,7 @@ }, { "cell_type": "code", - "execution_count": 126, + "execution_count": 536, "id": "8a7c6e5d", "metadata": {}, "outputs": [ @@ -7627,135 +7888,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.24019991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.240
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7989,12 +8250,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " data.loc[\"Steady State\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iv\"][\"sheet_2\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 537, + "id": "2833183d", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.240, 1.098, 1.056, 1.016, 1.011,\n", + " 1.005, 1.000, 1.000, 1.000, 1.000,\n", + "]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -8010,7 +8283,7 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": 538, "id": "8c9306e2", "metadata": {}, "outputs": [ @@ -8230,135 +8503,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.84019991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.840
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -8592,12 +8865,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " data.loc[\"Steady State\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iv\"][\"sheet_3\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 539, + "id": "5059355c", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.840, 1.299, 1.157, 1.077, 1.033,\n", + " 1.016, 1.005, 1.010, 1.005, 1.000,\n", + "]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -8613,7 +8898,7 @@ }, { "cell_type": "code", - "execution_count": 128, + "execution_count": 540, "id": "5c96f69e", "metadata": {}, "outputs": [ @@ -8833,135 +9118,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.26419991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.264
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -9195,12 +9480,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " data.loc[\"Changing Product Mix\", \"Reported Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iv\"][\"sheet_4\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 541, + "id": "ee12d597", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.252, 1.101, 1.057, 1.016, 1.011,\n", + " 1.005, 1.000, 1.000, 1.000, 1.000,\n", + "]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -9216,7 +9513,7 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 542, "id": "e0cc72a6", "metadata": {}, "outputs": [ @@ -9436,135 +9733,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.90319991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.903
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -9798,12 +10095,24 @@ " avg_params={\"volume_5\": {'n_periods': 5, 'average': 'volume'}},\n", " selected_avg='volume_5',\n", " tail=1\n", - " )\n", - "\n", - "friedland_assertions.assert_dev_exhibit(\n", - " data.loc[\"Changing Product Mix\", \"Paid Claims\"],\n", - " devs,\n", - " friedland[\"exhibit_iv\"][\"sheet_5\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 543, + "id": "f8c3d22b", + "metadata": {}, + "outputs": [], + "source": [ + "assert np.allclose(\n", + " devs[\"Selected\"].ldf_.round(3).values.squeeze(),\n", + " np.array([\n", + " 1.870, 1.310, 1.158, 1.077, 1.033,\n", + " 1.016, 1.005, 1.010, 1.005, 1.000,\n", + "]),\n", + " atol=0.0005,\n", + " rtol=0,\n", ")" ] }, @@ -9819,7 +10128,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 544, "id": "768432dc", "metadata": {}, "outputs": [], @@ -9996,7 +10305,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 545, "id": "9b97c370", "metadata": {}, "outputs": [ @@ -10017,23 +10326,23 @@ "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", @@ -10054,186 +10363,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-0119991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-01
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10256,23 +10565,23 @@ "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", @@ -10293,186 +10602,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,38319991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,383
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10480,22 +10789,65 @@ } ], "source": [ - "result = Ex4Sht6(\"Steady State\", data)\n", + "res_1 = Ex4Sht6(\"Steady State\", data)\n", "\n", - "friedland_assertions.assert_ex4_sheet6(\n", - " result,\n", - " friedland[\"exhibit_iv\"][\"sheet_6\"][\n", - " \"Steady-State (No Change in Product Mix)\"\n", - " ][\"rows\"],\n", + "res_2 = Ex4Sht6(\"Changing Product Mix\", data)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 546, + "id": "471fa752", + "metadata": {}, + "outputs": [], + "source": [ + "estimate_cols = [\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\",\n", + "]\n", + "\n", + "assert np.allclose(\n", + " res_1.loc[\n", + " res_1.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [1500000, 1500000, 0, 0],\n", + " [1575000, 1575000, 0, 0],\n", + " [1653750, 1653750, 0, 0],\n", + " [1736438, 1736438, 0, 0],\n", + " [1823259, 1823259, 8509, 8509],\n", + " [1914422, 1914422, 29354, 29354],\n", + " [2010143, 2010143, 61644, 61644],\n", + " [2110651, 2110651, 173073, 173073],\n", + " [2216183, 2216183, 363454, 363454],\n", + " [2326992, 2326992, 758599, 758599],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", ")\n", "\n", - "result = Ex4Sht6(\"Changing Product Mix\", data)\n", - "\n", - "friedland_assertions.assert_ex4_sheet6(\n", - " result,\n", - " friedland[\"exhibit_iv\"][\"sheet_6\"][\n", - " \"Changing Product Mix\"\n", - " ][\"rows\"],\n", + "assert np.allclose(\n", + " res_2.loc[\n", + " res_2.index != \"Total\",\n", + " estimate_cols,\n", + " ].values,\n", + " np.array([\n", + " [1500000, 1500000, 0, 0],\n", + " [1575000, 1575000, 0, 0],\n", + " [1653750, 1653750, 0, 0],\n", + " [1736438, 1736438, 0, 0],\n", + " [1823259, 1823259, 8509, 8509],\n", + " [1914422, 1914422, 29354, 29354],\n", + " [2262942, 2251655, 69397, 58110],\n", + " [2693735, 2650749, 222289, 179303],\n", + " [3217775, 3091666, 537288, 411179],\n", + " [3842645, 3592939, 1285950, 1036245],\n", + "]),\n", + " atol=3,\n", + " rtol=0,\n", ")" ] } diff --git a/docs/friedland/friedland_assertions.py b/docs/friedland/friedland_assertions.py deleted file mode 100644 index f4c92b5f2..000000000 --- a/docs/friedland/friedland_assertions.py +++ /dev/null @@ -1,240 +0,0 @@ - -import json - -import numpy as np -import pandas as pd - - -def load_friedland_reference(path="friedland_ch7_part2_reference.json"): - """Load benchmark values transcribed from the published Friedland exhibits.""" - with open(path, encoding="utf-8") as f: - return json.load(f) - - -def _numeric_frame(obj): - """Convert a chainladder Triangle-like object or DataFrame to a numeric DataFrame.""" - if hasattr(obj, "to_frame"): - try: - df = obj.to_frame(origin_as_datetime=False) - except TypeError: - df = obj.to_frame() - else: - df = pd.DataFrame(obj) - return df.apply(pd.to_numeric, errors="coerce") - - -def _assert_rows(actual, expected_rows, atol, label): - """Compare the non-missing cells in each Friedland accident-year row.""" - actual = _numeric_frame(actual) - actual.index = actual.index.map(str) - - for year, expected in expected_rows.items(): - if year not in actual.index: - raise AssertionError(f"{label}: accident year {year} not found.") - observed = actual.loc[year].dropna().to_numpy(dtype=float) - expected = np.asarray(expected, dtype=float) - - if observed.size != expected.size: - raise AssertionError( - f"{label}, AY {year}: expected {expected.size} displayed values " - f"but found {observed.size}." - ) - - np.testing.assert_allclose( - observed, expected, rtol=1e-5, atol=atol, - err_msg=f"{label}, AY {year}" - ) - - -def assert_dev_exhibit( - tri, - devs, - reference, - *, - selected_key="Selected", - average_key="volume_5", - dollar_atol=1.0, - factor_atol=0.0015, -): - """ - Validate one of Friedland's four-part development exhibits. - - Parameters - ---------- - tri: - The input triangle displayed in Part 1. - devs: - Dictionary returned by dev_exhibit(). - reference: - One sheet from friedland_ch7_part2_reference.json. - """ - # Part 1: cumulative claims triangle - _assert_rows( - tri, reference["triangle"], dollar_atol, - "Part 1 - Data Triangle" - ) - - # Part 2: age-to-age factors - _assert_rows( - tri.age_to_age, reference["age_to_age"], factor_atol, - "Part 2 - Age-to-Age Factors" - ) - - # Part 3: latest-5 volume-weighted average - avg = _numeric_frame(devs[average_key].ldf_).to_numpy(dtype=float) - avg = avg[np.isfinite(avg)] - expected_avg = np.asarray(reference["latest_5_volume_weighted"], dtype=float) - # Friedland does not print the tail factor in Part 3. - avg = avg[: expected_avg.size] - np.testing.assert_allclose( - avg, expected_avg, rtol=0, atol=factor_atol, - err_msg="Part 3 - Latest 5 volume-weighted factors" - ) - - # Part 4: selected LDF, CDF and percent developed - selected = devs[selected_key].ldf_ - ldf = _numeric_frame(selected.round(3)).to_numpy(dtype=float) - ldf = ldf[np.isfinite(ldf)] - - np.testing.assert_allclose( - ldf[:len(reference["selected_ldf"])], - reference["selected_ldf"], - rtol=0, - atol=factor_atol, - err_msg="Part 4 - Selected LDF", -) - - cdf_obj = selected.incr_to_cum().round(3) - - cdf = _numeric_frame(cdf_obj).to_numpy(dtype=float) - cdf = cdf[np.isfinite(cdf)] - - np.testing.assert_allclose( - cdf[:len(reference["cdf_to_ultimate"])], - reference["cdf_to_ultimate"], - rtol=0, - atol=factor_atol, - err_msg="Part 4 - CDF to Ultimate", - ) - - pct = 1 / cdf - np.testing.assert_allclose( - pct[:len(reference["percent_developed"])], - reference["percent_developed"], - rtol=0, atol=factor_atol, - err_msg="Part 4 - Percent Reported/Paid" - ) - - -def assert_summary_rows( - actual, - expected_rows, - *, - ratio_positions=(), - difference_positions=(), - dollar_atol=2.0, - dollar_rtol=1e-5, - difference_atol=5.0, - factor_atol=0.0005, - label="summary exhibit", -): - """ - Compare a summary DataFrame to Friedland row-by-row. - - `ratio_positions` are zero-based positions containing ratios/factors - rather than dollar values. - """ - if "Total" in actual.index: - actual = actual.drop(index="Total") - - actual = actual.copy() - actual.index = actual.index.map(str) - arr = actual.apply(pd.to_numeric, errors="coerce") - - for year, expected in expected_rows.items(): - observed = arr.loc[year].to_numpy(dtype=float) - expected = np.asarray(expected, dtype=float) - - if observed.size != expected.size: - raise AssertionError( - f"{label}, AY {year}: expected {expected.size} columns " - f"but found {observed.size}." - ) - - for j, (obs, exp) in enumerate(zip(observed, expected)): - if j in ratio_positions: - ok = np.isclose( - obs, - exp, - rtol=0, - atol=factor_atol, - ) - tolerance = f"atol={factor_atol}" - - elif j in difference_positions: - ok = np.isclose( - obs, - exp, - rtol=0, - atol=difference_atol, - ) - tolerance = f"atol={difference_atol}" - - else: - ok = np.isclose( - obs, - exp, - rtol=dollar_rtol, - atol=dollar_atol, - ) - tolerance = ( - f"atol={dollar_atol}, " - f"rtol={dollar_rtol}" - ) - - if not ok: - raise AssertionError( - f"{label}, AY {year}, column {j}: " - f"actual={obs}, Friedland={exp}, " - f"tolerance={tolerance}" - ) - -def assert_ex3_sheet1(results_upper, results_lower, ref, **kwargs): - # Published row order: - # EP, ratio, ultimate, reported, IBNR, ratio, ultimate, reported, IBNR - assert_summary_rows( - results_upper, ref["upper_rows"], - ratio_positions=(1, 5), label="Exhibit III Sheet 1 (upper)", **kwargs - ) - assert_summary_rows( - results_lower, ref["lower_rows"], - ratio_positions=(1, 5), label="Exhibit III Sheet 1 (lower)", **kwargs - ) - - -def assert_ex3_sheet10_or_11(results, expected_rows, **kwargs): - assert_summary_rows( - results, - expected_rows, - ratio_positions=(4, 5), - difference_positions=(11, 12), - label="Exhibit III Sheet 10/11", - **kwargs, - ) - - -def assert_ex4_sheet1(results, expected_rows, **kwargs): - # PP premium, Comm premium, Total premium, - # PP ratio, Comm ratio, Total ratio, - # PP ultimate, Comm ultimate, Total ultimate, reported, actual IBNR - assert_summary_rows( - results, expected_rows, - ratio_positions=(3, 4, 5), label="Exhibit IV Sheet 1", **kwargs - ) - - -def assert_ex4_sheet6(results, expected_rows, **kwargs): - assert_summary_rows( - results, expected_rows, - ratio_positions=(4, 5), label="Exhibit IV Sheet 6", **kwargs - ) diff --git a/docs/friedland/friedland_ch7_part2_reference.json b/docs/friedland/friedland_ch7_part2_reference.json deleted file mode 100644 index 6d0b352f4..000000000 --- a/docs/friedland/friedland_ch7_part2_reference.json +++ /dev/null @@ -1,3839 +0,0 @@ -{ - "metadata": { - "source": "Friedland, Chapter 7 - Development Technique, Exhibits III and IV", - "source_file": "Pages from 5_Friedland.pdf", - "note": "Programmatically transcribed from the supplied PDF. Compare dollar values at whole-dollar precision and printed development factors at 0.001 precision." - }, - "exhibit_iii": { - "sheet_2": { - "triangle": { - "1999": [ - 539000.0, - 630000.0, - 665000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 565950.0, - 661500.0, - 698250.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0, - 735000.0, - 735000.0 - ], - "2001": [ - 594248.0, - 694575.0, - 733163.0, - 756315.0, - 764033.0, - 764033.0, - 771750.0, - 771750.0 - ], - "2002": [ - 623960.0, - 729304.0, - 769821.0, - 794131.0, - 802234.0, - 802234.0, - 810338.0 - ], - "2003": [ - 655158.0, - 765769.0, - 808312.0, - 833837.0, - 842346.0, - 842346.0 - ], - "2004": [ - 687916.0, - 804057.0, - 848727.0, - 875529.0, - 884463.0 - ], - "2005": [ - 722312.0, - 844260.0, - 891164.0, - 919306.0 - ], - "2006": [ - 758427.0, - 886473.0, - 935722.0 - ], - "2007": [ - 796348.0, - 930797.0 - ], - "2008": [ - 836166.0 - ] - }, - "age_to_age": { - "1999": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "2001": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2002": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01 - ], - "2003": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0 - ], - "2004": [ - 1.169, - 1.056, - 1.032, - 1.01 - ], - "2005": [ - 1.169, - 1.056, - 1.032 - ], - "2006": [ - 1.169, - 1.056 - ], - "2007": [ - 1.169 - ] - }, - "latest_5_volume_weighted": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.299, - 1.111, - 1.053, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.77, - 0.9, - 0.95, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_3": { - "triangle": { - "1999": [ - 294000.0, - 497000.0, - 588000.0, - 644000.0, - 672000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 308700.0, - 521850.0, - 617400.0, - 676200.0, - 705600.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0 - ], - "2001": [ - 324135.0, - 547943.0, - 648270.0, - 710010.0, - 740880.0, - 756315.0, - 764033.0, - 764033.0 - ], - "2002": [ - 340342.0, - 575340.0, - 680684.0, - 745511.0, - 777924.0, - 794131.0, - 802234.0 - ], - "2003": [ - 357359.0, - 604107.0, - 714718.0, - 782786.0, - 816820.0, - 833837.0 - ], - "2004": [ - 375227.0, - 634312.0, - 750454.0, - 821925.0, - 857661.0 - ], - "2005": [ - 393988.0, - 666028.0, - 787976.0, - 863022.0 - ], - "2006": [ - 413688.0, - 699329.0, - 827375.0 - ], - "2007": [ - 434372.0, - 734295.0 - ], - "2008": [ - 456090.0 - ] - }, - "age_to_age": { - "1999": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2000": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01 - ], - "2001": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0 - ], - "2002": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01 - ], - "2003": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021 - ], - "2004": [ - 1.69, - 1.183, - 1.095, - 1.043 - ], - "2005": [ - 1.69, - 1.183, - 1.095 - ], - "2006": [ - 1.69, - 1.183 - ], - "2007": [ - 1.69 - ] - }, - "latest_5_volume_weighted": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "selected_ldf": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 2.381, - 1.408, - 1.19, - 1.087, - 1.042, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.42, - 0.71, - 0.84, - 0.92, - 0.96, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0 - ] - }, - "sheet_4": { - "triangle": { - "1999": [ - 539000.0, - 630000.0, - 665000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 565950.0, - 661500.0, - 698250.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0, - 735000.0, - 735000.0 - ], - "2001": [ - 594248.0, - 694575.0, - 733163.0, - 756315.0, - 764033.0, - 764033.0, - 771750.0, - 771750.0 - ], - "2002": [ - 623960.0, - 729304.0, - 769821.0, - 794131.0, - 802234.0, - 802234.0, - 810338.0 - ], - "2003": [ - 655158.0, - 765769.0, - 808312.0, - 833837.0, - 842346.0, - 842346.0 - ], - "2004": [ - 786189.0, - 918923.0, - 969974.0, - 1000605.0, - 1010815.0 - ], - "2005": [ - 877093.0, - 1025173.0, - 1082127.0, - 1116300.0 - ], - "2006": [ - 975121.0, - 1139751.0, - 1203071.0 - ], - "2007": [ - 1080759.0, - 1263224.0 - ], - "2008": [ - 1194523.0 - ] - }, - "age_to_age": { - "1999": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "2001": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2002": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01 - ], - "2003": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0 - ], - "2004": [ - 1.169, - 1.056, - 1.032, - 1.01 - ], - "2005": [ - 1.169, - 1.056, - 1.032 - ], - "2006": [ - 1.169, - 1.056 - ], - "2007": [ - 1.169 - ] - }, - "latest_5_volume_weighted": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.299, - 1.111, - 1.053, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.77, - 0.9, - 0.95, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_5": { - "triangle": { - "1999": [ - 294000.0, - 497000.0, - 588000.0, - 644000.0, - 672000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 308700.0, - 521850.0, - 617400.0, - 676200.0, - 705600.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0 - ], - "2001": [ - 324135.0, - 547943.0, - 648270.0, - 710010.0, - 740880.0, - 756315.0, - 764033.0, - 764033.0 - ], - "2002": [ - 340342.0, - 575340.0, - 680684.0, - 745511.0, - 777924.0, - 794131.0, - 802234.0 - ], - "2003": [ - 357359.0, - 604107.0, - 714718.0, - 782786.0, - 816820.0, - 833837.0 - ], - "2004": [ - 428831.0, - 724928.0, - 857661.0, - 939343.0, - 980184.0 - ], - "2005": [ - 478414.0, - 808748.0, - 956828.0, - 1047955.0 - ], - "2006": [ - 531884.0, - 899137.0, - 1063768.0 - ], - "2007": [ - 589505.0, - 996544.0 - ], - "2008": [ - 651558.0 - ] - }, - "age_to_age": { - "1999": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2000": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01 - ], - "2001": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0 - ], - "2002": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01 - ], - "2003": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021 - ], - "2004": [ - 1.69, - 1.183, - 1.095, - 1.043 - ], - "2005": [ - 1.69, - 1.183, - 1.095 - ], - "2006": [ - 1.69, - 1.183 - ], - "2007": [ - 1.69 - ] - }, - "latest_5_volume_weighted": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "selected_ldf": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 2.381, - 1.408, - 1.19, - 1.087, - 1.042, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.42, - 0.71, - 0.84, - 0.92, - 0.96, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0 - ] - }, - "sheet_6": { - "triangle": { - "1999": [ - 539000.0, - 630000.0, - 665000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 565950.0, - 661500.0, - 698250.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0, - 735000.0, - 735000.0 - ], - "2001": [ - 594248.0, - 694575.0, - 733163.0, - 756315.0, - 764033.0, - 764033.0, - 771750.0, - 771750.0 - ], - "2002": [ - 623960.0, - 729304.0, - 769821.0, - 794131.0, - 802234.0, - 802234.0, - 810338.0 - ], - "2003": [ - 655158.0, - 765769.0, - 808312.0, - 833837.0, - 842346.0, - 842346.0 - ], - "2004": [ - 687916.0, - 804057.0, - 848727.0, - 878745.0, - 884463.0 - ], - "2005": [ - 722312.0, - 844260.0, - 897355.0, - 933377.0 - ], - "2006": [ - 758427.0, - 897702.0, - 962808.0 - ], - "2007": [ - 818067.0, - 979922.0 - ], - "2008": [ - 931185.0 - ] - }, - "age_to_age": { - "1999": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "2001": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2002": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01 - ], - "2003": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0 - ], - "2004": [ - 1.169, - 1.056, - 1.035, - 1.007 - ], - "2005": [ - 1.169, - 1.063, - 1.04 - ], - "2006": [ - 1.184, - 1.073 - ], - "2007": [ - 1.198 - ] - }, - "latest_5_volume_weighted": [ - 1.178, - 1.061, - 1.034, - 1.009, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.178, - 1.061, - 1.034, - 1.009, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.318, - 1.119, - 1.055, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.759, - 0.894, - 0.948, - 0.981, - 0.99, - 0.99, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_7": { - "triangle": { - "1999": [ - 294000.0, - 497000.0, - 588000.0, - 644000.0, - 672000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 308700.0, - 521850.0, - 617400.0, - 676200.0, - 705600.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0 - ], - "2001": [ - 324135.0, - 547943.0, - 648270.0, - 710010.0, - 740880.0, - 756315.0, - 764033.0, - 764033.0 - ], - "2002": [ - 340342.0, - 575340.0, - 680684.0, - 745511.0, - 777924.0, - 794131.0, - 802234.0 - ], - "2003": [ - 357359.0, - 604107.0, - 714718.0, - 782786.0, - 816820.0, - 833837.0 - ], - "2004": [ - 375227.0, - 634312.0, - 750454.0, - 821925.0, - 857661.0 - ], - "2005": [ - 393988.0, - 666028.0, - 787976.0, - 863022.0 - ], - "2006": [ - 413688.0, - 699329.0, - 827375.0 - ], - "2007": [ - 434372.0, - 734295.0 - ], - "2008": [ - 456090.0 - ] - }, - "age_to_age": { - "1999": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2000": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01 - ], - "2001": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0 - ], - "2002": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01 - ], - "2003": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021 - ], - "2004": [ - 1.69, - 1.183, - 1.095, - 1.043 - ], - "2005": [ - 1.69, - 1.183, - 1.095 - ], - "2006": [ - 1.69, - 1.183 - ], - "2007": [ - 1.69 - ] - }, - "latest_5_volume_weighted": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "selected_ldf": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 2.381, - 1.408, - 1.19, - 1.087, - 1.042, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.42, - 0.71, - 0.84, - 0.92, - 0.96, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0 - ] - }, - "sheet_8": { - "triangle": { - "1999": [ - 539000.0, - 630000.0, - 665000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 565950.0, - 661500.0, - 698250.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0, - 735000.0, - 735000.0 - ], - "2001": [ - 594248.0, - 694575.0, - 733163.0, - 756315.0, - 764033.0, - 764033.0, - 771750.0, - 771750.0 - ], - "2002": [ - 623960.0, - 729304.0, - 769821.0, - 794131.0, - 802234.0, - 802234.0, - 810338.0 - ], - "2003": [ - 655158.0, - 765769.0, - 808312.0, - 833837.0, - 842346.0, - 842346.0 - ], - "2004": [ - 786189.0, - 918923.0, - 969974.0, - 1004280.0, - 1010815.0 - ], - "2005": [ - 877093.0, - 1025173.0, - 1089645.0, - 1133386.0 - ], - "2006": [ - 975121.0, - 1154188.0, - 1237897.0 - ], - "2007": [ - 1110234.0, - 1329895.0 - ], - "2008": [ - 1330264.0 - ] - }, - "age_to_age": { - "1999": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "2001": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2002": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0, - 1.01 - ], - "2003": [ - 1.169, - 1.056, - 1.032, - 1.01, - 1.0 - ], - "2004": [ - 1.169, - 1.056, - 1.035, - 1.007 - ], - "2005": [ - 1.169, - 1.063, - 1.04 - ], - "2006": [ - 1.184, - 1.073 - ], - "2007": [ - 1.198 - ] - }, - "latest_5_volume_weighted": [ - 1.179, - 1.061, - 1.035, - 1.009, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.179, - 1.061, - 1.035, - 1.009, - 1.0, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.32, - 1.12, - 1.055, - 1.019, - 1.01, - 1.01, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.757, - 0.893, - 0.948, - 0.981, - 0.99, - 0.99, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_9": { - "triangle": { - "1999": [ - 294000.0, - 497000.0, - 588000.0, - 644000.0, - 672000.0, - 686000.0, - 693000.0, - 693000.0, - 700000.0, - 700000.0 - ], - "2000": [ - 308700.0, - 521850.0, - 617400.0, - 676200.0, - 705600.0, - 720300.0, - 727650.0, - 727650.0, - 735000.0 - ], - "2001": [ - 324135.0, - 547943.0, - 648270.0, - 710010.0, - 740880.0, - 756315.0, - 764033.0, - 764033.0 - ], - "2002": [ - 340342.0, - 575340.0, - 680684.0, - 745511.0, - 777924.0, - 794131.0, - 802234.0 - ], - "2003": [ - 357359.0, - 604107.0, - 714718.0, - 782786.0, - 816820.0, - 833837.0 - ], - "2004": [ - 428831.0, - 724928.0, - 857661.0, - 939343.0, - 980184.0 - ], - "2005": [ - 478414.0, - 808748.0, - 956828.0, - 1047955.0 - ], - "2006": [ - 531884.0, - 899137.0, - 1063768.0 - ], - "2007": [ - 589505.0, - 996544.0 - ], - "2008": [ - 651558.0 - ] - }, - "age_to_age": { - "1999": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "2000": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01 - ], - "2001": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0 - ], - "2002": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01 - ], - "2003": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021 - ], - "2004": [ - 1.69, - 1.183, - 1.095, - 1.043 - ], - "2005": [ - 1.69, - 1.183, - 1.095 - ], - "2006": [ - 1.69, - 1.183 - ], - "2007": [ - 1.69 - ] - }, - "latest_5_volume_weighted": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0 - ], - "selected_ldf": [ - 1.69, - 1.183, - 1.095, - 1.043, - 1.021, - 1.01, - 1.0, - 1.01, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 2.381, - 1.408, - 1.19, - 1.087, - 1.042, - 1.02, - 1.01, - 1.01, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.42, - 0.71, - 0.84, - 0.92, - 0.96, - 0.98, - 0.99, - 0.99, - 1.0, - 1.0 - ] - }, - "sheet_1": { - "upper_rows": { - "1999": [ - 1000000.0, - 0.7, - 700000.0, - 700000.0, - 0.0, - 0.7, - 700000.0, - 700000.0, - 0.0 - ], - "2000": [ - 1050000.0, - 0.7, - 735000.0, - 735000.0, - 0.0, - 0.7, - 735000.0, - 735000.0, - 0.0 - ], - "2001": [ - 1102500.0, - 0.7, - 771750.0, - 771750.0, - 0.0, - 0.7, - 771750.0, - 771750.0, - 0.0 - ], - "2002": [ - 1157625.0, - 0.7, - 810338.0, - 810338.0, - 0.0, - 0.7, - 810338.0, - 810338.0, - 0.0 - ], - "2003": [ - 1215506.0, - 0.7, - 850854.0, - 842346.0, - 8509.0, - 0.7, - 850854.0, - 842346.0, - 8509.0 - ], - "2004": [ - 1276282.0, - 0.7, - 893397.0, - 884463.0, - 8934.0, - 0.8, - 1021025.0, - 1010815.0, - 10210.0 - ], - "2005": [ - 1340096.0, - 0.7, - 938067.0, - 919306.0, - 18761.0, - 0.85, - 1139081.0, - 1116300.0, - 22782.0 - ], - "2006": [ - 1407100.0, - 0.7, - 984970.0, - 935722.0, - 49249.0, - 0.9, - 1266390.0, - 1203071.0, - 63320.0 - ], - "2007": [ - 1477455.0, - 0.7, - 1034219.0, - 930797.0, - 103422.0, - 0.95, - 1403583.0, - 1263224.0, - 140358.0 - ], - "2008": [ - 1551328.0, - 0.7, - 1085930.0, - 836166.0, - 249764.0, - 1.0, - 1551328.0, - 1194523.0, - 356805.0 - ] - }, - "upper_total": [ - 12577893.0, - 8804525.0, - 8365887.0, - 438638.0, - 10249350.0, - 9647366.0, - 601984.0 - ], - "lower_rows": { - "1999": [ - 1000000.0, - 0.7, - 700000.0, - 700000.0, - 0.0, - 0.7, - 700000.0, - 700000.0, - 0.0 - ], - "2000": [ - 1050000.0, - 0.7, - 735000.0, - 735000.0, - 0.0, - 0.7, - 735000.0, - 735000.0, - 0.0 - ], - "2001": [ - 1102500.0, - 0.7, - 771750.0, - 771750.0, - 0.0, - 0.7, - 771750.0, - 771750.0, - 0.0 - ], - "2002": [ - 1157625.0, - 0.7, - 810338.0, - 810338.0, - 0.0, - 0.7, - 810338.0, - 810338.0, - 0.0 - ], - "2003": [ - 1215506.0, - 0.7, - 850854.0, - 842346.0, - 8509.0, - 0.7, - 850854.0, - 842346.0, - 8509.0 - ], - "2004": [ - 1276282.0, - 0.7, - 893397.0, - 884463.0, - 8934.0, - 0.8, - 1021025.0, - 1010815.0, - 10210.0 - ], - "2005": [ - 1340096.0, - 0.7, - 938067.0, - 933377.0, - 4690.0, - 0.85, - 1139081.0, - 1133386.0, - 5695.0 - ], - "2006": [ - 1407100.0, - 0.7, - 984970.0, - 962808.0, - 22162.0, - 0.9, - 1266390.0, - 1237897.0, - 28494.0 - ], - "2007": [ - 1477455.0, - 0.7, - 1034219.0, - 979922.0, - 54296.0, - 0.95, - 1403583.0, - 1329895.0, - 73688.0 - ], - "2008": [ - 1551328.0, - 0.7, - 1085930.0, - 931185.0, - 154745.0, - 1.0, - 1551328.0, - 1330264.0, - 221064.0 - ] - }, - "lower_total": [ - 12577893.0, - 8804525.0, - 8551189.0, - 253336.0, - 10249350.0, - 9901689.0, - 347660.0 - ] - }, - "sheet_10": { - "Steady-State": { - "rows": { - "1999": [ - 120.0, - 700000.0, - 700000.0, - 0.0, - 1.0, - 1.0, - 700000.0, - 700000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 735000.0, - 735000.0, - 0.0, - 1.0, - 1.0, - 735000.0, - 735000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 771750.0, - 764033.0, - 7718.0, - 1.0, - 1.01, - 771750.0, - 771750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 810338.0, - 802234.0, - 8103.0, - 1.0, - 1.01, - 810338.0, - 810338.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 842346.0, - 833837.0, - 8509.0, - 1.01, - 1.02, - 850854.0, - 850854.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 884463.0, - 857661.0, - 26802.0, - 1.01, - 1.042, - 893397.0, - 893397.0, - 8934.0, - 8934.0, - 8934.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 919306.0, - 863022.0, - 56284.0, - 1.02, - 1.087, - 938067.0, - 938067.0, - 18761.0, - 18761.0, - 18761.0, - 0.0, - 0.0 - ], - "2006": [ - 36.0, - 935722.0, - 827375.0, - 108347.0, - 1.053, - 1.19, - 984970.0, - 984970.0, - 49249.0, - 49249.0, - 49249.0, - 0.0, - 0.0 - ], - "2007": [ - 24.0, - 930797.0, - 734295.0, - 196502.0, - 1.111, - 1.408, - 1034219.0, - 1034219.0, - 103422.0, - 103422.0, - 103422.0, - 0.0, - 0.0 - ], - "2008": [ - 12.0, - 836166.0, - 456090.0, - 380075.0, - 1.299, - 2.381, - 1085930.0, - 1085930.0, - 249764.0, - 249764.0, - 249764.0, - 0.0, - 0.0 - ] - }, - "total": [ - 8365887.0, - 7573548.0, - 792339.0, - 8804525.0, - 8804525.0, - 438638.0, - 438638.0, - 438638.0, - 0.0, - 0.0 - ] - }, - "Increasing Claim Ratios": { - "rows": { - "1999": [ - 120.0, - 700000.0, - 700000.0, - 0.0, - 1.0, - 1.0, - 700000.0, - 700000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 735000.0, - 735000.0, - 0.0, - 1.0, - 1.0, - 735000.0, - 735000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 771750.0, - 764033.0, - 7718.0, - 1.0, - 1.01, - 771750.0, - 771750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 810338.0, - 802234.0, - 8103.0, - 1.0, - 1.01, - 810338.0, - 810338.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 842346.0, - 833837.0, - 8509.0, - 1.01, - 1.02, - 850854.0, - 850854.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 1010815.0, - 980184.0, - 30631.0, - 1.01, - 1.042, - 1021025.0, - 1021025.0, - 10210.0, - 10210.0, - 10210.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 1116300.0, - 1047955.0, - 68345.0, - 1.02, - 1.087, - 1139081.0, - 1139081.0, - 22782.0, - 22782.0, - 22782.0, - 0.0, - 0.0 - ], - "2006": [ - 36.0, - 1203071.0, - 1063768.0, - 139303.0, - 1.053, - 1.19, - 1266390.0, - 1266390.0, - 63320.0, - 63320.0, - 63320.0, - 0.0, - 0.0 - ], - "2007": [ - 24.0, - 1263224.0, - 996544.0, - 266681.0, - 1.111, - 1.408, - 1403583.0, - 1403583.0, - 140358.0, - 140358.0, - 140358.0, - 0.0, - 0.0 - ], - "2008": [ - 12.0, - 1194523.0, - 651558.0, - 542965.0, - 1.299, - 2.381, - 1551328.0, - 1551328.0, - 356805.0, - 356805.0, - 356805.0, - 0.0, - 0.0 - ] - }, - "total": [ - 9647366.0, - 8575112.0, - 1072254.0, - 10249350.0, - 10249350.0, - 601984.0, - 601984.0, - 601984.0, - 0.0, - 0.0 - ] - } - }, - "sheet_11": { - "Increasing Case Outstanding Strength": { - "rows": { - "1999": [ - 120.0, - 700000.0, - 700000.0, - 0.0, - 1.0, - 1.0, - 700000.0, - 700000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 735000.0, - 735000.0, - 0.0, - 1.0, - 1.0, - 735000.0, - 735000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 771750.0, - 764033.0, - 7718.0, - 1.0, - 1.01, - 771750.0, - 771750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 810338.0, - 802234.0, - 8103.0, - 1.0, - 1.01, - 810338.0, - 810338.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 842346.0, - 833837.0, - 8509.0, - 1.01, - 1.02, - 850854.0, - 850854.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 884463.0, - 857661.0, - 26802.0, - 1.01, - 1.042, - 893397.0, - 893397.0, - 8934.0, - 8934.0, - 8934.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 933377.0, - 863022.0, - 70355.0, - 1.02, - 1.087, - 951656.0, - 938067.0, - 18279.0, - 4690.0, - 4690.0, - -13589.0, - 0.0 - ], - "2006": [ - 36.0, - 962808.0, - 827375.0, - 135433.0, - 1.055, - 1.19, - 1015302.0, - 984970.0, - 52493.0, - 22162.0, - 22162.0, - -30331.0, - 0.0 - ], - "2007": [ - 24.0, - 979922.0, - 734295.0, - 245627.0, - 1.119, - 1.408, - 1096235.0, - 1034219.0, - 116313.0, - 54296.0, - 54296.0, - -62017.0, - 0.0 - ], - "2008": [ - 12.0, - 931185.0, - 456090.0, - 475094.0, - 1.318, - 2.381, - 1227589.0, - 1085930.0, - 296404.0, - 154745.0, - 154745.0, - -141659.0, - 0.0 - ] - }, - "total": [ - 8551189.0, - 7573548.0, - 977641.0, - 9052121.0, - 8804525.0, - 500932.0, - 253336.0, - 253336.0, - -247596.0, - 0.0 - ] - }, - "Increasing Claim Ratios and Case Outstanding Strength": { - "rows": { - "1999": [ - 120.0, - 700000.0, - 700000.0, - 0.0, - 1.0, - 1.0, - 700000.0, - 700000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 735000.0, - 735000.0, - 0.0, - 1.0, - 1.0, - 735000.0, - 735000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 771750.0, - 764033.0, - 7718.0, - 1.0, - 1.01, - 771750.0, - 771750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 810338.0, - 802234.0, - 8103.0, - 1.0, - 1.01, - 810338.0, - 810338.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 842346.0, - 833837.0, - 8509.0, - 1.01, - 1.02, - 850854.0, - 850854.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 1010815.0, - 980184.0, - 30631.0, - 1.01, - 1.042, - 1021025.0, - 1021025.0, - 10210.0, - 10210.0, - 10210.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 1133386.0, - 1047955.0, - 85431.0, - 1.019, - 1.087, - 1155482.0, - 1139081.0, - 22096.0, - 5695.0, - 5695.0, - -16400.0, - 0.0 - ], - "2006": [ - 36.0, - 1237897.0, - 1063768.0, - 174129.0, - 1.055, - 1.19, - 1305639.0, - 1266390.0, - 67742.0, - 28494.0, - 28494.0, - -39248.0, - 0.0 - ], - "2007": [ - 24.0, - 1329895.0, - 996544.0, - 333351.0, - 1.12, - 1.408, - 1488874.0, - 1403583.0, - 158980.0, - 73688.0, - 73688.0, - -85292.0, - 0.0 - ], - "2008": [ - 12.0, - 1330264.0, - 651558.0, - 678706.0, - 1.32, - 2.381, - 1756504.0, - 1551328.0, - 426240.0, - 221064.0, - 221064.0, - -205176.0, - 0.0 - ] - }, - "total": [ - 9901689.0, - 8575112.0, - 1326577.0, - 10595466.0, - 10249350.0, - 693777.0, - 347660.0, - 347660.0, - -346116.0, - 0.0 - ] - } - } - }, - "exhibit_iv": { - "sheet_2": { - "triangle": { - "1999": [ - 1011000.0, - 1254000.0, - 1377000.0, - 1454000.0, - 1477000.0, - 1493000.0, - 1500000.0, - 1500000.0, - 1500000.0, - 1500000.0 - ], - "2000": [ - 1061550.0, - 1316700.0, - 1445850.0, - 1526700.0, - 1550850.0, - 1567650.0, - 1575000.0, - 1575000.0, - 1575000.0 - ], - "2001": [ - 1114628.0, - 1382535.0, - 1518143.0, - 1603035.0, - 1628393.0, - 1646033.0, - 1653750.0, - 1653750.0 - ], - "2002": [ - 1170359.0, - 1451662.0, - 1594050.0, - 1683187.0, - 1709812.0, - 1728334.0, - 1736438.0 - ], - "2003": [ - 1228877.0, - 1524245.0, - 1673752.0, - 1767346.0, - 1795303.0, - 1814751.0 - ], - "2004": [ - 1290321.0, - 1600457.0, - 1757440.0, - 1855713.0, - 1885068.0 - ], - "2005": [ - 1354837.0, - 1680480.0, - 1845312.0, - 1948499.0 - ], - "2006": [ - 1422579.0, - 1764504.0, - 1937577.0 - ], - "2007": [ - 1493707.0, - 1852729.0 - ], - "2008": [ - 1568393.0 - ] - }, - "age_to_age": { - "1999": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0 - ], - "2001": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0 - ], - "2002": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005 - ], - "2003": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011 - ], - "2004": [ - 1.24, - 1.098, - 1.056, - 1.016 - ], - "2005": [ - 1.24, - 1.098, - 1.056 - ], - "2006": [ - 1.24, - 1.098 - ], - "2007": [ - 1.24 - ] - }, - "latest_5_volume_weighted": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.484, - 1.196, - 1.089, - 1.032, - 1.016, - 1.005, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.674, - 0.836, - 0.9179999999999999, - 0.9690000000000001, - 0.985, - 0.995, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_3": { - "triangle": { - "1999": [ - 470000.0, - 865000.0, - 1124000.0, - 1300000.0, - 1400000.0, - 1446000.0, - 1469000.0, - 1477000.0, - 1492000.0, - 1500000.0 - ], - "2000": [ - 493500.0, - 908250.0, - 1180200.0, - 1365000.0, - 1470000.0, - 1518300.0, - 1542450.0, - 1550850.0, - 1566600.0 - ], - "2001": [ - 518175.0, - 953663.0, - 1239210.0, - 1433250.0, - 1543500.0, - 1594215.0, - 1619573.0, - 1628393.0 - ], - "2002": [ - 544084.0, - 1001346.0, - 1301171.0, - 1504913.0, - 1620675.0, - 1673926.0, - 1700551.0 - ], - "2003": [ - 571288.0, - 1051413.0, - 1366229.0, - 1580158.0, - 1701709.0, - 1757622.0 - ], - "2004": [ - 599852.0, - 1103984.0, - 1434540.0, - 1659166.0, - 1786794.0 - ], - "2005": [ - 629845.0, - 1159183.0, - 1506268.0, - 1742124.0 - ], - "2006": [ - 661337.0, - 1217142.0, - 1581581.0 - ], - "2007": [ - 694404.0, - 1277999.0 - ], - "2008": [ - 729124.0 - ] - }, - "age_to_age": { - "1999": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005 - ], - "2000": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01 - ], - "2001": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005 - ], - "2002": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016 - ], - "2003": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033 - ], - "2004": [ - 1.84, - 1.299, - 1.157, - 1.077 - ], - "2005": [ - 1.84, - 1.299, - 1.157 - ], - "2006": [ - 1.84, - 1.299 - ], - "2007": [ - 1.84 - ] - }, - "latest_5_volume_weighted": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005 - ], - "selected_ldf": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005, - 1.0 - ], - "cdf_to_ultimate": [ - 3.191, - 1.734, - 1.335, - 1.154, - 1.071, - 1.037, - 1.021, - 1.016, - 1.005, - 1.0 - ], - "percent_developed": [ - 0.313, - 0.5770000000000001, - 0.7490000000000001, - 0.867, - 0.9329999999999999, - 0.9640000000000001, - 0.9790000000000001, - 0.985, - 0.995, - 1.0 - ] - }, - "sheet_4": { - "triangle": { - "1999": [ - 1011000.0, - 1254000.0, - 1377000.0, - 1454000.0, - 1477000.0, - 1493000.0, - 1500000.0, - 1500000.0, - 1500000.0, - 1500000.0 - ], - "2000": [ - 1061550.0, - 1316700.0, - 1445850.0, - 1526700.0, - 1550850.0, - 1567650.0, - 1575000.0, - 1575000.0, - 1575000.0 - ], - "2001": [ - 1114628.0, - 1382535.0, - 1518143.0, - 1603035.0, - 1628393.0, - 1646033.0, - 1653750.0, - 1653750.0 - ], - "2002": [ - 1170359.0, - 1451662.0, - 1594050.0, - 1683187.0, - 1709812.0, - 1728334.0, - 1736438.0 - ], - "2003": [ - 1228877.0, - 1524245.0, - 1673752.0, - 1767346.0, - 1795303.0, - 1814751.0 - ], - "2004": [ - 1290321.0, - 1600457.0, - 1757440.0, - 1855713.0, - 1885068.0 - ], - "2005": [ - 1505438.0, - 1879580.0, - 2072490.0, - 2193545.0 - ], - "2006": [ - 1776491.0, - 2232389.0, - 2471446.0 - ], - "2007": [ - 2119832.0, - 2680487.0 - ], - "2008": [ - 2556695.0 - ] - }, - "age_to_age": { - "1999": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0 - ], - "2000": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0 - ], - "2001": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005, - 1.0 - ], - "2002": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011, - 1.005 - ], - "2003": [ - 1.24, - 1.098, - 1.056, - 1.016, - 1.011 - ], - "2004": [ - 1.24, - 1.098, - 1.056, - 1.016 - ], - "2005": [ - 1.249, - 1.103, - 1.058 - ], - "2006": [ - 1.257, - 1.107 - ], - "2007": [ - 1.264 - ] - }, - "latest_5_volume_weighted": [ - 1.252, - 1.101, - 1.057, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0 - ], - "selected_ldf": [ - 1.252, - 1.101, - 1.057, - 1.016, - 1.011, - 1.005, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "cdf_to_ultimate": [ - 1.503, - 1.2, - 1.09, - 1.032, - 1.016, - 1.005, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "percent_developed": [ - 0.665, - 0.833, - 0.917, - 0.9690000000000001, - 0.985, - 0.995, - 1.0, - 1.0, - 1.0, - 1.0 - ] - }, - "sheet_5": { - "triangle": { - "1999": [ - 470000.0, - 865000.0, - 1124000.0, - 1300000.0, - 1400000.0, - 1446000.0, - 1469000.0, - 1477000.0, - 1492000.0, - 1500000.0 - ], - "2000": [ - 493500.0, - 908250.0, - 1180200.0, - 1365000.0, - 1470000.0, - 1518300.0, - 1542450.0, - 1550850.0, - 1566600.0 - ], - "2001": [ - 518175.0, - 953663.0, - 1239210.0, - 1433250.0, - 1543500.0, - 1594215.0, - 1619573.0, - 1628393.0 - ], - "2002": [ - 544084.0, - 1001346.0, - 1301171.0, - 1504913.0, - 1620675.0, - 1673926.0, - 1700551.0 - ], - "2003": [ - 571288.0, - 1051413.0, - 1366229.0, - 1580158.0, - 1701709.0, - 1757622.0 - ], - "2004": [ - 599852.0, - 1103984.0, - 1434540.0, - 1659166.0, - 1786794.0 - ], - "2005": [ - 686001.0, - 1276601.0, - 1677289.0, - 1951435.0 - ], - "2006": [ - 793305.0, - 1493074.0, - 1983482.0 - ], - "2007": [ - 927874.0, - 1766164.0 - ], - "2008": [ - 1097644.0 - ] - }, - "age_to_age": { - "1999": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005 - ], - "2000": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01 - ], - "2001": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016, - 1.005 - ], - "2002": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033, - 1.016 - ], - "2003": [ - 1.84, - 1.299, - 1.157, - 1.077, - 1.033 - ], - "2004": [ - 1.84, - 1.299, - 1.157, - 1.077 - ], - "2005": [ - 1.861, - 1.314, - 1.163 - ], - "2006": [ - 1.882, - 1.328 - ], - "2007": [ - 1.903 - ] - }, - "latest_5_volume_weighted": [ - 1.87, - 1.31, - 1.158, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005 - ], - "selected_ldf": [ - 1.87, - 1.31, - 1.158, - 1.077, - 1.033, - 1.016, - 1.005, - 1.01, - 1.005, - 1.0 - ], - "cdf_to_ultimate": [ - 3.273, - 1.75, - 1.336, - 1.154, - 1.071, - 1.037, - 1.021, - 1.016, - 1.005, - 1.0 - ], - "percent_developed": [ - 0.306, - 0.5710000000000001, - 0.748, - 0.867, - 0.9329999999999999, - 0.9640000000000001, - 0.9790000000000001, - 0.985, - 0.995, - 1.0 - ] - }, - "sheet_1": { - "Steady-State (No Change in Product Mix)": { - "rows": { - "1999": [ - 1000000.0, - 1000000.0, - 2000000.0, - 0.7, - 0.8, - 0.75, - 700000.0, - 800000.0, - 1500000.0, - 1500000.0, - 0.0 - ], - "2000": [ - 1050000.0, - 1050000.0, - 2100000.0, - 0.7, - 0.8, - 0.75, - 735000.0, - 840000.0, - 1575000.0, - 1575000.0, - 0.0 - ], - "2001": [ - 1102500.0, - 1102500.0, - 2205000.0, - 0.7, - 0.8, - 0.75, - 771750.0, - 882000.0, - 1653750.0, - 1653750.0, - 0.0 - ], - "2002": [ - 1157625.0, - 1157625.0, - 2315250.0, - 0.7, - 0.8, - 0.75, - 810338.0, - 926100.0, - 1736438.0, - 1736438.0, - 0.0 - ], - "2003": [ - 1215506.0, - 1215506.0, - 2431013.0, - 0.7, - 0.8, - 0.75, - 850854.0, - 972405.0, - 1823259.0, - 1814751.0, - 8509.0 - ], - "2004": [ - 1276282.0, - 1276282.0, - 2552563.0, - 0.7, - 0.8, - 0.75, - 893397.0, - 1021025.0, - 1914422.0, - 1885068.0, - 29354.0 - ], - "2005": [ - 1340096.0, - 1340096.0, - 2680191.0, - 0.7, - 0.8, - 0.75, - 938067.0, - 1072077.0, - 2010143.0, - 1948499.0, - 61644.0 - ], - "2006": [ - 1407100.0, - 1407100.0, - 2814201.0, - 0.7, - 0.8, - 0.75, - 984970.0, - 1125680.0, - 2110651.0, - 1937577.0, - 173073.0 - ], - "2007": [ - 1477455.0, - 1477455.0, - 2954911.0, - 0.7, - 0.8, - 0.75, - 1034219.0, - 1181964.0, - 2216183.0, - 1852729.0, - 363454.0 - ], - "2008": [ - 1551328.0, - 1551328.0, - 3102656.0, - 0.7, - 0.8, - 0.75, - 1085930.0, - 1241063.0, - 2326992.0, - 1568393.0, - 758599.0 - ] - }, - "total": [ - 12577893.0, - 12577893.0, - 25155785.0, - 8804525.0, - 10062314.0, - 18866839.0, - 17472204.0, - 1394634.0 - ] - }, - "Changing Product Mix": { - "rows": { - "1999": [ - 1000000.0, - 1000000.0, - 2000000.0, - 0.7, - 0.8, - 0.75, - 700000.0, - 800000.0, - 1500000.0, - 1500000.0, - 0.0 - ], - "2000": [ - 1050000.0, - 1050000.0, - 2100000.0, - 0.7, - 0.8, - 0.75, - 735000.0, - 840000.0, - 1575000.0, - 1575000.0, - 0.0 - ], - "2001": [ - 1102500.0, - 1102500.0, - 2205000.0, - 0.7, - 0.8, - 0.75, - 771750.0, - 882000.0, - 1653750.0, - 1653750.0, - 0.0 - ], - "2002": [ - 1157625.0, - 1157625.0, - 2315250.0, - 0.7, - 0.8, - 0.75, - 810338.0, - 926100.0, - 1736438.0, - 1736438.0, - 0.0 - ], - "2003": [ - 1215506.0, - 1215506.0, - 2431013.0, - 0.7, - 0.8, - 0.75, - 850854.0, - 972405.0, - 1823259.0, - 1814751.0, - 8509.0 - ], - "2004": [ - 1276282.0, - 1276282.0, - 2552563.0, - 0.7, - 0.8, - 0.75, - 893397.0, - 1021025.0, - 1914422.0, - 1885068.0, - 29354.0 - ], - "2005": [ - 1340096.0, - 1659166.0, - 2999262.0, - 0.7, - 0.8, - 0.755, - 938067.0, - 1327333.0, - 2265400.0, - 2193545.0, - 71855.0 - ], - "2006": [ - 1407100.0, - 2156916.0, - 3564016.0, - 0.7, - 0.8, - 0.7609999999999999, - 984970.0, - 1725533.0, - 2710503.0, - 2471446.0, - 239057.0 - ], - "2007": [ - 1477455.0, - 2803991.0, - 4281446.0, - 0.7, - 0.8, - 0.765, - 1034219.0, - 2243192.0, - 3277411.0, - 2680487.0, - 596924.0 - ], - "2008": [ - 1551328.0, - 3645188.0, - 5196516.0, - 0.7, - 0.8, - 0.77, - 1085930.0, - 2916150.0, - 4002080.0, - 2556695.0, - 1445385.0 - ] - }, - "total": [ - 12577893.0, - 17067173.0, - 29645066.0, - 8804525.0, - 13653738.0, - 22458263.0, - 20067179.0, - 2391084.0 - ] - } - }, - "sheet_6": { - "Steady-State (No Change in Product Mix)": { - "rows": { - "1999": [ - 120.0, - 1500000.0, - 1500000.0, - 0.0, - 1.0, - 1.0, - 1500000.0, - 1500000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 1575000.0, - 1566600.0, - 8400.0, - 1.0, - 1.005, - 1575000.0, - 1575000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 1653750.0, - 1628393.0, - 25358.0, - 1.0, - 1.016, - 1653750.0, - 1653750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 1736438.0, - 1700551.0, - 35886.0, - 1.0, - 1.021, - 1736438.0, - 1736438.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 1814751.0, - 1757622.0, - 57129.0, - 1.005, - 1.037, - 1823259.0, - 1823259.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 1885068.0, - 1786794.0, - 98274.0, - 1.016, - 1.071, - 1914422.0, - 1914422.0, - 29354.0, - 29354.0, - 29354.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 1948499.0, - 1742124.0, - 206375.0, - 1.032, - 1.154, - 2010143.0, - 2010143.0, - 61644.0, - 61644.0, - 61644.0, - 0.0, - 0.0 - ], - "2006": [ - 36.0, - 1937577.0, - 1581581.0, - 355996.0, - 1.089, - 1.335, - 2110651.0, - 2110651.0, - 173073.0, - 173073.0, - 173073.0, - 0.0, - 0.0 - ], - "2007": [ - 24.0, - 1852729.0, - 1277999.0, - 574730.0, - 1.196, - 1.734, - 2216183.0, - 2216183.0, - 363454.0, - 363454.0, - 363454.0, - 0.0, - 0.0 - ], - "2008": [ - 12.0, - 1568393.0, - 729124.0, - 839269.0, - 1.484, - 3.191, - 2326992.0, - 2326992.0, - 758599.0, - 758599.0, - 758599.0, - 0.0, - 0.0 - ] - }, - "total": [ - 17472204.0, - 15270788.0, - 2201416.0, - 18866839.0, - 18866839.0, - 1394634.0, - 1394634.0, - 1394634.0, - 0.0, - 0.0 - ] - }, - "Changing Product Mix": { - "rows": { - "1999": [ - 120.0, - 1500000.0, - 1500000.0, - 0.0, - 1.0, - 1.0, - 1500000.0, - 1500000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2000": [ - 108.0, - 1575000.0, - 1566600.0, - 8400.0, - 1.0, - 1.005, - 1575000.0, - 1575000.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2001": [ - 96.0, - 1653750.0, - 1628393.0, - 25358.0, - 1.0, - 1.016, - 1653750.0, - 1653750.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2002": [ - 84.0, - 1736438.0, - 1700551.0, - 35886.0, - 1.0, - 1.021, - 1736438.0, - 1736438.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "2003": [ - 72.0, - 1814751.0, - 1757622.0, - 57129.0, - 1.005, - 1.037, - 1823259.0, - 1823259.0, - 8509.0, - 8509.0, - 8509.0, - 0.0, - 0.0 - ], - "2004": [ - 60.0, - 1885068.0, - 1786794.0, - 98274.0, - 1.016, - 1.071, - 1914422.0, - 1914422.0, - 29354.0, - 29354.0, - 29354.0, - 0.0, - 0.0 - ], - "2005": [ - 48.0, - 2193545.0, - 1951435.0, - 242111.0, - 1.032, - 1.154, - 2262942.0, - 2251655.0, - 69397.0, - 58110.0, - 71855.0, - 2458.0, - 13745.0 - ], - "2006": [ - 36.0, - 2471446.0, - 1983482.0, - 487964.0, - 1.09, - 1.336, - 2693735.0, - 2650749.0, - 222289.0, - 179303.0, - 239057.0, - 16768.0, - 59754.0 - ], - "2007": [ - 24.0, - 2680487.0, - 1766164.0, - 914323.0, - 1.2, - 1.75, - 3217775.0, - 3091666.0, - 537288.0, - 411179.0, - 596924.0, - 59636.0, - 185746.0 - ], - "2008": [ - 12.0, - 2556695.0, - 1097644.0, - 1459051.0, - 1.503, - 3.273, - 3842645.0, - 3592939.0, - 1285950.0, - 1036245.0, - 1445385.0, - 159435.0, - 409141.0 - ] - }, - "total": [ - 20067179.0, - 16738684.0, - 3328495.0, - 22219966.0, - 21789878.0, - 2152787.0, - 1722699.0, - 2391084.0, - 238297.0, - 668386.0 - ] - } - } - } -} \ No newline at end of file From 0bc53a1a6212fa12af7a44dde34faa72acbdd189 Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:17:42 -0400 Subject: [PATCH 10/11] Unhide the Exhibit III functions. Hide the assertion blocks. --- docs/friedland/chapter_7_part_2.ipynb | 6567 +++++++++++++------------ 1 file changed, 3338 insertions(+), 3229 deletions(-) diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index e7bc6bafb..26bec0881 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 507, + "execution_count": 2, "id": "f42e0344", "metadata": {}, "outputs": [], @@ -59,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 508, + "execution_count": 3, "id": "5595108e", "metadata": {}, "outputs": [], @@ -77,13 +77,9 @@ }, { "cell_type": "code", - "execution_count": 509, + "execution_count": 4, "id": "79e5ac39", - "metadata": { - "tags": [ - "remove-input" - ] - }, + "metadata": {}, "outputs": [], "source": [ "def dev_exhibit(tri: cl.Triangle, avg_params: dict[str,int], selected_avg: str, tail: float) -> dict[cl.Triangle()]:\n", @@ -140,13 +136,9 @@ }, { "cell_type": "code", - "execution_count": 510, + "execution_count": 5, "id": "99de7a11", - "metadata": { - "tags": [ - "remove-input" - ] - }, + "metadata": {}, "outputs": [], "source": [ "def ex3sht1(\n", @@ -309,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 511, + "execution_count": 6, "id": "06a03be7", "metadata": {}, "outputs": [ @@ -334,25 +326,25 @@ "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", @@ -369,142 +361,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Steady StateIncreasing Claim RatiosSteady StateIncreasing Claim Ratios
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,98419991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068919,30618,76285.0%1,139,0821,116,30022,782
20061,407,10070.0%984,970935,72249,24890.0%1,266,3911,203,07163,320
20071,477,45570.0%1,034,219930,797103,42295.0%1,403,5821,263,224140,358
20081,551,32870.0%1,085,930836,166249,764100.0%1,551,3281,194,523356,805
Total12,577,8938,804,5278,365,888438,63910,249,3519,647,367601,984
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -515,25 +507,25 @@ "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", @@ -550,142 +542,142 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Increasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding StrengthIncreasing Case Outstanding StrengthIncreasing Claim Ratios and Case Outstanding Strength
 Earned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNREarned PremiumUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNRUlt. Claim RatioUlt. ClaimsRep. Claims 12/31/08Actual IBNR
Accident Year
19991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,66019991,000,00070.0%700,000700,000070.0%700,000700,0000
20001,050,00070.0%735,000735,000070.0%735,000735,0000
20011,102,50070.0%771,750771,750070.0%771,750771,7500
20021,157,62570.0%810,338810,338070.0%810,338810,3380
20031,215,50670.0%850,855842,3468,50970.0%850,855842,3468,509
20041,276,28270.0%893,397884,4638,93480.0%1,021,0251,010,81510,210
20051,340,09670.0%938,068933,3774,69185.0%1,139,0821,133,3865,696
20061,407,10070.0%984,970962,80822,16290.0%1,266,3911,237,89728,494
20071,477,45570.0%1,034,219979,92254,29795.0%1,403,5821,329,89573,687
20081,551,32870.0%1,085,930931,185154,745100.0%1,551,3281,330,264221,064
Total12,577,8938,804,5278,551,189253,33810,249,3519,901,691347,660
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -712,9 +704,13 @@ }, { "cell_type": "code", - "execution_count": 512, + "execution_count": 7, "id": "8f547560", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -817,7 +813,7 @@ }, { "cell_type": "code", - "execution_count": 513, + "execution_count": 8, "id": "3f94ce14", "metadata": {}, "outputs": [ @@ -1037,135 +1033,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1403,9 +1399,13 @@ }, { "cell_type": "code", - "execution_count": 514, + "execution_count": 9, "id": "81e510ee", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -1431,7 +1431,7 @@ }, { "cell_type": "code", - "execution_count": 515, + "execution_count": 10, "id": "80dde7e9", "metadata": {}, "outputs": [ @@ -1651,135 +1651,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2018,9 +2018,13 @@ }, { "cell_type": "code", - "execution_count": 516, + "execution_count": 11, "id": "025358aa", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -2046,7 +2050,7 @@ }, { "cell_type": "code", - "execution_count": 517, + "execution_count": 12, "id": "35744cce", "metadata": {}, "outputs": [ @@ -2266,135 +2270,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.16919991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0321.010
20051.1691.0561.032
20061.1691.056
20071.169
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2633,9 +2637,13 @@ }, { "cell_type": "code", - "execution_count": 518, + "execution_count": 13, "id": "7cc96844", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -2661,7 +2669,7 @@ }, { "cell_type": "code", - "execution_count": 519, + "execution_count": 14, "id": "8d9a4359", "metadata": {}, "outputs": [ @@ -2881,135 +2889,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3248,9 +3256,13 @@ }, { "cell_type": "code", - "execution_count": 520, + "execution_count": 15, "id": "b5a6558d", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -3276,7 +3288,7 @@ }, { "cell_type": "code", - "execution_count": 521, + "execution_count": 16, "id": "0ab5bcf6", "metadata": {}, "outputs": [ @@ -3496,135 +3508,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3863,9 +3875,13 @@ }, { "cell_type": "code", - "execution_count": 522, + "execution_count": 17, "id": "2960fa5a", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -3891,7 +3907,7 @@ }, { "cell_type": "code", - "execution_count": 523, + "execution_count": 18, "id": "5a759ad5", "metadata": {}, "outputs": [ @@ -4111,135 +4127,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4478,9 +4494,13 @@ }, { "cell_type": "code", - "execution_count": 524, + "execution_count": 19, "id": "009fb8f3", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -4506,7 +4526,7 @@ }, { "cell_type": "code", - "execution_count": 525, + "execution_count": 20, "id": "ec0b53a5", "metadata": {}, "outputs": [ @@ -4726,135 +4746,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.19819991.1691.0561.0321.0101.0001.0101.0001.0001.000
20001.1691.0561.0321.0101.0001.0101.0001.000
20011.1691.0561.0321.0101.0001.0101.000
20021.1691.0561.0321.0101.0001.010
20031.1691.0561.0321.0101.000
20041.1691.0561.0351.007
20051.1691.0631.040
20061.1841.073
20071.198
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5093,9 +5113,13 @@ }, { "cell_type": "code", - "execution_count": 526, + "execution_count": 21, "id": "715e4a58", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -5121,7 +5145,7 @@ }, { "cell_type": "code", - "execution_count": 527, + "execution_count": 22, "id": "16a0f5fd", "metadata": {}, "outputs": [ @@ -5341,135 +5365,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.69019991.6901.1831.0951.0431.0211.0101.0001.0101.000
20001.6901.1831.0951.0431.0211.0101.0001.010
20011.6901.1831.0951.0431.0211.0101.000
20021.6901.1831.0951.0431.0211.010
20031.6901.1831.0951.0431.021
20041.6901.1831.0951.043
20051.6901.1831.095
20061.6901.183
20071.690
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5708,9 +5732,13 @@ }, { "cell_type": "code", - "execution_count": 528, + "execution_count": 23, "id": "2fffd889", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -5736,7 +5764,7 @@ }, { "cell_type": "code", - "execution_count": 529, + "execution_count": 24, "id": "191822b3", "metadata": { "tags": [ @@ -5907,7 +5935,7 @@ }, { "cell_type": "code", - "execution_count": 530, + "execution_count": 25, "id": "e0f134ea", "metadata": {}, "outputs": [ @@ -5928,23 +5956,23 @@ "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", @@ -5965,186 +5993,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,639051999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548919,306863,02256,2841.0201.087938,068938,06718,76218,76118,76200
200636935,722827,375108,3471.0531.190984,970984,97049,24849,24849,24800
200724930,797734,295196,5021.1111.4081,034,2191,034,218103,422103,421103,42201
200812836,166456,090380,0761.2992.3811,085,9301,085,928249,764249,762249,76402
Total8,365,8887,573,547792,3418,804,5278,804,522438,639438,634438,63905
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6167,23 +6195,23 @@ "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", @@ -6204,186 +6232,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,984011999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,116,3001,047,95568,3451.0201.0871,139,0821,139,08122,78222,78122,78200
2006361,203,0711,063,768139,3031.0531.1901,266,3911,266,39063,32063,31963,32000
2007241,263,224996,544266,6801.1111.4081,403,5821,403,583140,358140,359140,3580-0
2008121,194,523651,558542,9651.2992.3811,551,3281,551,328356,805356,805356,80500
Total9,647,3678,575,1131,072,25410,249,35110,249,350601,984601,983601,98401
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6406,23 +6434,23 @@ "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", @@ -6443,186 +6471,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,59551999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
200460884,463857,66126,8021.0101.042893,397893,3978,9348,9348,93400
200548933,377863,02270,3551.0201.087951,657938,06718,2804,6904,691-13,5890
200636962,808827,375135,4331.0551.1901,015,301984,97052,49322,16222,162-30,3310
200724979,922734,295245,6271.1191.4081,096,2351,034,218116,31354,29654,297-62,0161
200812931,185456,090475,0951.3182.3811,227,5891,085,928296,404154,743154,745-141,6592
Total8,551,1897,573,547977,6429,052,1218,804,522500,932253,333253,338-247,5955
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6645,23 +6673,23 @@ "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", @@ -6682,186 +6710,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
1999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,11811999120700,000700,00001.0001.000700,000700,00000000
2000108735,000735,00001.0001.000735,000735,00000000
200196771,750764,0337,7171.0001.010771,750771,7510100-1
200284810,338802,2348,1041.0001.010810,338810,3370-1001
200372842,346833,8378,5091.0101.020850,855850,8548,5098,5088,50900
2004601,010,815980,18430,6311.0101.0421,021,0251,021,02510,21010,21010,21000
2005481,133,3861,047,95585,4311.0191.0871,155,4821,139,08122,0965,6955,696-16,4000
2006361,237,8971,063,768174,1291.0551.1901,305,6391,266,39067,74228,49328,494-39,2490
2007241,329,895996,544333,3511.1201.4081,488,8751,403,583158,98073,68873,687-85,293-0
2008121,330,264651,558678,7061.3202.3811,756,5041,551,328426,240221,064221,064-205,1760
Total9,901,6918,575,1131,326,57810,595,46910,249,350693,778347,659347,660-346,1181
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -6880,9 +6908,13 @@ }, { "cell_type": "code", - "execution_count": 531, + "execution_count": 26, "id": "21931acb", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "estimate_cols = [\n", @@ -6993,7 +7025,7 @@ }, { "cell_type": "code", - "execution_count": 532, + "execution_count": 27, "id": "8d88d02f", "metadata": {}, "outputs": [], @@ -7014,7 +7046,7 @@ }, { "cell_type": "code", - "execution_count": 533, + "execution_count": 28, "id": "3db66603", "metadata": {}, "outputs": [], @@ -7167,7 +7199,7 @@ }, { "cell_type": "code", - "execution_count": 534, + "execution_count": 29, "id": "346c3742", "metadata": {}, "outputs": [ @@ -7187,26 +7219,26 @@ "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", @@ -7225,164 +7257,164 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNRPriv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,63419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,340,0962,680,19170.0%80.0%75.0%938,0671,072,0762,010,1431,948,49961,644
20061,407,1001,407,1002,814,20170.0%80.0%75.0%984,9701,125,6802,110,6511,937,577173,074
20071,477,4561,477,4562,954,91170.0%80.0%75.0%1,034,2191,181,9642,216,1831,852,729363,454
20081,551,3281,551,3283,102,65670.0%80.0%75.0%1,085,9301,241,0622,326,9921,568,393758,599
Total12,577,89212,577,89225,155,7858,804,52510,062,31418,866,83917,472,2051,394,634
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7404,26 +7436,26 @@ "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", @@ -7442,164 +7474,164 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Priv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNRPriv Pass AutoComm AutoTotalPriv Pass Auto (%)Comm Auto (%)Total (%)Priv Pass AutoComm AutoComm AutoReported Claims as at 12/31/2008Actual IBNR
Accident Year
19991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,08419991,000,0001,000,0002,000,00070.0%80.0%75.0%700,000800,0001,500,0001,500,0000
20001,050,0001,050,0002,100,00070.0%80.0%75.0%735,000840,0001,575,0001,575,0000
20011,102,5001,102,5002,205,00070.0%80.0%75.0%771,750882,0001,653,7501,653,7500
20021,157,6251,157,6252,315,25070.0%80.0%75.0%810,338926,1001,736,4381,736,438-0
20031,215,5061,215,5062,431,01370.0%80.0%75.0%850,855972,4051,823,2601,814,7518,509
20041,276,2821,276,2822,552,56370.0%80.0%75.0%893,3971,021,0251,914,4221,885,06829,354
20051,340,0961,659,1662,999,26270.0%80.0%75.5%938,0671,327,3332,265,4002,193,54571,855
20061,407,1002,156,9163,564,01670.0%80.0%76.1%984,9701,725,5322,710,5032,471,446239,057
20071,477,4562,803,9904,281,44670.0%80.0%76.5%1,034,2192,243,1923,277,4112,680,487596,924
20081,551,3283,645,1885,196,51670.0%80.0%77.0%1,085,9302,916,1504,002,0802,556,6951,445,385
Total12,577,89217,067,17429,645,0668,804,52513,653,73922,458,26420,067,1802,391,084
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -7614,9 +7646,13 @@ }, { "cell_type": "code", - "execution_count": 535, + "execution_count": 30, "id": "c6744884", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -7668,7 +7704,7 @@ }, { "cell_type": "code", - "execution_count": 536, + "execution_count": 31, "id": "8a7c6e5d", "metadata": {}, "outputs": [ @@ -7888,135 +7924,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.24019991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2401.0981.056
20061.2401.098
20071.240
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -8255,9 +8291,13 @@ }, { "cell_type": "code", - "execution_count": 537, + "execution_count": 32, "id": "2833183d", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -8283,7 +8323,7 @@ }, { "cell_type": "code", - "execution_count": 538, + "execution_count": 33, "id": "8c9306e2", "metadata": {}, "outputs": [ @@ -8503,135 +8543,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.84019991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8401.2991.157
20061.8401.299
20071.840
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -8870,9 +8910,13 @@ }, { "cell_type": "code", - "execution_count": 539, + "execution_count": 34, "id": "5059355c", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -8898,7 +8942,7 @@ }, { "cell_type": "code", - "execution_count": 540, + "execution_count": 35, "id": "5c96f69e", "metadata": {}, "outputs": [ @@ -9118,135 +9162,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.26419991.2401.0981.0561.0161.0111.0051.0001.0001.000
20001.2401.0981.0561.0161.0111.0051.0001.000
20011.2401.0981.0561.0161.0111.0051.000
20021.2401.0981.0561.0161.0111.005
20031.2401.0981.0561.0161.011
20041.2401.0981.0561.016
20051.2491.1031.058
20061.2571.107
20071.264
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -9485,9 +9529,13 @@ }, { "cell_type": "code", - "execution_count": 541, + "execution_count": 36, "id": "ee12d597", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -9513,7 +9561,7 @@ }, { "cell_type": "code", - "execution_count": 542, + "execution_count": 37, "id": "e0cc72a6", "metadata": {}, "outputs": [ @@ -9733,135 +9781,135 @@ "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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-12012-2424-3636-4848-6060-7272-8484-9696-108108-120
19991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.90319991.8401.2991.1571.0771.0331.0161.0051.0101.005
20001.8401.2991.1571.0771.0331.0161.0051.010
20011.8401.2991.1571.0771.0331.0161.005
20021.8401.2991.1571.0771.0331.016
20031.8401.2991.1571.0771.033
20041.8401.2991.1571.077
20051.8611.3141.163
20061.8821.328
20071.903
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10100,9 +10148,13 @@ }, { "cell_type": "code", - "execution_count": 543, + "execution_count": 38, "id": "f8c3d22b", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "assert np.allclose(\n", @@ -10128,7 +10180,7 @@ }, { "cell_type": "code", - "execution_count": 544, + "execution_count": 39, "id": "768432dc", "metadata": {}, "outputs": [], @@ -10232,7 +10284,7 @@ " colC)\n", "\n", " col12 = pd.DataFrame({\n", - " \"Actual IBNR\" : format_col(colD) # col_diff(col_mult(ult, cdf), col3)\n", + " \"Actual IBNR\" : format_col(colD) \n", " })\n", "\n", " col13 = pd.DataFrame({\n", @@ -10288,10 +10340,25 @@ "\n", " display(HTML(f\"

Exhibit IV Sheet 6 — {scenario}

\"))\n", "\n", + " check_cols = [\n", + " \"Projected Ult. Claims Using Dev. Method - Reported\",\n", + " \"Projected Ult. Claims Using Dev. Method - Paid\",\n", + " \"Estimated IBNR Using Dev. Method - Reported\",\n", + " \"Estimated IBNR Using Dev. Method - Paid\",\n", + " \"Actual IBNR\",\n", + " \"Difference from Actual IBNR - Reported\",\n", + " \"Difference from Actual IBNR - Paid\",\n", + " ]\n", + "\n", + " print(results[check_cols].to_string())\n", + "\n", + "\n", " display(\n", " results.style.format(format_dict, na_rep=\"\")\n", " )\n", "\n", + " \n", + "\n", " return results\n" ] }, @@ -10305,7 +10372,7 @@ }, { "cell_type": "code", - "execution_count": 545, + "execution_count": 40, "id": "9b97c370", "metadata": {}, "outputs": [ @@ -10321,28 +10388,47 @@ "metadata": {}, "output_type": "display_data" }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "Accident Year \n", + "1999 1.500000e+06 1.500000e+06 0.000000e+00 0.000000e+00 0.00 0.000000 0.000000\n", + "2000 1.575000e+06 1.575000e+06 0.000000e+00 0.000000e+00 0.00 0.000000 0.000000\n", + "2001 1.653750e+06 1.653751e+06 0.000000e+00 5.077861e-01 0.00 0.000000 -0.507786\n", + "2002 1.736438e+06 1.736437e+06 0.000000e+00 -6.286533e-01 -0.50 -0.500000 0.128653\n", + "2003 1.823260e+06 1.823259e+06 8.508579e+03 8.508370e+03 8508.75 0.170703 0.380116\n", + "2004 1.914422e+06 1.914422e+06 2.935449e+04 2.935417e+04 29354.25 -0.239665 0.082623\n", + "2005 2.010144e+06 2.010143e+06 6.164465e+04 6.164403e+04 61644.25 -0.396446 0.223476\n", + "2006 2.110650e+06 2.110651e+06 1.730732e+05 1.730736e+05 173073.75 0.573334 0.153008\n", + "2007 2.216183e+06 2.216183e+06 3.634539e+05 3.634537e+05 363454.25 0.377634 0.564373\n", + "2008 2.326992e+06 2.326992e+06 7.585992e+05 7.585987e+05 758599.00 -0.167707 0.339637\n", + "Total 1.886684e+07 1.886684e+07 1.394634e+06 1.394632e+06 1394633.75 -0.182146 1.364101\n" + ] + }, { "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", @@ -10363,186 +10449,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-0119991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005481,948,4991,742,124206,3751.0321.1542,010,1442,010,14361,64561,64461,644-00
2006361,937,5771,581,581355,9961.0891.3352,110,6502,110,651173,073173,074173,07410
2007241,852,7291,277,999574,7301.1961.7342,216,1832,216,183363,454363,454363,45401
2008121,568,393729,124839,2691.4843.1912,326,9922,326,992758,599758,599758,599-00
Total17,472,20515,270,7882,201,41718,866,83918,866,8371,394,6341,394,6321,394,634-01
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10560,28 +10646,47 @@ "metadata": {}, "output_type": "display_data" }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Projected Ult. Claims Using Dev. Method - Reported Projected Ult. Claims Using Dev. Method - Paid Estimated IBNR Using Dev. Method - Reported Estimated IBNR Using Dev. Method - Paid Actual IBNR Difference from Actual IBNR - Reported Difference from Actual IBNR - Paid\n", + "Accident Year \n", + "1999 1.500000e+06 1.500000e+06 0.000000e+00 0.000000e+00 0.00 0.000000 0.000000\n", + "2000 1.575000e+06 1.575000e+06 0.000000e+00 0.000000e+00 0.00 0.000000 0.000000\n", + "2001 1.653750e+06 1.653751e+06 0.000000e+00 5.077861e-01 0.00 0.000000 -0.507786\n", + "2002 1.736438e+06 1.736437e+06 0.000000e+00 -6.286533e-01 -0.50 -0.500000 0.128653\n", + "2003 1.823260e+06 1.823259e+06 8.508579e+03 8.508370e+03 8508.75 0.170703 0.380116\n", + "2004 1.914422e+06 1.914422e+06 2.935449e+04 2.935417e+04 29354.25 -0.239665 0.082623\n", + "2005 2.262942e+06 2.251656e+06 6.939716e+04 5.811071e+04 71855.05 2457.885317 13744.337224\n", + "2006 2.693735e+06 2.650749e+06 2.222891e+05 1.793029e+05 239056.75 16767.659023 59753.872297\n", + "2007 3.217775e+06 3.091665e+06 5.372877e+05 4.111784e+05 596924.25 59636.506072 185745.825499\n", + "2008 3.842646e+06 3.592941e+06 1.285951e+06 1.036246e+06 1445385.00 159434.484745 409138.546111\n", + "Total 2.221997e+07 2.178988e+07 2.152788e+06 1.722701e+06 2391083.55 238295.966195 668382.664738\n" + ] + }, { "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", @@ -10602,186 +10707,186 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 Age of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - PaidAge of Accident Year at 12/31/08Claims at 12/31/2008 - ReportedClaims at 12/31/2008 - PaidCase OutstandingCDF to Ult. - ReportedCDF to Ult. - PaidProjected Ult. Claims Using Dev. Method - ReportedProjected Ult. Claims Using Dev. Method - PaidEstimated IBNR Using Dev. Method - ReportedEstimated IBNR Using Dev. Method - PaidActual IBNRDifference from Actual IBNR - ReportedDifference from Actual IBNR - Paid
Accident Year
19991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,38319991201,500,0001,500,00001.0001.0001,500,0001,500,00000000
20001081,575,0001,566,6008,4001.0001.0051,575,0001,575,00000000
2001961,653,7501,628,39325,3571.0001.0161,653,7501,653,7510100-1
2002841,736,4381,700,55135,8871.0001.0211,736,4381,736,4370-1-0-00
2003721,814,7511,757,62257,1291.0051.0371,823,2601,823,2598,5098,5088,50900
2004601,885,0681,786,79498,2741.0161.0711,914,4221,914,42229,35429,35429,354-00
2005482,193,5451,951,435242,1101.0321.1542,262,9422,251,65669,39758,11171,8552,45813,744
2006362,471,4461,983,482487,9641.0901.3362,693,7352,650,749222,289179,303239,05716,76859,754
2007242,680,4871,766,164914,3231.2001.7503,217,7753,091,665537,288411,178596,92459,637185,746
2008122,556,6951,097,6441,459,0511.5033.2733,842,6463,592,9411,285,9511,036,2461,445,385159,434409,139
Total20,067,18016,738,6853,328,49522,219,96821,789,8812,152,7881,722,7012,391,084238,296668,383
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -10796,9 +10901,13 @@ }, { "cell_type": "code", - "execution_count": 546, + "execution_count": 51, "id": "471fa752", - "metadata": {}, + "metadata": { + "tags": [ + "remove-input" + ] +}, "outputs": [], "source": [ "estimate_cols = [\n", @@ -10825,8 +10934,8 @@ " [2216183, 2216183, 363454, 363454],\n", " [2326992, 2326992, 758599, 758599],\n", "]),\n", - " atol=3,\n", - " rtol=0,\n", + " atol=1,\n", + " rtol=1e-5,\n", ")\n", "\n", "assert np.allclose(\n", @@ -10846,8 +10955,8 @@ " [3217775, 3091666, 537288, 411179],\n", " [3842645, 3592939, 1285950, 1036245],\n", "]),\n", - " atol=3,\n", - " rtol=0,\n", + " atol=1,\n", + " rtol=1e-5,\n", ")" ] } From 26b26657a847bdb4e324698423a3c751ac32f00d Mon Sep 17 00:00:00 2001 From: Anonymous <38025250+salexanian@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:47:00 -0400 Subject: [PATCH 11/11] Commented out print function in Ex4sh6 that was used for debugging purposes only --- docs/friedland/chapter_7_part_2.ipynb | 68 +++++++++++++-------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/friedland/chapter_7_part_2.ipynb b/docs/friedland/chapter_7_part_2.ipynb index 26bec0881..76cf42591 100644 --- a/docs/friedland/chapter_7_part_2.ipynb +++ b/docs/friedland/chapter_7_part_2.ipynb @@ -708,9 +708,9 @@ "id": "8f547560", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -1403,9 +1403,9 @@ "id": "81e510ee", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -2022,9 +2022,9 @@ "id": "025358aa", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -2641,9 +2641,9 @@ "id": "7cc96844", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -3260,9 +3260,9 @@ "id": "b5a6558d", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -3879,9 +3879,9 @@ "id": "2960fa5a", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -4498,9 +4498,9 @@ "id": "009fb8f3", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -5117,9 +5117,9 @@ "id": "715e4a58", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -5736,9 +5736,9 @@ "id": "2fffd889", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -6912,9 +6912,9 @@ "id": "21931acb", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "estimate_cols = [\n", @@ -7650,9 +7650,9 @@ "id": "c6744884", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -8295,9 +8295,9 @@ "id": "2833183d", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -8914,9 +8914,9 @@ "id": "5059355c", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -9533,9 +9533,9 @@ "id": "ee12d597", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -10152,9 +10152,9 @@ "id": "f8c3d22b", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "assert np.allclose(\n", @@ -10180,7 +10180,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "id": "768432dc", "metadata": {}, "outputs": [], @@ -10350,7 +10350,7 @@ " \"Difference from Actual IBNR - Paid\",\n", " ]\n", "\n", - " print(results[check_cols].to_string())\n", + " #print(results[check_cols].to_string())\n", "\n", "\n", " display(\n", @@ -10905,9 +10905,9 @@ "id": "471fa752", "metadata": { "tags": [ - "remove-input" + "remove-input" ] -}, + }, "outputs": [], "source": [ "estimate_cols = [\n",