diff --git a/README.md b/README.md
deleted file mode 100644
index 5173f5ae..00000000
--- a/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# IFRS17CalculationEngine
\ No newline at end of file
diff --git a/Database/.gitignore b/full-ifrs17-template/Database/.gitignore
similarity index 100%
rename from Database/.gitignore
rename to full-ifrs17-template/Database/.gitignore
diff --git a/Database/Configure.ipynb b/full-ifrs17-template/Database/Configure.ipynb
similarity index 97%
rename from Database/Configure.ipynb
rename to full-ifrs17-template/Database/Configure.ipynb
index 9b23844f..b332a43c 100644
--- a/Database/Configure.ipynb
+++ b/full-ifrs17-template/Database/Configure.ipynb
@@ -27,7 +27,7 @@
{
"cell_type": "code",
"source": [
- "#!import \"../DataModel/DataStructure\""
+ "#!import \"//ifrs17ce/dev/CalculationEngine\""
]
},
{
diff --git a/Database/Schema Delete.ipynb b/full-ifrs17-template/Database/Schema Delete.ipynb
similarity index 100%
rename from Database/Schema Delete.ipynb
rename to full-ifrs17-template/Database/Schema Delete.ipynb
diff --git a/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb
similarity index 99%
rename from Export/MapTemplate.ipynb
rename to full-ifrs17-template/Export/MapTemplate.ipynb
index 2f6034eb..4aa026ea 100644
--- a/Export/MapTemplate.ipynb
+++ b/full-ifrs17-template/Export/MapTemplate.ipynb
@@ -65,7 +65,7 @@
{
"cell_type": "code",
"source": [
- "#!import \"../Export/Export\""
+ "#!import \"../Export/ExportConfiguration\""
]
},
{
diff --git a/Files/300.ReportingNodes/ReportingNodes.csv b/full-ifrs17-template/Files/300.ReportingNodes/ReportingNodes.csv
similarity index 100%
rename from Files/300.ReportingNodes/ReportingNodes.csv
rename to full-ifrs17-template/Files/300.ReportingNodes/ReportingNodes.csv
diff --git a/Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv b/full-ifrs17-template/Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv
similarity index 100%
rename from Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv
rename to full-ifrs17-template/Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv
diff --git a/Files/700.DataNodes/DataNodeStates_CH_2020_12.csv b/full-ifrs17-template/Files/700.DataNodes/DataNodeStates_CH_2020_12.csv
similarity index 100%
rename from Files/700.DataNodes/DataNodeStates_CH_2020_12.csv
rename to full-ifrs17-template/Files/700.DataNodes/DataNodeStates_CH_2020_12.csv
diff --git a/Files/700.DataNodes/DataNodes_CH.csv b/full-ifrs17-template/Files/700.DataNodes/DataNodes_CH.csv
similarity index 100%
rename from Files/700.DataNodes/DataNodes_CH.csv
rename to full-ifrs17-template/Files/700.DataNodes/DataNodes_CH.csv
diff --git a/Files/800.Parameters/CreditDefaultRate.csv b/full-ifrs17-template/Files/800.Parameters/CreditDefaultRate.csv
similarity index 100%
rename from Files/800.Parameters/CreditDefaultRate.csv
rename to full-ifrs17-template/Files/800.Parameters/CreditDefaultRate.csv
diff --git a/Files/800.Parameters/ExchangeRate.csv b/full-ifrs17-template/Files/800.Parameters/ExchangeRate.csv
similarity index 100%
rename from Files/800.Parameters/ExchangeRate.csv
rename to full-ifrs17-template/Files/800.Parameters/ExchangeRate.csv
diff --git a/Files/800.Parameters/PartnerRating.csv b/full-ifrs17-template/Files/800.Parameters/PartnerRating.csv
similarity index 100%
rename from Files/800.Parameters/PartnerRating.csv
rename to full-ifrs17-template/Files/800.Parameters/PartnerRating.csv
diff --git a/Files/800.Parameters/YieldCurve.csv b/full-ifrs17-template/Files/800.Parameters/YieldCurve.csv
similarity index 100%
rename from Files/800.Parameters/YieldCurve.csv
rename to full-ifrs17-template/Files/800.Parameters/YieldCurve.csv
diff --git a/Files/900.TransactionalData/Actuals_CH_2020_12.csv b/full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2020_12.csv
similarity index 100%
rename from Files/900.TransactionalData/Actuals_CH_2020_12.csv
rename to full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2020_12.csv
diff --git a/Files/900.TransactionalData/Actuals_CH_2021_3.csv b/full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2021_3.csv
similarity index 100%
rename from Files/900.TransactionalData/Actuals_CH_2021_3.csv
rename to full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2021_3.csv
diff --git a/Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv b/full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv
similarity index 100%
rename from Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv
rename to full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv
diff --git a/Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv b/full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv
similarity index 100%
rename from Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv
rename to full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv
diff --git a/Files/900.TransactionalData/Openings_CH_2020_12.csv b/full-ifrs17-template/Files/900.TransactionalData/Openings_CH_2020_12.csv
similarity index 100%
rename from Files/900.TransactionalData/Openings_CH_2020_12.csv
rename to full-ifrs17-template/Files/900.TransactionalData/Openings_CH_2020_12.csv
diff --git a/Files/DimensionsAndPartitions.csv b/full-ifrs17-template/Files/DimensionsAndPartitions.csv
similarity index 91%
rename from Files/DimensionsAndPartitions.csv
rename to full-ifrs17-template/Files/DimensionsAndPartitions.csv
index 4c2662b4..bcfe9d1d 100644
--- a/Files/DimensionsAndPartitions.csv
+++ b/full-ifrs17-template/Files/DimensionsAndPartitions.csv
@@ -110,22 +110,22 @@ C,Current,20,,,,,,,,,
,,,,,,,,,,,
@@EstimateType,,,,,,,,,,,
SystemName,DisplayName,Order,StructureType,InputSource,PeriodType,ExternalId0,ExternalId1,ExternalId2,,,
-BE,Best Estimate of Present Value,1,AoC,4,,,,EndOfPeriod,,,
-RA,Risk Adjustment,10,AoC,4,,,,EndOfPeriod,,,
-CU,CoverageUnit,15,AoC,4,,,,EndOfPeriod,,,
-C,Contractual Service Margin,20,AoC,7,,,,NotApplicable,,,
-L,Loss Component,30,AoC,7,,,,NotApplicable,,,
-LR,Loss Recovery Component,40,AoC,7,,,,NotApplicable,,,
-PL,Profit and Loss,50,None,7,,,,NotApplicable,,,
-AA,Advance Actuals,60,AoC,3,PayablePR,ReceivableNIC,ReceivableICO,NotApplicable,,,
-OA,Overdue Actuals,70,AoC,3,ReceivablePR,PayableNIC,PayableICO,NotApplicable,,,
-DA,Deferrable Actuals,80,AoC,3,,,,NotApplicable,,,
-A,Actuals,90,None,2,,,,NotApplicable,,,
-F,Factors,100,None,4,,,,NotApplicable,,,
-AAPA,Advance Actuals,110,None,2,,,,NotApplicable,,,
-OAPA,Overdue Actuals,120,None,2,,,,NotApplicable,,,
-APA,Actuals,130,None,2,,,,NotApplicable,,,
-BEPA,Best Estimate of Present Value,140,None,4,,,,NotApplicable,,,
+BE,Best Estimate of Present Value,1,AoC,4,EndOfPeriod,,,,,,
+RA,Risk Adjustment,10,AoC,4,EndOfPeriod,,,,,,
+CU,CoverageUnit,15,AoC,4,EndOfPeriod,,,,,,
+C,Contractual Service Margin,20,AoC,7,NotApplicable,,,,,,
+L,Loss Component,30,AoC,7,NotApplicable,,,,,,
+LR,Loss Recovery Component,40,AoC,7,NotApplicable,,,,,,
+PL,Profit and Loss,50,None,7,NotApplicable,,,,,,
+AA,Advance Actuals,60,AoC,3,NotApplicable,PayablePR,ReceivableNIC,ReceivableICO,,,
+OA,Overdue Actuals,70,AoC,3,NotApplicable,ReceivablePR,PayableNIC,PayableICO,,,
+DA,Deferrable Actuals,80,AoC,3,NotApplicable,,,,,,
+A,Actuals,90,None,2,NotApplicable,,,,,,
+F,Factors,100,None,4,NotApplicable,,,,,,
+AAPA,Advance Actuals,110,None,2,NotApplicable,,,,,,
+OAPA,Overdue Actuals,120,None,2,NotApplicable,,,,,,
+APA,Actuals,130,None,2,NotApplicable,,,,,,
+BEPA,Best Estimate of Present Value,140,None,4,NotApplicable,,,,,,
,,,,,,,,,,,
@@LiabilityType,,,,,,,,,,,
SystemName,DisplayName,,,,,,,,,,
diff --git a/Images/ActualFormat.png b/full-ifrs17-template/Images/ActualFormat.png
similarity index 100%
rename from Images/ActualFormat.png
rename to full-ifrs17-template/Images/ActualFormat.png
diff --git a/Images/CashflowFormat.png b/full-ifrs17-template/Images/CashflowFormat.png
similarity index 100%
rename from Images/CashflowFormat.png
rename to full-ifrs17-template/Images/CashflowFormat.png
diff --git a/Images/OpeningFormat.png b/full-ifrs17-template/Images/OpeningFormat.png
similarity index 100%
rename from Images/OpeningFormat.png
rename to full-ifrs17-template/Images/OpeningFormat.png
diff --git a/Images/SpecificationsCSM.PNG b/full-ifrs17-template/Images/SpecificationsCSM.PNG
similarity index 100%
rename from Images/SpecificationsCSM.PNG
rename to full-ifrs17-template/Images/SpecificationsCSM.PNG
diff --git a/Images/SpecificationsImportActuals.PNG b/full-ifrs17-template/Images/SpecificationsImportActuals.PNG
similarity index 100%
rename from Images/SpecificationsImportActuals.PNG
rename to full-ifrs17-template/Images/SpecificationsImportActuals.PNG
diff --git a/Images/SpecificationsImportCashflows.PNG b/full-ifrs17-template/Images/SpecificationsImportCashflows.PNG
similarity index 100%
rename from Images/SpecificationsImportCashflows.PNG
rename to full-ifrs17-template/Images/SpecificationsImportCashflows.PNG
diff --git a/Images/SpecificationsPL.PNG b/full-ifrs17-template/Images/SpecificationsPL.PNG
similarity index 100%
rename from Images/SpecificationsPL.PNG
rename to full-ifrs17-template/Images/SpecificationsPL.PNG
diff --git a/Images/Systemorph_logo.png b/full-ifrs17-template/Images/Systemorph_logo.png
similarity index 100%
rename from Images/Systemorph_logo.png
rename to full-ifrs17-template/Images/Systemorph_logo.png
diff --git a/Initialization/InitSystemorphBaseToMemory.ipynb b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb
similarity index 98%
rename from Initialization/InitSystemorphBaseToMemory.ipynb
rename to full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb
index e7b7b98d..293cb431 100644
--- a/Initialization/InitSystemorphBaseToMemory.ipynb
+++ b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb
@@ -29,7 +29,7 @@
{
"cell_type": "code",
"source": [
- "#!import \"../Import/Importers\""
+ "#!import \"//ifrs17ce/dev/CalculationEngine\""
]
},
{
diff --git a/Initialization/InitSystemorphToDatabase.ipynb b/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb
similarity index 97%
rename from Initialization/InitSystemorphToDatabase.ipynb
rename to full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb
index bb25efb5..9b7b5ab5 100644
--- a/Initialization/InitSystemorphToDatabase.ipynb
+++ b/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb
@@ -29,12 +29,6 @@
"#!import \"../Database/Configure\""
]
},
- {
- "cell_type": "code",
- "source": [
- "#!import \"../Import/Importers\""
- ]
- },
{
"cell_type": "markdown",
"source": [
diff --git a/Initialization/InitSystemorphToMemory.ipynb b/full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb
similarity index 100%
rename from Initialization/InitSystemorphToMemory.ipynb
rename to full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb
diff --git a/InputFormatDescription.ipynb b/full-ifrs17-template/InputFormatDescription.ipynb
similarity index 100%
rename from InputFormatDescription.ipynb
rename to full-ifrs17-template/InputFormatDescription.ipynb
diff --git a/LICENSE b/full-ifrs17-template/LICENSE
similarity index 100%
rename from LICENSE
rename to full-ifrs17-template/LICENSE
diff --git a/full-ifrs17-template/OverviewIFRS17Template.ipynb b/full-ifrs17-template/OverviewIFRS17Template.ipynb
new file mode 100644
index 00000000..7145abb7
--- /dev/null
+++ b/full-ifrs17-template/OverviewIFRS17Template.ipynb
@@ -0,0 +1,135 @@
+{
+ "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": [
+ "
IFRS17 Template - an Overview
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Introduction",
+ "\n",
+ "\nThe Systemorph's IFRS 17 Calculation Engine is a solution to conduct all the essential IFRS 17 calculations based on some key input: modeled future **cashflows** and actual amounts, for a **groups of insurance contracts** and other relevant parameters (Yield Curve, Fx, etc...). The output is a set of calculated results (CSM, Loss Component, Financial Performance, etc...) that are needed for IFRS 17 reporting, analysis, accounting, steering and other management information.",
+ "\n",
+ "\nThis notebook provides an **overview** of Systemorph's Full IFRS 17 Template with brief introductions to all the main steps."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n# IFRS 17",
+ "\n",
+ "\nIFRS 17 is a new accounting standard for insurance contracts. The previous standard IFRS 4, which is based on nominal accounting, is replaced by the economic accounting standard IFRS 17.",
+ "\n",
+ "\nIFRS 17 deals with insurance contracts which are on the liability side of the balance sheet. Other accounting standards deal with other parts of the business, primarily IFRS 9 for invested assets.",
+ "\n",
+ "\nInsurance policies need to be allocated to homogeneous groups of insurance contracts (GICs) according to high-level principles established by the IFRS 17 standard, such as contract type, line of business, annual cohort etc. Insurers have some degree of freedom to optmize those GICs, as long as they respect the high-level principles.",
+ "\n",
+ "\nInsurance contracts generate different types of cashflows. For example, **Amount Type** is a dimension refering to premiums, claims, expenses of different kinds, etc. for these cashflows. The Calculation Engine presented here expects input files of all the projected cashflows for each GIC, for different regular time points (quarterly or monthly, ...) and corresponding actual amounts observed for a given period. ",
+ "\n",
+ "\nEach cashflow is characterized by all the necessary attributes: business unit, start time, amount type, novelty of business etc. and projected cashflow amounts in a regular time grid until the final run-off of all contracts.",
+ "\n",
+ "\nIf the entered cashflows are nominal (the usual case), the the present value (PV) of each cashflow is computed using proper yield curves for discounting.",
+ "\n",
+ "\nA central element of IFRS 17 is the Analysis of Change (AoC). The present value of the business (future cashflows) changes from the beginning to the end of the accounting period due to different effects, each of them constituting a modeled AoC step.",
+ "\n",
+ "\nIn IFRS 17, the value of future profitable business has a component called the Contractual Service Margin (CSM), defined at GIC level. The profit measured as CSM is recognized slowly over time rather than immediately in financial performance statements. On the other hand, a GIC can be onerous and produce a Loss Component (LC) instead, which needs to be recognized immediately.",
+ "\n",
+ "\nSeveral reports on the valuation of cashflows, balance sheet and financial performance can be produced, each dealing with different aspects, such as",
+ "\n - Present Value of Future Cash Flows (PVFCF)",
+ "\n - Contractual Service Margin (CSM) and Loss Component (LC)",
+ "\n - Liability for Remaining Coverage (LRC)",
+ "\n - Liability for Incurred Claims (LIC)",
+ "\n - Financial Performance",
+ "\n - Accounting Events"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Data input"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n## Data input: Reporting nodes, dimensions and partitions",
+ "\n",
+ "\nSee folders *Files* (DimensionsAndPartitions) and *Files/300.ReportingNodes* (ReportingNodes).",
+ "\n- **ReportingNodes**: List of business units, often per country, with system name and display name, currency and \"G\" for the whole group",
+ "\n- **DimensionsAndPartitions**: The many dimensions (21) required to characterize all of the data and results, with system names and display names. This information is quite stable, but some information related to partitions refers to the reporting nodes "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n## Data input: Groups of insurance and reinsurance contracts",
+ "\n",
+ "\nSee folder Files/700.DataNodes. The information is about data nodes, that is Groups of Insurance Contracts (GICs) and Groups of Reinsurance Contracts (GRICs) and portfolios of these.",
+ "\n- **DataNodes**: List of all GICs and GRICs, each with several attributes and the portfolios to which they belong; an additional attribute of GRICs being the reinsurance partner",
+ "\n- **DataNodeParameters** *\\_* *\\_* *\\_*: List of those GICs and GRICs that are actually used for the given reporting node/year/month combination with few attributes; if needed, more such files may be added for other reporting node/year/month combinations",
+ "\n- **DataNodeStates** *\\_* *\\_* *\\_*: Switching data nodes on and off, the normal state is (\"Active\") for all the GICs and GRICs of the reporting node/year/month combination; if needed, more such files may be added for other reporting node/year/month combinations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n## Data input: Parameters from financial markets",
+ "\n",
+ "\nSee folder Files/800.Parameters.",
+ "\n- **YieldCurve**: List of all yield curves to be used, for different currencies and as-of dates (year/month), using a yearly grid of interest rate maturities extending as far as needed",
+ "\n- **ExchangeRate**: List of exchange rates to be used, for different currencies and as-of dates (year/month), with a type (Spot/Average); defined as the value of 1 foreign unit expressed in the group currency of the insurance company ",
+ "\n- **CreditDefaultRate**: For relevant year/month combinations, each with a full list of all credit ratings in S&P notation with their default rate (= probabilty of default within 1 year)",
+ "\n- **PartnerRating**: For each reinsurance partner of a relevant GRIC, the rating in S&P notation with the as-of date (year/month)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n## Data input: Groups of insurance and reinsurance contracts",
+ "\n",
+ "\nSee folder Files/900.TransactionalData.",
+ "\n- **Actuals** *\\_* *\\_* *\\_*: List of all actual amounts for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types and other attributes; we need at least two such files for the two dates of the Analysis of Change",
+ "\n- **Openings** *\\_* *\\_* *\\_*: List of the opening amounts for some GICs that are used by the given reporting node. The year/month combination corresponds to the beginning of the planned Analysis of Change period, so only one such file is required. The entries are by EstimateType and AmountType.",
+ "\n- **NominalCashflows** *\\_* *\\_* *\\_*: List of all projected cash flows for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types, novelty types and other attributes, where the cash flow amounts are given in a regular sequence extending as far as needed; we need at least two such files for the two dates of the Analysis of Change",
+ "\n",
+ "\nThe structure of the [Actuals](./InputFormatDescription#actual), [Openings](./InputFormatDescription#opening) and [NominalCashflows](./InputFormatDescription#cashflow) files is explained in a special [notebook](./InputFormatDescription).",
+ "\n",
+ "\nThe less usual option of having discounted instead of nominal cash flows in the input is also supported."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "",
+ "\n# Reports",
+ "\n",
+ "\nThe production of reports is done by a notebook such as **[Reports](./Report/Reports#report-production)**."
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md
new file mode 100644
index 00000000..5c22a397
--- /dev/null
+++ b/full-ifrs17-template/README.md
@@ -0,0 +1,35 @@
+
+
+**Full IFRS 17 Template**
+
+Systemorph's IFRS 17 [Calculation Engine](https://portal.systemorph.cloud/api/project/ifrs17ce/env/dev/) is a tool to conduct all the essential IFRS 17 calculations given some key figures.
+Systemorph's *Full IFRS 17 Template* uses our IFRS 17 Calculation Engine to import several use-cases and show the results.
+
+# Get Started
+
+Interact with this *Full IFRS 17 Template* after having cloned the project.
+
+# Supporting Material
+
+Check out the [video]() (this is a youtube link to Marketing)
+
+# Report
+
+Check out the IFRS 17 reports [here](./Report/Reports)
+
+# Testing
+
+If you want a step by step guide into the calculation logic, please go to the "Specification" notebook you are interested in:
+- [Cashflow Calculation](./Test/SpecificationsImportCashflows)
+- [Actuals Calculation](./Test/SpecificationsImportActuals)
+- [Technical Margin Calculation](./Test/SpecificationsTechnicalMargin)
+- [Financial Performance Calculation](./Test/SpecificationsFinancialPerformance)
+
+# Got Questions
+
+For support around the IFRS17 CalculationEngine you can personally reach out to one of our IFRS17 experts:
+- [Dr. Andrea Muolo]()
+- [Dr. Davide Colleoni](https://www.linkedin.com/in/davidecolleoni/)
+- [Mrs. Sara Busato]()
+
+If you are interested in adapting the IFRS17 CalculationEngine to your data and would like to start a collaboration with us, you can contact [Wolfgang Maehr]()
\ No newline at end of file
diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb
new file mode 100644
index 00000000..1dc742bd
--- /dev/null
+++ b/full-ifrs17-template/Report/Reports.ipynb
@@ -0,0 +1,402 @@
+{
+ "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": [
+ " Reports
",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Infrastructure and Configuration"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Initialize data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "/* DataSource is configured and connected to real database */",
+ "\n//#!eval-notebook \"../Database/Configure\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!eval-notebook \"../Initialization/InitSystemorphToMemory\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.InitializeFrom(DataSource);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Imports and Configurations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var reportStorage = new ReportStorage(Workspace, Report);",
+ "\nawait reportStorage.InitializeReportIndependentCacheAsync();",
+ "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();",
+ "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;",
+ "\nawait reportStorage.InitializeAsync((mostRecentPartition.Year, mostRecentPartition.Month), reportingNodeRoot, null, CurrencyType.Contractual);",
+ "\nvar identities = reportStorage.GetIdentities((mostRecentPartition.Year, mostRecentPartition.Month), reportingNodeRoot, null, CurrencyType.Contractual);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Calling Scope"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "var universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Report Settings and Storage Update"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args =",
+ "\n //((2020, 12), reportingNodeRoot, null,CurrencyType.Contractual)",
+ "\n ((2021, 3), reportingNodeRoot, null,CurrencyType.Contractual)",
+ "\n //((2021, 3), reportingNodeRoot, null,CurrencyType.Functional)",
+ "\n //((2021, 3), reportingNodeRoot, null,CurrencyType.Group)",
+ "\n ;",
+ "\n",
+ "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);",
+ "\nidentities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Use cases",
+ "\n",
+ "\nFor demostration purposes we import data for 7 *Group of Insurance Contract* (GIC) and 4 *Group of Reinsurance Contract* (GRIC). ",
+ "\n
Data set consists in cashflows, actuals, and parameters.",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Present Value",
+ "\n",
+ "\nPresent values of the best estimate of future cashflows are shown here in an Analysis of Change report.",
+ "\n",
+ "\nThe report view can be modified with the Slice options for the columns by changing the SliceColumnBy inputs in the next command cell.",
+ "\nFor example one can add \"GroupOfContract\" to separate the contributions of the individual Group of Contracts.",
+ "\n
We suggest to add this slice between the \"LiabilityType\" and the \"EconomicBasis\" as the the order of the inputs corresponds to the order of the columns shown in the report to expand the data.",
+ "\n",
+ "\nAggregated values are displayed when the data has a finer granularity than the one selected by the report slice options."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().LockedBestEstimate + universe.GetScopes(identities).Aggregate().CurrentBestEstimate)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\", \"EconomicBasis\") //\"GroupOfContract\"",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Risk Adjustment"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().LockedRiskAdjustment + universe.GetScopes(identities).Aggregate().CurrentRiskAdjustment)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"EconomicBasis\", \"LiabilityType\",\"GroupOfContract\")",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Actuals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().Written",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"AmountType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\",\"GroupOfContract\")",
+ "\n .ReportGridOptions(reportHeight: 450)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Advance, Overdue Actuals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().Advance + universe.GetScopes(identities).Aggregate().Overdue)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\",\"GroupOfContract\", \"EstimateType\")",
+ "\n .ReportGridOptions(reportHeight: 400)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Deferrable Actuals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().Deferrals",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\",\"GroupOfContract\")",
+ "\n .ReportGridOptions(reportHeight: 400)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Fulfilment Cashflow"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().Fcf ",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\",\"GroupOfContract\", \"EconomicBasis\")//, \"EstimateType\")//, \"AmountType\")",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Actuarial Experience Adjustment"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().ActuarialExperienceAdjustment",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"EstimateType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"GroupOfContract\", \"AmountType\" )//\"LiabilityType\", \"EstimateType\")",
+ "\n .ReportGridOptions(reportHeight: 300, headerColumnWidth: 300)",
+ "\n .ToReport() "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC Technical Margin"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().LrcTechnicalMargin",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"GroupOfContract\")",
+ "\n .ReportGridOptions(reportHeight: 600)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Contractual Service Margin / Loss Component / Loss Recovery Component"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().Csm + universe.GetScopes(identities).Aggregate().Lc + universe.GetScopes(identities).Aggregate().Loreco)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"GroupOfContract\", \"EstimateType\")",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC Actuarial"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().LrcActuarial)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), /*\"LiabilityType\",\"GroupOfContract\",*/ \"EstimateType\")",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LRC"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().Lrc)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType),\"GroupOfContract\", \"EstimateType\")",
+ "\n .ReportGridOptions(300)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LIC Actuarial"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().LicActuarial)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"Novelty\",\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), /*\"GroupOfContract\",*/ \"EstimateType\")",
+ "\n .ReportGridOptions()",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# LIC"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube((universe.GetScopes(identities).Aggregate().Lic)",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"VariableType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), /*\"GroupOfContract\",*/ \"EstimateType\")",
+ "\n .ReportGridOptions(300)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Financial Performance",
+ "\n",
+ "\nUse the expand and collapse buttons in the report rows to change the granularity of the figures displayed."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Report.ForDataCube(universe.GetScopes(identities).Aggregate().FinancialPerformance",
+ "\n //.Filter((\"GroupOfContract\", \"DT1.1\"))",
+ "\n )",
+ "\n .WithQuerySource(DataSource)",
+ "\n .SliceRowsBy(\"VariableType\", \"EstimateType\")",
+ "\n .SliceColumnsBy(CurrencyGrouper(Args.CurrencyType), \"LiabilityType\",\"GroupOfContract\")",
+ "\n .ReportGridOptions(reportHeight: 900, headerColumnWidth: 500, groupDefaultExpanded: 3)",
+ "\n .ToReport()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ ""
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Test/AocStructureTest.ipynb b/full-ifrs17-template/Test/AocStructureTest.ipynb
similarity index 100%
rename from Test/AocStructureTest.ipynb
rename to full-ifrs17-template/Test/AocStructureTest.ipynb
diff --git a/Test/Data/CashflowComplex.csv b/full-ifrs17-template/Test/Data/CashflowComplex.csv
similarity index 100%
rename from Test/Data/CashflowComplex.csv
rename to full-ifrs17-template/Test/Data/CashflowComplex.csv
diff --git a/Test/Data/DataNodeParameter_Duplicate.csv b/full-ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv
similarity index 100%
rename from Test/Data/DataNodeParameter_Duplicate.csv
rename to full-ifrs17-template/Test/Data/DataNodeParameter_Duplicate.csv
diff --git a/Test/Data/DataNodeParameter_InvalidDataNode.csv b/full-ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv
similarity index 100%
rename from Test/Data/DataNodeParameter_InvalidDataNode.csv
rename to full-ifrs17-template/Test/Data/DataNodeParameter_InvalidDataNode.csv
diff --git a/Test/Data/DataNodeParameter_InvalidReinsCov.csv b/full-ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv
similarity index 100%
rename from Test/Data/DataNodeParameter_InvalidReinsCov.csv
rename to full-ifrs17-template/Test/Data/DataNodeParameter_InvalidReinsCov.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_A.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_A.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_A.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_A.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_AA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_AA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_AA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_AA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_APA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_APA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_APA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_APA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BE.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BE.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BE.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BE.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BEPA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BEPA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BEPA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_BEPA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_C.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_C.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_C.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_C.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_DA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_DA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_DA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_DA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_F.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_F.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_F.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_F.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_OA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_OA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_OA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_OA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_RA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_RA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_RA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_RA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_A.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_A.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_A.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_A.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AAPA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AAPA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AAPA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_AAPA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_APA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_APA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_APA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_APA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BE.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BE.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BE.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BE.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BEPA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BEPA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BEPA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_BEPA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_C.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_C.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_C.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_C.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_DA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_DA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_DA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_DA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_F.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_F.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_F.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_F.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_L.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_L.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_L.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_L.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_LR.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_LR.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_LR.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_LR.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OAPA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OAPA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OAPA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_OAPA.csv
diff --git a/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_RA.csv b/full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_RA.csv
similarity index 100%
rename from Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_RA.csv
rename to full-ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2021_3_RA.csv
diff --git a/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv b/full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv
similarity index 100%
rename from Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv
rename to full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv
diff --git a/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv b/full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv
similarity index 100%
rename from Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv
rename to full-ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv
diff --git a/Test/ExportIfrsVariable.ipynb b/full-ifrs17-template/Test/ExportIfrsVariable.ipynb
similarity index 100%
rename from Test/ExportIfrsVariable.ipynb
rename to full-ifrs17-template/Test/ExportIfrsVariable.ipynb
diff --git a/Test/ExportReportVariables.ipynb b/full-ifrs17-template/Test/ExportReportVariables.ipynb
similarity index 100%
rename from Test/ExportReportVariables.ipynb
rename to full-ifrs17-template/Test/ExportReportVariables.ipynb
diff --git a/Test/IfrsVariablesTest.ipynb b/full-ifrs17-template/Test/IfrsVariablesTest.ipynb
similarity index 100%
rename from Test/IfrsVariablesTest.ipynb
rename to full-ifrs17-template/Test/IfrsVariablesTest.ipynb
diff --git a/Test/ImportStorageTest.ipynb b/full-ifrs17-template/Test/ImportStorageTest.ipynb
similarity index 100%
rename from Test/ImportStorageTest.ipynb
rename to full-ifrs17-template/Test/ImportStorageTest.ipynb
diff --git a/Test/MapTemplateAndImportTest.ipynb b/full-ifrs17-template/Test/MapTemplateAndImportTest.ipynb
similarity index 99%
rename from Test/MapTemplateAndImportTest.ipynb
rename to full-ifrs17-template/Test/MapTemplateAndImportTest.ipynb
index 6dc5c63c..f82db019 100644
--- a/Test/MapTemplateAndImportTest.ipynb
+++ b/full-ifrs17-template/Test/MapTemplateAndImportTest.ipynb
@@ -23,13 +23,6 @@
" Test Map Template Export and Import
"
]
},
- {
- "cell_type": "code",
- "source": [
- "#!import \"../Export/Export\"",
- "\n#!import \"../Utils/TestHelper\""
- ]
- },
{
"cell_type": "code",
"source": [
diff --git a/Test/QueriesTest.ipynb b/full-ifrs17-template/Test/QueriesTest.ipynb
similarity index 99%
rename from Test/QueriesTest.ipynb
rename to full-ifrs17-template/Test/QueriesTest.ipynb
index 2eddc72f..ab6ca4d9 100644
--- a/Test/QueriesTest.ipynb
+++ b/full-ifrs17-template/Test/QueriesTest.ipynb
@@ -20,7 +20,7 @@
{
"cell_type": "code",
"source": [
- "#!eval-notebook \"../Utils/Queries\""
+ "#!import \"../CalculationEngine\""
]
},
{
diff --git a/Test/ReportStorageTest.ipynb b/full-ifrs17-template/Test/ReportStorageTest.ipynb
similarity index 96%
rename from Test/ReportStorageTest.ipynb
rename to full-ifrs17-template/Test/ReportStorageTest.ipynb
index acb1f22c..5fc57968 100644
--- a/Test/ReportStorageTest.ipynb
+++ b/full-ifrs17-template/Test/ReportStorageTest.ipynb
@@ -17,12 +17,6 @@
"nbformat": 4,
"nbformat_minor": 5,
"cells": [
- {
- "cell_type": "code",
- "source": [
- "#!eval-notebook \"../Report/ReportStorage\""
- ]
- },
{
"cell_type": "code",
"source": [
diff --git a/Test/ReportVariablesTest.ipynb b/full-ifrs17-template/Test/ReportVariablesTest.ipynb
similarity index 92%
rename from Test/ReportVariablesTest.ipynb
rename to full-ifrs17-template/Test/ReportVariablesTest.ipynb
index fb6904bf..cbaca38e 100644
--- a/Test/ReportVariablesTest.ipynb
+++ b/full-ifrs17-template/Test/ReportVariablesTest.ipynb
@@ -47,24 +47,6 @@
"#!import \"ReportVariablesTestBase\""
]
},
- {
- "cell_type": "markdown",
- "source": [
- "## Initialize Workspace"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "#!eval-notebook \"../Initialization/InitSystemorphToMemory\""
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "Workspace.InitializeFrom(DataSource);"
- ]
- },
{
"cell_type": "markdown",
"source": [
diff --git a/Test/ReportVariablesTestBase.ipynb b/full-ifrs17-template/Test/ReportVariablesTestBase.ipynb
similarity index 96%
rename from Test/ReportVariablesTestBase.ipynb
rename to full-ifrs17-template/Test/ReportVariablesTestBase.ipynb
index 4f320987..99e9ac16 100644
--- a/Test/ReportVariablesTestBase.ipynb
+++ b/full-ifrs17-template/Test/ReportVariablesTestBase.ipynb
@@ -26,7 +26,13 @@
{
"cell_type": "code",
"source": [
- "#!import \"../Report/ReportScopes\""
+ "#!import \"../Initialization/InitSystemorphToMemory\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "Workspace.InitializeFrom(DataSource);"
]
},
{
diff --git a/Test/SpecificationsFinancialPerformance.ipynb b/full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb
similarity index 99%
rename from Test/SpecificationsFinancialPerformance.ipynb
rename to full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb
index e52a0f5e..3cfaff8e 100644
--- a/Test/SpecificationsFinancialPerformance.ipynb
+++ b/full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb
@@ -97,13 +97,6 @@
"Import the Report definitions, initialize the Workspace and the Test Suite:"
]
},
- {
- "cell_type": "code",
- "source": [
- "#!import \"../Report/ReportScopes\"",
- "\n#!import \"../Report/ReportConfigurationAndUtils\""
- ]
- },
{
"cell_type": "code",
"source": [
@@ -240,18 +233,6 @@
"### Non Financial"
]
},
- {
- "cell_type": "markdown",
- "source": [
- "Import `CheckEquality`"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "#!import \"../Utils/TestHelper\""
- ]
- },
{
"cell_type": "markdown",
"source": [
diff --git a/Test/SpecificationsImportActuals.ipynb b/full-ifrs17-template/Test/SpecificationsImportActuals.ipynb
similarity index 99%
rename from Test/SpecificationsImportActuals.ipynb
rename to full-ifrs17-template/Test/SpecificationsImportActuals.ipynb
index d71638e8..7785ed4a 100644
--- a/Test/SpecificationsImportActuals.ipynb
+++ b/full-ifrs17-template/Test/SpecificationsImportActuals.ipynb
@@ -34,24 +34,6 @@
"\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively."
]
},
- {
- "cell_type": "markdown",
- "source": [
- "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "#!import \"SpecificationsSetup\""
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "---"
- ]
- },
{
"cell_type": "markdown",
"source": [
@@ -93,6 +75,30 @@
"#!eval-notebook \"../Initialization/InitSystemorphToMemory\""
]
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"SpecificationsSetup\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "---"
+ ]
+ },
{
"cell_type": "markdown",
"source": [
diff --git a/Test/SpecificationsImportCashflows.ipynb b/full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb
similarity index 99%
rename from Test/SpecificationsImportCashflows.ipynb
rename to full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb
index 481da388..7831cbde 100644
--- a/Test/SpecificationsImportCashflows.ipynb
+++ b/full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb
@@ -36,24 +36,6 @@
"\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively."
]
},
- {
- "cell_type": "markdown",
- "source": [
- "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "#!import \"SpecificationsSetup\""
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "---"
- ]
- },
{
"cell_type": "markdown",
"source": [
@@ -100,6 +82,30 @@
"Workspace.InitializeFrom(DataSource);"
]
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#!import \"SpecificationsSetup\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "---"
+ ]
+ },
{
"cell_type": "markdown",
"source": [
diff --git a/Test/SpecificationsSetup.ipynb b/full-ifrs17-template/Test/SpecificationsSetup.ipynb
similarity index 96%
rename from Test/SpecificationsSetup.ipynb
rename to full-ifrs17-template/Test/SpecificationsSetup.ipynb
index 73244da4..335f1ca3 100644
--- a/Test/SpecificationsSetup.ipynb
+++ b/full-ifrs17-template/Test/SpecificationsSetup.ipynb
@@ -23,13 +23,6 @@
" Specifications Setup
"
]
},
- {
- "cell_type": "code",
- "source": [
- "#!import \"../Import/ImportScopeCalculation\"",
- "\n#!import \"../Utils/TestHelper\""
- ]
- },
{
"cell_type": "code",
"source": [
@@ -97,7 +90,7 @@
"\n Value = scope.Value,",
"\n Partition = scope.GetStorage().TargetPartition };",
"\n",
- "\npublic static IfrsVariable FromCsmToIfrsVariable(this Csm scope)",
+ "\npublic static IfrsVariable FromCsmToIfrsVariable(this ContractualServiceMaring scope)",
"\n => new IfrsVariable{ EstimateType = scope.EstimateType, ",
"\n DataNode = scope.Identity.DataNode, ",
"\n AocType = scope.Identity.AocType, ",
@@ -105,7 +98,7 @@
"\n Value = scope.Value,",
"\n Partition = scope.GetStorage().TargetPartition };",
"\n",
- "\npublic static IfrsVariable FromLcToIfrsVariable(this Lc scope)",
+ "\npublic static IfrsVariable FromLcToIfrsVariable(this LossComponent scope)",
"\n => new IfrsVariable{ EstimateType = scope.EstimateType, ",
"\n DataNode = scope.Identity.DataNode, ",
"\n AocType = scope.Identity.AocType, ",
@@ -113,7 +106,7 @@
"\n Value = scope.Value,",
"\n Partition = scope.GetStorage().TargetPartition };",
"\n",
- "\npublic static IfrsVariable FromLoReCoToIfrsVariable(this LoReCo scope)",
+ "\npublic static IfrsVariable FromLoReCoToIfrsVariable(this LossRecoveryComponent scope)",
"\n => new IfrsVariable{ EstimateType = scope.EstimateType, ",
"\n DataNode = scope.Identity.DataNode, ",
"\n AocType = scope.Identity.AocType, ",
diff --git a/Test/SpecificationsTechnicalMargin.ipynb b/full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb
similarity index 98%
rename from Test/SpecificationsTechnicalMargin.ipynb
rename to full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb
index 5ef06971..26e2d8f3 100644
--- a/Test/SpecificationsTechnicalMargin.ipynb
+++ b/full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb
@@ -37,59 +37,65 @@
{
"cell_type": "markdown",
"source": [
- "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
+ "# Import Data"
]
},
{
- "cell_type": "code",
+ "cell_type": "markdown",
"source": [
- "#!import \"SpecificationsSetup\""
+ "",
+ "\n## Current Period"
]
},
{
"cell_type": "markdown",
"source": [
- "---"
+ "Please select the target period (i.e. year and month) and Reporting Node based on the imported data:"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
"source": [
- "# Import Data"
+ "var year = 2021 ;",
+ "\nvar month = 3 ;",
+ "\nvar reportingNode = \"CH\" ;",
+ "\nvar economicBasis = \"L\" ;"
]
},
{
"cell_type": "markdown",
"source": [
- "",
- "\n## Current Period"
+ "Import the Dimensions, Parameters, Nominal Cashflows, and Actuals from the corresponding csv files in Initialization/Systemorph/"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
"source": [
- "Please select the target period (i.e. year and month) and Reporting Node based on the imported data:"
+ "#!eval-notebook \"../Initialization/InitSystemorphToMemory\""
]
},
{
- "cell_type": "code",
+ "cell_type": "markdown",
"source": [
- "var year = 2021 ;",
- "\nvar month = 3 ;",
- "\nvar reportingNode = \"CH\" ;",
- "\nvar economicBasis = \"L\" ;"
+ "---"
]
},
{
"cell_type": "markdown",
"source": [
- "Import the Dimensions, Parameters, Nominal Cashflows, and Actuals from the corresponding csv files in Initialization/Systemorph/"
+ "[Setup IFRS17 Calculation Engine](../Import/ImportScopeCalculation):"
]
},
{
"cell_type": "code",
"source": [
- "#!eval-notebook \"../Initialization/InitSystemorphToMemory\""
+ "#!import \"SpecificationsSetup\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "---"
]
},
{
@@ -1115,8 +1121,8 @@
{
"cell_type": "code",
"source": [
- "var computedCSM_BoP_I = Test.GetScope(id_BoP_I).Value;",
- "\nvar computedLC_BoP_I = Test.GetScope(id_BoP_I).Value;"
+ "var computedCSM_BoP_I = Test.GetScope(id_BoP_I).Value;",
+ "\nvar computedLC_BoP_I = Test.GetScope(id_BoP_I).Value;"
]
},
{
@@ -1190,8 +1196,8 @@
{
"cell_type": "code",
"source": [
- "var computedCSM_MC_I = Test.GetScope(id_MC_I).Value;",
- "\nvar computedLC_MC_I = Test.GetScope(id_MC_I).Value;"
+ "var computedCSM_MC_I = Test.GetScope(id_MC_I).Value;",
+ "\nvar computedLC_MC_I = Test.GetScope(id_MC_I).Value;"
]
},
{
@@ -1441,8 +1447,8 @@
{
"cell_type": "code",
"source": [
- "var computedCSM_CL_C = Test.GetScope(id_CL_C).Value;",
- "\nvar computedLC_CL_C = Test.GetScope(id_CL_C).Value;"
+ "var computedCSM_CL_C = Test.GetScope(id_CL_C).Value;",
+ "\nvar computedLC_CL_C = Test.GetScope(id_CL_C).Value;"
]
},
{
@@ -1638,8 +1644,8 @@
{
"cell_type": "code",
"source": [
- "var computedCSM_EoP_C = Test.GetScope(id_EoP_C).Value;",
- "\nvar computedLC_EoP_C = Test.GetScope(id_EoP_C).Value;"
+ "var computedCSM_EoP_C = Test.GetScope(id_EoP_C).Value;",
+ "\nvar computedLC_EoP_C = Test.GetScope(id_EoP_C).Value;"
]
},
{
@@ -1688,7 +1694,7 @@
{
"cell_type": "code",
"source": [
- "var csm = allIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
+ "var csm = allIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => x.FromCsmToIfrsVariable())).ToArray();"
]
@@ -1708,7 +1714,7 @@
{
"cell_type": "code",
"source": [
- "var lc = allInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
+ "var lc = allInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => x.FromLcToIfrsVariable())).ToArray();"
]
@@ -1728,7 +1734,7 @@
{
"cell_type": "code",
"source": [
- "var loreco = allReInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
+ "var loreco = allReInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => x.FromLoReCoToIfrsVariable())).ToArray();"
]
diff --git a/Test/TechnicalMarginTest.ipynb b/full-ifrs17-template/Test/TechnicalMarginTest.ipynb
similarity index 100%
rename from Test/TechnicalMarginTest.ipynb
rename to full-ifrs17-template/Test/TechnicalMarginTest.ipynb
diff --git a/Test/Tests.ipynb b/full-ifrs17-template/Test/Tests.ipynb
similarity index 100%
rename from Test/Tests.ipynb
rename to full-ifrs17-template/Test/Tests.ipynb
diff --git a/ifrs17/CalculationEngine.ipynb b/ifrs17/CalculationEngine.ipynb
new file mode 100644
index 00000000..d6a34d5e
--- /dev/null
+++ b/ifrs17/CalculationEngine.ipynb
@@ -0,0 +1,30 @@
+{
+ "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": "code",
+ "source": [
+ "#!import \"DataModel/DataStructure\"",
+ "\n#!import \"Report/ReportScopes\"",
+ "\n#!import \"Import/Importers\"",
+ "\n#!import \"Export/ExportConfiguration\"",
+ "\n#!import \"Utils/TestHelper\"",
+ "\n#!import \"Utils/ImportCalculationMethods\""
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb
similarity index 100%
rename from Constants/Consts.ipynb
rename to ifrs17/Constants/Consts.ipynb
diff --git a/Constants/Enums.ipynb b/ifrs17/Constants/Enums.ipynb
similarity index 100%
rename from Constants/Enums.ipynb
rename to ifrs17/Constants/Enums.ipynb
diff --git a/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb
similarity index 100%
rename from Constants/Validations.ipynb
rename to ifrs17/Constants/Validations.ipynb
diff --git a/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb
similarity index 100%
rename from DataModel/DataStructure.ipynb
rename to ifrs17/DataModel/DataStructure.ipynb
diff --git a/Export/Export.ipynb b/ifrs17/Export/ExportConfiguration.ipynb
similarity index 100%
rename from Export/Export.ipynb
rename to ifrs17/Export/ExportConfiguration.ipynb
diff --git a/ifrs17/Images/BigPicture.PNG b/ifrs17/Images/BigPicture.PNG
new file mode 100644
index 00000000..9e7bfe68
Binary files /dev/null and b/ifrs17/Images/BigPicture.PNG differ
diff --git a/ifrs17/Images/Systemorph_logo.png b/ifrs17/Images/Systemorph_logo.png
new file mode 100644
index 00000000..402f8cfb
Binary files /dev/null and b/ifrs17/Images/Systemorph_logo.png differ
diff --git a/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb
similarity index 99%
rename from Import/ImportScopeCalculation.ipynb
rename to ifrs17/Import/ImportScopeCalculation.ipynb
index ce766089..803483c1 100644
--- a/Import/ImportScopeCalculation.ipynb
+++ b/ifrs17/Import/ImportScopeCalculation.ipynb
@@ -1831,7 +1831,7 @@
{
"cell_type": "code",
"source": [
- "public interface Csm : IScope",
+ "public interface ContractualServiceMaring : IScope",
"\n{",
"\n [NotVisible]string EstimateType => EstimateTypes.C;",
"\n ",
@@ -1842,7 +1842,7 @@
{
"cell_type": "code",
"source": [
- "public interface Lc : IScope",
+ "public interface LossComponent : IScope",
"\n{",
"\n [NotVisible]string EstimateType => EstimateTypes.L;",
"\n ",
@@ -1853,7 +1853,7 @@
{
"cell_type": "code",
"source": [
- "public interface LoReCo : IScope",
+ "public interface LossRecoveryComponent : IScope",
"\n{ ",
"\n [NotVisible]string EstimateType => EstimateTypes.LR;",
"\n ",
@@ -1998,7 +1998,7 @@
"\n ",
"\n IEnumerable Csms => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC",
"\n ? Enumerable.Empty()",
- "\n : GetScope(Identity).RepeatOnce()",
+ "\n : GetScope(Identity).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,",
"\n DataNode = x.Identity.DataNode,",
@@ -2011,7 +2011,7 @@
"\n IEnumerable Loss => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC",
"\n ? Enumerable.Empty()",
"\n : Identity.IsReinsurance ",
- "\n ? GetScope(Identity).RepeatOnce()",
+ "\n ? GetScope(Identity).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,",
"\n DataNode = x.Identity.DataNode,",
@@ -2020,7 +2020,7 @@
"\n Value = x.Value,",
"\n Partition = GetStorage().TargetPartition",
"\n })",
- "\n : GetScope(Identity).RepeatOnce()",
+ "\n : GetScope(Identity).RepeatOnce()",
"\n .Where(x => Math.Abs(x.Value) >= Precision)",
"\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,",
"\n DataNode = x.Identity.DataNode,",
diff --git a/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb
similarity index 100%
rename from Import/ImportStorage.ipynb
rename to ifrs17/Import/ImportStorage.ipynb
diff --git a/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb
similarity index 99%
rename from Import/Importers.ipynb
rename to ifrs17/Import/Importers.ipynb
index cbf48bab..34ab4202 100644
--- a/Import/Importers.ipynb
+++ b/ifrs17/Import/Importers.ipynb
@@ -266,7 +266,7 @@
{
"cell_type": "code",
"source": [
- "public async Task DataNodeFactoryAsync(string file, string tab, ImportArgs args)",
+ "public async Task DataNodeFactoryAsync (string file, string tab, ImportArgs args)",
"\n{",
"\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == args.ReportingNode && p.Scenario == null).ToArrayAsync()).SingleOrDefault();",
"\n if(partition == null) { ApplicationMessage.Log(Error.ParsedPartitionNotFound); return; }",
@@ -274,12 +274,13 @@
"\n var extension = System.IO.Path.GetExtension(file);",
"\n var stream = await Project.FileStorage.ReadAsync(file);",
"\n var target = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).Tables[tab];",
+ "\n ",
"\n",
"\n var dataNodesImported = target.Rows.Select(x => x.Field(nameof(RawVariable.DataNode))).ToHashSet();",
"\n var dataNodesDefined = await DataSource.Query().Where(x => dataNodesImported.Contains(x.SystemName)).ToArrayAsync();",
"\n var dataNodeStatesDefined = await DataSource.Query().Select(x => x.DataNode).ToArrayAsync();",
"\n var dataNodeParametersDefined = await DataSource.Query().Select(x => x.DataNode).ToArrayAsync(); ",
- "\n",
+ "\n ",
"\n var dataNodeStatesUndefined = dataNodesImported.Where(x => x != null && !dataNodeStatesDefined.Contains(x)).ToHashSet();",
"\n var dataNodeSingleParametersUndefined = dataNodesImported.Where(x => x != null &&",
"\n !dataNodeParametersDefined.Contains(x) && ",
@@ -290,7 +291,7 @@
"\n",
"\n await DataSource.UpdateAsync( dataNodeSingleParametersUndefined.Select(x => ",
"\n new SingleDataNodeParameter {DataNode = x, Year = args.Year, Month = DefaultDataNodeActivationMonth, PremiumAllocation = DefaultPremiumExperienceAdjustmentFactor, Partition = partition.Id}).ToArray() );",
- "\n",
+ "\n ",
"\n await DataSource.CommitAsync();",
"\n}"
]
@@ -491,6 +492,7 @@
"\n await CommitToDatabase(partition);",
"\n await CommitToDatabase(partition);",
"\n await CommitToDatabase(partition);",
+ "\n ",
"\n return log;",
"\n}"
]
diff --git a/ifrs17/LICENSE b/ifrs17/LICENSE
new file mode 100644
index 00000000..e0b8588d
--- /dev/null
+++ b/ifrs17/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Systemorph
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/OverviewCalculationEngine.ipynb b/ifrs17/OverviewCalculationEngine.ipynb
similarity index 71%
rename from OverviewCalculationEngine.ipynb
rename to ifrs17/OverviewCalculationEngine.ipynb
index d3d3e77b..108756ef 100644
--- a/OverviewCalculationEngine.ipynb
+++ b/ifrs17/OverviewCalculationEngine.ipynb
@@ -23,12 +23,6 @@
" IFRS17 Calculation Engine - an Overview
"
]
},
- {
- "cell_type": "markdown",
- "source": [
- "Version of 01 Sep 2022"
- ]
- },
{
"cell_type": "markdown",
"source": [
@@ -78,13 +72,11 @@
"cell_type": "markdown",
"source": [
"",
- "\n# Data Model, Data Input, Data Import",
+ "\n# Data Model, Data Import",
"\n",
"\nThe IFRS 17 calculations are based on a well-defined **data model**. The data input files are set up according to the data model, and the data import and all the ensuing calculations up to the final report generation respect the data model.",
"\n",
- "\nInput files as listed below are used to provide the necessary information on the business to be modeled. These files are part of the IFRS 17 Calculation Engine and can be used as templates for users intending to model their own business and adapt some files accordingly. ",
- "\n",
- "\nThe IFRS 17 calculations start by importing the data input files, and the more complex logic of the IFRS 17 Business Logic is defined in the [ImportScopes](./Import/ImportScopeCalculation#import-scope-calculation) notebook. This basis will later be used to calculate and generate different reports."
+ "\nThe IFRS 17 calculations start by importing data input files, and the more complex logic of the IFRS 17 Business Logic is defined in the [ImportScopes](./Import/ImportScopeCalculation#import-scope-calculation) notebook. This basis will later be used to calculate and generate different reports."
]
},
{
@@ -102,58 +94,6 @@
"\nMany abbreviations and acronyms used later in the documentation and the code are the **system names**, where the corresponding display names can be found together with the attributes."
]
},
- {
- "cell_type": "markdown",
- "source": [
- "",
- "\n## Data input: Reporting nodes, dimensions and partitions",
- "\n",
- "\nSee folders *Files* (DimensionsAndPartitions) and *Files/300.ReportingNodes* (ReportingNodes).",
- "\n- **ReportingNodes**: List of business units, often per country, with system name and display name, currency and \"G\" for the whole group",
- "\n- **DimensionsAndPartitions**: The many dimensions (21) required to characterize all of the data and results, with system names and display names. This information is quite stable, but some information related to partitions refers to the reporting nodes "
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "",
- "\n## Data input: Groups of insurance and reinsurance contracts",
- "\n",
- "\nSee folder Files/700.DataNodes. The information is about data nodes, that is Groups of Insurance Contracts (GICs) and Groups of Reinsurance Contracts (GRICs) and portfolios of these.",
- "\n- **DataNodes**: List of all GICs and GRICs, each with several attributes and the portfolios to which they belong; an additional attribute of GRICs being the reinsurance partner",
- "\n- **DataNodeParameters** *\\_* *\\_* *\\_*: List of those GICs and GRICs that are actually used for the given reporting node/year/month combination with few attributes; if needed, more such files may be added for other reporting node/year/month combinations",
- "\n- **DataNodeStates** *\\_* *\\_* *\\_*: Switching data nodes on and off, the normal state is (\"Active\") for all the GICs and GRICs of the reporting node/year/month combination; if needed, more such files may be added for other reporting node/year/month combinations"
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "",
- "\n## Data input: Parameters from financial markets",
- "\n",
- "\nSee folder Files/800.Parameters.",
- "\n- **YieldCurve**: List of all yield curves to be used, for different currencies and as-of dates (year/month), using a yearly grid of interest rate maturities extending as far as needed",
- "\n- **ExchangeRate**: List of exchange rates to be used, for different currencies and as-of dates (year/month), with a type (Spot/Average); defined as the value of 1 foreign unit expressed in the group currency of the insurance company ",
- "\n- **CreditDefaultRate**: For relevant year/month combinations, each with a full list of all credit ratings in S&P notation with their default rate (= probabilty of default within 1 year)",
- "\n- **PartnerRating**: For each reinsurance partner of a relevant GRIC, the rating in S&P notation with the as-of date (year/month)"
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "",
- "\n## Data input: Groups of insurance and reinsurance contracts",
- "\n",
- "\nSee folder Files/900.TransactionalData.",
- "\n- **Actuals** *\\_* *\\_* *\\_*: List of all actual amounts for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types and other attributes; we need at least two such files for the two dates of the Analysis of Change",
- "\n- **Openings** *\\_* *\\_* *\\_*: List of the opening amounts for some GICs that are used by the given reporting node. The year/month combination corresponds to the beginning of the planned Analysis of Change period, so only one such file is required. The entries are by EstimateType and AmountType.",
- "\n- **NominalCashflows** *\\_* *\\_* *\\_*: List of all projected cash flows for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types, novelty types and other attributes, where the cash flow amounts are given in a regular sequence extending as far as needed; we need at least two such files for the two dates of the Analysis of Change",
- "\n",
- "\nThe structure of the [Actuals](./InputFormatDescription#actual), [Openings](./InputFormatDescription#opening) and [NominalCashflows](./InputFormatDescription#cashflow) files is explained in a special [notebook](./InputFormatDescription).",
- "\n",
- "\nThe less usual option of having discounted instead of nominal cash flows in the input is also supported."
- ]
- },
{
"cell_type": "markdown",
"source": [
@@ -213,9 +153,7 @@
"\n",
"\nSome reports of ReportScopes just present existing data from the database, namely the imported data and the results already calculated using the methods of [ImportScopes](#model-calc).",
"\n",
- "\nSome other reports related to **[Financial Performance](./Report/ReportScopes#financial-performance)** (profit & loss) require further calculations provided by ReportScopes. An IFRS 17 financial performance report has at least four sections: Insurance Revenue, Insurance Service Expense, Insurance Finance Income/Expense and Other Comprehensive Income. Formulas are provided [here](./Report/ReportScopes#financial-performance).",
- "\n",
- "\nWhile the ReportScopes notebook provides the calculation formulas for different reports, the production of reports is done by a notebook such as **[Reports](./Report/Reports#report-production)** which imports ReportScopes."
+ "\nSome other reports related to **[Financial Performance](./Report/ReportScopes#financial-performance)** (profit & loss) require further calculations provided by ReportScopes. An IFRS 17 financial performance report has at least four sections: Insurance Revenue, Insurance Service Expense, Insurance Finance Income/Expense and Other Comprehensive Income. Formulas are provided [here](./Report/ReportScopes#financial-performance)."
]
},
{
diff --git a/ifrs17/README.md b/ifrs17/README.md
new file mode 100644
index 00000000..4447c0c3
--- /dev/null
+++ b/ifrs17/README.md
@@ -0,0 +1,31 @@
+
+
+
+**IFRS17 Calculation Engine**
+
+Systemorph's IFRS 17 Calculation Engine is a tool to conduct all the essential IFRS 17 calculations given some key figures, future cashflows and actual amounts, for groups of insurance contracts and other basic information. The result is a set of reports needed for IFRS 17 accounting and management information.
+
+# Get started
+
+Systemorph portal allows Users to create their own projects powered by the Vertex 10 technology.
+
+## Overview
+
+
+
+
+If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine).
+You will be introduced to
+- [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed
+- [Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material
+- [Reports](./Report/ReportScopes) for data analysis and drill down to the lowest data granularity. With links to discover the calculation of the [Financial Performance](./Report/ReportScopes#ifrs-17-financial-performance)
+
+
+## Got Questions
+
+For support around the IFRS17 CalculationEngine you can personally reach out to one of our IFRS17 experts:
+- [Dr. Andrea Muolo]()
+- [Dr. Davide Colleoni](https://www.linkedin.com/in/davidecolleoni/)
+- [Mrs. Sara Busato]()
+
+If you are interested in adapting the IFRS17 CalculationEngine to your data and would like to start a collaboration with us, you can contact [Wolfgang Maehr]()
\ No newline at end of file
diff --git a/Report/ReportConfigurationAndUtils.ipynb b/ifrs17/Report/ReportConfigurationAndUtils.ipynb
similarity index 100%
rename from Report/ReportConfigurationAndUtils.ipynb
rename to ifrs17/Report/ReportConfigurationAndUtils.ipynb
diff --git a/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb
similarity index 100%
rename from Report/ReportScopes.ipynb
rename to ifrs17/Report/ReportScopes.ipynb
diff --git a/Report/ReportStorage.ipynb b/ifrs17/Report/ReportStorage.ipynb
similarity index 100%
rename from Report/ReportStorage.ipynb
rename to ifrs17/Report/ReportStorage.ipynb
diff --git a/Report/Reports.ipynb b/ifrs17/Report/Reports.ipynb
similarity index 100%
rename from Report/Reports.ipynb
rename to ifrs17/Report/Reports.ipynb
diff --git a/Utils/ApplicationMessage.ipynb b/ifrs17/Utils/ApplicationMessage.ipynb
similarity index 100%
rename from Utils/ApplicationMessage.ipynb
rename to ifrs17/Utils/ApplicationMessage.ipynb
diff --git a/Utils/Extensions.ipynb b/ifrs17/Utils/Extensions.ipynb
similarity index 100%
rename from Utils/Extensions.ipynb
rename to ifrs17/Utils/Extensions.ipynb
diff --git a/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb
similarity index 100%
rename from Utils/ImportCalculationMethods.ipynb
rename to ifrs17/Utils/ImportCalculationMethods.ipynb
diff --git a/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb
similarity index 100%
rename from Utils/Queries.ipynb
rename to ifrs17/Utils/Queries.ipynb
diff --git a/Utils/TestHelper.ipynb b/ifrs17/Utils/TestHelper.ipynb
similarity index 100%
rename from Utils/TestHelper.ipynb
rename to ifrs17/Utils/TestHelper.ipynb