diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv
index e50c9a45..85a30f1d 100644
--- a/ifrs17-template/Files/Dimensions.csv
+++ b/ifrs17-template/Files/Dimensions.csv
@@ -53,6 +53,7 @@ YCU,I,CalculatedTelescopic,4,EndOfPeriod,EndOfPeriod,BeginningOfPeriod,EndOfPeri
CRU,I,CalculatedTelescopic,4,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,80,1900,1
EV,I,Optional,4,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,90,1900,1
BOP,N,Optional,4,Average,EndOfPeriod,EndOfPeriod,BeginningOfPeriod,EndOfPeriod,100,1900,1
+MC,N,Optional,4,Average,EndOfPeriod,EndOfPeriod,BeginningOfPeriod,EndOfPeriod,105,1900,1
CF,N,Calculated,4,Average,NotApplicable,EndOfPeriod,Delta,EndOfPeriod,110,1900,1
IA,N,Calculated,4,Average,EndOfPeriod,EndOfPeriod,Delta,EndOfPeriod,120,1900,1
AU,N,Optional,4,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,EndOfPeriod,130,1900,1
@@ -99,8 +100,9 @@ EUR,Euro,,,,,,,,,,
GBP,British Pound,,,,,,,,,,
HKD,Hong Kong Dollar,,,,,,,,,,
ITL,Italian Lira,,,,,,,,,,
-PLN,Polish Zloty (since 01.01.95),,,,,,,,,,
+PLN,Polish Zloty,,,,,,,,,,
SKK,Slovakian Krona,,,,,,,,,,
+XTSHY,Testing Currency (High Yields),,,,,,,,,,
,,,,,,,,,,,
@@EconomicBasis,,,,,,,,,,,
SystemName,DisplayName,Order,,,,,,,,,
diff --git a/ifrs17-template/Files/Parameters/YieldCurve.csv b/ifrs17-template/Files/Parameters/YieldCurve.csv
index 892b7ee7..54460671 100644
--- a/ifrs17-template/Files/Parameters/YieldCurve.csv
+++ b/ifrs17-template/Files/Parameters/YieldCurve.csv
@@ -1,11 +1,14 @@
@@YieldCurve,,,,,,
Currency,Year,Month,Values0,Values1,Values2,Values3
EUR,2020,3,0.008685495,0.008685495,0.018498471,0.019966839
-CHF,2020,3,0.002,0.002,0.002,0.002
-CHF,2021,3,0.1,0.1,0.1,0.1
+CHF,2019,12,0,0,0.015,0.02
+CHF,2020,12,0.01,0.02,0.025,0.025
+CHF,2021,6,0.03,0.03,0.035,0.035
+CHF,2021,12,0.025,0.025,0.035,0.035
USD,2021,3,0.005,0.005,0.005,0.005
USD,2020,12,0.002,0.002,0.002,0.002
USD,2020,3,0.002,0.002,0.002,0.002
USD,2020,1,0.002,0.002,0.002,0.002
-GBP,2021,3,0.005,0.005,0.005,0.005
-GBP,2020,3,0.002,0.002,0.002,0.002
+GBP,2020,3,0.01,0.015,0.02,0.02
+GBP,2021,3,0.015,0.02,0.02,0.025
+XTSHY,2019,12,0.85,0.85,0.85,0.85
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseDataImport.ipynb b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseDataImport.ipynb
new file mode 100644
index 00000000..04c02bc4
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseDataImport.ipynb
@@ -0,0 +1,229 @@
+{
+ "metadata": {
+ "authors": [],
+ "kernelspec": {
+ "display_name": "Formula Framework",
+ "language": "C#",
+ "name": "C#"
+ },
+ "language_info": {
+ "file_extension": ".cs",
+ "mimetype": "text/plain",
+ "name": "C#"
+ },
+ "toc-autonumbering": "True",
+ "toc-showcode": "False"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5,
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "
Actuals Outside the Period Data Import
"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "This is the Data Import notebook for the Actuals Outside the Period case."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Set up and data import"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Reference Data and Parameters"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"../../Initialization/InitSystemorphRefDataToMemory\""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Data Nodes"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodes_ActualsCase_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodeStates_ActualsCase_CH_2020_1.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodeParameters_ActualsCase_CH_2020_1.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Transactional Data"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"NominalCashflows_ActualsCase_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"Actuals_ActualsCase_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"NominalCashflows_ActualsCase_CH_2021_6.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"Actuals_ActualsCase_CH_2021_6.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"NominalCashflows_ActualsCase_CH_2021_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"Actuals_ActualsCase_CH_2021_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Reset Workspace"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.InitializeFrom(DataSource);",
+ "\nifrs17.Reset(Workspace)"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ ""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseReports.ipynb b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseReports.ipynb
new file mode 100644
index 00000000..133580d4
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/ActualsUseCaseReports.ipynb
@@ -0,0 +1,1093 @@
+{
+ "metadata": {
+ "authors": [],
+ "kernelspec": {
+ "display_name": "Formula Framework",
+ "language": "C#",
+ "name": "C#"
+ },
+ "language_info": {
+ "file_extension": ".cs",
+ "mimetype": "text/plain",
+ "name": "C#"
+ },
+ "toc-autonumbering": "True",
+ "toc-showcode": "False"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5,
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ " Actuals Outside the Period
",
+ "\n",
+ "\n Written vs Effective Cashflows (Gross business)
"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Usually, actuarial cashflows for portfolio valuations are modelled on a \"due\" or \"written\" basis, meaning they are derived from the corresponding contractual obligations.",
+ "\nHowever, it is normal that the effective cashflows will not exactly follow the expected written ones and will therefore fall outside the reporting period.",
+ "\n",
+ "\nIn this case study we look at the effects of cashflows happening outside the expected reporting period, also referred to as Payables and Receivables in accounting language. The reconciliation between the written and effective cashflows is usually handled by the Actuals. This reconciliation must be taken into account, since the IFRS 17 Standard requires insurance liabilities to be measured according to the effective cashflows.",
+ "\n",
+ "\nWe can try to summarize the the cases for In Advance and Overdue actuals in a table. On the colums we define the due date of the payments in relation to the reporting period, and in the rows we define the effective date of the payments in relation to the reporting period. If we exclude the write off (WO) for now, we are left we the following possibilities:",
+ "\n",
+ "\n
",
+ "\n",
+ "\n| | **payment due date
before the reporting period** | **payment due date
in the reporting period** | **payment due date
after the reporting period** |",
+ "\n|---------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|",
+ "\n| **payment effective date
before the reporting period** | not relevant for this reporting period
*both due and effective payment dates are in the past* | release of balance sheet in advance position (-CF_A)
*payment due in this period already settled in previous periods* | existing in advance balance
*remaining in advance reserve from previous periods and payment is not due yet* |",
+ "\n| **payment effective date
in the reporting period** | release of balance sheet overdue position (-CF_O)
*overdue payment from previous periods settled in this period* | neither in advance nor overdue balance
*the due and effective payment dates fall within the reporting period* | increase of balance sheet in advance position (CF_A)
*payment settled in this period is not due yet* |",
+ "\n| **payment effective date
after the reporting period** | unchanged overdue balance
*existing overdue reserve from previous periods and payment has not been settled* | increase of balance sheet overdue position (CF_O)
*payment due in this period has not been settled* | not relevant for this reporting period
*both due and effective payment dates are in the future* |",
+ "\n",
+ "\n
",
+ "\n",
+ "\nWrite off (WO) of the Receivables (In Advance Claims and Overdue Premimus for Gross business) would also release the balance like the corresponding entries in the table above (-CF_A and -CF_O). However, while the releases shown in the table above do not impact the Financial Performance, written off amounts will. ",
+ "\n",
+ "\nWe will now look at a few scenarios in reference to a base case. We have modelled 3 reporting periods (2020 12, 2021 6 and 2021 12, where the first number is the reporting year and the second is the reporting month) and assume we start with only New Business in the beginning of 2020 and the portfolio completely runs-off in the end of 2021. In summary:",
+ "\n",
+ "\n- **2020 12**: End of year reporting for the first year: we see New Business coming in and the corresponding model adjustments for future services. We also introduce the outstanding Payables and Receivables according to the scenarios.",
+ "\n- **2021 6**: Mid year reporting for the second year: we see the development of the GIC for half a year. Some New Businss stills comes in. We also see how Payables and Receivables have changed.",
+ "\n- **2021 12**: End of year for the second year: we see the GIC goes into run-off and all liabilities should be relseased. This also applies to the outstanding balance for Payables and Receivables, which are completely released with settlement payments or write offs. ",
+ "\n",
+ "\nWe are modelling the Gross case and have defined the following GICs (Valuation Approach is BBA):",
+ "\n",
+ "\n - **MZ 2.1 Written**: all cashflows for this GIC follow exactly the written cashflows expected in the atuarial model. It is our base case.",
+ "\n - **MZ 2.2 OA Premium**: in this case the **Premium is overdue** in the 1st reporting period (**Receivable Premium**). In the subsequent periods, some is received and some is written off.",
+ "\n - **MZ 2.3 AA Claim**: in this case the **Claim is paid in advance** in the 1st reporting period (**Receivable Claim**). In the subsequent periods, some is received and some is written off.",
+ "\n - **MZ 2.4 AA Premium / OA Claim**: in this case we have received **Premium in advance** (**Payable Premium**), and also have an **overdue Claim** payment (**Payable Claim**). In the subsequent periods, we have settled the actuals accordingly.",
+ "\n",
+ "\nThe only difference between all cases is the timing of the effective cashflows (paid in advance and overdue actuals), with all other inputs and parameters exctly the same. For simplicity, we only added Premium and Claims (Non Investment Component) amount types.",
+ "\n"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Data Import"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We call the ActualsUseCaseDataImport notebook, where the data is imported."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"ActualsUseCaseDataImport\""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Best Estimate Present Value of Cashflows",
+ "\n",
+ "\n"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We start by looking at the Best Estimate Present Value of Cashflows of MZ 2.1 Written (base case) for the 3 reporting periods."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var pv = ifrs17.PresentValues;",
+ "\npv.ReportingNode = \"CH\";",
+ "\npv.ReportingPeriod = (2020, 12);",
+ "\npv.CurrencyType = CurrencyType.Contractual;",
+ "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};",
+ "\npv.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await pv.ToReportAsync) with {Height = 720}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var pv = ifrs17.PresentValues;",
+ "\npv.ReportingNode = \"CH\";",
+ "\npv.ReportingPeriod = (2021, 6);",
+ "\npv.CurrencyType = CurrencyType.Contractual;",
+ "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};",
+ "\npv.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await pv.ToReportAsync) with {Height = 720}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var pv = ifrs17.PresentValues;",
+ "\npv.ReportingNode = \"CH\";",
+ "\npv.ReportingPeriod = (2021, 12);",
+ "\npv.CurrencyType = CurrencyType.Contractual;",
+ "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};",
+ "\npv.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await pv.ToReportAsync) with {Height = 720}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Risk Adjustment"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now look at the Best Estimate Risk Adjustment of MZ 2.1 Written (base case) for the 3 reporting periods."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var ra = ifrs17.RiskAdjustments;",
+ "\nra.ReportingNode = \"CH\";",
+ "\nra.ReportingPeriod = (2020, 12);",
+ "\nra.ColumnSlices = new string[]{};",
+ "\nra.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await ra.ToReportAsync) with {Height = 800}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var ra = ifrs17.RiskAdjustments;",
+ "\nra.ReportingNode = \"CH\";",
+ "\nra.ReportingPeriod = (2021, 6);",
+ "\nra.ColumnSlices = new string[]{};",
+ "\nra.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await ra.ToReportAsync) with {Height = 800}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var ra = ifrs17.RiskAdjustments;",
+ "\nra.ReportingNode = \"CH\";",
+ "\nra.ReportingPeriod = (2021, 12);",
+ "\nra.ColumnSlices = new string[]{};",
+ "\nra.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await ra.ToReportAsync) with {Height = 800}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Fulfilment Cash Flows"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "The corresponding Fulfilment Cash Flows of MZ 2.1 Written (base case) for the 3 reporting periods are shown below."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;",
+ "\nfulfillmentCashflows.ReportingNode = \"CH\";",
+ "\nfulfillmentCashflows.ReportingPeriod = (2020, 12);",
+ "\nfulfillmentCashflows.ColumnSlices = new string[]{\"EstimateType\"};",
+ "\nfulfillmentCashflows.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;",
+ "\nfulfillmentCashflows.ReportingNode = \"CH\";",
+ "\nfulfillmentCashflows.ReportingPeriod = (2021, 6);",
+ "\nfulfillmentCashflows.ColumnSlices = new string[]{\"EstimateType\"};",
+ "\nfulfillmentCashflows.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;",
+ "\nfulfillmentCashflows.ReportingNode = \"CH\";",
+ "\nfulfillmentCashflows.ReportingPeriod = (2021, 12);",
+ "\nfulfillmentCashflows.ColumnSlices = new string[]{\"EstimateType\"};",
+ "\nfulfillmentCashflows.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Written Actuals"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now look at the Written Actuals of MZ 2.1 Written (base case) for the 3 reporting periods. These actuals are also the same for all cases, as they Written Actuals follow the contractual obligations."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var writtenActual = ifrs17.WrittenActuals;",
+ "\nwrittenActual.ReportingNode = \"CH\";",
+ "\nwrittenActual.ReportingPeriod = (2020, 12);",
+ "\nwrittenActual.ColumnSlices = new string[]{};",
+ "\nwrittenActual.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await writtenActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var writtenActual = ifrs17.WrittenActuals;",
+ "\nwrittenActual.ReportingNode = \"CH\";",
+ "\nwrittenActual.ReportingPeriod = (2021, 6);",
+ "\nwrittenActual.ColumnSlices = new string[]{};",
+ "\nwrittenActual.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await writtenActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var writtenActual = ifrs17.WrittenActuals;",
+ "\nwrittenActual.ReportingNode = \"CH\";",
+ "\nwrittenActual.ReportingPeriod = (2021, 12);",
+ "\nwrittenActual.ColumnSlices = new string[]{};",
+ "\nwrittenActual.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await writtenActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Paid in Advance and Overdue Actuals"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "As this point we start to have differences for all scenarios. We show below the effective actuals, i.e., those falling outside the reporting period, also known as Payables and Receivables.",
+ "\n",
+ "\nThe case case MZ 2.1 Written will not show any data by design, as all effective actuals and corresponding due dates occur within the reporting period."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We are introducing In Advance and Overdue reserves for the scenarios described above (CF_A and CF_O cases in the table above), and it is important to note the sign convention (Receivables bear a negative sign, while Payables a positive sign). This convention becomes relavent when determining the Liability of Remaining Coverage below, as it will bring the LRC to either to a more Asset-like character (negative) or Liability-like character (positive)."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var accrualActual = ifrs17.AccrualActuals;",
+ "\naccrualActual.ReportingNode = \"CH\";",
+ "\naccrualActual.ReportingPeriod = (2020, 12);",
+ "\naccrualActual.ColumnSlices = new string[]{ \"GroupOfContract\", \"EstimateType\", \"AmountType\" };",
+ "\naccrualActual.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};",
+ "\n(await accrualActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now see what happens to the In Advance and Overdue reserves for each scenarios. We have introduced some write off (WO) for the Receivables, and no settlement has been made yet. We also notice a further increase of In Advance Premium Payments (CF_A), while Overdue Claims remain unchanged."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var accrualActual = ifrs17.AccrualActuals;",
+ "\naccrualActual.ReportingNode = \"CH\";",
+ "\naccrualActual.ReportingPeriod = (2021, 6);",
+ "\naccrualActual.ColumnSlices = new string[]{ \"GroupOfContract\", \"EstimateType\", \"AmountType\" };",
+ "\naccrualActual.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};",
+ "\n(await accrualActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Since all cases run-off in the end of the period, we must also check that all correspondings balances go to zero. We see that some Receivables have been settled (-CF_A and -CF_O), but also the write off (WO) increased, releasing the entire balance as expected. Payables have been also been fully settled (-CF_A and -CF_O) without write offs (as they are not applicable)."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var accrualActual = ifrs17.AccrualActuals;",
+ "\naccrualActual.ReportingNode = \"CH\";",
+ "\naccrualActual.ReportingPeriod = (2021, 12);",
+ "\naccrualActual.ColumnSlices = new string[]{ \"GroupOfContract\", \"EstimateType\", \"AmountType\" };",
+ "\naccrualActual.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};",
+ "\n(await accrualActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Actuarial Experience Adjustment"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now look at the Actuarial Experience Adjustment of MZ 2.1 Written (base case) for the 3 reporting periods. Here we only look at Written Actuals and therefore the values for all scenarios is still exactly the same."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var experienceAdjustments = ifrs17.ExperienceAdjustments;",
+ "\nexperienceAdjustments.ReportingNode = \"CH\";",
+ "\nexperienceAdjustments.ReportingPeriod = (2020, 12);",
+ "\nexperienceAdjustments.ColumnSlices = new string[]{};",
+ "\nexperienceAdjustments.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await experienceAdjustments.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var experienceAdjustments = ifrs17.ExperienceAdjustments;",
+ "\nexperienceAdjustments.ReportingNode = \"CH\";",
+ "\nexperienceAdjustments.ReportingPeriod = (2021, 6);",
+ "\nexperienceAdjustments.ColumnSlices = new string[]{};",
+ "\nexperienceAdjustments.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await experienceAdjustments.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var experienceAdjustments = ifrs17.ExperienceAdjustments;",
+ "\nexperienceAdjustments.ReportingNode = \"CH\";",
+ "\nexperienceAdjustments.ReportingPeriod = (2021, 12);",
+ "\nexperienceAdjustments.ColumnSlices = new string[]{};",
+ "\nexperienceAdjustments.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await experienceAdjustments.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Contractual Service Margin / Loss Component / Loss Recovery Component"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now look at the Contractual Service Margin and Loss Component of MZ 2.1 Written (base case) for the 3 reporting periods."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;",
+ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";",
+ "\nallocatedTechnicalMargins.ReportingPeriod = (2020, 12);",
+ "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};",
+ "\nallocatedTechnicalMargins.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;",
+ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";",
+ "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 6);",
+ "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};",
+ "\nallocatedTechnicalMargins.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;",
+ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";",
+ "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 12);",
+ "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};",
+ "\nallocatedTechnicalMargins.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC Actuarial"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We now look at the Actuarial Liability of Remaining Coverage of MZ 2.1 Written (base case) for the 3 reporting periods. This report does not include any effective actuals, as it show the actuarial view of the LRC. Therefore, also here the results are the same for all scenarios."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var actuarialLrc = ifrs17.ActuarialLrc;",
+ "\nactuarialLrc.ReportingNode = \"CH\";",
+ "\nactuarialLrc.ReportingPeriod = (2020, 12);",
+ "\nactuarialLrc.ColumnSlices = new string[]{};",
+ "\nactuarialLrc.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await actuarialLrc.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var actuarialLrc = ifrs17.ActuarialLrc;",
+ "\nactuarialLrc.ReportingNode = \"CH\";",
+ "\nactuarialLrc.ReportingPeriod = (2021, 6);",
+ "\nactuarialLrc.ColumnSlices = new string[]{};",
+ "\nactuarialLrc.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await actuarialLrc.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var actuarialLrc = ifrs17.ActuarialLrc;",
+ "\nactuarialLrc.ReportingNode = \"CH\";",
+ "\nactuarialLrc.ReportingPeriod = (2021, 12);",
+ "\nactuarialLrc.ColumnSlices = new string[]{};",
+ "\nactuarialLrc.DataFilter = new []{ (\"GroupOfContract\", \"MZ2.1\") };",
+ "\n(await actuarialLrc.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC "
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Finally we come to the effective Liability of Remaining Coverage, which includes the effect of the In Advanced and Overdue actuals. To take these into account, we must add these balances to the Actuarial LRC."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "This is the first year of the GIC, meaning the opening is zero and all the balance comes from the New Business. Therefore, the changes in balance is equivalent to the closing balance (EOP).",
+ "\n",
+ "\nMZ 2.1 Written (base case) ends with a negative LRC balance, giving it a slight Asset-like character. This comes from favorable Best Estimate Present Value of Cashflows, where the Premium (cass flow in) outweighs the Claims (cash flow out).",
+ "\n",
+ "\nFor MZ 2.2 OA Premium and MZ 2.3 AA Claim, there is a future expectation of effective payments, as we have outstanding Receivables (In Advance Claims and Overdue Premium). For both cases this means a further decrease of the LRC balance (more negative).",
+ "\nFor MZ 2.2 OA Premium, we must decrease the actuarial cash flows to incorporate the expected recovery of the overdue Premium.",
+ "\nFor MZ 2.2 AA Claim, we must decrease the actuarial cash flows to incorporate the in advance payment of the Claim not due yet.",
+ "\n",
+ "\nFor MZ 2.4 AA Premium / OA Claim, the effect is exactly the opposite, as we are dealing with Payables. For this case we observe an increase of the LRC balance (becomes positive).",
+ "\nFor MZ 2.4 AA Premium / OA Claim, we must increase the actuarial cash flows to incorporate the in advance payment of the Premium not due yet, and the delayed payment of the overdue Claim.",
+ "\n"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var lrc = ifrs17.Lrc;",
+ "\nlrc.ReportingNode = \"CH\";",
+ "\nlrc.ReportingPeriod = (2020, 12);",
+ "\nlrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};",
+ "\nlrc.DataFilter = null;",
+ "\n(await lrc.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Here we look at what happened half a year later.",
+ "\nAs mentioned above we introduce some write off for the Receivables, and some increase in balance for the In Advance Premium Payments.",
+ "\n",
+ "\nFor MZ 2.1 Written (base case), some adverse devleopment heppened and the LRC becomes positive during the period. If we look into the details, there is a deterioration of the results (Actuals) and the expectation has also been adjusted. Furthermore, the CSM turns into a Loss Component.",
+ "\n",
+ "\nFor MZ 2.2 OA Premium and MZ 2.3 AA Claim, we have recognized some write offs for part of the overdue amounts, without any further release. This affects the LRC balance, but since there is still some outstanding balance, the LRC stll moves towards a more negative value when compared to the base case.",
+ "\n",
+ "\nFor MZ 2.4 AA Premium / OA Claim, we had no movements for the Overdue Claims, but we see an further increase in the In Advance Premium. Thus, it must increase even more the liability character of the LRC.",
+ "\n"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var lrc = ifrs17.Lrc;",
+ "\nlrc.ReportingNode = \"CH\";",
+ "\nlrc.ReportingPeriod = (2021, 6);",
+ "\nlrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};",
+ "\nlrc.DataFilter = null;",
+ "\n(await lrc.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "This is the closing period of our example. All liability must be released at the end of the period. Indeed, the LRC balance goes to zero in all cases.",
+ "\nAs seen above, the release os the In Advance or Overdue balances happens either with settlement of payments, or write off in the case of Receivables."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var lrc = ifrs17.Lrc;",
+ "\nlrc.ReportingNode = \"CH\";",
+ "\nlrc.ReportingPeriod = (2021, 12);",
+ "\nlrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};",
+ "\nlrc.DataFilter = null;",
+ "\n(await lrc.ToReportAsync) with {Height = 300}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Financial Performance"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "The last part of the analsys refers to the Financial Performance"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2020 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "This is the first period, and we did not have any write off. Thus, the Financial Performance is the same for all scenarios, as In Advance and Overdue balances do not have an impact."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var financialPerformance = ifrs17.FinancialPerformance;",
+ "\nfinancialPerformance.ReportingNode = \"CH\";",
+ "\nfinancialPerformance.ReportingPeriod = (2020, 12);",
+ "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\nfinancialPerformance.DataFilter = null;",
+ "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 6"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "In the subsequent period of this analsys, we introduced some write off for the Receivables. This impacts MZ 2.2 OA Premium and MZ 2.3 AA Claim, decreasing the Insurance Service Result by the ammounts written off. The remaining scenarios (MZ 2.1 Written and MZ 2.4 AA Premium / OA Claim) are still equal, as there no notion of write offs in these cases.",
+ "\n",
+ "\nFor MZ 2.2 OA Premium, the write off is recognized at the Insurance Revenue, Overdue Actuals.",
+ "\n",
+ "\nFor MZ 2.3 AA Claim, the write off is recognized at the Insurance Service Expense, Advance Actuals."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var financialPerformance = ifrs17.FinancialPerformance;",
+ "\nfinancialPerformance.ReportingNode = \"CH\";",
+ "\nfinancialPerformance.ReportingPeriod = (2021, 6);",
+ "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\nfinancialPerformance.DataFilter = null;",
+ "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2021 12"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "In the last period, we see the final results in the Financial Performance.",
+ "\nAs before, MZ 2.2 OA Premium and MZ 2.3 AA Claim have a lower Insurance Service Result in comparison to MZ 2.1 Written (base case) due to the write offs.",
+ "\nSimilarly, MZ 2.1 Written and MZ 2.4 AA Premium / OA Claim continue to show the same results."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var financialPerformance = ifrs17.FinancialPerformance;",
+ "\nfinancialPerformance.ReportingNode = \"CH\";",
+ "\nfinancialPerformance.ReportingPeriod = (2021, 12);",
+ "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\nfinancialPerformance.DataFilter = null;",
+ "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ ""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2020_12.csv
new file mode 100644
index 00000000..45616c23
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2020_12.csv
@@ -0,0 +1,17 @@
+@@Main,,,,,
+ReportingNode,Year,Month,,,
+CH,2020,12,,,
+@@Actual,,,,,
+DataNode,AocType,AmountType,EstimateType,AccidentYear,Value
+MZ2.1,CF,PR,A,,413
+MZ2.1,CF,NIC,A,,-311
+MZ2.2,CF,PR,A,,413
+MZ2.2,CF,NIC,A,,-311
+MZ2.2,CF,PR,OA,,-200
+MZ2.3,CF,PR,A,,413
+MZ2.3,CF,NIC,A,,-311
+MZ2.3,CF,NIC,AA,,-150
+MZ2.4,CF,PR,A,,413
+MZ2.4,CF,NIC,A,,-311
+MZ2.4,CF,PR,AA,,200
+MZ2.4,CF,NIC,OA,,150
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_12.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_12.csv
new file mode 100644
index 00000000..8f4a7ee5
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_12.csv
@@ -0,0 +1,19 @@
+@@Main,,,,,
+ReportingNode,Year,Month,,,
+CH,2021,12,,,
+@@Actual,,,,,
+DataNode,AocType,AmountType,EstimateType,AccidentYear,Value
+MZ2.1,CF,PR,A,,551
+MZ2.1,CF,NIC,A,,-455
+MZ2.2,CF,PR,A,,551
+MZ2.2,CF,NIC,A,,-455
+MZ2.2,WO,PR,OA,,150
+MZ2.2,CF,PR,OA,,50
+MZ2.3,CF,PR,A,,551
+MZ2.3,CF,NIC,A,,-455
+MZ2.3,WO,NIC,AA,,125
+MZ2.3,CF,NIC,AA,,25
+MZ2.4,CF,PR,A,,551
+MZ2.4,CF,NIC,A,,-455
+MZ2.4,CF,PR,AA,,-200
+MZ2.4,CF,NIC,OA,,-150
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_6.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_6.csv
new file mode 100644
index 00000000..4e8662cd
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/Actuals_ActualsCase_CH_2021_6.csv
@@ -0,0 +1,16 @@
+@@Main,,,,,
+ReportingNode,Year,Month,,,
+CH,2021,6,,,
+@@Actual,,,,,
+DataNode,AocType,AmountType,EstimateType,AccidentYear,Value
+MZ2.1,CF,PR,A,,296
+MZ2.1,CF,NIC,A,,-221
+MZ2.2,CF,PR,A,,296
+MZ2.2,CF,NIC,A,,-221
+MZ2.2,WO,PR,OA,,100
+MZ2.3,CF,PR,A,,296
+MZ2.3,CF,NIC,A,,-221
+MZ2.3,WO,NIC,AA,,75
+MZ2.4,CF,PR,A,,296
+MZ2.4,CF,NIC,A,,-221
+MZ2.4,CF,PR,AA,,100
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeParameters_ActualsCase_CH_2020_1.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeParameters_ActualsCase_CH_2020_1.csv
new file mode 100644
index 00000000..cabec2c8
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeParameters_ActualsCase_CH_2020_1.csv
@@ -0,0 +1,10 @@
+@@Main,,
+ReportingNode,Year,Month
+CH,2020,1
+,,
+@@SingleDataNodeParameter,,
+DataNode,PremiumAllocation,
+MZ2.1,0.5,
+MZ2.2,0.5,
+MZ2.3,0.5,
+MZ2.4,0.5,
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeStates_ActualsCase_CH_2020_1.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeStates_ActualsCase_CH_2020_1.csv
new file mode 100644
index 00000000..81cd2511
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodeStates_ActualsCase_CH_2020_1.csv
@@ -0,0 +1,10 @@
+@@Main,,
+ReportingNode,Year,Month
+CH,2020,1
+,,
+@@DataNodeState,,
+DataNode,State,
+MZ2.1,Active,
+MZ2.2,Active,
+MZ2.3,Active,
+MZ2.4,Active,
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodes_ActualsCase_CH.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodes_ActualsCase_CH.csv
new file mode 100644
index 00000000..cde31212
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/DataNodes_ActualsCase_CH.csv
@@ -0,0 +1,14 @@
+@@Main,,,,,
+ReportingNode,,,,,
+CH,,,,,
+,,,,,
+@@InsurancePortfolio,,,,,
+SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType
+MZ2,Actuals Case,CHF,ANN,BBA,Default
+,,,,,
+@@GroupOfInsuranceContract,,,,,
+SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability
+MZ2.1,MZ 2.1 Written,MZ2,2020,LRC,P
+MZ2.2,MZ 2.2 OA Premium,MZ2,2020,LRC,P
+MZ2.3,MZ 2.3 AA Claim,MZ2,2020,LRC,P
+MZ2.4,MZ 2.4 AA Premium / OA Claim,MZ2,2020,LRC,P
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2020_12.csv
new file mode 100644
index 00000000..3209b86f
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2020_12.csv
@@ -0,0 +1,45 @@
+@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ReportingNode,Year,Month,,,,,,,,,,,,,,,,,,,,,,,,,,,
+CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,,
+@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23
+MZ2.1,PR,BE,BOP,N,,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.1,NIC,BE,BOP,N,,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15
+MZ2.1,,RA,BOP,N,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.1,PR,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.1,,RA,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.1,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
+MZ2.1,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.2,PR,BE,BOP,N,,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.2,NIC,BE,BOP,N,,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15
+MZ2.2,,RA,BOP,N,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.2,PR,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.2,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.2,,RA,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.2,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.2,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.2,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
+MZ2.2,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.3,PR,BE,BOP,N,,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.3,NIC,BE,BOP,N,,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15
+MZ2.3,,RA,BOP,N,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.3,PR,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.3,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.3,,RA,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.3,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.3,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.3,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
+MZ2.3,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.4,PR,BE,BOP,N,,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.4,NIC,BE,BOP,N,,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15,-15,-15,-15,-30,-30,-45,-45,-30,-30,-15,-15,-15
+MZ2.4,,RA,BOP,N,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.4,PR,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.4,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.4,,RA,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ2.4,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,105,0,0,105,0,0,105,0,0
+MZ2.4,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-15,-15,-15,-35,-35,-45,-45,-35,-35,-15,-15,-15
+MZ2.4,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
+MZ2.4,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_12.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_12.csv
new file mode 100644
index 00000000..208149c0
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_12.csv
@@ -0,0 +1,57 @@
+@@Main,,,,,,,,,,,,,,,,,
+ReportingNode,Year,Month,,,,,,,,,,,,,,,
+CH,2021,12,,,,,,,,,,,,,,,
+@@Cashflow,,,,,,,,,,,,,,,,,
+DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11
+MZ2.1,PR,BE,MC,I,,102,0,0,102,0,0,102,0,0,102,0,0
+MZ2.1,NIC,BE,MC,I,,-15,-15,-15,-45,-45,-40,-40,-40,-40,-15,-15,-15
+MZ2.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.1,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.1,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-11.25,-11.25,-8.75,-8.75,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.1,PR,BE,MC,N,,51,0,0,51,0,0,0,0,0,0,0,0
+MZ2.1,NIC,BE,MC,N,,-5,-5,-5,-20,-20,-10,-10,-10,-10,-5,-5,-5
+MZ2.1,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.1,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.1,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.2,PR,BE,MC,I,,102,0,0,102,0,0,102,0,0,102,0,0
+MZ2.2,NIC,BE,MC,I,,-15,-15,-15,-45,-45,-40,-40,-40,-40,-15,-15,-15
+MZ2.2,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.2,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.2,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-11.25,-11.25,-8.75,-8.75,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.2,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.2,PR,BE,MC,N,,51,0,0,51,0,0,0,0,0,0,0,0
+MZ2.2,NIC,BE,MC,N,,-5,-5,-5,-20,-20,-10,-10,-10,-10,-5,-5,-5
+MZ2.2,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.2,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.2,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.2,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.2,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.3,PR,BE,MC,I,,102,0,0,102,0,0,102,0,0,102,0,0
+MZ2.3,NIC,BE,MC,I,,-15,-15,-15,-45,-45,-40,-40,-40,-40,-15,-15,-15
+MZ2.3,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.3,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.3,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-11.25,-11.25,-8.75,-8.75,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.3,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.3,PR,BE,MC,N,,51,0,0,51,0,0,0,0,0,0,0,0
+MZ2.3,NIC,BE,MC,N,,-5,-5,-5,-20,-20,-10,-10,-10,-10,-5,-5,-5
+MZ2.3,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.3,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.3,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.3,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.3,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.4,PR,BE,MC,I,,102,0,0,102,0,0,102,0,0,102,0,0
+MZ2.4,NIC,BE,MC,I,,-15,-15,-15,-45,-45,-40,-40,-40,-40,-15,-15,-15
+MZ2.4,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.4,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.4,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-11.25,-11.25,-8.75,-8.75,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.4,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.4,PR,BE,MC,N,,51,0,0,51,0,0,0,0,0,0,0,0
+MZ2.4,NIC,BE,MC,N,,-5,-5,-5,-20,-20,-10,-10,-10,-10,-5,-5,-5
+MZ2.4,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.4,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.4,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
+MZ2.4,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.4,,RA,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0
diff --git a/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_6.csv b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_6.csv
new file mode 100644
index 00000000..53260d5c
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/ActualsOutsideThePeriod/NominalCashflows_ActualsCase_CH_2021_6.csv
@@ -0,0 +1,57 @@
+@@Main,,,,,,,,,,,,,,,,,
+ReportingNode,Year,Month,,,,,,,,,,,,,,,
+CH,2021,6,,,,,,,,,,,,,,,
+@@Cashflow,,,,,,,,,,,,,,,,,
+DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11
+MZ2.1,PR,BE,MC,I,,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.1,NIC,BE,MC,I,,-15,-15,-15,-40,-40,-45,-45,-40,-40,-15,-15,-15
+MZ2.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.1,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.1,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-8.75,-8.75,-11.25,-11.25,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.1,PR,BE,MC,N,,50,0,0,50,0,0,0,0,0,0,0,0
+MZ2.1,NIC,BE,MC,N,,-5,-5,-5,-10,-10,-20,-20,-10,-10,-5,-5,-5
+MZ2.1,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.1,PR,BE,CL,C,,0,0,0,0,0,0,100,0,0,100,0,0
+MZ2.1,NIC,BE,CL,C,,0,0,0,0,0,0,-65,-50,-50,-20,-20,-20
+MZ2.1,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.1,,RA,CL,C,,0,0,0,0,0,0,-3.25,-3.25,-3.25,-3.25,-3.25,-3.25
+MZ2.2,PR,BE,MC,I,,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.2,NIC,BE,MC,I,,-15,-15,-15,-40,-40,-45,-45,-40,-40,-15,-15,-15
+MZ2.2,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.2,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.2,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-8.75,-8.75,-11.25,-11.25,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.2,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.2,PR,BE,MC,N,,50,0,0,50,0,0,0,0,0,0,0,0
+MZ2.2,NIC,BE,MC,N,,-5,-5,-5,-10,-10,-20,-20,-10,-10,-5,-5,-5
+MZ2.2,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.2,PR,BE,CL,C,,0,0,0,0,0,0,100,0,0,100,0,0
+MZ2.2,NIC,BE,CL,C,,0,0,0,0,0,0,-65,-50,-50,-20,-20,-20
+MZ2.2,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.2,,RA,CL,C,,0,0,0,0,0,0,-3.25,-3.25,-3.25,-3.25,-3.25,-3.25
+MZ2.3,PR,BE,MC,I,,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.3,NIC,BE,MC,I,,-15,-15,-15,-40,-40,-45,-45,-40,-40,-15,-15,-15
+MZ2.3,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.3,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.3,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-8.75,-8.75,-11.25,-11.25,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.3,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.3,PR,BE,MC,N,,50,0,0,50,0,0,0,0,0,0,0,0
+MZ2.3,NIC,BE,MC,N,,-5,-5,-5,-10,-10,-20,-20,-10,-10,-5,-5,-5
+MZ2.3,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.3,PR,BE,CL,C,,0,0,0,0,0,0,100,0,0,100,0,0
+MZ2.3,NIC,BE,CL,C,,0,0,0,0,0,0,-65,-50,-50,-20,-20,-20
+MZ2.3,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.3,,RA,CL,C,,0,0,0,0,0,0,-3.25,-3.25,-3.25,-3.25,-3.25,-3.25
+MZ2.4,PR,BE,MC,I,,100,0,0,100,0,0,100,0,0,100,0,0
+MZ2.4,NIC,BE,MC,I,,-15,-15,-15,-40,-40,-45,-45,-40,-40,-15,-15,-15
+MZ2.4,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ2.4,PR,BE,BOP,N,,52.5,0,0,52.5,0,0,0,0,0,0,0,0
+MZ2.4,NIC,BE,BOP,N,,-3.75,-3.75,-3.75,-8.75,-8.75,-11.25,-11.25,-8.75,-8.75,-3.75,-3.75,-3.75
+MZ2.4,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ2.4,PR,BE,MC,N,,50,0,0,50,0,0,0,0,0,0,0,0
+MZ2.4,NIC,BE,MC,N,,-5,-5,-5,-10,-10,-20,-20,-10,-10,-5,-5,-5
+MZ2.4,,RA,MC,N,,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25
+MZ2.4,PR,BE,CL,C,,0,0,0,0,0,0,100,0,0,100,0,0
+MZ2.4,NIC,BE,CL,C,,0,0,0,0,0,0,-65,-50,-50,-20,-20,-20
+MZ2.4,,CU,CL,C,,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25,-6.25
+MZ2.4,,RA,CL,C,,0,0,0,0,0,0,-3.25,-3.25,-3.25,-3.25,-3.25,-3.25
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2020_12.csv
new file mode 100644
index 00000000..46d3b413
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2020_12.csv
@@ -0,0 +1,9 @@
+@@Main,,,,,
+ReportingNode,Year,Month,,,
+CH,2020,12,,,
+@@Actual,,,,,
+DataNode,AocType,AmountType,EstimateType,AccidentYear,Value
+MZ1.1,CF,PR,A,,400
+MZ1.1,CF,NIC,A,,-280
+MZ1.1,CF,ACA,A,,-10
+MZ1.1,CF,AEA,A,,-5
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2021_3.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2021_3.csv
new file mode 100644
index 00000000..bd5e138f
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/Actuals_CsmSwitch_CH_2021_3.csv
@@ -0,0 +1,10 @@
+@@Main,,,,,
+ReportingNode,Year,Month,,,
+CH,2021,3,,,
+@@Actual,,,,,
+DataNode,AocType,AmountType,EstimateType,AccidentYear,Value
+MZ1.1,CF,PR,A,,90
+MZ1.1,CF,ICO,A,,-6
+MZ1.1,CF,NIC,A,,-70
+MZ1.1,CF,ACA,A,,-10
+MZ1.1,CF,AEA,A,,-5
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb
new file mode 100644
index 00000000..8e7be7b6
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport.ipynb
@@ -0,0 +1,219 @@
+{
+ "metadata": {
+ "authors": [],
+ "kernelspec": {
+ "display_name": "Formula Framework",
+ "language": "C#",
+ "name": "C#"
+ },
+ "language_info": {
+ "file_extension": ".cs",
+ "mimetype": "text/plain",
+ "name": "C#"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5,
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ " Contractual Service Margin and Loss Component Switch Data Import
"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "This is the Data Import notebook for the Contractual Service Margin and Loss Component Switch case.",
+ "\n"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Set up and data import"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Reference Data and Parameters"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"../../Initialization/InitSystemorphRefDataToMemory\""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Data Nodes"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodes_CsmSwitch_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodeStates_CsmSwitch_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"DataNodeParameters_CsmSwitch_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Transactional Data"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### importing first GIC: 2020 12 for fully retrospective calculation and 2021 3 for the current calculation"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"NominalCashflows_CsmSwitch_CH_2021_3.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"Actuals_CsmSwitch_CH_2021_3.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### importing second GIC: 2020 12 and 2021 3 as pre-calculated values"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2020_12.csv\").WithFormat(ImportFormats.SimpleValue).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await Import.FromFile(\"SimpleValue_CsmSwitch_CH_2021_3.csv\").WithFormat(ImportFormats.SimpleValue).WithTarget(DataSource).ExecuteAsync()"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Reset Workspace"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.InitializeFrom(DataSource);",
+ "\nifrs17.Reset(Workspace)"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ ""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb
new file mode 100644
index 00000000..d570764a
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb
@@ -0,0 +1,298 @@
+{
+ "metadata": {
+ "authors": [],
+ "kernelspec": {
+ "display_name": "Formula Framework",
+ "language": "C#",
+ "name": "C#"
+ },
+ "language_info": {
+ "file_extension": ".cs",
+ "mimetype": "text/plain",
+ "name": "C#"
+ },
+ "toc-autonumbering": "True",
+ "toc-showcode": "False"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5,
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ " Contractual Service Margin and Loss Component Switch
",
+ "\n",
+ "\n Impact of the switch logic to Financial Performance and Balance Sheet
"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "In this case study we look at the allocation of the Technical Margin into Contractual Service Margin (CSM) or Loss Component (LC) and its impact on the Financial Performance and Balance Sheet. ",
+ "\n
In particular, we are going to consider two possible approaches for the **switch logic**, which determines how the Technical Margin turns from CSM to LC and vice versa throughout the Analysis of Change (AoC). ",
+ "\n",
+ "\nFor this exercise, we consider two hypothetical GICs with identical inputs: the same parameters, modelled cash flows, actuals, etc... We will then analyze the results obtained by applying two different implementations of the **switch logic** and its implications to financial figures.",
+ "\n",
+ "\nWe have defined the following GICs:",
+ "\n - **MZ 1.1 Multiple Switches**: in this case the allocation of the Technical Margin to either CSM or LC can happen multiple times between the Beginning of Period (BoP) and End of Period (EoP). This means whenever the cumulative Technical Margin changes its sign due to the corresponding AoC contributions, a switch from CSM to LC (and vice versa) is observed.",
+ "\n - **MZ 1.2 Single Switch**: in this case the allocation of the Technical Margin to either CSM or LC can happen only once between the Beginning of Period (BoP) and End of Period (EoP). This means only if there is an effective switch (i.e. the cumulative Technical Margin at the Beginning of Period (BoP) and at the End of Period (EoP) have different signs), a single switch is observed. Otherwise there is no switch.",
+ "\n",
+ "\nWe will look at the relevant reports for the first quarter of year 2021 (2021 3)."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Data Import"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"CsmSwitchDataImport\""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var reportingYear = 2021; ",
+ "\nvar reportingMonth = 3;"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Fulfilment Cash Flow (FCF)"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We start by looking at the Fulfilment Cash Flows (FCF). Data and results for both cases are exactly the same."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;",
+ "\nfulfillmentCashflows.ReportingNode = \"CH\";",
+ "\nfulfillmentCashflows.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\",\"EstimateType\"};",
+ "\nfulfillmentCashflows.DataFilter = null;",
+ "\n(await fulfillmentCashflows.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Written Actuals"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Aslo the Actuals for both cases are exactly the same."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var writtenActual = ifrs17.WrittenActuals;",
+ "\nwrittenActual.ReportingNode = \"CH\";",
+ "\nwrittenActual.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\nwrittenActual.DataFilter = null;",
+ "\n(await writtenActual.ToReportAsync) with {Height = 400}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC Technical Margin (TM)",
+ "\n",
+ "\nIn the Technical Margin report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ",
+ "\n",
+ "\nA negative value for Technical Margin correspond to an Asset character and thus allocated to the CSM. Conversely, a positive value of the Technical Margin represents a Liability character, which is then allocated to Loss Component. ",
+ "\n",
+ "\nAn Analysis of Change (AoC) report allows one to explain how the closing value (EoP) is obtained from the opening value (BoP). Each change to the previous value (i.e. a delta) is captured in its dedicated AoC Step (Model Correction, Experience Variance, ...).",
+ "\nAt each AoC step, the Technical Margin is recognized as Asset-like or Liability-like according to the sign of the accumulation (aggregation) of all figures of the Technical Margin starting from the opening (BoP) to a given AoC step in the chain.",
+ "\n",
+ "\nThrough the AoC steps it is possible that such aggregation of the Technical Margin oscillates from positive to negative and vice versa several times. How the Technical Margin figures are then allocated to CSM or LC is controlled by the implementation of the **switch logic**.",
+ "\n",
+ "\nAs we can see below, at this point, the Technical Margin is still the same for both cases considered, as no allocation to either CSM or LC is performed (i.e. the switch logic).",
+ "\n",
+ "\nWe also notice that the opening balance (BoP) has the same sign as the closing balance (EoP), thus one would not expect any switch intuitively.",
+ "\n",
+ "\nHowever, in this calculation approach the Technical Margin is calculated independently for each novelty (In Force and New Business) and the expected closing balance by novelty have opposite signs. While the In Force is always negative, the New Business is always positive.",
+ "\n",
+ "\nOnce the novelties are combined, we must look at the result of all contributions together. In our example, the In Force contribution is larger in magnitude than the New Business, thus the combined effect should be negative.",
+ "\nSince the AoC Steps for combined novelties are still not large enough to change the sign (in this case the Experience Adjustment), the closing balance remains negative. "
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var technicalMargins = ifrs17.TechnicalMargins;",
+ "\ntechnicalMargins.ReportingNode = \"CH\";",
+ "\ntechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\ntechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\ntechnicalMargins.DataFilter = null;",
+ "\n(await technicalMargins.ToReportAsync) with {Height = 600}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Contractual Service Margin / Loss Component",
+ "\n",
+ "\nHere, we show the result of two different implementations of the **switch logic** for the two GICs we are considering.",
+ "\n",
+ "\n- **MZ 1.1 Multiple Switches**: it is calculated with our standard methodology (**multiple switches**) which allows to switch at every AoC Step with no limitation of amount of switches. ",
+ "\n- **MZ 1.2 Single Switch**: it is calculated with a switch logic (**single switch**) that shows only one switch when the number of total switches is odd (last relevant switch), none otherwise. ",
+ "\n",
+ "\nBecause only the New Business figures drive the Technical Margin to the Liability side, one can immediately realize the main difference between these two switch choices.",
+ "\nMZ 1.2 does not recognize any Loss Component, as in practice the Technical Margin at the Beginning of Period has the same sign as at the End of Period (both negative).",
+ "\n",
+ "\nIn this case the **single switch** (MZ 1.2) logic does not show any switch as both opening and closing figures are negative. The New Business contributions are then forced on the CSM side of this report with a negative sign to reflect the fact that they are decreasing the value. ",
+ "\n",
+ "\nContrarily, the **multiple switches** (MZ 1.1) approach allows the New Business to be recognized in the Loss Component (as mentioned above, because we consider the novelties independently). This generates a discrepancy between the In Force (Asset-like allocated to the CSM) and New Business (Liability-like allocated to the Loss Component).",
+ "\nThis is resolved in the Combined section of the report where both In Force and New Business figures are considered together.",
+ "\nThe Combined Liability AoC Step takes care of adding the two contributions, releasing the Liability-like contributions and allocating the equivalent amount to the CSM. "
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;",
+ "\nallocatedTechnicalMargins.ReportingNode = \"CH\";",
+ "\nallocatedTechnicalMargins.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};",
+ "\nallocatedTechnicalMargins.DataFilter = null;",
+ "\n(await allocatedTechnicalMargins.ToReportAsync) with {Height = 700}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC Actuarial",
+ "\nIn the LRC Balance Sheet view, the two approaches show the same Beginning of Period and End of Period (as expected) and can only be distinguished by looking at the AoC chains in detail, where indeed they behave differently.",
+ "\n",
+ "\nBy slicing in the data by EstimateType (i.e. the individual contributions to the LRC), we notice that the New Business section of the CSM of MZ 1.1 is completely missing (as it is allocated to the LC).",
+ "\nHowever, the Combined Liability AoC Step (effectively a balancing item) in the CSM of MZ 1.1 brings the New Business contribution back to the CSM, netting the effect and restoring the overall closing balance.",
+ "\n",
+ "\nIn MZ 1.2, since we have never allocated any LC, the New Business contributions appear as negative CSM (as seen in the corresponding report above) and should cancel the FCF for equivalent AoC Steps. Moreover, the Combined Liability AoC Step should be zero, as there is nothing to balance."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var actuarialLrc = ifrs17.ActuarialLrc;",
+ "\nactuarialLrc.ReportingNode = \"CH\";",
+ "\nactuarialLrc.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\nactuarialLrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};",
+ "\nactuarialLrc.DataFilter = null;",
+ "\n(await actuarialLrc.ToReportAsync) with {Height = 750}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Financial Performance",
+ "\n",
+ "\nAs expected, the *Total comprehensive Income* is the same in both scenarios. ",
+ "\n
One observes differences in the *Insurance Sevice Result* (ISE) and *Insurance Finance income/Expense* (IFIE) sections. These differences cancel out to produce the same value for *Profit and Loss*. The *Other Comprehensive Income* section reports the same figure in both scenarios. ",
+ "\n",
+ "\nDrilling down into the data granularity one can realize the source of the above mentioned differences. ",
+ "\n
Let's start from the IFIE contribution (Financial contributions): ",
+ "\n- MZ 1.1 explicitly recognizes a contribution to Loss Component: this is the interest accretion on the Liability side of the Techinical Margin. Contrarily, MZ 1.2 does not recognizes any Loss Component. ",
+ "\n- MZ 1.1 reports a bigger figure for CSM than MZ 1.2: this is because in MZ 1.2 the interest on the Asset and on the Liability are both allocated to CSM and reported here as summed up (they carry opposite sign - check the CSM/LC report above).",
+ "\n",
+ "\nContinuing with the ISE contribution, one sees that both *Insurance Revenue* and *Insurance service Expense* carries a difference between the two scenarios. ",
+ "\n- The difference in *Insurance service Expense* is due to having explicitly allocated the New Business of the Techinical Margin to Loss Component. In this item the financial step (such as Interest Accretion (IA)) is excluded. Thus, because overall the Loss amounts to 0, the net effect of summing all the movements except IA result in $-$IA. This term cancels out the LC contribution reported in the Financial section. ",
+ "\n- The difference in *Insurance Revenue* is produced by the CSM contribution to the *Non Financial LRC changes*. The MZ 1.1 GIC includes here the Combined Liability AoC Step which takes into account the contribution of the IA computed on the New Business (Liability-like).",
+ "\n",
+ "\nIt is worth to mention that our choice of splitting between financial and non-financial contributions for all figures reported in the Financial Performance creates additional items (rows) that cancel out when aggregated. While for some it might be confusing and counter intuitive, for others this adds transparency. ",
+ "\nWe acknowledge that without this split for the Loss Component part, the Financial Performance would not report such items, producing the same final figures without explicit showing any Loss Component contribution.",
+ "\n",
+ "\nWe also point out that many KPIs can be defined based on some of these figures (CSM and/or LC), and although the Financial Performance in the end is the same, some of these KPIs might look significantly different."
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var financialPerformance = ifrs17.FinancialPerformance;",
+ "\nfinancialPerformance.ReportingNode = \"CH\";",
+ "\nfinancialPerformance.ReportingPeriod = (reportingYear, reportingMonth);",
+ "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};",
+ "\nfinancialPerformance.DataFilter = null;",
+ "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ ""
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeParameters_CsmSwitch_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeParameters_CsmSwitch_CH_2020_12.csv
new file mode 100644
index 00000000..50e7a14d
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeParameters_CsmSwitch_CH_2020_12.csv
@@ -0,0 +1,8 @@
+@@Main,,
+ReportingNode,Year,Month
+CH,2020,12
+,,
+@@SingleDataNodeParameter,,
+DataNode,PremiumAllocation,
+MZ1.1,0.8,
+MZ1.2,0.8,
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeStates_CsmSwitch_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeStates_CsmSwitch_CH_2020_12.csv
new file mode 100644
index 00000000..9e05c37b
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodeStates_CsmSwitch_CH_2020_12.csv
@@ -0,0 +1,8 @@
+@@Main,,
+ReportingNode,Year,Month
+CH,2020,12
+,,
+@@DataNodeState,,
+DataNode,State,
+MZ1.1,Active,
+MZ1.2,Active,
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodes_CsmSwitch_CH.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodes_CsmSwitch_CH.csv
new file mode 100644
index 00000000..a728d0d1
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/DataNodes_CsmSwitch_CH.csv
@@ -0,0 +1,12 @@
+@@Main,,,,,
+ReportingNode,,,,,
+CH,,,,,
+,,,,,
+@@InsurancePortfolio,,,,,
+SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType
+MZ1,CSM/LC Switch,XTSHY,ANN,BBA,Default
+,,,,,
+@@GroupOfInsuranceContract,,,,,
+SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability
+MZ1.1,MZ 1.1 Multiple Switches,MZ1,2020,LRC,P
+MZ1.2,MZ 1.2 Single Switch,MZ1,2020,LRC,P
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2020_12.csv
new file mode 100644
index 00000000..473ce967
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2020_12.csv
@@ -0,0 +1,12 @@
+@@Main,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ReportingNode,Year,Month,Scenario,,,,,,,,,,,,,,,,,,,,,,,,,,
+CH,2020,12,,,,,,,,,,,,,,,,,,,,,,,,,,,
+@@Cashflow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23
+MZ1.1,PR,BE,BOP,N,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0
+MZ1.1,NIC,BE,BOP,N,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25
+MZ1.1,,RA,BOP,N,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
+MZ1.1,PR,BE,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0
+MZ1.1,NIC,BE,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25
+MZ1.1,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3
+MZ1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2021_3.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2021_3.csv
new file mode 100644
index 00000000..f9e9d6b3
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/NominalCashflows_CsmSwitch_CH_2021_3.csv
@@ -0,0 +1,21 @@
+@@Main,,,,,,,,,,,,,,,,,
+ReportingNode,Year,Month,,,,,,,,,,,,,,,
+CH,2021,3,,,,,,,,,,,,,,,
+@@Cashflow,,,,,,,,,,,,,,,,,
+DataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11
+MZ1.1,PR,BE,MC,I,,0,110,0,0,110,0,0,110,0,0,110,0
+MZ1.1,NIC,BE,MC,I,,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20
+MZ1.1,,RA,MC,I,,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+MZ1.1,PR,BE,BOP,N,,0,10,0,0,10,0,0,10,0,0,10,0
+MZ1.1,ICO,BE,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ1.1,NIC,BE,BOP,N,,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
+MZ1.1,,RA,BOP,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ1.1,PR,BE,EV,N,,0,5,0,0,5,0,0,5,0,0,5,0
+MZ1.1,ICO,BE,EV,N,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ1.1,NIC,BE,EV,N,,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9
+MZ1.1,,RA,EV,N,,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5
+MZ1.1,PR,BE,CL,C,,0,115,0,0,115,0,0,115,0,0,115,0
+MZ1.1,ICO,BE,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+MZ1.1,NIC,BE,CL,C,,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29,-29
+MZ1.1,,CU,CL,C,,-15,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-5
+MZ1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2020_12.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2020_12.csv
new file mode 100644
index 00000000..c2a4d4f1
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2020_12.csv
@@ -0,0 +1,44 @@
+@@Main,,,,,,,
+Month,ReportingNode,Scenario,Year,,,,
+12,CH,,2020,,,,
+@@SimpleValue,,,,,,,
+AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value
+,ACA,CF,MZ1.2,,A,C,-10
+,AEA,CF,MZ1.2,,A,C,-5
+,NIC,CF,MZ1.2,,A,C,-280
+,PR,CF,MZ1.2,,A,C,400
+,PR,CF,MZ1.2,,APA,C,320
+,NIC,EOP,MZ1.2,C,BE,C,218.36476
+,NIC,BOP,MZ1.2,C,BE,N,336.39976
+,NIC,CF,MZ1.2,C,BE,N,-300
+,NIC,IA,MZ1.2,C,BE,N,181.965
+,PR,EOP,MZ1.2,C,BE,C,-306.20002
+,PR,BOP,MZ1.2,C,BE,N,-487.82037
+,PR,CF,MZ1.2,C,BE,N,400
+,PR,IA,MZ1.2,C,BE,N,-218.37965
+,NIC,EOP,MZ1.2,L,BE,C,218.36476
+,NIC,BOP,MZ1.2,L,BE,N,336.39976
+,NIC,CF,MZ1.2,L,BE,N,-300
+,NIC,IA,MZ1.2,L,BE,N,181.965
+,PR,EOP,MZ1.2,L,BE,C,-306.20002
+,PR,BOP,MZ1.2,L,BE,N,-487.82037
+,PR,CF,MZ1.2,L,BE,N,400
+,PR,IA,MZ1.2,L,BE,N,-218.37965
+,PR,CF,MZ1.2,L,BEPA,N,320
+,,AM,MZ1.2,,C,C,-95.78552
+,,EA,MZ1.2,,C,C,-15
+,,EOP,MZ1.2,,C,C,25.21326
+,,BOP,MZ1.2,,C,N,117.78063
+,,IA,MZ1.2,,C,N,18.21816
+,,AM,MZ1.2,,DA,C,11.87436
+,,CF,MZ1.2,,DA,C,-15
+,,EOP,MZ1.2,,DA,C,-3.12564
+,,AM,MZ1.2,L,F,C,0.79162
+,,EOP,MZ1.2,C,RA,C,21.83648
+,,BOP,MZ1.2,C,RA,N,33.63998
+,,CF,MZ1.2,C,RA,N,-30
+,,IA,MZ1.2,C,RA,N,18.1965
+,,EOP,MZ1.2,L,RA,C,21.83648
+,,BOP,MZ1.2,L,RA,N,33.63998
+,,CF,MZ1.2,L,RA,N,-30
+,,IA,MZ1.2,L,RA,N,18.1965
diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2021_3.csv b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2021_3.csv
new file mode 100644
index 00000000..5396e3aa
--- /dev/null
+++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/SimpleValue_CsmSwitch_CH_2021_3.csv
@@ -0,0 +1,91 @@
+@@Main,,,,,,,
+Month,ReportingNode,Scenario,Year,,,,
+3,CH,,2021,,,,
+@@SimpleValue,,,,,,,
+AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value
+,ACA,CF,MZ1.2,,A,C,-10
+,AEA,CF,MZ1.2,,A,C,-5
+,ICO,CF,MZ1.2,,A,C,-6
+,NIC,CF,MZ1.2,,A,C,-70
+,PR,CF,MZ1.2,,A,C,90
+,PR,CF,MZ1.2,,APA,C,72
+,ICO,EOP,MZ1.2,C,BE,C,7.02617
+,ICO,BOP,MZ1.2,C,BE,N,8.73459
+,ICO,CF,MZ1.2,C,BE,N,-3
+,ICO,IA,MZ1.2,C,BE,N,1.29158
+,NIC,EOP,MZ1.2,C,BE,C,203.75899
+,NIC,BOP,MZ1.2,C,BE,I,218.36476
+,NIC,CF,MZ1.2,C,BE,I,-60
+,NIC,IA,MZ1.2,C,BE,I,25.83163
+,NIC,MC,MZ1.2,C,BE,I,-43.67295
+,NIC,BOP,MZ1.2,C,BE,N,34.93836
+,NIC,CF,MZ1.2,C,BE,N,-12
+,NIC,EV,MZ1.2,C,BE,N,35.13086
+,NIC,IA,MZ1.2,C,BE,N,5.16633
+,PR,EOP,MZ1.2,C,BE,C,-283.25612
+,PR,BOP,MZ1.2,C,BE,I,-306.20002
+,PR,CF,MZ1.2,C,BE,I,110
+,PR,IA,MZ1.2,C,BE,I,-44.12061
+,PR,MC,MZ1.2,C,BE,I,-30.62
+,PR,BOP,MZ1.2,C,BE,N,-30.62
+,PR,CF,MZ1.2,C,BE,N,10
+,PR,EV,MZ1.2,C,BE,N,12.31548
+,PR,IA,MZ1.2,C,BE,N,-4.01096
+,ICO,EOP,MZ1.2,L,BE,C,7.02617
+,ICO,BOP,MZ1.2,L,BE,N,8.73459
+,ICO,CF,MZ1.2,L,BE,N,-3
+,ICO,IA,MZ1.2,L,BE,N,1.29158
+,NIC,EOP,MZ1.2,L,BE,C,203.75899
+,NIC,BOP,MZ1.2,L,BE,I,218.36476
+,NIC,CF,MZ1.2,L,BE,I,-60
+,NIC,IA,MZ1.2,L,BE,I,25.83163
+,NIC,MC,MZ1.2,L,BE,I,-43.67295
+,NIC,BOP,MZ1.2,L,BE,N,34.93836
+,NIC,CF,MZ1.2,L,BE,N,-12
+,NIC,EV,MZ1.2,L,BE,N,35.13086
+,NIC,IA,MZ1.2,L,BE,N,5.16633
+,PR,EOP,MZ1.2,L,BE,C,-283.25612
+,PR,BOP,MZ1.2,L,BE,I,-306.20002
+,PR,CF,MZ1.2,L,BE,I,110
+,PR,IA,MZ1.2,L,BE,I,-44.12061
+,PR,MC,MZ1.2,L,BE,I,-30.62
+,PR,BOP,MZ1.2,L,BE,N,-30.62
+,PR,CF,MZ1.2,L,BE,N,10
+,PR,EV,MZ1.2,L,BE,N,12.31548
+,PR,IA,MZ1.2,L,BE,N,-4.01096
+,PR,CF,MZ1.2,L,BEPA,I,88
+,PR,CF,MZ1.2,L,BEPA,N,8
+,,AM,MZ1.2,,C,C,-3.97038
+,,CL,MZ1.2,,C,C,-69.45932
+,,EA,MZ1.2,,C,C,-42
+,,EOP,MZ1.2,,C,C,5.71314
+,,BOP,MZ1.2,,C,I,25.21326
+,,IA,MZ1.2,,C,I,17.26933
+,,MC,MZ1.2,,C,I,78.66025
+,,AM,MZ1.2,,DA,C,7.43177
+,,CF,MZ1.2,,DA,C,-15
+,,EOP,MZ1.2,,DA,C,-10.69387
+,,BOP,MZ1.2,,DA,I,-3.12564
+,,AM,MZ1.2,L,F,C,0.41001
+,,CL,MZ1.2,,C,C,69.45932
+,,BOP,MZ1.2,,C,N,-21.78754
+,,EV,MZ1.2,,C,N,-43.93326
+,,IA,MZ1.2,,C,N,-3.73853
+,,EOP,MZ1.2,C,RA,C,17.56543
+,,BOP,MZ1.2,C,RA,I,21.83648
+,,CF,MZ1.2,C,RA,I,-6
+,,IA,MZ1.2,C,RA,I,2.58316
+,,MC,MZ1.2,C,RA,I,-4.3673
+,,BOP,MZ1.2,C,RA,N,8.73459
+,,CF,MZ1.2,C,RA,N,-3
+,,EV,MZ1.2,C,RA,N,-3.51309
+,,IA,MZ1.2,C,RA,N,1.29158
+,,EOP,MZ1.2,L,RA,C,17.56543
+,,BOP,MZ1.2,L,RA,I,21.83648
+,,CF,MZ1.2,L,RA,I,-6
+,,IA,MZ1.2,L,RA,I,2.58316
+,,MC,MZ1.2,L,RA,I,-4.3673
+,,BOP,MZ1.2,L,RA,N,8.73459
+,,CF,MZ1.2,L,RA,N,-3
+,,EV,MZ1.2,L,RA,N,-3.51309
+,,IA,MZ1.2,L,RA,N,1.29158
diff --git a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb
index 2b320b8d..f855a567 100644
--- a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb
+++ b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb
@@ -20,7 +20,25 @@
{
"cell_type": "markdown",
"source": [
- " Test Reports
"
+ " Ifrs Variable Exporter
"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Infrastructure and Configuration"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Initialize Workspace"
],
"metadata": {},
"execution_count": 0,
@@ -29,7 +47,8 @@
{
"cell_type": "code",
"source": [
- "#!eval-notebook \"InitSystemorphToMemoryForTesting\""
+ "//#!eval-notebook \"InitSystemorphToMemoryForTesting\"",
+ "\n#!eval-notebook \"../../PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchDataImport\""
],
"metadata": {},
"execution_count": 0,
@@ -38,7 +57,7 @@
{
"cell_type": "markdown",
"source": [
- "# BenchMarks"
+ "## Configurations"
],
"metadata": {},
"execution_count": 0,
@@ -47,7 +66,7 @@
{
"cell_type": "code",
"source": [
- "var pathToBm = \"./Data/ReportBenchmarks/\";"
+ "//var pathToBm = \"./Data/ReportBenchmarks/\";"
],
"metadata": {},
"execution_count": 0,
@@ -62,22 +81,124 @@
"execution_count": 0,
"outputs": []
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Defining Scope for the IfrsVariables"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Defining the Import Args"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
{
"cell_type": "code",
"source": [
- "var argsArray = new ImportArgs[]{",
- "\n new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, null),",
- "\n new ImportArgs (\"CH\", 2021, 3, Periodicity.Quarterly, null, null)",
+ "var exportScope = new ImportArgs[]{",
+ "\n new ImportArgs (\"CH\", 2020, 12, (Periodicity)default, null, null),",
+ "\n new ImportArgs (\"CH\", 2021, 3, (Periodicity)default, null, null)",
"\n };"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Gathering Data"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var args = exportScope[0];",
+ "\nargs"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "await DataSource.Partition.SetAsync(new {ReportingNode = args.ReportingNode, Year = args.Year, Month = args.Month, Scenario = args.Scenario});",
+ "\nvar ifrsVariables = (await DataSource.Query().ToArrayAsync())",
+ "\n .Select(v => v with { Value = Math.Round(v.Value, roundingDigits)})",
+ "\n .OrderBy(v => v.DataNode).ThenBy(v => v.AccidentYear).ThenBy(v => v.EstimateType).ThenBy(v => v.EconomicBasis).ThenBy(v => v.AmountType).ThenBy(v => v.Novelty)",
+ "\n .ThenBy(v => v.AocType)",
+ "\n .ToArray();"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Export"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Export SimpleValue"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "const string fileNamePrefix = \"SimpleValue\";"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
{
"cell_type": "code",
"source": [
- "var scenario = \"MTUP10pct\";"
+ "await Export.ToCsv(fileNamePrefix + \"_\" + args.ReportingNode + \"_\" + args.Year.ToString() + \"_\" + args.Month.ToString() + \"_\" + args.Scenario)",
+ "\n .WithTable(tableConfig => tableConfig",
+ "\n .AtBeginning()",
+ "\n .WithName(Main)",
+ "\n .WithSource(source => args.RepeatOnce().AsQueryable())",
+ "\n .WithColumn(x => x.Periodicity, x => x.Delete())",
+ "\n .WithColumn(x => x.ImportFormat, x => x.Delete())",
+ "\n )",
+ "\n .WithTable(tableConfig => tableConfig",
+ "\n .WithSource(source => ifrsVariables.AsQueryable())",
+ "\n .WithName(fileNamePrefix)",
+ "\n .WithColumn(x => x.Partition, x => x.Delete())",
+ "\n .WithColumn(x => x.Id, x => x.Delete())",
+ "\n )",
+ "\n .WithSource(DataSource)",
+ "\n .ExecuteAsync() "
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Export by Estimate Type"
],
"metadata": {},
"execution_count": 0,
@@ -86,9 +207,7 @@
{
"cell_type": "code",
"source": [
- "var args = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, scenario, null);",
- "\nawait DataSource.Partition.SetAsync(new {ReportingNode = args.ReportingNode, Year= args.Year, Month = args.Month, Scenario = args.Scenario});",
- "\nvar computedVariables = (await DataSource.Query().ToArrayAsync()).ToDictionaryGrouped(x => x.EstimateType, x => x.ToArray());"
+ "const string benchmarkFileNamePrefix = \"BM\";"
],
"metadata": {},
"execution_count": 0,
@@ -97,7 +216,7 @@
{
"cell_type": "code",
"source": [
- "(0, computedVariables.Keys)"
+ "var estimateType = \"BE\";"
],
"metadata": {},
"execution_count": 0,
@@ -106,8 +225,7 @@
{
"cell_type": "code",
"source": [
- "var estimateType = \"APA\";",
- "\nawait Export.ToCsv(\"BM_\"+args.ReportingNode+\"_\"+args.Year.ToString()+\"_\"+args.Month.ToString()+\"_\"+scenario+\"_\"+estimateType)",
+ "await Export.ToCsv(benchmarkFileNamePrefix + \"_\" + args.ReportingNode +\"_\" + args.Year.ToString() + \"_\" + args.Month.ToString() + \"_\" + args.Scenario + \"_\" + estimateType)",
"\n .WithTable(tableConfig => tableConfig",
"\n .AtBeginning()",
"\n .WithName(Main)",
@@ -116,7 +234,7 @@
"\n .WithColumn(x => x.ImportFormat, x => x.Delete())",
"\n )",
"\n .WithTable(tableConfig => tableConfig",
- "\n .WithSource(source => computedVariables[estimateType].Select(x => x with {Value = Math.Round(x.Value, roundingDigits)}).AsQueryable())",
+ "\n .WithSource(source => ifrsVariables.Where(x => x.EstimateType == estimateType).AsQueryable())",
"\n .WithName(estimateType)",
"\n .WithColumn(x => x.Partition, x => x.Delete())",
"\n .WithColumn(x => x.Id, x => x.Delete())",
diff --git a/ifrs17-template/Test/Data/ExportReportVariables.ipynb b/ifrs17-template/Test/Data/ExportReportVariables.ipynb
index 781c0299..bf06f205 100644
--- a/ifrs17-template/Test/Data/ExportReportVariables.ipynb
+++ b/ifrs17-template/Test/Data/ExportReportVariables.ipynb
@@ -56,7 +56,7 @@
{
"cell_type": "markdown",
"source": [
- "## Imports and Configurations"
+ "## Imports"
],
"metadata": {},
"execution_count": 0,
@@ -129,7 +129,7 @@
{
"cell_type": "markdown",
"source": [
- "### Defining the Period and Reporting Node (...) for the Reports"
+ "## Defining the Period and Reporting Node (...) for the Reports"
],
"metadata": {},
"execution_count": 0,
@@ -155,7 +155,7 @@
{
"cell_type": "markdown",
"source": [
- "# Export"
+ "# Gathering Data"
],
"metadata": {},
"execution_count": 0,
@@ -164,7 +164,7 @@
{
"cell_type": "code",
"source": [
- "var args = exportScope[6];",
+ "var args = exportScope[0];",
"\nargs"
],
"metadata": {},
@@ -181,6 +181,15 @@
"execution_count": 0,
"outputs": []
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Export"
+ ],
+ "metadata": {},
+ "execution_count": 0,
+ "outputs": []
+ },
{
"cell_type": "code",
"source": [
diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb
index f9015f90..01482d48 100644
--- a/ifrs17/Import/Importers.ipynb
+++ b/ifrs17/Import/Importers.ipynb
@@ -685,8 +685,9 @@
"\n .ExecuteAsync();",
"\n ",
"\n var portfolios = await workspace.Query().ToDictionaryAsync(x => x.SystemName);",
- "\n var yieldCurveColumnGroupOfInsuranceContract = dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.YieldCurveName));",
- "\n var yieldCurveColumnGroupOfReinsuranceContract = dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.YieldCurveName));",
+ "\n",
+ "\n var yieldCurveColumnGroupOfInsuranceContract = dataSet.Tables.Contains(nameof(GroupOfInsuranceContract)) && dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.YieldCurveName));",
+ "\n var yieldCurveColumnGroupOfReinsuranceContract = dataSet.Tables.Contains(nameof(GroupOfReinsuranceContract)) && dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.YieldCurveName));",
"\n",
"\n var importLogGroupOfContracts = await Import.FromDataSet(dataSet)",
"\n .WithType((dataset, datarow) => {",
@@ -1316,4 +1317,4 @@
"outputs": []
}
]
-}
+}
\ No newline at end of file