From 9e380ebf184acf12225e95b1d399c59ea79001d0 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Wed, 21 Jun 2023 11:45:24 +0200 Subject: [PATCH 01/16] add Constructor to DataNodeData --- ifrs17/DataModel/DataStructure.ipynb | 17 +++++++++++++++++ ifrs17/Import/ImportStorage.ipynb | 2 ++ ifrs17/Utils/Queries.ipynb | 7 ++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index cdbd7f16..7e9e9410 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1701,6 +1701,23 @@ "\n ", "\n public bool IsReinsurance { get; init; }", "\n public DataNodeData(){}", + "\n", + "\n public DataNodeData(GroupOfContract goc){", + "\n DataNode = goc.SystemName;", + "\n ContractualCurrency = goc.ContractualCurrency;", + "\n FunctionalCurrency = goc.FunctionalCurrency;", + "\n LineOfBusiness = goc.LineOfBusiness;", + "\n ValuationApproach = goc.ValuationApproach;", + "\n OciType = goc.OciType;", + "\n Portfolio = goc.Portfolio;", + "\n AnnualCohort = goc.AnnualCohort;", + "\n LiabilityType = goc.LiabilityType;", + "\n Profitability = goc.Profitability;", + "\n Partner = goc.Partner;", + "\n YieldCurveName = goc.YieldCurveName;", + "\n", + "\n IsReinsurance = goc.GetType() == typeof(GroupOfReinsuranceContract); ", + "\n }", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 588c1ce3..7c6c79fb 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -306,6 +306,8 @@ "\n public IEnumerable GetAllAocSteps(InputSource source) => aocStepByInputSource[source];", "\n public IEnumerable GetCalculatedTelescopicAocSteps() => AocConfigurationByAocStep.Where(kvp => kvp.Value.DataType == DataType.CalculatedTelescopic).Select(kvp => kvp.Key);", "\n", + "\n public DataNodeData GetDataNodeData(ImportIdentity id) => DataNodeDataBySystemName[id.DataNode];", + "\n", "\n //YieldCurve", "\n public double[] GetYearlyYieldCurve(ImportIdentity id, string economicBasis) {", "\n var yc = GetYieldCurve(id, economicBasis);", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 47410222..a66d576b 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -302,10 +302,11 @@ "\n .ToDictionary(dn => dn.SystemName, dn => {", "\n var dnCurrentState = dataNodeStates[dn.SystemName][CurrentPeriod];", "\n var dnPreviousState = dataNodeStates[dn.SystemName][PreviousPeriod];", - "\n return new DataNodeData(){Year = dnPreviousState.Year, ", + "\n return new DataNodeData(dn){Year = dnPreviousState.Year, ", "\n Month = dnPreviousState.Month,", "\n State = dnCurrentState.State,", - "\n PreviousState = dnPreviousState.State,", + "\n PreviousState = dnPreviousState.State", + "\n /*,", "\n DataNode = dn.SystemName,", "\n ContractualCurrency = dn.ContractualCurrency,", "\n FunctionalCurrency = dn.FunctionalCurrency,", @@ -318,7 +319,7 @@ "\n Profitability = dn.Profitability,", "\n Partner = dn.Partner,", "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", - "\n YieldCurveName = dn.YieldCurveName", + "\n YieldCurveName = dn.YieldCurveName*/", "\n };", "\n }", "\n );", From c6ec8fa8c901bdd86e1ed499aa72af49e01652b7 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Wed, 21 Jun 2023 12:24:50 +0200 Subject: [PATCH 02/16] keep despite constructor (otherwise the DataNodeParameter not mapped properly !?) --- ifrs17/Utils/Queries.ipynb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index a66d576b..97832ff0 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -305,9 +305,8 @@ "\n return new DataNodeData(dn){Year = dnPreviousState.Year, ", "\n Month = dnPreviousState.Month,", "\n State = dnCurrentState.State,", - "\n PreviousState = dnPreviousState.State", - "\n /*,", - "\n DataNode = dn.SystemName,", + "\n PreviousState = dnPreviousState.State,", + "\n DataNode = dn.SystemName, // TODO for some reason this has to remain here despite the constructor.", "\n ContractualCurrency = dn.ContractualCurrency,", "\n FunctionalCurrency = dn.FunctionalCurrency,", "\n LineOfBusiness = dn.LineOfBusiness,", @@ -319,7 +318,7 @@ "\n Profitability = dn.Profitability,", "\n Partner = dn.Partner,", "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", - "\n YieldCurveName = dn.YieldCurveName*/", + "\n YieldCurveName = dn.YieldCurveName", "\n };", "\n }", "\n );", From 5e2e5c62b5903d7051b85e73ca7208783b96e220 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Wed, 21 Jun 2023 16:00:55 +0200 Subject: [PATCH 03/16] try ExtendDataNodeData method --- ifrs17/DataModel/DataStructure.ipynb | 17 +---------------- ifrs17/Utils/ImportCalculationMethods.ipynb | 18 ++++++++++++++++++ ifrs17/Utils/Queries.ipynb | 8 +++++--- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 7e9e9410..feeb0f40 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1700,24 +1700,9 @@ "\n public State PreviousState { get; init; }", "\n ", "\n public bool IsReinsurance { get; init; }", + "\n", "\n public DataNodeData(){}", "\n", - "\n public DataNodeData(GroupOfContract goc){", - "\n DataNode = goc.SystemName;", - "\n ContractualCurrency = goc.ContractualCurrency;", - "\n FunctionalCurrency = goc.FunctionalCurrency;", - "\n LineOfBusiness = goc.LineOfBusiness;", - "\n ValuationApproach = goc.ValuationApproach;", - "\n OciType = goc.OciType;", - "\n Portfolio = goc.Portfolio;", - "\n AnnualCohort = goc.AnnualCohort;", - "\n LiabilityType = goc.LiabilityType;", - "\n Profitability = goc.Profitability;", - "\n Partner = goc.Partner;", - "\n YieldCurveName = goc.YieldCurveName;", - "\n", - "\n IsReinsurance = goc.GetType() == typeof(GroupOfReinsuranceContract); ", - "\n }", "\n}" ], "metadata": {}, diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index 3ab4e8a9..387879bd 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -213,6 +213,24 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## DataNodeData" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static DataNodeData ExtendDataNodeData(GroupOfContract goc, DataNodeData dnd) => dnd;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 97832ff0..5b7745ca 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -28,7 +28,8 @@ { "cell_type": "code", "source": [ - "#!import \"./Extensions\"" + "#!import \"./Extensions\"", + "\n#!import \"./ImportCalculationMethods\"" ], "metadata": {}, "execution_count": 0, @@ -302,11 +303,11 @@ "\n .ToDictionary(dn => dn.SystemName, dn => {", "\n var dnCurrentState = dataNodeStates[dn.SystemName][CurrentPeriod];", "\n var dnPreviousState = dataNodeStates[dn.SystemName][PreviousPeriod];", - "\n return new DataNodeData(dn){Year = dnPreviousState.Year, ", + "\n var dnData = new DataNodeData() {Year = dnPreviousState.Year, ", "\n Month = dnPreviousState.Month,", "\n State = dnCurrentState.State,", "\n PreviousState = dnPreviousState.State,", - "\n DataNode = dn.SystemName, // TODO for some reason this has to remain here despite the constructor.", + "\n DataNode = dn.SystemName,", "\n ContractualCurrency = dn.ContractualCurrency,", "\n FunctionalCurrency = dn.FunctionalCurrency,", "\n LineOfBusiness = dn.LineOfBusiness,", @@ -320,6 +321,7 @@ "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", "\n YieldCurveName = dn.YieldCurveName", "\n };", + "\n return ExtendDataNodeData(dn, dnData);", "\n }", "\n );", "\n}" From cdd5fbd8decf05c0f30f52f7802e5a4c44f6e521 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Wed, 21 Jun 2023 19:01:49 +0200 Subject: [PATCH 04/16] remove double run of Imports --- ifrs17/Import/ImportStorage.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 7c6c79fb..2c63de9e 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -58,7 +58,7 @@ "cell_type": "code", "source": [ "#!import \"../Utils/EqualityComparers\"", - "\n#!import \"../Utils/ImportCalculationMethods\"", + "\n//#!import \"../Utils/ImportCalculationMethods\"", "\n#!import \"../Utils/Queries\"" ], "metadata": {}, From 4a9ed6cb65839ab76d9408897378acfa429437ee Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Thu, 22 Jun 2023 10:09:20 +0200 Subject: [PATCH 05/16] include ContractTerm --- ifrs17/DataModel/DataStructure.ipynb | 1 + ifrs17/Utils/ImportCalculationMethods.ipynb | 18 ------------------ ifrs17/Utils/Queries.ipynb | 6 +++--- 3 files changed, 4 insertions(+), 21 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index feeb0f40..d2153f22 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1700,6 +1700,7 @@ "\n public State PreviousState { get; init; }", "\n ", "\n public bool IsReinsurance { get; init; }", + "\n public int ContractTerm { get; init; }", "\n", "\n public DataNodeData(){}", "\n", diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index 387879bd..3ab4e8a9 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -213,24 +213,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## DataNodeData" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public static DataNodeData ExtendDataNodeData(GroupOfContract goc, DataNodeData dnd) => dnd;" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 5b7745ca..438eab6c 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -303,7 +303,7 @@ "\n .ToDictionary(dn => dn.SystemName, dn => {", "\n var dnCurrentState = dataNodeStates[dn.SystemName][CurrentPeriod];", "\n var dnPreviousState = dataNodeStates[dn.SystemName][PreviousPeriod];", - "\n var dnData = new DataNodeData() {Year = dnPreviousState.Year, ", + "\n return new DataNodeData() {Year = dnPreviousState.Year, ", "\n Month = dnPreviousState.Month,", "\n State = dnCurrentState.State,", "\n PreviousState = dnPreviousState.State,", @@ -319,9 +319,9 @@ "\n Profitability = dn.Profitability,", "\n Partner = dn.Partner,", "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", - "\n YieldCurveName = dn.YieldCurveName", + "\n YieldCurveName = dn.YieldCurveName,", + "\n ContractTerm = dn.ContractTerm", "\n };", - "\n return ExtendDataNodeData(dn, dnData);", "\n }", "\n );", "\n}" From c733563aa18ad322cf1e537230260b49af3ed5e7 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Thu, 22 Jun 2023 10:41:11 +0200 Subject: [PATCH 06/16] adapt Importers --- ifrs17/DataModel/DataStructure.ipynb | 4 ++++ ifrs17/Import/Importers.ipynb | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index d2153f22..6082b22c 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1448,6 +1448,10 @@ "\n public string YieldCurveName { get; init; }", "\n ", "\n public virtual string Partner { get; init; }", + "\n ", + "\n [NotVisible]", + "\n [Dimension(typeof(int), nameof(ContractTerm))]", + "\n public int ContractTerm { get; init; }", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 36210b9b..bef9081f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1017,6 +1017,8 @@ "\n", "\n var yieldCurveColumnGroupOfInsuranceContract = dataSet.Tables.Contains(nameof(GroupOfInsuranceContract)) && dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.YieldCurveName));", "\n var yieldCurveColumnGroupOfReinsuranceContract = dataSet.Tables.Contains(nameof(GroupOfReinsuranceContract)) && dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.YieldCurveName));", + "\n var contractTermColumnGroupOfInsuranceContract = dataSet.Tables.Contains(nameof(GroupOfInsuranceContract)) && dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.ContractTerm));", + "\n var contractTermColumnGroupOfReinsuranceContract = dataSet.Tables.Contains(nameof(GroupOfReinsuranceContract)) && dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.ContractTerm));", "\n", "\n var importLogGroupOfContracts = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", @@ -1040,7 +1042,10 @@ "\n Portfolio = pf,", "\n YieldCurveName = yieldCurveColumnGroupOfInsuranceContract", "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", - "\n : (string)null };", + "\n : (string)null,", + "\n ContractTerm = contractTermColumnGroupOfInsuranceContract", + "\n ? Convert.ToInt32(datarow.Field(nameof(GroupOfContract.ContractTerm))) ", + "\n : default };", "\n return ExtendGroupOfContract(gic, datarow);", "\n })", "\n .WithType((dataset, datarow) => {", @@ -1065,7 +1070,10 @@ "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", "\n YieldCurveName = yieldCurveColumnGroupOfReinsuranceContract", "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", - "\n : (string)null };", + "\n : (string)null,", + "\n ContractTerm = contractTermColumnGroupOfReinsuranceContract", + "\n ? Convert.ToInt32(datarow.Field(nameof(GroupOfContract.ContractTerm))) ", + "\n : default };", "\n return ExtendGroupOfContract(gric, datarow);", "\n })", "\n .WithTarget(workspace)", From 170a3876c4673e7fd35ee23329caf7afcefdf8c6 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Fri, 23 Jun 2023 10:36:57 +0200 Subject: [PATCH 07/16] fix --- ifrs17/Import/3ImportScope-Actuals.ipynb | 18 +++++++++--------- ifrs17/Import/5ImportScope-ToIfrsVar.ipynb | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ifrs17/Import/3ImportScope-Actuals.ipynb b/ifrs17/Import/3ImportScope-Actuals.ipynb index 10cb341b..f4457937 100644 --- a/ifrs17/Import/3ImportScope-Actuals.ipynb +++ b/ifrs17/Import/3ImportScope-Actuals.ipynb @@ -376,7 +376,7 @@ { "cell_type": "markdown", "source": [ - "# Deferrable as cumulated discounted cash flow", + "## Deferrable as cumulated discounted cash flow", "\nThe cumulated discounted cash flow (CDC) or Present Value of deferral amount types is considered within this approach. ", "\nThe AoC Chain coincides with the one defined for Present Values. In addition, an Amortization step is computed using a release pattern defined in input (in the [DataNodeParameter](../DataModel/DataStructure#data-node-parameters) or as cash flow). ", "\n", @@ -456,7 +456,7 @@ { "cell_type": "markdown", "source": [ - "# Deferrable undiscounted", + "## Deferrable undiscounted", "\nThe nominal cash flow of deferral amount types is considered within this approach. ", "\nAs Present Values are not used here, this methodology allows to amortize and release expenses occurring in different months within the reporting period. ", "\nThis is achieved by applying a shift to the release pattern. For this reason, this approach is to be used with a release pattern defined in the [DataNodeParameter](../DataModel/DataStructure#data-node-parameters).", @@ -493,7 +493,7 @@ "//TODO : ", "\n// EstimateType from DA to DAC", "\n// BOP,I only through Opening. ", - "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift), ImportStorage>", + "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift, int PatternMonth), ImportStorage>", "\n{", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", "\n builder.ForScope(s => s", @@ -515,7 +515,7 @@ "\npublic interface BoPDeferrableProjection : NominalDeferrable{", "\n double NominalDeferrable.Value => GetScope((", "\n Identity.Id with {AocType = AocTypes.EOP, Novelty = Novelties.C, ProjectionPeriod = Identity.Id.ProjectionPeriod - 1}, ", - "\n Identity.MonthlyShift)).Value;", + "\n Identity.MonthlyShift, Identity.PatternMonth)).Value;", "\n}", "\n", "\npublic interface BoPDeferrable : NominalDeferrable{", @@ -542,20 +542,20 @@ "\n ", "\n double NominalDeferrable.Value => referenceCashflow >= Precision //if no previous RawVariable, use IfrsVariable", "\n ? referenceCashflow ", - "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift)).Value +", - "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift)).Value;", + "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift, Identity.PatternMonth)).Value +", + "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift, Identity.PatternMonth)).Value;", "\n}", "\n", "\npublic interface AmDeferrable : NominalDeferrable{", "\n private AocStep referenceAocStep => GetScope(Identity.Id).Value;//CL,C", - "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift)).Value;", + "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift, Identity.PatternMonth)).Value;", "\n", - "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.MonthlyShift), o => o.WithContext(EconomicBasis)).Value;", + "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.MonthlyShift - Identity.PatternMonth), o => o.WithContext(EconomicBasis)).Value;", "\n}", "\n", "\npublic interface EopDeferrable : NominalDeferrable{", "\n private IEnumerable previousAocSteps => GetScope((Identity.Id, InputSource.Cashflow)).Values;", - "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift)).Value);", + "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift, Identity.PatternMonth)).Value);", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb index 1213f860..9616f317 100644 --- a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb +++ b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb @@ -230,7 +230,7 @@ "\n", "\n IEnumerable Deferrable => GetStorage().GetEconomicBasisDriver(Identity.DataNode) switch {", "\n EconomicBases.N => Enumerable.Range(0, timeStep).SelectMany(shift => ", - "\n GetScope((Identity, shift)).RepeatOnce()", + "\n GetScope((Identity, shift, 0)).RepeatOnce()", "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", "\n EconomicBasis = EconomicBases.N,", "\n DataNode = x.Identity.Id.DataNode,", From 2280cabbac07cf75d7da3fde157c28724024f933 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Fri, 23 Jun 2023 11:02:06 +0200 Subject: [PATCH 08/16] refactor a bit --- ifrs17/Import/3ImportScope-Actuals.ipynb | 14 +++++++------- ifrs17/Import/5ImportScope-ToIfrsVar.ipynb | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ifrs17/Import/3ImportScope-Actuals.ipynb b/ifrs17/Import/3ImportScope-Actuals.ipynb index f4457937..6b6422db 100644 --- a/ifrs17/Import/3ImportScope-Actuals.ipynb +++ b/ifrs17/Import/3ImportScope-Actuals.ipynb @@ -493,7 +493,7 @@ "//TODO : ", "\n// EstimateType from DA to DAC", "\n// BOP,I only through Opening. ", - "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift, int PatternMonth), ImportStorage>", + "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift, bool isAtStart), ImportStorage>", "\n{", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", "\n builder.ForScope(s => s", @@ -515,7 +515,7 @@ "\npublic interface BoPDeferrableProjection : NominalDeferrable{", "\n double NominalDeferrable.Value => GetScope((", "\n Identity.Id with {AocType = AocTypes.EOP, Novelty = Novelties.C, ProjectionPeriod = Identity.Id.ProjectionPeriod - 1}, ", - "\n Identity.MonthlyShift, Identity.PatternMonth)).Value;", + "\n Identity.MonthlyShift, Identity.isAtStart)).Value;", "\n}", "\n", "\npublic interface BoPDeferrable : NominalDeferrable{", @@ -542,20 +542,20 @@ "\n ", "\n double NominalDeferrable.Value => referenceCashflow >= Precision //if no previous RawVariable, use IfrsVariable", "\n ? referenceCashflow ", - "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift, Identity.PatternMonth)).Value +", - "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift, Identity.PatternMonth)).Value;", + "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift, Identity.isAtStart)).Value +", + "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift, Identity.isAtStart)).Value;", "\n}", "\n", "\npublic interface AmDeferrable : NominalDeferrable{", "\n private AocStep referenceAocStep => GetScope(Identity.Id).Value;//CL,C", - "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift, Identity.PatternMonth)).Value;", + "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift, Identity.isAtStart)).Value;", "\n", - "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.MonthlyShift - Identity.PatternMonth), o => o.WithContext(EconomicBasis)).Value;", + "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.isAtStart ? 0 : Identity.MonthlyShift), o => o.WithContext(EconomicBasis)).Value;", "\n}", "\n", "\npublic interface EopDeferrable : NominalDeferrable{", "\n private IEnumerable previousAocSteps => GetScope((Identity.Id, InputSource.Cashflow)).Values;", - "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift, Identity.PatternMonth)).Value);", + "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift, Identity.isAtStart)).Value);", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb index 9616f317..f17bab5f 100644 --- a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb +++ b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb @@ -230,7 +230,7 @@ "\n", "\n IEnumerable Deferrable => GetStorage().GetEconomicBasisDriver(Identity.DataNode) switch {", "\n EconomicBases.N => Enumerable.Range(0, timeStep).SelectMany(shift => ", - "\n GetScope((Identity, shift, 0)).RepeatOnce()", + "\n GetScope((Identity, shift, false)).RepeatOnce()", "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", "\n EconomicBasis = EconomicBases.N,", "\n DataNode = x.Identity.Id.DataNode,", From bcaf179bf57a1da4e4b307503bd47b24f945f172 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Fri, 23 Jun 2023 19:37:31 +0200 Subject: [PATCH 09/16] go back on the Scope "NominalDeferrable" --- ifrs17/Import/3ImportScope-Actuals.ipynb | 16 ++++++++-------- ifrs17/Import/5ImportScope-ToIfrsVar.ipynb | 11 ++++++++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ifrs17/Import/3ImportScope-Actuals.ipynb b/ifrs17/Import/3ImportScope-Actuals.ipynb index 6b6422db..6f3a8573 100644 --- a/ifrs17/Import/3ImportScope-Actuals.ipynb +++ b/ifrs17/Import/3ImportScope-Actuals.ipynb @@ -493,7 +493,7 @@ "//TODO : ", "\n// EstimateType from DA to DAC", "\n// BOP,I only through Opening. ", - "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift, bool isAtStart), ImportStorage>", + "\npublic interface NominalDeferrable : IScope<(ImportIdentity Id, int MonthlyShift), ImportStorage>", "\n{", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", "\n builder.ForScope(s => s", @@ -515,7 +515,7 @@ "\npublic interface BoPDeferrableProjection : NominalDeferrable{", "\n double NominalDeferrable.Value => GetScope((", "\n Identity.Id with {AocType = AocTypes.EOP, Novelty = Novelties.C, ProjectionPeriod = Identity.Id.ProjectionPeriod - 1}, ", - "\n Identity.MonthlyShift, Identity.isAtStart)).Value;", + "\n Identity.MonthlyShift)).Value;", "\n}", "\n", "\npublic interface BoPDeferrable : NominalDeferrable{", @@ -542,20 +542,20 @@ "\n ", "\n double NominalDeferrable.Value => referenceCashflow >= Precision //if no previous RawVariable, use IfrsVariable", "\n ? referenceCashflow ", - "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift, Identity.isAtStart)).Value +", - "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift, Identity.isAtStart)).Value;", + "\n : GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.I}, Identity.MonthlyShift)).Value +", + "\n GetScope((Identity.Id with {AocType = AocTypes.BOP, Novelty = Novelties.N}, Identity.MonthlyShift)).Value;", "\n}", "\n", "\npublic interface AmDeferrable : NominalDeferrable{", - "\n private AocStep referenceAocStep => GetScope(Identity.Id).Value;//CL,C", - "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift, Identity.isAtStart)).Value;", + "\n private AocStep referenceAocStep => GetScope(Identity.Id).Value; //CL,C", + "\n private double referenceCashflow => GetScope((Identity.Id with {AocType = referenceAocStep.AocType, Novelty = referenceAocStep.Novelty}, Identity.MonthlyShift)).Value;", "\n", - "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.isAtStart ? 0 : Identity.MonthlyShift), o => o.WithContext(EconomicBasis)).Value;", + "\n double NominalDeferrable.Value => -1d * referenceCashflow * GetScope((Identity.Id, AmountTypes.DAE, Identity.MonthlyShift), o => o.WithContext(EconomicBasis)).Value;", "\n}", "\n", "\npublic interface EopDeferrable : NominalDeferrable{", "\n private IEnumerable previousAocSteps => GetScope((Identity.Id, InputSource.Cashflow)).Values;", - "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift, Identity.isAtStart)).Value);", + "\n double NominalDeferrable.Value => previousAocSteps.Sum(aocStep => GetScope((Identity.Id with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, Identity.MonthlyShift)).Value);", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb index f17bab5f..68aca5cd 100644 --- a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb +++ b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb @@ -221,6 +221,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Deferrable Cashflow" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -230,7 +239,7 @@ "\n", "\n IEnumerable Deferrable => GetStorage().GetEconomicBasisDriver(Identity.DataNode) switch {", "\n EconomicBases.N => Enumerable.Range(0, timeStep).SelectMany(shift => ", - "\n GetScope((Identity, shift, false)).RepeatOnce()", + "\n GetScope((Identity, shift)).RepeatOnce()", "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", "\n EconomicBasis = EconomicBases.N,", "\n DataNode = x.Identity.Id.DataNode,", From 457ae6809c269a854fdf1f815dd93f198fb8f16c Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 10:48:43 +0200 Subject: [PATCH 10/16] doku --- ifrs17/DataModel/DataStructure.ipynb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 6082b22c..6ad338f1 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1412,6 +1412,8 @@ "\n", "\nA Group of Contract is a set of contracts with the same Annual Cohort, Liability Type, Profitability and Partner (in case the contracts are done with a re-insurer).", "\n", + "\nContractTerm : defines the integer number of months that a contract is valid for. It can be used to compute the deferrable or amortized positions in the Balance Sheet. It is not a mandatory input column, unless ContractTerm column header is provided.", + "\n", "\nVarious Group of Contracts are put together into portfolios." ], "metadata": {}, From 468d8d5286bf9df59e694bb58a655319b3508103 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 16:47:40 +0200 Subject: [PATCH 11/16] add deferral to ReportVariables --- ifrs17/Report/ReportScopes.ipynb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index b52a303f..bfdb348e 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -459,6 +459,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -590,8 +599,11 @@ "public interface Lrc: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", "\n private IDataCube lrcActuarial => GetScope(Identity).LrcActuarial;", "\n private IDataCube accrual => GetScope(Identity).Advance.Filter((\"LiabilityType\", LiabilityTypes.LRC)) + ", - "\n GetScope(Identity).Overdue.Filter((\"LiabilityType\", LiabilityTypes.LRC));", - "\n private IDataCube lrcData => lrcActuarial + accrual;", + "\n GetScope(Identity).Overdue.Filter((\"LiabilityType\", LiabilityTypes.LRC))", + "\n;", + "\n private IDataCube deferral => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BS)).FxData;", + "\n", + "\n private IDataCube lrcData => lrcActuarial + accrual + deferral;", "\n ", "\n private IDataCube bop => lrcData.Filter((\"VariableType\", AocTypes.BOP), (\"Novelty\", Novelties.I));", "\n private IDataCube delta => (lrcData.Filter((\"VariableType\",\"!BOP\"),(\"VariableType\",\"!EOP\")) + lrcData.Filter((\"VariableType\", AocTypes.BOP), (\"Novelty\", Novelties.N)))", From 99f4386dc80c5ef25317c03da105aa6ab4dc9a2d Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 17:06:01 +0200 Subject: [PATCH 12/16] formatting --- ifrs17/Import/5ImportScope-ToIfrsVar.ipynb | 93 +++++++++++++++++++--- 1 file changed, 83 insertions(+), 10 deletions(-) diff --git a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb index 68aca5cd..4e3540d1 100644 --- a/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb +++ b/ifrs17/Import/5ImportScope-ToIfrsVar.ipynb @@ -74,6 +74,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Pv" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -106,6 +115,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Nominal" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -128,6 +146,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## RiskAdjustment" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -160,6 +187,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Actuals" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -200,6 +236,16 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Deferrable", + "\n### Actual" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -224,7 +270,7 @@ { "cell_type": "markdown", "source": [ - "## Deferrable Cashflow" + "### Cashflow" ], "metadata": {}, "execution_count": 0, @@ -265,6 +311,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "### Deferrable" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -279,6 +334,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "### Amortzation Factor" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -319,6 +383,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Experience Adj. for Premium" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -359,6 +432,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Tm" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -414,15 +496,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file From 879570ad70a93034e331bbdae99638bf003a35f1 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 17:06:22 +0200 Subject: [PATCH 13/16] add deferral to LRC report --- ifrs17/Report/ReportScopes.ipynb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index bfdb348e..50bb6c55 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -599,11 +599,9 @@ "public interface Lrc: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", "\n private IDataCube lrcActuarial => GetScope(Identity).LrcActuarial;", "\n private IDataCube accrual => GetScope(Identity).Advance.Filter((\"LiabilityType\", LiabilityTypes.LRC)) + ", - "\n GetScope(Identity).Overdue.Filter((\"LiabilityType\", LiabilityTypes.LRC))", - "\n;", - "\n private IDataCube deferral => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BS)).FxData;", + "\n GetScope(Identity).Overdue.Filter((\"LiabilityType\", LiabilityTypes.LRC));", "\n", - "\n private IDataCube lrcData => lrcActuarial + accrual + deferral;", + "\n private IDataCube lrcData => lrcActuarial + accrual;", "\n ", "\n private IDataCube bop => lrcData.Filter((\"VariableType\", AocTypes.BOP), (\"Novelty\", Novelties.I));", "\n private IDataCube delta => (lrcData.Filter((\"VariableType\",\"!BOP\"),(\"VariableType\",\"!EOP\")) + lrcData.Filter((\"VariableType\", AocTypes.BOP), (\"Novelty\", Novelties.N)))", From 841ab35330ea871c128e84f51d8bdbaaf750e18f Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 17:31:42 +0200 Subject: [PATCH 14/16] cleanup spaces --- ifrs17/Report/ReportScopes.ipynb | 10 ---------- ifrs17/Utils/Queries.ipynb | 5 ++--- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 50bb6c55..b52a303f 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -459,15 +459,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -600,7 +591,6 @@ "\n private IDataCube lrcActuarial => GetScope(Identity).LrcActuarial;", "\n private IDataCube accrual => GetScope(Identity).Advance.Filter((\"LiabilityType\", LiabilityTypes.LRC)) + ", "\n GetScope(Identity).Overdue.Filter((\"LiabilityType\", LiabilityTypes.LRC));", - "\n", "\n private IDataCube lrcData => lrcActuarial + accrual;", "\n ", "\n private IDataCube bop => lrcData.Filter((\"VariableType\", AocTypes.BOP), (\"Novelty\", Novelties.I));", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 438eab6c..a5ffa581 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -28,8 +28,7 @@ { "cell_type": "code", "source": [ - "#!import \"./Extensions\"", - "\n#!import \"./ImportCalculationMethods\"" + "#!import \"./Extensions\"" ], "metadata": {}, "execution_count": 0, @@ -303,7 +302,7 @@ "\n .ToDictionary(dn => dn.SystemName, dn => {", "\n var dnCurrentState = dataNodeStates[dn.SystemName][CurrentPeriod];", "\n var dnPreviousState = dataNodeStates[dn.SystemName][PreviousPeriod];", - "\n return new DataNodeData() {Year = dnPreviousState.Year, ", + "\n return new DataNodeData(){Year = dnPreviousState.Year, ", "\n Month = dnPreviousState.Month,", "\n State = dnCurrentState.State,", "\n PreviousState = dnPreviousState.State,", From b531bec4e95b3ce03cf0cd9974bf0ac376201a2b Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Mon, 26 Jun 2023 17:44:25 +0200 Subject: [PATCH 15/16] reword doku --- ifrs17/DataModel/DataStructure.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 6ad338f1..864b87cd 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1412,7 +1412,7 @@ "\n", "\nA Group of Contract is a set of contracts with the same Annual Cohort, Liability Type, Profitability and Partner (in case the contracts are done with a re-insurer).", "\n", - "\nContractTerm : defines the integer number of months that a contract is valid for. It can be used to compute the deferrable or amortized positions in the Balance Sheet. It is not a mandatory input column, unless ContractTerm column header is provided.", + "\nContractTerm : defines the term that the given Contract is valid for in whole number of months. It can be used to compute the deferrable or amortized positions in the Balance Sheet. It is not a mandatory input, even if column header 'ContractTerm' is present. The default value is 0.", "\n", "\nVarious Group of Contracts are put together into portfolios." ], From 8f5de70d9a9149321ab693f62c43147a92a108a7 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Tue, 27 Jun 2023 15:21:57 +0200 Subject: [PATCH 16/16] reset commenting out --- ifrs17/Import/ImportStorage.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 2c63de9e..7c6c79fb 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -58,7 +58,7 @@ "cell_type": "code", "source": [ "#!import \"../Utils/EqualityComparers\"", - "\n//#!import \"../Utils/ImportCalculationMethods\"", + "\n#!import \"../Utils/ImportCalculationMethods\"", "\n#!import \"../Utils/Queries\"" ], "metadata": {},