diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index 721e117b..944705fa 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -20,7 +20,7 @@ "cell_type": "code", "source": [ "var projectName = \"ifrs17\";", - "\nvar environmentName = \"v1.3.0\";", + "\nvar environmentName = \"v1.3.1\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ], diff --git a/ifrs17-template/Export/MapTemplate.ipynb b/ifrs17-template/Export/MapTemplate.ipynb index 038a44e1..3eb3eeed 100644 --- a/ifrs17-template/Export/MapTemplate.ipynb +++ b/ifrs17-template/Export/MapTemplate.ipynb @@ -110,7 +110,7 @@ "source": [ "# Map Template: Data Node", "\n", - "\n[DataNodes](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node) defines the properties of [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#group-of-contracts)." + "\n[DataNodes](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node) defines the properties of [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#group-of-contracts)." ], "metadata": {}, "execution_count": 0, @@ -166,7 +166,7 @@ "source": [ "# Map Template: Data Node State", "\n", - "\n[Data Node State](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-state) defines whether the instance is active (used in import/output) or inactive (present in the DataSource but not used in input/output operations)." + "\n[Data Node State](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-state) defines whether the instance is active (used in import/output) or inactive (present in the DataSource but not used in input/output operations)." ], "metadata": {}, "execution_count": 0, @@ -252,7 +252,7 @@ "source": [ "# Map Template: Data Node Parameter", "\n", - "\n[Data Node Parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-parameters) are defined at the Group of Contract level and are used during the import calculation. " + "\n[Data Node Parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-parameters) are defined at the Group of Contract level and are used during the import calculation. " ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 85a30f1d..1ffddd9c 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -5,6 +5,7 @@ CL,Claims,,20,EndOfPeriod,,,,,,, NIC,Non Investment Component,CL,30,EndOfPeriod,,,,,,, ICO,Investment Component,CL,40,EndOfPeriod,,,,,,, CDR,Credit Default Risk,CL,50,EndOfPeriod,,,,,,, +CDRI,Initial Credit Default Risk,CDR,60,EndOfPeriod,,,,,,, CE,Claim Expenses,CL,200,EndOfPeriod,,,,,,, ALE,Allocated Loss Adjustment Expenses,CE,210,EndOfPeriod,,,,,,, ULE,Unallocated Loss Adjustment Expenses,CE,220,EndOfPeriod,,,,,,, diff --git a/ifrs17-template/Import/CloseImportTemplate.ipynb b/ifrs17-template/Import/CloseImportTemplate.ipynb index d6c33af3..c025e7fe 100644 --- a/ifrs17-template/Import/CloseImportTemplate.ipynb +++ b/ifrs17-template/Import/CloseImportTemplate.ipynb @@ -39,7 +39,7 @@ "source": [ "All imports are triggered via the Import command. Several options can be fluently appended to customize the import action:", "\n- FromFile() : accepts a string as input (eg. \"../Files/TransactionalData/Openings_CH_2020_12.csv\"). It corresponds the file to be imported complete with the path", - "\n- WithFormat() : accepts a string as input (eg. \"Cashflow\" or \"Actual\"). It is used to trigger the desired import logic for the current file. Full list of avalaible ImportFormats can be found [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Constants/Consts#import-formats)", + "\n- WithFormat() : accepts a string as input (eg. \"Cashflow\" or \"Actual\"). It is used to trigger the desired import logic for the current file. Full list of avalaible ImportFormats can be found [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Constants/Consts#import-formats)", "\n- WithFileStorage() : defined the drive from where the input files is retrieved. In this example we use the project file storage (new files have to be uploaded into the project), other options are SharePoint and OneDrive. ", "\n- WithTarget() : target drive where the results are stored. In this example we use our in-memory set up", "\n" @@ -89,9 +89,9 @@ "\nNew Data Nodes and Parameters are imported here.", "\n
To easily generate these files, please refer to the **Map Template** files exported [here](../Export/MapTemplate). Edit them at your wish and import them back into the solution through the following cells. ", "\n
For the **ImportFormat**, the following options are expected:", - "\n- ImportFormats.DataNode : [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#group-of-contracts)", - "\n- ImportFormats.DataNodeState : the [state of a data node](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-state) can be either active or inactive.", - "\n- ImportFormats.DataNodeParameter : parameters are described [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-parameters). For **Group of Insurance Contracts** a default [Premium Allocation factor](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Import/4ImportScope-TechnicalMargin#experience-adjustment-on-premium) of 1 is applied if the parameter is not imported.", + "\n- ImportFormats.DataNode : [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#group-of-contracts)", + "\n- ImportFormats.DataNodeState : the [state of a data node](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-state) can be either active or inactive.", + "\n- ImportFormats.DataNodeParameter : parameters are described [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-parameters). For **Group of Insurance Contracts** a default [Premium Allocation factor](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Import/4ImportScope-TechnicalMargin#experience-adjustment-on-premium) of 1 is applied if the parameter is not imported.", "\n" ], "metadata": {}, diff --git a/ifrs17-template/InputFormatDescription.ipynb b/ifrs17-template/InputFormatDescription.ipynb index ebab2279..e61afe41 100644 --- a/ifrs17-template/InputFormatDescription.ipynb +++ b/ifrs17-template/InputFormatDescription.ipynb @@ -38,17 +38,17 @@ "source": [ "A cash flow file is named **NominalCashflows** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Cashflow**.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month and Scenario for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#partitions) to which the data belongs.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month and Scenario for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#partitions) to which the data belongs.", "\n", "\nThe **Cashflow** section contains the cash flow data. Several pieces of information are required to characterize a cash flow correctly:", - "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#amount-type) : entered with its SystemName,", - "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#estimate-type) : entered with its SystemName,", - "\n- [AocType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#aoc-type) : entered with its SystemName,", - "\n- [Novelty](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#novelty) : entered with its SystemName,", + "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#amount-type) : entered with its SystemName,", + "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#estimate-type) : entered with its SystemName,", + "\n- [AocType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#aoc-type) : entered with its SystemName,", + "\n- [Novelty](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#novelty) : entered with its SystemName,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims.", "\n", - "\nAll valid combinations of AocType and Novelty can be found in [AocConfiguration](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#aoc-configuration) with DataType Optional or Mandatory.", + "\nAll valid combinations of AocType and Novelty can be found in [AocConfiguration](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#aoc-configuration) with DataType Optional or Mandatory.", "\n
The cash flow is entered in the columns named ValuesN where N goes from 0 to the length of cash flow. The Value0 corresponds to January of the Year entered in the **Main** section for every combination of AocType and Novelty. " ], "metadata": {}, @@ -73,13 +73,13 @@ "source": [ "An Actuals file is named **Actuals** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Actual**.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#partition) to which the data belong.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#partition) to which the data belong.", "\n", "\nThe **Actual** section contains the actuals data. Several pieces of information are required to to characterize an Actuals amount correctly:", - "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [AocType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#aoc-type) : entered with its SystemName,", - "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#amount-type) : entered with its SystemName,", - "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#estimate-type) : entered with its SystemName,", + "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [AocType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#aoc-type) : entered with its SystemName,", + "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#amount-type) : entered with its SystemName,", + "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#estimate-type) : entered with its SystemName,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims." ], "metadata": {}, @@ -104,12 +104,12 @@ "source": [ "An Openings file is named **Openings** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Opening**. In an AoC for one period, we only need one file with the year/month combination of the beginning of the period. Some GICs do not need any entries in Openings.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#partition) to which the data belong.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#partition) to which the data belong.", "\n", "\nThe **Opening** section contains values at opening of an analysis. Several pieces of information are required to to characterize an Opening amount correctly:", - "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#amount-type) : entered with its SystemName,", - "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#estimate-type) : entered with its SystemName,", + "\n- [DataNode](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [AmountType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#amount-type) : entered with its SystemName,", + "\n- [EstimateType](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#estimate-type) : entered with its SystemName,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims." ], "metadata": {}, diff --git a/ifrs17-template/Report/ParameterReports.ipynb b/ifrs17-template/Report/ParameterReports.ipynb index 9154351b..e2702fee 100644 --- a/ifrs17-template/Report/ParameterReports.ipynb +++ b/ifrs17-template/Report/ParameterReports.ipynb @@ -102,7 +102,7 @@ "# Retrieve data ", "\n", "\nThe parameters used for calculation of the provided period are here retrieved through queries.", - "\nThe queries and the data model of the reported objects can be foud in the [ParameterReportQueries](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ParameterReportsQueries#queries)" + "\nThe queries and the data model of the reported objects can be foud in the [ParameterReportQueries](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ParameterReportsQueries#queries)" ], "metadata": {}, "execution_count": 0, @@ -156,7 +156,7 @@ { "cell_type": "code", "source": [ - "var partnerRatings = await Workspace.GetPartnerRatingsReportParametersAsync(args);" + "var currentPartnerRatings = await Workspace.GetCurrentPartnerRatingsReportParametersAsync(args);" ], "metadata": {}, "execution_count": 0, @@ -165,7 +165,25 @@ { "cell_type": "code", "source": [ - "var partnerDefaultRates = await Workspace.GetCreditDefaultRatesReportParametersAsync(args);" + "var lockedPartnerRatings = await Workspace.GetLockedInPartnerRatingsReportParametersAsync(args);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var currentPartnerDefaultRates = await Workspace.GetCurrentCreditDefaultRatesReportParametersAsync(args);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var lockedPartnerDefaultRates = await Workspace.GetLockedInCreditDefaultRatesReportParametersAsync(args);" ], "metadata": {}, "execution_count": 0, @@ -184,7 +202,7 @@ "cell_type": "markdown", "source": [ "## Data node", - "\nProperties of the Group of Contracts and corresponding Portfolios are merged to provide a full description of the [Data Node](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructureDataStructure#data-node)" + "\nProperties of the Group of Contracts and corresponding Portfolios are merged to provide a full description of the [Data Node](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructureDataStructure#data-node)" ], "metadata": {}, "execution_count": 0, @@ -208,7 +226,7 @@ "source": [ "## Data node state", "\n", - "\nCurrent and previous period [data node state](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-state)." + "\nCurrent and previous period [data node state](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-state)." ], "metadata": {}, "execution_count": 0, @@ -233,7 +251,7 @@ "cell_type": "markdown", "source": [ "## Yield curve", - "\n[Yield Curve](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#yield-curve) used for locked-in discounting and current rating discouning (curret period and previous period) are shown." + "\n[Yield Curve](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#yield-curve) used for locked-in discounting and current rating discouning (curret period and previous period) are shown." ], "metadata": {}, "execution_count": 0, @@ -257,7 +275,7 @@ "cell_type": "markdown", "source": [ "## Single data node parameter", - "\n[Single data node parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-parameters) for current and previous period. " + "\n[Single data node parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-parameters) for current and previous period. " ], "metadata": {}, "execution_count": 0, @@ -281,7 +299,7 @@ "cell_type": "markdown", "source": [ "## Inter data node parameter", - "\n[Inter data node parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#data-node-parameters) for current and previous period. " + "\n[Inter data node parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#data-node-parameters) for current and previous period. " ], "metadata": {}, "execution_count": 0, @@ -305,7 +323,7 @@ "cell_type": "markdown", "source": [ "## Partner ratings", - "\n[Partner ratings](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#partner-rating) for current and previous period." + "\n[Partner ratings](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#partner-rating) for current and previous period." ], "metadata": {}, "execution_count": 0, @@ -314,7 +332,7 @@ { "cell_type": "code", "source": [ - "await Report.ForObjects(partnerRatings)", + "await Report.ForObjects(currentPartnerRatings)", "\n .WithQuerySource(Workspace)", "\n .GroupRowsBy(x => x.Partner)", "\n .GroupColumnsBy(x => x.Period)", @@ -325,11 +343,34 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "Locked in [partner ratings](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#partner-rating)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForObjects(lockedPartnerRatings)", + "\n .WithQuerySource(Workspace)", + "\n .GroupRowsBy(x => x.Partner)", + "\n .GroupColumnsBy(x => x.PartnerRatingType).GroupColumnsBy(x => \"Initial Year: \" + x.InitialYear.ToString())", + "\n .ToTable()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ "## Partner default rates", - "\n[Partner default rates](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/DataModel/DataStructure#credit-default-rate) for current and previous period." + "\n[Partner default rates](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#credit-default-rate) for current and previous period." ], "metadata": {}, "execution_count": 0, @@ -338,7 +379,7 @@ { "cell_type": "code", "source": [ - "await Report.ForObjects(partnerDefaultRates)", + "await Report.ForObjects(currentPartnerDefaultRates)", "\n .WithQuerySource(Workspace)", "\n .GroupRowsBy(x => x.CreditRiskRating)", "\n .GroupColumnsBy(x => x.Period)", @@ -348,6 +389,29 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Locked in [partner default rates](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/DataModel/DataStructure#credit-default-rate)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForObjects(lockedPartnerDefaultRates)", + "\n .WithQuerySource(Workspace)", + "\n .GroupRowsBy(x => x.CreditRiskRating)", + "\n .GroupColumnsBy(x => x.CreditDefaultRatesType).GroupColumnsBy(x => \"Initial Year: \" + x.InitialYear)", + "\n .ToTable()", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index c87e0012..bff99792 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -79,7 +79,7 @@ "source": [ "# Best Estimate", "\n", - "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#best-estimate) future cash flows are shown here in an Analysis of Change report.", + "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#best-estimate) future cash flows are shown here in an Analysis of Change report.", "\n", "\nThe granularity of the reported figures can be modified by changing the Column Slices options.", "\nFor example one can add \"GroupOfContract\" to separate the contributions of the individual Group of Contracts.", @@ -113,7 +113,7 @@ "source": [ "# Risk Adjustment", "\n", - "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#risk-adjustment) future cash flows are shown here.", + "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#risk-adjustment) future cash flows are shown here.", "\n", "\nThe additional ColumnSlices are added to the view as the inner column. This can dicrease the readability of the report. For example, adding the slice by \"GroupOfContract\" leaves the lock-in and current rate contributions far apart and difficult to compare. The re-order of default slices with custom slices is achieved by esplicitly add the default slice among the custom slices. In our case, you can try entering both \"GroupOfContract\" and \"EconomicBasis\" separated by a comma in the ColumnSlices." ], @@ -140,7 +140,7 @@ "source": [ "# Written Actuals", "\n", - "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#written-accrual-deferral) are shown here. ", + "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#written-accrual-deferral) are shown here. ", "\n", "\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. ", "\n
Filters can be applied to reports in order to isolate a sub-set of the data. They are specified by the name of the dimension to filter and the system name of the desired value. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}." @@ -168,8 +168,8 @@ "source": [ "## Advance, Overdue Actuals", "\n", - "\nActuals payed in [Advance](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#written-accrual-deferral)", - "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. ", + "\nActuals payed in [Advance](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#written-accrual-deferral)", + "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. ", "\n", "\nCombining Filters and ColumnSlices facilitate the report analysis. For example, you can select \"GroupOfContract\" as column slices with a Filter on EstimateType \"AA\" to analyse the Advance Actuals for all Group of Contract. " ], @@ -196,7 +196,7 @@ "source": [ "## Deferrable Actuals", "\n", - "\n[Deferrable Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#written-accrual-deferral) are shown here. Amortization of the deferrable amount is computed using the Coverage Unit pattern. " + "\n[Deferrable Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#written-accrual-deferral) are shown here. Amortization of the deferrable amount is computed using the Coverage Unit pattern. " ], "metadata": {}, "execution_count": 0, @@ -221,7 +221,7 @@ "source": [ "# Fulfilment Cash flow", "\n", - "\nPresent Value of the [Fulfilment Cash flow](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#fulfillment-cash-flows) are shown here. ", + "\nPresent Value of the [Fulfilment Cash flow](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#fulfillment-cash-flows) are shown here. ", "\n
The individual contributions from Best Estimate and Risk Adjustment can be visualized slicing by **EstimateType**.", "\n", "\nFilters can be applied to report to isolate a sub-set of the data. For example you can Filter by a specific Group of Contract using its system name using : new [] {(\"GroupOfContract\", \"DT1.1\")}.", @@ -250,7 +250,7 @@ "source": [ "# Actuarial Experience Adjustment", "\n", - "\nA comparison between [Written Actual](#written-actual) and the Releases of the [Best Estimate](#present-value) is reported in the [Actuarial Experience Adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#experience-adjustment)." + "\nA comparison between [Written Actual](#written-actual) and the Releases of the [Best Estimate](#present-value) is reported in the [Actuarial Experience Adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#experience-adjustment)." ], "metadata": {}, "execution_count": 0, @@ -275,7 +275,7 @@ "source": [ "# LRC Technical Margin", "\n", - "\nIn the [Technical Margin](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#technical-margin) report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", + "\nIn the [Technical Margin](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#technical-margin) report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", "\n
The Analysis of Change is expanded with few more steps such as **Experience Adjustment** and **Amortization**." ], "metadata": {}, @@ -301,7 +301,7 @@ "source": [ "# Contractual Service Margin / Loss Component / Loss Recovery Component", "\n", - "\nThe Contractual Service Margin (CSM) / Loss Component (LC) / Loss Recovery Component (LR) [report](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#technical-margin) are here shown side by side as the allocation to profit or loss is done at each step of the Analysis of Change. ", + "\nThe Contractual Service Margin (CSM) / Loss Component (LC) / Loss Recovery Component (LR) [report](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#technical-margin) are here shown side by side as the allocation to profit or loss is done at each step of the Analysis of Change. ", "\n", "\nA default slice by EstimateType - which distinguish between CSM, LC and LR contributions - is automatically enforced. " ], @@ -328,7 +328,7 @@ "source": [ "# LRC Actuarial", "\n", - "\nThe [Actuarial Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#lrc-actuarial-actuarial-liability-for-remaining-coverage) report shows figures from Fulfilment Cash flow discounted with current yield curve, and the allocated techinical margin. " + "\nThe [Actuarial Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#lrc-actuarial-actuarial-liability-for-remaining-coverage) report shows figures from Fulfilment Cash flow discounted with current yield curve, and the allocated techinical margin. " ], "metadata": {}, "execution_count": 0, @@ -353,7 +353,7 @@ "source": [ "# LRC", "\n", - "\nThe [Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#lrc-liability-for-remaining-coverage) report adds to the [Actuarial Liability for Remaining Coverage](#lrc-actuarial) the contribution of and accrual actuals. A simplified AoC Chain is used to allow comparison of the balance change between Actuals and Present Values. " + "\nThe [Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#lrc-liability-for-remaining-coverage) report adds to the [Actuarial Liability for Remaining Coverage](#lrc-actuarial) the contribution of and accrual actuals. A simplified AoC Chain is used to allow comparison of the balance change between Actuals and Present Values. " ], "metadata": {}, "execution_count": 0, @@ -378,7 +378,7 @@ "source": [ "# LIC Actuarial", "\n", - "\nThe [Actuarial Liability of Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#lic-actuarial-actuarial-liability-for-incurred-claims) report shows figures from Fulfilment Cash flow discounted with current yield curve. " + "\nThe [Actuarial Liability of Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#lic-actuarial-actuarial-liability-for-incurred-claims) report shows figures from Fulfilment Cash flow discounted with current yield curve. " ], "metadata": {}, "execution_count": 0, @@ -403,7 +403,7 @@ "source": [ "# LIC", "\n", - "\nThe [Liability for Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#lic-liability-for-incurred-claims) adds to the [Actuarial Liability for Incurred Claims](#lic-actuarial) the contribution of and accrual actuals." + "\nThe [Liability for Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#lic-liability-for-incurred-claims) adds to the [Actuarial Liability for Incurred Claims](#lic-actuarial) the contribution of and accrual actuals." ], "metadata": {}, "execution_count": 0, @@ -428,7 +428,7 @@ "source": [ "# Financial Performance", "\n", - "\nThe [Financial Performance](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.0/Report/ReportScopes#ifrs-17-financial-performance) report discloses the Change in Estimate of the IFRS 17 balance sheet items ([LRC](#lrc) and [LIC](#lic)) and the relevant incurred cash flows (Premiums, Claims, Expenses, etc...) for the given period.", + "\nThe [Financial Performance](https://portal.systemorph.cloud/project/ifrs17/env/v1.3.1/Report/ReportScopes#ifrs-17-financial-performance) report discloses the Change in Estimate of the IFRS 17 balance sheet items ([LRC](#lrc) and [LIC](#lic)) and the relevant incurred cash flows (Premiums, Claims, Expenses, etc...) for the given period.", "\n", "\nUse the expand and collapse buttons in the report rows to change the granularity of the figures displayed." ], diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv index a8a477dd..4c962e34 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv @@ -28,6 +28,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.1,C,BE,C,0.01057 ,CDR,BOP,DTR1.1,C,BE,N,0.04415 ,CDR,CF,DTR1.1,C,BE,N,-0.03368 +,CDRI,EOP,DTR1.1,C,BE,C,0.01057 +,CDRI,BOP,DTR1.1,C,BE,N,0.04415 +,CDRI,CF,DTR1.1,C,BE,N,-0.03368 ,NIC,EOP,DTR1.1,C,BE,C,-164.82155 ,NIC,BOP,DTR1.1,C,BE,N,-329.31412 ,NIC,CF,DTR1.1,C,BE,N,165 @@ -35,6 +38,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.1,L,BE,C,0.01057 ,CDR,BOP,DTR1.1,L,BE,N,0.04415 ,CDR,CF,DTR1.1,L,BE,N,-0.03368 +,CDRI,EOP,DTR1.1,L,BE,C,0.01057 +,CDRI,BOP,DTR1.1,L,BE,N,0.04415 +,CDRI,CF,DTR1.1,L,BE,N,-0.03368 ,NIC,EOP,DTR1.1,L,BE,C,-164.82155 ,NIC,BOP,DTR1.1,L,BE,N,-329.31412 ,NIC,CF,DTR1.1,L,BE,N,165 @@ -42,6 +48,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.1,N,BE,C,0.01059 ,CDR,BOP,DTR1.1,N,BE,N,0.04427 ,CDR,CF,DTR1.1,N,BE,N,-0.03368 +,CDRI,EOP,DTR1.1,N,BE,C,0.01059 +,CDRI,BOP,DTR1.1,N,BE,N,0.04427 +,CDRI,CF,DTR1.1,N,BE,N,-0.03368 ,NIC,EOP,DTR1.1,N,BE,C,-165 ,NIC,BOP,DTR1.1,N,BE,N,-330 ,NIC,CF,DTR1.1,N,BE,N,165 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv index 3f42dadd..bb27e5a3 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12__BE.csv @@ -199,6 +199,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.1,C,BE,N,0.04013 ,CDR,CF,DTR1.1,C,BE,N,-0.03062 ,CDR,IA,DTR1.1,C,BE,N,0.0001 +,CDRI,EOP,DTR1.1,C,BE,C,0.00961 +,CDRI,BOP,DTR1.1,C,BE,N,0.04013 +,CDRI,CF,DTR1.1,C,BE,N,-0.03062 +,CDRI,IA,DTR1.1,C,BE,N,0.0001 ,NIC,EOP,DTR1.1,C,BE,C,-149.83777 ,NIC,BOP,DTR1.1,C,BE,N,-299.37647 ,NIC,CF,DTR1.1,C,BE,N,150 @@ -211,6 +215,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.1,L,BE,N,0.04013 ,CDR,CF,DTR1.1,L,BE,N,-0.03062 ,CDR,IA,DTR1.1,L,BE,N,0.0001 +,CDRI,EOP,DTR1.1,L,BE,C,0.00961 +,CDRI,BOP,DTR1.1,L,BE,N,0.04013 +,CDRI,CF,DTR1.1,L,BE,N,-0.03062 +,CDRI,IA,DTR1.1,L,BE,N,0.0001 ,NIC,EOP,DTR1.1,L,BE,C,-149.83777 ,NIC,BOP,DTR1.1,L,BE,N,-299.37647 ,NIC,CF,DTR1.1,L,BE,N,150 @@ -222,6 +230,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.1,N,BE,C,0.00962 ,CDR,BOP,DTR1.1,N,BE,N,0.04024 ,CDR,CF,DTR1.1,N,BE,N,-0.03062 +,CDRI,EOP,DTR1.1,N,BE,C,0.00962 +,CDRI,BOP,DTR1.1,N,BE,N,0.04024 +,CDRI,CF,DTR1.1,N,BE,N,-0.03062 ,NIC,EOP,DTR1.1,N,BE,C,-150 ,NIC,BOP,DTR1.1,N,BE,N,-300 ,NIC,CF,DTR1.1,N,BE,N,150 @@ -254,6 +265,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.3,C,BE,N,0.04013 ,CDR,CF,DTR1.3,C,BE,N,-0.03062 ,CDR,IA,DTR1.3,C,BE,N,0.0001 +,CDRI,EOP,DTR1.3,C,BE,C,0.00961 +,CDRI,BOP,DTR1.3,C,BE,N,0.04013 +,CDRI,CF,DTR1.3,C,BE,N,-0.03062 +,CDRI,IA,DTR1.3,C,BE,N,0.0001 ,NIC,EOP,DTR1.3,C,BE,C,-149.83777 ,NIC,BOP,DTR1.3,C,BE,N,-299.37647 ,NIC,CF,DTR1.3,C,BE,N,150 @@ -266,6 +281,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.3,L,BE,N,0.04013 ,CDR,CF,DTR1.3,L,BE,N,-0.03062 ,CDR,IA,DTR1.3,L,BE,N,0.0001 +,CDRI,EOP,DTR1.3,L,BE,C,0.00961 +,CDRI,BOP,DTR1.3,L,BE,N,0.04013 +,CDRI,CF,DTR1.3,L,BE,N,-0.03062 +,CDRI,IA,DTR1.3,L,BE,N,0.0001 ,NIC,EOP,DTR1.3,L,BE,C,-149.83777 ,NIC,BOP,DTR1.3,L,BE,N,-299.37647 ,NIC,CF,DTR1.3,L,BE,N,150 @@ -277,6 +296,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.3,N,BE,C,0.00962 ,CDR,BOP,DTR1.3,N,BE,N,0.04024 ,CDR,CF,DTR1.3,N,BE,N,-0.03062 +,CDRI,EOP,DTR1.3,N,BE,C,0.00962 +,CDRI,BOP,DTR1.3,N,BE,N,0.04024 +,CDRI,CF,DTR1.3,N,BE,N,-0.03062 ,NIC,EOP,DTR1.3,N,BE,C,-150 ,NIC,BOP,DTR1.3,N,BE,N,-300 ,NIC,CF,DTR1.3,N,BE,N,150 @@ -287,6 +309,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.4,C,BE,N,0.04013 ,CDR,CF,DTR1.4,C,BE,N,-0.03062 ,CDR,IA,DTR1.4,C,BE,N,0.0001 +,CDRI,EOP,DTR1.4,C,BE,C,0.00961 +,CDRI,BOP,DTR1.4,C,BE,N,0.04013 +,CDRI,CF,DTR1.4,C,BE,N,-0.03062 +,CDRI,IA,DTR1.4,C,BE,N,0.0001 ,NIC,EOP,DTR1.4,C,BE,C,-149.83777 ,NIC,BOP,DTR1.4,C,BE,N,-299.37647 ,NIC,CF,DTR1.4,C,BE,N,150 @@ -299,6 +325,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.4,L,BE,N,0.04013 ,CDR,CF,DTR1.4,L,BE,N,-0.03062 ,CDR,IA,DTR1.4,L,BE,N,0.0001 +,CDRI,EOP,DTR1.4,L,BE,C,0.00961 +,CDRI,BOP,DTR1.4,L,BE,N,0.04013 +,CDRI,CF,DTR1.4,L,BE,N,-0.03062 +,CDRI,IA,DTR1.4,L,BE,N,0.0001 ,NIC,EOP,DTR1.4,L,BE,C,-149.83777 ,NIC,BOP,DTR1.4,L,BE,N,-299.37647 ,NIC,CF,DTR1.4,L,BE,N,150 @@ -310,6 +340,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR1.4,N,BE,C,0.00962 ,CDR,BOP,DTR1.4,N,BE,N,0.04024 ,CDR,CF,DTR1.4,N,BE,N,-0.03062 +,CDRI,EOP,DTR1.4,N,BE,C,0.00962 +,CDRI,BOP,DTR1.4,N,BE,N,0.04024 +,CDRI,CF,DTR1.4,N,BE,N,-0.03062 ,NIC,EOP,DTR1.4,N,BE,C,-150 ,NIC,BOP,DTR1.4,N,BE,N,-300 ,NIC,CF,DTR1.4,N,BE,N,150 @@ -320,6 +353,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR2.1,C,BE,N,0.04013 ,CDR,CF,DTR2.1,C,BE,N,-0.03062 ,CDR,IA,DTR2.1,C,BE,N,0.0001 +,CDRI,EOP,DTR2.1,C,BE,C,0.00961 +,CDRI,BOP,DTR2.1,C,BE,N,0.04013 +,CDRI,CF,DTR2.1,C,BE,N,-0.03062 +,CDRI,IA,DTR2.1,C,BE,N,0.0001 ,NIC,EOP,DTR2.1,C,BE,C,-149.83777 ,NIC,BOP,DTR2.1,C,BE,N,-299.37647 ,NIC,CF,DTR2.1,C,BE,N,150 @@ -332,6 +369,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR2.1,L,BE,N,0.04013 ,CDR,CF,DTR2.1,L,BE,N,-0.03062 ,CDR,IA,DTR2.1,L,BE,N,0.0001 +,CDRI,EOP,DTR2.1,L,BE,C,0.00961 +,CDRI,BOP,DTR2.1,L,BE,N,0.04013 +,CDRI,CF,DTR2.1,L,BE,N,-0.03062 +,CDRI,IA,DTR2.1,L,BE,N,0.0001 ,NIC,EOP,DTR2.1,L,BE,C,-149.83777 ,NIC,BOP,DTR2.1,L,BE,N,-299.37647 ,NIC,CF,DTR2.1,L,BE,N,150 @@ -343,6 +384,9 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,EOP,DTR2.1,N,BE,C,0.00962 ,CDR,BOP,DTR2.1,N,BE,N,0.04024 ,CDR,CF,DTR2.1,N,BE,N,-0.03062 +,CDRI,EOP,DTR2.1,N,BE,C,0.00962 +,CDRI,BOP,DTR2.1,N,BE,N,0.04024 +,CDRI,CF,DTR2.1,N,BE,N,-0.03062 ,NIC,EOP,DTR2.1,N,BE,C,-150 ,NIC,BOP,DTR2.1,N,BE,N,-300 ,NIC,CF,DTR2.1,N,BE,N,150 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv index e4a75992..282e2e75 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__BE.csv @@ -505,6 +505,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.1,C,BE,N,-0.01123 ,CDR,EV,DTR1.1,C,BE,N,0.01344 ,CDR,IA,DTR1.1,C,BE,N,5E-05 +,CDRI,EOP,DTR1.1,C,BE,C,0.00628 +,CDRI,BOP,DTR1.1,C,BE,I,0.00961 +,CDRI,CF,DTR1.1,C,BE,I,-0.0035 +,CDRI,MC,DTR1.1,C,BE,I,-0.00192 +,CDRI,BOP,DTR1.1,C,BE,N,0.00192 +,CDRI,CF,DTR1.1,C,BE,N,-0.00087 +,CDRI,EV,DTR1.1,C,BE,N,0.00105 ,NIC,EOP,DTR1.1,C,BE,C,-134.71982 ,NIC,BOP,DTR1.1,C,BE,I,-149.83777 ,NIC,CF,DTR1.1,C,BE,I,30 @@ -534,6 +541,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.1,L,BE,N,-0.01123 ,CDR,EV,DTR1.1,L,BE,N,0.01346 ,CDR,IA,DTR1.1,L,BE,N,2E-05 +,CDRI,EOP,DTR1.1,L,BE,C,0.00629 +,CDRI,BOP,DTR1.1,L,BE,I,0.00961 +,CDRI,CF,DTR1.1,L,BE,I,-0.0035 +,CDRI,MC,DTR1.1,L,BE,I,-0.00192 +,CDRI,BOP,DTR1.1,L,BE,N,0.00192 +,CDRI,CF,DTR1.1,L,BE,N,-0.00087 +,CDRI,EV,DTR1.1,L,BE,N,0.00105 ,NIC,EOP,DTR1.1,L,BE,C,-134.88767 ,NIC,BOP,DTR1.1,L,BE,I,-149.83777 ,NIC,CF,DTR1.1,L,BE,I,30 @@ -560,6 +574,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.1,N,BE,N,0.0247 ,CDR,CF,DTR1.1,N,BE,N,-0.01123 ,CDR,EV,DTR1.1,N,BE,N,0.01348 +,CDRI,EOP,DTR1.1,N,BE,C,0.0063 +,CDRI,BOP,DTR1.1,N,BE,I,0.00962 +,CDRI,CF,DTR1.1,N,BE,I,-0.0035 +,CDRI,MC,DTR1.1,N,BE,I,-0.00192 +,CDRI,BOP,DTR1.1,N,BE,N,0.00192 +,CDRI,CF,DTR1.1,N,BE,N,-0.00087 +,CDRI,EV,DTR1.1,N,BE,N,0.00105 ,NIC,EOP,DTR1.1,N,BE,C,-135 ,NIC,BOP,DTR1.1,N,BE,I,-150 ,NIC,CF,DTR1.1,N,BE,I,30 @@ -635,6 +656,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.3,C,BE,N,-0.01123 ,CDR,EV,DTR1.3,C,BE,N,0.01344 ,CDR,IA,DTR1.3,C,BE,N,5E-05 +,CDRI,EOP,DTR1.3,C,BE,C,0.00628 +,CDRI,BOP,DTR1.3,C,BE,I,0.00961 +,CDRI,CF,DTR1.3,C,BE,I,-0.0035 +,CDRI,MC,DTR1.3,C,BE,I,-0.00192 +,CDRI,BOP,DTR1.3,C,BE,N,0.00192 +,CDRI,CF,DTR1.3,C,BE,N,-0.00087 +,CDRI,EV,DTR1.3,C,BE,N,0.00105 ,NIC,EOP,DTR1.3,C,BE,C,-134.71982 ,NIC,BOP,DTR1.3,C,BE,I,-149.83777 ,NIC,CF,DTR1.3,C,BE,I,30 @@ -664,6 +692,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.3,L,BE,N,-0.01123 ,CDR,EV,DTR1.3,L,BE,N,0.01346 ,CDR,IA,DTR1.3,L,BE,N,2E-05 +,CDRI,EOP,DTR1.3,L,BE,C,0.00629 +,CDRI,BOP,DTR1.3,L,BE,I,0.00961 +,CDRI,CF,DTR1.3,L,BE,I,-0.0035 +,CDRI,MC,DTR1.3,L,BE,I,-0.00192 +,CDRI,BOP,DTR1.3,L,BE,N,0.00192 +,CDRI,CF,DTR1.3,L,BE,N,-0.00087 +,CDRI,EV,DTR1.3,L,BE,N,0.00105 ,NIC,EOP,DTR1.3,L,BE,C,-134.88767 ,NIC,BOP,DTR1.3,L,BE,I,-149.83777 ,NIC,CF,DTR1.3,L,BE,I,30 @@ -690,6 +725,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.3,N,BE,N,0.0247 ,CDR,CF,DTR1.3,N,BE,N,-0.01123 ,CDR,EV,DTR1.3,N,BE,N,0.01348 +,CDRI,EOP,DTR1.3,N,BE,C,0.0063 +,CDRI,BOP,DTR1.3,N,BE,I,0.00962 +,CDRI,CF,DTR1.3,N,BE,I,-0.0035 +,CDRI,MC,DTR1.3,N,BE,I,-0.00192 +,CDRI,BOP,DTR1.3,N,BE,N,0.00192 +,CDRI,CF,DTR1.3,N,BE,N,-0.00087 +,CDRI,EV,DTR1.3,N,BE,N,0.00105 ,NIC,EOP,DTR1.3,N,BE,C,-135 ,NIC,BOP,DTR1.3,N,BE,I,-150 ,NIC,CF,DTR1.3,N,BE,I,30 @@ -713,6 +755,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.4,C,BE,N,-0.01123 ,CDR,EV,DTR1.4,C,BE,N,0.01344 ,CDR,IA,DTR1.4,C,BE,N,5E-05 +,CDRI,EOP,DTR1.4,C,BE,C,0.00628 +,CDRI,BOP,DTR1.4,C,BE,I,0.00961 +,CDRI,CF,DTR1.4,C,BE,I,-0.0035 +,CDRI,MC,DTR1.4,C,BE,I,-0.00192 +,CDRI,BOP,DTR1.4,C,BE,N,0.00192 +,CDRI,CF,DTR1.4,C,BE,N,-0.00087 +,CDRI,EV,DTR1.4,C,BE,N,0.00105 ,NIC,EOP,DTR1.4,C,BE,C,-134.71982 ,NIC,BOP,DTR1.4,C,BE,I,-149.83777 ,NIC,CF,DTR1.4,C,BE,I,30 @@ -742,6 +791,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR1.4,L,BE,N,-0.01123 ,CDR,EV,DTR1.4,L,BE,N,0.01346 ,CDR,IA,DTR1.4,L,BE,N,2E-05 +,CDRI,EOP,DTR1.4,L,BE,C,0.00629 +,CDRI,BOP,DTR1.4,L,BE,I,0.00961 +,CDRI,CF,DTR1.4,L,BE,I,-0.0035 +,CDRI,MC,DTR1.4,L,BE,I,-0.00192 +,CDRI,BOP,DTR1.4,L,BE,N,0.00192 +,CDRI,CF,DTR1.4,L,BE,N,-0.00087 +,CDRI,EV,DTR1.4,L,BE,N,0.00105 ,NIC,EOP,DTR1.4,L,BE,C,-134.88767 ,NIC,BOP,DTR1.4,L,BE,I,-149.83777 ,NIC,CF,DTR1.4,L,BE,I,30 @@ -768,6 +824,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR1.4,N,BE,N,0.0247 ,CDR,CF,DTR1.4,N,BE,N,-0.01123 ,CDR,EV,DTR1.4,N,BE,N,0.01348 +,CDRI,EOP,DTR1.4,N,BE,C,0.0063 +,CDRI,BOP,DTR1.4,N,BE,I,0.00962 +,CDRI,CF,DTR1.4,N,BE,I,-0.0035 +,CDRI,MC,DTR1.4,N,BE,I,-0.00192 +,CDRI,BOP,DTR1.4,N,BE,N,0.00192 +,CDRI,CF,DTR1.4,N,BE,N,-0.00087 +,CDRI,EV,DTR1.4,N,BE,N,0.00105 ,NIC,EOP,DTR1.4,N,BE,C,-135 ,NIC,BOP,DTR1.4,N,BE,I,-150 ,NIC,CF,DTR1.4,N,BE,I,30 @@ -791,6 +854,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR2.1,C,BE,N,-0.01123 ,CDR,EV,DTR2.1,C,BE,N,0.01344 ,CDR,IA,DTR2.1,C,BE,N,5E-05 +,CDRI,EOP,DTR2.1,C,BE,C,0.00628 +,CDRI,BOP,DTR2.1,C,BE,I,0.00961 +,CDRI,CF,DTR2.1,C,BE,I,-0.0035 +,CDRI,MC,DTR2.1,C,BE,I,-0.00192 +,CDRI,BOP,DTR2.1,C,BE,N,0.00192 +,CDRI,CF,DTR2.1,C,BE,N,-0.00087 +,CDRI,EV,DTR2.1,C,BE,N,0.00105 ,NIC,EOP,DTR2.1,C,BE,C,-134.71982 ,NIC,BOP,DTR2.1,C,BE,I,-149.83777 ,NIC,CF,DTR2.1,C,BE,I,30 @@ -820,6 +890,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,CF,DTR2.1,L,BE,N,-0.01123 ,CDR,EV,DTR2.1,L,BE,N,0.01346 ,CDR,IA,DTR2.1,L,BE,N,2E-05 +,CDRI,EOP,DTR2.1,L,BE,C,0.00629 +,CDRI,BOP,DTR2.1,L,BE,I,0.00961 +,CDRI,CF,DTR2.1,L,BE,I,-0.0035 +,CDRI,MC,DTR2.1,L,BE,I,-0.00192 +,CDRI,BOP,DTR2.1,L,BE,N,0.00192 +,CDRI,CF,DTR2.1,L,BE,N,-0.00087 +,CDRI,EV,DTR2.1,L,BE,N,0.00105 ,NIC,EOP,DTR2.1,L,BE,C,-134.88767 ,NIC,BOP,DTR2.1,L,BE,I,-149.83777 ,NIC,CF,DTR2.1,L,BE,I,30 @@ -846,6 +923,13 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,CDR,BOP,DTR2.1,N,BE,N,0.0247 ,CDR,CF,DTR2.1,N,BE,N,-0.01123 ,CDR,EV,DTR2.1,N,BE,N,0.01348 +,CDRI,EOP,DTR2.1,N,BE,C,0.0063 +,CDRI,BOP,DTR2.1,N,BE,I,0.00962 +,CDRI,CF,DTR2.1,N,BE,I,-0.0035 +,CDRI,MC,DTR2.1,N,BE,I,-0.00192 +,CDRI,BOP,DTR2.1,N,BE,N,0.00192 +,CDRI,CF,DTR2.1,N,BE,N,-0.00087 +,CDRI,EV,DTR2.1,N,BE,N,0.00105 ,NIC,EOP,DTR2.1,N,BE,C,-135 ,NIC,BOP,DTR2.1,N,BE,I,-150 ,NIC,CF,DTR2.1,N,BE,I,30 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv index b4d9507b..5ae3fa58 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__C.csv @@ -52,31 +52,27 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,BOP,DT4.1,,C,N,8.00465 ,,EV,DT4.1,,C,N,-1.49226 ,,IA,DT4.1,,C,N,0.00034 -,,AM,DTR1.1,,C,C,10.78121 -,,CL,DTR1.1,,C,C,43.67753 -,,EOP,DTR1.1,,C,C,-22.64964 +,,AM,DTR1.1,,C,C,10.75385 +,,CL,DTR1.1,,C,C,43.71271 +,,EOP,DTR1.1,,C,C,-22.59217 ,,BOP,DTR1.1,,C,I,-24.07616 -,,CRU,DTR1.1,,C,I,-0.04965 ,,IA,DTR1.1,,C,I,-0.03848 ,,MC,DTR1.1,,C,I,-52.94408 -,,AM,DTR1.3,,C,C,10.78121 -,,CL,DTR1.3,,C,C,43.67753 -,,EOP,DTR1.3,,C,C,-22.64964 +,,AM,DTR1.3,,C,C,10.75385 +,,CL,DTR1.3,,C,C,43.71271 +,,EOP,DTR1.3,,C,C,-22.59217 ,,BOP,DTR1.3,,C,I,-24.07616 -,,CRU,DTR1.3,,C,I,-0.04965 ,,IA,DTR1.3,,C,I,-0.03848 ,,MC,DTR1.3,,C,I,-52.94408 -,,AM,DTR1.4,,C,C,10.78121 -,,CL,DTR1.4,,C,C,43.67753 -,,EOP,DTR1.4,,C,C,-22.64964 +,,AM,DTR1.4,,C,C,10.75385 +,,CL,DTR1.4,,C,C,43.71271 +,,EOP,DTR1.4,,C,C,-22.59217 ,,BOP,DTR1.4,,C,I,-24.07616 -,,CRU,DTR1.4,,C,I,-0.04965 ,,IA,DTR1.4,,C,I,-0.03848 ,,MC,DTR1.4,,C,I,-52.94408 -,,AM,DTR2.1,,C,C,10.78121 -,,CL,DTR2.1,,C,C,43.67753 -,,EOP,DTR2.1,,C,C,-22.64964 +,,AM,DTR2.1,,C,C,10.75385 +,,CL,DTR2.1,,C,C,43.71271 +,,EOP,DTR2.1,,C,C,-22.59217 ,,BOP,DTR2.1,,C,I,-24.07616 -,,CRU,DTR2.1,,C,I,-0.04965 ,,IA,DTR2.1,,C,I,-0.03848 ,,MC,DTR2.1,,C,I,-52.94408 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv index 96b9555c..8e0da436 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3__LR.csv @@ -3,19 +3,19 @@ Month,ReportingNode,Scenario,Year 3,CH,,2021 @@LR AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Values0 -,,CL,DTR1.1,,LR,C,43.67753 -,,BOP,DTR1.1,,LR,N,-15.9547 -,,EV,DTR1.1,,LR,N,-27.7147 -,,IA,DTR1.1,,LR,N,-0.00813 -,,CL,DTR1.3,,LR,C,43.67753 -,,BOP,DTR1.3,,LR,N,-15.9547 -,,EV,DTR1.3,,LR,N,-27.7147 -,,IA,DTR1.3,,LR,N,-0.00813 -,,CL,DTR1.4,,LR,C,43.67753 -,,BOP,DTR1.4,,LR,N,-15.9547 -,,EV,DTR1.4,,LR,N,-27.7147 -,,IA,DTR1.4,,LR,N,-0.00813 -,,CL,DTR2.1,,LR,C,43.67753 -,,BOP,DTR2.1,,LR,N,-15.9547 -,,EV,DTR2.1,,LR,N,-27.7147 -,,IA,DTR2.1,,LR,N,-0.00813 \ No newline at end of file +,,CL,DTR1.1,,LR,C,43.71271 +,,BOP,DTR1.1,,LR,N,-15.97745 +,,EV,DTR1.1,,LR,N,-27.72711 +,,IA,DTR1.1,,LR,N,-0.00815 +,,CL,DTR1.3,,LR,C,43.71271 +,,BOP,DTR1.3,,LR,N,-15.97745 +,,EV,DTR1.3,,LR,N,-27.72711 +,,IA,DTR1.3,,LR,N,-0.00815 +,,CL,DTR1.4,,LR,C,43.71271 +,,BOP,DTR1.4,,LR,N,-15.97745 +,,EV,DTR1.4,,LR,N,-27.72711 +,,IA,DTR1.4,,LR,N,-0.00815 +,,CL,DTR2.1,,LR,C,43.71271 +,,BOP,DTR2.1,,LR,N,-15.97745 +,,EV,DTR2.1,,LR,N,-27.72711 +,,IA,DTR2.1,,LR,N,-0.00815 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv index f326a535..88b02ed7 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv @@ -1,4 +1,4 @@ -@@ReportVariable,,,,,,,,,,,,,,,,,,,,,, +@@ReportVariable AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis,EstimateType,FunctionalCurrency,GroupOfContract,InitialProfitability,IsReinsurance,LiabilityType,LineOfBusiness,Novelty,OciType,Partner,Portfolio,Projection,ReportingNode,Scenario,ValuationApproach,Value,VariableType 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,FALSE,LIC,ANN,C,Default,,DT1,P0,CH,,BBA,-76,CF 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,FALSE,LIC,ANN,C,Default,,DT1,P0,CH,,BBA,-76,ISE2 @@ -61,7 +61,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,C,,,DT2,P0,CH,,BBA,0.04559,IFIE2 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,C,,,DT2,P0,CH,,BBA,30.19032,ISE12 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,I,,,DT2,P0,CH,,BBA,-59.93511,MC -2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,C,,,DT2,P0,CH,,BBA,0,OCI2 +2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,C,,,DT2,P0,CH,,BBA,-0,OCI2 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,FALSE,LIC,ANN,I,,,DT2,P0,CH,,BBA,-0.2238,YCU 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,FALSE,LIC,ANN,I,,,DT2,P0,CH,,BBA,299.67555,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,FALSE,LIC,ANN,N,,,DT2,P0,CH,,BBA,59.93511,BOP @@ -103,7 +103,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04957,CRU 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08063,EOP 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01344,EV -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5.00E-05,IA +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5E-05,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.07102,OCI2 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-149.83777,BOP @@ -124,7 +124,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04965,CRU 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08076,EOP 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01346,EV -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2.00E-05,IA +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2E-05,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.04967,IFIE2 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.02148,ISE12 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,TRUE,LIC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC @@ -173,7 +173,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.04957,CRU 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.08063,EOP 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,0.01344,EV -2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,5.00E-05,IA +2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,5E-05,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.04962,IFIE2 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.0214,ISE12 2020,CDR,2020,USD,USD,C,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.00192,MC @@ -198,7 +198,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.04965,CRU 2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.08076,EOP 2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,0.01346,EV -2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,2.00E-05,IA +2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,2E-05,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.00192,MC 2020,NIC,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-149.83777,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-29.96755,BOP @@ -220,7 +220,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.00114,IFIE2 2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-3.75827,ISE12 2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,2.99676,MC -2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0,OCI2 +2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0,OCI2 2020,,2020,USD,USD,C,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.01119,YCU 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-14.98378,BOP 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,TRUE,LIC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-5.99351,BOP @@ -1084,7 +1084,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04957,CRU 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08063,EOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01344,EV -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5.00E-05,IA +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5E-05,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.07102,OCI1 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-149.83777,BOP @@ -1116,7 +1116,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04965,CRU 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08076,EOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01346,EV -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2.00E-05,IA +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2E-05,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.04967,IFIE1 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.02148,ISE10 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC @@ -1145,23 +1145,22 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,27.53161,ISE10 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,19.9817,MC 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-27.4318,OCI1 -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.78121,AM +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.75385,AM 0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-24.07616,BOP -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.04965,CRU -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.64964,EOP +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.59217,EOP 0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.03848,IA -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08813,IFIE1 -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.26655,ISE10 -0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.78121,ISE7 +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.03848,IFIE1 +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.23138,ISE10 +0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.75385,ISE7 0,,2020,USD,USD,,C,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-52.94408,MC -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.9547,BOP -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.97745,BOP +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL 0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.7147,EV -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.72711,EV +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,IA +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00815,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,ISE11 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-14.98378,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-5.98382,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,3,CF @@ -1204,7 +1203,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04957,CRU 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08063,EOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01344,EV -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5.00E-05,IA +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5E-05,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.07102,OCI1 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-149.83777,BOP @@ -1236,7 +1235,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04965,CRU 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08076,EOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01346,EV -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2.00E-05,IA +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2E-05,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.04967,IFIE1 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.02148,ISE10 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC @@ -1265,23 +1264,22 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,27.53161,ISE10 0,PR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,19.9817,MC 0,PR,2020,USD,USD,L,BE,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-27.4318,OCI1 -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.78121,AM +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.75385,AM 0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-24.07616,BOP -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.04965,CRU -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.64964,EOP +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.59217,EOP 0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.03848,IA -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08813,IFIE1 -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.26655,ISE10 -0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.78121,ISE7 +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.03848,IFIE1 +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.23138,ISE10 +0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.75385,ISE7 0,,2020,USD,USD,,C,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-52.94408,MC -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.9547,BOP -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.97745,BOP +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL 0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.7147,EV -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.72711,EV +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,IA +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00815,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,ISE11 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-2.5,BOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0,EOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-2.5,ISE2 @@ -1323,7 +1321,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04957,CRU 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08063,EOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01344,EV -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5.00E-05,IA +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,5E-05,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.07102,OCI1 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-149.83777,BOP @@ -1355,7 +1353,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,0.04965,CRU 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08076,EOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,0.01346,EV -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2.00E-05,IA +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,2E-05,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.04967,IFIE1 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.02148,ISE10 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.00192,MC @@ -1384,23 +1382,22 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,27.53161,ISE10 0,PR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,19.9817,MC 0,PR,2020,USD,USD,L,BE,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-27.4318,OCI1 -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.78121,AM +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,10.75385,AM 0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-24.07616,BOP -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.04965,CRU -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.64964,EOP +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-22.59217,EOP 0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-0.03848,IA -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.08813,IFIE1 -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.26655,ISE10 -0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.78121,ISE7 +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.03848,IFIE1 +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,9.23138,ISE10 +0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10.75385,ISE7 0,,2020,USD,USD,,C,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-52.94408,MC -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.9547,BOP -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.67753,CL +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-15.97745,BOP +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,43.71271,CL 0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.7147,EV -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-27.72711,EV +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,N,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,IA +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0.00815,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-0.00815,ISE11 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,TRUE,LRC,ANN,I,Default,PT1,DTR1,P0,CH,,BBA,-10,BOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,0,EOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,TRUE,LRC,ANN,C,Default,PT1,DTR1,P0,CH,,BBA,-10,ISE2 @@ -1439,7 +1436,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.04957,CRU 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.08063,EOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,0.01344,EV -0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,5.00E-05,IA +0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,5E-05,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.04962,IFIE1 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.0214,ISE10 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.00192,MC @@ -1477,7 +1474,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.04965,CRU 0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.08076,EOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,0.01346,EV -0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,2.00E-05,IA +0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,2E-05,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.00192,MC 0,NIC,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-149.83777,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-29.96755,BOP @@ -1497,23 +1494,22 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.0915,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,0.00832,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,19.9817,MC -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,10.78121,AM +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,10.75385,AM 0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-24.07616,BOP -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,43.67753,CL -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.04965,CRU -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-22.64964,EOP +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,43.71271,CL +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-22.59217,EOP 0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.03848,IA -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.08813,IFIE1 -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,9.26655,ISE10 -0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-10.78121,ISE7 +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.03848,IFIE1 +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,9.23138,ISE10 +0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-10.75385,ISE7 0,,2020,USD,USD,,C,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-52.94408,MC -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-15.9547,BOP -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,43.67753,CL +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-15.97745,BOP +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,43.71271,CL 0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-27.7147,EV -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-27.72711,EV +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-0.00815,IA +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.00815,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0.00815,ISE11 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-14.98378,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-5.98382,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,3,CF @@ -1525,7 +1521,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0.00114,IFIE1 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-3.75827,ISE10 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,2.99676,MC -0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,0,OCI1 +0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,C,,PT1,DTR2,P0,CH,,BBA,-0,OCI1 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,0.01119,YCU 0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-14.98378,BOP 0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-5.99351,BOP @@ -1535,4 +1531,4 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,2.24813,EV 0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,-0.00549,IA 0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,N,,PT1,DTR2,P0,CH,,BBA,-0.00274,IA -0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,2.99676,MC +0,,2020,USD,USD,L,RA,CHF,DTR2.1,P,TRUE,LRC,ANN,I,,PT1,DTR2,P0,CH,,BBA,2.99676,MC \ No newline at end of file diff --git a/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb index 0c658c79..01813e30 100644 --- a/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb +++ b/ifrs17-template/Test/PracticalCase-CompareReinsuranceTest.ipynb @@ -273,7 +273,7 @@ { "cell_type": "code", "source": [ - "csmAM.Where(x => x.Scenario == \"LR80\").Sum(x => x.Value).Should().BeApproximately(-55.01464, Precision);" + "csmAM.Where(x => x.Scenario == \"LR80\").Sum(x => x.Value).Should().BeApproximately(-55.01463, Precision);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 24be6fab..4d03faba 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -363,19 +363,20 @@ "cell_type": "code", "source": [ "public static class AmountTypes{", - "\n public const string ACA = nameof(ACA); // Attributable Commissions Acquisition", - "\n public const string AEA = nameof(AEA); // Attributable Expenses Acquisition", - "\n public const string CDR = nameof(CDR); // Credit Default Risk", - "\n public const string CL = nameof(CL); // Claims", - "\n public const string PR = nameof(PR); // Premiums", - "\n public const string NIC = nameof(NIC); // Claims Non-Investment component", - "\n public const string ICO = nameof(ICO); // Claims Investment component", - "\n public const string NE = nameof(NE); // Non Attributable Expenses", - "\n public const string ACM = nameof(ACM); // Attributable Commissions Maintenance", - "\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); // Unallocated Loss Adjustment Expenses", + "\n public const string ACA = nameof(ACA); // Attributable Commissions Acquisition", + "\n public const string AEA = nameof(AEA); // Attributable Expenses Acquisition", + "\n public const string CDR = nameof(CDR); // Credit Default Risk", + "\n public const string CDRI = nameof(CDRI); // Initial Credit Default Risk, i.e. the CDR value when the GIC state is set to active", + "\n public const string CL = nameof(CL); // Claims", + "\n public const string PR = nameof(PR); // Premiums", + "\n public const string NIC = nameof(NIC); // Claims Non-Investment component", + "\n public const string ICO = nameof(ICO); // Claims Investment component", + "\n public const string NE = nameof(NE); // Non Attributable Expenses", + "\n public const string ACM = nameof(ACM); // Attributable Commissions Maintenance", + "\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); // Unallocated Loss Adjustment Expenses", "\n}" ], "metadata": {}, diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 0152a7e0..c49884e8 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -66,6 +66,7 @@ "\n NoMainTab, IncompleteMainTab, ParsingScientificNotation, ValueTypeNotFound, ValueTypeNotValid, ", "\n ReportingNodeInMainNotFound, YearInMainNotFound, MonthInMainNotFound, ScenarioInMainNotAvailable,", "\n AocTypeNotValid, AocTypeCompulsoryNotFound, AocTypePositionNotSupported, AocConfigurationOrderNotUnique,", + "\n AccidentYearTypeNotValid,", "\n // Partition", "\n PartitionNotFound, ParsedPartitionNotFound, PartititionNameNotFound, PartitionTypeNotFound,", "\n // Dimensions", @@ -122,6 +123,7 @@ "\n (Error.AocTypeCompulsoryNotFound , _) => $\"Not all compulsory AoC Types have been imported.\",", "\n (Error.AocTypePositionNotSupported , 1) => $\"The position of the AoC Type {s[0]} is not supported.\",", "\n (Error.AocConfigurationOrderNotUnique , _) => $\"Two or more AoC Configurations have the same Order.\",", + "\n (Error.AccidentYearTypeNotValid , 1) => $\"The parsed AccidentYear {s[0]} is invalid. Expected Accident Year input of type int.\",", "\n // Partition", "\n (Error.PartitionNotFound , _) => $\"Partition do not found.\",", "\n (Error.ParsedPartitionNotFound , 1) => $\"Parsed partition not available: ReportingNode {s[0]}.\",", diff --git a/ifrs17/Import/1ImportScope-Identities.ipynb b/ifrs17/Import/1ImportScope-Identities.ipynb index 74ca3428..f0432d13 100644 --- a/ifrs17/Import/1ImportScope-Identities.ipynb +++ b/ifrs17/Import/1ImportScope-Identities.ipynb @@ -33,6 +33,15 @@ "This notebook contains the logic used to perform calculations upon import of data (actuals and cash flows). This is also called 'Data Loading' and the concept of Scope is used here to define the logic and provide the means of executing the logic. Scopes are used to define and perform data handling in a structured and easy-to-read-through fashion.", "\n", "\n

", + "\nImport scopes are divided in several notebooks:", + "\n- Calculation of Identities", + "\n- [Calculation of Present Values](../Import/2ImportScope-PresentValue)", + "\n- [Calculation of Actuals](../Import/3ImportScope-Actuals)", + "\n- [Calculation of Technical Margin](../Import/4ImportScope-TechnicalMargin)", + "\n- [Creation of Ifrs Variables](../Import/5ImportScope-ToIfrsVar)", + "\n- [Calculation of Ifrs Variables](../Import/6ImportScope-Compute)", + "\n", + "\n

", "\nIn this notebook the focus is on the defintion of the Identities and on the AoC Step structure and relations required for the computations. ", "\n" ], @@ -235,8 +244,10 @@ "\n IEnumerable BeAmountTypes => GetStorage().GetRawVariables(Identity)", "\n .Where(rv => rv.AmountType != null)", "\n .Select(x => x.AmountType)", - "\n .Concat(GetStorage().DataNodeDataBySystemName[Identity].IsReinsurance ? (AmountTypes.CDR).RepeatOnce() : Enumerable.Empty())", - "\n .ToHashSet();", + "\n .Concat(GetStorage().DataNodeDataBySystemName[Identity].IsReinsurance ", + "\n ? GetStorage().DataNodeDataBySystemName[Identity].LiabilityType == LiabilityTypes.LIC ", + "\n ? new []{AmountTypes.CDR} : new []{AmountTypes.CDRI, AmountTypes.CDR} ", + "\n : Enumerable.Empty()).ToHashSet();", "\n ", "\n ", "\n IEnumerable ActualAmountTypes => GetStorage().GetIfrsVariables(Identity)", diff --git a/ifrs17/Import/2ImportScope-PresentValue.ipynb b/ifrs17/Import/2ImportScope-PresentValue.ipynb index 333a2587..3bf1b601 100644 --- a/ifrs17/Import/2ImportScope-PresentValue.ipynb +++ b/ifrs17/Import/2ImportScope-PresentValue.ipynb @@ -29,7 +29,16 @@ { "cell_type": "markdown", "source": [ - "In this notebook the focus is on the calculation of present values. " + "Import scopes are divided in several notebooks:", + "\n- [Calculation of Identities](../Import/1ImportScope-Identities)", + "\n- Calculation of Present Values", + "\n- [Calculation of Actuals](../Import/3ImportScope-Actuals)", + "\n- [Calculation of Technical Margin](../Import/4ImportScope-TechnicalMargin)", + "\n- [Creation of Ifrs Variables](../Import/5ImportScope-ToIfrsVar)", + "\n- [Calculation of Ifrs Variables](../Import/6ImportScope-Compute)", + "\n", + "\n

", + "\nIn this notebook the focus is on the calculation of present values." ], "metadata": {}, "execution_count": 0, @@ -155,8 +164,8 @@ "public interface NominalCashflow : IScope<(ImportIdentity Id, string AmountType, string EstimateType, int? AccidentYear), ImportStorage>", "\n{", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.AmountType == AmountTypes.CDR && x.Identity.Id.AocType == AocTypes.CF)", - "\n .WithApplicability(x => x.Identity.AmountType == AmountTypes.CDR)", + "\n builder.ForScope(s => s.WithApplicability(x => x.GetStorage().GetCdr().Contains(x.Identity.AmountType) && x.Identity.Id.AocType == AocTypes.CF)", + "\n .WithApplicability(x => x.GetStorage().GetCdr().Contains(x.Identity.AmountType))", "\n .WithApplicability(x => x.GetStorage().GetShift(x.Identity.Id.ProjectionPeriod) >= MonthInAYear && x.Identity.Id.AocType == AocTypes.BOP && x.Identity.Id.Novelty == Novelties.I));", "\n", "\n AocStep referenceAocStep => GetScope(Identity.Id).Value;", @@ -169,7 +178,8 @@ "\n .Select(claim => GetStorage().GetValues(Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, claim, Identity.EstimateType, Identity.AccidentYear))", "\n .AggregateDoubleArray();", "\n ", - "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id);", + "\n private string cdrBasis => Identity.AmountType == AmountTypes.CDR ? EconomicBases.C : EconomicBases.L;", + "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id, cdrBasis);", "\n ", "\n private double[] PvCdrDecumulated { get {", "\n var ret = new double[NominalClaimsCashflow.Length];", @@ -276,7 +286,7 @@ "\n private PeriodType periodType => GetStorage().GetPeriodType(Identity.AmountType, Identity.EstimateType); ", "\n ", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance && x.Identity.AmountType == AmountTypes.CDR));", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance && x.GetStorage().GetCdr().Contains(x.Identity.AmountType)));", "\n", "\n [NotVisible]", "\n string EconomicBasis => GetContext();", @@ -292,7 +302,8 @@ "\n", "\npublic interface DiscountedCreditRiskCashflow : DiscountedCashflow", "\n{ ", - "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id);", + "\n private string cdrBasis => Identity.AmountType == AmountTypes.CDR ? EconomicBases.C : EconomicBases.L;", + "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id, cdrBasis);", "\n ", "\n double[] DiscountedCashflow.Values => Multiply(-1d, NominalValues.ComputeDiscountAndCumulateWithCreditDefaultRisk(MonthlyDiscounting, nonPerformanceRiskRate)); // we need to flip the sign to create a reserve view", "\n}" @@ -455,7 +466,8 @@ "\n private double[] nominalClaimsCashflow => GetScope(Identity).Values;", "\n private double[] nominalValuesCreditRisk => Multiply(-1, GetScope(Identity with {Id = Identity.Id with {AocType = AocTypes.CF}}).Values);", "\n private double[] monthlyInterestFactor => GetScope(Identity.Id).Interest;", - "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id);", + "\n private string cdrBasis => Identity.AmountType == AmountTypes.CDR ? EconomicBases.C : EconomicBases.L;", + "\n private double nonPerformanceRiskRate => GetStorage().GetNonPerformanceRiskRate(Identity.Id, cdrBasis);", "\n ", "\n double[] GetInterestAccretion() ", "\n {", @@ -516,7 +528,7 @@ "\n .WithApplicability(x => x.Identity.Id.AocType == AocTypes.CF)", "\n .WithApplicability(x => x.Identity.Id.AocType == AocTypes.IA)", "\n .WithApplicability(x => ComputationHelper.AocTypeWithNoPv.Contains(x.Identity.Id.AocType) ||", - "\n (x.Identity.Id.AocType == AocTypes.CRU && x.Identity.AmountType != AmountTypes.CDR) )", + "\n (x.Identity.Id.AocType == AocTypes.CRU && !x.GetStorage().GetCdr().Contains(x.Identity.AmountType)) ) ", "\n );", "\n ", "\n [NotVisible][IdentityProperty][Dimension(typeof(EconomicBasis))]", @@ -543,7 +555,7 @@ "\n", "\npublic interface PresentValueWithInterestAccretion : PresentValue, IWithInterestAccretion {", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance && x.Identity.AmountType == AmountTypes.CDR)); ", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance && x.GetStorage().GetCdr().Contains(x.Identity.AmountType))); ", "\n [NotVisible] double[] PresentValue.Values => GetInterestAccretion();", "\n}", "\n", diff --git a/ifrs17/Import/3ImportScope-Actuals.ipynb b/ifrs17/Import/3ImportScope-Actuals.ipynb index 35c5d9d3..6810805f 100644 --- a/ifrs17/Import/3ImportScope-Actuals.ipynb +++ b/ifrs17/Import/3ImportScope-Actuals.ipynb @@ -29,7 +29,16 @@ { "cell_type": "markdown", "source": [ - "In this notebook the focus is on the calculation of actuals values. " + "Import scopes are divided in several notebooks:", + "\n- [Calculation of Identities](../Import/1ImportScope-Identities)", + "\n- [Calculation of Present Values](../Import/2ImportScope-PresentValue)", + "\n- Calculation of Actuals", + "\n- [Calculation of Technical Margin](../Import/4ImportScope-TechnicalMargin)", + "\n- [Creation of Ifrs Variables](../Import/5ImportScope-ToIfrsVar)", + "\n- [Calculation of Ifrs Variables](../Import/6ImportScope-Compute)", + "\n", + "\n

", + "\nIn this notebook the focus is on the calculation of actuals values." ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb b/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb index af618f2a..971435b4 100644 --- a/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb +++ b/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb @@ -29,7 +29,17 @@ { "cell_type": "markdown", "source": [ - "In this notebook the focus is on the calculation of Contractual Service Margin, Loss Component and Loss Recovery Component. ", + "Import scopes are divided in several notebooks:", + "\n- [Calculation of Identities](../Import/1ImportScope-Identities)", + "\n- [Calculation of Present Values](../Import/2ImportScope-PresentValue)", + "\n- [Calculation of Actuals](../Import/3ImportScope-Actuals)", + "\n- Calculation of Technical Margin", + "\n- [Creation of Ifrs Variables](../Import/5ImportScope-ToIfrsVar)", + "\n- [Calculation of Ifrs Variables](../Import/6ImportScope-Compute)", + "\n", + "\n

", + "\nIn this notebook the focus is on the calculation of Contractual Service Margin, Loss Component and Loss Recovery Component.", + "\n", "\n

", "\nThe Contractual Service Margin ($CSM$) denotes the unearned profit from an insurance contract or group of insurance contracts and plays a critical role in the calculation of profit & loss values. Similarly, the unearned loss is denoted by Loss Component ($LC$), Loss Recovery Component in the case of reinsurance contracts." ], @@ -234,7 +244,7 @@ "\n [NotVisible] string EconomicBasis => EconomicBases.L;", "\n ", "\n double Value => GetScope(Identity.DataNode).BeAmountTypes", - "\n .Except(GetStorage().GetNonAttributableAmountType())", + "\n .Except(GetStorage().GetNonAttributableAmountType().Concat(AmountTypes.CDR.RepeatOnce()))", "\n .Sum(at => GetScope((Identity, at, EstimateTypes.BE, (int?)null), o => o.WithContext(EconomicBasis)).Value) +", "\n GetScope(Identity).Value;", "\n ", diff --git a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb index 0fec8b4d..c421859b 100644 --- a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb +++ b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb @@ -29,7 +29,16 @@ { "cell_type": "markdown", "source": [ - "In this notebook the focus is on the creation of Ifrs Variable from the Scopes. " + "Import scopes are divided in several notebooks:", + "\n- [Calculation of Identities](../Import/1ImportScope-Identities)", + "\n- [Calculation of Present Values](../Import/2ImportScope-PresentValue)", + "\n- [Calculation of Actuals](../Import/3ImportScope-Actuals)", + "\n- [Calculation of Technical Margin](../Import/4ImportScope-TechnicalMargin)", + "\n- Creation of Ifrs Variables", + "\n- [Calculation of Ifrs Variables](../Import/6ImportScope-Compute)", + "\n", + "\n

", + "\nIn this notebook the focus is on the creation of Ifrs Variable from the Scopes." ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/6ImportScope-Compute.ipynb b/ifrs17/Import/6ImportScope-Compute.ipynb index a3b94c0f..68c6b320 100644 --- a/ifrs17/Import/6ImportScope-Compute.ipynb +++ b/ifrs17/Import/6ImportScope-Compute.ipynb @@ -29,7 +29,16 @@ { "cell_type": "markdown", "source": [ - "In this notebook the focus is on the calculation of the minimal set of Ifrs Variable given the import Format. " + "Import scopes are divided in several notebooks:", + "\n- [Calculation of Identities](../Import/1ImportScope-Identities)", + "\n- [Calculation of Present Values](../Import/2ImportScope-PresentValue)", + "\n- [Calculation of Actuals](../Import/3ImportScope-Actuals)", + "\n- [Calculation of Technical Margin](../Import/4ImportScope-TechnicalMargin)", + "\n- [Creation of Ifrs Variables](../Import/5ImportScope-ToIfrsVar)", + "\n- Calculation of Ifrs Variables", + "\n", + "\n

", + "\nIn this notebook the focus is on the calculation of the minimal set of Ifrs Variable given the import Format." ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index f566d2c0..514e0680 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -115,8 +115,10 @@ "\n //Parameters", "\n public Dictionary LockedInYieldCurve { get; private set; }", "\n public Dictionary> CurrentYieldCurve { get; private set; }", - "\n public Dictionary> PartnerRating { get; private set; }", - "\n public Dictionary> CreditDefaultRates { get; private set; }", + "\n public Dictionary> LockedInPartnerRating { get; private set; }", + "\n public Dictionary> CurrentPartnerRating { get; private set; }", + "\n public Dictionary> LockedInCreditDefaultRates { get; private set; }", + "\n public Dictionary> CurrentCreditDefaultRates { get; private set; }", "\n public Dictionary> SingleDataNodeParametersByGoc { get; private set; }", "\n public Dictionary>> InterDataNodeParametersByGoc { get; private set; }", "\n public Dictionary AocConfigurationByAocStep { get; private set; }", @@ -218,8 +220,16 @@ "\n DataNodesByImportScope = new Dictionary> { { ImportScope.Primary, primaryScope }, { ImportScope.Secondary, secondaryScope } };", "\n ", "\n // Parameters", - "\n PartnerRating = await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.Partner);", - "\n CreditDefaultRates = await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.CreditRiskRating);", + "\n CurrentPartnerRating = await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.Partner);", + "\n CurrentCreditDefaultRates = await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.CreditRiskRating);", + "\n var initialYears = DataNodeDataBySystemName.Values.Select(dn => dn.Year).ToHashSet();", + "\n LockedInPartnerRating = new Dictionary>();", + "\n LockedInCreditDefaultRates = new Dictionary>();", + "\n foreach (var year in initialYears)", + "\n {", + "\n LockedInPartnerRating[year] = await workspace.LoadCurrentParameterAsync(args with { Year = year, Month = args.Year == year ? args.Month : MonthInAYear }, x => x.Partner);", + "\n LockedInCreditDefaultRates[year] = await workspace.LoadCurrentParameterAsync(args with { Year = year, Month = args.Year == year ? args.Month : MonthInAYear }, x => x.CreditRiskRating);", + "\n }", "\n SingleDataNodeParametersByGoc = await workspace.LoadSingleDataNodeParametersAsync(args);", "\n LockedInYieldCurve = await workspace.LoadLockedInYieldCurveAsync(args, allImportScopes.Select(dn => DataNodeDataBySystemName[dn]));", "\n CurrentYieldCurve = await workspace.LoadCurrentYieldCurveAsync(args, allImportScopes.Select(dn => DataNodeDataBySystemName[dn])); //TODO Rename this variable", @@ -360,16 +370,28 @@ "\n //Accident years", "\n public IEnumerable GetAccidentYears(string dataNode) => AccidentYearsByDataNode.TryGetValue(dataNode, out var accidentYear) ? accidentYear : new int?[] { null };", "\n ", - "\n // Parameters", - "\n public double GetNonPerformanceRiskRate (ImportIdentity identity) {", - "\n var period = GetCreditDefaultRiskPeriod(identity) == PeriodType.BeginningOfPeriod ? PreviousPeriod : CurrentPeriod;", - "\n ", + "\n //Parameters", + "\n public double GetNonPerformanceRiskRate (ImportIdentity identity, string cdrBasis)", + "\n {", "\n if(!DataNodeDataBySystemName.TryGetValue(identity.DataNode, out var dataNodeData)) ApplicationMessage.Log(Error.DataNodeNotFound, identity.DataNode);", "\n if(dataNodeData.Partner == null) ApplicationMessage.Log(Error.PartnerNotFound, identity.DataNode);", - "\n // if Partner == Internal then return 0;", - "\n if(!PartnerRating.TryGetValue(dataNodeData.Partner, out var rating)) ApplicationMessage.Log(Error.RatingNotFound, dataNodeData.Partner);", - "\n if(!CreditDefaultRates.TryGetValue(rating[period].CreditRiskRating, out var rate)) ApplicationMessage.Log(Error.CreditDefaultRateNotFound, rating[period].CreditRiskRating);", - "\n return Math.Pow(1d + rate[period].Values[0], 1d / 12d) - 1d;", + "\n ", + "\n double rate;", + "\n if(cdrBasis == EconomicBases.C)", + "\n { ", + "\n var period = GetCreditDefaultRiskPeriod(identity) == PeriodType.BeginningOfPeriod ? PreviousPeriod : CurrentPeriod;", + "\n // if Partner == Internal then return 0;", + "\n if(!CurrentPartnerRating.TryGetValue(dataNodeData.Partner, out var currentRating)) ApplicationMessage.Log(Error.RatingNotFound, dataNodeData.Partner);", + "\n if(!CurrentCreditDefaultRates.TryGetValue(currentRating[period].CreditRiskRating, out var currentRate)) ApplicationMessage.Log(Error.CreditDefaultRateNotFound, currentRating[period].CreditRiskRating);", + "\n rate = currentRate[period].Values[0];", + "\n }", + "\n else", + "\n {", + "\n if(!LockedInPartnerRating[dataNodeData.Year].TryGetValue(dataNodeData.Partner, out var lockedRating)) ApplicationMessage.Log(Error.RatingNotFound, dataNodeData.Partner);", + "\n if(!LockedInCreditDefaultRates[dataNodeData.Year].TryGetValue(lockedRating.CreditRiskRating, out var lockedRate)) ApplicationMessage.Log(Error.CreditDefaultRateNotFound, lockedRating.CreditRiskRating);", + "\n rate = lockedRate.Values[0];", + "\n }", + "\n return Math.Pow(1d + rate, 1d / 12d) - 1d;", "\n }", "\n ", "\n public double GetPremiumAllocationFactor(ImportIdentity id) => SingleDataNodeParametersByGoc.TryGetValue(id.DataNode, out var singleDataNodeParameter) ", @@ -399,6 +421,7 @@ "\n public IEnumerable GetInvestmentClaims() => hierarchyCache.Get(AmountTypes.ICO).Descendants(includeSelf : true).Select(x => x.SystemName);", "\n public IEnumerable GetPremiums() => hierarchyCache.Get(AmountTypes.PR).Descendants(includeSelf : true).Select(x => x.SystemName);", "\n public IEnumerable GetClaims() => hierarchyCache.Get(AmountTypes.CL).Descendants().Select(x => x.SystemName);", + "\n public IEnumerable GetCdr() => hierarchyCache.Get(AmountTypes.CDR).Descendants(includeSelf: true).Select(x => x.SystemName);", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 7e899cdb..7b063015 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1369,15 +1369,21 @@ "\n if(values.Length == 0 && !parsingStorage.MandatoryAocSteps.Contains(new AocStep(aocType, novelty))) return null;", "\n }", "\n ", + "\n int? accidentYear = default;", + "\n if(hasAccidentYearColumn && datarow.Field(nameof(RawVariable.AccidentYear)) != null) {", + "\n if(!Int32.TryParse(datarow.Field(nameof(RawVariable.AccidentYear)), out var parsedAccidentYear)) { ", + "\n ApplicationMessage.Log(Error.AccidentYearTypeNotValid, datarow.Field(nameof(RawVariable.AccidentYear))); return null;", + "\n }", + "\n else accidentYear = (int?)parsedAccidentYear;", + "\n }", + "\n ", "\n var item = new RawVariable {", "\n DataNode = dataNode,", "\n AocType = aocType,", "\n Novelty = novelty,", "\n AmountType = valueType.AmountType,", "\n EstimateType = valueType.EstimateType,", - "\n AccidentYear = hasAccidentYearColumn && Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)", - "\n ? accidentYear", - "\n : (int?)null,", + "\n AccidentYear = accidentYear,", "\n Partition = parsingStorage.TargetPartitionByReportingNodeAndPeriod.Id,", "\n Values = Multiply(GetSign(ImportFormats.Cashflow, (aocType, valueType.AmountType, valueType.EstimateType, dataNodeData.IsReinsurance), parsingStorage.HierarchyCache), values)", "\n .Interpolate(parsingStorage.GetCashFlowPeriodicity(dataNode), parsingStorage.GetInterpolationMethod(dataNode))", @@ -1467,6 +1473,8 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", + "\n var hasAccidentYearColumn = dataSet.Tables[ImportFormats.Actual].Columns.Any(x => x.ColumnName == nameof(IfrsVariable.AccidentYear));", + "\n", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", "\n var dataNode = datarow.Field(nameof(DataNode));", @@ -1487,11 +1495,20 @@ "\n var currentPeriodValue = GetSign(ImportFormats.Actual, ", "\n (aocType, valueType.AmountType, valueType.EstimateType, dataNodeData.IsReinsurance), ", "\n parsingStorage.HierarchyCache) * datarow.Field(\"Value\").CheckStringForExponentialAndConvertToDouble();", + "\n ", + "\n int? accidentYear = default;", + "\n if(hasAccidentYearColumn && datarow.Field(nameof(RawVariable.AccidentYear)) != null) {", + "\n if(!Int32.TryParse(datarow.Field(nameof(RawVariable.AccidentYear)), out var parsedAccidentYear)) { ", + "\n ApplicationMessage.Log(Error.AccidentYearTypeNotValid, datarow.Field(nameof(RawVariable.AccidentYear))); return null;", + "\n }", + "\n else accidentYear = (int?)parsedAccidentYear;", + "\n }", + "\n ", "\n var item = new IfrsVariable {", "\n DataNode = dataNode,", "\n AocType = aocType,", "\n Novelty = Novelties.C,", - "\n AccidentYear = Int32.TryParse((datarow.Field(nameof(IfrsVariable.AccidentYear))), out var tempAccYear)? tempAccYear : (int?)null,", + "\n AccidentYear = accidentYear,", "\n AmountType = valueType.AmountType,", "\n EstimateType = valueType.EstimateType,", "\n Partition = parsingStorage.TargetPartitionByReportingNodeAndPeriod.Id,", @@ -1574,6 +1591,8 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish(); ", "\n", + "\n var hasAccidentYearColumn = dataSet.Tables[importFormat].Columns.Any(x => x.ColumnName == nameof(IfrsVariable.AccidentYear));", + "\n", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", "\n var dataNode = parsingStorage.ValidateDataNode(datarow.Field(nameof(DataNode)),importFormat);", @@ -1593,11 +1612,20 @@ "\n (aocStep.AocType, amountType, estimateType, parsingStorage.IsDataNodeReinsurance(dataNode)), ", "\n parsingStorage.HierarchyCache) * datarow.Field(\"Value\")", "\n .CheckStringForExponentialAndConvertToDouble();", + "\n", + "\n int? accidentYear = default;", + "\n if(hasAccidentYearColumn && datarow.Field(nameof(RawVariable.AccidentYear)) != null) {", + "\n if(!Int32.TryParse(datarow.Field(nameof(RawVariable.AccidentYear)), out var parsedAccidentYear)) { ", + "\n ApplicationMessage.Log(Error.AccidentYearTypeNotValid, datarow.Field(nameof(RawVariable.AccidentYear))); return null;", + "\n }", + "\n else accidentYear = (int?)parsedAccidentYear;", + "\n }", + "\n", "\n var iv = new IfrsVariable {", "\n DataNode = dataNode,", "\n AocType = aocStep.AocType,", "\n Novelty = aocStep.Novelty,", - "\n AccidentYear = Int32.TryParse((datarow.Field(nameof(IfrsVariable.AccidentYear))), out var accidentYear) ? accidentYear : (int?)null,", + "\n AccidentYear = accidentYear,", "\n AmountType = amountType,", "\n EstimateType = estimateType,", "\n EconomicBasis = economicBasis,", diff --git a/ifrs17/README.md b/ifrs17/README.md index f3229e57..f2d16ff3 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -18,7 +18,7 @@ Open our [**IFRS 17 Template**](https://portal.systemorph.cloud/project/ifrs17-t If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [Overview Calculation Engine](./OverviewCalculationEngine) notebook. You will be introduced to: - [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed -- [Import Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material +- [Import Calculation](./Import/1ImportScope-Identities) with in detail description using mathematical formulas and links to supporting material

IFRS 17 Solution Overview diff --git a/ifrs17/Report/ParameterReportMutableScopeInteractive.ipynb b/ifrs17/Report/ParameterReportMutableScopeInteractive.ipynb index 199e3776..6f252599 100644 --- a/ifrs17/Report/ParameterReportMutableScopeInteractive.ipynb +++ b/ifrs17/Report/ParameterReportMutableScopeInteractive.ipynb @@ -154,7 +154,7 @@ "\n async Task GetPartnerRatingReport()", "\n {", "\n await GetStorage().InitializeAsync((Year, Month), ReportingNode, Scenario, CurrencyType);", - "\n var data = await workspace.GetPartnerRatingsReportParametersAsync(GetArgs());", + "\n var data = await workspace.GetCurrentPartnerRatingsReportParametersAsync(GetArgs());", "\n return await report.ForObjects(data)", "\n .WithQuerySource(workspace)", "\n .GroupRowsBy(x => x.Partner)", @@ -166,7 +166,7 @@ "\n async Task GetDefaultRatesReport()", "\n {", "\n await GetStorage().InitializeAsync((Year, Month), ReportingNode, Scenario, CurrencyType);", - "\n var data = await workspace.GetCreditDefaultRatesReportParametersAsync(GetArgs());", + "\n var data = await workspace.GetCurrentCreditDefaultRatesReportParametersAsync(GetArgs());", "\n return await report.ForObjects(data)", "\n .WithQuerySource(workspace)", "\n .GroupRowsBy(x => x.CreditRiskRating)", diff --git a/ifrs17/Report/ParameterReportsQueries.ipynb b/ifrs17/Report/ParameterReportsQueries.ipynb index 13a2b8cb..81f6690a 100644 --- a/ifrs17/Report/ParameterReportsQueries.ipynb +++ b/ifrs17/Report/ParameterReportsQueries.ipynb @@ -163,6 +163,16 @@ "source": [ "public record PartnerRatingsReportParameter : ReportParameter {", "\n [IdentityProperty]", + "\n [NotAggregated]", + "\n [Dimension(typeof(int), nameof(InitialYear))]", + "\n [NotVisible]", + "\n public int InitialYear { get; init; }", + "\n", + "\n [IdentityProperty]", + "\n [NotVisible]", + "\n public string PartnerRatingType { get; init; }", + "\n", + "\n [IdentityProperty]", "\n [NotVisible]", "\n [Dimension(typeof(Partner))]", "\n public string Partner { get; init; }", @@ -172,6 +182,16 @@ "\n}", "\npublic record CreditDefaultRatesReportParameter : ReportParameter {", "\n [IdentityProperty]", + "\n [NotAggregated]", + "\n [Dimension(typeof(int), nameof(InitialYear))]", + "\n [NotVisible]", + "\n public int InitialYear { get; init; }", + "\n ", + "\n [IdentityProperty]", + "\n [NotVisible]", + "\n public string CreditDefaultRatesType { get; init; }", + "\n", + "\n [IdentityProperty]", "\n [Dimension(typeof(CreditRiskRating))]", "\n [NotVisible]", "\n public string CreditRiskRating { get; init; }", @@ -367,8 +387,8 @@ { "cell_type": "code", "source": [ - "public static async Task GetPartnerRatingsReportParametersAsync(this IWorkspace workspace, ImportArgs args) =>", - "\n (await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.Partner))", + "public static async Task GetCurrentPartnerRatingsReportParametersAsync(this IWorkspace workspace, ImportArgs args) {", + "\n var currentPartnerRating = (await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.Partner))", "\n .Values", "\n .SelectMany(x => x.Select(y => ", "\n new PartnerRatingsReportParameter { ", @@ -380,7 +400,39 @@ "\n CreditRiskRating = y.Value.CreditRiskRating", "\n }", "\n ))", - "\n .ToArray();" + "\n .ToArray();", + "\n ", + "\n return currentPartnerRating;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static async Task GetLockedInPartnerRatingsReportParametersAsync(this IWorkspace workspace, ImportArgs args) {", + "\n var initialYears = (await workspace.LoadDataNodesAsync(args)).Values.Select(dn => dn.Year).ToHashSet();", + "\n var lockedPartnerRating = Enumerable.Empty();", + "\n foreach (var y in initialYears) { ", + "\n var loadedPartnerRatingData = await workspace.LoadCurrentParameterAsync(args with { Year = y, Month = args.Year == y ? args.Month : MonthInAYear }, y => y.Partner);", + "\n lockedPartnerRating = lockedPartnerRating.Concat(loadedPartnerRatingData.Select(x => ", + "\n new PartnerRatingsReportParameter {", + "\n InitialYear = y,", + "\n PartnerRatingType = \"Locked-In Rating\",", + "\n Partner = x.Value.Partner,", + "\n Year = x.Value.Year,", + "\n Month = x.Value.Month,", + "\n Scenario = x.Value.Scenario,", + "\n CreditRiskRating = x.Value.CreditRiskRating", + "\n }", + "\n ));", + "\n ", + "\n }", + "\n ", + "\n return lockedPartnerRating.ToArray();", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -389,22 +441,22 @@ { "cell_type": "code", "source": [ - "public static async Task GetCreditDefaultRatesReportParametersAsync(this IWorkspace workspace, ImportArgs args) {", - "\n var partnerRatings = await workspace.GetPartnerRatingsReportParametersAsync(args);", + "public static async Task GetCurrentCreditDefaultRatesReportParametersAsync(this IWorkspace workspace, ImportArgs args) {", + "\n var partnerRatings = await workspace.GetCurrentPartnerRatingsReportParametersAsync(args);", "\n ", - "\n var creditDefaultRates = (await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.CreditRiskRating))", + "\n var currentCreditDefaultRates = (await workspace.LoadCurrentAndPreviousParameterAsync(args, x => x.CreditRiskRating))", "\n .Values", "\n .SelectMany(x => x.Select(y =>", - "\n new {", + "\n new CreditDefaultRatesReportParameter{", "\n Period = ((Period)y.Key),", "\n CreditRiskRating = y.Value.CreditRiskRating,", "\n Year = y.Value.Year,", "\n Month = y.Value.Month,", "\n Scenario = y.Value.Scenario}", - "\n ));", - "\n ", + "\n )).ToArray();", + "\n", "\n var partnerDefaultRates = partnerRatings.Join(", - "\n creditDefaultRates,", + "\n currentCreditDefaultRates,", "\n pr => new {pr.Period, pr.CreditRiskRating},", "\n cdr => new {cdr.Period, cdr.CreditRiskRating},", "\n (pr, cdr) => ", @@ -424,6 +476,42 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static async Task GetLockedInCreditDefaultRatesReportParametersAsync(this IWorkspace workspace, ImportArgs args) {", + "\n var initialYears = (await workspace.LoadDataNodesAsync(args)).Values.Select(dn => dn.Year).ToHashSet();", + "\n var lockedCreditDefaultRate = Enumerable.Empty();", + "\n foreach (var y in initialYears) { ", + "\n var loadedCreditDefaultRateData = await workspace.LoadCurrentParameterAsync(args with { Year = y, Month = args.Year == y ? args.Month : MonthInAYear }, y => y.CreditRiskRating);", + "\n lockedCreditDefaultRate = lockedCreditDefaultRate.Concat(loadedCreditDefaultRateData.Select(x => ", + "\n new CreditDefaultRatesReportParameter {", + "\n InitialYear = y,", + "\n CreditDefaultRatesType = \"Locked-In Rates\",", + "\n CreditRiskRating = x.Value.CreditRiskRating,", + "\n Year = x.Value.Year,", + "\n Month = x.Value.Month,", + "\n Scenario = x.Value.Scenario}", + "\n ));", + "\n ", + "\n }", + "\n", + "\n return lockedCreditDefaultRate.ToArray();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 6d4c0434..45db589a 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -275,12 +275,12 @@ "\n", "\npublic interface LockedBestEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", "\n IDataCube LockedBestEstimate => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BE)).FxData", - "\n .Filter((\"LiabilityType\", Identity.Id.LiabilityType), (\"EconomicBasis\", EconomicBases.L));", + "\n .Filter((\"LiabilityType\", Identity.Id.LiabilityType), (\"EconomicBasis\", EconomicBases.L), (\"AmountType\", \"!CDRI\"));", "\n}", "\n", "\npublic interface CurrentBestEstimate: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", "\n IDataCube CurrentBestEstimate => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BE)).FxData", - "\n .Filter((\"LiabilityType\", Identity.Id.LiabilityType), (\"EconomicBasis\", EconomicBases.C));", + "\n .Filter((\"LiabilityType\", Identity.Id.LiabilityType), (\"EconomicBasis\", EconomicBases.C), (\"AmountType\", \"!CDRI\"));", "\n}" ], "metadata": {},