From d9ca25814c80a915f46c6961892fc7d8796bd4e8 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 8 Mar 2023 14:48:16 +0100 Subject: [PATCH 01/16] starting with some data --- .../Actuals_CH_2020_12.csv | 12 + .../DataImport.ipynb | 208 +++++++++++ ...ataNodeParameters_CompReins_CH_2020_12.csv | 11 + .../DataNodeStates_CompReins_CH_2020_12.csv | 8 + .../DataNodes_CompReins_CH.csv | 15 + .../NominalCashflows_CH_2020_12.csv | 36 ++ .../Openings_CH_2020_12.csv | 8 + .../CompareReinsuranceContracts/Reports.ipynb | 328 ++++++++++++++++++ 8 files changed, 626 insertions(+) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv new file mode 100644 index 00000000..417ba430 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv @@ -0,0 +1,12 @@ +@@Main,,,,, +ReportingNode,Year,Month,,, +CH,2020,12,,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1,CF,PR,A,,90 +RP1,CF,ICO,A,,-6 +RP1,CF,NIC,A,,-70 +RP1,CF,ACA,A,,-10 +RP1,CF,AEA,A,,-5 +RPR1.1,CF,PR,A,,-45 +RPR1.1,CF,NIC,A,,35 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb new file mode 100644 index 00000000..0282d015 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -0,0 +1,208 @@ +{ + "metadata": { + "authors": [], + "id": "YGWMnwRniU64QZaE2oBrFw", + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Contractual Service Margin and Loss Component Switch Data Import

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "This is the Data Import notebook for the Contractual Service Margin and Loss Component Switch case.", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Set up and data import" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Reference Data and Parameters" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!import \"../../Initialization/InitSystemorphRefDataToMemory\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Data Nodes" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"DataNodes_CompReins_CH.csv\")", + "\n .WithFormat(ImportFormats.DataNode)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"DataNodeStates_CompReins_CH_2020_12.csv\")", + "\n .WithFormat(ImportFormats.DataNodeState)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"DataNodeParameters_CompReins_CH_2020_12.csv\")", + "\n .WithFormat(ImportFormats.DataNodeParameter)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Transactional Data" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### importing first GIC: 2020 12 for fully retrospective calculation and 2021 3 for the current calculation" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Openings_CH_2020_12.csv\")", + "\n .WithFormat(ImportFormats.Opening)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"NominalCashflows_CH_2020_12.csv\")", + "\n .WithFormat(ImportFormats.Cashflow)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Actuals_CH_2020_12.csv\")", + "\n .WithFormat(ImportFormats.Actual)", + "\n .WithTarget(DataSource)", + "\n .WithActivityLog()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Reset Workspace" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Workspace.InitializeFrom(DataSource);", + "\nifrs17.Reset(Workspace)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv new file mode 100644 index 00000000..d4660dbe --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv @@ -0,0 +1,11 @@ +@@Main,, +ReportingNode,Year,Month,Scenario +CH,2020,12 +,, +@@SingleDataNodeParameter,, +DataNode,PremiumAllocation, +RP1.1,0.8 +,, +@@InterDataNodeParameter,, +DataNode,LinkedDataNode,ReinsuranceCoverage +RP1.1,RPR1.1,0.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv new file mode 100644 index 00000000..576d5bd0 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv @@ -0,0 +1,8 @@ +@@Main +ReportingNode,Year,Month,Scenario +CH,2020,12, + +@@DataNodeState,, +DataNode,State, +RP1.1,Active, +RPR1.1,Active, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv new file mode 100644 index 00000000..ca3696e5 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv @@ -0,0 +1,15 @@ +@@Main +ReportingNode +CH +@@InsurancePortfolio +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, +RP1,Insurance Portfolio,USD,ANN,BBA,Default, +@@GroupOfInsuranceContract +SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability, +RP1.1,Gross Business Reinsured,RP1,2020,LRC,O, +@@ReinsurancePortfolio +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, +RPR1,Reinsurance Portfolio,USD,ANN,BBA,Default, +@@GroupOfReinsuranceContract +SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner +RPR1.1,Reinsurance Contract,RPR1,2020,LRC,P,PT1 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv new file mode 100644 index 00000000..a9b54366 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv @@ -0,0 +1,36 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20 +RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,MC,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,0,0,0,0,0,0,0,0,0 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,0,0,0,0,0,0,0,0,0 +RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0 +RP1.1,ICO,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,0,0,0,0,0,0,0,0,0 +RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,0,0,0,0,0,0,0,0 +RP1.1,ICO,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,EV,N,,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,0,0,0,0,0,0,0,0,0 +RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,0,0,0,0,0,0,0,0 +RP1.1,ICO,BE,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,CL,C,,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,0,0,0,0,0,0,0,0,0 +RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,0,0,0,0,0,0,0,0,0 +RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,MC,I,,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,0,0,0,0,0,0,0,0,0 +RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,0,0,0,0,0,0,0,0,0 +RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,EV,N,,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0 +RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,CL,C,,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,0,0,0,0,0,0,0,0,0 +RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv new file mode 100644 index 00000000..df6f9b8c --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv @@ -0,0 +1,8 @@ +@@Main,,,, +ReportingNode,Year,Month,, +CH,2020,12,, +@@Opening,,,, +DataNode,EstimateType,AmountType,AccidentYear,Value +RP1.1,C,,,72.2 +RP1.1,AA,PR,,-1.5 +RP1.1,OA,PR,,1.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb new file mode 100644 index 00000000..2ea03ba6 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -0,0 +1,328 @@ +{ + "metadata": { + "authors": [], + "id": "fSGCg42oXUOYruTUQPiNXg", + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Contractual Service Margin and Loss Component Switch

", + "\n", + "\n

Impact of the switch logic to Financial Performance and Balance Sheet

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Theory ", + "\nA fundamental concept introduced by IFRS 17 is the Contractual Service Margin (CSM). The CSM represents the unearned profit that an entity expects to earn as it provides services. It is defined at the minimum granularity being the Group of Insurance Contract (Unit Of Account) and it is relevant for all Liability of Remaining Coverage (LRC) approaches with the exception of the Premium Allocation Approach.", + "\n", + "\nThe main principles to understand the Contractual Sevice Margin and Loss Component in IFRS 17 are: ", + "\n", + "\n**Principle 1**: When an insurer writes profitable business, it must not be allowed to recognise the expected profits immediately and instead *must spread those profits over time*.", + "\n", + "\n**Principle 2**: When an insurer writes loss-making business, it must not be allowed to spread the expected losses for that business over time and instead *must recognise those losses immediately*.", + "\n

", + "\n", + "\n
", + "\n


", + "\n", + "\n**Principle 3**: The CSM must be adjusted for all changes (AoC Step) that relate to future service e.g. favourable mortality updates must increase the CSM; unfavourable lapse experience must decrease the CSM.", + "\n", + "\n**Principle 4**: When an insurer recognises that written business, that was previously expected to be profitable, is now expected to be loss-making, e.g. because of changes relating to future service, it must not be allowed to spread the expected losses for that business over time and instead must recognise those losses immediately. It will do so by first extinguishing the CSM and then establishing a Loss Component (LC) in respect of the remaining excess. This represents a switch of the CSM to LC. ", + "\n

", + "\n", + "\n
" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Case Study", + "\nIn this case study we look at the allocation of the Technical Margin into Contractual Service Margin or Loss Component and its impact on the Financial Performance and Balance Sheet. ", + "\n
In particular, we are going to consider two possible approaches for the **switch logic**, which determines how the Technical Margin turns from CSM to LC and vice versa throughout the Analysis of Change (AoC). ", + "\n", + "\nFor this exercise, we consider two hypothetical GICs with identical inputs: the same parameters, modelled cash flows, actuals, etc... We will then analyze the results obtained by applying two different implementations of the **switch logic** and its implications to financial figures.", + "\n", + "\nWe have defined the following GICs:", + "\n - **MZ 1.1 Multiple Switches**: in this case the allocation of the Technical Margin to either CSM or LC can happen multiple times between the Beginning of Period (BoP) and End of Period (EoP). This means whenever the cumulative Technical Margin changes its sign due to the corresponding AoC contributions, a switch from CSM to LC (and vice versa) is observed.", + "\n ", + "\n - **MZ 1.2 Single Switch**: in this case the allocation of the Technical Margin to either CSM or LC can happen only once between the Beginning of Period (BoP) and End of Period (EoP). This means only if there is an effective switch (i.e. the cumulative Technical Margin at the Beginning of Period (BoP) and at the End of Period (EoP) have different signs), a single switch is observed. Otherwise there is no switch.", + "\n", + "\nWe will look at the relevant reports for the first quarter of year 2021 (2021 3).", + "\n", + "\nIt is worth to mention that in our starndard implementation, we consider *In Force* and *New business* contributions seperately as most analysts consider the new business part of the CSM an important Key Performance Indicator (KPI)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Data Import" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!import \"CsmSwitchDataImport\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var reportingYear = 2021; ", + "\nvar reportingMonth = 3;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Fulfilment Cash Flow (FCF)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "We start by looking at the Fulfilment Cash Flows (FCF). Data and results for both cases are exactly the same." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;", + "\nfulfillmentCashflows.ReportingNode = \"CH\";", + "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);", + "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};", + "\nfulfillmentCashflows.DataFilter = null;", + "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Written Actuals" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Aslo the Actuals for both cases are exactly the same." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var writtenActual = ifrs17.WrittenActuals;", + "\nwrittenActual.ReportingNode = \"CH\";", + "\nwrittenActual.ReportingPeriod = (reportingYear, reportingMonth);", + "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};", + "\nwrittenActual.DataFilter = null;", + "\n(await writtenActual.ToReportAsync) with {Height = 400}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# LRC Technical Margin (TM)", + "\n", + "\nIn the Technical Margin report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", + "\n", + "\nA negative value for Technical Margin correspond to an Asset character and thus allocated to the CSM. Conversely, a positive value of the Technical Margin represents a Liability character, which is then allocated to Loss Component. ", + "\n", + "\nAn Analysis of Change (AoC) report allows one to explain how the closing value (EoP) is obtained from the opening value (BoP). Each change to the previous value (i.e. a delta) is captured in its dedicated AoC Step (Model Correction, Experience Variance, ...).", + "\nAt each AoC step, the Technical Margin is recognized as Asset-like or Liability-like according to the sign of the accumulation (aggregation) of all figures of the Technical Margin starting from the opening (BoP) to a given AoC step in the chain.", + "\n", + "\nThrough the AoC steps it is possible that such aggregation of the Technical Margin oscillates from positive to negative and vice versa several times. How the Technical Margin figures are then allocated to CSM or LC is controlled by the implementation of the **switch logic**.", + "\n", + "\nAs we can see below, at this point, the Technical Margin is still the same for both cases considered, as no allocation to either CSM or LC is performed (i.e. the switch logic).", + "\n", + "\nWe also notice that the opening balance (BoP) has the same sign as the closing balance (EoP), thus one would not expect any switch intuitively.", + "\n", + "\nHowever, in this calculation approach the Technical Margin is calculated independently for each novelty (In Force and New Business) and the expected closing balance by novelty have opposite signs. While the In Force is always negative, the New Business is always positive.", + "\n", + "\nOnce the novelties are combined, we must look at the result of all contributions together. In our example, the In Force contribution is larger in magnitude than the New Business, thus the combined effect should be negative.", + "\nSince the AoC Steps for combined novelties are still not large enough to change the sign (in this case the Experience Adjustment), the closing balance remains negative. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var technicalMargins = ifrs17.TechnicalMargins;", + "\ntechnicalMargins.ReportingNode = \"CH\";", + "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", + "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};", + "\ntechnicalMargins.DataFilter = null;", + "\n(await technicalMargins.ToReportAsync) with {Height = 600}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Contractual Service Margin / Loss Component", + "\n", + "\nHere, we show the result of two different implementations of the **switch logic** for the two GICs we are considering.", + "\n", + "\n- **MZ 1.1 Multiple Switches**: it is calculated with our standard methodology (**multiple switches**) which allows to switch at every AoC Step with no limitation of amount of switches. ", + "\n- **MZ 1.2 Single Switch**: it is calculated with a switch logic (**single switch**) that shows only one switch when the number of total switches is odd (last relevant switch), none otherwise. ", + "\n", + "\nBecause only the New Business figures drive the Technical Margin to the Liability side, one can immediately realize the main difference between these two switch choices.", + "\nMZ 1.2 does not recognize any Loss Component, as in practice the Technical Margin at the Beginning of Period has the same sign as at the End of Period (both negative).", + "\n", + "\nIn this case the **single switch** (MZ 1.2) logic does not show any switch as both opening and closing figures are negative. The New Business contributions are then forced on the CSM side of this report with a negative sign to reflect the fact that they are decreasing the value. ", + "\n", + "\nContrarily, the **multiple switches** (MZ 1.1) approach allows the New Business to be recognized in the Loss Component (as mentioned above, because we consider the novelties independently). This generates a discrepancy between the In Force (Asset-like allocated to the CSM) and New Business (Liability-like allocated to the Loss Component).", + "\nThis is resolved in the Combined section of the report where both In Force and New Business figures are considered together.", + "\nThe Combined Liability AoC Step takes care of adding the two contributions, releasing the Liability-like contributions and allocating the equivalent amount to the CSM. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", + "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", + "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", + "\nallocatedTechnicalMargins.DataFilter = null;", + "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# LRC Actuarial", + "\nIn the LRC Balance Sheet view, the two approaches show the same Beginning of Period and End of Period (as expected) and can only be distinguished by looking at the AoC chains in detail, where indeed they behave differently.", + "\n", + "\nBy slicing in the data by EstimateType (i.e. the individual contributions to the LRC), we notice that the New Business section of the CSM of MZ 1.1 is completely missing (as it is allocated to the LC).", + "\nHowever, the Combined Liability AoC Step (effectively a balancing item) in the CSM of MZ 1.1 brings the New Business contribution back to the CSM, netting the effect and restoring the overall closing balance.", + "\n", + "\nIn MZ 1.2, since we have never allocated any LC, the New Business contributions appear as negative CSM (as seen in the corresponding report above) and should cancel the FCF for equivalent AoC Steps. Moreover, the Combined Liability AoC Step should be zero, as there is nothing to balance." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actuarialLrc = ifrs17.ActuarialLrc;", + "\nactuarialLrc.ReportingNode = \"CH\";", + "\nactuarialLrc.ReportingPeriod = (reportingYear, reportingMonth);", + "\nactuarialLrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", + "\nactuarialLrc.DataFilter = null;", + "\n(await actuarialLrc.ToReportAsync) with {Height = 750}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Financial Performance", + "\n", + "\nAs expected, the *Total comprehensive Income* is the same in both scenarios. ", + "\n
One observes differences in the *Insurance Sevice Result* (ISE) and *Insurance Finance income/Expense* (IFIE) sections. These differences cancel out to produce the same value for *Profit and Loss*. The *Other Comprehensive Income* section reports the same figure in both scenarios. ", + "\n", + "\nDrilling down into the data granularity one can realize the source of the above mentioned differences. ", + "\n
Let's start from the IFIE contribution (Financial contributions): ", + "\n- MZ 1.1 explicitly recognizes a contribution to Loss Component: this is the interest accretion on the Liability side of the Techinical Margin. Contrarily, MZ 1.2 does not recognizes any Loss Component. ", + "\n- MZ 1.1 reports a bigger figure for CSM than MZ 1.2: this is because in MZ 1.2 the interest on the Asset and on the Liability are both allocated to CSM and reported here as summed up (they carry opposite sign - check the CSM/LC report above).", + "\n", + "\nContinuing with the ISE contribution, one sees that both *Insurance Revenue* and *Insurance service Expense* carries a difference between the two scenarios. ", + "\n- The difference in *Insurance service Expense* is due to having explicitly allocated the New Business of the Techinical Margin to Loss Component. In this item the financial step (such as Interest Accretion (IA)) is excluded. Thus, because overall the Loss amounts to 0, the net effect of summing all the movements except IA result in $-$IA. This term cancels out the LC contribution reported in the Financial section. ", + "\n- The difference in *Insurance Revenue* is produced by the CSM contribution to the *Non Financial LRC changes*. The MZ 1.1 GIC includes here the Combined Liability AoC Step which takes into account the contribution of the IA computed on the New Business (Liability-like).", + "\n", + "\nIt is worth to mention that our choice of splitting between financial and non-financial contributions for all figures reported in the Financial Performance creates additional items (rows) that cancel out when aggregated. While for some it might be confusing and counter intuitive, for others this adds transparency. ", + "\nWe acknowledge that without this split for the Loss Component part, the Financial Performance would not report such items, producing the same final figures without explicit showing any Loss Component contribution.", + "\n", + "\nWe also point out that many KPIs can be defined based on some of these figures (CSM and/or LC), and although the Financial Performance in the end is the same, some of these KPIs might look significantly different." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var financialPerformance = ifrs17.FinancialPerformance;", + "\nfinancialPerformance.ReportingNode = \"CH\";", + "\nfinancialPerformance.ReportingPeriod = (reportingYear, reportingMonth);", + "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};", + "\nfinancialPerformance.DataFilter = null;", + "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file From 5ff31886bfa3f1d1c654d5781d19b203b744168d Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 8 Mar 2023 16:43:18 +0100 Subject: [PATCH 02/16] refine gross data --- .../Actuals_CH_2020_12_BE.csv | 12 ++ ...2020_12.csv => Actuals_CH_2020_12_BE1.csv} | 7 +- .../DataImport.ipynb | 6 +- .../NominalCashflows_CH_2020_12.csv | 36 ----- .../NominalCashflows_CH_2020_12_BE1.csv | 44 ++++++ .../NominalCashflows_CH_2020_12_BE2.csv | 41 ++++++ .../NominalCashflows_CH_2020_12_BE3.csv | 41 ++++++ .../NominalCashflows_CH_2020_12_BE4.csv | 41 ++++++ ...2020_12.csv => Openings_CH_2020_12_BE.csv} | 2 +- .../CompareReinsuranceContracts/Reports.ipynb | 126 ++++-------------- 10 files changed, 210 insertions(+), 146 deletions(-) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12.csv => Actuals_CH_2020_12_BE1.csv} (66%) delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Openings_CH_2020_12.csv => Openings_CH_2020_12_BE.csv} (90%) diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv new file mode 100644 index 00000000..440a6161 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv @@ -0,0 +1,12 @@ +@@Main,,,,, +ReportingNode,Year,Month,,, +CH,2020,12,,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1.1,CF,PR,A,,90 +RP1.1,CF,ICO,A,,-6 +RP1.1,CF,NIC,A,,-70 +RP1.1,CF,ACA,A,,-10 +RP1.1,CF,AEA,A,,-5 +RPR1.1,CF,PR,A,,-45 +RPR1.1,CF,NIC,A,,35 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv similarity index 66% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv index 417ba430..d088c5e4 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv @@ -3,10 +3,7 @@ ReportingNode,Year,Month,,, CH,2020,12,,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value -RP1,CF,PR,A,,90 -RP1,CF,ICO,A,,-6 -RP1,CF,NIC,A,,-70 -RP1,CF,ACA,A,,-10 -RP1,CF,AEA,A,,-5 +RP1.1,CF,PR,A,,500 +RP1.1,CF,NIC,A,,-700 RPR1.1,CF,PR,A,,-45 RPR1.1,CF,NIC,A,,35 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index 0282d015..7105e32c 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -131,7 +131,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Openings_CH_2020_12.csv\")", + "await Import.FromFile(\"Openings_CH_2020_12_BE.csv\")", "\n .WithFormat(ImportFormats.Opening)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", @@ -144,7 +144,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12.csv\")", + "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE4.csv\")", "\n .WithFormat(ImportFormats.Cashflow)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", @@ -157,7 +157,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12.csv\")", + "await Import.FromFile(\"Actuals_CH_2020_12_BE1.csv\")", "\n .WithFormat(ImportFormats.Actual)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv deleted file mode 100644 index a9b54366..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12.csv +++ /dev/null @@ -1,36 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20 -RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,MC,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,0,0,0,0,0,0,0,0,0 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,0,0,0,0,0,0,0,0,0 -RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0 -RP1.1,ICO,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,BOP,N,,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,0,0,0,0,0,0,0,0,0 -RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,0,0,0,0,0,0,0,0 -RP1.1,ICO,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,EV,N,,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,0,0,0,0,0,0,0,0,0 -RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,0,0,0,0,0,0,0,0 -RP1.1,ICO,BE,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,CL,C,,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,0,0,0,0,0,0,0,0,0 -RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,0,0,0,0,0,0,0,0,0 -RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,MC,I,,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,0,0,0,0,0,0,0,0,0 -RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,BOP,N,,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,0,0,0,0,0,0,0,0,0 -RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,EV,N,,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0 -RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,CL,C,,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,0,0,0,0,0,0,0,0,0 -RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv new file mode 100644 index 00000000..0532d2c8 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv @@ -0,0 +1,44 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,NIC,BE,BOP,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20 +RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,NIC,BE,MC,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20 +RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 +RP1.1,ICO,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,NIC,BE,BOP,N,,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4 +RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 +RP1.1,ICO,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,NIC,BE,EV,N,,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 +RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 +RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 +RP1.1,ICO,BE,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,NIC,BE,CL,C,,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29 +RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,NIC,BE,MC,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 +RPR1.1,NIC,BE,BOP,N,,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5 +RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 +RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 +RPR1.1,NIC,BE,EV,N,,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 +RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 +RPR1.1,NIC,BE,CL,C,,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 +RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 +RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,NIC,BE,BOP,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 +RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv new file mode 100644 index 00000000..bd5df4ea --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv @@ -0,0 +1,41 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 +RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 +RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 +RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 +RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 +RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 +RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 +RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 +RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 +RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 +RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 +RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 +RP1.1,NIC,BE,MC,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 +RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 +RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 +RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 +RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 +RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 +RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 +RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv new file mode 100644 index 00000000..3ec8c8a0 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv @@ -0,0 +1,41 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 +RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 +RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 +RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 +RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 +RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 +RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 +RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 +RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 +RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 +RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 +RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 +RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 +RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 +RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 +RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 +RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 +RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 +RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RP1.1,PR,BE,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,,RA,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv new file mode 100644 index 00000000..42ffa13d --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv @@ -0,0 +1,41 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 +RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 +RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 +RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 +RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 +RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 +RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 +RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 +RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 +RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 +RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 +RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 +RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 +RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 +RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 +RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 +RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 +RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 +RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 +RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 +RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RP1.1,PR,BE,MC,I,,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0 +RP1.1,,RA,MC,I,,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2 +RP1.1,NIC,BE,MC,I,,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv similarity index 90% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv index df6f9b8c..25182433 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv @@ -3,6 +3,6 @@ ReportingNode,Year,Month,, CH,2020,12,, @@Opening,,,, DataNode,EstimateType,AmountType,AccidentYear,Value -RP1.1,C,,,72.2 +RP1.1,L,,,350.2 RP1.1,AA,PR,,-1.5 RP1.1,OA,PR,,1.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 2ea03ba6..e7ac7fad 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -30,65 +30,37 @@ { "cell_type": "markdown", "source": [ - "# Theory ", - "\nA fundamental concept introduced by IFRS 17 is the Contractual Service Margin (CSM). The CSM represents the unearned profit that an entity expects to earn as it provides services. It is defined at the minimum granularity being the Group of Insurance Contract (Unit Of Account) and it is relevant for all Liability of Remaining Coverage (LRC) approaches with the exception of the Premium Allocation Approach.", - "\n", - "\nThe main principles to understand the Contractual Sevice Margin and Loss Component in IFRS 17 are: ", - "\n", - "\n**Principle 1**: When an insurer writes profitable business, it must not be allowed to recognise the expected profits immediately and instead *must spread those profits over time*.", - "\n", - "\n**Principle 2**: When an insurer writes loss-making business, it must not be allowed to spread the expected losses for that business over time and instead *must recognise those losses immediately*.", - "\n

", - "\n", - "\n
", - "\n


", - "\n", - "\n**Principle 3**: The CSM must be adjusted for all changes (AoC Step) that relate to future service e.g. favourable mortality updates must increase the CSM; unfavourable lapse experience must decrease the CSM.", - "\n", - "\n**Principle 4**: When an insurer recognises that written business, that was previously expected to be profitable, is now expected to be loss-making, e.g. because of changes relating to future service, it must not be allowed to spread the expected losses for that business over time and instead must recognise those losses immediately. It will do so by first extinguishing the CSM and then establishing a Loss Component (LC) in respect of the remaining excess. This represents a switch of the CSM to LC. ", - "\n

", - "\n", - "\n
" + "# Data Import" ], "metadata": {}, "execution_count": 0, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ - "# Case Study", - "\nIn this case study we look at the allocation of the Technical Margin into Contractual Service Margin or Loss Component and its impact on the Financial Performance and Balance Sheet. ", - "\n
In particular, we are going to consider two possible approaches for the **switch logic**, which determines how the Technical Margin turns from CSM to LC and vice versa throughout the Analysis of Change (AoC). ", - "\n", - "\nFor this exercise, we consider two hypothetical GICs with identical inputs: the same parameters, modelled cash flows, actuals, etc... We will then analyze the results obtained by applying two different implementations of the **switch logic** and its implications to financial figures.", - "\n", - "\nWe have defined the following GICs:", - "\n - **MZ 1.1 Multiple Switches**: in this case the allocation of the Technical Margin to either CSM or LC can happen multiple times between the Beginning of Period (BoP) and End of Period (EoP). This means whenever the cumulative Technical Margin changes its sign due to the corresponding AoC contributions, a switch from CSM to LC (and vice versa) is observed.", - "\n ", - "\n - **MZ 1.2 Single Switch**: in this case the allocation of the Technical Margin to either CSM or LC can happen only once between the Beginning of Period (BoP) and End of Period (EoP). This means only if there is an effective switch (i.e. the cumulative Technical Margin at the Beginning of Period (BoP) and at the End of Period (EoP) have different signs), a single switch is observed. Otherwise there is no switch.", - "\n", - "\nWe will look at the relevant reports for the first quarter of year 2021 (2021 3).", - "\n", - "\nIt is worth to mention that in our starndard implementation, we consider *In Force* and *New business* contributions seperately as most analysts consider the new business part of the CSM an important Key Performance Indicator (KPI)." + "#!import \"DataImport\"" ], "metadata": {}, "execution_count": 0, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ - "# Data Import" + "var reportingYear = 2020; ", + "\nvar reportingMonth = 12;" ], "metadata": {}, "execution_count": 0, "outputs": [] }, { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "#!import \"CsmSwitchDataImport\"" + "# Best Estimate", + "\n", + "\n" ], "metadata": {}, "execution_count": 0, @@ -97,8 +69,13 @@ { "cell_type": "code", "source": [ - "var reportingYear = 2021; ", - "\nvar reportingMonth = 3;" + "var pv = ifrs17.PresentValues;", + "\npv.ReportingNode = \"CH\";", + "\npv.ReportingPeriod = (reportingYear, reportingMonth);", + "\npv.CurrencyType = CurrencyType.Contractual;", + "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//", + "\npv.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\n(await pv.ToReportAsync)" ], "metadata": {}, "execution_count": 0, @@ -129,7 +106,7 @@ "\nfulfillmentCashflows.ReportingNode = \"CH\";", "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);", "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};", - "\nfulfillmentCashflows.DataFilter = null;", + "\nfulfillmentCashflows.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}" ], "metadata": {}, @@ -161,7 +138,7 @@ "\nwrittenActual.ReportingNode = \"CH\";", "\nwrittenActual.ReportingPeriod = (reportingYear, reportingMonth);", "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\nwrittenActual.DataFilter = null;", + "\nwrittenActual.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await writtenActual.ToReportAsync) with {Height = 400}" ], "metadata": {}, @@ -171,25 +148,7 @@ { "cell_type": "markdown", "source": [ - "# LRC Technical Margin (TM)", - "\n", - "\nIn the Technical Margin report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", - "\n", - "\nA negative value for Technical Margin correspond to an Asset character and thus allocated to the CSM. Conversely, a positive value of the Technical Margin represents a Liability character, which is then allocated to Loss Component. ", - "\n", - "\nAn Analysis of Change (AoC) report allows one to explain how the closing value (EoP) is obtained from the opening value (BoP). Each change to the previous value (i.e. a delta) is captured in its dedicated AoC Step (Model Correction, Experience Variance, ...).", - "\nAt each AoC step, the Technical Margin is recognized as Asset-like or Liability-like according to the sign of the accumulation (aggregation) of all figures of the Technical Margin starting from the opening (BoP) to a given AoC step in the chain.", - "\n", - "\nThrough the AoC steps it is possible that such aggregation of the Technical Margin oscillates from positive to negative and vice versa several times. How the Technical Margin figures are then allocated to CSM or LC is controlled by the implementation of the **switch logic**.", - "\n", - "\nAs we can see below, at this point, the Technical Margin is still the same for both cases considered, as no allocation to either CSM or LC is performed (i.e. the switch logic).", - "\n", - "\nWe also notice that the opening balance (BoP) has the same sign as the closing balance (EoP), thus one would not expect any switch intuitively.", - "\n", - "\nHowever, in this calculation approach the Technical Margin is calculated independently for each novelty (In Force and New Business) and the expected closing balance by novelty have opposite signs. While the In Force is always negative, the New Business is always positive.", - "\n", - "\nOnce the novelties are combined, we must look at the result of all contributions together. In our example, the In Force contribution is larger in magnitude than the New Business, thus the combined effect should be negative.", - "\nSince the AoC Steps for combined novelties are still not large enough to change the sign (in this case the Experience Adjustment), the closing balance remains negative. " + "# LRC Technical Margin (TM) " ], "metadata": {}, "execution_count": 0, @@ -202,7 +161,7 @@ "\ntechnicalMargins.ReportingNode = \"CH\";", "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\ntechnicalMargins.DataFilter = null;", + "\ntechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await technicalMargins.ToReportAsync) with {Height = 600}" ], "metadata": {}, @@ -212,21 +171,7 @@ { "cell_type": "markdown", "source": [ - "# Contractual Service Margin / Loss Component", - "\n", - "\nHere, we show the result of two different implementations of the **switch logic** for the two GICs we are considering.", - "\n", - "\n- **MZ 1.1 Multiple Switches**: it is calculated with our standard methodology (**multiple switches**) which allows to switch at every AoC Step with no limitation of amount of switches. ", - "\n- **MZ 1.2 Single Switch**: it is calculated with a switch logic (**single switch**) that shows only one switch when the number of total switches is odd (last relevant switch), none otherwise. ", - "\n", - "\nBecause only the New Business figures drive the Technical Margin to the Liability side, one can immediately realize the main difference between these two switch choices.", - "\nMZ 1.2 does not recognize any Loss Component, as in practice the Technical Margin at the Beginning of Period has the same sign as at the End of Period (both negative).", - "\n", - "\nIn this case the **single switch** (MZ 1.2) logic does not show any switch as both opening and closing figures are negative. The New Business contributions are then forced on the CSM side of this report with a negative sign to reflect the fact that they are decreasing the value. ", - "\n", - "\nContrarily, the **multiple switches** (MZ 1.1) approach allows the New Business to be recognized in the Loss Component (as mentioned above, because we consider the novelties independently). This generates a discrepancy between the In Force (Asset-like allocated to the CSM) and New Business (Liability-like allocated to the Loss Component).", - "\nThis is resolved in the Combined section of the report where both In Force and New Business figures are considered together.", - "\nThe Combined Liability AoC Step takes care of adding the two contributions, releasing the Liability-like contributions and allocating the equivalent amount to the CSM. " + "# Contractual Service Margin / Loss Component" ], "metadata": {}, "execution_count": 0, @@ -239,7 +184,7 @@ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", - "\nallocatedTechnicalMargins.DataFilter = null;", + "\nallocatedTechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" ], "metadata": {}, @@ -250,12 +195,7 @@ "cell_type": "markdown", "source": [ "# LRC Actuarial", - "\nIn the LRC Balance Sheet view, the two approaches show the same Beginning of Period and End of Period (as expected) and can only be distinguished by looking at the AoC chains in detail, where indeed they behave differently.", - "\n", - "\nBy slicing in the data by EstimateType (i.e. the individual contributions to the LRC), we notice that the New Business section of the CSM of MZ 1.1 is completely missing (as it is allocated to the LC).", - "\nHowever, the Combined Liability AoC Step (effectively a balancing item) in the CSM of MZ 1.1 brings the New Business contribution back to the CSM, netting the effect and restoring the overall closing balance.", - "\n", - "\nIn MZ 1.2, since we have never allocated any LC, the New Business contributions appear as negative CSM (as seen in the corresponding report above) and should cancel the FCF for equivalent AoC Steps. Moreover, the Combined Liability AoC Step should be zero, as there is nothing to balance." + "\n" ], "metadata": {}, "execution_count": 0, @@ -279,23 +219,7 @@ "cell_type": "markdown", "source": [ "# Financial Performance", - "\n", - "\nAs expected, the *Total comprehensive Income* is the same in both scenarios. ", - "\n
One observes differences in the *Insurance Sevice Result* (ISE) and *Insurance Finance income/Expense* (IFIE) sections. These differences cancel out to produce the same value for *Profit and Loss*. The *Other Comprehensive Income* section reports the same figure in both scenarios. ", - "\n", - "\nDrilling down into the data granularity one can realize the source of the above mentioned differences. ", - "\n
Let's start from the IFIE contribution (Financial contributions): ", - "\n- MZ 1.1 explicitly recognizes a contribution to Loss Component: this is the interest accretion on the Liability side of the Techinical Margin. Contrarily, MZ 1.2 does not recognizes any Loss Component. ", - "\n- MZ 1.1 reports a bigger figure for CSM than MZ 1.2: this is because in MZ 1.2 the interest on the Asset and on the Liability are both allocated to CSM and reported here as summed up (they carry opposite sign - check the CSM/LC report above).", - "\n", - "\nContinuing with the ISE contribution, one sees that both *Insurance Revenue* and *Insurance service Expense* carries a difference between the two scenarios. ", - "\n- The difference in *Insurance service Expense* is due to having explicitly allocated the New Business of the Techinical Margin to Loss Component. In this item the financial step (such as Interest Accretion (IA)) is excluded. Thus, because overall the Loss amounts to 0, the net effect of summing all the movements except IA result in $-$IA. This term cancels out the LC contribution reported in the Financial section. ", - "\n- The difference in *Insurance Revenue* is produced by the CSM contribution to the *Non Financial LRC changes*. The MZ 1.1 GIC includes here the Combined Liability AoC Step which takes into account the contribution of the IA computed on the New Business (Liability-like).", - "\n", - "\nIt is worth to mention that our choice of splitting between financial and non-financial contributions for all figures reported in the Financial Performance creates additional items (rows) that cancel out when aggregated. While for some it might be confusing and counter intuitive, for others this adds transparency. ", - "\nWe acknowledge that without this split for the Loss Component part, the Financial Performance would not report such items, producing the same final figures without explicit showing any Loss Component contribution.", - "\n", - "\nWe also point out that many KPIs can be defined based on some of these figures (CSM and/or LC), and although the Financial Performance in the end is the same, some of these KPIs might look significantly different." + "\n" ], "metadata": {}, "execution_count": 0, From 72f58f9f93940480ca81a132f494c6088a08e91b Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 8 Mar 2023 16:44:19 +0100 Subject: [PATCH 03/16] remove old files --- .../Constants/CalculationEngine.ipynb | 2 +- .../Actuals_CH_2020_12_BE.csv | 12 ----- .../NominalCashflows_CH_2020_12_BE1.csv | 44 ------------------- .../NominalCashflows_CH_2020_12_BE2.csv | 41 ----------------- .../NominalCashflows_CH_2020_12_BE3.csv | 41 ----------------- 5 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index d72611fb..ab6ecbad 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -19,7 +19,7 @@ { "cell_type": "code", "source": [ - "var projectName = \"ifrs17\";", + "var projectName = \"ifrs-17-ce-8-3-2022\";", "\nvar environmentName = \"v1.1.1\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv deleted file mode 100644 index 440a6161..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE.csv +++ /dev/null @@ -1,12 +0,0 @@ -@@Main,,,,, -ReportingNode,Year,Month,,, -CH,2020,12,,, -@@Actual,,,,, -DataNode,AocType,AmountType,EstimateType,AccidentYear,Value -RP1.1,CF,PR,A,,90 -RP1.1,CF,ICO,A,,-6 -RP1.1,CF,NIC,A,,-70 -RP1.1,CF,ACA,A,,-10 -RP1.1,CF,AEA,A,,-5 -RPR1.1,CF,PR,A,,-45 -RPR1.1,CF,NIC,A,,35 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv deleted file mode 100644 index 0532d2c8..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE1.csv +++ /dev/null @@ -1,44 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,NIC,BE,BOP,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20 -RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,NIC,BE,MC,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20 -RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 -RP1.1,ICO,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,NIC,BE,BOP,N,,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4 -RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 -RP1.1,ICO,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,NIC,BE,EV,N,,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 -RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 -RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 -RP1.1,ICO,BE,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,NIC,BE,CL,C,,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29 -RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,NIC,BE,MC,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 -RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 -RPR1.1,NIC,BE,BOP,N,,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5 -RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 -RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 -RPR1.1,NIC,BE,EV,N,,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 -RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 -RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 -RPR1.1,NIC,BE,CL,C,,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 -RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 -RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,NIC,BE,BOP,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 -RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 -RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv deleted file mode 100644 index bd5df4ea..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE2.csv +++ /dev/null @@ -1,41 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 -RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 -RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 -RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 -RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 -RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 -RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 -RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 -RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 -RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 -RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 -RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 -RP1.1,NIC,BE,MC,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 -RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 -RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 -RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 -RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 -RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 -RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 -RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv deleted file mode 100644 index 3ec8c8a0..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE3.csv +++ /dev/null @@ -1,41 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 -RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 -RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 -RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 -RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 -RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 -RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 -RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 -RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 -RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 -RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 -RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 -RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 -RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 -RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 -RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 -RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 -RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 -RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RP1.1,PR,BE,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,,RA,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,MC,I,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 From 244ba19ac7154f30e819b88e97c1947b320c1b5b Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 10 Mar 2023 09:48:45 +0100 Subject: [PATCH 04/16] more data in --- ..._12_BE1.csv => Actuals_CH_2020_12_BE3.csv} | 7 ++- .../Actuals_CH_2020_12_LR70.csv | 11 ++++ .../Actuals_CH_2020_12_LR80.csv | 11 ++++ .../DataImport.ipynb | 63 ++++++++++++++++--- .../NominalCashflows_CH_2020_12_BE4.csv | 41 ------------ .../NominalCashflows_CH_2020_12_BE8.csv | 1 + .../NominalCashflows_CH_2020_12_LR70.csv | 1 + .../NominalCashflows_CH_2020_12_LR80.csv | 41 ++++++++++++ ..._12_BE.csv => Openings_CH_2020_12_BE2.csv} | 5 +- .../CompareReinsuranceContracts/Reports.ipynb | 28 ++++++--- .../CompareReinsuranceContracts/Scenario2.csv | 20 ++++++ 11 files changed, 164 insertions(+), 65 deletions(-) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_BE1.csv => Actuals_CH_2020_12_BE3.csv} (64%) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Openings_CH_2020_12_BE.csv => Openings_CH_2020_12_BE2.csv} (70%) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv similarity index 64% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv index d088c5e4..487ab97d 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE1.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv @@ -4,6 +4,7 @@ CH,2020,12,,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value RP1.1,CF,PR,A,,500 -RP1.1,CF,NIC,A,,-700 -RPR1.1,CF,PR,A,,-45 -RPR1.1,CF,NIC,A,,35 +RP1.1,CF,NIC,A,,-300 +RP1.1,CF,AEM,A,,-170 +RPR1.1,CF,PR,A,,-250 +RPR1.1,CF,NIC,A,,350 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv new file mode 100644 index 00000000..1876d992 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv @@ -0,0 +1,11 @@ +@@Main,,,,, +ReportingNode,Year,Month,Scenario,, +CH,2020,12,LR70,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1.1,CF,PR,A,,500 +RP1.1,CF,NIC,A,,-350 +RP1.1,CF,AEM,A,,-170 +RPR1.1,CF,PR,A,,-160 +RPR1.1,CF,NIC,A,,106 +RPR1.1,CF,AC,A,,390 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv new file mode 100644 index 00000000..4d145991 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv @@ -0,0 +1,11 @@ +@@Main,,,,, +ReportingNode,Year,Month,Scenario,, +CH,2020,12,LR80,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1.1,CF,PR,A,,500 +RP1.1,CF,NIC,A,,-390 +RP1.1,CF,AEM,A,,-170 +RPR1.1,CF,PR,A,,-160 +RPR1.1,CF,NIC,A,,106 +RPR1.1,CF,AC,A,,390 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index 7105e32c..0b20b257 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -62,6 +62,24 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Scenarios" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Scenario2.csv\").WithType().WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -74,11 +92,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodes_CompReins_CH.csv\")", - "\n .WithFormat(ImportFormats.DataNode)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"DataNodes_CompReins_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -131,7 +145,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Openings_CH_2020_12_BE.csv\")", + "await Import.FromFile(\"Openings_CH_2020_12_BE2.csv\")", "\n .WithFormat(ImportFormats.Opening)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", @@ -144,8 +158,8 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE4.csv\")", - "\n .WithFormat(ImportFormats.Cashflow)", + "await Import.FromFile(\"Actuals_CH_2020_12_BE3.csv\")", + "\n .WithFormat(ImportFormats.Actual)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" @@ -157,8 +171,8 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_BE1.csv\")", - "\n .WithFormat(ImportFormats.Actual)", + "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE8.csv\")", + "\n .WithFormat(ImportFormats.Cashflow)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" @@ -167,6 +181,35 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Import Scenarios" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Actuals_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync();", + "\nawait Import.FromFile(\"NominalCashflows_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Actuals_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync();", + "\nawait Import.FromFile(\"NominalCashflows_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv deleted file mode 100644 index 42ffa13d..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE4.csv +++ /dev/null @@ -1,41 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,PR,BE,BOP,I,,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0,0,110,0 -RP1.1,,RA,BOP,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 -RP1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0 -RP1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0 -RP1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 -RP1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0,0,115,0 -RP1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RPR1.1,PR,BE,MC,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,RA,MC,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RPR1.1,PR,BE,BOP,N,,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0,0,-5,0 -RPR1.1,,RA,BOP,N,,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 -RPR1.1,PR,BE,EV,N,,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0,0,-2.5,0 -RPR1.1,,RA,EV,N,,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25 -RPR1.1,PR,BE,CL,C,,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0,0,-57.5,0 -RPR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25 -RPR1.1,PR,BE,BOP,I,,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0,0,-55,0 -RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 -RPR1.1,,RA,BOP,I,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RP1.1,NIC,BE,BOP,I,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 -RP1.1,NIC,BE,BOP,N,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10 -RP1.1,NIC,BE,EV,N,,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5,-22.5 -RP1.1,NIC,BE,CL,C,,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5,-72.5 -RPR1.1,NIC,BE,MC,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RPR1.1,NIC,BE,BOP,N,,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25,6.25 -RPR1.1,NIC,BE,EV,N,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5 -RPR1.1,NIC,BE,CL,C,,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5,37.5 -RPR1.1,NIC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RP1.1,PR,BE,MC,I,,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0,0,121,0 -RP1.1,,RA,MC,I,,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2,-2.2 -RP1.1,NIC,BE,MC,I,,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55,-55 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv new file mode 100644 index 00000000..cf96cd8f --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv @@ -0,0 +1 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, @@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 RP1.1,NIC,BE,BOP,I,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 RP1.1,NIC,BE,MC,I,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5 RP1.1,NIC,BE,BOP,N,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 RP1.1,NIC,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,NIC,BE,CL,C,,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5 RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 RPR1.1,NIC,BE,BOP,I,,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 RPR1.1,NIC,BE,MC,I,,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25 RPR1.1,NIC,BE,BOP,N,,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6 RPR1.1,NIC,BE,EV,N,,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3 RPR1.1,NIC,BE,CL,C,,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55 RPR1.1,AC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 RPR1.1,AC,BE,MC,I,,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5 RPR1.1,AC,BE,BOP,N,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 RPR1.1,AC,BE,EV,N,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 RPR1.1,AC,BE,CL,C,,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv new file mode 100644 index 00000000..22b50af3 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv @@ -0,0 +1 @@ +@@Main,,,,LR,0.7,Gross,MC change,1.1,sign,Reins,QuotaShare,0.3,sign,,,,,,,,,,,,,,,, ReportingNode,Year,Month,Scenario,,,,EV change,0.5,,,,,-1,,,,,,,,,,,,,,,, CH,2020,12,LR70,,,,LossRatio(LR),0.2,-1,,LossRatio(LR),0.2,,,,,,,,,,,,,,,,, @@Cashflow,,,,,,,Exp %,0.1,-1,,Comm %,0.35,,,,,,,,,,,,,,,,, DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 RP1.1,NIC,BE,BOP,I,,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 RP1.1,NIC,BE,MC,I,,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333 RP1.1,NIC,BE,BOP,N,,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333 RP1.1,NIC,BE,EV,N,,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667 RP1.1,NIC,BE,CL,C,,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25 RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 RPR1.1,NIC,BE,BOP,I,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 RPR1.1,NIC,BE,MC,I,,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625 RPR1.1,NIC,BE,BOP,N,,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7 RPR1.1,NIC,BE,EV,N,,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35 RPR1.1,NIC,BE,CL,C,,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975 RPR1.1,AC,BE,BOP,I,,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667 RPR1.1,AC,BE,MC,I,,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333 RPR1.1,AC,BE,BOP,N,,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333 RPR1.1,AC,BE,EV,N,,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667 RPR1.1,AC,BE,CL,C,,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv new file mode 100644 index 00000000..3e3f264c --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv @@ -0,0 +1,41 @@ +@@Main,,,,LR,0.8,Gross,MC change,1.1,sign,Reins,QuotaShare,0.3,sign,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,EV change,0.5,,,,,-1,,,,,,,,,,,,,,,, +CH,2020,12,LR80,,,,LossRatio(LR),0.3,-1,,LossRatio(LR),0.3,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,Exp %,0.1,-1,,Comm %,0.35,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 +RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 +RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 +RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 +RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 +RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 +RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 +RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 +RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 +RP1.1,NIC,BE,BOP,I,,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 +RP1.1,NIC,BE,MC,I,,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667 +RP1.1,NIC,BE,BOP,N,,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667 +RP1.1,NIC,BE,EV,N,,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333 +RP1.1,NIC,BE,CL,C,,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38 +RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 +RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 +RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 +RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 +RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 +RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 +RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 +RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 +RPR1.1,NIC,BE,BOP,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +RPR1.1,NIC,BE,MC,I,,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 +RPR1.1,NIC,BE,BOP,N,,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8 +RPR1.1,NIC,BE,EV,N,,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4 +RPR1.1,NIC,BE,CL,C,,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4 +RPR1.1,AC,BE,BOP,I,,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333 +RPR1.1,AC,BE,MC,I,,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667 +RPR1.1,AC,BE,BOP,N,,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667 +RPR1.1,AC,BE,EV,N,,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333 +RPR1.1,AC,BE,CL,C,,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv similarity index 70% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv index 25182433..7ad34381 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv @@ -3,6 +3,5 @@ ReportingNode,Year,Month,, CH,2020,12,, @@Opening,,,, DataNode,EstimateType,AmountType,AccidentYear,Value -RP1.1,L,,,350.2 -RP1.1,AA,PR,,-1.5 -RP1.1,OA,PR,,1.5 +RP1.1,C,,,100.2 +RPR1.1,C,,,-175.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index e7ac7fad..75638eaa 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -19,9 +19,9 @@ { "cell_type": "markdown", "source": [ - "

Contractual Service Margin and Loss Component Switch

", + "

Reinsurance

", "\n", - "\n

Impact of the switch logic to Financial Performance and Balance Sheet

" + "\n

Model

" ], "metadata": {}, "execution_count": 0, @@ -39,7 +39,18 @@ { "cell_type": "code", "source": [ - "#!import \"DataImport\"" + "#!eval-notebook \"DataImport\"", + "\nWorkspace.InitializeFrom(DataSource);", + "\n//ifrs17.Reset(Workspace) //This is not working" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "ifrs17 = new Ifrs17(Workspace, Scopes, Report);" ], "metadata": {}, "execution_count": 0, @@ -73,8 +84,9 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (reportingYear, reportingMonth);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//", - "\npv.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\npv.ColumnSlices = new string[]{};//{\"GroupOfContract\", \"AmountType\"};", + "\npv.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\npv.Scenario = \"All\";", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -106,7 +118,7 @@ "\nfulfillmentCashflows.ReportingNode = \"CH\";", "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);", "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};", - "\nfulfillmentCashflows.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nfulfillmentCashflows.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}" ], "metadata": {}, @@ -161,7 +173,7 @@ "\ntechnicalMargins.ReportingNode = \"CH\";", "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\ntechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\ntechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await technicalMargins.ToReportAsync) with {Height = 600}" ], "metadata": {}, @@ -184,7 +196,7 @@ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", - "\nallocatedTechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nallocatedTechnicalMargins.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" ], "metadata": {}, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv new file mode 100644 index 00000000..94f67060 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv @@ -0,0 +1,20 @@ +@@Scenario,,,,,,,,,,, +SystemName,DisplayName,,,,,,,,,, +LR70,Loss Ratio 70, +LR80,Loss Ratio 80, +YCUP1.0pct,Yield Curve Up 1.0pct,,,,,,,,,, +YCDW1.0pct,Yield Curve Down 1.0pct,,,,,,,,,, +SRUP1.0pct,Spread Rate Up 1.0pct,,,,,,,,,, +SRDW1.0pct,Spread Rate Down 1.0pct,,,,,,,,,, +EUP1.0pct,Equity Up 1.0pct,,,,,,,,,, +EDW1.0pct,Equity Down 1.0pct,,,,,,,,,, +FXUP1.0pct,Exchange Rate Up 1.0pct,,,,,,,,,, +FXDW1.0pct,Exchange Rate Down 1.0pct,,,,,,,,,, +MTUP10pct,Mortality Up 10pct,,,,,,,,,, +MTDW10pct,Mortality Down 10pct,,,,,,,,,, +LUP10pct,Longevity Up 10pct,,,,,,,,,, +LDW10pct,Longevity Down 10pct,,,,,,,,,, +DUP10pct,Disability Up 10pct,,,,,,,,,, +DDW10pct,Disability Down 10pct,,,,,,,,,, +LICUP10pct,Lic Up 10pct,,,,,,,,,, +LICDW10pct,Lic Down 10pct,,,,,,,,,, From b15b83893825e04f229f1cdb2c2045c91f3c6f4c Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 10 Mar 2023 11:52:51 +0100 Subject: [PATCH 05/16] some more --- .../Constants/CalculationEngine.ipynb | 4 +- ..._12_BE3.csv => Actuals_CH_2020_12_BE4.csv} | 9 ++-- ...LR70.csv => Actuals_CH_2020_12_LR70-1.csv} | 10 ++-- ...LR80.csv => Actuals_CH_2020_12_LR80-1.csv} | 12 ++--- .../DataImport.ipynb | 51 +++++++++++++------ ...aNodeParameters_CompReins_CH_2020_12-1.csv | 11 ++++ .../NominalCashflows_CH_2020_12_BE10.csv | 19 +++++++ .../NominalCashflows_CH_2020_12_BE8.csv | 1 - .../NominalCashflows_CH_2020_12_LR70-2.csv | 19 +++++++ .../NominalCashflows_CH_2020_12_LR70.csv | 1 - .../NominalCashflows_CH_2020_12_LR80-2.csv | 19 +++++++ .../NominalCashflows_CH_2020_12_LR80.csv | 41 --------------- .../Openings_CH_2020_12_LR70.csv | 7 +++ .../Openings_CH_2020_12_LR80.csv | 7 +++ .../CompareReinsuranceContracts/Reports.ipynb | 8 ++- 15 files changed, 142 insertions(+), 77 deletions(-) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_BE3.csv => Actuals_CH_2020_12_BE4.csv} (59%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_LR70.csv => Actuals_CH_2020_12_LR70-1.csv} (61%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_LR80.csv => Actuals_CH_2020_12_LR80-1.csv} (53%) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index ab6ecbad..a465afaa 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -19,8 +19,8 @@ { "cell_type": "code", "source": [ - "var projectName = \"ifrs-17-ce-8-3-2022\";", - "\nvar environmentName = \"v1.1.1\";", + "var projectName = \"ifrs17\";", + "\nvar environmentName = \"dev\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ], diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv similarity index 59% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv index 487ab97d..acc41dc1 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE3.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv @@ -3,8 +3,9 @@ ReportingNode,Year,Month,,, CH,2020,12,,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value -RP1.1,CF,PR,A,,500 +RP1.1,CF,PR,A,,1000 RP1.1,CF,NIC,A,,-300 -RP1.1,CF,AEM,A,,-170 -RPR1.1,CF,PR,A,,-250 -RPR1.1,CF,NIC,A,,350 +RP1.1,CF,AEM,A,,-150 +RPR1.1,CF,PR,A,,-300 +RPR1.1,CF,NIC,A,,90 +RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv similarity index 61% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv index 1876d992..0119b997 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv @@ -3,9 +3,9 @@ ReportingNode,Year,Month,Scenario,, CH,2020,12,LR70,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value -RP1.1,CF,PR,A,,500 +RP1.1,CF,PR,A,,1000 RP1.1,CF,NIC,A,,-350 -RP1.1,CF,AEM,A,,-170 -RPR1.1,CF,PR,A,,-160 -RPR1.1,CF,NIC,A,,106 -RPR1.1,CF,AC,A,,390 +RP1.1,CF,AEM,A,,-150 +RPR1.1,CF,PR,A,,-300 +RPR1.1,CF,NIC,A,,90 +RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv similarity index 53% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv index 4d145991..eafa6890 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv @@ -3,9 +3,9 @@ ReportingNode,Year,Month,Scenario,, CH,2020,12,LR80,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value -RP1.1,CF,PR,A,,500 -RP1.1,CF,NIC,A,,-390 -RP1.1,CF,AEM,A,,-170 -RPR1.1,CF,PR,A,,-160 -RPR1.1,CF,NIC,A,,106 -RPR1.1,CF,AC,A,,390 +RP1.1,CF,PR,A,,1000 +RP1.1,CF,NIC,A,,-400 +RP1.1,CF,AEM,A,,-150 +RPR1.1,CF,PR,A,,-300 +RPR1.1,CF,NIC,A,,120 +RPR1.1,CF,AC,A,,150 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index 0b20b257..db7d2517 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -114,7 +114,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodeParameters_CompReins_CH_2020_12.csv\")", + "await Import.FromFile(\"DataNodeParameters_CompReins_CH_2020_12-1.csv\")", "\n .WithFormat(ImportFormats.DataNodeParameter)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", @@ -145,8 +145,8 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Openings_CH_2020_12_BE2.csv\")", - "\n .WithFormat(ImportFormats.Opening)", + "await Import.FromFile(\"Actuals_CH_2020_12_BE4.csv\")", + "\n .WithFormat(ImportFormats.Actual)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" @@ -158,8 +158,8 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_BE3.csv\")", - "\n .WithFormat(ImportFormats.Actual)", + "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE10.csv\")", + "\n .WithFormat(ImportFormats.Cashflow)", "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" @@ -168,14 +168,37 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Import Scenarios" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LR70" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE8.csv\")", - "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"Actuals_CH_2020_12_LR70-1.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR70-2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -184,7 +207,7 @@ { "cell_type": "markdown", "source": [ - "# Import Scenarios" + "## LR80" ], "metadata": {}, "execution_count": 0, @@ -193,8 +216,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync();", - "\nawait Import.FromFile(\"NominalCashflows_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"Actuals_CH_2020_12_LR80-1.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -203,8 +225,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync();", - "\nawait Import.FromFile(\"NominalCashflows_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR80-2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv new file mode 100644 index 00000000..bb53a8a8 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv @@ -0,0 +1,11 @@ +@@Main,, +ReportingNode,Year,Month,Scenario +CH,2020,12 +,, +@@SingleDataNodeParameter,, +DataNode,PremiumAllocation, +RP1.1,0.0 +,, +@@InterDataNodeParameter,, +DataNode,LinkedDataNode,ReinsuranceCoverage +RP1.1,RPR1.1,0.3 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv new file mode 100644 index 00000000..61e3c166 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 +RPR1.1,,CU,CL,C,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv deleted file mode 100644 index cf96cd8f..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE8.csv +++ /dev/null @@ -1 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,, CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, @@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 RP1.1,NIC,BE,BOP,I,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 RP1.1,NIC,BE,MC,I,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5 RP1.1,NIC,BE,BOP,N,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 RP1.1,NIC,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,NIC,BE,CL,C,,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5,-28.5 RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 RPR1.1,NIC,BE,BOP,I,,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 RPR1.1,NIC,BE,MC,I,,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25 RPR1.1,NIC,BE,BOP,N,,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6 RPR1.1,NIC,BE,EV,N,,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3 RPR1.1,NIC,BE,CL,C,,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55,8.55 RPR1.1,AC,BE,BOP,I,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 RPR1.1,AC,BE,MC,I,,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5 RPR1.1,AC,BE,BOP,N,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 RPR1.1,AC,BE,EV,N,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 RPR1.1,AC,BE,CL,C,,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv new file mode 100644 index 00000000..87f3d177 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,LR70,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 +RPR1.1,,CU,CL,C,,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 +RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv deleted file mode 100644 index 22b50af3..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv +++ /dev/null @@ -1 +0,0 @@ -@@Main,,,,LR,0.7,Gross,MC change,1.1,sign,Reins,QuotaShare,0.3,sign,,,,,,,,,,,,,,,, ReportingNode,Year,Month,Scenario,,,,EV change,0.5,,,,,-1,,,,,,,,,,,,,,,, CH,2020,12,LR70,,,,LossRatio(LR),0.2,-1,,LossRatio(LR),0.2,,,,,,,,,,,,,,,,, @@Cashflow,,,,,,,Exp %,0.1,-1,,Comm %,0.35,,,,,,,,,,,,,,,,, DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 RP1.1,NIC,BE,BOP,I,,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 RP1.1,NIC,BE,MC,I,,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333,-32.08333333 RP1.1,NIC,BE,BOP,N,,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333,-2.333333333 RP1.1,NIC,BE,EV,N,,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667,-1.166666667 RP1.1,NIC,BE,CL,C,,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25,-33.25 RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 RPR1.1,NIC,BE,BOP,I,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 RPR1.1,NIC,BE,MC,I,,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625,9.625 RPR1.1,NIC,BE,BOP,N,,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7 RPR1.1,NIC,BE,EV,N,,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35 RPR1.1,NIC,BE,CL,C,,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975,9.975 RPR1.1,AC,BE,BOP,I,,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667 RPR1.1,AC,BE,MC,I,,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333,32.08333333 RPR1.1,AC,BE,BOP,N,,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333,2.333333333 RPR1.1,AC,BE,EV,N,,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667,1.166666667 RPR1.1,AC,BE,CL,C,,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25,33.25 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv new file mode 100644 index 00000000..43fc25d8 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, +CH,2020,12,LR80,,,,,,,,,,,,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 +RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 +RPR1.1,,CU,CL,C,,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 +RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv deleted file mode 100644 index 3e3f264c..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv +++ /dev/null @@ -1,41 +0,0 @@ -@@Main,,,,LR,0.8,Gross,MC change,1.1,sign,Reins,QuotaShare,0.3,sign,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,Scenario,,,,EV change,0.5,,,,,-1,,,,,,,,,,,,,,,, -CH,2020,12,LR80,,,,LossRatio(LR),0.3,-1,,LossRatio(LR),0.3,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,Exp %,0.1,-1,,Comm %,0.35,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,,CU,BOP,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,MC,I,,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 -RP1.1,,CU,CL,C,,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5 -RPR1.1,,CU,BOP,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5 -RPR1.1,,CU,MC,I,,-5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5 -RPR1.1,,CU,CL,C,,-7.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5 -RP1.1,PR,BE,BOP,I,,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125,0,0,125 -RP1.1,PR,BE,MC,I,,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5,0,0,137.5 -RP1.1,PR,BE,BOP,N,,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10,0,0,10 -RP1.1,PR,BE,EV,N,,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5,0,0,5 -RP1.1,PR,BE,CL,C,,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5,0,0,142.5 -RP1.1,NIC,BE,BOP,I,,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 -RP1.1,NIC,BE,MC,I,,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667,-36.66666667 -RP1.1,NIC,BE,BOP,N,,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667,-2.666666667 -RP1.1,NIC,BE,EV,N,,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333,-1.333333333 -RP1.1,NIC,BE,CL,C,,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38,-38 -RP1.1,AEM,BE,BOP,I,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RP1.1,AEM,BE,MC,I,,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75,-13.75 -RP1.1,AEM,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -RP1.1,AEM,BE,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5 -RP1.1,AEM,BE,CL,C,,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25,-14.25 -RPR1.1,PR,BE,BOP,I,,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5,0,0,-37.5 -RPR1.1,PR,BE,MC,I,,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25,0,0,-41.25 -RPR1.1,PR,BE,BOP,N,,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3,0,0,-3 -RPR1.1,PR,BE,EV,N,,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5,0,0,-1.5 -RPR1.1,PR,BE,CL,C,,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75,0,0,-42.75 -RPR1.1,NIC,BE,BOP,I,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 -RPR1.1,NIC,BE,MC,I,,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 -RPR1.1,NIC,BE,BOP,N,,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8 -RPR1.1,NIC,BE,EV,N,,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4 -RPR1.1,NIC,BE,CL,C,,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4 -RPR1.1,AC,BE,BOP,I,,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333 -RPR1.1,AC,BE,MC,I,,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667,36.66666667 -RPR1.1,AC,BE,BOP,N,,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667,2.666666667 -RPR1.1,AC,BE,EV,N,,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333,1.333333333 -RPR1.1,AC,BE,CL,C,,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv new file mode 100644 index 00000000..3e8130f9 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv @@ -0,0 +1,7 @@ +@@Main,,,, +ReportingNode,Year,Month,Scenario, +CH,2020,12,LR70, +@@Opening,,,, +DataNode,EstimateType,AmountType,AccidentYear,Value +RP1.1,L,,,1 +RPR1.1,LR,,,-100.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv new file mode 100644 index 00000000..892cf06d --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv @@ -0,0 +1,7 @@ +@@Main,,,, +ReportingNode,Year,Month,Scenario, +CH,2020,12,LR80, +@@Opening,,,, +DataNode,EstimateType,AmountType,AccidentYear,Value +RP1.1,L,,,100 +RPR1.1,LR,,,-100.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 75638eaa..01cd4c9e 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -84,9 +84,9 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (reportingYear, reportingMonth);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{};//{\"GroupOfContract\", \"AmountType\"};", + "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};", "\npv.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", - "\npv.Scenario = \"All\";", + "\npv.Scenario = null;//\"All\";", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -119,6 +119,7 @@ "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);", "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};", "\nfulfillmentCashflows.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nfulfillmentCashflows.Scenario = \"All\";", "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}" ], "metadata": {}, @@ -174,6 +175,7 @@ "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};", "\ntechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\ntechnicalMargins.Scenario = \"All\";", "\n(await technicalMargins.ToReportAsync) with {Height = 600}" ], "metadata": {}, @@ -197,6 +199,8 @@ "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", "\nallocatedTechnicalMargins.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nallocatedTechnicalMargins.Scenario = null;", + "\n//allocatedTechnicalMargins.Scenario = \"All\";", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" ], "metadata": {}, From ff16026c8f3010d3a6da0926509778e175f4bb5d Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Mon, 13 Mar 2023 17:40:28 +0100 Subject: [PATCH 06/16] some more file review --- .../Constants/CalculationEngine.ipynb | 4 +- ...20_12_BE4.csv => Actual_CH_2020_12_BE.csv} | 6 +- .../Actual_CH_2020_12_ELR60A70.csv | 11 ++ .../Actual_CH_2020_12_ELR60A80.csv | 11 ++ ..._LR70-1.csv => Actual_CH_2020_12_LR70.csv} | 6 +- ..._LR80-1.csv => Actual_CH_2020_12_LR80.csv} | 8 +- .../DataImport.ipynb | 78 +++++++++----- ....csv => DataNodeParameters_CH_2020_12.csv} | 0 ...ataNodeParameters_CompReins_CH_2020_12.csv | 11 -- ...0_12.csv => DataNodeStates_CH_2020_12.csv} | 0 ...odes_CompReins_CH.csv => DataNodes_CH.csv} | 0 .../NominalCashflows_CH_2020_12_BE10.csv | 19 ---- .../NominalCashflows_CH_2020_12_BE_1Year2.csv | 19 ++++ .../NominalCashflows_CH_2020_12_LR70-2.csv | 19 ---- ...NominalCashflows_CH_2020_12_LR70_1Year.csv | 19 ++++ .../NominalCashflows_CH_2020_12_LR80-2.csv | 19 ---- ...ominalCashflows_CH_2020_12_LR80_1Year2.csv | 19 ++++ .../Openings_CH_2020_12_BE2.csv | 7 -- .../Openings_CH_2020_12_LR70.csv | 7 -- .../Openings_CH_2020_12_LR80.csv | 7 -- .../CompareReinsuranceContracts/Reports.ipynb | 102 +++++++++--------- .../{Scenario2.csv => Scenarios.csv} | 2 + 22 files changed, 190 insertions(+), 184 deletions(-) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_BE4.csv => Actual_CH_2020_12_BE.csv} (75%) create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A70.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A80.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_LR70-1.csv => Actual_CH_2020_12_LR70.csv} (76%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Actuals_CH_2020_12_LR80-1.csv => Actual_CH_2020_12_LR80.csv} (68%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{DataNodeParameters_CompReins_CH_2020_12-1.csv => DataNodeParameters_CH_2020_12.csv} (100%) delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{DataNodeStates_CompReins_CH_2020_12.csv => DataNodeStates_CH_2020_12.csv} (100%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{DataNodes_CompReins_CH.csv => DataNodes_CH.csv} (100%) delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv create mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv delete mode 100644 ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{Scenario2.csv => Scenarios.csv} (89%) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index a465afaa..ab6ecbad 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -19,8 +19,8 @@ { "cell_type": "code", "source": [ - "var projectName = \"ifrs17\";", - "\nvar environmentName = \"dev\";", + "var projectName = \"ifrs-17-ce-8-3-2022\";", + "\nvar environmentName = \"v1.1.1\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ], diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_BE.csv similarity index 75% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_BE.csv index acc41dc1..14f9777c 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_BE4.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_BE.csv @@ -4,8 +4,8 @@ CH,2020,12,,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value RP1.1,CF,PR,A,,1000 -RP1.1,CF,NIC,A,,-300 -RP1.1,CF,AEM,A,,-150 +RP1.1,CF,NIC,A,,-600 +RP1.1,CF,AEM,A,,-300 RPR1.1,CF,PR,A,,-300 -RPR1.1,CF,NIC,A,,90 +RPR1.1,CF,NIC,A,,180 RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A70.csv new file mode 100644 index 00000000..68943f13 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A70.csv @@ -0,0 +1,11 @@ +@@Main,,,,, +ReportingNode,Year,Month,Scenario,, +CH,2020,12,ELR60A70,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1.1,CF,PR,A,,1000 +RP1.1,CF,NIC,A,,-700 +RP1.1,CF,AEM,A,,-300 +RPR1.1,CF,PR,A,,-300 +RPR1.1,CF,NIC,A,,210 +RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A80.csv new file mode 100644 index 00000000..e58f9304 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_ELR60A80.csv @@ -0,0 +1,11 @@ +@@Main,,,,, +ReportingNode,Year,Month,Scenario,, +CH,2020,12,ELR60A80,, +@@Actual,,,,, +DataNode,AocType,AmountType,EstimateType,AccidentYear,Value +RP1.1,CF,PR,A,,1000 +RP1.1,CF,NIC,A,,-800 +RP1.1,CF,AEM,A,,-300 +RPR1.1,CF,PR,A,,-300 +RPR1.1,CF,NIC,A,,240 +RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR70.csv similarity index 76% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR70.csv index 0119b997..025df1ea 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR70-1.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR70.csv @@ -4,8 +4,8 @@ CH,2020,12,LR70,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value RP1.1,CF,PR,A,,1000 -RP1.1,CF,NIC,A,,-350 -RP1.1,CF,AEM,A,,-150 +RP1.1,CF,NIC,A,,-700 +RP1.1,CF,AEM,A,,-300 RPR1.1,CF,PR,A,,-300 -RPR1.1,CF,NIC,A,,90 +RPR1.1,CF,NIC,A,,210 RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR80.csv similarity index 68% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR80.csv index eafa6890..38aba505 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actuals_CH_2020_12_LR80-1.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Actual_CH_2020_12_LR80.csv @@ -4,8 +4,8 @@ CH,2020,12,LR80,, @@Actual,,,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value RP1.1,CF,PR,A,,1000 -RP1.1,CF,NIC,A,,-400 -RP1.1,CF,AEM,A,,-150 +RP1.1,CF,NIC,A,,-800 +RP1.1,CF,AEM,A,,-300 RPR1.1,CF,PR,A,,-300 -RPR1.1,CF,NIC,A,,120 -RPR1.1,CF,AC,A,,150 \ No newline at end of file +RPR1.1,CF,NIC,A,,240 +RPR1.1,CF,AC,A,,105 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index db7d2517..e7fad06e 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -74,7 +74,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Scenario2.csv\").WithType().WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"Scenarios.csv\").WithType().WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -92,7 +92,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodes_CompReins_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"DataNodes_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -101,11 +101,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodeStates_CompReins_CH_2020_12.csv\")", - "\n .WithFormat(ImportFormats.DataNodeState)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"DataNodeStates_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -114,11 +110,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodeParameters_CompReins_CH_2020_12-1.csv\")", - "\n .WithFormat(ImportFormats.DataNodeParameter)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"DataNodeParameters_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -127,7 +119,7 @@ { "cell_type": "markdown", "source": [ - "## Transactional Data" + "# Best Estimate - Loss Ratio 60%" ], "metadata": {}, "execution_count": 0, @@ -145,11 +137,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_BE4.csv\")", - "\n .WithFormat(ImportFormats.Actual)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"Actual_CH_2020_12_BE.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -158,11 +146,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE10.csv\")", - "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(DataSource)", - "\n .WithActivityLog()", - "\n .ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE_1Year2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -180,7 +164,7 @@ { "cell_type": "markdown", "source": [ - "## LR70" + "## Loss Ratio 70%" ], "metadata": {}, "execution_count": 0, @@ -189,7 +173,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_LR70-1.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"Actual_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -198,7 +182,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR70-2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR70_1Year.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -207,7 +191,7 @@ { "cell_type": "markdown", "source": [ - "## LR80" + "## Loss Ratio 80%" ], "metadata": {}, "execution_count": 0, @@ -216,7 +200,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Actuals_CH_2020_12_LR80-1.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"Actual_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -225,7 +209,43 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR80-2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR80_1Year2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Expected Loss Ratio 60% (BE) Actual 70%" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Actual_CH_2020_12_ELR60A70.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Expected Loss Ratio 60% (BE) Actual 80%" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"Actual_CH_2020_12_ELR60A80.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CH_2020_12.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12-1.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CH_2020_12.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv deleted file mode 100644 index d4660dbe..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeParameters_CompReins_CH_2020_12.csv +++ /dev/null @@ -1,11 +0,0 @@ -@@Main,, -ReportingNode,Year,Month,Scenario -CH,2020,12 -,, -@@SingleDataNodeParameter,, -DataNode,PremiumAllocation, -RP1.1,0.8 -,, -@@InterDataNodeParameter,, -DataNode,LinkedDataNode,ReinsuranceCoverage -RP1.1,RPR1.1,0.5 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CH_2020_12.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CompReins_CH_2020_12.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodeStates_CH_2020_12.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CH.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CompReins_CH.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataNodes_CH.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv deleted file mode 100644 index 61e3c166..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE10.csv +++ /dev/null @@ -1,19 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 -RPR1.1,,CU,CL,C,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 -RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 -RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 -RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,BOP,N,,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 -RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.5 -RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv new file mode 100644 index 00000000..11b389f9 --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,, +CH,2020,12,,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11 +RP1.1,,CU,CL,C,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RPR1.1,,CU,CL,C,,50,50,50,50,50,50,50,50,50,50,50,50 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,AEM,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,15,15,15,15,15,15,15,15,15,15,15,15 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv deleted file mode 100644 index 87f3d177..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70-2.csv +++ /dev/null @@ -1,19 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,LR70,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 -RPR1.1,,CU,CL,C,,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667,29.16666667 -RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,BOP,N,,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 -RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667,-29.16666667 -RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 -RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 -RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv new file mode 100644 index 00000000..c0bd388a --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,, +CH,2020,12,LR70,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11 +RP1.1,,CU,CL,C,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RPR1.1,,CU,CL,C,,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333,58.33333333 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333,-58.33333333 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,AEM,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv deleted file mode 100644 index 43fc25d8..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80-2.csv +++ /dev/null @@ -1,19 +0,0 @@ -@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,, -CH,2020,12,LR80,,,,,,,,,,,,,,,,,,,,,,,,,, -@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23 -RP1.1,,CU,CL,C,,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667,41.66666667 -RPR1.1,,CU,CL,C,,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333,33.33333333 -RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RP1.1,NIC,BE,BOP,N,,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 -RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333,-33.33333333 -RP1.1,AEM,BE,BOP,N,,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,-12.5 -RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,NIC,BE,BOP,N,,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 -RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10 -RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,0,0,0,0,0,0,0,0,0,0,0,0 -RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv new file mode 100644 index 00000000..6f1d5cdb --- /dev/null +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv @@ -0,0 +1,19 @@ +@@Main,,,,,,,,,,,,,,,,, +ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,, +CH,2020,12,LR80,,,,,,,,,,,,,, +@@Cashflow,,,,,,,,,,,,,,,,, +DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11 +RP1.1,,CU,CL,C,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RPR1.1,,CU,CL,C,,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667,66.66666667 +RP1.1,PR,BE,BOP,N,,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333,83.33333333 +RP1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,NIC,BE,BOP,N,,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667,-66.66666667 +RP1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RP1.1,AEM,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RP1.1,AEM,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,PR,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25 +RPR1.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,NIC,BE,BOP,N,,20,20,20,20,20,20,20,20,20,20,20,20 +RPR1.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 +RPR1.1,AC,BE,BOP,N,,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75,8.75 +RPR1.1,AC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv deleted file mode 100644 index 7ad34381..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_BE2.csv +++ /dev/null @@ -1,7 +0,0 @@ -@@Main,,,, -ReportingNode,Year,Month,, -CH,2020,12,, -@@Opening,,,, -DataNode,EstimateType,AmountType,AccidentYear,Value -RP1.1,C,,,100.2 -RPR1.1,C,,,-175.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv deleted file mode 100644 index 3e8130f9..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR70.csv +++ /dev/null @@ -1,7 +0,0 @@ -@@Main,,,, -ReportingNode,Year,Month,Scenario, -CH,2020,12,LR70, -@@Opening,,,, -DataNode,EstimateType,AmountType,AccidentYear,Value -RP1.1,L,,,1 -RPR1.1,LR,,,-100.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv deleted file mode 100644 index 892cf06d..00000000 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Openings_CH_2020_12_LR80.csv +++ /dev/null @@ -1,7 +0,0 @@ -@@Main,,,, -ReportingNode,Year,Month,Scenario, -CH,2020,12,LR80, -@@Opening,,,, -DataNode,EstimateType,AmountType,AccidentYear,Value -RP1.1,L,,,100 -RPR1.1,LR,,,-100.1 \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 01cd4c9e..95c5560e 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -84,48 +84,15 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (reportingYear, reportingMonth);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};", - "\npv.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", - "\npv.Scenario = null;//\"All\";", + "\npv.ColumnSlices = new string[]{\"Scenario\",\"GroupOfContract\", \"AmountType\"};", + "\npv.DataFilter = new [] {(\"EconomicBasis\", \"L\"),(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", + "\npv.Scenario = \"All\";// null;//\"LR70\";//\"All\";", "\n(await pv.ToReportAsync)" ], "metadata": {}, "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "# Fulfilment Cash Flow (FCF)" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "We start by looking at the Fulfilment Cash Flows (FCF). Data and results for both cases are exactly the same." - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;", - "\nfulfillmentCashflows.ReportingNode = \"CH\";", - "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);", - "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};", - "\nfulfillmentCashflows.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", - "\nfulfillmentCashflows.Scenario = \"All\";", - "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -150,8 +117,9 @@ "var writtenActual = ifrs17.WrittenActuals;", "\nwrittenActual.ReportingNode = \"CH\";", "\nwrittenActual.ReportingPeriod = (reportingYear, reportingMonth);", - "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\nwrittenActual.DataFilter = new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nwrittenActual.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\"};", + "\nwrittenActual.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nwrittenActual.Scenario = \"All\";", "\n(await writtenActual.ToReportAsync) with {Height = 400}" ], "metadata": {}, @@ -161,7 +129,7 @@ { "cell_type": "markdown", "source": [ - "# LRC Technical Margin (TM) " + "# Actuarial Experience Adjustment" ], "metadata": {}, "execution_count": 0, @@ -170,13 +138,14 @@ { "cell_type": "code", "source": [ - "var technicalMargins = ifrs17.TechnicalMargins;", - "\ntechnicalMargins.ReportingNode = \"CH\";", - "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", - "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\ntechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"RP1.1\")};", - "\ntechnicalMargins.Scenario = \"All\";", - "\n(await technicalMargins.ToReportAsync) with {Height = 600}" + "var experienceAdjustments = ifrs17.ExperienceAdjustments;", + "\nexperienceAdjustments.ReportingNode = \"CH\";", + "\nexperienceAdjustments.ReportingPeriod = (reportingYear, reportingMonth);", + "\nexperienceAdjustments.ColumnSlices = new string[]{\"Scenario\",\"GroupOfContract\"};//\"GroupOfContract\", \"AmountType\"", + "\nexperienceAdjustments.RowSlices = new string[]{\"AmountType\",\"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", + "\nexperienceAdjustments.DataFilter = null; //new []{(\"VariableType\", AocTypes.CF), (\"AmountType\",\"!CDR\")}; //new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nexperienceAdjustments.Scenario = \"All\";", + "\n(await experienceAdjustments.ToReportAsync)" ], "metadata": {}, "execution_count": 0, @@ -197,10 +166,10 @@ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", - "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", - "\nallocatedTechnicalMargins.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", - "\nallocatedTechnicalMargins.Scenario = null;", - "\n//allocatedTechnicalMargins.Scenario = \"All\";", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\", \"EstimateType\"};", + "\nallocatedTechnicalMargins.DataFilter = new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")}; //new [] {(\"Scenario\", \"!LR80\")};", + "\n//allocatedTechnicalMargins.Scenario = null;", + "\nallocatedTechnicalMargins.Scenario = \"All\";", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" ], "metadata": {}, @@ -223,8 +192,9 @@ "var actuarialLrc = ifrs17.ActuarialLrc;", "\nactuarialLrc.ReportingNode = \"CH\";", "\nactuarialLrc.ReportingPeriod = (reportingYear, reportingMonth);", - "\nactuarialLrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};", - "\nactuarialLrc.DataFilter = null;", + "\nactuarialLrc.ColumnSlices = new string[]{\"Scenario\",\"GroupOfContract\",\"EstimateType\"};", + "\nactuarialLrc.DataFilter = new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", + "\nactuarialLrc.Scenario = \"All\";", "\n(await actuarialLrc.ToReportAsync) with {Height = 750}" ], "metadata": {}, @@ -247,14 +217,38 @@ "var financialPerformance = ifrs17.FinancialPerformance;", "\nfinancialPerformance.ReportingNode = \"CH\";", "\nfinancialPerformance.ReportingPeriod = (reportingYear, reportingMonth);", - "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};", - "\nfinancialPerformance.DataFilter = null;", + "\nfinancialPerformance.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\"};", + "\nfinancialPerformance.RowSlices = new string[]{\"AmountType\"};", + "\nfinancialPerformance.DataFilter = new []{(\"Scenario\",\"!LR70\"),(\"Scenario\",\"!ELR60A70\")};//new []{(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", + "\nfinancialPerformance.Scenario = \"All\";", "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}" ], "metadata": {}, "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# KPIs" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "- CSM NB => Value Creation ", + "\n- CSM AM => Value Creation ", + "\n- Insurance Revenue => business Growth", + "\n- TCI PnL => PnL with OCI = 0 ", + "\n- Experience Variance => managing underling business" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenarios.csv similarity index 89% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenarios.csv index 94f67060..ad34991d 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenario2.csv +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Scenarios.csv @@ -2,6 +2,8 @@ SystemName,DisplayName,,,,,,,,,, LR70,Loss Ratio 70, LR80,Loss Ratio 80, +ELR60A70,Expected Loss Ratio 60 Actual 70, +ELR60A80,Expected Loss Ratio 60 Actual 80, YCUP1.0pct,Yield Curve Up 1.0pct,,,,,,,,,, YCDW1.0pct,Yield Curve Down 1.0pct,,,,,,,,,, SRUP1.0pct,Spread Rate Up 1.0pct,,,,,,,,,, From 5bcba586d89596c815853a1327f4253da2c73bfc Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Mon, 13 Mar 2023 17:42:30 +0100 Subject: [PATCH 07/16] Precision and Report Scopes --- ifrs17/Constants/Consts.ipynb | 3 +- ifrs17/Report/ReportMutableScopes.ipynb | 37 ++- ifrs17/Report/ReportScopes.ipynb | 402 +++++++++++++++++++++++- 3 files changed, 433 insertions(+), 9 deletions(-) diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 2bd61cb2..d9b6df9d 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -46,7 +46,7 @@ { "cell_type": "code", "source": [ - "public const double Precision = 1E-5;" + "public const double Precision = 1E-2;" ], "metadata": {}, "execution_count": 0, @@ -353,6 +353,7 @@ "\n public const string AEM = nameof(AEM); // Attributable Expenses Maintenance", "\n public const string AC = nameof(AC); // Attributable Commissions", "\n public const string AE = nameof(AE); // Attributable Expenses", + "\n public const string ULE = nameof(ULE); ", "\n}" ], "metadata": {}, diff --git a/ifrs17/Report/ReportMutableScopes.ipynb b/ifrs17/Report/ReportMutableScopes.ipynb index 91f9faf9..717e2721 100644 --- a/ifrs17/Report/ReportMutableScopes.ipynb +++ b/ifrs17/Report/ReportMutableScopes.ipynb @@ -105,6 +105,7 @@ "\n .WithApplicability(x => x.Identity == nameof(ActLicReport))", "\n .WithApplicability(x => x.Identity == nameof(LicReport))", "\n .WithApplicability(x => x.Identity == nameof(FpReport))", + "\n .WithApplicability(x => x.Identity == \"FpReport2\")", "\n );", "\n", "\n // Basic mutable properties", @@ -123,12 +124,16 @@ "\n", "\n IEnumerable RowSlices { get; set; }", "\n protected string[] defaultRowSlices => new string[] { };", - "\n protected string[] rowSlices => RowSlices is null ? defaultRowSlices : defaultRowSlices.Concat(RowSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", + "\n protected string[] rowSlices => RowSlices is null ", + "\n ? defaultRowSlices ", + "\n : defaultRowSlices.Where(cs => !RowSlices.Contains(cs)).Concat(RowSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", "\n", "\n IEnumerable ColumnSlices { get; set; }", "\n protected string[] defaultColumnSlices => new string[] { };", "\n protected string[] columnSlices { get{", - "\n var slices = ColumnSlices is null ? defaultColumnSlices : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", + "\n var slices = ColumnSlices is null ", + "\n ? defaultColumnSlices ", + "\n : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", "\n return Scenario == \"All\" || Scenario == \"Delta\"", "\n ? slices.Concat(nameof(Scenario).RepeatOnce()).ToArray() ", "\n : Scenario is null ? slices : nameof(Scenario).RepeatOnce().Concat(slices).ToArray();", @@ -222,7 +227,7 @@ "\n", "\npublic interface ExpAdjReport : IIfrs17Report {", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"EstimateType\"};", - "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"AmountType\" };", + "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\"};", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", "\n ? GetScopes(GetIdentities()).Aggregate().ActuarialExperienceAdjustment", "\n : GetScopes(GetIdentities()).Aggregate().ActuarialExperienceAdjustment.Filter(dataFilter);", @@ -289,15 +294,32 @@ "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformance.Filter(dataFilter);", "\n}", "\n", + "\npublic interface FpReport2 : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", + "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\", \"EstimateType\"};", + "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\",\"LiabilityType\" };", + "\n int IIfrs17Report.headerColumnWidthValue => 500;", + "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", + "\n ? GetScopes(GetIdentities()).Aggregate().FinancialPerformance", + "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformance.Filter(dataFilter);", + "\n}", + "\n", "\npublic interface Data : IMutableScope<((int year, int month) period, string reportingNode, string scenario, CurrencyType currencyType, ", "\n string reportType, (string filterName, object filterValue)[] dataFilter)> ", "\n{", "\n IDataCube Cube { get{", - "\n var dataCube = GetScope(Identity.reportType).GetDataCube();", + "\n var data = GetScope(Identity.reportType).GetDataCube();", "\n // TODO: suggestion to place the filter here instead of having it in every applicability scope", - "\n if(Identity.scenario != \"Delta\") return dataCube;", - "\n var bestEstimateById = dataCube.Where(x => x.Scenario == null).ToDictionary(x => x.ToIdentityString());", - "\n return dataCube.Select(x => x.Scenario == null ? x : x with { Value = x.Value - (bestEstimateById.TryGetValue((x with {Scenario = null}).ToIdentityString(), out var be)? be.Value : 0.0) }).ToDataCube();", + "\n // if(Identity.scenario != \"Delta\") return dataCube;", + "\n // var bestEstimateById = dataCube.Where(x => x.Scenario == null).ToDictionary(x => x.ToIdentityString());", + "\n // return dataCube.Select(x => x.Scenario == null ? x : x with { Value = x.Value - (bestEstimateById.TryGetValue((x with {Scenario = null}).ToIdentityString(), out var be)? be.Value : 0.0) }).ToDataCube();", + "\n", + "\n if(Identity.scenario != \"All\" && Identity.scenario != \"Delta\") return data;", + "\n if(Identity.scenario == \"All\") return data.Select(x => x.Scenario == null? x with {Scenario = \"Best Estimate\" } : x).ToDataCube();", + "\n var bestEstimateById = data.Where(x => x.Scenario == null).ToDictionary(x => x.ToIdentityString());", + "\n return data.Select(x => x.Scenario == null ? x with { Scenario = \"Best Estimate\" }", + "\n : x with { Value = x.Value - (bestEstimateById.TryGetValue((x with {Scenario = null}).ToIdentityString(), out var be)? be.Value : 0.0) }).ToDataCube();", + "\n ", "\n }}", "\n} " ], @@ -359,6 +381,7 @@ "\n public IIfrs17Report ActuarialLic => reportUniverse.GetScope(nameof(ActLicReport));", "\n public IIfrs17Report Lic => reportUniverse.GetScope(nameof(LicReport));", "\n public IIfrs17Report FinancialPerformance => reportUniverse.GetScope(nameof(FpReport));", + "\n public IIfrs17Report FinancialPerformance2 => reportUniverse.GetScope(\"FpReport2\");", "\n}" ], "metadata": {}, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index af7efdf7..e2bfc09a 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -447,7 +447,7 @@ "\n .Filter((\"VariableType\", AocTypes.CF));", "\n ", "\n private IDataCube BestEstimateCashflow => GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", AocTypes.CF))", + "\n .Filter((\"VariableType\", AocTypes.CF), (\"AmountType\",\"!CDR\"))", "\n .SelectToDataCube(rv => rv with { EconomicBasis = null, Novelty = Novelties.C });", "\n", "\n IDataCube ActuarialExperienceAdjustment => WrittenCashflow - BestEstimateCashflow;", @@ -730,6 +730,146 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "//Best Estimate", + "\npublic interface BestEstimateChangeInEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.LiabilityType == LiabilityTypes.LIC)", + "\n );", + "\n ", + "\n private IDataCube BestEstimateNonFinancialNonNewBusiness => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!YCU\"));", + "\n protected IDataCube BestEstimate => BestEstimateNonFinancialNonNewBusiness + GetScope(Identity).BestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube BestEstimateNonFinancialNonNewBusinessNonCf => BestEstimateNonFinancialNonNewBusiness.Filter((\"VariableType\", \"!CF\"));", + "\n private IDataCube BestEstimateCf => BestEstimateNonFinancialNonNewBusiness.Filter((\"VariableType\", \"CF\"));", + "\n", + "\n // Best Estimate Premiums", + "\n private (string vt, string avt) premiumsVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GIR3\", \"A15\"),", + "\n { IsReinsurance: true } => (\"RISE4\", \"A40\")", + "\n };", + "\n ", + "\n // Change in Best Estimate", + "\n private (string vt, string avt) nonFinancialNonCfVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE7\", \"A23\"),", + "\n { IsReinsurance: true } => (\"RIR5\", \"A45\")", + "\n };", + "\n ", + "\n // Best Estimate Claims", + "\n private (string vt, string avt) claimsVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GIR1\", \"A1\"),", + "\n { IsReinsurance: true } => (\"RIR1\", \"A26\")", + "\n };", + "\n ", + "\n // Best Estimate Expenses", + "\n private string expensesVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => \"GIR2\",", + "\n { IsReinsurance: true } => \"RIR2\"", + "\n };", + "\n", + "\n ", + "\n private IDataCube AttributableMaintenanceExpenses => -1 * BestEstimateCf", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEM))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType });", + "\n ", + "\n private IDataCube AttributableMaintenanceCommissions => -1 * BestEstimateCf", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACM))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType});", + "\n ", + "\n private IDataCube NotCdrClaims => -1 * BestEstimateCf", + "\n .Filter((\"AmountType\", \"!CDR\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.NIC))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt });", + "\n ", + "\n private IDataCube Cdr => -1 * BestEstimateCf", + "\n .Filter((\"AmountType\", AmountTypes.CDR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt });", + "\n ", + "\n IDataCube Premiums => -1 * BestEstimateCf", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumsVariableType.vt});", + "\n ", + "\n IDataCube ChangesInBestEstimate => -1 * BestEstimateNonFinancialNonNewBusinessNonCf", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialNonCfVariableType.vt });", + "\n ", + "\n IDataCube Claims => NotCdrClaims + Cdr;", + "\n ", + "\n IDataCube Expenses => AttributableMaintenanceExpenses + AttributableMaintenanceCommissions;", + "\n ", + "\n IDataCube AcquisitionExpensesAndCommissions => Enumerable.Empty().ToDataCube();", + "\n ", + "\n IDataCube BestEstimateNonFinancial => Enumerable.Empty().ToDataCube();", + "\n}", + "\n", + "\npublic interface BestEstimateChangeInEstimateLic : BestEstimateChangeInEstimate", + "\n{", + "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE3\", \"A14\"),", + "\n { IsReinsurance: true } => (\"RISE3\", \"A41\")", + "\n };", + "\n IDataCube BestEstimateChangeInEstimate.BestEstimateNonFinancial => -1 * BestEstimate.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt });", + "\n ", + "\n IDataCube BestEstimateChangeInEstimate.ChangesInBestEstimate => Enumerable.Empty().ToDataCube();", + "\n IDataCube BestEstimateChangeInEstimate.Claims => Enumerable.Empty().ToDataCube();", + "\n IDataCube BestEstimateChangeInEstimate.Expenses => Enumerable.Empty().ToDataCube();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//RiskAdjustment", + "\npublic interface RiskAdjustmentChangeInEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.LiabilityType == LiabilityTypes.LIC)", + "\n );", + "\n private IDataCube RiskAdjustmentNonFinancialNonNewBusiness => GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!YCU\"));", + "\n protected IDataCube RiskAdjustment => RiskAdjustmentNonFinancialNonNewBusiness + GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE7\", \"A24\"),", + "\n { IsReinsurance: true } => (\"RIR5\", \"A46\")", + "\n };", + "\n ", + "\n private (string vt, string avt) cfVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GIR5\", \"A7\"),", + "\n { IsReinsurance: true } => (\"RIR3\", \"A31\")", + "\n };", + "\n ", + "\n IDataCube RiskAdjustmentNonFinancialNonCf => -1 * RiskAdjustmentNonFinancialNonNewBusiness", + "\n .Filter((\"VariableType\", \"!CF\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt});", + "\n ", + "\n IDataCube RiskAdjustmentCf => -1 * RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = cfVariableType.vt });", + "\n ", + "\n IDataCube RiskAdjustmentNonFinancial => Enumerable.Empty().ToDataCube();", + "\n}", + "\n", + "\npublic interface RiskAdjustmentChangeInEstimateLic : RiskAdjustmentChangeInEstimate", + "\n{", + "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE3\", \"A14\"),", + "\n { IsReinsurance: true } => (\"RISE3\", \"A41\")", + "\n };", + "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentNonFinancial => -1 * RiskAdjustment.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt });", + "\n ", + "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentNonFinancialNonCf => Enumerable.Empty().ToDataCube();", + "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentCf => Enumerable.Empty().ToDataCube();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -793,6 +933,48 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface CsmChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube { ", + "\n private IDataCube TechnicalMarginNonFinancialNonNewBusiness => GetScope(Identity).LrcTechnicalMargin.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!YCU\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!AM\"),(\"VariableType\", \"!EA\"));", + "\n", + "\n ", + "\n private IDataCube Csm => GetScope(Identity).Csm.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Csm.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private (string vt, string avt) amortizationVariableType => Identity.Id switch {", + "\n { IsReinsurance: false} => (\"GIR6\", \"A8\"),", + "\n { IsReinsurance: true } => (\"RIR4\", \"A32\")", + "\n };", + "\n ", + "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE7\", \"A25\"),", + "\n { IsReinsurance: true } => (\"RIR5\", \"A47\")", + "\n };", + "\n ", + "\n private (string vt, string avt) financialVariableType => Identity.Id switch {", + "\n { IsReinsurance: false} => (\"IFIE1\", \"A17\"),", + "\n { IsReinsurance: true } => (\"IFIE2\", \"A36\")", + "\n };", + "\n ", + "\n IDataCube Amortization => -1 * Csm.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = amortizationVariableType.vt});", + "\n ", + "\n IDataCube NonFinancialChanges => TechnicalMarginNonFinancialNonNewBusiness", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt});", + "\n ", + "\n IDataCube FinancialChanges => -1 * (Csm.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.CRU)))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = financialVariableType.vt });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -842,6 +1024,24 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface LcChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n ", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n IDataCube NonFinancialChanges => -1 * Lc", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GISE6\" });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -891,6 +1091,28 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface LorecoChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n ", + "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n IDataCube Amortization => -1 * Loreco.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"RISE7\" });", + "\n ", + "\n IDataCube NewBusiness => -1 * Loreco.Filter((\"VariableType\", AocTypes.BOP)).SelectToDataCube(v => v with { VariableType = \"RISE5\" });", + "\n ", + "\n IDataCube NonFinancialChanges => -1 * Loreco", + "\n .Filter((\"VariableType\", \"!BOP\"), (\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"RISE6\" });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -958,6 +1180,65 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface IncurredActuals2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube WrittenAndAccruals => GetScope(Identity).Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"));", + "\n ", + "\n protected IDataCube Written => WrittenAndAccruals.Filter((nameof(EstimateType), EstimateTypes.A));", + "\n ", + "\n private string premiumVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => \"GIR3\",", + "\n { IsReinsurance: true } => \"RISE4\"", + "\n };", + "\n", + "\n ", + "\n private (string vt, string avt) claimsVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GISE1\", \"A9\"),", + "\n { IsReinsurance: true } => (\"RISE1\", \"A39\")", + "\n };", + "\n ", + "\n private string expensesVariableType => Identity.Id switch {", + "\n { IsReinsurance: false } => \"GISE2\",", + "\n { IsReinsurance: true } => \"RISE2\"", + "\n };", + "\n", + "\n ", + "\n private IDataCube AttributableMaintenanceExpenses => Written", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEM))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType, });", + "\n ", + "\n private IDataCube AttributableMaintenanceCommissions => Written", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACM))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType });", + "\n ", + "\n private IDataCube PremiumsWo => WrittenAndAccruals", + "\n .Filter((\"VariableType\",AocTypes.WO))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumVariableType, });", + "\n ", + "\n private IDataCube PremiumsCf => Written", + "\n .Filter((\"VariableType\",AocTypes.CF))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumVariableType, });", + "\n ", + "\n IDataCube Claims => Written", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.NIC || x.SystemName == AmountTypes.ULE))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt, });", + "\n ", + "\n IDataCube Premiums => PremiumsCf - PremiumsWo;", + "\n ", + "\n IDataCube Expenses => AttributableMaintenanceExpenses + AttributableMaintenanceCommissions;", + "\n ", + "\n IDataCube AcquisitionExpensesAndCommissions => Enumerable.Empty().ToDataCube();", + "\n", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -993,6 +1274,23 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface IncurredDeferrals2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube Deferrals => GetScope(Identity).Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"));", + "\n ", + "\n private IDataCube Amortization => Deferrals", + "\n .Filter((\"VariableType\", AocTypes.AM));", + "\n ", + "\n IDataCube AmortizationToIr => (-1 * Amortization).SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GIR4\" });", + "\n IDataCube AmortizationToIse => Amortization.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GISE4\" });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -1028,6 +1326,84 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface ExperienceAdjustmentOnPremium2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube WrittenPremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n ", + "\n private (string vt, string avt) variableType => Identity.Id switch {", + "\n { IsReinsurance: false } => (\"GIR3\", \"A15\"),", + "\n { IsReinsurance: true } => (\"RISE4\", \"A40\")", + "\n };", + "\n ", + "\n IDataCube ExperienceAdjustmentOnPremium => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = variableType.vt});", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//FcfChangeInEstimate", + "\npublic interface FcfChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube BestEstimate => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).BestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n private IDataCube RiskAdjustment => GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube CurrentBestEstimate => GetScope(Identity).CurrentBestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).CurrentBestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n private IDataCube CurrentRiskAdjustment => GetScope(Identity).CurrentRiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).CurrentRiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n // Financial Fp", + "\n private string variableTypeFpFinancial => Identity.Id switch {", + "\n { IsReinsurance: false } => \"IFIE1\",", + "\n { IsReinsurance: true } => \"IFIE2\",", + "\n };", + "\n ", + "\n // OCI ", + "\n private string variableTypeOciFinancial => Identity.Id switch {", + "\n { LiabilityType: LiabilityTypes.LRC } => \"OCI1\",", + "\n { LiabilityType: LiabilityTypes.LIC } => \"OCI2\",", + "\n };", + "\n", + "\n ", + "\n private IDataCube FinancialBestEstimate => (BestEstimate.Filter((\"VariableType\", AocTypes.IA)) + ", + "\n BestEstimate.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n BestEstimate.Filter((\"VariableType\", AocTypes.CRU)))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial,});", + "\n ", + "\n private IDataCube FinancialRiskAdjustment => (RiskAdjustment.Filter((\"VariableType\", AocTypes.IA)) + ", + "\n RiskAdjustment.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n RiskAdjustment.Filter((\"VariableType\", AocTypes.CRU)))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial,});", + "\n ", + "\n private IDataCube OciBestEstimate => (BestEstimate - CurrentBestEstimate)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial,});", + "\n ", + "\n private IDataCube OciRiskAdjustment => (RiskAdjustment - CurrentRiskAdjustment)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial,});", + "\n ", + "\n IDataCube FpFinancial => -1 * (FinancialBestEstimate + FinancialRiskAdjustment);", + "\n", + "\n IDataCube OciFinancial => OciBestEstimate + OciRiskAdjustment;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -1066,6 +1442,30 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface FinancialPerformance2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n ", + "\n private IDataCube BestEstimateChangeInEstimate => GetScope(Identity);", + "\n private IDataCube RiskAdjustmentChangeInEstimate => GetScope(Identity);", + "\n private IDataCube CsmChangeInEstimate => GetScope(Identity);", + "\n private IDataCube LcChangeInEstimate => GetScope(Identity);", + "\n private IDataCube LorecoChangeInEstimate => GetScope(Identity);", + "\n private IDataCube IncurredActuals => GetScope(Identity);", + "\n private IDataCube IncurredDeferrals => Identity.Id.IsReinsurance ", + "\n ? Enumerable.Empty().ToDataCube() ", + "\n : GetScope(Identity);", + "\n private IDataCube ExperienceAdjustmentOnPremium => GetScope(Identity);", + "\n private IDataCube FcfChangeInEstimate => GetScope(Identity);", + "\n ", + "\n IDataCube FinancialPerformance => BestEstimateChangeInEstimate + RiskAdjustmentChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium + FcfChangeInEstimate;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ From b808ca8f9506ff55925c6623109305f60eb230da Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 15 Mar 2023 09:43:16 +0100 Subject: [PATCH 08/16] improving reports nb --- .../Images/QuotaShareReinsurance.png | Bin 0 -> 19971 bytes .../CompareReinsuranceContracts/Reports.ipynb | 245 +++++++++++++++++- 2 files changed, 236 insertions(+), 9 deletions(-) create mode 100644 ifrs17-template/Images/QuotaShareReinsurance.png diff --git a/ifrs17-template/Images/QuotaShareReinsurance.png b/ifrs17-template/Images/QuotaShareReinsurance.png new file mode 100644 index 0000000000000000000000000000000000000000..242ca1344b6f169c47d994826cb3fda674a9a4bf GIT binary patch literal 19971 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 XsnC_V+a|jpzLye{6D<~g>-+x!M&xtb literal 0 HcmV?d00001 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 95c5560e..7a461f86 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -19,9 +19,72 @@ { "cell_type": "markdown", "source": [ - "

Reinsurance

", + "

Quota Share Reinsurance

", "\n", - "\n

Model

" + "\n

Loss Ratio analysis

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Case Study", + "\n", + "\n## Modelling Cash-flow inputs", + "\n", + "\nA simple Insurance Contract with New Business and End Of Period runs is modeled over one year period with a Loss Ratio (LR) of 60%. We modeled the cashflows evenly distributed for both premium (1000 CHF total), Claims, and Expenses (estimated to be 30% of Premiums).", + "\n", + "\nA Reinsurance Contract covers the above mentioned Insurance Contract. A Quota Share of 30% is considered and a Commission of 35% on the Reinsurance Premiums is modeled. ", + "\n", + "\nActual values entered in match the expected values. ", + "\n", + "\nAll these parameters are summarized in the following tables: ", + "\n

", + "\n| Insurance Contract | |", + "\n|-----------------------|------|", + "\n| Total Premium (CHF) | 1000 |", + "\n| Internal Expense | 30% |", + "\n
", + "\n", + "\n| Reinsurance Contract | |", + "\n|-----------------------|------|", + "\n| Quota Share | 30% |", + "\n| Commission | 35% |", + "\n", + "\n", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Scenarios ", + "\n", + "\nThe inputs descibed in [Modelling Cash-flow inputs](#modelling-cash-flow-inputs) defines the so called \"Best Estimate\" Scenario. This corresponds to what is expected to happen in reality. A scenario analysis is required by IFRS 17 Standards and it can be useful in many cases to analyse risks and take decisions on the future. For example one can easily study how the profit of the Insurance and Reinsuance Contracts modelled with the above mentioned parameter would perform under different values of Loss Ratio. ", + "\n

", + "\n", + "\n
", + "\n


", + "\nIn the best estimate scenario (Loss Ratio 60%) we expect the Insurance and Reinsurance Group Contracts to be profitable but the costs of having a Reinsurance Contract lower the total profit that the Insurance Group of Contract realizes. At Loss Ratio of 70% the Group of Insurance Contracts is very close to zero profit and raising futher the Loss Ratio to 80% a Loss making scenario is obtained where the effect of the Reinsurance contract clearly mitagates the losses as shown by the Net view. ", + "\n

", + "\nIn the current use case, we analyse the impact of the Loss Ratio on the relevant figures computed under IFRS 17 using our standard solution implementation.", + "\nWe have defined four scenarios in addition to the best estimate. We considered variations to the Loss Ratio up to 70% and 80%. In addition, we also studied the cases of having modelled the input cash flow assuming a Loss Ratio of 60% but experience the Actual cash flow having a Loss Ratio of 70% and 80%. ", + "\n

", + "\n", + "\n| Scenario | Expected Loss Ratio | Actual Loss Ratio |", + "\n|------------------------------|---------------------|--------------------|", + "\n| Best Estimate | 60% | as expected |", + "\n| Loss Ratio 70 | 70% | as expected |", + "\n| Loss Ratio 80 | 80% | as expected |", + "\n| Expected LR 60 Actual LR 70 | 60% | 70% |", + "\n| Expected LR 60 Actual LR 80 | 60% | 80% |", + "\n", + "\n" ], "metadata": {}, "execution_count": 0, @@ -40,8 +103,7 @@ "cell_type": "code", "source": [ "#!eval-notebook \"DataImport\"", - "\nWorkspace.InitializeFrom(DataSource);", - "\n//ifrs17.Reset(Workspace) //This is not working" + "\nWorkspace.InitializeFrom(DataSource);" ], "metadata": {}, "execution_count": 0, @@ -143,7 +205,7 @@ "\nexperienceAdjustments.ReportingPeriod = (reportingYear, reportingMonth);", "\nexperienceAdjustments.ColumnSlices = new string[]{\"Scenario\",\"GroupOfContract\"};//\"GroupOfContract\", \"AmountType\"", "\nexperienceAdjustments.RowSlices = new string[]{\"AmountType\",\"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", - "\nexperienceAdjustments.DataFilter = null; //new []{(\"VariableType\", AocTypes.CF), (\"AmountType\",\"!CDR\")}; //new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nexperienceAdjustments.DataFilter = null; //new [] {(\"Scenario\", \"!LR70\"),(\"Scenario\", \"!LR80\")};", "\nexperienceAdjustments.Scenario = \"All\";", "\n(await experienceAdjustments.ToReportAsync)" ], @@ -167,7 +229,7 @@ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);", "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\", \"EstimateType\"};", - "\nallocatedTechnicalMargins.DataFilter = new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")}; //new [] {(\"Scenario\", \"!LR80\")};", + "\nallocatedTechnicalMargins.DataFilter = new [] {(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")}; //new [] {(\"Scenario\", \"!LR70\"),(\"Scenario\", \"!LR80\")};", "\n//allocatedTechnicalMargins.Scenario = null;", "\nallocatedTechnicalMargins.Scenario = \"All\";", "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}" @@ -219,7 +281,7 @@ "\nfinancialPerformance.ReportingPeriod = (reportingYear, reportingMonth);", "\nfinancialPerformance.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\"};", "\nfinancialPerformance.RowSlices = new string[]{\"AmountType\"};", - "\nfinancialPerformance.DataFilter = new []{(\"Scenario\",\"!LR70\"),(\"Scenario\",\"!ELR60A70\")};//new []{(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", + "\nfinancialPerformance.DataFilter = null; //new []{(\"Scenario\",\"!LR70\"),(\"Scenario\",\"!ELR60A70\")};//new []{(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", "\nfinancialPerformance.Scenario = \"All\";", "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}" ], @@ -230,7 +292,7 @@ { "cell_type": "markdown", "source": [ - "# KPIs" + "# Key Performance Indicators (KPIs)" ], "metadata": {}, "execution_count": 0, @@ -249,10 +311,175 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margine : value creation" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### New Business" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var csmNb = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"BOP\").Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForDataCube(csmNb.ToDataCube()).WithQuerySource(Workspace)", + "\n .SliceRowsBy(\"VariableType\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"})", + "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Amortization" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"AM\" && Math.Abs(x.Value) > 10E-5).Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForDataCube(csmAM.ToDataCube()).WithQuerySource(Workspace)", + "\n .SliceRowsBy(\"VariableType\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\",\"EstimateType\"})", + "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance : business growth" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Total Comprehensive Income ", + "\nIn absence of the Other Comprehensive Income (OCI) this corresponds to the Profit and Loss. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var tci = financialPerformance.GetDataCube().Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);", + "\nvar hierarchicalDimension = Workspace.ToHierarchicalDimensionCache();", + "\nawait hierarchicalDimension.InitializeAsync(); ", + "\nvar pnl = tci.Where(x => hierarchicalDimension.Get().Ancestors(x.VariableType, includeSelf: true).Any(x => x.SystemName == \"PNL\"));" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForDataCube(pnl.ToDataCube()).WithQuerySource(Workspace)", + "\n //.SliceRowsBy(\"EstimateType\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"}) //\"GroupOfContract\"", + "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Insurance Revenue" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var insRev = tci.Where(x => hierarchicalDimension.Get().Ancestors(x.VariableType, includeSelf: true).Any(x => x.SystemName == \"IR\"));" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForDataCube(insRev.ToDataCube()).WithQuerySource(Workspace)", + "\n //.SliceRowsBy(\"EstimateType\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\",\"GroupOfContract\"})", + "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Experience Variance", + "\nThis indicator represent how well the expected values match the actual. It is not a financial key performance indicator rather a modelling key performance indicator, indicating how well the company expectations are met by the actual figures." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "experienceAdjustments.DataFilter = null;", + "\nvar expAdj = experienceAdjustments.GetDataCube().Where(x => x.VariableType == \"CF\" && Math.Abs(x.Value) > 10E-5).Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ - "" + "await Report.ForDataCube(expAdj.ToDataCube()).WithQuerySource(Workspace)", + "\n .SliceRowsBy(\"VariableType\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"})", + "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, From a958f99d431c90b32e6d567dc6edffb549a95bb5 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 16 Mar 2023 08:38:11 +0100 Subject: [PATCH 09/16] refinement --- .../Images/QuotaShareReinsurance2.png | Bin 0 -> 23869 bytes .../CompareReinsuranceContracts/Reports.ipynb | 89 ++++++++---------- ifrs17/DataModel/DataStructure.ipynb | 2 +- ifrs17/Import/ImportScopeCalculation.ipynb | 8 +- 4 files changed, 45 insertions(+), 54 deletions(-) create mode 100644 ifrs17-template/Images/QuotaShareReinsurance2.png diff --git a/ifrs17-template/Images/QuotaShareReinsurance2.png b/ifrs17-template/Images/QuotaShareReinsurance2.png new file mode 100644 index 0000000000000000000000000000000000000000..5e504624cec97621d8a0aa3b7ed2ca7cabb92391 GIT binary patch literal 23869 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 z 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 literal 0 HcmV?d00001 diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 7a461f86..d0174b00 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -34,17 +34,17 @@ "\n", "\n## Modelling Cash-flow inputs", "\n", - "\nA simple Insurance Contract with New Business and End Of Period runs is modeled over one year period with a Loss Ratio (LR) of 60%. We modeled the cashflows evenly distributed for both premium (1000 CHF total), Claims, and Expenses (estimated to be 30% of Premiums).", + "\nA simple Group of Insurance Contract with New Business and End Of Period runs is modeled over one year period with an expected Loss Ratio (LR) of 60%. We modeled the cashflows evenly distributed over time for both premium (1000 USD total), Claims, and Expenses (estimated to be 30% of Premiums).", "\n", - "\nA Reinsurance Contract covers the above mentioned Insurance Contract. A Quota Share of 30% is considered and a Commission of 35% on the Reinsurance Premiums is modeled. ", + "\nA Reinsurance Contract covers the above mentioned Insurance Contract. A Quota Share of 30% is considered and a Reinsurance Commission of 35% on the Reinsurance Premiums is modeled. ", "\n", - "\nActual values entered in match the expected values. ", + "\nActual values entered matching the expected values. ", "\n", "\nAll these parameters are summarized in the following tables: ", "\n

", "\n| Insurance Contract | |", "\n|-----------------------|------|", - "\n| Total Premium (CHF) | 1000 |", + "\n| Total Premium (USD) | 1000 |", "\n| Internal Expense | 30% |", "\n
", "\n", @@ -68,12 +68,14 @@ "\nThe inputs descibed in [Modelling Cash-flow inputs](#modelling-cash-flow-inputs) defines the so called \"Best Estimate\" Scenario. This corresponds to what is expected to happen in reality. A scenario analysis is required by IFRS 17 Standards and it can be useful in many cases to analyse risks and take decisions on the future. For example one can easily study how the profit of the Insurance and Reinsuance Contracts modelled with the above mentioned parameter would perform under different values of Loss Ratio. ", "\n

", "\n", - "\n
", + "\n", + "\n", "\n


", - "\nIn the best estimate scenario (Loss Ratio 60%) we expect the Insurance and Reinsurance Group Contracts to be profitable but the costs of having a Reinsurance Contract lower the total profit that the Insurance Group of Contract realizes. At Loss Ratio of 70% the Group of Insurance Contracts is very close to zero profit and raising futher the Loss Ratio to 80% a Loss making scenario is obtained where the effect of the Reinsurance contract clearly mitagates the losses as shown by the Net view. ", + "\nIn the best estimate scenario (Loss Ratio 60%) we expect the net result of the Insurance and Reinsurance Group Contracts to be profitable, but the costs of having a Reinsurance Contract lower the total profit of the Insurance Group of Contract stand alone. At Loss Ratio of 70% the Group of Insurance Contracts is very close to zero margin and raising futher the Loss Ratio to 80% a Loss making scenario is obtained, where the effect of the Reinsurance contract clearly mitigates the losses as shown by the Net view. ", "\n

", "\nIn the current use case, we analyse the impact of the Loss Ratio on the relevant figures computed under IFRS 17 using our standard solution implementation.", - "\nWe have defined four scenarios in addition to the best estimate. We considered variations to the Loss Ratio up to 70% and 80%. In addition, we also studied the cases of having modelled the input cash flow assuming a Loss Ratio of 60% but experience the Actual cash flow having a Loss Ratio of 70% and 80%. ", + "\nFor simplicity, we consider the contribution of Risk Adjustment to be zero and locked-in and current yield curves are the same. ", + "\nWe have defined four scenarios in addition to the best estimate. We considered variations to the Loss Ratio up to 70% and 80%. In addition, we also studied the cases of having modelled the input cash flow assuming a Loss Ratio of 60% but the incurred actual cash flow producing a Loss Ratio of 70% and 80%. ", "\n

", "\n", "\n| Scenario | Expected Loss Ratio | Actual Loss Ratio |", @@ -147,7 +149,7 @@ "\npv.ReportingPeriod = (reportingYear, reportingMonth);", "\npv.CurrencyType = CurrencyType.Contractual;", "\npv.ColumnSlices = new string[]{\"Scenario\",\"GroupOfContract\", \"AmountType\"};", - "\npv.DataFilter = new [] {(\"EconomicBasis\", \"L\"),(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", + "\npv.DataFilter = new [] {(\"EconomicBasis\", \"L\")};//,(\"Scenario\",\"!ELR60A70\"),(\"Scenario\",\"!ELR60A80\")};", "\npv.Scenario = \"All\";// null;//\"LR70\";//\"All\";", "\n(await pv.ToReportAsync)" ], @@ -164,15 +166,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "Aslo the Actuals for both cases are exactly the same." - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -180,9 +173,9 @@ "\nwrittenActual.ReportingNode = \"CH\";", "\nwrittenActual.ReportingPeriod = (reportingYear, reportingMonth);", "\nwrittenActual.ColumnSlices = new string[]{\"Scenario\", \"GroupOfContract\"};", - "\nwrittenActual.DataFilter = null;//new [] {(\"GroupOfContract\", \"RP1.1\")};", + "\nwrittenActual.DataFilter = null;", "\nwrittenActual.Scenario = \"All\";", - "\n(await writtenActual.ToReportAsync) with {Height = 400}" + "\n(await writtenActual.ToReportAsync) with { GroupDefaultExpanded = 0}" ], "metadata": {}, "execution_count": 0, @@ -207,7 +200,7 @@ "\nexperienceAdjustments.RowSlices = new string[]{\"AmountType\",\"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", "\nexperienceAdjustments.DataFilter = null; //new [] {(\"Scenario\", \"!LR70\"),(\"Scenario\", \"!LR80\")};", "\nexperienceAdjustments.Scenario = \"All\";", - "\n(await experienceAdjustments.ToReportAsync)" + "\n(await experienceAdjustments.ToReportAsync) with { GroupDefaultExpanded = 0}" ], "metadata": {}, "execution_count": 0, @@ -298,19 +291,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "- CSM NB => Value Creation ", - "\n- CSM AM => Value Creation ", - "\n- Insurance Revenue => business Growth", - "\n- TCI PnL => PnL with OCI = 0 ", - "\n- Experience Variance => managing underling business" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -332,7 +312,10 @@ { "cell_type": "code", "source": [ - "var csmNb = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"BOP\").Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);" + "var csmNb = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"BOP\")", + "\n .Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);", + "\n // .Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\", ", + "\n // Value = x.EstimateType == \"C\" ? -x.Value : x.Value} : x with {Value = x.EstimateType == \"C\" ? -x.Value : x.Value});" ], "metadata": {}, "execution_count": 0, @@ -342,9 +325,9 @@ "cell_type": "code", "source": [ "await Report.ForDataCube(csmNb.ToDataCube()).WithQuerySource(Workspace)", - "\n .SliceRowsBy(\"VariableType\")", + "\n .SliceRowsBy(\"VariableType\",\"GroupOfContract\")", "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"})", - "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + "\n .ReportGridOptions().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -362,7 +345,9 @@ { "cell_type": "code", "source": [ - "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"AM\" && Math.Abs(x.Value) > 10E-5).Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\"} : x);" + "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => x.VariableType == \"AM\" && Math.Abs(x.Value) > 10E-5)", + "\n .Select(x => x.Scenario == null ? x with {Scenario = \"Best Estimate\", ", + "\n Value = x.EstimateType == \"C\" ? -x.Value : x.Value} : x with {Value = x.EstimateType == \"C\" ? -x.Value : x.Value});" ], "metadata": {}, "execution_count": 0, @@ -372,7 +357,7 @@ "cell_type": "code", "source": [ "await Report.ForDataCube(csmAM.ToDataCube()).WithQuerySource(Workspace)", - "\n .SliceRowsBy(\"VariableType\")", + "\n .SliceRowsBy(\"VariableType\",\"GroupOfContract\")", "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\",\"EstimateType\"})", "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" ], @@ -383,7 +368,7 @@ { "cell_type": "markdown", "source": [ - "## Financial Performance : business growth" + "## Financial Performance" ], "metadata": {}, "execution_count": 0, @@ -392,8 +377,8 @@ { "cell_type": "markdown", "source": [ - "### Total Comprehensive Income ", - "\nIn absence of the Other Comprehensive Income (OCI) this corresponds to the Profit and Loss. " + "### Total Comprehensive Income : profitability", + "\nIn absence of the Other Comprehensive Income (OCI) this corresponds to the Profit and Loss as locked-in and current yield curves are the same. " ], "metadata": {}, "execution_count": 0, @@ -415,9 +400,9 @@ "cell_type": "code", "source": [ "await Report.ForDataCube(pnl.ToDataCube()).WithQuerySource(Workspace)", - "\n //.SliceRowsBy(\"EstimateType\")", - "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"}) //\"GroupOfContract\"", - "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + "\n .SliceRowsBy(\"Scenario\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"GroupOfContract\"}) //\"GroupOfContract\"", + "\n .ReportGridOptions().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -426,7 +411,7 @@ { "cell_type": "markdown", "source": [ - "### Insurance Revenue" + "### Insurance Revenue : business growth" ], "metadata": {}, "execution_count": 0, @@ -445,9 +430,9 @@ "cell_type": "code", "source": [ "await Report.ForDataCube(insRev.ToDataCube()).WithQuerySource(Workspace)", - "\n //.SliceRowsBy(\"EstimateType\")", - "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\",\"GroupOfContract\"})", - "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + "\n .SliceRowsBy(\"Scenario\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"GroupOfContract\"})", + "\n .ReportGridOptions().ExecuteAsync() " ], "metadata": {}, "execution_count": 0, @@ -456,7 +441,7 @@ { "cell_type": "markdown", "source": [ - "## Experience Variance", + "## Experience Variance : business strategy", "\nThis indicator represent how well the expected values match the actual. It is not a financial key performance indicator rather a modelling key performance indicator, indicating how well the company expectations are met by the actual figures." ], "metadata": {}, @@ -477,9 +462,9 @@ "cell_type": "code", "source": [ "await Report.ForDataCube(expAdj.ToDataCube()).WithQuerySource(Workspace)", - "\n .SliceRowsBy(\"VariableType\")", - "\n .SliceColumnsBy(new[]{\"Currency\",\"Scenario\"})", - "\n .ReportGridOptions(headerColumnWidth: 300).ExecuteAsync()" + "\n .SliceRowsBy(\"Scenario\")", + "\n .SliceColumnsBy(new[]{\"Currency\",\"GroupOfContract\"})", + "\n .ReportGridOptions().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 6c4ba188..40c7491b 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1541,7 +1541,7 @@ "\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 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
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. In other words, it represents the percentage to which claims in the underlying GICs are expected to be reinboursed by the Reinsurance Contracts belonging to the GRIC. For proportional contracts, this factor is given by the cession while for other contracts it should be estimated. ", "\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." ], diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index 7189319a..3a357622 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -1854,7 +1854,13 @@ "\n", "\n### Reinsurance case", "\n", - "\nFor the reinsurance case, the switch logic is identical to the one described above, except that it uses the gross Technical Margins multiplied by the weights coming from the Reinsurance Coverage Parameter (see [Data Node Parameters](../DataModel/DataStructure#data-node-parameters)). In case a GRIC has multiple GICs, then these weighted $TM$s are aggregated." + "\nFor the reinsurance case, the switch logic is identical to the one described above, except that it uses the gross Technical Margins multiplied by the weights coming from the Reinsurance Coverage (RC) Parameter (see [Data Node Parameters](../DataModel/DataStructure#data-node-parameters)). In case a GRIC ($r$) has multiple GICs ($g$), then these weighted $TM$s are aggregated.", + "\n", + "\n$$", + "\n\\text{Weighted TM}(\\text{r}) = \\sum_{g~\\in~\\text{underlying GICs}} \\text{RC}_{g,r} \\text{TM}(g)", + "\n$$", + "\n", + "\nA Loss Recovery Component (LoReCo) for GRIC $r$ is going to be opened in case the $\\text{Weighted TM}(r)$ would be allocated to Loss Component following the above mentioned switch logic. The amount allocated to the Reinsurance CSM or LoReCo follows the computed Technical Margin computed for GRIC r as described in [Technical Margin](#technical-margin)." ], "metadata": {}, "execution_count": 0, From c502a65f30855a2908ec56631221a203c37c3fd3 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Mon, 20 Mar 2023 15:04:30 +0100 Subject: [PATCH 10/16] Reverting the changes and renaming the nominals --- .../DataImport.ipynb | 6 +- ...csv => NominalCashflows_CH_2020_12_BE.csv} | 0 ...v => NominalCashflows_CH_2020_12_LR70.csv} | 0 ...v => NominalCashflows_CH_2020_12_LR80.csv} | 0 ifrs17/Constants/Consts.ipynb | 2 +- ifrs17/Report/ReportMutableScopes.ipynb | 12 - ifrs17/Report/ReportScopes.ipynb | 400 ------------------ 7 files changed, 4 insertions(+), 416 deletions(-) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{NominalCashflows_CH_2020_12_BE_1Year2.csv => NominalCashflows_CH_2020_12_BE.csv} (100%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{NominalCashflows_CH_2020_12_LR70_1Year.csv => NominalCashflows_CH_2020_12_LR70.csv} (100%) rename ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/{NominalCashflows_CH_2020_12_LR80_1Year2.csv => NominalCashflows_CH_2020_12_LR80.csv} (100%) diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index e7fad06e..24518875 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -146,7 +146,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE_1Year2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_BE.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -182,7 +182,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR70_1Year.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR70.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -209,7 +209,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR80_1Year2.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" + "await Import.FromFile(\"NominalCashflows_CH_2020_12_LR80.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).WithActivityLog().ExecuteAsync()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE_1Year2.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_BE.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70_1Year.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR70.csv diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv similarity index 100% rename from ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80_1Year2.csv rename to ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/NominalCashflows_CH_2020_12_LR80.csv diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 575a7a85..58bb9570 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -37,7 +37,7 @@ { "cell_type": "code", "source": [ - "public const double Precision = 1E-2;" + "public const double Precision = 1E-5;" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Report/ReportMutableScopes.ipynb b/ifrs17/Report/ReportMutableScopes.ipynb index 521a574e..e7ba24c3 100644 --- a/ifrs17/Report/ReportMutableScopes.ipynb +++ b/ifrs17/Report/ReportMutableScopes.ipynb @@ -105,7 +105,6 @@ "\n .WithApplicability(x => x.Identity == nameof(ActLicReport))", "\n .WithApplicability(x => x.Identity == nameof(LicReport))", "\n .WithApplicability(x => x.Identity == nameof(FpReport))", - "\n .WithApplicability(x => x.Identity == \"FpReport2\")", "\n );", "\n", "\n // Basic mutable properties", @@ -294,16 +293,6 @@ "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformance.Filter(dataFilter);", "\n}", "\n", - "\npublic interface FpReport2 : IIfrs17Report {", - "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", - "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\", \"EstimateType\"};", - "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\",\"LiabilityType\" };", - "\n int IIfrs17Report.headerColumnWidthValue => 500;", - "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", - "\n ? GetScopes(GetIdentities()).Aggregate().FinancialPerformance", - "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformance.Filter(dataFilter);", - "\n}", - "\n", "\npublic interface Data : IMutableScope<((int year, int month) period, string reportingNode, string scenario, CurrencyType currencyType, ", "\n string reportType, (string filterName, object filterValue)[] dataFilter)> ", "\n{", @@ -376,7 +365,6 @@ "\n public IIfrs17Report ActuarialLic => reportUniverse.GetScope(nameof(ActLicReport));", "\n public IIfrs17Report Lic => reportUniverse.GetScope(nameof(LicReport));", "\n public IIfrs17Report FinancialPerformance => reportUniverse.GetScope(nameof(FpReport));", - "\n public IIfrs17Report FinancialPerformance2 => reportUniverse.GetScope(\"FpReport2\");", "\n}" ], "metadata": {}, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index e2bfc09a..e32450af 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -730,146 +730,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "//Best Estimate", - "\npublic interface BestEstimateChangeInEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.LiabilityType == LiabilityTypes.LIC)", - "\n );", - "\n ", - "\n private IDataCube BestEstimateNonFinancialNonNewBusiness => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!YCU\"));", - "\n protected IDataCube BestEstimate => BestEstimateNonFinancialNonNewBusiness + GetScope(Identity).BestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private IDataCube BestEstimateNonFinancialNonNewBusinessNonCf => BestEstimateNonFinancialNonNewBusiness.Filter((\"VariableType\", \"!CF\"));", - "\n private IDataCube BestEstimateCf => BestEstimateNonFinancialNonNewBusiness.Filter((\"VariableType\", \"CF\"));", - "\n", - "\n // Best Estimate Premiums", - "\n private (string vt, string avt) premiumsVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GIR3\", \"A15\"),", - "\n { IsReinsurance: true } => (\"RISE4\", \"A40\")", - "\n };", - "\n ", - "\n // Change in Best Estimate", - "\n private (string vt, string avt) nonFinancialNonCfVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE7\", \"A23\"),", - "\n { IsReinsurance: true } => (\"RIR5\", \"A45\")", - "\n };", - "\n ", - "\n // Best Estimate Claims", - "\n private (string vt, string avt) claimsVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GIR1\", \"A1\"),", - "\n { IsReinsurance: true } => (\"RIR1\", \"A26\")", - "\n };", - "\n ", - "\n // Best Estimate Expenses", - "\n private string expensesVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => \"GIR2\",", - "\n { IsReinsurance: true } => \"RIR2\"", - "\n };", - "\n", - "\n ", - "\n private IDataCube AttributableMaintenanceExpenses => -1 * BestEstimateCf", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEM))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType });", - "\n ", - "\n private IDataCube AttributableMaintenanceCommissions => -1 * BestEstimateCf", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACM))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType});", - "\n ", - "\n private IDataCube NotCdrClaims => -1 * BestEstimateCf", - "\n .Filter((\"AmountType\", \"!CDR\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.NIC))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt });", - "\n ", - "\n private IDataCube Cdr => -1 * BestEstimateCf", - "\n .Filter((\"AmountType\", AmountTypes.CDR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt });", - "\n ", - "\n IDataCube Premiums => -1 * BestEstimateCf", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumsVariableType.vt});", - "\n ", - "\n IDataCube ChangesInBestEstimate => -1 * BestEstimateNonFinancialNonNewBusinessNonCf", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialNonCfVariableType.vt });", - "\n ", - "\n IDataCube Claims => NotCdrClaims + Cdr;", - "\n ", - "\n IDataCube Expenses => AttributableMaintenanceExpenses + AttributableMaintenanceCommissions;", - "\n ", - "\n IDataCube AcquisitionExpensesAndCommissions => Enumerable.Empty().ToDataCube();", - "\n ", - "\n IDataCube BestEstimateNonFinancial => Enumerable.Empty().ToDataCube();", - "\n}", - "\n", - "\npublic interface BestEstimateChangeInEstimateLic : BestEstimateChangeInEstimate", - "\n{", - "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE3\", \"A14\"),", - "\n { IsReinsurance: true } => (\"RISE3\", \"A41\")", - "\n };", - "\n IDataCube BestEstimateChangeInEstimate.BestEstimateNonFinancial => -1 * BestEstimate.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt });", - "\n ", - "\n IDataCube BestEstimateChangeInEstimate.ChangesInBestEstimate => Enumerable.Empty().ToDataCube();", - "\n IDataCube BestEstimateChangeInEstimate.Claims => Enumerable.Empty().ToDataCube();", - "\n IDataCube BestEstimateChangeInEstimate.Expenses => Enumerable.Empty().ToDataCube();", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//RiskAdjustment", - "\npublic interface RiskAdjustmentChangeInEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.LiabilityType == LiabilityTypes.LIC)", - "\n );", - "\n private IDataCube RiskAdjustmentNonFinancialNonNewBusiness => GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!YCU\"));", - "\n protected IDataCube RiskAdjustment => RiskAdjustmentNonFinancialNonNewBusiness + GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE7\", \"A24\"),", - "\n { IsReinsurance: true } => (\"RIR5\", \"A46\")", - "\n };", - "\n ", - "\n private (string vt, string avt) cfVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GIR5\", \"A7\"),", - "\n { IsReinsurance: true } => (\"RIR3\", \"A31\")", - "\n };", - "\n ", - "\n IDataCube RiskAdjustmentNonFinancialNonCf => -1 * RiskAdjustmentNonFinancialNonNewBusiness", - "\n .Filter((\"VariableType\", \"!CF\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt});", - "\n ", - "\n IDataCube RiskAdjustmentCf => -1 * RiskAdjustment", - "\n .Filter((\"VariableType\", \"CF\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = cfVariableType.vt });", - "\n ", - "\n IDataCube RiskAdjustmentNonFinancial => Enumerable.Empty().ToDataCube();", - "\n}", - "\n", - "\npublic interface RiskAdjustmentChangeInEstimateLic : RiskAdjustmentChangeInEstimate", - "\n{", - "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE3\", \"A14\"),", - "\n { IsReinsurance: true } => (\"RISE3\", \"A41\")", - "\n };", - "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentNonFinancial => -1 * RiskAdjustment.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt });", - "\n ", - "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentNonFinancialNonCf => Enumerable.Empty().ToDataCube();", - "\n IDataCube RiskAdjustmentChangeInEstimate.RiskAdjustmentCf => Enumerable.Empty().ToDataCube();", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -933,48 +793,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface CsmChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube { ", - "\n private IDataCube TechnicalMarginNonFinancialNonNewBusiness => GetScope(Identity).LrcTechnicalMargin.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"),(\"VariableType\", \"!IA\"),(\"VariableType\", \"!YCU\"),(\"VariableType\", \"!CRU\"),(\"VariableType\", \"!AM\"),(\"VariableType\", \"!EA\"));", - "\n", - "\n ", - "\n private IDataCube Csm => GetScope(Identity).Csm.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Csm.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private (string vt, string avt) amortizationVariableType => Identity.Id switch {", - "\n { IsReinsurance: false} => (\"GIR6\", \"A8\"),", - "\n { IsReinsurance: true } => (\"RIR4\", \"A32\")", - "\n };", - "\n ", - "\n private (string vt, string avt) nonFinancialVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE7\", \"A25\"),", - "\n { IsReinsurance: true } => (\"RIR5\", \"A47\")", - "\n };", - "\n ", - "\n private (string vt, string avt) financialVariableType => Identity.Id switch {", - "\n { IsReinsurance: false} => (\"IFIE1\", \"A17\"),", - "\n { IsReinsurance: true } => (\"IFIE2\", \"A36\")", - "\n };", - "\n ", - "\n IDataCube Amortization => -1 * Csm.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = amortizationVariableType.vt});", - "\n ", - "\n IDataCube NonFinancialChanges => TechnicalMarginNonFinancialNonNewBusiness", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = nonFinancialVariableType.vt});", - "\n ", - "\n IDataCube FinancialChanges => -1 * (Csm.Filter((\"VariableType\", AocTypes.IA)) +", - "\n Csm.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n Csm.Filter((\"VariableType\", AocTypes.CRU)))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = financialVariableType.vt });", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1024,24 +842,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface LcChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n ", - "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n IDataCube NonFinancialChanges => -1 * Lc", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GISE6\" });", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1091,28 +891,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface LorecoChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n ", - "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n IDataCube Amortization => -1 * Loreco.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"RISE7\" });", - "\n ", - "\n IDataCube NewBusiness => -1 * Loreco.Filter((\"VariableType\", AocTypes.BOP)).SelectToDataCube(v => v with { VariableType = \"RISE5\" });", - "\n ", - "\n IDataCube NonFinancialChanges => -1 * Loreco", - "\n .Filter((\"VariableType\", \"!BOP\"), (\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"RISE6\" });", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1180,65 +958,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface IncurredActuals2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube WrittenAndAccruals => GetScope(Identity).Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"));", - "\n ", - "\n protected IDataCube Written => WrittenAndAccruals.Filter((nameof(EstimateType), EstimateTypes.A));", - "\n ", - "\n private string premiumVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => \"GIR3\",", - "\n { IsReinsurance: true } => \"RISE4\"", - "\n };", - "\n", - "\n ", - "\n private (string vt, string avt) claimsVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GISE1\", \"A9\"),", - "\n { IsReinsurance: true } => (\"RISE1\", \"A39\")", - "\n };", - "\n ", - "\n private string expensesVariableType => Identity.Id switch {", - "\n { IsReinsurance: false } => \"GISE2\",", - "\n { IsReinsurance: true } => \"RISE2\"", - "\n };", - "\n", - "\n ", - "\n private IDataCube AttributableMaintenanceExpenses => Written", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEM))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType, });", - "\n ", - "\n private IDataCube AttributableMaintenanceCommissions => Written", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACM))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = expensesVariableType });", - "\n ", - "\n private IDataCube PremiumsWo => WrittenAndAccruals", - "\n .Filter((\"VariableType\",AocTypes.WO))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumVariableType, });", - "\n ", - "\n private IDataCube PremiumsCf => Written", - "\n .Filter((\"VariableType\",AocTypes.CF))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumVariableType, });", - "\n ", - "\n IDataCube Claims => Written", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.NIC || x.SystemName == AmountTypes.ULE))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = claimsVariableType.vt, });", - "\n ", - "\n IDataCube Premiums => PremiumsCf - PremiumsWo;", - "\n ", - "\n IDataCube Expenses => AttributableMaintenanceExpenses + AttributableMaintenanceCommissions;", - "\n ", - "\n IDataCube AcquisitionExpensesAndCommissions => Enumerable.Empty().ToDataCube();", - "\n", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1274,23 +993,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface IncurredDeferrals2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube Deferrals => GetScope(Identity).Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\"));", - "\n ", - "\n private IDataCube Amortization => Deferrals", - "\n .Filter((\"VariableType\", AocTypes.AM));", - "\n ", - "\n IDataCube AmortizationToIr => (-1 * Amortization).SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GIR4\" });", - "\n IDataCube AmortizationToIse => Amortization.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"GISE4\" });", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1326,84 +1028,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface ExperienceAdjustmentOnPremium2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube WrittenPremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", - "\n ", - "\n private (string vt, string avt) variableType => Identity.Id switch {", - "\n { IsReinsurance: false } => (\"GIR3\", \"A15\"),", - "\n { IsReinsurance: true } => (\"RISE4\", \"A40\")", - "\n };", - "\n ", - "\n IDataCube ExperienceAdjustmentOnPremium => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = variableType.vt});", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//FcfChangeInEstimate", - "\npublic interface FcfChangeInEstimate2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube BestEstimate => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).BestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n private IDataCube RiskAdjustment => GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).RiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube CurrentBestEstimate => GetScope(Identity).CurrentBestEstimate.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).CurrentBestEstimate.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n private IDataCube CurrentRiskAdjustment => GetScope(Identity).CurrentRiskAdjustment.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).CurrentRiskAdjustment.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n // Financial Fp", - "\n private string variableTypeFpFinancial => Identity.Id switch {", - "\n { IsReinsurance: false } => \"IFIE1\",", - "\n { IsReinsurance: true } => \"IFIE2\",", - "\n };", - "\n ", - "\n // OCI ", - "\n private string variableTypeOciFinancial => Identity.Id switch {", - "\n { LiabilityType: LiabilityTypes.LRC } => \"OCI1\",", - "\n { LiabilityType: LiabilityTypes.LIC } => \"OCI2\",", - "\n };", - "\n", - "\n ", - "\n private IDataCube FinancialBestEstimate => (BestEstimate.Filter((\"VariableType\", AocTypes.IA)) + ", - "\n BestEstimate.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n BestEstimate.Filter((\"VariableType\", AocTypes.CRU)))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial,});", - "\n ", - "\n private IDataCube FinancialRiskAdjustment => (RiskAdjustment.Filter((\"VariableType\", AocTypes.IA)) + ", - "\n RiskAdjustment.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n RiskAdjustment.Filter((\"VariableType\", AocTypes.CRU)))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial,});", - "\n ", - "\n private IDataCube OciBestEstimate => (BestEstimate - CurrentBestEstimate)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial,});", - "\n ", - "\n private IDataCube OciRiskAdjustment => (RiskAdjustment - CurrentRiskAdjustment)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial,});", - "\n ", - "\n IDataCube FpFinancial => -1 * (FinancialBestEstimate + FinancialRiskAdjustment);", - "\n", - "\n IDataCube OciFinancial => OciBestEstimate + OciRiskAdjustment;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1442,30 +1066,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface FinancialPerformance2: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n ", - "\n private IDataCube BestEstimateChangeInEstimate => GetScope(Identity);", - "\n private IDataCube RiskAdjustmentChangeInEstimate => GetScope(Identity);", - "\n private IDataCube CsmChangeInEstimate => GetScope(Identity);", - "\n private IDataCube LcChangeInEstimate => GetScope(Identity);", - "\n private IDataCube LorecoChangeInEstimate => GetScope(Identity);", - "\n private IDataCube IncurredActuals => GetScope(Identity);", - "\n private IDataCube IncurredDeferrals => Identity.Id.IsReinsurance ", - "\n ? Enumerable.Empty().ToDataCube() ", - "\n : GetScope(Identity);", - "\n private IDataCube ExperienceAdjustmentOnPremium => GetScope(Identity);", - "\n private IDataCube FcfChangeInEstimate => GetScope(Identity);", - "\n ", - "\n IDataCube FinancialPerformance => BestEstimateChangeInEstimate + RiskAdjustmentChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium + FcfChangeInEstimate;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ From c12e122aa58ff12dc8d39d5e2a70ee9fbeb81b48 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Mon, 20 Mar 2023 15:12:28 +0100 Subject: [PATCH 11/16] Reseting the change --- ifrs17-template/Constants/CalculationEngine.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index ab6ecbad..d72611fb 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -19,7 +19,7 @@ { "cell_type": "code", "source": [ - "var projectName = \"ifrs-17-ce-8-3-2022\";", + "var projectName = \"ifrs17\";", "\nvar environmentName = \"v1.1.1\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" From a55b4ff4046460c21d6e54c312c29d126bf18ea9 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Thu, 23 Mar 2023 15:39:26 +0100 Subject: [PATCH 12/16] separating the practical case tests --- .../DataImport.ipynb | 15 +- .../CompareReinsuranceContracts/Reports.ipynb | 39 +- .../CsmSwitchDataImport.ipynb | 50 +-- .../CsmSwitchReports.ipynb | 9 + ifrs17-template/README.md | 9 +- ...pynb => PracticalCase-CSMSwitchTest.ipynb} | 2 +- ...PracticalCase-CompareReinsuranceTest.ipynb | 355 ++++++++++++++++++ ifrs17-template/Test/Tests.ipynb | 22 +- 8 files changed, 421 insertions(+), 80 deletions(-) rename ifrs17-template/Test/{PracticalCasesTest.ipynb => PracticalCase-CSMSwitchTest.ipynb} (98%) create mode 100644 ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb index 24518875..71c126c7 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/DataImport.ipynb @@ -254,7 +254,7 @@ { "cell_type": "markdown", "source": [ - "# Reset Workspace" + "# Initialize Workspace" ], "metadata": {}, "execution_count": 0, @@ -263,17 +263,8 @@ { "cell_type": "code", "source": [ - "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "Workspace.InitializeFrom(DataSource);", - "\nifrs17.Reset(Workspace)" + "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", + "\nWorkspace.InitializeFrom(DataSource);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index d0174b00..40f41949 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -34,27 +34,15 @@ "\n", "\n## Modelling Cash-flow inputs", "\n", - "\nA simple Group of Insurance Contract with New Business and End Of Period runs is modeled over one year period with an expected Loss Ratio (LR) of 60%. We modeled the cashflows evenly distributed over time for both premium (1000 USD total), Claims, and Expenses (estimated to be 30% of Premiums).", - "\n", - "\nA Reinsurance Contract covers the above mentioned Insurance Contract. A Quota Share of 30% is considered and a Reinsurance Commission of 35% on the Reinsurance Premiums is modeled. ", - "\n", - "\nActual values entered matching the expected values. ", + "\nA simple Group of Insurance Contract with New Business and End Of Period runs is modeled over one year period with an expected Loss Ratio (LR) of 60%. We modeled the cashflows evenly distributed over time for both premium (1000 USD total), Claims, and Expenses (estimated to be 30% of Premiums). A Reinsurance Contract covers the above mentioned Insurance Contract. A Quota Share of 30% is considered and a Reinsurance Commission of 35% on the Reinsurance Premiums is modeled. Actual values entered matching the expected values. ", "\n", "\nAll these parameters are summarized in the following tables: ", "\n

", - "\n| Insurance Contract | |", - "\n|-----------------------|------|", - "\n| Total Premium (USD) | 1000 |", - "\n| Internal Expense | 30% |", - "\n
", - "\n", - "\n| Reinsurance Contract | |", - "\n|-----------------------|------|", - "\n| Quota Share | 30% |", - "\n| Commission | 35% |", - "\n", - "\n", - "\n" + "\n| Insurance Contract | ||| Reinsurance Contract | |", + "\n|-----------------------|------|-|-----------------------|------|", + "\n| Total Premium (USD) | 1000 ||| Cession Share | 30% |", + "\n| Internal Expense | 30% ||| Commission | 35% |", + "\n
" ], "metadata": {}, "execution_count": 0, @@ -67,10 +55,11 @@ "\n", "\nThe inputs descibed in [Modelling Cash-flow inputs](#modelling-cash-flow-inputs) defines the so called \"Best Estimate\" Scenario. This corresponds to what is expected to happen in reality. A scenario analysis is required by IFRS 17 Standards and it can be useful in many cases to analyse risks and take decisions on the future. For example one can easily study how the profit of the Insurance and Reinsuance Contracts modelled with the above mentioned parameter would perform under different values of Loss Ratio. ", "\n

", - "\n", + "\n
", "\n", "\n", "\n


", + "\n
", "\nIn the best estimate scenario (Loss Ratio 60%) we expect the net result of the Insurance and Reinsurance Group Contracts to be profitable, but the costs of having a Reinsurance Contract lower the total profit of the Insurance Group of Contract stand alone. At Loss Ratio of 70% the Group of Insurance Contracts is very close to zero margin and raising futher the Loss Ratio to 80% a Loss making scenario is obtained, where the effect of the Reinsurance contract clearly mitigates the losses as shown by the Net view. ", "\n

", "\nIn the current use case, we analyse the impact of the Loss Ratio on the relevant figures computed under IFRS 17 using our standard solution implementation.", @@ -104,8 +93,7 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"DataImport\"", - "\nWorkspace.InitializeFrom(DataSource);" + "#!eval-notebook \"DataImport\"" ], "metadata": {}, "execution_count": 0, @@ -469,6 +457,15 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb index b6e114ba..74e6371b 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb @@ -119,6 +119,16 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var workspace = Workspace.CreateNew();", + "\nworkspace.InitializeFrom(DataSource);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -133,7 +143,7 @@ "source": [ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -146,7 +156,7 @@ "source": [ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.Actual)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -159,7 +169,7 @@ "source": [ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -172,7 +182,7 @@ "source": [ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.Actual)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -194,7 +204,7 @@ "source": [ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.SimpleValue)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -207,7 +217,7 @@ "source": [ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.SimpleValue)", - "\n .WithTarget(DataSource)", + "\n .WithTarget(workspace)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -215,34 +225,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "# Reset Workspace" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "Workspace.InitializeFrom(DataSource);", - "\nifrs17.Reset(Workspace)" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb index 70f8e7b3..f2d2627d 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb @@ -94,6 +94,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "ifrs17 = new Ifrs17(workspace, Scopes, Report);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17-template/README.md b/ifrs17-template/README.md index e6033e6a..34d33c99 100644 --- a/ifrs17-template/README.md +++ b/ifrs17-template/README.md @@ -63,7 +63,7 @@ For more information on our IFRS 17 initiative check out our [IFRS 17 page](http Interact with our IFRS 17 practical use cases. Analyze your data and create new use cases. -
+
@@ -78,6 +78,13 @@ Compare use-cases of [actuals](./PracticalUseCases/ActualsOutsideThePeriod/Actua Compare the effects of modelling the [CSM - LC switch](./PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports) with a single vs multiple switch logic. +
+
+ +### Scenario analysis for re-insured contracts + +Compare Net results under IFRS 17 obtained for different [loss ratio](./PracticalUseCases/CompareReinsuranceContracts/Reports). +
diff --git a/ifrs17-template/Test/PracticalCasesTest.ipynb b/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb similarity index 98% rename from ifrs17-template/Test/PracticalCasesTest.ipynb rename to ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb index 5b4eab9d..1dd309db 100644 --- a/ifrs17-template/Test/PracticalCasesTest.ipynb +++ b/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb @@ -37,7 +37,7 @@ { "cell_type": "code", "source": [ - "#!import \"../PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports\"" + "#!eval-notebook \"../PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports\"" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb new file mode 100644 index 00000000..d0d8153b --- /dev/null +++ b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb @@ -0,0 +1,355 @@ +{ + "metadata": { + "authors": [], + "id": "cZ9mwrWya0Ox8CXAyFRn2Q", + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Test Practical Cases

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Compare Reinsurance Contracts" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"../PracticalUseCases/CompareReinsuranceContracts/Reports\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "using FluentAssertions;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var grossBusinessReinsured = \"RP1.1\";", + "\nvar reinsuranceContract = \"RPR1.1\";", + "\nvar groupsOfContarts = new[] {grossBusinessReinsured, reinsuranceContract};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var bops = pv.GetDataCube().Where(x => x.Novelty==\"N\" && x.VariableType==\"BOP\");" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==grossBusinessReinsured && x.Scenario==null).Sum(x=>x.Value).Should().BeApproximately(-100.00828, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==grossBusinessReinsured && x.Scenario==\"LR70\").Sum(x=>x.Value).Should().BeApproximately(-0.11643, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==grossBusinessReinsured && x.Scenario==\"LR80\").Sum(x=>x.Value).Should().BeApproximately(99.77541, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==grossBusinessReinsured && x.Scenario==\"ELR60A70\").Sum(x=>x.Value).Should().BeApproximately(-100.00828, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==grossBusinessReinsured && x.Scenario==\"ELR60A80\").Sum(x=>x.Value).Should().BeApproximately(-100.00828, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==reinsuranceContract && x.Scenario==null).Sum(x=>x.Value).Should().BeApproximately(15.15453, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==reinsuranceContract && x.Scenario==\"LR70\").Sum(x=>x.Value).Should().BeApproximately(-14.78996, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==reinsuranceContract && x.Scenario==\"LR80\").Sum(x=>x.Value).Should().BeApproximately(-44.73446, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==reinsuranceContract && x.Scenario==\"ELR60A70\").Sum(x=>x.Value).Should().BeApproximately(15.15453, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "bops.Where(x => x.GroupOfContract==reinsuranceContract && x.Scenario==\"ELR60A80\").Sum(x=>x.Value).Should().BeApproximately(15.15453, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Experience Adjustments" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var eAs = experienceAdjustments.GetDataCube().Where(x => groupsOfContarts.Contains(x.GroupOfContract));" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "eAs.Where(x => x.Scenario == null).Sum(x => x.Value).Should().BeApproximately(0, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "eAs.Where(x => x.Scenario == \"LR70\").Sum(x => x.Value).Should().BeApproximately(0, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "eAs.Where(x => x.Scenario == \"LR80\").Sum(x => x.Value).Should().BeApproximately(0, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "eAs.Where(x => x.Scenario == \"ELR60A70\").Sum(x => x.Value).Should().BeApproximately(-70, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "eAs.Where(x => x.Scenario == \"ELR60A80\").Sum(x => x.Value).Should().BeApproximately(-140, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Csm/Loss Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => groupsOfContarts.Contains(x.GroupOfContract) && x.VariableType == \"AM\" && Math.Abs(x.Value) > Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "csmAM.Where(x => x.Scenario == null).Sum(x => x.Value).Should().BeApproximately(-84.86029, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "csmAM.Where(x => x.Scenario == \"LR70\").Sum(x => x.Value).Should().BeApproximately(-14.83859, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "csmAM.Where(x => x.Scenario == \"LR80\").Sum(x => x.Value).Should().BeApproximately(-55.18393, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance 2" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl = pnl.Where(x => groupsOfContarts.Contains(x.GroupOfContract));" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl.Where(x => x.Scenario == \"Best Estimate\").Sum(x => x.Value).Should().BeApproximately(84.99882, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl.Where(x => x.Scenario == \"LR70\").Sum(x => x.Value).Should().BeApproximately(15.00020, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl.Where(x => x.Scenario == \"LR80\").Sum(x => x.Value).Should().BeApproximately(-55.00076, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl.Where(x => x.Scenario == \"ELR60A70\").Sum(x => x.Value).Should().BeApproximately(14.99882, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pnl.Where(x => x.Scenario == \"ELR60A80\").Sum(x => x.Value).Should().BeApproximately(-55.00117, Precision);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb index c70f9674..1e2ecdd6 100644 --- a/ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -71,15 +71,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"ScenarioParametersImportTest\"" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -128,7 +119,16 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"PracticalCasesTest\"" + "#!eval-notebook \"PracticalCase-CSMSwitchTest\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"PracticalCase-CompareReinsuranceTest\"" ], "metadata": {}, "execution_count": 0, @@ -144,4 +144,4 @@ "outputs": [] } ] -} +} \ No newline at end of file From 5a5e923d2f1118b1f60d01e06a2bde4c413d8352 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Thu, 23 Mar 2023 16:58:58 +0100 Subject: [PATCH 13/16] Reverting the merge mistakes and updating the ScenarioParametersImportTest --- .../Test/ScenarioParametersImportTest.ipynb | 6 +++--- ifrs17-template/Test/Tests.ipynb | 11 ++++++++++- ifrs17/Constants/Consts.ipynb | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ifrs17-template/Test/ScenarioParametersImportTest.ipynb b/ifrs17-template/Test/ScenarioParametersImportTest.ipynb index a65ecdd9..5dd27700 100644 --- a/ifrs17-template/Test/ScenarioParametersImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioParametersImportTest.ipynb @@ -55,7 +55,7 @@ { "cell_type": "code", "source": [ - "var EnableScenarioBackup = EnableScenario;" + "var EnableScenarioBackup = Scenarios.EnableScenario;" ], "metadata": {}, "execution_count": 0, @@ -64,7 +64,7 @@ { "cell_type": "code", "source": [ - "EnableScenario = true;" + "Scenarios.EnableScenario = true;" ], "metadata": {}, "execution_count": 0, @@ -484,7 +484,7 @@ { "cell_type": "code", "source": [ - "EnableScenario = EnableScenarioBackup;" + "Scenarios.EnableScenario = EnableScenarioBackup;" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb index 1e2ecdd6..c6c44706 100644 --- a/ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -29,7 +29,7 @@ "cell_type": "markdown", "source": [ "Comprehensive collection of tests executed on top of the Systemorph use cases (initialization).", - "\n
Execute this Notebook using at least 14Gb RAM." + "\n
Execute this Notebook using at least 20Gb RAM." ], "metadata": {}, "execution_count": 0, @@ -71,6 +71,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"ScenarioParametersImportTest\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index a274cea0..c4b74a60 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -344,7 +344,7 @@ "\n public const string AEM = nameof(AEM); // Attributable Expenses Maintenance", "\n public const string AC = nameof(AC); // Attributable Commissions", "\n public const string AE = nameof(AE); // Attributable Expenses", - "\n public const string ULE = nameof(ULE); ", + "\n public const string ULE = nameof(ULE); // Unallocated Loss Adjustment Expenses", "\n}" ], "metadata": {}, From 3bd74f2466ea7687d05b75554135b560525f5455 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Thu, 23 Mar 2023 17:19:56 +0100 Subject: [PATCH 14/16] Reseting the disposable workspace back to the DataSource. --- .../CsmSwitchDataImport.ipynb | 41 +++++++++++-------- .../CsmSwitchReports.ipynb | 2 +- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb index 74e6371b..69bbb85e 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb @@ -119,16 +119,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "var workspace = Workspace.CreateNew();", - "\nworkspace.InitializeFrom(DataSource);" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -143,7 +133,7 @@ "source": [ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -156,7 +146,7 @@ "source": [ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.Actual)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -169,7 +159,7 @@ "source": [ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.Cashflow)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -182,7 +172,7 @@ "source": [ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.Actual)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -204,7 +194,7 @@ "source": [ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2020_12.csv\")", "\n .WithFormat(ImportFormats.SimpleValue)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -217,7 +207,7 @@ "source": [ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2021_3.csv\")", "\n .WithFormat(ImportFormats.SimpleValue)", - "\n .WithTarget(workspace)", + "\n .WithTarget(DataSource)", "\n .WithActivityLog()", "\n .ExecuteAsync()" ], @@ -225,6 +215,25 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Initialize Workspace" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", + "\nWorkspace.InitializeFrom(DataSource);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb index f2d2627d..c143fe21 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb @@ -97,7 +97,7 @@ { "cell_type": "code", "source": [ - "ifrs17 = new Ifrs17(workspace, Scopes, Report);" + "ifrs17 = new Ifrs17(Workspace, Scopes, Report);" ], "metadata": {}, "execution_count": 0, From da56cab8f263b201deff25a5a980be61d365ebfe Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 23 Mar 2023 23:55:31 +0100 Subject: [PATCH 15/16] small doc update --- ifrs17/DataModel/DataStructure.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 40c7491b..f961dbc9 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1062,7 +1062,7 @@ "\n", "\nThe Credit Default Rate values must be entered with monthly granularity, i.e. every value corresponds to the default rate for a certain month. The first month entered in column Values0 always corresponds to January of 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", - "\nThe latest Credit Default Rate 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." + "\nThe latest Credit Default Rate 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. When the current period Credit Default Rate differs from previous period value, the analysis of change for the Credit Default Rate amount type computes the contribution of such update as an additional step (Credit Risk Update)." ], "metadata": {}, "execution_count": 0, @@ -1114,7 +1114,7 @@ "\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", - "\nDuring calculation, the Yield Curve values are retrieved from the DataSource. The Yield Curve Name defined for each group-of-contracts will be used to match the Name of the Yield Curve to be considered. This occurs only for the curve that is used in the computation of the Contractual Service Margin (locked-in for BBA valuation approach, current otherwise). The calculation engine allows the update of the locked-in curve during the entire inception year of the group-of-contracts. When the locked-in Yield Curve is used, the latest Yield Curve available in the system with Year earlier or equal to the inception Year of the group-of-contracts will be used. When the current Yield Curve is used in the calculation, the latest Yield Curve available in the system with Year and Month earlier or equal to Year and Month of the closing period will be used." + "\nDuring calculation, the Yield Curve values are retrieved from the DataSource. The Yield Curve Name defined for each group-of-contracts will be used to match the Name of the Yield Curve to be considered. This occurs only for the curve that is used in the computation of the Contractual Service Margin (locked-in for BBA valuation approach, current otherwise). The calculation engine allows the update of the locked-in curve during the entire inception year of the group-of-contracts. When the locked-in Yield Curve is used, the latest Yield Curve available in the system with Year earlier or equal to the inception Year of the group-of-contracts will be used. When the current Yield Curve is used in the calculation, the latest Yield Curve available in the system with Year and Month earlier or equal to Year and Month of the closing period will be used. When the current period Yield Curve differs from previous period value, the analysis of change computes the contribution of such update as an additional step (Yield Curve Update)." ], "metadata": {}, "execution_count": 0, From 1fc472fe6db427dd8535aad5943869e8d72ae89d Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 24 Mar 2023 09:31:52 +0100 Subject: [PATCH 16/16] Typo and update of Ifrs17 creation --- .../CompareReinsuranceContracts/Reports.ipynb | 2 +- .../SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb | 2 +- .../Test/PracticalCase-CompareReinsuranceTest.ipynb | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb index 40f41949..db07a7b7 100644 --- a/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb +++ b/ifrs17-template/PracticalUseCases/CompareReinsuranceContracts/Reports.ipynb @@ -102,7 +102,7 @@ { "cell_type": "code", "source": [ - "ifrs17 = new Ifrs17(Workspace, Scopes, Report);" + "ifrs17 = new Ifrs17(Workspace, Scopes, Report, Export);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb index c143fe21..976270bc 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb @@ -97,7 +97,7 @@ { "cell_type": "code", "source": [ - "ifrs17 = new Ifrs17(Workspace, Scopes, Report);" + "ifrs17 = new Ifrs17(Workspace, Scopes, Report, Export);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb index d0d8153b..779c4d80 100644 --- a/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb +++ b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb @@ -57,7 +57,7 @@ "source": [ "var grossBusinessReinsured = \"RP1.1\";", "\nvar reinsuranceContract = \"RPR1.1\";", - "\nvar groupsOfContarts = new[] {grossBusinessReinsured, reinsuranceContract};" + "\nvar groupsOfContracts = new[] {grossBusinessReinsured, reinsuranceContract};" ], "metadata": {}, "execution_count": 0, @@ -183,7 +183,7 @@ { "cell_type": "code", "source": [ - "var eAs = experienceAdjustments.GetDataCube().Where(x => groupsOfContarts.Contains(x.GroupOfContract));" + "var eAs = experienceAdjustments.GetDataCube().Where(x => groupsOfContracts.Contains(x.GroupOfContract));" ], "metadata": {}, "execution_count": 0, @@ -246,7 +246,7 @@ { "cell_type": "code", "source": [ - "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => groupsOfContarts.Contains(x.GroupOfContract) && x.VariableType == \"AM\" && Math.Abs(x.Value) > Precision);" + "var csmAM = allocatedTechnicalMargins.GetDataCube().Where(x => groupsOfContracts.Contains(x.GroupOfContract) && x.VariableType == \"AM\" && Math.Abs(x.Value) > Precision);" ], "metadata": {}, "execution_count": 0, @@ -282,7 +282,7 @@ { "cell_type": "markdown", "source": [ - "## Financial Performance 2" + "## Financial Performance" ], "metadata": {}, "execution_count": 0, @@ -291,7 +291,7 @@ { "cell_type": "code", "source": [ - "pnl = pnl.Where(x => groupsOfContarts.Contains(x.GroupOfContract));" + "pnl = pnl.Where(x => groupsOfContracts.Contains(x.GroupOfContract));" ], "metadata": {}, "execution_count": 0,