diff --git a/PresentValueSeries/Images/PvFlowchart.png b/PresentValueSeries/Images/PvFlowchart.png deleted file mode 100644 index 156bdf4c..00000000 Binary files a/PresentValueSeries/Images/PvFlowchart.png and /dev/null differ diff --git a/PresentValueSeries/Images/PvOverview.png b/PresentValueSeries/Images/PvOverview.png deleted file mode 100644 index 38ea7b38..00000000 Binary files a/PresentValueSeries/Images/PvOverview.png and /dev/null differ diff --git a/PresentValueSeries/Images/PvWaterfallChart.png b/PresentValueSeries/Images/PvWaterfallChart.png deleted file mode 100644 index 4a88ff0e..00000000 Binary files a/PresentValueSeries/Images/PvWaterfallChart.png and /dev/null differ diff --git a/PresentValueSeries/Images/SM-Thumbnail-S01-288x142.png b/PresentValueSeries/Images/SM-Thumbnail-S01-288x142.png deleted file mode 100644 index 1f4c6992..00000000 Binary files a/PresentValueSeries/Images/SM-Thumbnail-S01-288x142.png and /dev/null differ diff --git a/PresentValueSeries/Images/SM-YoutubePreview-S01E01.png b/PresentValueSeries/Images/SM-YoutubePreview-S01E01.png deleted file mode 100644 index f8547337..00000000 Binary files a/PresentValueSeries/Images/SM-YoutubePreview-S01E01.png and /dev/null differ diff --git a/PresentValueSeries/Images/SM-YoutubePreview-S01E02.png b/PresentValueSeries/Images/SM-YoutubePreview-S01E02.png deleted file mode 100644 index 7d36967c..00000000 Binary files a/PresentValueSeries/Images/SM-YoutubePreview-S01E02.png and /dev/null differ diff --git a/PresentValueSeries/Images/SM-YoutubePreview-S01E03.png b/PresentValueSeries/Images/SM-YoutubePreview-S01E03.png deleted file mode 100644 index 86023f84..00000000 Binary files a/PresentValueSeries/Images/SM-YoutubePreview-S01E03.png and /dev/null differ diff --git a/PresentValueSeries/Images/Systemorph_logo.png b/PresentValueSeries/Images/Systemorph_logo.png deleted file mode 100644 index 402f8cfb..00000000 Binary files a/PresentValueSeries/Images/Systemorph_logo.png and /dev/null differ diff --git a/PresentValueSeries/Images/VanessaAndrea.png b/PresentValueSeries/Images/VanessaAndrea.png deleted file mode 100644 index 1c0dcd82..00000000 Binary files a/PresentValueSeries/Images/VanessaAndrea.png and /dev/null differ diff --git a/PresentValueSeries/PresentValue - Episode 2.ipynb b/PresentValueSeries/PresentValue - Episode 2.ipynb index f893df08..b4fd0906 100644 --- a/PresentValueSeries/PresentValue - Episode 2.ipynb +++ b/PresentValueSeries/PresentValue - Episode 2.ipynb @@ -46,7 +46,7 @@ "\n", "\nThe aim of this notebook is to illustrate the IFRS 17 *Present Value* calculation using Systemorph Cloud Technology. Present Values are the amount of money that someone would pay in the present day for the contracts of the group up to their run off. The starting point are the so called *Nominal Cash flows*, which express the amounts of cash and cash equivalents being transferred into and out of a business. Cash flow values are **discounted** according to the *Yield Curve* provided as economic input in order to take into account the corresponding Interest Accretion, and the discounted figures are **cumulated** to find the **Present Values**. ", "\n", - "\nThe IFRS 17 standard prescribes that the accounting statements are based on the value of a group of insurance contracts at the beginning of the period (BoP), their development throughout the period, and the value at the end of the period (EoP). While the period is typically a quarter, the **Analysis of Change** (AoC) from BoP to EoP per group of contract is made considering for each step the variation of the cashflow so as to enhance the readability of the value changes. To this aim it is necessary to **evaluate the Present Value difference** (or delta) between each step, yielding the figures shown in the resulting report.", + "\nThe IFRS 17 standard prescribes that the accounting statements are based on the value of a group of insurance contracts at the beginning of the period (BoP), their development throughout the period, and the value at the end of the period (EoP). While the period is typically a quarter, the **Analysis of Change** (AoC) from BoP to EoP per group of contract is made considering for each step the variation of the cash flow so as to enhance the readability of the value changes. To this aim it is necessary to **evaluate the Present Value difference** (or delta) between each step, yielding the figures shown in the resulting report.", "\n", "\nThis process is pictorially represented in the flowchart below" ], @@ -57,7 +57,7 @@ { "cell_type": "markdown", "source": [ - "
" + "
" ], "metadata": {}, "execution_count": 0, @@ -68,7 +68,7 @@ "source": [ "---", "\n", - "\nImport the IFRS17 calculation engine:" + "\nImport the IFRS 17 calculation engine:" ], "metadata": {}, "execution_count": 0, @@ -92,7 +92,7 @@ "\n", "\n**Data Nodes**: Grouping of (Re-)Insurance Contracts belonging to the same Portfolio, and defined by their Reporting Node, Scenario, Contractual Currency, FunctionalCurrency, LineOfBusiness, ValuationApproach, and OCI Type. ", "\n", - "\n**Aoc Type**: the Analysis of Change steps used for accounting statements." + "\n**AoC Type**: the Analysis of Change steps used for accounting statements." ], "metadata": {}, "execution_count": 0, @@ -131,11 +131,11 @@ "In the following code cells, the necessary data to start the IFRS calculator are being imported.", "\nAfter the standard dimensions and parameters are loaded, for the calculation of the Present Value ", "\none needs the economic input yield curves for the target period", - "\nand the nominal cashflows for the desired group of contracts:", + "\nand the nominal cash flows for the desired group of contracts:", "\n", "\n**Yield Curve**: line that plots yields, i.e. interest rates. It depends on the given currency related to the target *Reporting Node*, and is imported on a yierly basis. The slope of the yield curve gives an idea of future interest rate changes and economic activity.", "\n", - "\n**Nominal Cashflows**: they are the amounts of cash and cash equivalents that a company expects to transfer into and out of a business, without any adjustment. This is useful for anticipating future revenue and expenses.", + "\n**Nominal Cash flows**: they are the amounts of cash and cash equivalents that a company expects to transfer into and out of a business, without any adjustment. This is useful for anticipating future revenue and expenses.", "\n", "\nThe import process of these example spreadsheets can be completed by running the two cells below" ], @@ -228,7 +228,7 @@ { "cell_type": "markdown", "source": [ - "Systemorph notebook technology excels in analyse on the fly the imported data. In this section the newly imported Yield Curves and nominal cashflows can be analysed." + "Systemorph notebook technology excels in analyse on the fly the imported data. In this section the newly imported Yield Curves and nominal cash flows can be analysed." ], "metadata": {}, "execution_count": 0, @@ -264,7 +264,7 @@ { "cell_type": "markdown", "source": [ - "**Imported Nominal Cashflows**" + "**Imported Nominal Cash flows**" ], "metadata": {}, "execution_count": 0, @@ -340,7 +340,7 @@ { "cell_type": "markdown", "source": [ - "The Cumulated Discounted Cashflow ($\\text{CDC}$) is defined by the following recursive formulas", + "The Cumulated Discounted Cash flow ($\\text{CDC}$) is defined by the following recursive formulas", "\n", "\n$$", "\n\\text{CDC}_t = \\left\\{", @@ -351,7 +351,7 @@ "\n\\right.", "\n$$", "\n", - "\nwhere the Period Type depends on the given cashflow Amount Type. " + "\nwhere the Period Type depends on the given cash flow Amount Type. " ], "metadata": {}, "execution_count": 0, @@ -361,7 +361,7 @@ "cell_type": "markdown", "source": [ "In the following, the premiums are retrieved from the nominals **Data Cube** through a simple Filter. ", - "\nAdditionally, among the list of premiums provided, we select only the cashflows for the Assumption Update (AU) and Experience Variance (EV) steps." + "\nAdditionally, among the list of premiums provided, we select only the cash flows for the Assumption Update (AU) and Experience Variance (EV) steps." ], "metadata": {}, "execution_count": 0, @@ -442,7 +442,7 @@ { "cell_type": "markdown", "source": [ - "The contribution to the Present Value related to the Experience Variance AoC step, is given by the third element of the Values array, ", + "The contribution to the Present Value related to the Experience Variance AoC Step, is given by the third element of the Values array, ", "\nwhich corresponds to the value at the EOP of the current quarter, that is, the BOP of the next one" ], "metadata": {}, diff --git a/PresentValueSeries/PresentValue - Episode 3.ipynb b/PresentValueSeries/PresentValue - Episode 3.ipynb index 236312fb..114e275b 100644 --- a/PresentValueSeries/PresentValue - Episode 3.ipynb +++ b/PresentValueSeries/PresentValue - Episode 3.ipynb @@ -46,7 +46,7 @@ "\n", "\nThe aim of this notebook is to illustrate the IFRS 17 *Present Value* calculation using Systemorph Cloud Technology. Present Values are the amount of money that someone would pay in the present day for the contracts of the group up to their run off. The starting point are the so called *Nominal Cash flows*, which express the amounts of cash and cash equivalents being transferred into and out of a business. Cash flow values are **discounted** according to the *Yield Curve* provided as economic input in order to take into account the corresponding Interest Accretion, and the discounted figures are **cumulated** to find the **Present Values**. ", "\n", - "\nThe IFRS 17 standard prescribes that the accounting statements are based on the value of a group of insurance contracts at the beginning of the period (BoP), their development throughout the period, and the value at the end of the period (EoP). While the period is typically a quarter, the **Analysis of Change** (AoC) from BoP to EoP per group of contract is made considering for each step the variation of the cashflow so as to enhance the readability of the value changes. To this aim it is necessary to **evaluate the Present Value difference** (or delta) between each step, yielding the figures shown in the resulting report.", + "\nThe IFRS 17 standard prescribes that the accounting statements are based on the value of a group of insurance contracts at the beginning of the period (BoP), their development throughout the period, and the value at the end of the period (EoP). While the period is typically a quarter, the **Analysis of Change** (AoC) from BoP to EoP per group of contract is made considering for each step the variation of the cash flow so as to enhance the readability of the value changes. To this aim it is necessary to **evaluate the Present Value difference** (or delta) between each step, yielding the figures shown in the resulting report.", "\n", "\nThis process is pictorially represented in the flowchart below" ], @@ -57,7 +57,7 @@ { "cell_type": "markdown", "source": [ - "
" + "
" ], "metadata": {}, "execution_count": 0, @@ -68,7 +68,7 @@ "source": [ "---", "\n", - "\nImport the IFRS17 calculation engine:" + "\nImport the IFRS 17 calculation engine:" ], "metadata": {}, "execution_count": 0, @@ -92,7 +92,7 @@ "\n", "\n**Data Nodes**: Grouping of (Re-)Insurance Contracts belonging to the same Portfolio, and defined by their Reporting Node, Scenario, Contractual Currency, FunctionalCurrency, LineOfBusiness, ValuationApproach, and OCI Type. ", "\n", - "\n**Aoc Type**: the Analysis of Change steps used for accounting statements." + "\n**AoC Type**: the Analysis of Change steps used for accounting statements." ], "metadata": {}, "execution_count": 0, @@ -131,11 +131,11 @@ "In the following code cells, the necessary data to start the IFRS calculator are being imported.", "\nAfter the standard dimensions and parameters are loaded, for the calculation of the Present Value ", "\none needs the economic input yield curves for the target period", - "\nand the nominal cashflows for the desired group of contracts:", + "\nand the nominal cash flows for the desired group of contracts:", "\n", "\n**Yield Curve**: line that plots yields, i.e. interest rates. It depends on the given currency related to the target *Reporting Node*, and is imported on a yierly basis. The slope of the yield curve gives an idea of future interest rate changes and economic activity.", "\n", - "\n**Nominal Cashflows**: they are the amounts of cash and cash equivalents that a company expects to transfer into and out of a business, without any adjustment. This is useful for anticipating future revenue and expenses.", + "\n**Nominal Cash flows**: they are the amounts of cash and cash equivalents that a company expects to transfer into and out of a business, without any adjustment. This is useful for anticipating future revenue and expenses.", "\n", "\nThe import process of these example spreadsheets can be completed by running the two cells below" ], @@ -282,7 +282,7 @@ { "cell_type": "markdown", "source": [ - "Systemorph notebook technology excels in analyse on the fly the imported data. In this section the newly imported Yield Curves and nominal cashflows can be analysed." + "Systemorph notebook technology excels in analyse on the fly the imported data. In this section the newly imported Yield Curves and nominal cash flows can be analysed." ], "metadata": {}, "execution_count": 0, @@ -318,7 +318,7 @@ { "cell_type": "markdown", "source": [ - "**Imported Nominal Cashflows**" + "**Imported Nominal Cash flows**" ], "metadata": {}, "execution_count": 0, @@ -422,7 +422,7 @@ { "cell_type": "markdown", "source": [ - "The Cumulated Discounted Cashflow ($\\text{CDC}$) is defined by the following recursive formulas", + "The Cumulated Discounted Cash flow ($\\text{CDC}$) is defined by the following recursive formulas", "\n", "\n$$", "\n\\text{CDC}_t = \\left\\{", @@ -433,7 +433,7 @@ "\n\\right.", "\n$$", "\n", - "\nwhere the Period Type depends on the given cashflow Amount Type. " + "\nwhere the Period Type depends on the given cash flow Amount Type. " ], "metadata": {}, "execution_count": 0, @@ -443,7 +443,7 @@ "cell_type": "markdown", "source": [ "In the following, the premiums are retrieved from the nominals **Data Cube** through a simple Filter. ", - "\nAdditionally, among the list of premiums provided, we select only the cashflows for the Assumption Update (AU) and Experience Variance (EV) steps." + "\nAdditionally, among the list of premiums provided, we select only the cash flows for the Assumption Update (AU) and Experience Variance (EV) steps." ], "metadata": {}, "execution_count": 0, @@ -524,7 +524,7 @@ { "cell_type": "markdown", "source": [ - "The contribution to the Present Value related to the Experience Variance AoC step, is given by the n-th element of the Values array, ", + "The contribution to the Present Value related to the Experience Variance AoC Step, is given by the n-th element of the Values array, ", "\nwith $n$ equal to the target Month. This element corresponds to the value at the EOP of the current quarter, that is, the BOP of the next one" ], "metadata": {}, diff --git a/PresentValueSeries/Readme.md b/PresentValueSeries/Readme.md index b6aa51d8..c5a5ab22 100644 --- a/PresentValueSeries/Readme.md +++ b/PresentValueSeries/Readme.md @@ -1,5 +1,6 @@ + +The **IFRS 17 Template** uses the functionality of the Systemorph [**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/project/ifrs17) to demonstrate how an IFRS 17 solution looks like. It is a fully working yet simple example of an implementation of the IFRS 17 standard. It uses mock data for illustration purposes, where we apply the default settings of the Systemorph IFRS 17 Calculation Engine to produce real IFRS 17 reports. + +Moreover, it is fully configurable. Thus, it serves as the perfect starting point for you to explore the features and begin applying them to solve your problems. You can adapt this template to your own needs by changing the input data and calculating your own IFRS 17 results immediately. See how to do this below. + + +## Get Started +Follow the steps below to start your IFRS 17 journey with Systemorph: + +
+ +
+ +### Clone + +Click on the **Clone** button to create your own copy of the present project. + +
+
+ +### Reports + +Check out our [Reports](./Report/Reports) computed using our use-cases. + +
+
+ +### Export + +Export [Map Template](./Export/MapTemplate) files to change a selection of input parameters. + +
+
+ +### Import + +[Import](./Import/CloseImportTemplate) your own files (parameters and transactional data) and get them ready to be analyzed in Reports notebook. + +
+ +
+ +For a detailed overview of the **IFRS 17 Template** project refer to the [Overview IFRS 17 Template](./OverviewIFRS17Template) notebook. + +## Supporting Materials +Subscribe to our [YouTube channel](https://www.youtube.com/@systemorph) to be notified about our latest videos on how to customize your **IFRS 17 Template**. + +
+ +[](https://youtu.be/WQFn58gFhaM) + +Follow step by step our [Get Started](https://youtu.be/WQFn58gFhaM) video and explore our notebooks to learn how to interact with the project. + +
+ +For more information on our IFRS 17 initiative check out our [IFRS 17 page](). + +
+ +## Got Questions? + +For support around the **IFRS 17 Template** project get in contact with our [Community Team]( https://systemorph.cloud/community) or contact us through [Linkedin](https://www.linkedin.com/company/systemorph) or add your questions directly on [Youtube](https://www.youtube.com/@systemorph) videos. + +## Contributing + +All work on the **IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). From here, you can get to know about future releases, track the current work and report issues. + +
+ +
+ +This project adheres to our [General Terms & Conditions](https://systemorph.cloud/general-terms-and-conditions/). + +
\ No newline at end of file diff --git a/full-ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb similarity index 95% rename from full-ifrs17-template/Report/Reports.ipynb rename to ifrs17-template/Report/Reports.ipynb index 0b333fa6..0a884d4a 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -31,7 +31,7 @@ "cell_type": "markdown", "source": [ "For demonstration purposes we import here data for some *Group of Insurance Contract* (GIC) and *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).", - "\n
The imported data set consists of cashflows, actuals, and parameters.", + "\n
The imported data set consists of cash flows, actuals, and parameters.", "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ", "\n
For simplicity, we import similar transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.", "\n", @@ -80,7 +80,7 @@ "source": [ "# Best Estimate", "\n", - "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#best-estimate) future cashflows are shown here in an Analysis of Change report.", + "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#best-estimate) future cash flows are shown here in an Analysis of Change report.", "\n", "\nThe granularity of the reported figures can be modified by changing the Column Slices options.", "\nFor example one can add \"GroupOfContract\" to separate the contributions of the individual Group of Contracts.", @@ -111,7 +111,7 @@ "source": [ "# Risk Adjustment", "\n", - "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#risk-adjustment) future cashflows are shown here.", + "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#risk-adjustment) future cash flows are shown here.", "\n", "\nThe additional ColumnSlices are added to the view as the inner column. This can dicrease the readability of the report. For example, adding the slice by \"GroupOfContract\" leaves the lock-in and current rate contributions far apart and difficult to compare. The re-order of default slices with custom slices is achieved by esplicitly add the default slice among the custom slices. In our case, you can try entering both \"GroupOfContract\" and \"EconomicBasis\" separated by a comma in the ColumnSlices." ], @@ -217,9 +217,9 @@ { "cell_type": "markdown", "source": [ - "# Fulfilment Cashflow", + "# Fulfilment Cash flow", "\n", - "\nPresent Value of the [Fulfilment Cashflow](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#fulfillment-cashflows) are shown here. ", + "\nPresent Value of the [Fulfilment Cash flow](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#fulfillment-cash-flows) are shown here. ", "\n
The individual contributions from Best Estimate and Risk Adjustment can be visualized slicing by **EstimateType**.", "\n", "\nFilters can be applied to report to isolate a sub-set of the data. For example you can Filter by a specific Group of Contract using its system name using : new [] {(\"GroupOfContract\", \"DT1.1\")}.", @@ -313,7 +313,7 @@ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 3);", - "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EstimateType\"", "\nallocatedTechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" ], @@ -326,7 +326,7 @@ "source": [ "# LRC Actuarial", "\n", - "\nThe [Actuarial Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-actuarial-actuarial-liability-for-remaining-coverage) report shows figures from Fulfilment Cashflow discounted with current yield curve, and the allocated techinical margin. " + "\nThe [Actuarial Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-actuarial-actuarial-liability-for-remaining-coverage) report shows figures from Fulfilment Cash flow discounted with current yield curve, and the allocated techinical margin. " ], "metadata": {}, "execution_count": 0, @@ -351,7 +351,7 @@ "source": [ "# LRC", "\n", - "\nThe [Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-liability-for-remaining-coverage) report adds to the [Actuarial Liability for Remaining Coverage](#lrc-actuarial) the contribution of and accrual actuals. A simplified Aoc Chain is used to allow comparison of the balance change between Actuals and Present Values. " + "\nThe [Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-liability-for-remaining-coverage) report adds to the [Actuarial Liability for Remaining Coverage](#lrc-actuarial) the contribution of and accrual actuals. A simplified AoC Chain is used to allow comparison of the balance change between Actuals and Present Values. " ], "metadata": {}, "execution_count": 0, @@ -376,7 +376,7 @@ "source": [ "# LIC Actuarial", "\n", - "\nThe [Actuarial Liability of Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lic-actuarial-actuarial-liability-for-incurred-claims) report shows figures from Fulfilment Cashflow discounted with current yield curve. " + "\nThe [Actuarial Liability of Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lic-actuarial-actuarial-liability-for-incurred-claims) report shows figures from Fulfilment Cash flow discounted with current yield curve. " ], "metadata": {}, "execution_count": 0, @@ -426,7 +426,7 @@ "source": [ "# Financial Performance", "\n", - "\nThe [Financial Performance](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#ifrs-17-financial-performance) report discloses the Change in Estimate of the IFRS 17 balance sheet items ([LRC](#lrc) and [LIC](#lic)) and the relevant incurred cashflows (Premiums, Claims, Expenses, etc...) for the given period.", + "\nThe [Financial Performance](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#ifrs-17-financial-performance) report discloses the Change in Estimate of the IFRS 17 balance sheet items ([LRC](#lrc) and [LIC](#lic)) and the relevant incurred cash flows (Premiums, Claims, Expenses, etc...) for the given period.", "\n", "\nUse the expand and collapse buttons in the report rows to change the granularity of the figures displayed." ], @@ -458,4 +458,4 @@ "outputs": [] } ] -} +} \ No newline at end of file diff --git a/full-ifrs17-template/Test/AocStructureTest.ipynb b/ifrs17-template/Test/AocStructureTest.ipynb similarity index 99% rename from full-ifrs17-template/Test/AocStructureTest.ipynb rename to ifrs17-template/Test/AocStructureTest.ipynb index 36b7fec6..91bf53b8 100644 --- a/full-ifrs17-template/Test/AocStructureTest.ipynb +++ b/ifrs17-template/Test/AocStructureTest.ipynb @@ -20,7 +20,7 @@ { "cell_type": "markdown", "source": [ - "

Test Aoc Management

" + "

Test AoC Management

" ], "metadata": {}, "execution_count": 0, @@ -211,7 +211,7 @@ "\n {", "\n var computedAocSteps = fullAoc.Select(x => $\"AocType:{x.Identity.Id.AocType}, Novelty:{x.Identity.Id.Novelty}\");", "\n var benchmarkKeys = fullAocBm.Keys.Select(aoc => $\"AocType:{aoc.AocType}, Novelty:{aoc.Novelty}\");", - "\n errors.Add( $\"Full Aoc count does not match expected: \\n Computed {count} \\n Expected {fullAocBm.Count()}.\" ); ", + "\n errors.Add( $\"Full AoC count does not match expected: \\n Computed {count} \\n Expected {fullAocBm.Count()}.\" ); ", "\n errors.Add( $\"In particular, \\n Computed Identities \\n {string.Join(\"\\n\", computedAocSteps)} \\n Expected \\n {string.Join(\"\\n\", benchmarkKeys)}.\" ); ", "\n }", "\n ", @@ -251,7 +251,7 @@ { "cell_type": "markdown", "source": [ - "## Gross Cashflow: InForce, NewBusiness, and Combined" + "## Gross Cash flow: InForce, NewBusiness, and Combined" ], "metadata": {}, "execution_count": 0, @@ -370,7 +370,7 @@ { "cell_type": "markdown", "source": [ - "## Reinsurance Cashflow: InForce, NewBusiness, and Combined" + "## Reinsurance Cash flow: InForce, NewBusiness, and Combined" ], "metadata": {}, "execution_count": 0, @@ -511,7 +511,7 @@ { "cell_type": "markdown", "source": [ - "## Cashflow: InForce, and Combined" + "## Cash flow: InForce, and Combined" ], "metadata": {}, "execution_count": 0, diff --git a/full-ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv b/ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv similarity index 100% rename from full-ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv rename to ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv diff --git a/full-ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv b/ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv similarity index 100% rename from full-ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv rename to ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv diff --git a/full-ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv b/ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv similarity index 100% rename from full-ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv rename to ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__A.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__A.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__A.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__AA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__AA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__AA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__AA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__APA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__APA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__APA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__APA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BEPA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BEPA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BEPA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BEPA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__C.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__C.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__C.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__DA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__DA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__DA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__DA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__F.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__F.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__F.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__F.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__OA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__OA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__OA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__OA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__RA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__RA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__RA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__A.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__A.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__A.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__AA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__AA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__AA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__AA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__APA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__APA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__APA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__APA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BEPA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BEPA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BEPA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BEPA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__DA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__DA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__DA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__DA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__F.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__F.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__F.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__F.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__L.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__L.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__L.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__L.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__OA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__OA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__OA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__OA.csv diff --git a/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__RA.csv similarity index 100% rename from full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__RA.csv rename to ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__RA.csv diff --git a/full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv similarity index 100% rename from full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv rename to ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv diff --git a/full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv similarity index 100% rename from full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv rename to ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv diff --git a/full-ifrs17-template/Test/ExportIfrsVariable.ipynb b/ifrs17-template/Test/ExportIfrsVariable.ipynb similarity index 100% rename from full-ifrs17-template/Test/ExportIfrsVariable.ipynb rename to ifrs17-template/Test/ExportIfrsVariable.ipynb diff --git a/full-ifrs17-template/Test/ExportReportVariables.ipynb b/ifrs17-template/Test/ExportReportVariables.ipynb similarity index 100% rename from full-ifrs17-template/Test/ExportReportVariables.ipynb rename to ifrs17-template/Test/ExportReportVariables.ipynb diff --git a/full-ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb similarity index 100% rename from full-ifrs17-template/Test/IfrsVariablesTest.ipynb rename to ifrs17-template/Test/IfrsVariablesTest.ipynb diff --git a/full-ifrs17-template/Test/ImportStorageTest.ipynb b/ifrs17-template/Test/ImportStorageTest.ipynb similarity index 99% rename from full-ifrs17-template/Test/ImportStorageTest.ipynb rename to ifrs17-template/Test/ImportStorageTest.ipynb index bbc1ebb8..24387d42 100644 --- a/full-ifrs17-template/Test/ImportStorageTest.ipynb +++ b/ifrs17-template/Test/ImportStorageTest.ipynb @@ -202,7 +202,7 @@ { "cell_type": "code", "source": [ - "//There is a previous year, Cashflows were already imported and Actuals are imported for the first time", + "//There is a previous year, Cash flows were already imported and Actuals are imported for the first time", "\nvar basicIfrsVariable = new IfrsVariable{Partition = partition.Id, DataNode = gic, AccidentYear = null, AmountType = AmountTypes.PR, Novelty = Novelties.I, EstimateType = EstimateTypes.BE};", "\nvar inputDataSetForDataSource = new IfrsVariable[]{", "\n basicIfrsVariable with {Partition = previousPeriodPartition.Id, AocType = AocTypes.EOP, EstimateType = EstimateTypes.AA, Novelty = Novelties.C, Value = 100.0},", @@ -237,7 +237,7 @@ { "cell_type": "code", "source": [ - "//There is a previous year, Cashflows and Actuals were already imported and Actuals are imported again", + "//There is a previous year, Cash flows and Actuals were already imported and Actuals are imported again", "\nvar basicAdvanceActualIfrsVariable = new IfrsVariable{Partition = partition.Id, DataNode = gic, AccidentYear = null, AmountType = AmountTypes.PR, Novelty = Novelties.C, EstimateType = EstimateTypes.AA};", "\nvar basicBeIfrsVariable = new IfrsVariable{Partition = partition.Id, DataNode = gic, AccidentYear = null, AmountType = AmountTypes.PR, Novelty = Novelties.I, EstimateType = EstimateTypes.BE};", "\nvar inputDataSetForDataSource = new IfrsVariable[]{", @@ -310,7 +310,7 @@ "\n basicIfrsVariable with {AocType = AocTypes.BOP, Novelty = Novelties.I, EstimateType = EstimateTypes.DA, Value = 1000.0},", "\n basicIfrsVariable with {AocType = AocTypes.BOP, Novelty = Novelties.I, Value = 100.0},", "\n basicIfrsVariable with {AocType = AocTypes.BOP, Novelty = Novelties.I, DataNode = gic, EstimateType = EstimateTypes.DA, Value = 1000.0},", - "\n //Cashflow", + "\n //Cash flow", "\n basicIfrsVariable with {AocType = AocTypes.BOP, Novelty = Novelties.I, DataNode = gic, EstimateType = EstimateTypes.BE, EconomicBasis = EconomicBases.L, Value = 1000.0},", "\n basicIfrsVariable with {AocType = AocTypes.BOP, Novelty = Novelties.I, DataNode = gic, EstimateType = EstimateTypes.BE, EconomicBasis = EconomicBases.C, Value = 1000.0},", "\n ", diff --git a/full-ifrs17-template/Test/MapTemplateAndImportTest.ipynb b/ifrs17-template/Test/MapTemplateAndImportTest.ipynb similarity index 100% rename from full-ifrs17-template/Test/MapTemplateAndImportTest.ipynb rename to ifrs17-template/Test/MapTemplateAndImportTest.ipynb diff --git a/full-ifrs17-template/Test/ReportStorageTest.ipynb b/ifrs17-template/Test/ReportStorageTest.ipynb similarity index 100% rename from full-ifrs17-template/Test/ReportStorageTest.ipynb rename to ifrs17-template/Test/ReportStorageTest.ipynb diff --git a/full-ifrs17-template/Test/ReportVariablesTest.ipynb b/ifrs17-template/Test/ReportVariablesTest.ipynb similarity index 100% rename from full-ifrs17-template/Test/ReportVariablesTest.ipynb rename to ifrs17-template/Test/ReportVariablesTest.ipynb diff --git a/full-ifrs17-template/Test/ReportVariablesTestBase.ipynb b/ifrs17-template/Test/ReportVariablesTestBase.ipynb similarity index 100% rename from full-ifrs17-template/Test/ReportVariablesTestBase.ipynb rename to ifrs17-template/Test/ReportVariablesTestBase.ipynb diff --git a/full-ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioTest.ipynb similarity index 96% rename from full-ifrs17-template/Test/ScenarioTest.ipynb rename to ifrs17-template/Test/ScenarioTest.ipynb index befedf0d..8effcfa3 100644 --- a/full-ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioTest.ipynb @@ -15,6 +15,15 @@ "nbformat": 4, "nbformat_minor": 5, "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Scenario Import Test

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -69,7 +78,7 @@ { "cell_type": "markdown", "source": [ - "# Scenario Cashflows" + "# Scenario Cash flows" ], "metadata": {}, "execution_count": 0, diff --git a/full-ifrs17-template/Test/SequenceImportTest.ipynb b/ifrs17-template/Test/SequenceImportTest.ipynb similarity index 92% rename from full-ifrs17-template/Test/SequenceImportTest.ipynb rename to ifrs17-template/Test/SequenceImportTest.ipynb index 0bf8a9f9..1b9b3bcf 100644 --- a/full-ifrs17-template/Test/SequenceImportTest.ipynb +++ b/ifrs17-template/Test/SequenceImportTest.ipynb @@ -15,6 +15,15 @@ "nbformat": 4, "nbformat_minor": 5, "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Sequence Import Test

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -27,7 +36,7 @@ { "cell_type": "markdown", "source": [ - "# Cashflow -> Actuals" + "# Cash flow -> Actuals" ], "metadata": {}, "execution_count": 0, @@ -84,7 +93,7 @@ { "cell_type": "markdown", "source": [ - "# Actuals -> Cashflow" + "# Actuals -> Cash flow" ], "metadata": {}, "execution_count": 0, diff --git a/full-ifrs17-template/Test/TechnicalMarginTest.ipynb b/ifrs17-template/Test/TechnicalMarginTest.ipynb similarity index 100% rename from full-ifrs17-template/Test/TechnicalMarginTest.ipynb rename to ifrs17-template/Test/TechnicalMarginTest.ipynb diff --git a/full-ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb similarity index 90% rename from full-ifrs17-template/Test/Tests.ipynb rename to ifrs17-template/Test/Tests.ipynb index 9a73127f..d7608993 100644 --- a/full-ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -26,6 +26,16 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "Comprehensive collection of tests executed on top of the Systemorph use cases (initialization).", + "\n
Execute this Notebook using at least 9Gb RAM." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 8c8f7658..ceb279db 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -193,7 +193,7 @@ "cell_type": "code", "source": [ "public static class ImportFormats{", - "\n public const string Cashflow = nameof(Cashflow); // Importer for Nominal Cashflows", + "\n public const string Cashflow = nameof(Cashflow); // Importer for Nominal Cash flows", "\n public const string Actual = nameof(Actual); // Importer for Actuals", "\n public const string Opening = nameof(Opening); // Importer for Opening Balances (BOP Inforce of CSM/LC)", "\n public const string SimpleValue = nameof(SimpleValue); // Importer for Simple Values (pre-calculated direct import)", @@ -275,7 +275,7 @@ "\n public const string MC = nameof(MC); // Model Corrections (changes to the model)", "\n public const string PC = nameof(PC); // Portfolio Changes", "\n public const string RCU = nameof(RCU); // Reinsurance Coverage Update", - "\n public const string CF = nameof(CF); // Cashflow (Nominal)", + "\n public const string CF = nameof(CF); // Cash flow (Nominal)", "\n public const string IA = nameof(IA); // Interest Accretion", "\n public const string AU = nameof(AU); // Assumptions Update (changes to general assumptions)", "\n public const string FAU = nameof(FAU); // Financial Assumptions Update (changes to financial assumptions)", diff --git a/ifrs17/Constants/Enums.ipynb b/ifrs17/Constants/Enums.ipynb index fdfae548..af20091f 100644 --- a/ifrs17/Constants/Enums.ipynb +++ b/ifrs17/Constants/Enums.ipynb @@ -71,8 +71,8 @@ "cell_type": "markdown", "source": [ "Currency Types define which currency is used as standard at different aggregation levels (in the Data Level hierarchy).", - "\n- Functional: this is the standard Currency Type at Reporting Node level", - "\n- Group: this is the standard Currency Type at Group level", + "\n- Functional: this is the standard Currency Type at Reporting Node (leaf level)", + "\n- Group: this is the standard Currency Type at Reporting Node (root level)", "\n- Contractual: this is the standard Currency Type at Data Node level", "\n- Transactional: this is the standard Currency Type at Transactional level (used typically for Actuals)" ], diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 20b641d6..e4db9b6c 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -117,10 +117,10 @@ "\n (Error.ReportingNodeInMainNotFound , _) => $\"Reporting Node missing from the Main tab.\",", "\n (Error.YearInMainNotFound , _) => $\"Year missing from the Main tab.\",", "\n (Error.MonthInMainNotFound , _) => $\"Month missing from the Main tab.\",", - "\n (Error.AocTypeNotValid , 1) => $\"The parsed AocType {s[0]} is invalid.\",", - "\n (Error.AocTypeCompulsoryNotFound , _) => $\"Not all compulsory AocTypes have been imported.\",", - "\n (Error.AocTypePositionNotSupported , 1) => $\"The position of the AocType {s[0]} is not supported.\",", - "\n (Error.AocConfigurationOrderNotUnique , _) => $\"Two or more Aoc Configurations have the same Order.\",", + "\n (Error.AocTypeNotValid , 1) => $\"The parsed AoC Type {s[0]} is invalid.\",", + "\n (Error.AocTypeCompulsoryNotFound , _) => $\"Not all compulsory AoC Types have been imported.\",", + "\n (Error.AocTypePositionNotSupported , 1) => $\"The position of the AoC Type {s[0]} is not supported.\",", + "\n (Error.AocConfigurationOrderNotUnique , _) => $\"Two or more AoC Configurations have the same Order.\",", "\n // Partition", "\n (Error.PartitionNotFound , _) => $\"Partition do not found.\",", "\n (Error.ParsedPartitionNotFound , 1) => $\"Parsed partition not available: ReportingNode {s[0]}.\",", @@ -130,8 +130,8 @@ "\n (Error.AmountTypeNotFound , 1) => $\"AmountType {s[0]} not found.\",", "\n (Error.EstimateTypeNotFound , 1) => $\"EstimateType {s[0]} not found.\",", "\n (Error.ReportingNodeNotFound , 1) => $\"Reporting Node {s[0]} not found.\",", - "\n (Error.AocTypeNotFound , 1) => $\"AocType {s[0]} not found.\",", - "\n (Error.AocTypeMapNotFound , 2) => $\"AocType {s[0]} and Novelty {s[1]} combination not defined in the mapping.\",", + "\n (Error.AocTypeNotFound , 1) => $\"AoC Type {s[0]} not found.\",", + "\n (Error.AocTypeMapNotFound , 2) => $\"AoC Type {s[0]} and Novelty {s[1]} combination not defined in the mapping.\",", "\n (Error.PortfolioGicNotFound , 2) => $\"Portfolio {s[0]} assigned to Group of Insurance Contract {s[1]} does not exist.\",", "\n (Error.PortfolioGricNotFound , 2) => $\"Portfolio {s[0]} assigned to Group of Reinsurance Contract {s[1]} does not exist.\",", "\n (Error.InvalidAmountTypeEstimateType , 2) => $\"Invalid combination of EstimateType {s[0]} and AmountType {s[1]}.\",", @@ -157,15 +157,15 @@ "\n (Error.MissingPremiumAllocation , 1) => $\"Premium Allocation Rate not found for Group of Contract {s[0]}.\", // TODO: this is now a warning to be produced by a validation in the importers (default is 1)", "\n (Error.ReinsuranceCoverage , 1) => $\"Reinsurance Allocation Rate not found for Group of Insurance Contract {s[0]}.\",", "\n (Error.YieldCurveNotFound , 3) => $\"Yield Curve not found for currency {s[0]}, year {s[1]}, and month {s[2]}.\",", - "\n (Error.YieldCurvePeriodNotApplicable , 2) => $\"YieldCurve period NotApplicable not valid for AocStep with AocType {s[0]} and Novelty {s[1]}.\",", + "\n (Error.YieldCurvePeriodNotApplicable , 2) => $\"YieldCurve period NotApplicable not valid for AoC Step with AoC Type {s[0]} and Novelty {s[1]}.\",", "\n (Error.EconomicBasisNotFound , 1) => $\"EconomicBasis not valid for DataNode {s[0]}.\",", "\n (Error.AccountingVariableTypeNotFound , 1) => $\"AccountingVariableType {s[0]} not found.\",", "\n // Scopes", - "\n (Error.NotSupportedAocStepReference , 1) => $\"Unsupported reference Aoc Step for Aoc Type {s[0]}.\",", + "\n (Error.NotSupportedAocStepReference , 1) => $\"Unsupported reference AoC Step for AoC Type {s[0]}.\",", "\n (Error.MultipleEoP , 0) => $\"Closing Balance for both Csm and Lc are computed.\",", "\n // Data Completeness", "\n (Error.MissingDataAtPosting , 1) => $\"Missing imported data for {s[0]} DataNode.\",", - "\n (Error.MissingCombinedLiability , 2) => $\"Missing Combined Liability Aoc Type for DataNode {s[0]} and AmountType {s[1]}.\",", + "\n (Error.MissingCombinedLiability , 2) => $\"Missing Combined Liability AoC Type for DataNode {s[0]} and AmountType {s[1]}.\",", "\n (Error.MissingCoverageUnit , 1) => $\"Missing Coverage Unit cash flow for {s[0]} DataNode.\",", "\n // Default", "\n (Error.Generic , _) => $\"{s[0]}\",", @@ -181,7 +181,7 @@ "source": [ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", - "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AocType: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", + "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", "\n (_ , _) => $\"Warning not found.\"", diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index fe4fa4c0..79f3dd04 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -132,7 +132,7 @@ "\n## Base Interfaces", "\nThe following interfaces are used to define the granularity at which data is stored.", "\n", - "\nFor instance, the IKeyed interface corresponds to the lowest granularity which is simply a unique identifier for a certain generic piece of data:" + "\nFor instance, the IKeyed interface corresponds to the lowest granularity which is simply a unique identifier for a certain generic piece of data." ], "metadata": {}, "execution_count": 0, @@ -217,7 +217,7 @@ { "cell_type": "markdown", "source": [ - "The interface IWithYearAndMonth allows to speficy to which year and month a certain piece of data applies to:" + "The interface IWithYearAndMonth allows to specify to which year and month a certain piece of data applies to." ], "metadata": {}, "execution_count": 0, @@ -240,8 +240,7 @@ { "cell_type": "markdown", "source": [ - "The interface IWithYearMonthAndScenario allows to identify the year, month and scenario associated to the data:", - "\n" + "The interface IWithYearMonthAndScenario allows to identify the year, month and scenario associated to the data." ], "metadata": {}, "execution_count": 0, @@ -384,7 +383,7 @@ "\n", "\nIt is defined as a hierarchical dimension so that higher-granularity types can be introduced. For example: 'Claim Expenses' have parent 'Claims'.", "\n", - "\nAmount Types are a central piece in the IFRS 17 application and are used for instance to name the different types of cashflows. For example: There might be cashflows for 'Premiums'; Cashflows for 'Claims', etc. In case the mapping between cash flow and amount type is non-trivial, then specific mappings are introduced through the use of ExternalId." + "\nAmount Types are a central piece in the IFRS 17 application and are used for instance to name the different types of cash flows. For example: There might be cash flows for 'Premiums'; Cash flows for 'Claims', etc. In case the mapping between cash flow and amount type is non-trivial, then specific mappings are introduced through the use of ExternalId." ], "metadata": {}, "execution_count": 0, @@ -411,7 +410,7 @@ { "cell_type": "markdown", "source": [ - "We distinguish between amount types used for cashflows and actuals (**Present Value Amount Types**), and amount types used for deferrable values (**Deferrable Amount Types**). In particular, deferrable amount types are for costs and expenses that can be deferred to the future. These amounts are treated separately from the Present Value Amount Types because they are not considered for the calculation of Contractual Service Margin and Loss Component." + "We distinguish between amount types used for cash flows and actuals (**Present Value Amount Types**), and amount types used for deferrable values (**Deferrable Amount Types**). In particular, deferrable amount types are for costs and expenses that can be deferred to the future. These amounts are treated separately from the Present Value Amount Types because they are not considered for the calculation of Contractual Service Margin and Loss Component." ], "metadata": {}, "execution_count": 0, @@ -535,12 +534,12 @@ "", "\n### AoC Variable Type", "\n", - "\nThe AocType describes the type of the Analysis of Change step - For example: Amortization, Cashflow, Combined Liabilities etc.", + "\nThe AoC Type describes the type of the Analysis of Change step - For example: Amortization, Cash flow, Combined Liabilities etc.", "\n", - "\nThe **Combined Liability** AocType aims in capturing the difference between the sum of all relevant previous Aoc steps and the end of period Aoc step. Unexplained changes (not captured by any other defined AoC step), are then visible in this Aoc step. Note that the nominal cash flows input in the cashflow input file corresponds to cash flow projection for the end of period step.", + "\nThe **Combined Liability** AoC Type aims in capturing the difference between the sum of all relevant previous AoC Steps and the end of period AoC Step. Unexplained changes (not captured by any other defined AoC Step), are then visible in this AoC Step. Note that the nominal cash flows input in the cash flow input file corresponds to cash flow projection for the end of period step.", "\nIn addition, this step distinguishes itself from the others for:", - "\n- It is a mandatory AocType as it is used to trigger the Run off of the cashflow. This is achieved by providing a cash flow of 0s. ", - "\n- It is the first AocType for the Combined Novelty and therefore it carries the contribution of combining In force and New business.", + "\n- It is a mandatory AoC Type as it is used to trigger the Run off of the cash flow. This is achieved by providing a cash flow of 0s. ", + "\n- It is the first AoC Type for the Combined Novelty and therefore it carries the contribution of combining In force and New business.", "\n- Its present value is computed as telescoping difference with the last AoC Step for the In-Force novelty and the New Business novelty.", "\n- In the technical margin calculation it is used to merge the profitability of the In-Force and New business components, which may result in a forced switch." ], @@ -655,7 +654,7 @@ { "cell_type": "markdown", "source": [ - " The 'neutral' Scenario (i.e. the default one, with no-stress situations applied) is designated as 'Best Estimate'." + "The default Scenario (i.e. the default one, with no-stress situations applied) is referred to as 'Best Estimate' and its identifier is a null string, allowing the input files to not specify any value." ], "metadata": {}, "execution_count": 0, @@ -709,7 +708,7 @@ "cell_type": "markdown", "source": [ "Currency is a dimension used to identity the currency.", - "\nTypical examples of Currency are EUR, CHF, USD, etc..." + "\nTypical examples of Currency are their ISO codes: EUR, CHF, USD, etc." ], "metadata": {}, "execution_count": 0, @@ -795,7 +794,7 @@ "source": [ "", "\n## OCI Type", - "\nOther Comprehensive Income (OCI) Type describes how the financial contributions to the IFRS17 Financial Performance is apportioned between the P&L and the OCI sections." + "\nOther Comprehensive Income (OCI) Type describes how the financial contributions to the IFRS 17 Financial Performance is apportioned between the P&L and the OCI sections." ], "metadata": {}, "execution_count": 0, @@ -824,7 +823,7 @@ "cell_type": "markdown", "source": [ "Profitability is a dimension used in IFRS 17 to describe the profitability of a Group of Contracts (GIC/GRIC).", - "\nTypical examples of Profitability are Profitable, Non-Profitable, etc.." + "\nTypical examples of Profitability are Profitable, Non-Profitable, etc." ], "metadata": {}, "execution_count": 0, @@ -924,7 +923,7 @@ "source": [ "Projections are configured by defining the following 2 parameters:", "\n", - "\n- Shift defines how many months are in the cashflow file before the first value of the period in interest.
", + "\n- Shift defines how many months are in the cash flow file before the first value of the period in interest.
", "\n- TimeStep defines how many months are in the period of interest.
", "\n", "\nBoth Shift and TimeStep are measured in terms of number of months.", @@ -963,7 +962,7 @@ "cell_type": "markdown", "source": [ "", - "\n## Aoc Step Configuration" + "\n## AoC Step Configuration" ], "metadata": {}, "execution_count": 0, @@ -972,16 +971,16 @@ { "cell_type": "markdown", "source": [ - "The record below holds parameters over time for each combination of AocType and Novelty. In particular:", - "\n- DataType identifies between Calculated aoc steps and Optional inputs or Mandatory inputs.", - "\n- InputSource identifies whether an aoc step is relevant for Actuals, Cashflow or both calculations.", + "The record below holds parameters over time for each combination of AoC Type and Novelty. In particular:", + "\n- DataType identifies between Calculated AoC Steps and Optional inputs or Mandatory inputs.", + "\n- InputSource identifies whether an AoC Step is relevant for Actuals, Cash flow or both calculations.", "\n- FxPeriod identifies which fx rate should be used.", "\n- YcPeriod identifies which Yield Curve should be used (from current or previous period).", "\n- CdrPeriod identifies which Credit Default Rate should be used (from current or previous period).", - "\n- ValuationPeriod identifies which value from the Cashflow corresponds to the Present Value.", + "\n- ValuationPeriod identifies which value from the Cash flow corresponds to the Present Value.", "\n- RcPeriod identifies which Reinsurance Coverage should be used (from current or previous period).", "\n", - "\n
The values for each parameter can be found in [Enums Notebook](./Constants/Enums)." + "\n
The values for each parameter can be found in [Enums Notebook](../Constants/Enums)." ], "metadata": {}, "execution_count": 0, @@ -1059,7 +1058,7 @@ "source": [ "", "\n## Exchange Rate", - "\nThe record below holds the Exchange Rates over time and for each exchange type ([FxType](./Constants/Enums)). Exchange Rate must be updated every reporting period as part of the close preparation. In general, the last month of the reporting period should be use to import the new data for the period. ", + "\nThe record below holds the Exchange Rates over time and for each exchange type ([FxType](./Constants/Enums)). Exchange Rate must be updated every reporting period as part of the close preparation. In general, the last month of the reporting period should be used to import the new data for the period. ", "\n", "\nIn case the Exchange Rate for the current period is missing, an error is returned. " ], @@ -1174,7 +1173,7 @@ "", "\n## Yield Curve", "\nThe record below holds the Yield Curves across time for each [Currency](#currency) and [Scenario](#scenario).", - "\nYield curves can be updated every month as part of the close preparation. In general, the last month of the reporting period should be use to import the new data for the period. ", + "\nYield curves can be updated every month as part of the close preparation. In general, the last month of the reporting period should be used to import the new data for the period. ", "\n", "\nThe Yield Curve values must be entered with **yearly** granularity, i.e. every value corresponds to the rate of the whole year starting from the year entered in column Year. The last value is considered valid also for the following years (for which no value has been provided). ", "\n", @@ -1316,7 +1315,7 @@ { "cell_type": "markdown", "source": [ - "For instance, the data pertaining to a certain [Reporting Node](#reporting-node) for a certain [Scenario](#scenario) is called an IfrsPartition and assigned a unique identifier:" + "For instance, the data pertaining to a certain [Reporting Node](#reporting-node) for a certain [Scenario](#scenario) is called an IfrsPartition and assigned a unique identifier." ], "metadata": {}, "execution_count": 0, @@ -1334,7 +1333,7 @@ { "cell_type": "markdown", "source": [ - "The partition PartitionByReportingNodeAndPeriod is a further partition of the IfrsPartition sets - In particular, it defines sets for the data pertaining to a certain [Reporting Node](#reporting-node), [Scenario](#scenario), year and month. The value of the Month is the last month of the reporting period to which the data belongs to. " + "The partition PartitionByReportingNodeAndPeriod is a further partition of the IfrsPartition sets. In particular, it defines sets for the data pertaining to a certain [Reporting Node](#reporting-node), [Scenario](#scenario), year and month. The value of the Month is the last month of the reporting period to which the data belongs to. " ], "metadata": {}, "execution_count": 0, @@ -1506,8 +1505,7 @@ "source": [ "A group of insurance contracts is called a **GIC** and has no information on Partner.", "\n", - "\nOnly Groups of Reinsurance Contracts, defined below and usually called **GRIC**s, have Partner information.", - "\nAgain, there are Insurance GRICs and Reinsurance GRICs:" + "\nOnly Groups of Reinsurance Contracts, defined below and usually called **GRIC**s, have Partner information." ], "metadata": {}, "execution_count": 0, @@ -1613,7 +1611,7 @@ "\n## Data Node Parameters", "\n", "\nData Node Parameters are used to keep track of other parameters pertaining to each Data Node, and their movements in time (year and month).", - "\n
PremiumAllocation : defines the weight of Premium to be included in the Experience Adjustement AocType of the Technical Margin and is valid only for Group of Insurance Contract with LiabilityType : Liability for Remaining Coverage.", + "\n
PremiumAllocation : defines the weight of Premium to be included in the Experience Adjustement AoC Type of the Technical Margin and is valid only for Group of Insurance Contract with LiabilityType : Liability for Remaining Coverage.", "\n
ReinsuranceCoverage : defines the weight of the underlying gross business to be considered in the computation of the allocation of the Technical Margin in a Reinsurance case.", "\n", "\nThe latest Data Node Parameters available in the system with Year and Month earlier or equal to Year and Month of the closing period will be used as the current value during calculation." @@ -1737,9 +1735,9 @@ "cell_type": "markdown", "source": [ "", - "\n## Raw Variables (Cashflows)", + "\n## Raw Variables (Cash flows)", "\n", - "\nRaw Variables are used to store **cashflows** on the database during import, i.e. *after* mappings are applied and *before* calculations are applied.", + "\nRaw Variables are used to store **cash flows** on the database during import, i.e. *after* mappings are applied and *before* calculations are applied.", "\n", "\nThey are stored on the database for both audit and re-calculation purposes." ], @@ -1801,7 +1799,7 @@ { "cell_type": "markdown", "source": [ - "Basically, RawVariable is defined for a certain Reporting Node, Scenario, Year, Month, Amount Type and Calculation Type:" + "Basically, RawVariable is defined for a certain Reporting Node, Scenario, Year, Month, Amount Type and Calculation Type." ], "metadata": {}, "execution_count": 0, @@ -1836,7 +1834,7 @@ "\n- **Actual Values**", "\n- **Present Values**", "\n", - "\nPresent Values are calculated from the [raw variables](#raw-variables) during the import of cashflows.", + "\nPresent Values are calculated from the [raw variables](#raw-variables) during the import of cash flows.", "\n", "\nIfrs Variables are stored on the database, i.e. they are 'persisted', for performance purposes." ], @@ -1873,7 +1871,7 @@ "source": [ "", "\n## Import Identity", - "\nThe Import Identity contains the data elements used to determine the data sets which are used when performing data manipulations, e.g. during a [data import](./Import/ImportScopeCalculation) - In particular, an Import Identity is defined by: DataNode, AocType, Novelty, and whether it's reinsurance data or not:" + "\nThe Import Identity contains the data elements used to determine the data sets which are used when performing data manipulations, e.g. during a [data import](./Import/ImportScopeCalculation). In particular, an Import Identity is defined by: DataNode, AoC Type, Novelty, and whether it's reinsurance data or not." ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Export/ExportConfiguration.ipynb b/ifrs17/Export/ExportConfiguration.ipynb index 2387d75f..1190acbc 100644 --- a/ifrs17/Export/ExportConfiguration.ipynb +++ b/ifrs17/Export/ExportConfiguration.ipynb @@ -20,7 +20,15 @@ { "cell_type": "markdown", "source": [ - "

Export Configuration

" + "

Export Configuration

", + "\n", + "\nIn this notebook we define the configuration for exporting MapTemplate files. ", + "\nConfiguration for the following tables are defined:", + "\n- main : contains information about the [partition](../DataModel/DataStructure#partitions)", + "\n- [portfolio](../DataModel/DataStructure#portfolios) ", + "\n- [group of contract](../DataModel/DataStructure#group-of-contracts)", + "\n- [data node state](../DataModel/DataStructure#data-node-state)", + "\n- [data node parameter](../DataModel/DataStructure#data-node-parameters)" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Images/BigPicture.PNG b/ifrs17/Images/BigPicture.PNG deleted file mode 100644 index d4a66991..00000000 Binary files a/ifrs17/Images/BigPicture.PNG and /dev/null differ diff --git a/ifrs17/Images/Systemorph_logo.png b/ifrs17/Images/Systemorph_logo.png deleted file mode 100644 index 402f8cfb..00000000 Binary files a/ifrs17/Images/Systemorph_logo.png and /dev/null differ diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index d5d002d6..d41923e4 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -21,7 +21,7 @@ "cell_type": "markdown", "source": [ "", - "\n

Import Scopes (IFRS17 Methodology Business Logic)

" + "\n

Import Scopes (IFRS 17 Methodology Business Logic)

" ], "metadata": {}, "execution_count": 0, @@ -30,7 +30,7 @@ { "cell_type": "markdown", "source": [ - "This notebook contains the logic used to perform calculations upon import of data (actuals and cashflows). This is also called 'Data Loading' and the concept of Scope is used here to define the logic and provide the means of executing the logic." + "This notebook contains the logic used to perform calculations upon import of data (actuals and cash flows). This is also called 'Data Loading' and the concept of Scope is used here to define the logic and provide the means of executing the logic." ], "metadata": {}, "execution_count": 0, @@ -93,7 +93,7 @@ "\n", "\nAn [Identity](../DataModel/DataStructure#import-identity) is a set of identifiers for a certain set of data. In particular, an identity consists of a certain [AoC Type](../DataModel/DataStructure#aoc-type), [Novelty](../DataModel/DataStructure#novelty), [Data Node](../DataModel/DataStructure#data-node), Accident Year, and information on whether the data is for reinsurance or not. ", "\n", - "\nGiven a certain Data Node and Accident Year, the interface GetIdentities returns all the existing identities (e.g. for Actuals and Cashflows) which have that Data Node and Accident Year." + "\nGiven a certain Data Node and Accident Year, the interface GetIdentities returns all the existing identities (e.g. for Actuals and Cash flows) which have that Data Node and Accident Year." ], "metadata": {}, "execution_count": 0, @@ -260,7 +260,7 @@ "", "\n## AoC Step Structure", "\n", - "\nThe Aoc step structure is constructed from the data which is delivered as input. It is assumed that it depends only on the Group of Contrat (i.e. it is invariant across Amount types or Accident Year). " + "\nThe AoC Step structure is constructed from the data which is delivered as input. It is assumed that it depends only on the Group of Contrat (i.e. it is invariant across Amount types or Accident Year). " ], "metadata": {}, "execution_count": 0, @@ -269,20 +269,20 @@ { "cell_type": "markdown", "source": [ - "### ParentAocStep ", - "\nThe **ParentAocStep** scope computes and provides an important piece of information for each [Identity](../DataModel/DataStructure#import-identity), i.e. for a certain [AocType](../DataModel/DataStructure#aoc-type) and [Novelty](../DataModel/DataStructure#novelty).", + "### Parent AoC Step ", + "\nThe **ParentAocStep** scope computes and provides an important piece of information for each [Identity](../DataModel/DataStructure#import-identity), i.e. for a certain [AoC Type](../DataModel/DataStructure#aoc-type) and [Novelty](../DataModel/DataStructure#novelty).", "\n", - "\nIt provides the list of the adjacent AocSteps prior to Identity one. It can be more than one only for the step **CL** where a parent for each novelty is considered.", + "\nIt provides the list of the adjacent AoC Steps prior to Identity one. It can be more than one only for the step **CL** where a parent for each novelty is considered.", "\nParentAocStep is critical when computing the *telescoping* differences. ", "\n", "\nThey are defined as follows:", "\n", "\n$$", - "\n\\text{ParentAocStep}(\\text{AoC step}) = \\left\\{", + "\n\\text{ParentAocStep}(\\text{AoC Step}) = \\left\\{", "\n\\begin{array}{cl}", - "\n\\text{AoC step with AoC Type YCU and Novelty I} & \\text{if AocType CRU} \\\\", - "\n\\text{The last AoC step with Data Type != Calculated and same Novelty as the AocStep} & \\text{if AocType YCU} \\\\", - "\n\\text{The AoC step which comes before in terms of order (as defined by AocType)} & \\text{otherwise} \\\\", + "\n\\text{AoC Step with AoC Type YCU and Novelty I} & \\text{if AoC Type CRU} \\\\", + "\n\\text{The last AoC Step with Data Type != Calculated and same Novelty as the AoC Step} & \\text{if AoC Type YCU} \\\\", + "\n\\text{The AoC Step which comes before in terms of order (as defined by AoC Type)} & \\text{otherwise} \\\\", "\n\\end{array}", "\n\\right.", "\n$$", @@ -329,26 +329,26 @@ { "cell_type": "markdown", "source": [ - "### ReferenceAocStep", + "### Reference AoC Step", "\n", - "\nThe **ReferenceAocStep** scope provides the AocStep from which to retrieve the data in order to compute its value (e.g. AoC step EA retrieves Present Values, while AoC step YCU retrieves Nominal).", + "\nThe **ReferenceAocStep** scope provides the AoC Step from which to retrieve the data in order to compute its value (e.g. AoC Step EA retrieves Present Values, while AoC Step YCU retrieves Nominal).", "\n", "\nThey are defined as follows:", "\n", "\n$$", - "\n\\text{ReferenceAocStep}(\\text{AoC step}) = \\left\\{", + "\n\\text{ReferenceAocStep}(\\text{AoC Step}) = \\left\\{", "\n\\begin{array}{cl}", - "\n\\text{self} & \\text{if AocStep InputSource is not Calculated} \\\\", - "\n\\text{The last AoC step with Data Type != Calculated and same Novelty as the input AocStep} ~, & \\text{if AocType } \\in \\text{\\{RCU, CF, IA, YCU, CRU\\}} \\\\", - "\n\\text{AoC step with AoC Type CF and Novelty as the AocStep} & \\text{if AocType EA} \\\\", - "\n\\text{AoC step with AoC Type CL and Novelty C} & \\text{if AocType $\\in$ \\{AM, EOP\\}} \\\\", - "\n\\text{empty} & \\text{if AocType is BOP} \\\\", + "\n\\text{self} & \\text{if AoC Step InputSource is not Calculated} \\\\", + "\n\\text{The last AoC Step with Data Type != Calculated and same Novelty as the input AoC Step} ~, & \\text{if AoC Type } \\in \\text{\\{RCU, CF, IA, YCU, CRU\\}} \\\\", + "\n\\text{AoC Step with AoC Type CF and Novelty as the AoC Step} & \\text{if AoC Type EA} \\\\", + "\n\\text{AoC Step with AoC Type CL and Novelty C} & \\text{if AoC Type $\\in$ \\{AM, EOP\\}} \\\\", + "\n\\text{empty} & \\text{if AoC Type is BOP} \\\\", "\n\\text{log NotSupportedAocStepReference error} & \\text{otherwise} \\\\", "\n\\end{array}", "\n\\right.", "\n$$", "\n", - "\nwhere the last AocStep is obtained by ordering the AocSteps according to their order (as defined by its AocType) and taking the last one." + "\nwhere the last AoC Step is obtained by ordering the AoC Steps according to their order (as defined by its AoC Type) and taking the last one." ], "metadata": {}, "execution_count": 0, @@ -388,10 +388,10 @@ { "cell_type": "markdown", "source": [ - "### PreviousAocSteps", - "\nThe **PreviousAocSteps** scope computes and provides an other important piece of information for each [Identity](../DataModel/DataStructure#import-identity), i.e. for a certain [AocType](../DataModel/DataStructure#aoc-type) and [Novelty](../DataModel/DataStructure#novelty).", + "### Previous AoC Steps", + "\nThe **PreviousAocSteps** scope computes and provides an other important piece of information for each [Identity](../DataModel/DataStructure#import-identity), i.e. for a certain [AoC Type](../DataModel/DataStructure#aoc-type) and [Novelty](../DataModel/DataStructure#novelty).", "\n", - "\nIt provides the list of all previous AocSteps up to the **BOP** step, whereby a Combined novelty will branch into the InForce and New Business AocTypes.", + "\nIt provides the list of all previous AoC Steps up to the **BOP** step, whereby a Combined novelty will branch into the InForce and New Business AoC Types.", "\n", "\nPreviousAocSteps is critical when computing aggregated values along the various dimensions (such as for example Line of Business) and ", "\nis formed by the ParentAocStep and its parent and so on until there is no parent.", @@ -401,7 +401,7 @@ "\n$$", "\nwhere", "\n$$", - "\n\\rm{PAS}_1 = \\rm{ParentAocStep}(\\rm{AocStep})", + "\n\\rm{PAS}_1 = \\rm{ParentAocStep}(\\rm{AoC Step})", "\n$$", "\n$$", "\n\\rm{PAS}_2 = \\rm{ParentAocStep}(\\rm{PAS}_1).", @@ -451,7 +451,7 @@ "", "\n## Discounting", "\n", - "\nThe calculation of IFRS17 figures is based on cumulated discounted cashflows." + "\nThe calculation of IFRS 17 figures is based on cumulated discounted cash flows." ], "metadata": {}, "execution_count": 0, @@ -481,7 +481,7 @@ "", "\n### Interest and Discount Rates and Factors", "\n", - "\nThe factors used for discounting have the same granularity as the cashflow, i.e. monthly. The yield curves have yearly granularity, so the annual Interest factor is 1 + interest rate. The monthly Interest Interest and Discount factors are obtained from the annual factors such that the product of 12 months results in the annual factors, as follows:", + "\nThe factors used for discounting have the same granularity as the cash flow, i.e. monthly. The yield curves have yearly granularity, so the annual Interest factor is 1 + interest rate. The monthly Interest Interest and Discount factors are obtained from the annual factors such that the product of 12 months results in the annual factors, as follows:", "\n", "\n$$", "\n\\text{Discount}_i = ( 1 + \\text{YC}_i ) ^{-\\frac{1}{12}} ~,", @@ -523,10 +523,10 @@ "", "\n## Nominal Values", "\n", - "\nThe nominal cashflow values correspond to the cashflows provided in the Cashflow input file. ", + "\nThe nominal cash flow values correspond to the cash flows provided in the cash flow input file. ", "\n
These values are stored in the database as [RawVariable](../DataModel/DataStructure#raw-variables).", - "\n
Refer to the ReferenceAocStep of the AocStructure calculation to identify the correct AocType and Novelty to retrieve.", - "\n
Due to the Credit Default Risk of a reinsurance partner, the logic to compute the Nominal Cashflows for this Amount Type must be defined separately. " + "\n
Refer to the ReferenceAocStep of the AocStructure calculation to identify the correct AoC Type and Novelty to retrieve.", + "\n
Due to the Credit Default Risk of a reinsurance partner, the logic to compute the Nominal Cash flows for this Amount Type must be defined separately. " ], "metadata": {}, "execution_count": 0, @@ -588,7 +588,7 @@ "", "\n## Present Values", "\n", - "\nPresent Values are calculated during the import of the cashflows and stored on the database. They are computed for the relevant Economic Basis, depending on the Valuation Basis.", + "\nPresent Values are calculated during the import of the cash flows and stored on the database. They are computed for the relevant Economic Basis, depending on the Valuation Basis.", "\n", "\nTheir calculation is described in the following sections and is summarized in the $\\rm{PV}$ formula [below](#present-value)." ], @@ -599,21 +599,21 @@ { "cell_type": "markdown", "source": [ - "", - "\n### Cumulated Discounted Cashflows", + "", + "\n### Cumulated Discounted Cash flows", "\n", - "\nCumulated and Discounted cashflows $\\rm{CDC}$ are computed using the monthly discount rates and in a recursive manner, as follows:", + "\nCumulated and Discounted cash flows $\\rm{CDC}$ are computed using the monthly discount rates and in a recursive manner, as follows:", "\n", "\n$$", "\n\\text{CDC}_i(\\text{AoC step}) = \\left\\{", "\n\\begin{array}{cl}", - "\n\\text{Nominal}_i + \\text{CDC}_{i+1} \\cdot {\\text{Valid Discount}_{\\frac{i}{12}}} ~, & \\text{if Aoc Type's Period Type is Beginning Of Period} \\\\", - "\n\\big( \\text{Nominal}_i + \\text{CDC}_{i+1} \\big) \\cdot {\\text{Valid Discount}_{\\frac{i}{12}}} ~, & \\text{if Aoc Type's Period Type is End Of Period}", + "\n\\text{Nominal}_i + \\text{CDC}_{i+1} \\cdot {\\text{Valid Discount}_{\\frac{i}{12}}} ~, & \\text{if AoC Type's Period Type is Beginning Of Period} \\\\", + "\n\\big( \\text{Nominal}_i + \\text{CDC}_{i+1} \\big) \\cdot {\\text{Valid Discount}_{\\frac{i}{12}}} ~, & \\text{if AoC Type's Period Type is End Of Period}", "\n\\end{array}", "\n\\right.", "\n$$", "\n", - "\nwhere Transaction Period depends on which Best Estimate value is being computed, in particular on what its [Amount Type](../DataModel/DataStructure#amount-type) is (each Amount Type has its own [Period Type](../Constants/Enums)); and $\\text{Valid Discount}$ stands for the fact that in case the Discount Curves are shorter than the required index, then their last element is returned. We also need to flip the sign of the discounted and cumulated values, to create a reserve view and be consistent with the usual [Cashflow Sign Convention](https://en.wikipedia.org/wiki/Cash_flow_sign_convention). ", + "\nwhere Transaction Period depends on which Best Estimate value is being computed, in particular on what its [Amount Type](../DataModel/DataStructure#amount-type) is (each Amount Type has its own [Period Type](../Constants/Enums)); and $\\text{Valid Discount}$ stands for the fact that in case the Discount Curves are shorter than the required index, then their last element is returned. We also need to flip the sign of the discounted and cumulated values, to create a reserve view and be consistent with the usual [Cash flow Sign Convention](https://en.wikipedia.org/wiki/Cash_flow_sign_convention). ", "\n", "\n
Also here, the Credit Default Risk contribution is calculated separately. Since it is based on Claims, the Period Type is implicitly defined." ], @@ -661,18 +661,18 @@ "\n### Telescoping Difference", "\n", "\n", - "\nPresent Value figures for a specific period are typically reported through an analysis of change, where for each [AocStep](#aoc-step-structure) the variation with respect to the preceding AocStep is shown.", + "\nPresent Value figures for a specific period are typically reported through an analysis of change, where for each [AoC Step](#aoc-step-structure) the variation with respect to the preceding AoC Step is shown.", "\n", - "\nThe Telescoping Difference is basically the delta between two adjacent AoC steps, whereby the [ParentAocStep](#aoc-step-structure) is used to determine the AoC step. ", + "\nThe Telescoping Difference is basically the delta between two adjacent AoC Steps, whereby the [ParentAocStep](#aoc-step-structure) is used to determine the AoC Step. ", "\n", "\nIt is defined as follows:", "\n", "\n$$", "\n\\text{TelescopingDifference}_i = ", - "\n\\text{CDC}_{i}\\big(\\text{current AoC step}\\big) - \\text{CDC}_{i}\\big(\\text{parent AoC step}\\big)", + "\n\\text{CDC}_{i}\\big(\\text{current AoC Step}\\big) - \\text{CDC}_{i}\\big(\\text{parent AoC Step}\\big)", "\n$$", "\n", - "\nwhere AocType is the AoC Type of the AoC Step for which the calculations are being performed." + "\nwhere AoC Type is the AoC Type of the AoC Step for which the calculations are being performed." ], "metadata": {}, "execution_count": 0, @@ -706,20 +706,20 @@ "", "\n### Present Value", "\n", - "\nThe present value ($\\rm{PV}$) can be determined by taking the appropriate elements of the cumulated discounted cashflows. This is done as function of the two [projection parameters](../DataModel/DataStructure#projection-configuration) $\\rm{Shift}$ ($S$) and $\\rm{TimeStep}$ ($TS$):", + "\nThe present value ($\\rm{PV}$) can be determined by taking the appropriate elements of the cumulated discounted cash flows. This is done as function of the two [projection parameters](../DataModel/DataStructure#projection-configuration) $\\rm{Shift}$ ($S$) and $\\rm{TimeStep}$ ($TS$):", "\n", "\n$$", "\n\\text{PV}(S, TS) = \\left\\{", "\n\\begin{array}{cl}", - "\n\\text{PV Base}_{S} ~, & \\text{if Valuation Period is Beginning of Period} \\\\", - "\n\\text{PV Base}_{S+TS/2 -1} ~, & \\text{if Valuation Period is Mid of Period} \\\\", - "\n\\sum_{i=S}^{S + TS - 1}\\text{PV Base}_{i} ~, & \\text{if Valuation Period is Delta} \\\\", - "\n\\text{PV Base}_{S + TS} ~, & \\text{if Valuation Period is End of Period} \\\\", + "\n\\text{PV}_{S} ~, & \\text{if Valuation Period is Beginning of Period} \\\\", + "\n\\text{PV}_{S+TS/2 -1} ~, & \\text{if Valuation Period is Mid of Period} \\\\", + "\n\\sum_{i=S}^{S + TS - 1}\\text{PV }_{i} ~, & \\text{if Valuation Period is Delta} \\\\", + "\n\\text{PV}_{S + TS} ~, & \\text{if Valuation Period is End of Period} \\\\", "\n\\end{array}", "\n\\right.", "\n$$", "\n", - "\nwhere [PV Base](#present-value-base) is defined below, and the term $TS/2$ uses MidpointRounding.AwayFromZero (as defined by *https:[]()//docs.microsoft.com/en-us/dotnet/api/system.midpointrounding?view=net-6.0)*: rounding to the nearest number, away from zero in the exact halfway case. Furthermore, if the array is smaller than the index, then the last element is returned.", + "\nwhere the term $TS/2$ uses MidpointRounding.AwayFromZero (as defined by *https:[]()//docs.microsoft.com/en-us/dotnet/api/system.midpointrounding?view=net-6.0)*: rounding to the nearest number, away from zero in the exact halfway case. Furthermore, if the array is smaller than the index, then the last element is returned.", "\n", "\nFor instance, for the current year and year-to-date view we have $S=0$ and $TS=3$ for the first quarter, $TS=6$ for the 2nd quarter and so on.", "\nFor the projection values of next year first quarter we would have $S=12$ and $TS=3$, etc." @@ -758,7 +758,7 @@ "", "\n### Interest Accretion", "\n", - "\nSince the Interest Accretion cashflows are typically not provided as input (as they can be computed from its parent AocStep), its present values can be computed as follows:", + "\nSince the Interest Accretion cash flows are typically not provided as input (as they can be computed from its parent AoC Step), its present values can be computed as follows:", "\n", "\n$$", "\n\\text{InterestAccretion}_i(\\text{AoC step}) = \\left\\{", @@ -833,19 +833,19 @@ { "cell_type": "markdown", "source": [ - "", - "\n### Present Value Base", + "", + "\n### Present Value", "\n", - "\nThe PV Base values are valid for all choices of the [Economic Basis](../DataModel/DataStructure#economic-basis):", + "\nThe PV values are valid for all choices of the [Economic Basis](../DataModel/DataStructure#economic-basis):", "\n", "\n$$", - "\n\\text{PV Base}_i (\\text{AoC step}) = \\left\\{", + "\n\\text{PV}_i (\\text{AoC step}) = \\left\\{", "\n\\begin{array}{rl}", - "\n\\text{CDC}_i ~, & \\text{if AoCType = BOP} \\\\", - "\n-\\text{Nominal}_i(\\text{Parent AoC step}) ~, & \\text{if AoCType = CF } \\\\", - "\n\\text{InterestAccretion}_i ~, & \\text{if AoCType = IA } \\\\", - "\n0 ~, & \\text{if AoCType = AM } \\\\\\", - "\n\\text{CDC}_i(\\text{Parent AoC step}) ~, & \\text{if AoCType = EOP } \\\\", + "\n\\text{CDC}_i ~, & \\text{if AoC Type = BOP} \\\\", + "\n-\\text{Nominal}_i(\\text{Parent AoC Step}) ~, & \\text{if AoC Type = CF } \\\\", + "\n\\text{InterestAccretion}_i ~, & \\text{if AoC Type = IA } \\\\", + "\n0 ~, & \\text{if AoC Type = AM } \\\\\\", + "\n\\text{CDC}_i(\\text{Parent AoC step}) ~, & \\text{if AoC Type = EOP } \\\\", "\n\\text{TelescopingDifference}_i ~, & \\text{otherwise}", "\n\\end{array}", "\n\\right.", @@ -1006,7 +1006,7 @@ "", "\n## Risk Adjustment", "\n", - "\nRisk Adjustment values ($\\rm{RA}$) are accessible from the [PresentValue](#present-value-base) data and have [Estimate Type](../DataModel/DataStructure#estimate-type) $RA$. In particular, the Locked-In and Current values are given by:", + "\nRisk Adjustment values ($\\rm{RA}$) are accessible from the [PresentValue](#present-value) data and have [Estimate Type](../DataModel/DataStructure#estimate-type) $RA$. In particular, the Locked-In and Current values are given by:", "\n", "\n$$", "\n\\text{RA Locked}(\\text{AoC step}) = \\text{PV}(\\text{AoC step})|_{\\text{Calculation Type = RA},~ \\text{Economic Basis = L}}", @@ -1016,7 +1016,7 @@ "\n\\text{RA Current}(\\text{AoC step}) = \\text{PV}(\\text{AoC step})|_{\\text{Calculation Type = RA},~ \\text{Economic Basis = C}}", "\n$$", "\n", - "\nwhere PV is defined [above](#present-value) and uses the input cashflows with Calculation Type = RA." + "\nwhere PV is defined [above](#present-value) and uses the input cash flows with Calculation Type = RA." ], "metadata": {}, "execution_count": 0, @@ -1079,7 +1079,7 @@ "\nThe coverage unit (CU) of a GIC is introduced in the standard as the quantity of the service provided in that GIC. The service is", "\nmeasured by considering the quantity of benefits provided as well as the expected coverage period of the GIC.", "\n", - "\nThe cashflows of coverage units are retrieved from the discounted cashflows with [EstimateType](../DataModel/DataStructure#estimate-type) CU." + "\nThe cash flows of coverage units are retrieved from the discounted cash flows with [EstimateType](../DataModel/DataStructure#estimate-type) CU." ], "metadata": {}, "execution_count": 0, @@ -1115,7 +1115,7 @@ { "cell_type": "markdown", "source": [ - "For a certain GIC, the monthly Amortization Factors $\\text{Monthly }AF_i$ are computed from the cashflows of the underlying coverage unit for that GIC:", + "For a certain GIC, the monthly Amortization Factors $\\text{Monthly }AF_i$ are computed from the cash flows of the underlying coverage unit for that GIC:", "\n", "\n$$", "\n\\text{Monthly }AF_i = 1 - \\frac{ \\text{Nominal}_i(CL)} {\\text{CDC}_i(CL) } ~.", @@ -1123,8 +1123,8 @@ "\n", "\nwhere:", "\n- $i$ denotes a monthly period;", - "\n- the nominal cash flows $\\text{Nominal}_i(CL)$ are the nominal cashflows of the coverage unit for the AoC Step **Combined Liability** (CL) (input data);", - "\n- and the corresponding cumulated discounted cashflows $\\text{CDC}_i$ are defined [above](#cumulated-discounted-cashflows)." + "\n- the nominal cash flows $\\text{Nominal}_i(CL)$ are the nominal cash flows of the coverage unit for the AoC Step **Combined Liability** (CL) (input data);", + "\n- and the corresponding cumulated discounted cash flows $\\text{CDC}_i$ are defined [above](#cumulated-discounted-cash-flows)." ], "metadata": {}, "execution_count": 0, @@ -1164,7 +1164,7 @@ "\n", "\nEach GIC will have his own AF.", "\n", - "\nIn order to run off the business of a given Group of Contract one should provide a cashflow of 0s for the AocStep with AocType CL and Novelty C. When computing the AF this results in the product of the monthly amortization factors of the period to be 1. In this case, the computed AF does not follow the formula above but is 1 allowing for the full release of the Technical Margin in the AM AocStep." + "\nIn order to run off the business of a given Group of Contract one should provide a cash flow of 0s for the AoC Step with AoC Type CL and Novelty C. When computing the AF this results in the product of the monthly amortization factors of the period to be 1. In this case, the computed AF does not follow the formula above but is 1 allowing for the full release of the Technical Margin in the AM AoC Step." ], "metadata": {}, "execution_count": 0, @@ -1290,7 +1290,7 @@ "", "\n### Actuals", "\nThe Actuals correspond to ActualBase values with estimate type $A$.", - "\nThe only valid Aoc step is Release:", + "\nThe only valid AoC Step is Release:", "\n", "\n$$", "\n\\text{Actual} (\\text{Release}) = \\text{Actual Base} (\\text{Release})|_{\\text{Estimate Type} = A}", @@ -1506,10 +1506,10 @@ "\nThe contributions of present values and actuals are computed separately.", "\n", "\n$$", - "\nEA (\\rm{PV}) = \\text{Premium Allocation Factor} \\cdot \\big( PV (\\text{AocType = CF}) \\big)~, \\\\", + "\nEA (\\rm{PV}) = \\text{Premium Allocation Factor} \\cdot \\big( PV (\\text{AoC Type = CF}) \\big)~, \\\\", "\n$$", "\n$$", - "\nEA (\\text{Actual}) = \\text{Premium Allocation Factor} \\cdot \\big( \\text{Actual}(\\text{AocType = CF}) \\big) ~,", + "\nEA (\\text{Actual}) = \\text{Premium Allocation Factor} \\cdot \\big( \\text{Actual}(\\text{AoC Type = CF}) \\big) ~,", "\n$$", "\nwhere amount type premium and its children are considered, novelties in-force and new business are considered for $PV$ whereas novelty combined is considered for Actual. The allocation is always done in the finest granularity (novelty, line of business, ..) possible." ], @@ -1734,9 +1734,9 @@ "\n", "\n$$", "\n\\begin{array}{rl}", - "\nCSM({\\text{Aoc step}}) = 0,~~ LC({\\text{AoC step}}) = TM({\\text{AoC step}}) ~ & \\text{if }\\text{Aggregated }TM({\\text{AoC step}}) > 0.", + "\nCSM({\\text{AoC Step}}) = 0,~~ LC({\\text{AoC step}}) = TM({\\text{AoC step}}) ~ & \\text{if }\\text{Aggregated }TM({\\text{AoC step}}) > 0.", "\n\\\\", - "\nCSM({\\text{Aoc step}}) = - TM({\\text{AoC step}}),~~ LC({\\text{AoC step}}) = 0 ~ & \\text{otherwise} ", + "\nCSM({\\text{AoC Step}}) = - TM({\\text{AoC step}}),~~ LC({\\text{AoC step}}) = 0 ~ & \\text{otherwise} ", "\n\\end{array}", "\n$$", "\n", @@ -1749,7 +1749,7 @@ "\n", "\n### Gross case (i.e. no reinsurance)", "\n", - "\nThe switch logic is applied ***separately*** to the In-Force and New Business novelties. The Combined Liability Aoc Step **CL** will bring both contributions to CSM and LC together as the novelities are summed up.", + "\nThe switch logic is applied ***separately*** to the In-Force and New Business novelties. The Combined Liability AoC Step **CL** will bring both contributions to CSM and LC together as the novelities are summed up.", "\n", "\nIn detail, and as we go through the AoC steps in the AoC chain, we have", "\n", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 5071597b..c6572abc 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -33,7 +33,7 @@ "\n- [Projection Configuration](../DataModel/DataStructure)", "\n- [YieldCurve](../DataModel/DataStructure)", "\n- [DataNodeParameters](../DataModel/DataStructure)", - "\n- [AocType](../DataModel/DataStructure)", + "\n- [AoC Type](../DataModel/DataStructure)", "\n- [AmountType](../DataModel/DataStructure)", "\n- [EstimateType](../DataModel/DataStructure)", "\n- [DataNodes](../DataModel/DataStructure)", @@ -326,7 +326,7 @@ "\n : estimateType != null && EstimateTypeDimension.TryGetValue(estimateType, out var ct) ", "\n ? ct.PeriodType : PeriodType.EndOfPeriod;", "\n", - "\n //Variables and Cashflows", + "\n //Variables and Cash flows", "\n ", "\n public IEnumerable GetRawVariables(string dataNode) => RawVariablesByImportIdentity.TryGetValue(dataNode, out var variableCollection) ? variableCollection : Enumerable.Empty();", "\n public IEnumerable GetIfrsVariables(string dataNode) => IfrsVariablesByImportIdentity.TryGetValue(dataNode, out var variableCollection) ? variableCollection : Enumerable.Empty();", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index a1c956c0..efc27cba 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -358,11 +358,11 @@ { "cell_type": "markdown", "source": [ - "The [Analysis of Change configuration](../DataModel/DataStructure#aoc-step-configuration) is parsed from the input file and complemented with defaults to allow for an easy insertion of new Aoc steps. ", + "The [Analysis of Change configuration](../DataModel/DataStructure#aoc-step-configuration) is parsed from the input file and complemented with defaults to allow for an easy insertion of new AoC steps. ", "\n", "\nAfter having checked that the [AocTypes](../DataModel/DataStructure#aoc-variable-type) loaded in the target DataSource are including all the compulsory ones, default configurations are generated on the basis of the AocTypes ordering. ", "\n", - "\nThe following categories have been identified based on the *Order* of the novel Aoc step:", + "\nThe following categories have been identified based on the *Order* of the novel AoC Step:", "\n", "\n**Category** $$\\hspace{2.8cm}$$ **Default added with same configuration of**", "\n| | |", @@ -373,7 +373,7 @@ "\n| CRU < Order < WO | EV with Novelty I and N |", "\n| WO < Order < CL | WO with Novelty C (only for Import Source = Actual) |", "\n", - "\nThe new Aoc Configurations are created with the same order of the Aoc Types. " + "\nThe new AoC Configurations are created with the same order of the AoC Types. " ], "metadata": {}, "execution_count": 0, @@ -884,7 +884,7 @@ "## Parse and Upload: Variables", "\n", "\nVariables are created upon import of Cash flow and Actual file.", - "\n
Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables-cashflows). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", + "\n
Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", "\n
Actuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable). ", "\n", "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import. ", @@ -920,7 +920,7 @@ { "cell_type": "markdown", "source": [ - "### Cashflow as Raw Variable and Ifrs Variable" + "### Cash flow as Raw Variable and Ifrs Variable" ], "metadata": {}, "execution_count": 0, @@ -956,7 +956,7 @@ "\n return null;", "\n }", "\n ", - "\n // Filter out cashflows for DataNode that were created in the past and are still active and come with AocType = BOPI", + "\n // Filter out cash flows for DataNode that were created in the past and are still active and come with AocType = BOPI", "\n if(dataNodeData.Year < args.Year && aocType == AocTypes.BOP && novelty == Novelties.I) {", "\n ApplicationMessage.Log(Warning.ActiveDataNodeWithCashflowBOPI, dataNode);", "\n return null;", @@ -1153,7 +1153,7 @@ "\nSimple Value import is a special import that imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", "\n
It can be used in two very different scenarios: ", "\n- Simple Value : to import final figures as computed by an independent tool. In this case our IFRS 17 calculation is not applied and variable are stored in the Database for being consumed in reports with our powerful reporting tooling. ", - "\n- Opening value : in the **fair value approach** this importer allows the import of in force opening values (Aoc step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA." + "\n- Opening value : in the **fair value approach** this importer allows the import of in force opening values (AoC Step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA." ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/OverviewCalculationEngine.ipynb b/ifrs17/OverviewCalculationEngine.ipynb index 5b7a1ba1..c4d85c77 100644 --- a/ifrs17/OverviewCalculationEngine.ipynb +++ b/ifrs17/OverviewCalculationEngine.ipynb @@ -31,7 +31,7 @@ "source": [ "# Introduction", "\n", - "\nThe Systemorph IFRS 17 Calculation Engine is an essential toolkit to conduct the data imports, data transformations, calculations and reports for an IFRS 17 solution. The basic inputs are: modeled future **cashflows**, actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). Alternatively, pre-computed figures can also be imported in the solution. The output is a set of calculated results (Contractual Service Margin, Loss Component, Financial Performance, etc...) displayed in interactive and intuitive reports. These results can further be used for IFRS 17 reporting, analysis, accounting, steering and other management information.", + "\nThe Systemorph IFRS 17 Calculation Engine is an essential toolkit to conduct the data imports, data transformations, calculations and reports for an IFRS 17 solution. The basic inputs are: modeled future **cash flows**, actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). Alternatively, pre-computed figures can also be imported in the solution. The output is a set of calculated results (Contractual Service Margin, Loss Component, Financial Performance, etc...) displayed in interactive and intuitive reports. These results can further be used for IFRS 17 reporting, analysis, accounting, steering and other management information.", "\n", "\nThis notebook provides an **overview** of Systemorph IFRS 17 Calculation Engine with brief introductions to all the main steps.", "\n", @@ -55,17 +55,17 @@ "\n", "\nInsurance policies need to be allocated to homogeneous groups of insurance contracts (GICs for gross, GRICs for reinsurance) according to high-level principles established by the IFRS 17 standard, such as contract type, line of business, annual cohort etc. Insurers have some degree of freedom to optmize those GICs, as long as they respect the high-level principles.", "\n", - "\nInsurance contracts generate different types of cashflows. For example, **Amount Type** is a dimension refering to premiums, claims, expenses of different kinds, etc. for these cashflows. The Calculation Engine presented here expects input files of all the projected cashflows for each GIC for the different accounting periods, and corresponding actual amounts observed for the corresponding accounting period. ", + "\nInsurance contracts generate different types of cash flows. For example, **Amount Type** is a dimension refering to premiums, claims, expenses of different kinds, etc. for these cash flows. The Calculation Engine presented here expects input files of all the projected cash flows for each GIC for the different accounting periods, and corresponding actual amounts observed for the corresponding accounting period. ", "\n", - "\nEach cashflow is characterized by all the necessary attributes: reporting node (typically the company or legal entity), start time, amount type, novelty of business etc. and projected cashflow amounts in a regular time grid (monthly granularity) until the final run-off of all contracts.", + "\nEach cash flow is characterized by all the necessary attributes: reporting node (typically the company or legal entity), start time, amount type, novelty of business etc. and projected cash flow amounts in a regular time grid (monthly granularity) until the final run-off of all contracts.", "\n", - "\nIf the entered cashflows are nominal (the usual case), the the present value (PV) of each cashflow is computed using proper yield curves for discounting.", + "\nIf the entered cash flows are nominal (the usual case), the the present value (PV) of each cash flow is computed using proper yield curves for discounting.", "\n", - "\nA central element of IFRS 17 is the Analysis of Change (AoC). The present value of the business (future cashflows) changes from the beginning to the end of the accounting period due to different effects, each of them constituting a modeled AoC step.", + "\nA central element of IFRS 17 is the Analysis of Change (AoC). The present value of the business (future cash flows) changes from the beginning to the end of the accounting period due to different effects, each of them constituting a modeled AoC step.", "\n", "\nIn IFRS 17, the value of future profitable business has a component called the Contractual Service Margin (CSM), defined at GIC level. The profit measured as CSM is recognized slowly over time rather than immediately in financial performance statements. On the other hand, a GIC can be onerous and produce a Loss Component (LC) instead, which needs to be recognized immediately in the financial performance statements.", "\n", - "\nSeveral reports on the valuation of cashflows, balance sheet and financial performance can be produced, each dealing with different aspects, such as", + "\nSeveral reports on the valuation of cash flows, balance sheet and financial performance can be produced, each dealing with different aspects, such as", "\n - Present Value of Future Cash Flows (PVFCF)", "\n - Contractual Service Margin (CSM) and Loss Component (LC)", "\n - Actuals, Deferrals and Accruals", @@ -90,7 +90,7 @@ "\n", "\nOther simpler calculations occur at report generation (e.g FX conversion), as they do not require a very high data granularity and therefore do not impact the reports significantly. This IFRS 17 Business Logic is defined in the [ReportScopes](./Report/ReportScopes#report-scopes) notebook. ", "\n", - "\nTherefore, we normally start by importing the data input files (parameters, cashflows, actuals, ...) for the pre-computation of complex quantities. This basis will later be used to calculate and generate different reports." + "\nTherefore, we normally start by importing the data input files (parameters, cash flows, actuals, ...) for the pre-computation of complex quantities. This basis will later be used to calculate and generate different reports." ], "metadata": {}, "execution_count": 0, @@ -151,9 +151,9 @@ "\n$$", "\n$$", "\n- **[Present Values (PV)](./Import/ImportScopeCalculation#present-values)** of cash flow amounts for all AoC steps:", - "\n - [Cumulated discounted](./Import/ImportScopeCalculation#cumulated-discounted-cashflows) cash flow amounts for all AoC steps", + "\n - [Cumulated discounted](./Import/ImportScopeCalculation#cumulated-discounted-cash-flows) cash flow amounts for all AoC steps", "\n - [Telescoping difference](./Import/ImportScopeCalculation#telescopic-difference) calculation of cumulated discounted cash flows per AoC step, where the total PV change over the period is the telescoping sum of all these differences", - "\n - [Present Value calculation](./Import/ImportScopeCalculation#present-value) at the beginning and end of the period, with its underlying [Present value base](./Import/ImportScopeCalculation#present-value-base) calculations for different AoC types and for [current and locked-in](./Import/ImportScopeCalculation#current-and-locked) yield curves", + "\n - [Present Value calculation](./Import/ImportScopeCalculation#present-value) at the beginning and end of the period, with its underlying calculations for different AoC types and for [current and locked-in](./Import/ImportScopeCalculation#current-and-locked) yield curves", "\n - [Interest accretion](./Import/ImportScopeCalculation#interest-accretion) cash flow calculation (one of the AoC steps)", "\n- **[Risk Adjustment (RA)](./Import/ImportScopeCalculation#risk-adjustment)** calculation, a requirement of the IFRS 17 standard", "\n$$", @@ -169,9 +169,8 @@ "\n", "\n$$", "\n$$", - "\n- **[Contractual Service Margin (CSM), Loss Component LC) and Loss Recovery Component (LRC)](./Import/ImportScopeCalculation#csm)**, modeling the treatment of unearned profits (CSM) and losses (LC, LRC) as required by the IFRS 17 standard, per GIC or GRIC:", - "\n - [Fulfillment Cashflow (FCF)](./Import/ImportScopeCalculation#fulfillment-cashflow), same as the aforementioned cumulated discounted cashflow, now adding the risk adjustment component as a basis for CSM and LC calculations", - "\n - [Technical Margin](./Import/ImportScopeCalculation#technical-margin), which is the FCF with special rules for different AoC steps including the Amortization step, also using and calculating the Interest Accretion Factor, Premiums, Deferrals and Investment Claims", + "\n- **[Contractual Service Margin (CSM), Loss Component LC) and Loss Recovery Component (LoReCo)](./Import/ImportScopeCalculation#csm)**, modeling the treatment of unearned profits (CSM) and losses (LC, LRC) as required by the IFRS 17 standard, per GIC or GRIC:", + "\n - [Technical Margin](./Import/ImportScopeCalculation#technical-margin), which is the sum of best estimate and risk adjustment PV with special rules for different AoC steps including the Amortization step, also using and calculating the Interest Accretion Factor, Premiums, Deferrals and Investment Claims", "\n - [Switch Logic for CSM and LC](./Import/ImportScopeCalculation#technical-margin), switching between CSM and LC for a given AoC step in the AoC period; one of the two is always zero depending on the sign of the Technical Margin; distinguishing the [gross case](./Import/ImportScopeCalculation#gross-case) (no reinsurance) from the [reinsurance case](./Import/ImportScopeCalculation#reinsurance-case) which applies reinsurance coverage weights" ], "metadata": {}, @@ -205,7 +204,7 @@ "\nThe Systemorph IFRS 17 Calculation Engine is constantly being maintained and enhanced for additional functionality.", "\n", "\nThe main features available are mentioned below (not an exhaustive list):", - "\n- IFRS 17 Data Import: Nominal Cashflows, Actuals, Opening and/or Pre-Calculated values", + "\n- IFRS 17 Data Import: Nominal Cash flows, Actuals, Opening and/or Pre-Calculated values", "\n- Discounting using Current or Locked In economic assumptions", "\n- Calculation: BBA for Gross and Reinsurance", "\n- Liability for Remaining Coverage (LRC) and Liability for Incurred Claims (LIC)", @@ -221,6 +220,15 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/README.md b/ifrs17/README.md index 10015d5e..4f6f5b7d 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -1,33 +1,43 @@ -

-Systemorph logo -

+ -

IFRS 17 Calculation Engine

+**The Systemorph IFRS 17 Calculation Engine** provides the functionality to develop and maintain an IFRS 17 solution based on Systemorph Cloud. It includes specifications and corresponding implementations of data importers, data transformations, calculations, reports and much more. -Systemorph's IFRS 17 Calculation Engine is a tool to conduct all the essential IFRS 17 calculations given some key figures, future cashflows and actual amounts, for groups of insurance contracts and other basic information. The result is a set of reports needed for IFRS 17 accounting and management information. +You can find a standard IFRS 17 implementation in the [**IFRS 17 Template**](https://portal.systemorph.cloud/project/ifrs17-template) project, where we apply the functionality of the engine in practice. There you can explore and interact with all the features provided by the Systemorph IFRS 17 Calculation Engine. -# Get started +The Systemorph IFRS 17 Calculation Engine is evolving, and new features are continuously added. An overview can be seen in our [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine) page. We also have a [Community Team](https://systemorph.cloud/community) and are keen to hear your feedback, suggestions or comments. -Systemorph portal allows Users to create their own projects powered by the Vertex 10 technology. +## Get started -# Overview +Open our [**IFRS 17 Template**](https://portal.systemorph.cloud/project/ifrs17-template) project and follow the instructions to interact with the figures and customize the solution with your own inputs. -

-IFRS 17 Solution Overview -

+## Overall picture +If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [Overview Calculation Engine](./OverviewCalculationEngine) notebook. +You will be introduced to: +- [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed +- [Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material -If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/OverviewCalculationEngine). -You will be introduced to -- [DataModel](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed -- [Calculation](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material +

+ IFRS 17 Solution Overview +

-# Got Questions +## Got Questions? -For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -TODO link to the community page(IFRS17 landing page)- +For support around the **IFRS 17 Calculation Engine** project get in touch with our [Community Team](https://systemorph.cloud/community) or contact us through [Linkedin](https://www.linkedin.com/company/systemorph) or add your questions directly on [Youtube](https://www.youtube.com/@systemorph) videos. -# Contributing +
-All work on the **Full IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). +## Contributing -This project adheres to overall [General Terms & Conditions for Systemorph Cloud]() TODO link to terms and conditions file. \ No newline at end of file +All work on the **IFRS 17 Calculation Engine** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). From here, you can get to know about future releases, track the current work and report issues. + +
+ +
+ +This project adheres to our [General Terms & Conditions](https://systemorph.cloud/general-terms-and-conditions/). + +
\ No newline at end of file diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 03f24a5f..44563155 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -21,7 +21,7 @@ "cell_type": "markdown", "source": [ "", - "\n

Report Scopes (IFRS17 Methodology Business Logic)

" + "\n

Report Scopes (IFRS 17 Methodology Business Logic)

" ], "metadata": {}, "execution_count": 0, @@ -295,9 +295,9 @@ { "cell_type": "markdown", "source": [ - "", - "\n## Fulfillment Cashflows", - "\nFulfillment Cashflows (FCF) report includes contributions from the [Best Estimate](#best-estimate) of Present Value and [Risk Adjustment](#risk-adjustment) Present Value." + "", + "\n## Fulfillment Cash flows", + "\nFulfillment Cash flows (FCF) report includes contributions from the [Best Estimate](#best-estimate) of Present Value and [Risk Adjustment](#risk-adjustment) Present Value." ], "metadata": {}, "execution_count": 0, @@ -337,7 +337,7 @@ "", "\n## LRC Technical Margin: CSM, LC, LoReCo", "\n", - "\nContractual Service Margin (CSM), Loss Component (LC), Loss Recovery Component (LoReCo) reports of the Liability for Remaining Coverage (LRC) include contributions from the calculation of [CSM](../Import/ImportScopeCalculation#csm), [LC](../Import/ImportScopeCalculation#csm), and [LoReCo](../Import/ImportScopeCalculation#csm), respectively." + "\nThe LRC [Technical Margin](../Import/ImportScopeCalculation#technical-margin) is allocated to either Contractual Service Margin (CSM) or Loss Component (LC) or Loss Recovery Component (LoReCo). Therefore, the correponding report is available only for Liability for Remaining Coverage (LRC) and includes contributions from the calculation of [CSM](../Import/ImportScopeCalculation#csm), [LC](../Import/ImportScopeCalculation#csm), and [LoReCo](../Import/ImportScopeCalculation#csm)." ], "metadata": {}, "execution_count": 0, @@ -434,7 +434,7 @@ "source": [ "## Experience Adjustment", "\n", - "\nExperience Adjustment (EA) report includes contributions from the [Written](#written-accrual-deferral) Actual report and the [Best Estimate](#best-estimate) of Present Value report (only the *Cash flow* AocStep). " + "\nExperience Adjustment (EA) report includes contributions from the [Written](#written-accrual-deferral) Actual report and the [Best Estimate](#best-estimate) of Present Value report (only the *Cash flow* AoC Step). " ], "metadata": {}, "execution_count": 0, @@ -464,7 +464,7 @@ "", "\n## LIC Actuarial (Actuarial Liability for Incurred Claims)", "\n", - "\nActuarial Liability of Incurred Claims (LIC Actuarial) report includes the contributions from [Fulfillment cashflow](#fulfillment-cashflows)." + "\nActuarial Liability of Incurred Claims (LIC Actuarial) report includes the contributions from [Fulfillment cash flow](#fulfillment-cash-flows)." ], "metadata": {}, "execution_count": 0, @@ -487,7 +487,7 @@ "", "\n## LIC (Liability for Incurred Claims)", "\n", - "\nLiability of Incurred Claims (LIC) report includes the contributions from [LIC Actuarial](#lic-actuarial) (Fullfilment Cashflow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." + "\nLiability of Incurred Claims (LIC) report includes the contributions from [LIC Actuarial](#lic-actuarial) (Fullfilment Cash flow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." ], "metadata": {}, "execution_count": 0, @@ -521,7 +521,7 @@ "", "\n## LRC Actuarial (Actuarial Liability for Remaining Coverage)", "\n", - "\nActuarial Liability for Remaining Coverage (LRC) report includes all the contributions from [Fulfillment cashflow](#fulfillment-cashflows), [Contructual Sevice Margin](#technical-margin), [Loss Component](#technical-margin), and [Loss Recovery Component](#technical-margin)." + "\nActuarial Liability for Remaining Coverage (LRC) report includes all the contributions from [Fulfillment cash flow](#fulfillment-cash-flows), [Contructual Sevice Margin](#technical-margin), [Loss Component](#technical-margin), and [Loss Recovery Component](#technical-margin)." ], "metadata": {}, "execution_count": 0, @@ -548,7 +548,7 @@ "", "\n## LRC (Liability for Remaining Coverage)", "\n", - "\nLiability for Remaining Coverage (LRC) report includes all the contributions from [LRC Actuarial](#lrc-actuarial) (Fulfillment Cashflow, Contructual Sevice Margin, Loss Component, Loss Recovery Component) and, [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." + "\nLiability for Remaining Coverage (LRC) report includes all the contributions from [LRC Actuarial](#lrc-actuarial) (Fulfillment Cash flow, Contructual Sevice Margin, Loss Component, Loss Recovery Component) and, [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." ], "metadata": {}, "execution_count": 0, @@ -589,7 +589,7 @@ { "cell_type": "markdown", "source": [ - "The IFRS 17 Financial Performance aims at disclosing the deltas (i.e. difference between EoP and BoP, or the Change in Estimate) of the IFRS 17 Balance Sheet items (LRC, LIC) and the relevant incurred cashflows (Premiums, Claims, Expenses, etc...) for the given period.", + "The IFRS 17 Financial Performance aims at disclosing the deltas (i.e. difference between EoP and BoP, or the Change in Estimate) of the IFRS 17 Balance Sheet items (LRC, LIC) and the relevant incurred cash flows (Premiums, Claims, Expenses, etc...) for the given period.", "\n", "\nIn addition, the IFRS 17 Financial Performance must split the results into at least 4 distinct sections:", "\n - Insurance Revenue ($IR$)", @@ -603,9 +603,9 @@ "\nThe overall formulas for each of the sections above are as follows:", "\n$$", "\n\\begin{array}{rl}", - "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\text{ Incurred Incoming Cashflows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cashflows} - \\text{ Experience Adjustment On Premium }", + "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\text{ Incurred Incoming Cash flows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cash flows} - \\text{ Experience Adjustment On Premium }", "\n\\\\", - "\nISE =& -\\Delta \\text{ Reinsurance Non-Financial LRC } - \\Delta \\text{ Non-Financial LIC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Outgoing Cashflows } - \\text{ Amortization of the Insurance Acquisition Cashflows}", + "\nISE =& -\\Delta \\text{ Reinsurance Non-Financial LRC } - \\Delta \\text{ Non-Financial LIC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Outgoing Cash flows } - \\text{ Amortization of the Insurance Acquisition Cash flows}", "\n\\\\", "\nIFIE =& -\\Delta \\text{ Financial LRC } - \\Delta \\text{ Financial LIC }", "\n\\\\", @@ -615,7 +615,7 @@ "\n", "\nFor CSM, LC and LoReCo (and implicit Amortization Factors / Coverage Units), the yield curve used is according to the methodology choice (e.g. BBA uses Locked-In rates). ", "\n", - "\nThe Fulfillment Cashflows components for LIC and LRC are discounted using the appropriate yield curve (Locked-In or Current) according to the choice of the OCI option and methodology. We can distinguish 2 cases for the Building Block approach (BBA):", + "\nThe Fulfillment Cash flows components for LIC and LRC are discounted using the appropriate yield curve (Locked-In or Current) according to the choice of the OCI option and methodology. We can distinguish 2 cases for the Building Block approach (BBA):", "\n - BBA, OCI option ***disabled***: FCF computed using Current rates", "\n - BBA, OCI option ***enabled***: FCF computed using Locked-In rates", "\n", @@ -636,7 +636,7 @@ { "cell_type": "markdown", "source": [ - "## Fulfillment Cashflows (excluding the Loss Component)" + "## Fulfillment Cash flows (excluding the Loss Component)" ], "metadata": {}, "execution_count": 0, @@ -656,8 +656,8 @@ "\nTo all contributions a sign flip is applied. ", "\n", "\nIn particular: ", - "\n- Financial component includes the AocType Interest Accreation, Yield Curve Update, and Credit Risk Update,", - "\n- Non-Financial component includes all the remaining AocTypes.", + "\n- Financial component includes the AoC Type Interest Accreation, Yield Curve Update, and Credit Risk Update,", + "\n- Non-Financial component includes all the remaining AoC Types.", "\n- Oci component includes the difference between the movement occured in the period computed applying the discounting with the current yield curve and the discounting with the locked-in yield curve.", "\n", "\nThe Financial contributions are reported in 'Financial LIC Changes' for a Group of Contract with Liability Type LIC and to 'Financial LRC Changes' for a Group of Contract with Liability Type LRC.", @@ -745,11 +745,11 @@ "source": [ "## Contractual Service Margin (CSM)", "\n", - "\nCsm contributes to the 'Insurance Revenue' in the case of a Group of Insurance Contract and to the 'Insurance Service Expense' in the case of a Group of Reinsurance Contract and to the 'Insurance Finance Income/Expense'. To all contributions a sign flip is applied. ", + "\n[CSM](#lrc-technical-margin-csm-lc-loreco) contributes to the 'Insurance Revenue' in the case of a Group of Insurance Contract and to the 'Insurance Service Expense' in the case of a Group of Reinsurance Contract and to the 'Insurance Finance Income/Expense'. To all contributions a sign flip is applied. ", "\nIn particular, the CSM figures are separated in three cathegories: ", - "\n- Amortization (including to AocType Amortization),", - "\n- Financial contributions (including the AocTypes Interest Accreation, Yield Curve Update, and Credit Risk Update),", - "\n- Non Financial contributions (including all the remaining AocTypes).", + "\n- Amortization (including to AoC Type Amortization),", + "\n- Financial contributions (including the AoC Types Interest Accreation, Yield Curve Update, and Credit Risk Update),", + "\n- Non Financial contributions (including all the remaining AoC Types).", "\n", "\n
The Amortization contribution is reported in 'Insurance Revenue' under 'CSM Amortization' or in 'Insurance Service Expense' under 'Reinsurance CSM Amortization' for a Group of Insurance Contract and a Group of Reinsurance Contract, respectively. ", "\n
The Financial contributions are reported in 'Financial LRC Changes'.", @@ -801,9 +801,9 @@ "\n", "\nLC contributes to the 'Insurance Service Expense' and to the 'Insurance Finance Income/Expense'. To all contributions a sign flip is applied. ", "\nIn particular, the LC figures are separated in three cathegories: ", - "\n- Amortization (including to AocType Amortization),", - "\n- Financial contributions (including the AocTypes Interest Accreation, Yield Curve Update, and Credit Risk Update),", - "\n- Non Financial contributions (including all the remaining AocTypes).", + "\n- Amortization (including to AoC Type Amortization),", + "\n- Financial contributions (including the AoC Types Interest Accreation, Yield Curve Update, and Credit Risk Update),", + "\n- Non Financial contributions (including all the remaining AoC Types).", "\n", "\n
The Amortization contribution is reported in 'Loss Component Release'.", "\n
The Financial contributions are reported in 'Financial LRC Changes'.", @@ -850,9 +850,9 @@ "\n", "\nLoReCo contributes to the 'Insurance Service Expense' and to the 'Insurance Finance Income/Expense'. To all contributions a sign flip is applied. ", "\nIn particular, the LoReCo figures are separated in three cathegories: ", - "\n- Amortization (including to AocType Amortization),", - "\n- Financial contributions (including the AocTypes Interest Accreation, Yield Curve Update, and Credit Risk Update),", - "\n- Non Financial contributions (including all the remaining AocTypes).", + "\n- Amortization (including to AoC Type Amortization),", + "\n- Financial contributions (including the AoC Types Interest Accreation, Yield Curve Update, and Credit Risk Update),", + "\n- Non Financial contributions (including all the remaining AoC Types).", "\n", "\n
The Amortization contribution is reported in 'LoReCo Release'.", "\n
The Financial contributions are reported in 'Financial LRC Changes'.", @@ -904,7 +904,7 @@ { "cell_type": "markdown", "source": [ - "After the main Balance Sheet items, we need to disclose the Incurred Cashflows (i.e. Effective Actuals) for the period in the Financial Performance (which takes into consideration Write-Off on Accruals).", + "After the main Balance Sheet items, we need to disclose the Incurred Cash flows (i.e. Effective Actuals) for the period in the Financial Performance (which takes into consideration Write-Off on Accruals).", "\nAs another requirement, we exclude any investment components explicitly.", "\n", "\nThese contributions are splitted by Amount Type to the following sections:", diff --git a/ifrs17/Test/AocConfigurationTest.ipynb b/ifrs17/Test/AocConfigurationTest.ipynb index 2404aa2b..164cd950 100644 --- a/ifrs17/Test/AocConfigurationTest.ipynb +++ b/ifrs17/Test/AocConfigurationTest.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Test Aoc Configuration

" + "

Test AoC Configuration

" ], "metadata": {}, "execution_count": 0, @@ -78,7 +78,7 @@ { "cell_type": "markdown", "source": [ - "# Canonical Aoc Types and Configurations" + "# Canonical AoC Types and Configurations" ], "metadata": {}, "execution_count": 0, @@ -178,7 +178,7 @@ { "cell_type": "markdown", "source": [ - "## NewAoc < RCU" + "## NewAoC < RCU" ], "metadata": {}, "execution_count": 0, @@ -209,7 +209,7 @@ { "cell_type": "markdown", "source": [ - "## RCU < NewAoc < CF" + "## RCU < NewAoC < CF" ], "metadata": {}, "execution_count": 0, @@ -240,7 +240,7 @@ { "cell_type": "markdown", "source": [ - "## IA < NewAoc < YCU" + "## IA < NewAoC < YCU" ], "metadata": {}, "execution_count": 0, @@ -283,7 +283,7 @@ { "cell_type": "markdown", "source": [ - "## CRU < NewAoc < EV" + "## CRU < NewAoC < EV" ], "metadata": {}, "execution_count": 0, @@ -326,7 +326,7 @@ { "cell_type": "markdown", "source": [ - "## EV < NewAoc < WO" + "## EV < NewAoC < WO" ], "metadata": {}, "execution_count": 0, @@ -369,7 +369,7 @@ { "cell_type": "markdown", "source": [ - "## WO < NewAoc < CL" + "## WO < NewAoC < CL" ], "metadata": {}, "execution_count": 0, @@ -400,7 +400,7 @@ { "cell_type": "markdown", "source": [ - "## Two or more Aoc Config with same Order" + "## Two or more AoC Config with same Order" ], "metadata": {}, "execution_count": 0, @@ -414,7 +414,7 @@ "\n new AocType{SystemName = \"A3\", DisplayName = \"a1\", Order = 113},", "\n new AocType{SystemName = \"A4\", DisplayName = \"a1\", Order = 114},", "\n new AocType{SystemName = \"A5\", DisplayName = \"a1\", Order = 115} } );", - "\n(aocConfigLog.Errors.First().ToString() == \"ActivityMessageNotification { Message = Two or more Aoc Configurations have the same Order. }\").Should().Be(true);" + "\n(aocConfigLog.Errors.First().ToString() == \"ActivityMessageNotification { Message = Two or more AoC Configurations have the same Order. }\").Should().Be(true);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index f3238f31..c783cc39 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -66,7 +66,7 @@ { "cell_type": "markdown", "source": [ - "# Get Reference AocStep for calculated steps" + "# Get Reference AoC Step for calculated steps" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 54efbb41..47f4597b 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -189,7 +189,7 @@ "\n var lockedInYieldCurveByGoc = new Dictionary();", "\n foreach (var dn in dataNodes.Where(x => x.ValuationApproach == ValuationApproaches.BBA))", "\n {", - "\n var argsNew = args with {Year = dn.Year, Month = dn.Month, Scenario = dn.Scenario};", + "\n var argsNew = args with {Year = dn.Year, Month = dn.Month, Scenario = dn.Scenario}; //MonthInAYear", "\n var loadedYc = (await querySource.LoadCurrentParameterAsync(argsNew, x => x.Currency, x => x.Currency == dn.ContractualCurrency));", "\n ", "\n if(!loadedYc.TryGetValue(dn.ContractualCurrency, out var lockedYc))", @@ -371,7 +371,7 @@ { "cell_type": "markdown", "source": [ - "# Aoc Step Configuration" + "# AoC Step Configuration" ], "metadata": {}, "execution_count": 0,