From ce767d9945db817b2636a8be8a5b528b82949e99 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 30 Nov 2022 11:12:04 +0100 Subject: [PATCH 1/6] readme ce and init of PV --- PresentValueSeries/InitializeData.ipynb | 9 +++++++++ ifrs17/README.md | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/PresentValueSeries/InitializeData.ipynb b/PresentValueSeries/InitializeData.ipynb index 8fc5e0c7..bb01a0f9 100644 --- a/PresentValueSeries/InitializeData.ipynb +++ b/PresentValueSeries/InitializeData.ipynb @@ -37,6 +37,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "#!import \"//ifrs17/v1.0.0/CalculationEngine\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/README.md b/ifrs17/README.md index 4f6f5b7d..40e4c348 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -1,6 +1,6 @@ **The Systemorph IFRS 17 Calculation Engine** provides the functionality to develop and maintain an IFRS 17 solution based on Systemorph Cloud. It includes specifications and corresponding implementations of data importers, data transformations, calculations, reports and much more. From cf9ca01dd8be140fd4896816049f458090352f70 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 30 Nov 2022 12:04:44 +0100 Subject: [PATCH 2/6] ifrs17 ce --- ifrs17/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/README.md b/ifrs17/README.md index 40e4c348..f3229e57 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -18,7 +18,7 @@ Open our [**IFRS 17 Template**](https://portal.systemorph.cloud/project/ifrs17-t If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [Overview Calculation Engine](./OverviewCalculationEngine) notebook. You will be introduced to: - [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed -- [Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material +- [Import Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material

IFRS 17 Solution Overview From 91a0654b60dd61b3921ff3d886202adf9f7e5e7e Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 30 Nov 2022 15:30:39 +0100 Subject: [PATCH 3/6] YieldCurveName --- ifrs17/DataModel/DataStructure.ipynb | 8 ++++++++ ifrs17/Import/Importers.ipynb | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 79f3dd04..9b3fb206 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1215,6 +1215,10 @@ "\n [Dimension(typeof(Scenario))]", "\n public string Scenario { get; init; }", "\n", + "\n [IdentityProperty]", + "\n [Display(Order = 37)]", + "\n public string Name { get; init; }", + "\n", "\n [Conversion(typeof(PrimitiveArrayConverter))]", "\n [Display(Order = 40)]", "\n public double[] Values { get; init; }", @@ -1492,6 +1496,10 @@ "\n [Dimension(typeof(Portfolio))]", "\n //[Immutable]", "\n public string Portfolio { get; init; }", + "\n", + "\n [NotVisible] ", + "\n //[Immutable]", + "\n public string YieldCurveName { get; init; }", "\n ", "\n public virtual string Partner { get; init; }", "\n}" diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 3cd1de4a..f051b4c2 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -633,7 +633,10 @@ "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", - "\n Portfolio = pf", + "\n Portfolio = pf,", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0 ", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gic, datarow);", "\n })", @@ -658,7 +661,10 @@ "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", "\n Portfolio = pf,", - "\n Partner = datarow.Field(nameof(GroupOfContract.Partner))", + "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0 ", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gric, datarow);", "\n })", From c5845d9275e9ce4e6762c422d56bc29c0ef7362c Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 30 Nov 2022 15:43:15 +0100 Subject: [PATCH 4/6] from public --- ifrs17/DataModel/DataStructure.ipynb | 4 ++-- ifrs17/Import/Importers.ipynb | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 9b3fb206..aa4cf4e1 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1218,7 +1218,7 @@ "\n [IdentityProperty]", "\n [Display(Order = 37)]", "\n public string Name { get; init; }", - "\n", + "\n ", "\n [Conversion(typeof(PrimitiveArrayConverter))]", "\n [Display(Order = 40)]", "\n public double[] Values { get; init; }", @@ -1497,7 +1497,7 @@ "\n //[Immutable]", "\n public string Portfolio { get; init; }", "\n", - "\n [NotVisible] ", + "\n [NotVisible]", "\n //[Immutable]", "\n public string YieldCurveName { get; init; }", "\n ", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index f051b4c2..e13c1480 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -634,8 +634,8 @@ "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", "\n Portfolio = pf,", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0 ", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName))", "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gic, datarow);", @@ -662,8 +662,8 @@ "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", "\n Portfolio = pf,", "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0 ", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName))", "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gric, datarow);", From 6cb7257a87d454b27fbb5d29930c5e16fbeb8d0a Mon Sep 17 00:00:00 2001 From: Sara Busato Date: Wed, 30 Nov 2022 17:04:40 +0100 Subject: [PATCH 5/6] fixed MapTemplateAndImportTest --- ifrs17-template/Test/MapTemplateAndImportTest.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ifrs17-template/Test/MapTemplateAndImportTest.ipynb b/ifrs17-template/Test/MapTemplateAndImportTest.ipynb index cbb0166b..f06f2428 100644 --- a/ifrs17-template/Test/MapTemplateAndImportTest.ipynb +++ b/ifrs17-template/Test/MapTemplateAndImportTest.ipynb @@ -304,9 +304,10 @@ "\ndataNodeStateCols.Intersect(tables.Tables[\"DataNodeState\"].Columns.Select(x => x.ColumnName).ToArray()).Count().Should().Be(dataNodeStateCols.Length);", "\n", "\n// check that imported data matches the exported data ", + "\nvar dataNodeStates = Workspace.Query().ToArray();", "\nawait Import.FromFile(filename+\".xlsx\").WithFormat(ImportFormats.DataNodeState).WithTarget(Workspace).ExecuteAsync();", "\n// Workspace is empty because ValidateDataNodeStatesAsync removes the entry, since this is already present in the DataSource.", - "\nWorkspace.Query().ToArray().Should().BeEmpty();", + "\n(Workspace.Query().ToArray().Except(dataNodeStates)).Should().BeEmpty();", "\n*/" ], "metadata": {}, From d3ba55f78e88cb1add39821e52eae664aa9984fb Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Wed, 30 Nov 2022 21:08:11 +0100 Subject: [PATCH 6/6] .any --- ifrs17/Import/Importers.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index e13c1480..9e10fe50 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -634,8 +634,8 @@ "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", "\n Portfolio = pf,", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName))", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)) ", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gic, datarow);", @@ -662,8 +662,8 @@ "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", "\n Portfolio = pf,", "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)).Count()>0", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName))", + "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)) ", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", "\n : (string)null,", "\n };", "\n return ExtendGroupOfContract(gric, datarow);",