diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb index 0b4a1094..f9062ea3 100644 --- a/full-ifrs17-template/Export/MapTemplate.ipynb +++ b/full-ifrs17-template/Export/MapTemplate.ipynb @@ -48,16 +48,17 @@ { "cell_type": "markdown", "source": [ - "Choose to run the Map Template either with the set of Systemorph data in memory or with the data present in the Database. Uncomment the desired option." + "Choose to run the Map Template either with the set of Systemorph data in memory or with the data present in the Database: ", + "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database", + "\n- #!eval-notebook \"../Import/CloseImportTemplate\" : uses the in-memory set up", + "\n", + "\nWe use here the in-memory set up." ] }, { "cell_type": "code", "source": [ - "/* The DataSource is configured and connected to real database */", - "\n//#!eval-notebook \"../Database/Configure\"", - "\n/* The Systemorph set of dimensions + mockdata (+ those added in the CloseImportTemplate) are dispatched to the unconfigured in-memory DataSource */", - "\n#!eval-notebook \"../Import/CloseImportTemplate\"" + "#!eval-notebook \"../Import/CloseImportTemplate\"" ] }, { diff --git a/full-ifrs17-template/Import/CloseImportTemplate.ipynb b/full-ifrs17-template/Import/CloseImportTemplate.ipynb index eae574bf..7bb5d82e 100644 --- a/full-ifrs17-template/Import/CloseImportTemplate.ipynb +++ b/full-ifrs17-template/Import/CloseImportTemplate.ipynb @@ -18,7 +18,13 @@ { "cell_type": "markdown", "source": [ - "

Close Imports Template

" + "*Note: before configuring your data please refer to [Map Template](../Export/MapTemplate) Notebook.*" + ] + }, + { + "cell_type": "markdown", + "source": [ + "

Close Import Template

" ] }, { @@ -40,6 +46,16 @@ "\nThe data source is initialized and the whole IFRS 17 Calculation Engine code is compiled. " ] }, + { + "cell_type": "markdown", + "source": [ + "Choose to run the Close Import Template notebook either on top of the set of Systemorph data in memory or on top to the data present in the Database: ", + "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database", + "\n- #!eval-notebook \"../Initialization/InitSystemorphToMemory\" : uses the in-memory set up", + "\n", + "\nWe use here the in-memory set up." + ] + }, { "cell_type": "code", "source": [ diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 3a4c25fc..d1d48400 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -21,11 +21,15 @@ For more information on our IFRS 17 initiative check out our [IFRS 17 page](*lan For an overview of the **Full IFRS 17 Template** project refer to the [OverviewIFRS17Template](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/OverviewIFRS17Template) -# Report +# Report Check out the IFRS 17 reports computed for our mock use-cases [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Report/Reports). -Check out the our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate). +# Export - Import + +Check out our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate). + +Import your custom files using our [CloseImportTemplate](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Import/CloseImportTemplate) Notebook. # Got Questions diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb index 5d9ef4db..b31f2e68 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/full-ifrs17-template/Report/Reports.ipynb @@ -27,10 +27,10 @@ { "cell_type": "markdown", "source": [ - "For demonstration purposes we import here data for 7 *Group of Insurance Contract* (GIC) and 4 *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).", - "\n
The imported data set consists of cashflows, actuals, and parameters for two consecutive periods (Year 2020-Quarter 4 and Year 2021-Quarter 1)", - "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or to add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ", - "\n
For simplicity, we import the same transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.", + "For demonstration purposes we import here data for some *Group of Insurance Contract* (GIC) and *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).", + "\n
The imported data set consists of cashflows, actuals, and parameters.", + "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ", + "\n
For simplicity, we import similar transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.", "\n", "\nFollow the instructions below for a guided interaction with the reports." ] @@ -38,7 +38,13 @@ { "cell_type": "markdown", "source": [ - "# Set up data and configuration" + "# Set up data and configuration", + "\n", + "\nChoose to run the Reports notebook either with the set of Systemorph data in memory or with the data present in the Database: ", + "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database", + "\n- #!eval-notebook \"../Import/CloseImportTemplate\" : uses the in-memory set up", + "\n", + "\nWe use here the in-memory set up." ] }, { @@ -108,7 +114,7 @@ "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here. ", "\n", "\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. ", - "\nFilters can be applied to report to isolate a sub-set of the data, by selecting the dimension to filter and the system value desired. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}." + "\n
Filters can be applied to reports in order to isolate a sub-set of the data. They are specified by the name of the dimension to filter and the system name of the desired value. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}." ] }, { @@ -260,7 +266,7 @@ "var actuarialLrcReport = ifrs17Report.ActuarialLrc;", "\nactuarialLrcReport.ReportingNode = \"CH\";", "\nactuarialLrcReport.ReportingPeriod = (2021, 3);", - "\nactuarialLrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", + "\nactuarialLrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\"", "\nactuarialLrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await actuarialLrcReport.ToReportAsync) with {Height = 750}" ] @@ -279,7 +285,7 @@ "var lrcReport = ifrs17Report.Lrc;", "\nlrcReport.ReportingNode = \"CH\";", "\nlrcReport.ReportingPeriod = (2021, 3);", - "\nlrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", + "\nlrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\",", "\nlrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lrcReport.ToReportAsync) with {Height = 250}" ] diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 636e87a9..36026b3c 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1627,7 +1627,6 @@ "\n [NotVisible]", "\n [Dimension(typeof(EconomicBasis))]", "\n [IdentityProperty]", - "\n [AggregateBy]", "\n public string EconomicBasis { get; init; }", "\n ", "\n public double Value { get; init; }", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index d8c0a918..66c34b78 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -331,18 +331,6 @@ "\nThe new Aoc Configurations are created with the same order of the Aoc Types. " ] }, - { - "cell_type": "code", - "source": [ - "" - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Report/ReportMutableScopes.ipynb b/ifrs17/Report/ReportMutableScopes.ipynb index 68b45530..b34cea87 100644 --- a/ifrs17/Report/ReportMutableScopes.ipynb +++ b/ifrs17/Report/ReportMutableScopes.ipynb @@ -96,13 +96,15 @@ "\n ((int Year, int Month) ReportingPeriod, string ReportingNode, string Scenario, CurrencyType) ShowSettings => (ReportingPeriod, ReportingNode, Scenario, CurrencyType);", "\n ", "\n // Slice and Dice", + "\n protected string[] forbiddenSlices => new string[] { };", + "\n", "\n IEnumerable RowSlices { get; set; }", "\n protected string[] defaultRowSlices => new string[] { };", - "\n protected string[] rowSlices => RowSlices is null ? defaultRowSlices : defaultRowSlices.Concat(RowSlices).ToArray();", + "\n protected string[] rowSlices => RowSlices is null ? defaultRowSlices : defaultRowSlices.Concat(RowSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", "\n", "\n IEnumerable ColumnSlices { get; set; }", "\n protected string[] defaultColumnSlices => new string[] { };", - "\n protected string[] columnSlices => ColumnSlices is null ? defaultColumnSlices : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).ToArray(); //I can't put a slice before defaultSlices !!!", + "\n protected string[] columnSlices => ColumnSlices is null ? defaultColumnSlices : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();", "\n protected HashSet<(ReportIdentity, CurrencyType)> GetIdentities() => GetStorage().GetIdentities(ReportingPeriod, ReportingNode, Scenario, CurrencyType);", "\n ", "\n // Filter", @@ -144,6 +146,7 @@ "\n}", "\n", "\npublic interface RaReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] { \"Novelty\", \"VariableType\" };", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"LiabilityType\", \"EconomicBasis\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -154,6 +157,7 @@ "\n}", "\n", "\npublic interface WrittenReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {nameof(EconomicBasis)};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"LiabilityType\"};", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -195,6 +199,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().ActuarialExperienceAdjustment.Filter(dataFilter);", "\n}", "\npublic interface TmReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\", \"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -202,6 +207,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().LrcTechnicalMargin.Filter(dataFilter);", "\n}", "\npublic interface CsmReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\", \"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -213,6 +219,7 @@ "\n GetScopes(GetIdentities()).Aggregate().Loreco.Filter(dataFilter);", "\n}", "\npublic interface ActLrcReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\",\"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -220,6 +227,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().LrcActuarial.Filter(dataFilter);", "\n}", "\npublic interface LrcReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -227,6 +235,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().Lrc.Filter(dataFilter);", "\n}", "\npublic interface ActLicReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\",\"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -234,6 +243,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().LicActuarial.Filter(dataFilter);", "\n}", "\npublic interface LicReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };", "\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ", @@ -241,6 +251,7 @@ "\n : GetScopes(GetIdentities()).Aggregate().Lic.Filter(dataFilter);", "\n}", "\npublic interface FpReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\", \"EstimateType\"};", "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\",\"LiabilityType\" };", "\n int IIfrs17Report.headerColumnWidthValue => 500;", diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index f4f56181..b8a73b15 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -385,7 +385,7 @@ "", "\n## LIC (Liability for Incurred Claims)", "\n", - "\nLiability of Incurred Claims (LIC) report includes the contributions from [Lic Actuarial](#lic-actuarial) (Fullfilment Cashflow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." + "\nLiability of Incurred Claims (LIC) report includes the contributions from [LIC Actuarial](#lic-actuarial) (Fullfilment Cashflow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual." ] }, {