From 5e619f677e7d8559d4d3816212eb1425bdc34a8e Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 29 Nov 2022 17:36:38 +0100 Subject: [PATCH 01/64] equality comparer and queries updated --- ifrs17/Utils/EqualityComparers.ipynb | 34 ++++++++++++- ifrs17/Utils/Queries.ipynb | 71 +++++++++++++++++++++++++++- 2 files changed, 102 insertions(+), 3 deletions(-) diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index c8cde44b..77184199 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Equality Comparers

" + "

Equality Comparers

" ], "metadata": {}, "execution_count": 0, @@ -27,7 +27,8 @@ { "cell_type": "code", "source": [ - "#!import \"../DataModel/DataStructure\"" + "#!import \"../DataModel/DataStructure\"", + "\nusing System;" ], "metadata": {}, "execution_count": 0, @@ -91,6 +92,35 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "class YieldCurveComparer: IEqualityComparer", + "\n{", + "\n private YieldCurveComparer(){}", + "\n", + "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => ", + "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values); // TODO: enable Precision", + "\n\t", + "\n\tpublic int GetHashCode (YieldCurve x) => 0;", + "\n", + "\n public static YieldCurveComparer Instance() => new YieldCurveComparer();", + "\n}", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 47f4597b..32789fc9 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -189,7 +189,7 @@ "\n var lockedInYieldCurveByGoc = new Dictionary();", "\n foreach (var dn in dataNodes.Where(x => x.ValuationApproach == ValuationApproaches.BBA))", "\n {", - "\n var argsNew = args with {Year = dn.Year, Month = dn.Month, Scenario = dn.Scenario}; //MonthInAYear", + "\n var argsNew = args with {Year = dn.Year, Month = dn.Month, Scenario = args.Scenario};", "\n var loadedYc = (await querySource.LoadCurrentParameterAsync(argsNew, x => x.Currency, x => x.Currency == dn.ContractualCurrency));", "\n ", "\n if(!loadedYc.TryGetValue(dn.ContractualCurrency, out var lockedYc))", @@ -290,6 +290,7 @@ "\n LiabilityType = dn.LiabilityType,", "\n Profitability = dn.Profitability,", "\n Partner = dn.Partner,", + "\n Scenario = dn.Scenario, ", "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", "\n };", "\n }", @@ -399,6 +400,74 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Raw and Ifrs Variables" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static async Task LoadVariablesAsync(this IDataSource querySource, Guid partition) where T : BaseDataRecord", + "\n{", + "\n await querySource.Partition.SetAsync(partition);", + "\n return (await querySource.Query().ToArrayAsync());", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static async Task LoadVariablesRelaxedAsync(this IWorkspace workspace,", + "\n IDataSource dataSource,", + "\n Guid targetPartition,", + "\n Guid defaultPartition)", + "\n where T : BaseDataRecord", + "\n{", + "\n var variables = await workspace.LoadVariablesAsync(targetPartition);", + "\n if (!variables.Any() && targetPartition != defaultPartition) {", + "\n variables = variables.Concat((await workspace.LoadVariablesAsync(defaultPartition))).ToArray();", + "\n }", + "\n if (!variables.Any()){", + "\n variables = variables.Concat((await dataSource.LoadVariablesAsync(targetPartition))).ToArray(); ", + "\n }", + "\n if(!variables.Any() && targetPartition != defaultPartition){", + "\n variables = variables.Concat((await dataSource.LoadVariablesAsync(defaultPartition))).ToArray();", + "\n }", + "\n await workspace.Partition.SetAsync(targetPartition);", + "\n await dataSource.Partition.SetAsync(targetPartition);", + "\n return variables;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file From 36db29e91211533b68915280841c069cce30cc19 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 29 Nov 2022 18:09:39 +0100 Subject: [PATCH 02/64] data model, importers and importstorage updated --- ifrs17/DataModel/DataStructure.ipynb | 10 +- ifrs17/Import/ImportStorage.ipynb | 4 +- ifrs17/Import/Importers.ipynb | 150 ++++++++++++++++----------- 3 files changed, 96 insertions(+), 68 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 79f3dd04..8ea9a14e 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1301,11 +1301,6 @@ "\n [Dimension(typeof(ReportingNode))]", "\n [IdentityProperty]", "\n public string ReportingNode { get; init; }", - "\n", - "\n [Display(Order = 50)]", - "\n [Dimension(typeof(Scenario))]", - "\n [IdentityProperty]", - "\n public string Scenario { get; init; }", "\n}" ], "metadata": {}, @@ -1352,6 +1347,11 @@ "\n [Dimension(typeof(int), nameof(Month))]", "\n [IdentityProperty]", "\n public int Month { get; init; }", + "\n ", + "\n [Display(Order = 50)]", + "\n [Dimension(typeof(Scenario))]", + "\n [IdentityProperty]", + "\n public string Scenario { get; init; }", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index c6572abc..2553e0d1 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -174,8 +174,8 @@ "\n await workspace.Partition.SetAsync(TargetPartition);", "\n ", "\n //Get data from Workspace (result of parsing)", - "\n var parsedRawVariables = await workspace.Query().ToArrayAsync();", - "\n var parsedIfrsVariables = await workspace.Query().ToArrayAsync();", + "\n var parsedRawVariables = await workspace.LoadVariablesRelaxedAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedIfrsVariables = await workspace.LoadVariablesRelaxedAsync(querySource, TargetPartition, DefaultPartition);", "\n ", "\n //DataNodes", "\n DataNodeDataBySystemName = await workspace.LoadDataNodesAsync(args);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 3cd1de4a..0403e565 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -309,7 +309,7 @@ "source": [ "## Parse Main Tab and return Args", "\n", - "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods. " + "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." ], "metadata": {}, "execution_count": 0, @@ -329,7 +329,6 @@ "\n var main = mainTab.Rows.First();", "\n var reportingNode = (string)main[nameof(ReportingNode)];", "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n", "\n ImportArgs args;", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", @@ -377,6 +376,34 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", + "\n{", + "\n Activity.Start();", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n await workspace.UpdateAsync(ivs);", + "\n await CommitToDatabase(workspace,", + "\n storage.TargetPartition, ", + "\n snapshot : true, ", + "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) && ", + "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n return Activity.Finish();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -393,25 +420,21 @@ "\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; }", - "\n", + "\n ", "\n var table = dataSet.Tables[tableName];", - "\n", + "\n ", "\n var dataNodesImported = table.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 var dataNodeStatesUndefined = dataNodesImported.Where(x => x != null && !dataNodeStatesDefined.Contains(x)).ToHashSet();", "\n var dataNodeSingleParametersUndefined = dataNodesImported.Where(x => x != null &&", "\n !dataNodeParametersDefined.Contains(x) && ", "\n dataNodesDefined.SingleOrDefault(y => y.SystemName == x) is GroupOfInsuranceContract).ToHashSet();", - "\n", "\n await DataSource.UpdateAsync( dataNodeStatesUndefined.Select(x => ", "\n new DataNodeState {DataNode = x, Year = args.Year, Month = DefaultDataNodeActivationMonth, State = State.Active, Partition = partition.Id}).ToArray() );", - "\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 await DataSource.CommitAsync();", "\n}" ], @@ -432,11 +455,12 @@ "cell_type": "code", "source": [ "public async Task ValidateForDataNodeStateActiveAsync(IWorkspace workspace, Dictionary dataNodes) where T : BaseDataRecord", - "\n{", + "\n{ ", "\n foreach(var item in (await workspace.Query().ToArrayAsync()).GroupBy(x => x.DataNode))", "\n if(!dataNodes.ContainsKey(item.First().DataNode))", "\n ApplicationMessage.Log(Error.InactiveDataNodeState, item.First().DataNode);", - "\n}" + "\n}", + "\n" ], "metadata": {}, "execution_count": 0, @@ -454,7 +478,7 @@ { "cell_type": "markdown", "source": [ - "The [Analysis of Change configuration](../DataModel/DataStructure#aoc-step-configuration) is parsed from the input file and complemented with defaults to allow for an easy insertion of new AoC steps. ", + "The [Analysis of Change configuration](../DataModel/DataStructure#aoc-step-configuration) is parsed from the input file and complemented with defaults to allow for an easy insertion of new AoC Steps.", "\n", "\nAfter having checked that the [AocTypes](../DataModel/DataStructure#aoc-variable-type) loaded in the target DataSource are including all the compulsory ones, default configurations are generated on the basis of the AocTypes ordering. ", "\n", @@ -558,7 +582,16 @@ { "cell_type": "markdown", "source": [ - "# Data Nodes", + "# Data Nodes" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "", "\n", "\n[Portfolios](../DataModel/DataStructure#portfolios) and [Group of Contracts](../DataModel/DataStructure#group-of-contracts) are imported in the same file. " ], @@ -596,7 +629,8 @@ "\n FunctionalCurrency = storage.ReportingNode.Currency,", "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", - "\n OciType = datarow.Field(nameof(DataNode.OciType))", + "\n OciType = datarow.Field(nameof(DataNode.OciType)),", + "\n Scenario = datarow.Field(nameof(DataNode.Scenario))", "\n })", "\n .WithType((dataset, datarow) =>new ReinsurancePortfolio {", "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -606,7 +640,8 @@ "\n FunctionalCurrency = storage.ReportingNode.Currency,", "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", - "\n OciType = datarow.Field(nameof(DataNode.OciType))", + "\n OciType = datarow.Field(nameof(DataNode.OciType)),", + "\n Scenario = datarow.Field(nameof(DataNode.Scenario))", "\n })", "\n .WithTarget(workspace)", "\n .ExecuteAsync();", @@ -733,7 +768,6 @@ "\n .DisableInitialization()", "\n .DisableInitialization()", "\n .DisableInitialization());", - "\n ", "\n Activity.Start();", "\n var args = await GetArgsFromMainAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -793,7 +827,6 @@ "\n .DisableInitialization()", "\n .DisableInitialization()", "\n .DisableInitialization());", - "\n ", "\n Activity.Start();", "\n var args = await GetArgsFromMainAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeParameter};", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -881,6 +914,7 @@ "\n var log = await UploadDataNodeParameterToWorkspaceAsync(dataSet, partitionId, workspace);", "\n await CommitToDatabase(workspace, partitionId, snapshot: false);", "\n await CommitToDatabase(workspace, partitionId, snapshot: false); ", + "\n ", "\n return log;", "\n});" ], @@ -978,35 +1012,31 @@ "source": [ "Import.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, args);", + "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var workspace = Workspace.CreateNew();", - "\n var parsingLog = await ParseCashflowsToWorkspaceAsync(dataSet, args, workspace);", - "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog);", + "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n", + "\n var targetArgs = mainArgs.Scenario == null ", + "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() // TODO: check that concat is adding at the end of the list", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, Periodicity.Quarterly, x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n : mainArgs.RepeatOnce();", "\n ", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", - "\n ", - "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace,", - "\n storage.TargetPartition, ", - "\n snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[ImportFormats.Cashflow].Contains(x.EstimateType) && ", - "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n await CommitToDatabase(workspace, ", - "\n storage.TargetPartition, ", - "\n snapshot : true,", - "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n foreach (var args in targetArgs) {", + "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n }", "\n", - "\n return Activity.Finish().Merge(parsingLog); ", + "\n await workspace.Partition.SetAsync(mainArgs);", + "\n await DataSource.Partition.SetAsync(mainArgs);", + "\n", + "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", + "\n return Activity.Finish().Merge(log); ", "\n});" ], "metadata": {}, @@ -1100,31 +1130,29 @@ "source": [ "Import.DefineFormat(ImportFormats.Actual, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Actual};", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, args);", + "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", "\n var workspace = Workspace.CreateNew();", - "\n var parsingLog = await ParseActualsToWorkspaceAsync(dataSet, args, workspace);", - "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog);", - "\n", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", - "\n", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", + "\n var log = await ParseActualsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", - "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace, ", - "\n storage.TargetPartition, ", - "\n snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[ImportFormats.Actual].Contains(x.EstimateType) && ", - "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n var targetArgs = mainArgs.Scenario == null ? ", + "\n mainArgs.RepeatOnce() :", + "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() // TODO: check that concat is adding at the end of the list", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, Periodicity.Quarterly, x.Scenario, ImportFormats.Actual)).ToArrayAsync());", + "\n ", + "\n foreach (var args in targetArgs) {", + "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); // TODO THERE IS A BUG HERE", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n }", "\n", - "\n return Activity.Finish().Merge(parsingLog);", + "\n await workspace.Partition.SetAsync(mainArgs);", + "\n await DataSource.Partition.SetAsync(mainArgs);", + "\n return Activity.Finish().Merge(log);", "\n});" ], "metadata": {}, From 270c126c744710ea5e8f2219de27a74b7e09d565 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 30 Nov 2022 11:54:00 +0100 Subject: [PATCH 03/64] scenario avalinade for datanodes --- ifrs17-template/Files/DataNodes/DataNodes_CH.csv | 8 ++++---- ifrs17/DataModel/DataStructure.ipynb | 5 +++++ ifrs17/Export/ExportConfiguration.ipynb | 3 +-- ifrs17/Import/Importers.ipynb | 5 ++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv index c694756e..8dfaa92d 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv @@ -3,7 +3,7 @@ ReportingNode,,,,,, CH,,,,,, ,,,,,, @@InsurancePortfolio,,,,,, -SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType,Scenario, DT,DT Complex CF,USD,ANN,BBA,Default, DT1,DT1 OCI,USD,ANN,BBA,Default, DT2,DT2 NOCI,USD,ANN,BBA,, @@ -12,7 +12,7 @@ DT4,DT4 OCI,USD,ANN,BBA,Default, DT5,DT5 Simple Import,USD,ANN,BBA,Default, ,,,,,, @@GroupOfInsuranceContract,,,,,, -SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability, +SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Scenario, GicComplex,Gic test discounting,DT,2020,LRC,P, DT1.1,DT1.1 OCI LRC PA 0.8,DT1,2020,LRC,P, DT1.2,DT1.2 OCI LIC,DT1,2020,LIC,P, @@ -26,13 +26,13 @@ DT4.1,DT4.1 CSM PA 0.8,DT4,2020,LRC,P, DT5.1,DT5.1 Simple Import on DT 4.1,DT5,2020,LRC,P, ,,,,,, @@ReinsurancePortfolio,,,,,, -SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType,Scenario, DTR,DTR complex CF,USD,ANN,BBA,, DTR1,DTR1 OCI,USD,ANN,BBA,Default, DTR2,DTR2 NOCI,USD,ANN,BBA,, ,,,,,, @@GroupOfReinsuranceContract,,,,,, -SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner +SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner,Scenario, GricComplex,Gric test for discounting,DTR,2020,LRC,P,PT1 DTR1.1,DTR1.1 OCI LRC,DTR1,2020,LRC,P,PT1 DTR1.2,DTR1.2 OCI LIC,DTR1,2020,LIC,P,PT1 diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 8ea9a14e..24148af4 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1422,6 +1422,11 @@ "\n [Dimension(typeof(OciType))]", "\n //[Immutable]", "\n public string OciType { get; init; }", + "\n ", + "\n [NotVisible] ", + "\n [Dimension(typeof(Scenario))]", + "\n //[Immutable]", + "\n public string Scenario { get; init; }", "\n}" ], "metadata": {}, diff --git a/ifrs17/Export/ExportConfiguration.ipynb b/ifrs17/Export/ExportConfiguration.ipynb index 1190acbc..8eb90368 100644 --- a/ifrs17/Export/ExportConfiguration.ipynb +++ b/ifrs17/Export/ExportConfiguration.ipynb @@ -69,8 +69,7 @@ "\n => builder.WithTable( config => config .AtBeginning() ", "\n .WithName(Main) ", "\n .WithSource(source => args.RepeatOnce().AsQueryable()) ", - "\n .WithColumn(x => x.Id, x => x.Delete())", - "\n .WithColumn(x => x.Scenario, x => x.Delete()));" + "\n .WithColumn(x => x.Id, x => x.Delete()));" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 0403e565..511b5727 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -340,8 +340,7 @@ "\n default(string));", "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", - "\n ReportingNode = reportingNode, ", - "\n Scenario = scenario } } );", + "\n ReportingNode = reportingNode } } );", "\n break;", "\n }", "\n case nameof(PartitionByReportingNodeAndPeriod) : {", @@ -418,7 +417,7 @@ "source": [ "public async Task DataNodeFactoryAsync(IDataSet dataSet, string tableName, ImportArgs args)", "\n{", - "\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == args.ReportingNode && p.Scenario == null).ToArrayAsync()).SingleOrDefault();", + "\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).SingleOrDefault();", "\n if(partition == null) { ApplicationMessage.Log(Error.ParsedPartitionNotFound); return; }", "\n ", "\n var table = dataSet.Tables[tableName];", From ce3298eb1b385196e397d964fadded913c17b20f Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 30 Nov 2022 14:39:50 +0100 Subject: [PATCH 04/64] scenario test improved --- ifrs17-template/Test/ScenarioTest.ipynb | 184 +++++++++++++++++++----- 1 file changed, 151 insertions(+), 33 deletions(-) diff --git a/ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioTest.ipynb index 8effcfa3..3ace96dc 100644 --- a/ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioTest.ipynb @@ -27,7 +27,27 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"" + "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"", + "\nvar actual_EstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", + "\nvar args_Best_Estimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar args_Test_Scenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task ImportAndInitializeWorkspaceAsync(string inputString, string importFormat, bool fromFile = true)", + "\n{ ", + "\n var log = fromFile ", + "\n ? await Import.FromFile(inputString).WithFormat(importFormat).WithTarget(DataSource).ExecuteAsync()", + "\n : await Import.FromString(inputString).WithFormat(importFormat).WithTarget(DataSource).ExecuteAsync();", + "\n Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", + "\n Workspace.Initialize(x => x.FromSource(DataSource));", + "\n return log;", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -45,10 +65,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\", ImportFormats.Cashflow)" ], "metadata": {}, "execution_count": 0, @@ -57,10 +74,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\", ImportFormats.Actual)" ], "metadata": {}, "execution_count": 0, @@ -123,10 +137,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromString(cashflows_scenarioTest).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(cashflows_scenarioTest, ImportFormats.Cashflow, false)" ], "metadata": {}, "execution_count": 0, @@ -135,11 +146,11 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(new{ReportingNode = \"CH\", Scenario = \"Test\", Year = 2020, Month = 12});", - "\nawait DataSource.Partition.SetAsync(new{ReportingNode = \"CH\", Scenario = \"Test\", Year = 2020, Month = 12});", + "await Workspace.Partition.SetAsync(args_Test_Scenario);", + "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => (new[]{\"A\",\"AA\",\"OA\",\"DA\"}).Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => !(new[]{\"A\",\"AA\",\"OA\",\"DA\"}).Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -187,10 +198,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromString(actuals_scenarioTest).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(actuals_scenarioTest, ImportFormats.Actual, false)" ], "metadata": {}, "execution_count": 0, @@ -199,10 +207,10 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(new{ReportingNode = \"CH\", Scenario = \"Test\", Year = 2020, Month = 12});", - "\nawait DataSource.Partition.SetAsync(new{ReportingNode = \"CH\", Scenario = \"Test\", Year = 2020, Month = 12});", + "await Workspace.Partition.SetAsync(args_Test_Scenario);", + "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => (new[]{\"A\",\"AA\",\"OA\",\"DA\"}).Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, @@ -221,10 +229,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromString(actuals_scenarioTest_equalTo_BestEstimate).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(actuals_scenarioTest_equalTo_BestEstimate, ImportFormats.Actual, false)" ], "metadata": {}, "execution_count": 0, @@ -233,10 +238,7 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromString(cashflows_scenarioTest_equalTo_BestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync();", - "\nWorkspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\nWorkspace.Initialize(x => x.FromSource(DataSource));", - "\nlog" + "await ImportAndInitializeWorkspaceAsync(cashflows_scenarioTest_equalTo_BestEstimate, ImportFormats.Cashflow, false)" ], "metadata": {}, "execution_count": 0, @@ -251,10 +253,126 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Reimport of Best Estimate Cashflow" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var new_Cashflows_BestEstimate = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,210,0,0,210,0,0,210,0,0,210,0,0,0,210,0,0,210,0,0,210,0,0,210,0", + "\nDT1.1,NIC,CL,C,,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37", + "\nDT1.1,CU,CL,C,,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-3.3", + "\nDT1.1,RA,CL,C,,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await ImportAndInitializeWorkspaceAsync(new_Cashflows_BestEstimate, ImportFormats.Cashflow, false)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ - "" + "await Workspace.Partition.SetAsync(args_Best_Estimate);", + "\nawait DataSource.Partition.SetAsync(args_Best_Estimate);", + "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "\nvar items = diffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", + "\nitems.Length.Should().Be(1);", + "\n(items.First() == \"DA\").Should().Be(true);", + "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Workspace.Partition.SetAsync(args_Test_Scenario);", + "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", + "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "\nvar items = diffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", + "\nitems.Length.Should().Be(1);", + "\n(items.First() == \"DA\").Should().Be(true);", + "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Reimport of Best Estimate Actuals" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var new_actuals_BestEstimate = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,NIC,,-2000\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await ImportAndInitializeWorkspaceAsync(new_actuals_BestEstimate, ImportFormats.Actual, false)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Workspace.Partition.SetAsync(args_Best_Estimate);", + "\nawait DataSource.Partition.SetAsync(args_Best_Estimate);", + "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Workspace.Partition.SetAsync(args_Test_Scenario);", + "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", + "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, From 8ba025c83e8e768d06cc93ddce424d3207113732 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 2 Dec 2022 09:17:50 +0100 Subject: [PATCH 05/64] firsts comments resolved --- .../Constants/CalculationEngine.ipynb | 3 +- .../Files/DataNodes/DataNodes_CH.csv | 8 ++-- ifrs17/Import/Importers.ipynb | 17 +++++++-- ifrs17/Utils/Queries.ipynb | 37 +++---------------- 4 files changed, 25 insertions(+), 40 deletions(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index af978b92..7dc54c17 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -21,7 +21,8 @@ "var projectName = \"ifrs17\";", "\nvar environmentName = \"v1.0.0\";", "\nvar notebookName = \"CalculationEngine\";", - "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" + "\n//var calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";", + "\nvar calculationEngine = $\"#!import ../../ifrs17/CalculationEngine\";" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv index 8dfaa92d..9bda1885 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv @@ -3,7 +3,7 @@ ReportingNode,,,,,, CH,,,,,, ,,,,,, @@InsurancePortfolio,,,,,, -SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType,Scenario, +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, DT,DT Complex CF,USD,ANN,BBA,Default, DT1,DT1 OCI,USD,ANN,BBA,Default, DT2,DT2 NOCI,USD,ANN,BBA,, @@ -12,7 +12,7 @@ DT4,DT4 OCI,USD,ANN,BBA,Default, DT5,DT5 Simple Import,USD,ANN,BBA,Default, ,,,,,, @@GroupOfInsuranceContract,,,,,, -SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Scenario, +SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability, GicComplex,Gic test discounting,DT,2020,LRC,P, DT1.1,DT1.1 OCI LRC PA 0.8,DT1,2020,LRC,P, DT1.2,DT1.2 OCI LIC,DT1,2020,LIC,P, @@ -26,13 +26,13 @@ DT4.1,DT4.1 CSM PA 0.8,DT4,2020,LRC,P, DT5.1,DT5.1 Simple Import on DT 4.1,DT5,2020,LRC,P, ,,,,,, @@ReinsurancePortfolio,,,,,, -SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType,Scenario, +SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, DTR,DTR complex CF,USD,ANN,BBA,, DTR1,DTR1 OCI,USD,ANN,BBA,Default, DTR2,DTR2 NOCI,USD,ANN,BBA,, ,,,,,, @@GroupOfReinsuranceContract,,,,,, -SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner,Scenario, +SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner, GricComplex,Gric test for discounting,DTR,2020,LRC,P,PT1 DTR1.1,DTR1.1 OCI LRC,DTR1,2020,LRC,P,PT1 DTR1.2,DTR1.2 OCI LIC,DTR1,2020,LIC,P,PT1 diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 511b5727..2d63e2f3 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -619,6 +619,7 @@ "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var errors = new List();", + "\n var scenarioColumnInsurancePortfolio = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(DataNode.Scenario)).Count()>0;", "\n var importLogPortfolios = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => new InsurancePortfolio {", "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -629,7 +630,8 @@ "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = datarow.Field(nameof(DataNode.Scenario))", + "\n Scenario = scenarioColumnInsurancePortfolio?", + "\n datarow.Field(nameof(DataNode.Scenario))?? default(string) : default(string) ", "\n })", "\n .WithType((dataset, datarow) =>new ReinsurancePortfolio {", "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -640,7 +642,8 @@ "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = datarow.Field(nameof(DataNode.Scenario))", + "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(DataNode.Scenario)).Count()>0?", + "\n datarow.Field(nameof(DataNode.Scenario)): default(string) ", "\n })", "\n .WithTarget(workspace)", "\n .ExecuteAsync();", @@ -667,6 +670,8 @@ "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", + "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.Scenario)).Count()>0?", + "\n datarow.Field(nameof(GroupOfContract.Scenario)) : default(string),", "\n Portfolio = pf", "\n };", "\n return ExtendGroupOfContract(gic, datarow);", @@ -691,6 +696,9 @@ "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", + "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns", + "\n .Where(x => x.ColumnName == nameof(GroupOfContract.Scenario)).Count()>0?", + "\n datarow.Field(nameof(GroupOfContract.Scenario)) : default(string),", "\n Portfolio = pf,", "\n Partner = datarow.Field(nameof(GroupOfContract.Partner))", "\n };", @@ -949,6 +957,8 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", + "\n var accidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() > 0; ", + "\n ", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", "\n var aocType = datarow.Field(nameof(RawVariable.AocType));", @@ -989,8 +999,7 @@ "\n Novelty = novelty,", "\n AmountType = amountType,", "\n EstimateType = estimateType,", - "\n AccidentYear = dataset.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count()>0?", - "\n (Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)? accidentYear : (int?)null) : (int?)null, ", + "\n AccidentYear = accidentYearColumn? (Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)? accidentYear : (int?)null) : (int?)null, ", "\n Partition = parsingStorage.TargetPartitionByReportingNodeAndPeriod.Id,", "\n Values = Multiply(GetSign((aocType, amountType, estimateType, dataNodeData.IsReinsurance), parsingStorage.HierarchyCache), values)", "\n };", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 32789fc9..2dc4f218 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -426,22 +426,15 @@ { "cell_type": "code", "source": [ - "public static async Task LoadVariablesRelaxedAsync(this IWorkspace workspace,", - "\n IDataSource dataSource,", - "\n Guid targetPartition,", - "\n Guid defaultPartition)", + "public static async Task LoadVariablesRelaxedAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", "\n where T : BaseDataRecord", "\n{", "\n var variables = await workspace.LoadVariablesAsync(targetPartition);", - "\n if (!variables.Any() && targetPartition != defaultPartition) {", - "\n variables = variables.Concat((await workspace.LoadVariablesAsync(defaultPartition))).ToArray();", - "\n }", - "\n if (!variables.Any()){", - "\n variables = variables.Concat((await dataSource.LoadVariablesAsync(targetPartition))).ToArray(); ", - "\n }", - "\n if(!variables.Any() && targetPartition != defaultPartition){", - "\n variables = variables.Concat((await dataSource.LoadVariablesAsync(defaultPartition))).ToArray();", - "\n }", + "\n // For scenario re-calculation", + "\n if (!variables.Any()) variables = await dataSource.LoadVariablesAsync(targetPartition); ", + "\n // For scenarios related to parameters solely", + "\n if(!variables.Any() && targetPartition != defaultPartition) variables = await dataSource.LoadVariablesAsync(defaultPartition);", + "\n ", "\n await workspace.Partition.SetAsync(targetPartition);", "\n await dataSource.Partition.SetAsync(targetPartition);", "\n return variables;", @@ -450,24 +443,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file From c43d3f82ff17798d7ed2a0d803e858ff0e650c39 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 2 Dec 2022 14:11:26 +0100 Subject: [PATCH 06/64] all comments resolved --- ifrs17-template/Test/ScenarioTest.ipynb | 95 +++++++++++++++---------- ifrs17/Import/ImportStorage.ipynb | 4 +- ifrs17/Import/Importers.ipynb | 49 +++++++++---- ifrs17/Utils/EqualityComparers.ipynb | 36 +++++++--- ifrs17/Utils/Queries.ipynb | 32 ++++++--- 5 files changed, 141 insertions(+), 75 deletions(-) diff --git a/ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioTest.ipynb index 3ace96dc..32d1608e 100644 --- a/ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioTest.ipynb @@ -28,9 +28,9 @@ "cell_type": "code", "source": [ "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"", - "\nvar actual_EstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", - "\nvar args_Best_Estimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar args_Test_Scenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "\nvar actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", + "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsTestScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" ], "metadata": {}, "execution_count": 0, @@ -101,7 +101,7 @@ { "cell_type": "code", "source": [ - "var cashflows_scenarioTest = @\"", + "var cashflowsScenarioTest = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -119,7 +119,7 @@ { "cell_type": "code", "source": [ - "var cashflows_scenarioTest_equalTo_BestEstimate = @\"", + "var cashflowsScenarioTestEqualToBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -137,7 +137,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(cashflows_scenarioTest, ImportFormats.Cashflow, false)" + "await ImportAndInitializeWorkspaceAsync(cashflowsScenarioTest, ImportFormats.Cashflow, false)" ], "metadata": {}, "execution_count": 0, @@ -146,11 +146,11 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Test_Scenario);", - "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", + "await Workspace.Partition.SetAsync(argsTestScenario);", + "\nawait DataSource.Partition.SetAsync(argsTestScenario);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -168,7 +168,7 @@ { "cell_type": "code", "source": [ - "var actuals_scenarioTest = @\"", + "var actualsScenarioTest = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -183,7 +183,7 @@ { "cell_type": "code", "source": [ - "var actuals_scenarioTest_equalTo_BestEstimate = @\"", + "var actualsScenarioTestEqualToBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -198,7 +198,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(actuals_scenarioTest, ImportFormats.Actual, false)" + "await ImportAndInitializeWorkspaceAsync(actualsScenarioTest, ImportFormats.Actual, false)" ], "metadata": {}, "execution_count": 0, @@ -207,10 +207,11 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Test_Scenario);", - "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "await Workspace.Partition.SetAsync(argsTestScenario);", + "\nawait DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar defaultScenarioVars = Workspace.Query().ToArray();", + "\nvar diffs = defaultScenarioVars.Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, @@ -229,7 +230,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(actuals_scenarioTest_equalTo_BestEstimate, ImportFormats.Actual, false)" + "await ImportAndInitializeWorkspaceAsync(actualsScenarioTestEqualToBestEstimate, ImportFormats.Actual, false)" ], "metadata": {}, "execution_count": 0, @@ -238,7 +239,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(cashflows_scenarioTest_equalTo_BestEstimate, ImportFormats.Cashflow, false)" + "await ImportAndInitializeWorkspaceAsync(cashflowsScenarioTestEqualToBestEstimate, ImportFormats.Cashflow, false)" ], "metadata": {}, "execution_count": 0, @@ -265,7 +266,7 @@ { "cell_type": "code", "source": [ - "var new_Cashflows_BestEstimate = @\"", + "var newCashflowsBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", @@ -283,7 +284,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(new_Cashflows_BestEstimate, ImportFormats.Cashflow, false)" + "await ImportAndInitializeWorkspaceAsync(newCashflowsBestEstimate, ImportFormats.Cashflow, false)" ], "metadata": {}, "execution_count": 0, @@ -292,13 +293,13 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Best_Estimate);", - "\nawait DataSource.Partition.SetAsync(args_Best_Estimate);", + "await Workspace.Partition.SetAsync(argsBestEstimate);", + "\nawait DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", "\nitems.Length.Should().Be(1);", "\n(items.First() == \"DA\").Should().Be(true);", - "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -307,13 +308,22 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Test_Scenario);", - "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", + "await Workspace.Partition.SetAsync(argsTestScenario);", + "\nawait DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar diffs = Workspace.Query().Except(defaultScenarioVars, IfrsVariableComparer.Instance());", + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", "\nitems.Length.Should().Be(1);", "\n(items.First() == \"DA\").Should().Be(true);", - "\ndiffs.Where(x => !actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "items.First() == \"DA\"" ], "metadata": {}, "execution_count": 0, @@ -331,7 +341,7 @@ { "cell_type": "code", "source": [ - "var new_actuals_BestEstimate = @\"", + "var newActualsBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -346,7 +356,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(new_actuals_BestEstimate, ImportFormats.Actual, false)" + "await ImportAndInitializeWorkspaceAsync(newActualsBestEstimate, ImportFormats.Actual, false)" ], "metadata": {}, "execution_count": 0, @@ -355,10 +365,10 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Best_Estimate);", - "\nawait DataSource.Partition.SetAsync(args_Best_Estimate);", + "await Workspace.Partition.SetAsync(argsBestEstimate);", + "\nawait DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, @@ -368,15 +378,24 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(args_Test_Scenario);", - "\nawait DataSource.Partition.SetAsync(args_Test_Scenario);", + "await Workspace.Partition.SetAsync(argsTestScenario);", + "\nawait DataSource.Partition.SetAsync(argsTestScenario);", "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actual_EstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 2553e0d1..03b5ded7 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -174,8 +174,8 @@ "\n await workspace.Partition.SetAsync(TargetPartition);", "\n ", "\n //Get data from Workspace (result of parsing)", - "\n var parsedRawVariables = await workspace.LoadVariablesRelaxedAsync(querySource, TargetPartition, DefaultPartition);", - "\n var parsedIfrsVariables = await workspace.LoadVariablesRelaxedAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedRawVariables = await workspace.LoadPartitionedDataRelaxedAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedIfrsVariables = await workspace.LoadPartitionedDataRelaxedAsync(querySource, TargetPartition, DefaultPartition);", "\n ", "\n //DataNodes", "\n DataNodeDataBySystemName = await workspace.LoadDataNodesAsync(args);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 66e8b0d3..5603855f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -375,6 +375,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Calculate and Upload IFRS Variables" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -417,7 +426,7 @@ "source": [ "public async Task DataNodeFactoryAsync(IDataSet dataSet, string tableName, ImportArgs args)", "\n{", - "\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).SingleOrDefault();", + "\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).FirstOrDefault();", "\n if(partition == null) { ApplicationMessage.Log(Error.ParsedPartitionNotFound); return; }", "\n ", "\n var table = dataSet.Tables[tableName];", @@ -619,7 +628,9 @@ "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var errors = new List();", - "\n var scenarioColumnInsurancePortfolio = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(DataNode.Scenario)).Count()>0;", + "\n var scenarioColumnInsurancePortfolio = dataSet.Tables[nameof(InsurancePortfolio)].Columns.Any(x => x.ColumnName == nameof(InsurancePortfolio.Scenario));", + "\n var scenarioColumnReinsurancePortfolio = dataSet.Tables[nameof(ReinsurancePortfolio)].Columns.Any(x => x.ColumnName == nameof(ReinsurancePortfolio.Scenario));", + "\n ", "\n var importLogPortfolios = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => new InsurancePortfolio {", "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -630,8 +641,9 @@ "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = scenarioColumnInsurancePortfolio?", - "\n datarow.Field(nameof(DataNode.Scenario))?? default(string) : default(string) ", + "\n Scenario = scenarioColumnInsurancePortfolio", + "\n ? datarow.Field(nameof(InsurancePortfolio.Scenario)) ", + "\n : (string)null", "\n })", "\n .WithType((dataset, datarow) =>new ReinsurancePortfolio {", "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -642,13 +654,19 @@ "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(DataNode.Scenario)).Count()>0?", - "\n datarow.Field(nameof(DataNode.Scenario)): default(string) ", + "\n Scenario = scenarioColumnReinsurancePortfolio", + "\n ? datarow.Field(nameof(ReinsurancePortfolio.Scenario)) ", + "\n : (string)null", "\n })", "\n .WithTarget(workspace)", "\n .ExecuteAsync();", "\n ", "\n var portfolios = await workspace.Query().ToDictionaryAsync(x => x.SystemName);", + "\n var scenarioColumnGroupOfInsuranceContract = dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.Scenario));", + "\n var scenarioColumnGroupOfReinsuranceContract = dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.Scenario));", + "\n var yieldCurveColumnGroupOfInsuranceContract = dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.YieldCurveName));", + "\n var yieldCurveColumnGroupOfReinsuranceContract = dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.YieldCurveName));", + "\n", "\n var importLogGroupOfContracts = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", "\n var gicSystemName = datarow.Field(nameof(DataNode.SystemName));", @@ -670,10 +688,11 @@ "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", - "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns.Where(x => x.ColumnName == nameof(GroupOfContract.Scenario)).Count()>0?", - "\n datarow.Field(nameof(GroupOfContract.Scenario)) : default(string),", + "\n Scenario = scenarioColumnGroupOfInsuranceContract", + "\n ? datarow.Field(nameof(GroupOfInsuranceContract.Scenario)) ", + "\n : (string)null,", "\n Portfolio = pf,", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)) ", + "\n YieldCurveName = yieldCurveColumnGroupOfInsuranceContract", "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", "\n : (string)null,", "\n };", @@ -699,12 +718,12 @@ "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", - "\n Scenario = dataset.Tables[ImportFormats.DataNode].Columns", - "\n .Where(x => x.ColumnName == nameof(GroupOfContract.Scenario)).Count()>0?", - "\n datarow.Field(nameof(GroupOfContract.Scenario)) : default(string),", + "\n Scenario = scenarioColumnGroupOfReinsuranceContract", + "\n ? datarow.Field(nameof(GroupOfReinsuranceContract.Scenario)) ", + "\n : (string)null,", "\n Portfolio = pf,", "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", - "\n YieldCurveName = dataset.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfContract.YieldCurveName)) ", + "\n YieldCurveName = yieldCurveColumnGroupOfReinsuranceContract", "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", "\n : (string)null,", "\n };", @@ -1155,12 +1174,12 @@ "\n", "\n var targetArgs = mainArgs.Scenario == null ? ", "\n mainArgs.RepeatOnce() :", - "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() // TODO: check that concat is adding at the end of the list", + "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, Periodicity.Quarterly, x.Scenario, ImportFormats.Actual)).ToArrayAsync());", "\n ", "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); // TODO THERE IS A BUG HERE", + "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", "\n", diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index 77184199..034cdf4d 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -34,6 +34,31 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "at the top of this notebook create a SequenceEqual static method extension for double array which accepts another double array plus a double precision. Call this method from all equality comparers in this notebook with the Precision constant." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static bool SequenceEqual(this double[] defaultArray, double[] testArray, double precision)", + "\n{", + "\n if (defaultArray.Length != testArray.Length) return false;", + "\n for (int i = 0; i < defaultArray.Length; i++){", + "\n if(Math.Abs(defaultArray[i]-testArray[i]) >= precision) return false;", + "\n }", + "\n return true;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -100,7 +125,7 @@ "\n private YieldCurveComparer(){}", "\n", "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => ", - "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values); // TODO: enable Precision", + "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values, Precision);", "\n\t", "\n\tpublic int GetHashCode (YieldCurve x) => 0;", "\n", @@ -112,15 +137,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 2dc4f218..672c0839 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -404,7 +404,7 @@ { "cell_type": "markdown", "source": [ - "# Raw and Ifrs Variables" + "# Data Variables" ], "metadata": {}, "execution_count": 0, @@ -413,9 +413,11 @@ { "cell_type": "code", "source": [ - "public static async Task LoadVariablesAsync(this IDataSource querySource, Guid partition) where T : BaseDataRecord", + "public static async Task LoadPartitionedDataAsync(this IDataSource querySource, Guid partition)", + "\n where T : IPartitioned ", + "\n where P : IPartition", "\n{", - "\n await querySource.Partition.SetAsync(partition);", + "\n await querySource.Partition.SetAsync

(partition);", "\n return (await querySource.Query().ToArrayAsync());", "\n}" ], @@ -426,23 +428,33 @@ { "cell_type": "code", "source": [ - "public static async Task LoadVariablesRelaxedAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", - "\n where T : BaseDataRecord", + "public static async Task LoadPartitionedDataRelaxedAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", + "\n where T : IPartitioned ", + "\n where P : IPartition", "\n{", - "\n var variables = await workspace.LoadVariablesAsync(targetPartition);", + "\n var variables = await workspace.LoadPartitionedDataAsync(targetPartition);", "\n // For scenario re-calculation", - "\n if (!variables.Any()) variables = await dataSource.LoadVariablesAsync(targetPartition); ", + "\n if (!variables.Any()) variables = await dataSource.LoadPartitionedDataAsync(targetPartition); ", "\n // For scenarios related to parameters solely", - "\n if(!variables.Any() && targetPartition != defaultPartition) variables = await dataSource.LoadVariablesAsync(defaultPartition);", + "\n if(!variables.Any() && targetPartition != defaultPartition) variables = await dataSource.LoadPartitionedDataAsync(defaultPartition);", "\n ", - "\n await workspace.Partition.SetAsync(targetPartition);", - "\n await dataSource.Partition.SetAsync(targetPartition);", + "\n await workspace.Partition.SetAsync

(targetPartition);", + "\n await dataSource.Partition.SetAsync

(targetPartition);", "\n return variables;", "\n}" ], "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file From 2a55e627250ce49a5ff2a5190af4c4fc0d519510 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Sun, 4 Dec 2022 18:36:51 +0100 Subject: [PATCH 07/64] scenario test works --- ifrs17-template/Test/ImportStorageTest.ipynb | 2 +- ifrs17-template/Test/ScenarioTest.ipynb | 91 ++++++++++---------- ifrs17/Import/Importers.ipynb | 9 +- ifrs17/Utils/EqualityComparers.ipynb | 11 +-- ifrs17/Utils/Queries.ipynb | 11 +-- 5 files changed, 53 insertions(+), 71 deletions(-) diff --git a/ifrs17-template/Test/ImportStorageTest.ipynb b/ifrs17-template/Test/ImportStorageTest.ipynb index 24387d42..466f826d 100644 --- a/ifrs17-template/Test/ImportStorageTest.ipynb +++ b/ifrs17-template/Test/ImportStorageTest.ipynb @@ -354,7 +354,7 @@ "//Define partition", "\nvar args = new ImportArgs(\"CH\", 2021, 3, Periodicity.Quarterly, null, ImportFormats.Cashflow);", "\n", - "\nvar reportingNodePartition = DataSource.Query().FirstOrDefault(x => x.ReportingNode == args.ReportingNode && x.Scenario == args.Scenario);", + "\nvar reportingNodePartition = DataSource.Query().FirstOrDefault(x => x.ReportingNode == args.ReportingNode);", "\nif(reportingNodePartition == null) ApplicationMessage.Log(Error.PartitionNotFound);", "\n", "\n", diff --git a/ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioTest.ipynb index 32d1608e..a2682321 100644 --- a/ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioTest.ipynb @@ -27,10 +27,16 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"", - "\nvar actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", - "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsTestScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "DataSource.Reset(x => x.ResetType().ResetType());" ], "metadata": {}, "execution_count": 0, @@ -39,15 +45,9 @@ { "cell_type": "code", "source": [ - "public async Task ImportAndInitializeWorkspaceAsync(string inputString, string importFormat, bool fromFile = true)", - "\n{ ", - "\n var log = fromFile ", - "\n ? await Import.FromFile(inputString).WithFormat(importFormat).WithTarget(DataSource).ExecuteAsync()", - "\n : await Import.FromString(inputString).WithFormat(importFormat).WithTarget(DataSource).ExecuteAsync();", - "\n Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());", - "\n Workspace.Initialize(x => x.FromSource(DataSource));", - "\n return log;", - "\n}" + "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", + "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsTestScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" ], "metadata": {}, "execution_count": 0, @@ -65,7 +65,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\", ImportFormats.Cashflow)" + "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -74,7 +74,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\", ImportFormats.Actual)" + "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -83,7 +83,7 @@ { "cell_type": "code", "source": [ - "var defaultVarsBE = Workspace.Query().ToArray();" + "var ivsBestEstimateInit = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -137,7 +137,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(cashflowsScenarioTest, ImportFormats.Cashflow, false)" + "await Import.FromString(cashflowsScenarioTest).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -146,9 +146,9 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsTestScenario);", - "\nawait DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar ivsScenarioInitCashFlows = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioInitCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], @@ -198,7 +198,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(actualsScenarioTest, ImportFormats.Actual, false)" + "await Import.FromString(actualsScenarioTest).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -207,10 +207,9 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsTestScenario);", - "\nawait DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar defaultScenarioVars = Workspace.Query().ToArray();", - "\nvar diffs = defaultScenarioVars.Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar ivsScenarioInitActuals = DataSource.Query().ToArray();", + "\nvar diffs = ivsScenarioInitActuals.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], @@ -230,7 +229,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(actualsScenarioTestEqualToBestEstimate, ImportFormats.Actual, false)" + "await Import.FromString(actualsScenarioTestEqualToBestEstimate).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -239,7 +238,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(cashflowsScenarioTestEqualToBestEstimate, ImportFormats.Cashflow, false)" + "await Import.FromString(cashflowsScenarioTestEqualToBestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -248,7 +247,8 @@ { "cell_type": "code", "source": [ - "Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance()).ToArray().Length.Should().Be(0);" + "var ivsScenarioReimportEqualToBestEstimate = await DataSource.Query().ToArrayAsync(); ", + "\nivsScenarioReimportEqualToBestEstimate.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance()).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -284,7 +284,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(newCashflowsBestEstimate, ImportFormats.Cashflow, false)" + "await Import.FromString(newCashflowsBestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -293,9 +293,9 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsBestEstimate);", - "\nawait DataSource.Partition.SetAsync(argsBestEstimate);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nvar ivsBestEstimateReimportCashFlows = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", "\nitems.Length.Should().Be(1);", "\n(items.First() == \"DA\").Should().Be(true);", @@ -308,12 +308,10 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsTestScenario);", - "\nawait DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar diffs = Workspace.Query().Except(defaultScenarioVars, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar ivsScenarioReimportCashFlows = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", - "\nitems.Length.Should().Be(1);", - "\n(items.First() == \"DA\").Should().Be(true);", "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, @@ -323,7 +321,8 @@ { "cell_type": "code", "source": [ - "items.First() == \"DA\"" + "items.Length.Should().Be(1);", + "\n(items.First() == \"DA\").Should().Be(true);" ], "metadata": {}, "execution_count": 0, @@ -344,7 +343,7 @@ "var newActualsBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", - "\nCH,2020,12,Test", + "\nCH,2020,12,", "\n@@Actual", "\nDataNode,AocType,ValueType,AccidentYear,Value", "\nDT1.1,CF,NIC,,-2000\";" @@ -356,7 +355,7 @@ { "cell_type": "code", "source": [ - "await ImportAndInitializeWorkspaceAsync(newActualsBestEstimate, ImportFormats.Actual, false)" + "await Import.FromString(newActualsBestEstimate).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -365,9 +364,9 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsBestEstimate);", - "\nawait DataSource.Partition.SetAsync(argsBestEstimate);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nvar ivsBestEstimateReimportActuals = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());", "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], @@ -378,9 +377,9 @@ { "cell_type": "code", "source": [ - "await Workspace.Partition.SetAsync(argsTestScenario);", - "\nawait DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar diffs = Workspace.Query().Except(defaultVarsBE, IfrsVariableComparer.Instance());", + "await DataSource.Partition.SetAsync(argsTestScenario);", + "\nvar ivsScenarioReimportActuals = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());", "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 5603855f..719e25e2 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1055,20 +1055,21 @@ "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", "\n var targetArgs = mainArgs.Scenario == null ", - "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() // TODO: check that concat is adding at the end of the list", + "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, Periodicity.Quarterly, x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", "\n ", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n if (args.Scenario == null) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", "\n }", "\n", "\n await workspace.Partition.SetAsync(mainArgs);", "\n await DataSource.Partition.SetAsync(mainArgs);", "\n", - "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", + "\n //await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", "\n return Activity.Finish().Merge(log); ", "\n});" ], @@ -1176,7 +1177,7 @@ "\n mainArgs.RepeatOnce() :", "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, Periodicity.Quarterly, x.Scenario, ImportFormats.Actual)).ToArrayAsync());", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", "\n ", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); ", diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index 034cdf4d..31a53b12 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -72,7 +72,7 @@ "\n", "\n public bool Equals(RawVariable x, RawVariable y) =>", "\n x.AccidentYear == y.AccidentYear && x.AmountType == y.AmountType && x.DataNode == y.DataNode && x.AocType == y.AocType && ", - "\n x.Novelty == y.Novelty && x.EstimateType == y.EstimateType && (IgnoreValues ? true : x.Values.SequenceEqual(y.Values)); // TODO: enable Precision", + "\n x.Novelty == y.Novelty && x.EstimateType == y.EstimateType && (IgnoreValues ? true : x.Values.SequenceEqual(y.Values, Precision));", "\n", "\n public int GetHashCode(RawVariable v) => IgnoreValues ", "\n ? HashCode.Combine(v.AccidentYear, v.AmountType, v.DataNode, v.AocType, v.Novelty) ", @@ -192,15 +192,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 672c0839..674578de 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -441,16 +441,7 @@ "\n await workspace.Partition.SetAsync

(targetPartition);", "\n await dataSource.Partition.SetAsync

(targetPartition);", "\n return variables;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" + "\n} " ], "metadata": {}, "execution_count": 0, From 3e54971d6e565c53be26c576eaa4ededfdfdfeca Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 5 Dec 2022 17:37:51 +0100 Subject: [PATCH 08/64] estimate type fix --- ifrs17-template/Files/DataNodes/DataNodes_CH.csv | 2 +- ifrs17-template/Files/Dimensions.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv index 9bda1885..c694756e 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_CH.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_CH.csv @@ -32,7 +32,7 @@ DTR1,DTR1 OCI,USD,ANN,BBA,Default, DTR2,DTR2 NOCI,USD,ANN,BBA,, ,,,,,, @@GroupOfReinsuranceContract,,,,,, -SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner, +SystemName,DisplayName,ReinsurancePortfolio,AnnualCohort,LiabilityType,Profitability,Partner GricComplex,Gric test for discounting,DTR,2020,LRC,P,PT1 DTR1.1,DTR1.1 OCI LRC,DTR1,2020,LRC,P,PT1 DTR1.2,DTR1.2 OCI LIC,DTR1,2020,LIC,P,PT1 diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 63f91bdb..71f22809 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -119,7 +119,7 @@ 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,RiReceivablePR,RiPayableNIC, OA,Overdue Actuals,70,AoC,3,NotApplicable,ReceivablePR,PayableNIC,PayableICO,RiPayablePR,RiReceivableNIC, -DA,Deferrable Actuals,80,AoC,3,NotApplicable,,,,,, +DA,Deferrable Actuals,80,AoC,7,NotApplicable,,,,,, A,Actuals,90,None,2,NotApplicable,,,,,, F,Factors,100,None,4,NotApplicable,,,,,, APA,Actuals,130,None,2,NotApplicable,,,,,, From 6b276e20418764801432befeaa6c18a76e030a1a Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 5 Dec 2022 17:40:36 +0100 Subject: [PATCH 09/64] more scenario tests --- ifrs17-template/Test/ScenarioTest.ipynb | 408 +++++++++++++++++++++--- ifrs17/Import/Importers.ipynb | 144 ++++----- ifrs17/Utils/EqualityComparers.ipynb | 24 +- 3 files changed, 431 insertions(+), 145 deletions(-) diff --git a/ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioTest.ipynb index a2682321..c9b45608 100644 --- a/ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioTest.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Scenario Import Test

" + "

Scenario Transactional Data Import Test

" ], "metadata": {}, "execution_count": 0, @@ -45,9 +45,68 @@ { "cell_type": "code", "source": [ - "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};", - "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsTestScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "static ImportStorage mystorage;", + "\nstatic ImportIdentity[] myidentities; ", + "\nstatic IModel mymodel;", + "\nstatic List my = new List();", + "\n", + "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", + "\n Activity.Start();", + "\n my.Add(\"0\");", + "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n my.Add(\"1\");", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", + "\n my.Add(\"2\");", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n", + "\n var targetArgs = mainArgs.Scenario == null ", + "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n : mainArgs.RepeatOnce();", + "\n ", + "\n foreach (var args in targetArgs) {", + "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n mystorage = storage; ", + "\n myidentities = identities.ToArray(); ", + "\n mymodel = universe;", + "\n", + "\n if(args.Scenario == mainArgs.Scenario) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", + "\n }", + "\n", + "\n return Activity.Finish().Merge(log); ", + "\n});" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" ], "metadata": {}, "execution_count": 0, @@ -56,7 +115,7 @@ { "cell_type": "markdown", "source": [ - "# Context" + "# Initialization" ], "metadata": {}, "execution_count": 0, @@ -119,16 +178,7 @@ { "cell_type": "code", "source": [ - "var cashflowsScenarioTestEqualToBestEstimate = @\"", - "\n@@Main", - "\nReportingNode,Year,Month,Scenario", - "\nCH,2020,12,Test", - "\n@@Cashflow", - "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", - "\nDT1.1,PR,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", - "\nDT1.1,NIC,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", - "\nDT1.1,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", - "\nDT1.1,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5\";" + "await Import.FromString(cashflowsScenarioTest).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -137,7 +187,9 @@ { "cell_type": "code", "source": [ - "await Import.FromString(cashflowsScenarioTest).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioInitCashFlows = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioInitCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -146,11 +198,9 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar ivsScenarioInitCashFlows = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioInitCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\nivsScenarioInitCashFlows.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -183,13 +233,7 @@ { "cell_type": "code", "source": [ - "var actualsScenarioTestEqualToBestEstimate = @\"", - "\n@@Main", - "\nReportingNode,Year,Month,Scenario", - "\nCH,2020,12,Test", - "\n@@Actual", - "\nDataNode,AocType,ValueType,AccidentYear,Value", - "\nDT1.1,CF,NIC,,-280\";" + "await Import.FromString(actualsScenarioTest).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -198,7 +242,9 @@ { "cell_type": "code", "source": [ - "await Import.FromString(actualsScenarioTest).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioInitActuals = DataSource.Query().ToArray();", + "\nvar diffs = ivsScenarioInitActuals.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -207,11 +253,9 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsTestScenario);", - "\nvar ivsScenarioInitActuals = DataSource.Query().ToArray();", - "\nvar diffs = ivsScenarioInitActuals.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);", + "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -226,6 +270,39 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var cashflowsScenarioTestEqualToBestEstimate = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", + "\nDT1.1,NIC,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", + "\nDT1.1,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", + "\nDT1.1,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actualsScenarioTestEqualToBestEstimate = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,NIC,,-280\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -254,6 +331,17 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "// TODO: why here I have DA if I imported cashflow at the end", + "\nawait DataSource.Partition.SetAsync(argsScenario);", + "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -296,8 +384,16 @@ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateReimportCashFlows = await DataSource.Query().ToArrayAsync();", "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", - "\nitems.Length.Should().Be(1);", + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "items.Length.Should().Be(1);", "\n(items.First() == \"DA\").Should().Be(true);", "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" ], @@ -308,11 +404,10 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsTestScenario);", + "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportCashFlows = await DataSource.Query().ToArrayAsync();", "\nvar diffs = ivsScenarioReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();", - "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" ], "metadata": {}, "execution_count": 0, @@ -321,8 +416,9 @@ { "cell_type": "code", "source": [ - "items.Length.Should().Be(1);", - "\n(items.First() == \"DA\").Should().Be(true);" + "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\nitems.Length.Should().Be(0);", + "\n//(items.First() == \"DA\").Should().Be(true); // TODO: this shouldn't exist" ], "metadata": {}, "execution_count": 0, @@ -361,13 +457,42 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "// TODO: why this is not empty?", + "\nawait DataSource.Partition.SetAsync(argsScenario);", + "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, @@ -377,16 +502,207 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsTestScenario);", + "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\nvar diffs = ivsScenarioReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Update of Scenario Deferrable Actuals via Best Estimate Coverage Units" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var cashflowsScenarioNoCU = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", + "\nDT1.1,NIC,CL,C,,-274.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", + "\nDT1.1,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var newCashflowsBestEstimateBis = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,200,0,0,200,0,0,200,0,0,200,0,0,0,200,0,0,200,0,0,200,0,0,200,0", + "\nDT1.1,NIC,CL,C,,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33", + "\nDT1.1,CU,CL,C,,-434,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-19,-19,-19,-19,-19,-19,-19,-19,-19,-19,-3.5", + "\nDT1.1,RA,CL,C,,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowsScenarioNoCU).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioReimportCashflowNoCU = await DataSource.Query().ToArrayAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "ivsScenarioReimportCashflowNoCU.Where(x => x.AocType == \"AM\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(newCashflowsBestEstimateBis).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioReimportCashFlowsWithCU = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioReimportCashFlowsWithCU.Except(ivsScenarioReimportCashflowNoCU, IfrsVariableComparer.Instance());", + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "ivsScenarioReimportCashFlowsWithCU.Where(x => x.AocType == \"AM\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\nitems.Length.Should().Be(1);", + "\n(items.First() == \"DA\").Should().Be(true);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScopes(myidentities).SelectMany(x => x.DeferrableActual)//.Select(x => (x.Value, x.Identity))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScopes(myidentities).Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", + "\n DataNode = x.Identity.DataNode,", + "\n AocType = x.Identity.AocType,", + "\n Novelty = x.Identity.Novelty,", + "\n AccidentYear = null,", + "\n Value = x.Value,", + "\n Partition = mystorage.TargetPartition", + "\n })" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "myidentities.Where(x => x.AocType == \"AM\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "// private double AmortizationFactor => GetScope(Identity, o => o.WithContext(EconomicBasis)).Value;", + "\n// private double AggregatedDeferrable => GetScope((Identity, InputSource.Actual)).Values", + "\n// .Sum(aocStep => GetScope(Identity with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value);", + "\n// double DeferrableActual.Value => -1d * AggregatedDeferrable * AmortizationFactor;", + "\n", + "\nvar amids = myidentities.Where(x => x.AocType == \"AM\").ToArray();", + "\nmymodel.GetScopes(amids, o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScopes(amids.Select(x => (x, InputSource.Actual))).Select(x => (x.Values, x.Identity))", + "\n //.Select(x => x.Values.Sum( aocStep => mymodel.GetScope(Identity with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value )", + "\n //.Select(x => (x.EstimateType, x.Value, x.Identity))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScopes(amids.Select(x => (x, InputSource.Actual))).Select(x => (x.Values, x.Identity))", + "\n .Select((x,i) => x.Values.Sum( aocStep => mymodel.GetScope(amids[i] with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value ) )" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 719e25e2..50bf9eda 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -258,20 +258,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public async Task CleanDatabaseFromPartitionAsync (Guid partitionId, Func filter = null) where T : class, IPartitioned", - "\n{", - "\n var loadData = (await DataSource.Query().Where(x => x.Partition == partitionId).ToArrayAsync())", - "\n .Where(filter?? (Func)(x => true)).ToList();", - "\n await DataSource.DeleteAsync(loadData);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -284,10 +270,16 @@ { "cell_type": "code", "source": [ - "public async Task CommitToDatabase (IWorkspace workspace, Guid partitionId, bool snapshot = true, Func filter = null) where T : class, IPartitioned", + "public async Task CommitToDatabase (IWorkspace workspace, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", + "\nwhere TData : class, IPartitioned", + "\nwhere TPartition : IfrsPartition", "\n{", - "\n if(snapshot) await CleanDatabaseFromPartitionAsync(partitionId, filter);", - "\n await DataSource.UpdateAsync( await workspace.Query().ToArrayAsync() );", + "\n if(partitionId != new Guid()) {", + "\n await workspace.Partition.SetAsync(partitionId);", + "\n await DataSource.Partition.SetAsync(partitionId);", + "\n }", + "\n if(snapshot) await CleanDatabaseAsync(filter);", + "\n await DataSource.UpdateAsync( await workspace.Query().ToArrayAsync() );", "\n await DataSource.CommitAsync();", "\n}" ], @@ -375,43 +367,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## Calculate and Upload IFRS Variables" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", - "\n{", - "\n Activity.Start();", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace,", - "\n storage.TargetPartition, ", - "\n snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) && ", - "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n return Activity.Finish();", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -474,6 +429,41 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Calculate and Upload IFRS Variables" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", + "\n{", + "\n Activity.Start();", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n await workspace.UpdateAsync(ivs);", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", + "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n return Activity.Finish();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -746,10 +736,10 @@ "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodesToWorkspaceAsync(dataSet, workspace);", "\n var partition = (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode));", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", + "\n await CommitToDatabase(workspace, partition);", + "\n await CommitToDatabase(workspace, partition);", + "\n await CommitToDatabase(workspace, partition);", + "\n await CommitToDatabase(workspace, partition);", "\n return log;", "\n});" ], @@ -832,7 +822,7 @@ "Import.DefineFormat(ImportFormats.DataNodeState, async (options, dataSet) => {", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeStateToWorkspaceAsync(dataSet, workspace);", - "\n await CommitToDatabase(workspace, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", + "\n await CommitToDatabase(workspace, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", "\n return log;", "\n});" ], @@ -944,8 +934,8 @@ "\n Guid partitionId = new Guid();", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeParameterToWorkspaceAsync(dataSet, partitionId, workspace);", - "\n await CommitToDatabase(workspace, partitionId, snapshot: false);", - "\n await CommitToDatabase(workspace, partitionId, snapshot: false); ", + "\n await CommitToDatabase(workspace, partitionId, snapshot: false);", + "\n await CommitToDatabase(workspace, partitionId, snapshot: false); ", "\n ", "\n return log;", "\n});" @@ -1056,20 +1046,16 @@ "\n", "\n var targetArgs = mainArgs.Scenario == null ", "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", "\n ", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n if (args.Scenario == null) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n if(args.Scenario == null) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)));", "\n }", "\n", - "\n await workspace.Partition.SetAsync(mainArgs);", - "\n await DataSource.Partition.SetAsync(mainArgs);", - "\n", - "\n //await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)), snapshot : true);", "\n return Activity.Finish().Merge(log); ", "\n});" ], @@ -1176,16 +1162,14 @@ "\n var targetArgs = mainArgs.Scenario == null ? ", "\n mainArgs.RepeatOnce() :", "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", "\n ", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", "\n", - "\n await workspace.Partition.SetAsync(mainArgs);", - "\n await DataSource.Partition.SetAsync(mainArgs);", "\n return Activity.Finish().Merge(log);", "\n});" ], @@ -1288,10 +1272,8 @@ "\n ", "\n workspace.Query().Select(v => new {v.DataNode, v.AccidentYear}).Distinct();", "\n ", - "\n await CommitToDatabase(workspace, ", - "\n partitionId, ", - "\n snapshot : true,", - "\n filter : x => workspace.Query().Select(v => v.DataNode).Distinct().Contains(x.DataNode));", + "\n await CommitToDatabase(workspace, partitionId, snapshot : true,", + "\n filter : x => workspace.Query().Select(v => v.DataNode).Distinct().Contains(x.DataNode));", "\n ", "\n return Activity.Finish().Merge(parsingLog);", "\n});" @@ -1335,11 +1317,9 @@ "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", "\n", "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace, ", - "\n storage.TargetPartition, ", - "\n snapshot : true,", - "\n filter : x => storage.EstimateTypesByImportFormat[ImportFormats.Opening].Contains(x.EstimateType) && ", - "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode ));", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true,", + "\n filter : x => storage.EstimateTypesByImportFormat[ImportFormats.Opening].Contains(x.EstimateType) && ", + "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode ));", "\n", "\n return Activity.Finish().Merge(parsingLog);", "\n});" diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index 31a53b12..e01acc72 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Equality Comparers

" + "

Equality Comparers IgnoreValues ", - "\n ? HashCode.Combine(v.AccidentYear, v.AmountType, v.DataNode, v.AocType, v.Novelty) ", - "\n : HashCode.Combine(v.AccidentYear, v.AmountType, v.DataNode, v.AocType, v.Novelty, v.Values);", + "\n public int GetHashCode(RawVariable v) => 0;", "\n", - "\n public static RawVariableComparer Instance(bool ignoreValues = false)", - "\n { ", - "\n return new RawVariableComparer(ignoreValues);", - "\n }", + "\n public static RawVariableComparer Instance(bool ignoreValues = false) => new RawVariableComparer(ignoreValues);", "\n}" ], "metadata": {}, @@ -103,14 +98,9 @@ "\n x.AccidentYear == y.AccidentYear && x.AmountType == y.AmountType && x.DataNode == y.DataNode && x.AocType == y.AocType && ", "\n x.Novelty == y.Novelty && x.EstimateType == y.EstimateType && (IgnoreValue ? true : Math.Abs(x.Value - y.Value) < Precision); ", "\n", - "\n public int GetHashCode(IfrsVariable v) => IgnoreValue ", - "\n ? HashCode.Combine(v.AccidentYear, v.AmountType, v.DataNode, v.AocType, v.Novelty) ", - "\n : HashCode.Combine(v.AccidentYear, v.AmountType, v.DataNode, v.AocType, v.Novelty, v.Value.ToString(\"F5\"));", + "\n public int GetHashCode(IfrsVariable v) => 0;", "\n", - "\n public static IfrsVariableComparer Instance(bool ignoreValue = false)", - "\n { ", - "\n return new IfrsVariableComparer(ignoreValue);", - "\n }", + "\n public static IfrsVariableComparer Instance(bool ignoreValue = false) => new IfrsVariableComparer(ignoreValue);", "\n}" ], "metadata": {}, @@ -125,7 +115,7 @@ "\n private YieldCurveComparer(){}", "\n", "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => ", - "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values, Precision);", + "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values, Precision);", "\n\t", "\n\tpublic int GetHashCode (YieldCurve x) => 0;", "\n", From 695f270c91db6a770c7bc22eec28c57275c2f246 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 6 Dec 2022 15:16:08 +0100 Subject: [PATCH 10/64] revert calculation engine notebook --- ifrs17-template/Constants/CalculationEngine.ipynb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index 7dc54c17..871cf34e 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -21,12 +21,11 @@ "var projectName = \"ifrs17\";", "\nvar environmentName = \"v1.0.0\";", "\nvar notebookName = \"CalculationEngine\";", - "\n//var calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";", - "\nvar calculationEngine = $\"#!import ../../ifrs17/CalculationEngine\";" + "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ], "metadata": {}, "execution_count": 0, "outputs": [] } ] -} \ No newline at end of file +} From a3a1a29b3d3a14fc8114d769417af8f8307e8b17 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 6 Dec 2022 15:22:43 +0100 Subject: [PATCH 11/64] improved union of target/default variables --- ...est.ipynb => ScenarioDataImportTest.ipynb} | 287 +++++++++++++++--- ifrs17/Import/ImportStorage.ipynb | 26 +- ifrs17/Import/Importers.ipynb | 3 +- 3 files changed, 266 insertions(+), 50 deletions(-) rename ifrs17-template/Test/{ScenarioTest.ipynb => ScenarioDataImportTest.ipynb} (74%) diff --git a/ifrs17-template/Test/ScenarioTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb similarity index 74% rename from ifrs17-template/Test/ScenarioTest.ipynb rename to ifrs17-template/Test/ScenarioDataImportTest.ipynb index c9b45608..d803e3d8 100644 --- a/ifrs17-template/Test/ScenarioTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -50,6 +50,32 @@ "\nstatic IModel mymodel;", "\nstatic List my = new List();", "\n", + "\nstatic IfrsVariable[] targetIVS;", + "\nstatic IfrsVariable[] defaultIVS;", + "\n", + "\npublic async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", + "\n{", + "\n Activity.Start();", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n", + "\n targetIVS = ivs.ToArray();", + "\n defaultIVS = storage.DefaultIfrsVariables.ToArray();", + "\n ", + "\n //ivs = ivs.Except(storage.DefaultIfrsVariables, EqualityComparer.Instance);", + "\n await workspace.UpdateAsync(ivs);", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", + "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n return Activity.Finish();", + "\n}", + "\n", "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", "\n my.Add(\"0\");", @@ -115,7 +141,7 @@ { "cell_type": "markdown", "source": [ - "# Initialization" + "# Best Estimate Initialization" ], "metadata": {}, "execution_count": 0, @@ -151,7 +177,7 @@ { "cell_type": "markdown", "source": [ - "# Scenario Cash flows" + "# Scenario Init Cash flows" ], "metadata": {}, "execution_count": 0, @@ -160,7 +186,7 @@ { "cell_type": "code", "source": [ - "var cashflowsScenarioTest = @\"", + "var cashflowsScenario = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -178,7 +204,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(cashflowsScenarioTest).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(cashflowsScenario).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -206,10 +232,56 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "targetIVS.Where(x => x.AocType == \"AM\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "defaultIVS.Where(x => x.AocType == \"AM\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScopes(myidentities.Where(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\"), o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, (string)null, EstimateTypes.CU, (int?)null))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nDataSource.Query().Where(x => x.DataNode == \"DT1.1\" && x.EstimateType == \"CU\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ - "# Scenario Actuals" + "# Scenario Init Actuals" ], "metadata": {}, "execution_count": 0, @@ -218,7 +290,7 @@ { "cell_type": "code", "source": [ - "var actualsScenarioTest = @\"", + "var actualsScenario = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -233,7 +305,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(actualsScenarioTest).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(actualsScenario).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -255,7 +327,152 @@ "source": [ "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);", - "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" + "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Update of Deferrable Actuals with a Coverage Units Import for Scenario " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Update CU cashflow for scenario and check that the Amortization Factor (and hence the Deferrable Actual) is updated" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var cashflowsScenarioUpdateCU = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,CU,CL,C,,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-3.3\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowsScenarioUpdateCU).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioCashflowUpdateCU = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioCashflowUpdateCU.Except(ivsScenarioInitActuals, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Update of Deferrable Actuals with a ACA/AEA Import for Scenario" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actualsScenarioUpdateACAAEA = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,ACA,,-555", + "\nDT1.1,CF,AEA,,-777\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(actualsScenarioUpdateACAAEA).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioActualUpdateACAAEA = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioActualUpdateACAAEA.Except(ivsScenarioCashflowUpdateCU, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Removal of Deferrable Actuals with a Actual Scenario Import" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Set ACA and AEA to zero and check that DA is removed" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "// TODO" ], "metadata": {}, "execution_count": 0, @@ -331,17 +548,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "// TODO: why here I have DA if I imported cashflow at the end", - "\nawait DataSource.Partition.SetAsync(argsScenario);", - "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -406,8 +612,7 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportCashFlows = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" + "\nvar diffs = ivsScenarioReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -417,8 +622,7 @@ "cell_type": "code", "source": [ "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\nitems.Length.Should().Be(0);", - "\n//(items.First() == \"DA\").Should().Be(true); // TODO: this shouldn't exist" + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -442,7 +646,8 @@ "\nCH,2020,12,", "\n@@Actual", "\nDataNode,AocType,ValueType,AccidentYear,Value", - "\nDT1.1,CF,NIC,,-2000\";" + "\nDT1.1,CF,NIC,,-2000", + "\nDT1.1,CF,PR,,-4000\";" ], "metadata": {}, "execution_count": 0, @@ -461,7 +666,8 @@ "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", - "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" + "\nvar ivsBestEstimateReimportActuals = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -470,9 +676,8 @@ { "cell_type": "code", "source": [ - "// TODO: why this is not empty?", - "\nawait DataSource.Partition.SetAsync(argsScenario);", - "\nDataSource.Query().Where(x => x.EstimateType == \"DA\" && x.DataNode == \"DT1.1\")" + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -481,9 +686,7 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsBestEstimate);", - "\nvar ivsBestEstimateReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" + "diffs" ], "metadata": {}, "execution_count": 0, @@ -492,8 +695,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioReimportActuals = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioReimportActuals.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -502,9 +706,8 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsScenario);", - "\nvar ivsScenarioReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "\ndiffs.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -513,8 +716,7 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);" + "diffs" ], "metadata": {}, "execution_count": 0, @@ -529,6 +731,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "Reset Coverage Units for Scenario so that they are taken from Best Estimate. Then, test that a re-import of Best Estimate Coverage Units changes the Scenario Deferrable Actuals. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 03b5ded7..a223d9ff 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -92,6 +92,10 @@ "\n", "\n //Projections", "\n private ProjectionConfiguration[] ProjectionConfiguration;", + "\n", + "\n //DefaultVariables", + "\n public RawVariable[] DefaultRawVariables { get; private set; } = new RawVariable[0];", + "\n public IfrsVariable[] DefaultIfrsVariables { get; private set; } = new IfrsVariable[0];", "\n ", "\n //DataNodes", "\n public IDictionary DataNodeDataBySystemName { get; private set; }", @@ -273,17 +277,17 @@ "\n", "\n if(DefaultPartition != TargetPartition) {", "\n await querySource.Partition.SetAsync(DefaultPartition);", - "\n var defaultRawVariables = await querySource.Query()", - "\n .Where(rv => rv.Partition == DefaultPartition)", - "\n .Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync();", - "\n var defaultIfrsVariables = await querySource.Query()", - "\n .Where(iv => iv.Partition == DefaultPartition)", - "\n .Where(iv => primaryScopeFromParsedVariables.Contains(iv.DataNode)", - "\n && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) ", - "\n || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) ", - "\n || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", - "\n rawVariables = rawVariables.Union(defaultRawVariables, EqualityComparer.Instance);", - "\n ifrsVariables = ifrsVariables.Union(defaultIfrsVariables, EqualityComparer.Instance);", + "\n DefaultRawVariables = await querySource.Query() // Complete Union", + "\n .Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync(); // todo: remove import filter for zero values", + "\n //var defaultIfrsVariables = await querySource.Query()", + "\n // .Where(iv => primaryScopeFromParsedVariables.Contains(iv.DataNode) // Smart Union", + "\n // && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) // cons: arbitrary dimensions + order import matters (for Scenario)", + "\n // || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) // pros: computationally efficient", + "\n // || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", + "\n DefaultIfrsVariables = await querySource.Query()", + "\n .Where(iv => primaryScope.Contains(iv.DataNode) || secondaryScope.Contains(iv.DataNode)).ToArrayAsync(); ", + "\n rawVariables = rawVariables.Union(DefaultRawVariables, EqualityComparer.Instance);", + "\n ifrsVariables = ifrsVariables.Union(DefaultIfrsVariables, EqualityComparer.Instance);", "\n await querySource.Partition.SetAsync(TargetPartition);", "\n }", "\n", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 50bf9eda..bedf59b2 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -453,6 +453,7 @@ "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", + "\n ivs = ivs.Except(storage.DefaultIfrsVariables, EqualityComparer.Instance);", "\n await workspace.UpdateAsync(ivs);", "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", @@ -1167,7 +1168,7 @@ "\n ", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); ", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", "\n", "\n return Activity.Finish().Merge(log);", From be3a99d9bf66dbf83910113756c747022799d658 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Wed, 7 Dec 2022 11:07:30 +0100 Subject: [PATCH 12/64] full union + save zeros for scenarios --- .../Test/ScenarioDataImportTest.ipynb | 229 +++++++----------- ifrs17/Import/ImportScopeCalculation.ipynb | 173 +++++++------ ifrs17/Import/ImportStorage.ipynb | 13 +- ifrs17/Import/Importers.ipynb | 12 +- 4 files changed, 189 insertions(+), 238 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index d803e3d8..e255abee 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -53,29 +53,6 @@ "\nstatic IfrsVariable[] targetIVS;", "\nstatic IfrsVariable[] defaultIVS;", "\n", - "\npublic async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", - "\n{", - "\n Activity.Start();", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n", - "\n targetIVS = ivs.ToArray();", - "\n defaultIVS = storage.DefaultIfrsVariables.ToArray();", - "\n ", - "\n //ivs = ivs.Except(storage.DefaultIfrsVariables, EqualityComparer.Instance);", - "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", - "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n return Activity.Finish();", - "\n}", - "\n", "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", "\n my.Add(\"0\");", @@ -109,7 +86,10 @@ "\n myidentities = identities.ToArray(); ", "\n mymodel = universe;", "\n", - "\n if(args.Scenario == mainArgs.Scenario) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", + "\n if(args.Scenario == mainArgs.Scenario) {", + "\n if(args.Scenario == null) Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", + "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", + "\n }", "\n }", "\n", "\n return Activity.Finish().Merge(log); ", @@ -194,7 +174,7 @@ "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", "\nDT1.1,NIC,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", - "\nDT1.1,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-3.3", + "\nDT1.1,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-53.5,-52.5,-31.3", "\nDT1.1,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" ], "metadata": {}, @@ -224,9 +204,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "diffs.Where(x => actualEstimateTypes.Where(x => x != EstimateTypes.DA).Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\nivsScenarioInitCashFlows.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().NotBe(0);" + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().Be(2);" ], "metadata": {}, "execution_count": 0, @@ -268,6 +248,25 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "(0, mymodel.GetScope(myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, o => o.WithContext(\"L\")).Values)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nDataSource.Query().Where(x => x.DataNode == \"DT1.1\" && x.EstimateType == \"CU\")" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -327,7 +326,7 @@ "source": [ "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);", - "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().NotBe(0);" + "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -360,7 +359,7 @@ "\nCH,2020,12,Test", "\n@@Cashflow", "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", - "\nDT1.1,CU,CL,C,,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-3.3\";" + "\nDT1.1,CU,CL,C,,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-6.5,-6.5,-6.5,-6.5,-6.5,-6.5,-6.5,-6.5,-6.5,-7.5,-8.5\";" ], "metadata": {}, "execution_count": 0, @@ -472,7 +471,53 @@ { "cell_type": "code", "source": [ - "// TODO" + "var actualsScenarioNoACAAEA = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,Test", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,ACA,,0", + "\nDT1.1,CF,AEA,,0\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(actualsScenarioNoACAAEA).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioActualNoACAAEA = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioActualNoACAAEA.Except(ivsScenarioActualUpdateACAAEA, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "ivsScenarioActualNoACAAEA.Where(x => x.AmountType == \"ACA\" || x.AmountType == \"AEA\")" ], "metadata": {}, "execution_count": 0, @@ -514,6 +559,8 @@ "\nCH,2020,12,Test", "\n@@Actual", "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,ACA,,-10", + "\nDT1.1,CF,AEA,,-5", "\nDT1.1,CF,NIC,,-280\";" ], "metadata": {}, @@ -542,7 +589,16 @@ "cell_type": "code", "source": [ "var ivsScenarioReimportEqualToBestEstimate = await DataSource.Query().ToArrayAsync(); ", - "\nivsScenarioReimportEqualToBestEstimate.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance()).Count().Should().Be(0);" + "\nvar diffs = ivsScenarioReimportEqualToBestEstimate.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance()).ToArray();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -683,15 +739,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "diffs" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -713,15 +760,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "diffs" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -750,6 +788,7 @@ "\n@@Cashflow", "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", + "\nDT1.1,CU,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "\nDT1.1,NIC,CL,C,,-274.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", "\nDT1.1,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" ], @@ -760,7 +799,7 @@ { "cell_type": "code", "source": [ - "var newCashflowsBestEstimateBis = @\"", + "var newCashflowsBestEstimateUpdatedCU = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", @@ -768,7 +807,7 @@ "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,CL,C,,200,0,0,200,0,0,200,0,0,200,0,0,0,200,0,0,200,0,0,200,0,0,200,0", "\nDT1.1,NIC,CL,C,,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33,-33", - "\nDT1.1,CU,CL,C,,-434,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-23,-19,-19,-19,-19,-19,-19,-19,-19,-19,-19,-3.5", + "\nDT1.1,CU,CL,C,,-71,-71,-70,-70,-69,-69,-68,-68,-67,-67,-66,-66,-65,-65,-64,-64,-63,-63,-62,-62,-61,-61,-60,-60", "\nDT1.1,RA,CL,C,,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45,-45\";" ], "metadata": {}, @@ -794,15 +833,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "ivsScenarioReimportCashflowNoCU.Where(x => x.AocType == \"AM\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -824,15 +854,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "ivsScenarioReimportCashFlowsWithCU.Where(x => x.AocType == \"AM\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -844,76 +865,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScopes(myidentities).SelectMany(x => x.DeferrableActual)//.Select(x => (x.Value, x.Identity))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScopes(myidentities).Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", - "\n DataNode = x.Identity.DataNode,", - "\n AocType = x.Identity.AocType,", - "\n Novelty = x.Identity.Novelty,", - "\n AccidentYear = null,", - "\n Value = x.Value,", - "\n Partition = mystorage.TargetPartition", - "\n })" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "myidentities.Where(x => x.AocType == \"AM\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "// private double AmortizationFactor => GetScope(Identity, o => o.WithContext(EconomicBasis)).Value;", - "\n// private double AggregatedDeferrable => GetScope((Identity, InputSource.Actual)).Values", - "\n// .Sum(aocStep => GetScope(Identity with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value);", - "\n// double DeferrableActual.Value => -1d * AggregatedDeferrable * AmortizationFactor;", - "\n", - "\nvar amids = myidentities.Where(x => x.AocType == \"AM\").ToArray();", - "\nmymodel.GetScopes(amids, o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScopes(amids.Select(x => (x, InputSource.Actual))).Select(x => (x.Values, x.Identity))", - "\n //.Select(x => x.Values.Sum( aocStep => mymodel.GetScope(Identity with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value )", - "\n //.Select(x => (x.EstimateType, x.Value, x.Identity))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScopes(amids.Select(x => (x, InputSource.Actual))).Select(x => (x.Values, x.Identity))", - "\n .Select((x,i) => x.Values.Sum( aocStep => mymodel.GetScope(amids[i] with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}).Value ) )" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index d41923e4..ad6c81b5 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -1179,7 +1179,7 @@ "\n builder.ForScope(s => ", "\n s.WithApplicability(x => x.GetStorage().ImportFormat != ImportFormats.Cashflow", "\n || x.GetStorage().IsSecondaryScope(x.Identity.DataNode)));", - "\n ", + "\n", "\n private int shift => GetStorage().GetShift(0);//Identity.ProjectionPeriod", "\n private int timeStep => GetStorage().GetTimeStep(0);//Identity.ProjectionPeriod", "\n private double amortizedFactor => GetScope(Identity)", @@ -1188,7 +1188,7 @@ "\n .Take(timeStep)", "\n .Aggregate(1d, (x, y) => x * y);", "\n [NotVisible] string EconomicBasis => GetContext();", - "\n ", + "\n", "\n string EstimateType => EstimateTypes.F;", "\n double Value => Math.Abs(amortizedFactor - 1d) > Precision", "\n ? 1d - amortizedFactor", @@ -2053,102 +2053,99 @@ "source": [ "public interface ComputeAllScopes: IScope //ComputeIfrsVariable", "\n{", - "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", "\n private string EconomicBasis => Identity.ValuationApproach == ValuationApproaches.VFA ? EconomicBases.C : EconomicBases.L;", "\n private IEnumerable amortizationFactor => Identity.AocType == AocTypes.AM", "\n ? GetScope(Identity, o => o.WithContext(EconomicBasis))", "\n .RepeatOnce()", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", "\n DataNode = x.Identity.DataNode,", "\n AocType = x.Identity.AocType,", "\n Novelty = x.Identity.Novelty,", "\n EconomicBasis = x.EconomicBasis,", "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n })", + "\n Partition = GetStorage().TargetPartition })", "\n : Enumerable.Empty();", - "\n IEnumerable Actual => GetScope(Identity).Actuals.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable OverdueActual => GetScope(Identity).Actuals.Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable DeferrableActual => GetScope(Identity).RepeatOnce().Where(x => Math.Abs(x.Value) >= Precision).Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", - "\n DataNode = x.Identity.DataNode,", - "\n AocType = x.Identity.AocType,", - "\n Novelty = x.Identity.Novelty,", - "\n AccidentYear = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n", + "\n IEnumerable Actual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n ", + "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable OverdueActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable DeferrableActual => GetScope(Identity).RepeatOnce().Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", + "\n DataNode = x.Identity.DataNode,", + "\n AocType = x.Identity.AocType,", + "\n Novelty = x.Identity.Novelty,", + "\n AccidentYear = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", "\n ", "\n IEnumerable BeEAForPremium => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC", "\n || Identity.IsReinsurance", "\n ? Enumerable.Empty()", "\n : GetScope(Identity)", "\n .ByAmountType", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", "\n .Select(sc => new IfrsVariable{ EstimateType = GetScope(Identity).EstimateType, ", "\n DataNode = sc.Identity.Id.DataNode, ", "\n AocType = sc.Identity.Id.AocType, ", @@ -2164,7 +2161,6 @@ "\n ? Enumerable.Empty()", "\n : GetScope(Identity)", "\n .ByAmountTypeAndEstimateType", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", "\n .Select(sc => new IfrsVariable{ EstimateType = GetStorage().ExperienceAdjustEstimateTypeMapping[sc.Identity.EstimateType], ", "\n DataNode = sc.Identity.Id.DataNode, ", "\n AocType = sc.Identity.Id.AocType, ", @@ -2178,7 +2174,6 @@ "\n IEnumerable Csms => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC", "\n ? Enumerable.Empty()", "\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,", "\n AocType = x.Identity.AocType,", @@ -2191,25 +2186,21 @@ "\n ? Enumerable.Empty()", "\n : Identity.IsReinsurance ", "\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,", "\n AocType = x.Identity.AocType,", "\n Novelty = x.Identity.Novelty,", "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n })", + "\n Partition = GetStorage().TargetPartition })", "\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,", "\n AocType = x.Identity.AocType,", "\n Novelty = x.Identity.Novelty,", "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n Partition = GetStorage().TargetPartition });", "\n ", - "\n IEnumerable CalculatedIfrsVariables => GetStorage().ImportFormat switch {", + "\n IEnumerable CalculatedIfrsVariables => GetStorage().ImportFormat switch {", "\n ImportFormats.Actual => Actual.Concat(AdvanceActual).Concat(OverdueActual).Concat(ActEAForPremium)", "\n .Concat(DeferrableActual).Concat(Csms).Concat(Loss),", "\n ImportFormats.Cashflow => PvLocked.Concat(PvCurrent).Concat(RaCurrent).Concat(RaLocked)", @@ -2217,7 +2208,7 @@ "\n .Concat(DeferrableActual).Concat(Csms).Concat(Loss),", "\n ImportFormats.Opening => AdvanceActual.Concat(OverdueActual).Concat(DeferrableActual)", "\n .Concat(Csms).Concat(Loss),", - "\n };", + "\n };", "\n}" ], "metadata": {}, diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index a223d9ff..7120863b 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -284,9 +284,16 @@ "\n // && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) // cons: arbitrary dimensions + order import matters (for Scenario)", "\n // || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) // pros: computationally efficient", "\n // || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", - "\n DefaultIfrsVariables = await querySource.Query()", - "\n .Where(iv => primaryScope.Contains(iv.DataNode) || secondaryScope.Contains(iv.DataNode)).ToArrayAsync(); ", - "\n rawVariables = rawVariables.Union(DefaultRawVariables, EqualityComparer.Instance);", + "\n DefaultIfrsVariables = await querySource.Query() // Complete Union", + "\n .Where(iv => primaryScope.Contains(iv.DataNode) || secondaryScope.Contains(iv.DataNode)).ToArrayAsync(); ", + "\n //DefaultIfrsVariables = await querySource.Query()", + "\n // .Where(iv => primaryScopeFromParsedVariables.Contains(iv.DataNode) // Smart Union v2", + "\n // && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) // cons: arbitrary dimensions", + "\n // || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) // pros: computationally efficient", + "\n // || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", + "\n //DefaultRawVariables = await querySource.Query() // Smart Union", + "\n // .Where(rv => primaryScopeFromLinkedReinsurance.Contains(rv.DataNode)).ToArrayAsync(); // this will affect all dimensions... ", + "\n rawVariables = rawVariables.Union(DefaultRawVariables, EqualityComparer.Instance); // not the same of Smart Union for Actuals", "\n ifrsVariables = ifrsVariables.Union(DefaultIfrsVariables, EqualityComparer.Instance);", "\n await querySource.Partition.SetAsync(TargetPartition);", "\n }", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index bedf59b2..d761092f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -453,8 +453,7 @@ "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n ivs = ivs.Except(storage.DefaultIfrsVariables, EqualityComparer.Instance);", - "\n await workspace.UpdateAsync(ivs);", + "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision));", "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", @@ -1004,10 +1003,10 @@ "\n var estimateType = isEstimateType ? amountTypeFromFile : EstimateTypes.BE;", "\n ", "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(RawVariable.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).Prune();", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", "\n ", "\n // Filter out empty raw variables for AocType != CL", - "\n if(values.Length == 0 && aocType != AocTypes.CL) return null; //TODO: extend this check for all mandatory step and not just for CL", + "\n if(aocType != AocTypes.CL) return null; //TODO: extend this check for all mandatory step and not just for CL", "\n ", "\n var item = new RawVariable {", "\n DataNode = dataNode,", @@ -1054,7 +1053,10 @@ "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n if(args.Scenario == null) await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(mainArgs)));", + "\n if(args.Scenario == mainArgs.Scenario) {", + "\n if(args.Scenario == null) await Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", + "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", + "\n }", "\n }", "\n", "\n return Activity.Finish().Merge(log); ", From f07a08856e06e3115ae8842c25b1ff23ff362d99 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Wed, 7 Dec 2022 17:41:44 +0100 Subject: [PATCH 13/64] scenario tests are green --- .../Test/ScenarioDataImportTest.ipynb | 437 +++++++++++------- ifrs17-template/Test/Tests.ipynb | 2 +- ifrs17/Import/ImportStorage.ipynb | 4 +- ifrs17/Import/Importers.ipynb | 23 +- ifrs17/Utils/Queries.ipynb | 2 +- 5 files changed, 286 insertions(+), 182 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index e255abee..49063e59 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -45,55 +45,7 @@ { "cell_type": "code", "source": [ - "static ImportStorage mystorage;", - "\nstatic ImportIdentity[] myidentities; ", - "\nstatic IModel mymodel;", - "\nstatic List my = new List();", - "\n", - "\nstatic IfrsVariable[] targetIVS;", - "\nstatic IfrsVariable[] defaultIVS;", - "\n", - "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", - "\n Activity.Start();", - "\n my.Add(\"0\");", - "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n my.Add(\"1\");", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", - "\n my.Add(\"2\");", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n", - "\n var targetArgs = mainArgs.Scenario == null ", - "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", - "\n : mainArgs.RepeatOnce();", - "\n ", - "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n mystorage = storage; ", - "\n myidentities = identities.ToArray(); ", - "\n mymodel = universe;", - "\n", - "\n if(args.Scenario == mainArgs.Scenario) {", - "\n if(args.Scenario == null) Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", - "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", - "\n }", - "\n }", - "\n", - "\n return Activity.Finish().Merge(log); ", - "\n});" + "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\"};" ], "metadata": {}, "execution_count": 0, @@ -102,7 +54,17 @@ { "cell_type": "code", "source": [ - "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\",\"DA\"};" + "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Best Estimate Initialization" ], "metadata": {}, "execution_count": 0, @@ -111,17 +73,29 @@ { "cell_type": "code", "source": [ - "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "var cashflowBestEstimateInit = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", + "\nDT1.1,NIC,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", + "\nDT1.1,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", + "\nDT1.1,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", + "\nDTR1.1,PR,CL,C,,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0", + "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", + "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", + "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" ], "metadata": {}, "execution_count": 0, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ - "# Best Estimate Initialization" + "await Import.FromString(cashflowBestEstimateInit).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -130,7 +104,18 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "var actualsBestEstimateInit = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,ACA,,-10", + "\nDT1.1,CF,AEA,,-5", + "\nDT1.1,CF,NIC,,-280", + "\nDT1.1,CF,PR,,400", + "\nDTR1.1,CF,PR,,-200", + "\nDTR1.1,CF,NIC,,140\";" ], "metadata": {}, "execution_count": 0, @@ -139,7 +124,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(actualsBestEstimateInit).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -204,74 +189,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Where(x => x != EstimateTypes.DA).Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", + "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().Be(2);" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "targetIVS.Where(x => x.AocType == \"AM\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "defaultIVS.Where(x => x.AocType == \"AM\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScopes(myidentities.Where(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\"), o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, (string)null, EstimateTypes.CU, (int?)null))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "(0, mymodel.GetScope(myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, o => o.WithContext(\"L\")).Values)" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await DataSource.Partition.SetAsync(argsScenario);", - "\nDataSource.Query().Where(x => x.DataNode == \"DT1.1\" && x.EstimateType == \"CU\")" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await DataSource.Partition.SetAsync(argsBestEstimate);", - "\nDataSource.Query().Where(x => x.DataNode == \"DT1.1\" && x.EstimateType == \"CU\")" + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -315,7 +235,7 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioInitActuals = DataSource.Query().ToArray();", - "\nvar diffs = ivsScenarioInitActuals.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioInitActuals.Except(ivsScenarioInitCashFlows, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -325,8 +245,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"CU\").ToArray().Length.Should().Be(0);", - "\nivsScenarioInitActuals.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.CU).ToArray().Length.Should().Be(0);", + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -335,7 +255,7 @@ { "cell_type": "markdown", "source": [ - "# Update of Deferrable Actuals with a Coverage Units Import for Scenario " + "# Update of Deferrable Actuals with a Scenario Coverage Units Import" ], "metadata": {}, "execution_count": 0, @@ -398,7 +318,7 @@ { "cell_type": "markdown", "source": [ - "# Update of Deferrable Actuals with a ACA/AEA Import for Scenario" + "# Update of Deferrable Actuals with a Scenario ACA/AEA Import" ], "metadata": {}, "execution_count": 0, @@ -508,16 +428,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA)" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "ivsScenarioActualNoACAAEA.Where(x => x.AmountType == \"ACA\" || x.AmountType == \"AEA\")" + "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", + "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -535,7 +447,7 @@ { "cell_type": "code", "source": [ - "var cashflowsScenarioTestEqualToBestEstimate = @\"", + "var cashflowsScenarioEqualToBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -553,7 +465,7 @@ { "cell_type": "code", "source": [ - "var actualsScenarioTestEqualToBestEstimate = @\"", + "var actualsScenarioEqualToBestEstimate = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,Test", @@ -570,7 +482,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(actualsScenarioTestEqualToBestEstimate).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(actualsScenarioEqualToBestEstimate).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -579,7 +491,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(cashflowsScenarioTestEqualToBestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(cashflowsScenarioEqualToBestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -588,8 +500,9 @@ { "cell_type": "code", "source": [ - "var ivsScenarioReimportEqualToBestEstimate = await DataSource.Query().ToArrayAsync(); ", - "\nvar diffs = ivsScenarioReimportEqualToBestEstimate.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance()).ToArray();" + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioReimportEqualToBestEstimate = await DataSource.Query().ToArrayAsync(); ", + "\nvar diffs = ivsScenarioReimportEqualToBestEstimate.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance()).Where(x => Math.Abs(x.Value) > Precision);" ], "metadata": {}, "execution_count": 0, @@ -598,7 +511,16 @@ { "cell_type": "code", "source": [ - "diffs.Length.Should().Be(0);" + "diffs.Count().Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Reimport of Best Estimate Cashflow: zero impact on Scenario" ], "metadata": {}, "execution_count": 0, @@ -607,7 +529,7 @@ { "cell_type": "markdown", "source": [ - "# Reimport of Best Estimate Cashflow" + "Reimport of best estimate with different gross cash flow, whereas reinsurance business is the same of the initialization. This causes an update of the best estimate IFRS variables but it must have no impact on Scenario variables because gross cash flow for Scenario have already been imported. " ], "metadata": {}, "execution_count": 0, @@ -616,7 +538,7 @@ { "cell_type": "code", "source": [ - "var newCashflowsBestEstimate = @\"", + "var cashflowsBestEstimateNoImpact = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", @@ -625,7 +547,11 @@ "\nDT1.1,PR,CL,C,,210,0,0,210,0,0,210,0,0,210,0,0,0,210,0,0,210,0,0,210,0,0,210,0", "\nDT1.1,NIC,CL,C,,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37", "\nDT1.1,CU,CL,C,,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-3.3", - "\nDT1.1,RA,CL,C,,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42\";" + "\nDT1.1,RA,CL,C,,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42", + "\nDTR1.1,PR,CL,C,,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0", + "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", + "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", + "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" ], "metadata": {}, "execution_count": 0, @@ -634,7 +560,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(newCashflowsBestEstimate).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(cashflowsBestEstimateNoImpact).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -645,8 +571,7 @@ "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateReimportCashFlows = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" + "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -655,9 +580,8 @@ { "cell_type": "code", "source": [ - "items.Length.Should().Be(1);", - "\n(items.First() == \"DA\").Should().Be(true);", - "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);" + "diffs.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().NotBe(0);", + "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).Count().Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -677,8 +601,66 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);" + "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType) && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Reimport of Best Estimate Cashflow: impact on Scenario" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var cashflowsBestEstimateImpact = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,ICO,CL,C,,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3", + "\nDT1.1,PR,CL,C,,210,0,0,210,0,0,210,0,0,210,0,0,0,210,0,0,210,0,0,210,0,0,210,0", + "\nDT1.1,NIC,CL,C,,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37,-37", + "\nDT1.1,CU,CL,C,,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-21,-17,-17,-17,-17,-17,-17,-17,-17,-17,-17,-3.3", + "\nDT1.1,RA,CL,C,,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42,-42\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowsBestEstimateImpact).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nvar ivsScenarioReimportCashFlowsImpact = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioReimportCashFlowsImpact.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", + "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Where(x => Math.Abs(x.Value) > Precision).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -733,7 +715,7 @@ "cell_type": "code", "source": [ "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" + "\ndiffs.Where(x => x.EstimateType == \"DA\").Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -754,7 +736,7 @@ "cell_type": "code", "source": [ "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => x.EstimateType == \"DA\").ToArray().Length.Should().Be(0);" + "\ndiffs.Where(x => x.EstimateType == \"DA\").Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -763,7 +745,7 @@ { "cell_type": "markdown", "source": [ - "# Update of Scenario Deferrable Actuals via Best Estimate Coverage Units" + "# Update of Deferrable Actuals with a Best Estimate Coverage Units Import" ], "metadata": {}, "execution_count": 0, @@ -778,6 +760,16 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenario);", + "\nawait DataSource.DeleteAsync(await DataSource.Query().ToArrayAsync());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -788,7 +780,6 @@ "\n@@Cashflow", "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", - "\nDT1.1,CU,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "\nDT1.1,NIC,CL,C,,-274.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", "\nDT1.1,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" ], @@ -799,7 +790,7 @@ { "cell_type": "code", "source": [ - "var newCashflowsBestEstimateUpdatedCU = @\"", + "var cashflowsBestEstimateUpdatedCU = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", @@ -836,7 +827,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(newCashflowsBestEstimateBis).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(cashflowsBestEstimateUpdatedCU).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -848,7 +839,53 @@ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportCashFlowsWithCU = await DataSource.Query().ToArrayAsync();", "\nvar diffs = ivsScenarioReimportCashFlowsWithCU.Except(ivsScenarioReimportCashflowNoCU, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct().ToArray();" + "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).Where(x => Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Debug" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//mymodel.GetScopes(myidentities.Where(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\"), o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, (string)null, EstimateTypes.CU, (int?)null))" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\")), o => o.WithContext(\"L\"))" ], "metadata": {}, "execution_count": 0, @@ -857,9 +894,77 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\nitems.Length.Should().Be(1);", - "\n(items.First() == \"DA\").Should().Be(true);" + "/*", + "\nstatic ImportStorage mystorage;", + "\nstatic ImportIdentity[] myidentities; ", + "\nstatic IModel mymodel;", + "\nstatic List my = new List();", + "\nstatic IWorkspace myws; ", + "\nstatic IfrsVariable[] targetIVS;", + "\nstatic IfrsVariable[] defaultIVS;", + "\n", + "\npublic async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", + "\n{", + "\n Activity.Start();", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision).ToArray());", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", + "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n if(saveRawVariables) {", + "\n if(args.Scenario == null) await Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n my.Add(\"bingo\");", + "\n }", + "\n", + "\n return Activity.Finish();", + "\n}", + "\n", + "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", + "\n Activity.Start();", + "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n", + "\n var targetArgs = mainArgs.Scenario == null ", + "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n : mainArgs.RepeatOnce();", + "\n ", + "\n foreach (var args in targetArgs) {", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, args == mainArgs));", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n my.Add(args.ToString());", + "\n ", + "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n await storage.InitializeAsync();", + "\n var universe = Scopes.ForStorage(storage).ToScope();", + "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", + "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", + "\n mystorage = storage; ", + "\n myidentities = identities.ToArray(); ", + "\n mymodel = universe;", + "\n targetIVS = ivs.ToArray();", + "\n }", + "\n myws = workspace;", + "\n return Activity.Finish().Merge(log); ", + "\n});", + "\n*/" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb index d7608993..d4442366 100644 --- a/ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -93,7 +93,7 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"ScenarioTest\"" + "#!eval-notebook \"ScenarioDataImportTest\"" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 7120863b..4e341ea2 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -178,8 +178,8 @@ "\n await workspace.Partition.SetAsync(TargetPartition);", "\n ", "\n //Get data from Workspace (result of parsing)", - "\n var parsedRawVariables = await workspace.LoadPartitionedDataRelaxedAsync(querySource, TargetPartition, DefaultPartition);", - "\n var parsedIfrsVariables = await workspace.LoadPartitionedDataRelaxedAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedRawVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedIfrsVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition);", "\n ", "\n //DataNodes", "\n DataNodeDataBySystemName = await workspace.LoadDataNodesAsync(args);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index d761092f..02c62c2d 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -441,7 +441,7 @@ { "cell_type": "code", "source": [ - "public async Task CalculateAndUploadIfrsVariablesAsync(ImportArgs args, IWorkspace workspace)", + "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", "\n{", "\n Activity.Start();", "\n var storage = new ImportStorage(args, DataSource, workspace);", @@ -457,6 +457,11 @@ "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n if(saveRawVariables) {", + "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", + "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", + "\n }", "\n return Activity.Finish();", "\n}" ], @@ -1006,7 +1011,7 @@ "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", "\n ", "\n // Filter out empty raw variables for AocType != CL", - "\n if(aocType != AocTypes.CL) return null; //TODO: extend this check for all mandatory step and not just for CL", + "\n //TODO: extend this check for all mandatory step and not just for CL", "\n ", "\n var item = new RawVariable {", "\n DataNode = dataNode,", @@ -1049,16 +1054,11 @@ "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", - "\n ", + "\n ", "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace));", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, args == mainArgs));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n if(args.Scenario == mainArgs.Scenario) {", - "\n if(args.Scenario == null) await Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", - "\n await CommitToDatabase(workspace, (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)));", - "\n }", "\n }", - "\n", "\n return Activity.Finish().Merge(log); ", "\n});" ], @@ -1169,10 +1169,9 @@ "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", "\n ", "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadIfrsVariablesAsync(args, workspace)); ", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", - "\n", "\n return Activity.Finish().Merge(log);", "\n});" ], @@ -1277,7 +1276,7 @@ "\n ", "\n await CommitToDatabase(workspace, partitionId, snapshot : true,", "\n filter : x => workspace.Query().Select(v => v.DataNode).Distinct().Contains(x.DataNode));", - "\n ", + "\n", "\n return Activity.Finish().Merge(parsingLog);", "\n});" ], diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 674578de..b7c938b0 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -428,7 +428,7 @@ { "cell_type": "code", "source": [ - "public static async Task LoadPartitionedDataRelaxedAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", + "public static async Task RelaxedQueryPartitionedDataAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", "\n where T : IPartitioned ", "\n where P : IPartition", "\n{", From 062fe34df73476b771cdfefeec1e7826ade7e16f Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Wed, 7 Dec 2022 19:22:49 +0100 Subject: [PATCH 14/64] fix equality comparer --- ifrs17-template/Test/IfrsVariablesTest.ipynb | 69 ++++++++++++++------ ifrs17/Utils/EqualityComparers.ipynb | 2 +- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb index 30e66d22..49ad125f 100644 --- a/ifrs17-template/Test/IfrsVariablesTest.ipynb +++ b/ifrs17-template/Test/IfrsVariablesTest.ipynb @@ -147,8 +147,7 @@ "\n AmountType = row.Field(nameof(IfrsVariable.AmountType)),", "\n AccidentYear = Int32.TryParse((row.Field(nameof(IfrsVariable.AccidentYear))), out var accidentYear) ? accidentYear : (int?)null,", "\n EconomicBasis = row.Field(nameof(IfrsVariable.EconomicBasis)),", - "\n Value = (-1.0) * doubleValue,", - "\n };", + "\n Value = (-1.0) * doubleValue };", "\n}" ], "metadata": {}, @@ -184,21 +183,20 @@ "source": [ "public List CompareAgainstBm (List errors, IEnumerable expected, IEnumerable computed)", "\n{", - "\n var expectedNotComputed = expected.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Select(x => x.ToIdentityString()).Except(computed.Select(x => x.ToIdentityString()));", - "\n var computedNotExpected = computed.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Select(x => x.ToIdentityString()).Except(expected.Select(x => x.ToIdentityString()));", + "\n var expectedNotComputed = expected.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Except(computed, EqualityComparer.Instance);", + "\n var computedNotExpected = computed.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Except(expected, EqualityComparer.Instance);", "\n if (expectedNotComputed.Any())", - "\n foreach (var error in expectedNotComputed)", - "\n errors.Add(new BenchmarkTestResult(\"Extra expected variable for: \" + error));", + "\n foreach (var variable in expectedNotComputed)", + "\n errors.Add(new BenchmarkTestResult(\"Extra expected variable for: Partition \" + variable.Partition + \", \" + variable.ToIdentityString()));", "\n if (computedNotExpected.Any())", - "\n foreach (var error in computedNotExpected)", - "\n errors.Add(new BenchmarkTestResult(\"Extra computed variable for: \" + error));", + "\n foreach (var variable in computedNotExpected)", + "\n errors.Add(new BenchmarkTestResult(\"Extra computed variable for: Partition \" + variable.Partition + \", \" + variable.ToIdentityString()));", "\n ", - "\n var misMatchedVariables = expected.Concat(computed).AggregateOver().Where(x => Math.Abs(x.Value) > BenchmarkPrecision);", - "\n if (misMatchedVariables.Any())", + "\n //var misMatchedVariables = expected.Concat(computed).AggregateOver().Where(x => Math.Abs(x.Value) > BenchmarkPrecision);", + "\n /*if (misMatchedVariables.Any())", "\n {", "\n foreach (var variable in misMatchedVariables)", "\n {", - "\n var message = variable.ToIdentityString();", "\n var bmValue = expected.FirstOrDefault(x => x.AocType == variable.AocType && ", "\n x.Novelty == variable.Novelty &&", "\n x.DataNode == variable.DataNode && ", @@ -215,9 +213,18 @@ "\n x.EconomicBasis == variable.EconomicBasis && ", "\n x.AccidentYear == variable.AccidentYear", "\n )?.Value ?? 0.0d;", - "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: \" + message, -bmValue, computedValue));", + "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: Partition \" + variable.Partition + \", \" + variable.ToIdentityString(), -bmValue, computedValue));", "\n }", + "\n }*/", + "\n", + "\n //var comparer = EqualityComparer.Instance; ", + "\n var comparer = IfrsVariableComparer.Instance(true);", + "\n foreach (var a in expected) {", + "\n var b = computed.FirstOrDefault(y => comparer.Equals(a,y))?? null;", + "\n if(b == null || Math.Abs(a.Value + b.Value) < BenchmarkPrecision) continue;", + "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: Partition \" + a.Partition + \", \" + a.ToIdentityString(), -a.Value, b.Value));", "\n }", + "\n", "\n return errors;", "\n}" ], @@ -261,15 +268,12 @@ "\n var reportingNode = g.Key.ReportingNode;", "\n var year = g.Key.Year;", "\n var month = g.Key.Month;", - "\n string scenario = g.Key.Scenario;", + "\n var scenario = g.Key.Scenario;", "\n ", - "\n //Set up Args and storage", - "\n await DataSource.Partition.SetAsync(new {ReportingNode = reportingNode, ", - "\n Year = year, ", - "\n Month = month, ", - "\n Scenario = scenario});", + "\n await DataSource.Partition.SetAsync(new {ReportingNode = reportingNode, Year = year, Month = month, Scenario = scenario});", "\n var partition = (await DataSource.Query().ToArrayAsync())", - "\n .SingleOrDefault(x => x.ReportingNode == reportingNode && x.Year== year && x.Month == month && x.Scenario == scenario)?.Id ?? new Guid();", + "\n .SingleOrDefault(x => x.ReportingNode == reportingNode && x.Year== year && x.Month == month && x.Scenario == scenario)?.Id ?? ", + "\n throw new Exception(\"Partition not found.\");", "\n ", "\n var computedVariablesByEstimateType = (await DataSource.Query()", "\n .Where(v => !excludedDataNodes.Contains(v.DataNode))", @@ -323,6 +327,33 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "DataSource.Query()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "BenchmarkPrecision" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Precision" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index e01acc72..d32b5039 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -96,7 +96,7 @@ "\n", "\n public bool Equals(IfrsVariable x, IfrsVariable y) =>", "\n x.AccidentYear == y.AccidentYear && x.AmountType == y.AmountType && x.DataNode == y.DataNode && x.AocType == y.AocType && ", - "\n x.Novelty == y.Novelty && x.EstimateType == y.EstimateType && (IgnoreValue ? true : Math.Abs(x.Value - y.Value) < Precision); ", + "\n x.Novelty == y.Novelty && x.EstimateType == y.EstimateType && x.EconomicBasis == y.EconomicBasis && (IgnoreValue ? true : Math.Abs(x.Value - y.Value) < Precision); ", "\n", "\n public int GetHashCode(IfrsVariable v) => 0;", "\n", From 26053eda562604bfa63acd92aa10aec595d60087 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Thu, 8 Dec 2022 11:55:14 +0100 Subject: [PATCH 15/64] best estimate all green --- ifrs17-template/Test/IfrsVariablesTest.ipynb | 46 +------------------- ifrs17/Import/ImportStorage.ipynb | 4 +- ifrs17/Import/Importers.ipynb | 6 ++- ifrs17/Utils/Queries.ipynb | 24 +++++++--- 4 files changed, 27 insertions(+), 53 deletions(-) diff --git a/ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb index 49ad125f..2e223c31 100644 --- a/ifrs17-template/Test/IfrsVariablesTest.ipynb +++ b/ifrs17-template/Test/IfrsVariablesTest.ipynb @@ -191,34 +191,8 @@ "\n if (computedNotExpected.Any())", "\n foreach (var variable in computedNotExpected)", "\n errors.Add(new BenchmarkTestResult(\"Extra computed variable for: Partition \" + variable.Partition + \", \" + variable.ToIdentityString()));", - "\n ", - "\n //var misMatchedVariables = expected.Concat(computed).AggregateOver().Where(x => Math.Abs(x.Value) > BenchmarkPrecision);", - "\n /*if (misMatchedVariables.Any())", - "\n {", - "\n foreach (var variable in misMatchedVariables)", - "\n {", - "\n var bmValue = expected.FirstOrDefault(x => x.AocType == variable.AocType && ", - "\n x.Novelty == variable.Novelty &&", - "\n x.DataNode == variable.DataNode && ", - "\n x.EstimateType == variable.EstimateType && ", - "\n x.AmountType == variable.AmountType && ", - "\n x.EconomicBasis == variable.EconomicBasis && ", - "\n x.AccidentYear == variable.AccidentYear", - "\n )?.Value ?? 0.0d;", - "\n var computedValue = computed.FirstOrDefault(x => x.AocType == variable.AocType && ", - "\n x.Novelty == variable.Novelty &&", - "\n x.DataNode == variable.DataNode && ", - "\n x.EstimateType == variable.EstimateType && ", - "\n x.AmountType == variable.AmountType && ", - "\n x.EconomicBasis == variable.EconomicBasis && ", - "\n x.AccidentYear == variable.AccidentYear", - "\n )?.Value ?? 0.0d;", - "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: Partition \" + variable.Partition + \", \" + variable.ToIdentityString(), -bmValue, computedValue));", - "\n }", - "\n }*/", "\n", - "\n //var comparer = EqualityComparer.Instance; ", - "\n var comparer = IfrsVariableComparer.Instance(true);", + "\n var comparer = EqualityComparer.Instance; ", "\n foreach (var a in expected) {", "\n var b = computed.FirstOrDefault(y => comparer.Equals(a,y))?? null;", "\n if(b == null || Math.Abs(a.Value + b.Value) < BenchmarkPrecision) continue;", @@ -336,24 +310,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "BenchmarkPrecision" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "Precision" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 4e341ea2..40afd722 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -178,8 +178,8 @@ "\n await workspace.Partition.SetAsync(TargetPartition);", "\n ", "\n //Get data from Workspace (result of parsing)", - "\n var parsedRawVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition);", - "\n var parsedIfrsVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition);", + "\n var parsedRawVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", + "\n var parsedIfrsVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", "\n ", "\n //DataNodes", "\n DataNodeDataBySystemName = await workspace.LoadDataNodesAsync(args);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 02c62c2d..060bb960 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -458,7 +458,7 @@ "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n if(saveRawVariables) {", - "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", + "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Sum(x => Math.Abs(x)) < Precision).ToArrayAsync());", "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n }", @@ -1012,6 +1012,10 @@ "\n ", "\n // Filter out empty raw variables for AocType != CL", "\n //TODO: extend this check for all mandatory step and not just for CL", + "\n if(args.Scenario == null) {", + "\n values = values.Prune();", + "\n if(values.Length == 0 && aocType != AocTypes.CL) return null;", + "\n }", "\n ", "\n var item = new RawVariable {", "\n DataNode = dataNode,", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index b7c938b0..4721ecf0 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -428,15 +428,20 @@ { "cell_type": "code", "source": [ - "public static async Task RelaxedQueryPartitionedDataAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition)", + "public static async Task RelaxedQueryPartitionedDataAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition, string format)", "\n where T : IPartitioned ", "\n where P : IPartition", "\n{", "\n var variables = await workspace.LoadPartitionedDataAsync(targetPartition);", - "\n // For scenario re-calculation", - "\n if (!variables.Any()) variables = await dataSource.LoadPartitionedDataAsync(targetPartition); ", - "\n // For scenarios related to parameters solely", - "\n if(!variables.Any() && targetPartition != defaultPartition) variables = await dataSource.LoadPartitionedDataAsync(defaultPartition);", + "\n", + "\n if(targetPartition != defaultPartition) {", + "\n var isRelaxed = (format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) || ", + "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable));", + "\n // For scenario re-calculation", + "\n if(!variables.Any() && isRelaxed) variables = await dataSource.LoadPartitionedDataAsync(targetPartition); ", + "\n // For scenarios related to parameters solely", + "\n if(!variables.Any() && isRelaxed) variables = await dataSource.LoadPartitionedDataAsync(defaultPartition);", + "\n }", "\n ", "\n await workspace.Partition.SetAsync

(targetPartition);", "\n await dataSource.Partition.SetAsync

(targetPartition);", @@ -446,6 +451,15 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file From 56c19fb6b7b8209fddbc7fb03767810be2b9daec Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Thu, 8 Dec 2022 12:45:25 +0100 Subject: [PATCH 16/64] ifrs variables scenario new benchmark --- .../BM_CH_2020_12_MTUP10pct_A.csv | 624 ++++++++++++++++- .../BM_CH_2020_12_MTUP10pct_AA.csv | 632 ++++++++++++++++++ .../BM_CH_2020_12_MTUP10pct_APA.csv | 14 + .../BM_CH_2020_12_MTUP10pct_BE.csv | 200 ++++-- .../BM_CH_2020_12_MTUP10pct_BEPA.csv | 3 +- .../BM_CH_2020_12_MTUP10pct_C.csv | 112 +++- .../BM_CH_2020_12_MTUP10pct_DA.csv | 157 +++++ .../BM_CH_2020_12_MTUP10pct_F.csv | 4 +- .../BM_CH_2020_12_MTUP10pct_L.csv | 66 +- .../BM_CH_2020_12_MTUP10pct_LR.csv | 43 ++ .../BM_CH_2020_12_MTUP10pct_OA.csv | 632 ++++++++++++++++++ .../BM_CH_2020_12_MTUP10pct_RA.csv | 98 ++- ifrs17-template/Test/IfrsVariablesTest.ipynb | 14 +- ifrs17/Import/ImportStorage.ipynb | 26 +- 14 files changed, 2485 insertions(+), 140 deletions(-) create mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv create mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv create mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv create mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv create mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv index 6a49b39f..9b0e07e1 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv @@ -3,12 +3,630 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@A AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,NIC,CF,DT2.1,,A,C,-310 -2020,NIC,CF,DT1.2,,A,C,-310 +,,CF,DT1.1,,A,C,0 ,NIC,CF,DT1.1,,A,C,-310 +,AEA,CF,DT1.1,,A,C,-5 +,ACA,CF,DT1.1,,A,C,-10 +,PR,CF,DT1.1,,A,C,400 +,,BOP,DT1.1,,A,I,0 +,NIC,BOP,DT1.1,,A,I,0 +,AEA,BOP,DT1.1,,A,I,0 +,ACA,BOP,DT1.1,,A,I,0 +,PR,BOP,DT1.1,,A,I,0 +,,EA,DT1.1,,A,C,0 +,NIC,EA,DT1.1,,A,C,0 +,AEA,EA,DT1.1,,A,C,0 +,ACA,EA,DT1.1,,A,C,0 +,PR,EA,DT1.1,,A,C,0 +,,AM,DT1.1,,A,C,0 +,NIC,AM,DT1.1,,A,C,0 +,AEA,AM,DT1.1,,A,C,0 +,ACA,AM,DT1.1,,A,C,0 +,PR,AM,DT1.1,,A,C,0 +,,EOP,DT1.1,,A,C,0 +,NIC,EOP,DT1.1,,A,C,0 +,AEA,EOP,DT1.1,,A,C,0 +,ACA,EOP,DT1.1,,A,C,0 +,PR,EOP,DT1.1,,A,C,0 +,,BOP,DT1.1,,A,N,0 +,NIC,BOP,DT1.1,,A,N,0 +,AEA,BOP,DT1.1,,A,N,0 +,ACA,BOP,DT1.1,,A,N,0 +,PR,BOP,DT1.1,,A,N,0 +,,IA,DT1.1,,A,N,0 +,NIC,IA,DT1.1,,A,N,0 +,AEA,IA,DT1.1,,A,N,0 +,ACA,IA,DT1.1,,A,N,0 +,PR,IA,DT1.1,,A,N,0 +,,MC,DT1.1,,A,I,0 +,NIC,MC,DT1.1,,A,I,0 +,AEA,MC,DT1.1,,A,I,0 +,ACA,MC,DT1.1,,A,I,0 +,PR,MC,DT1.1,,A,I,0 +,,RCU,DT1.1,,A,I,0 +,NIC,RCU,DT1.1,,A,I,0 +,AEA,RCU,DT1.1,,A,I,0 +,ACA,RCU,DT1.1,,A,I,0 +,PR,RCU,DT1.1,,A,I,0 +,,CF,DT1.1,,A,I,0 +,NIC,CF,DT1.1,,A,I,0 +,AEA,CF,DT1.1,,A,I,0 +,ACA,CF,DT1.1,,A,I,0 +,PR,CF,DT1.1,,A,I,0 +,,IA,DT1.1,,A,I,0 +,NIC,IA,DT1.1,,A,I,0 +,AEA,IA,DT1.1,,A,I,0 +,ACA,IA,DT1.1,,A,I,0 +,PR,IA,DT1.1,,A,I,0 +,,AU,DT1.1,,A,I,0 +,NIC,AU,DT1.1,,A,I,0 +,AEA,AU,DT1.1,,A,I,0 +,ACA,AU,DT1.1,,A,I,0 +,PR,AU,DT1.1,,A,I,0 +,,YCU,DT1.1,,A,I,0 +,NIC,YCU,DT1.1,,A,I,0 +,AEA,YCU,DT1.1,,A,I,0 +,ACA,YCU,DT1.1,,A,I,0 +,PR,YCU,DT1.1,,A,I,0 +,,CRU,DT1.1,,A,I,0 +,NIC,CRU,DT1.1,,A,I,0 +,AEA,CRU,DT1.1,,A,I,0 +,ACA,CRU,DT1.1,,A,I,0 +,PR,CRU,DT1.1,,A,I,0 +,,EV,DT1.1,,A,I,0 +,NIC,EV,DT1.1,,A,I,0 +,AEA,EV,DT1.1,,A,I,0 +,ACA,EV,DT1.1,,A,I,0 +,PR,EV,DT1.1,,A,I,0 +,,CF,DT1.1,,A,N,0 +,NIC,CF,DT1.1,,A,N,0 +,AEA,CF,DT1.1,,A,N,0 +,ACA,CF,DT1.1,,A,N,0 +,PR,CF,DT1.1,,A,N,0 +,,AU,DT1.1,,A,N,0 +,NIC,AU,DT1.1,,A,N,0 +,AEA,AU,DT1.1,,A,N,0 +,ACA,AU,DT1.1,,A,N,0 +,PR,AU,DT1.1,,A,N,0 +,,EV,DT1.1,,A,N,0 +,NIC,EV,DT1.1,,A,N,0 +,AEA,EV,DT1.1,,A,N,0 +,ACA,EV,DT1.1,,A,N,0 +,PR,EV,DT1.1,,A,N,0 +,,CL,DT1.1,,A,C,0 +,NIC,CL,DT1.1,,A,C,0 +,AEA,CL,DT1.1,,A,C,0 +,ACA,CL,DT1.1,,A,C,0 +,PR,CL,DT1.1,,A,C,0 +2020,NIC,CF,DT1.2,,A,C,-310 +,NIC,CF,DT1.2,,A,C,0 +2020,,CF,DT1.2,,A,C,0 +,,CF,DT1.2,,A,C,0 +2020,NIC,BOP,DT1.2,,A,I,0 +,NIC,BOP,DT1.2,,A,I,0 +2020,,BOP,DT1.2,,A,I,0 +,,BOP,DT1.2,,A,I,0 +2020,NIC,EA,DT1.2,,A,C,0 +,NIC,EA,DT1.2,,A,C,0 +2020,,EA,DT1.2,,A,C,0 +,,EA,DT1.2,,A,C,0 +2020,NIC,AM,DT1.2,,A,C,0 +,NIC,AM,DT1.2,,A,C,0 +2020,,AM,DT1.2,,A,C,0 +,,AM,DT1.2,,A,C,0 +2020,NIC,EOP,DT1.2,,A,C,0 +,NIC,EOP,DT1.2,,A,C,0 +2020,,EOP,DT1.2,,A,C,0 +,,EOP,DT1.2,,A,C,0 +2020,NIC,MC,DT1.2,,A,I,0 +,NIC,MC,DT1.2,,A,I,0 +2020,,MC,DT1.2,,A,I,0 +,,MC,DT1.2,,A,I,0 +2020,NIC,RCU,DT1.2,,A,I,0 +,NIC,RCU,DT1.2,,A,I,0 +2020,,RCU,DT1.2,,A,I,0 +,,RCU,DT1.2,,A,I,0 +2020,NIC,CF,DT1.2,,A,I,0 +,NIC,CF,DT1.2,,A,I,0 +2020,,CF,DT1.2,,A,I,0 +,,CF,DT1.2,,A,I,0 +2020,NIC,IA,DT1.2,,A,I,0 +,NIC,IA,DT1.2,,A,I,0 +2020,,IA,DT1.2,,A,I,0 +,,IA,DT1.2,,A,I,0 +2020,NIC,AU,DT1.2,,A,I,0 +,NIC,AU,DT1.2,,A,I,0 +2020,,AU,DT1.2,,A,I,0 +,,AU,DT1.2,,A,I,0 +2020,NIC,YCU,DT1.2,,A,I,0 +,NIC,YCU,DT1.2,,A,I,0 +2020,,YCU,DT1.2,,A,I,0 +,,YCU,DT1.2,,A,I,0 +2020,NIC,CRU,DT1.2,,A,I,0 +,NIC,CRU,DT1.2,,A,I,0 +2020,,CRU,DT1.2,,A,I,0 +,,CRU,DT1.2,,A,I,0 +2020,NIC,EV,DT1.2,,A,I,0 +,NIC,EV,DT1.2,,A,I,0 +2020,,EV,DT1.2,,A,I,0 +,,EV,DT1.2,,A,I,0 +2020,NIC,BOP,DT1.2,,A,N,0 +,NIC,BOP,DT1.2,,A,N,0 +2020,,BOP,DT1.2,,A,N,0 +,,BOP,DT1.2,,A,N,0 +2020,NIC,CF,DT1.2,,A,N,0 +,NIC,CF,DT1.2,,A,N,0 +2020,,CF,DT1.2,,A,N,0 +,,CF,DT1.2,,A,N,0 +2020,NIC,IA,DT1.2,,A,N,0 +,NIC,IA,DT1.2,,A,N,0 +2020,,IA,DT1.2,,A,N,0 +,,IA,DT1.2,,A,N,0 +2020,NIC,AU,DT1.2,,A,N,0 +,NIC,AU,DT1.2,,A,N,0 +2020,,AU,DT1.2,,A,N,0 +,,AU,DT1.2,,A,N,0 +2020,NIC,EV,DT1.2,,A,N,0 +,NIC,EV,DT1.2,,A,N,0 +2020,,EV,DT1.2,,A,N,0 +,,EV,DT1.2,,A,N,0 +2020,NIC,CL,DT1.2,,A,C,0 +,NIC,CL,DT1.2,,A,C,0 +2020,,CL,DT1.2,,A,C,0 +,,CL,DT1.2,,A,C,0 +,NIC,CF,DT2.1,,A,C,-310 +,PR,CF,DT2.1,,A,C,400 +,ACA,CF,DT2.1,,A,C,-10 +,AEA,CF,DT2.1,,A,C,-5 +,,CF,DT2.1,,A,C,0 +,NIC,EA,DT2.1,,A,C,0 +,PR,EA,DT2.1,,A,C,0 +,ACA,EA,DT2.1,,A,C,0 +,AEA,EA,DT2.1,,A,C,0 +,,EA,DT2.1,,A,C,0 +,NIC,AM,DT2.1,,A,C,0 +,PR,AM,DT2.1,,A,C,0 +,ACA,AM,DT2.1,,A,C,0 +,AEA,AM,DT2.1,,A,C,0 +,,AM,DT2.1,,A,C,0 +,NIC,EOP,DT2.1,,A,C,0 +,PR,EOP,DT2.1,,A,C,0 +,ACA,EOP,DT2.1,,A,C,0 +,AEA,EOP,DT2.1,,A,C,0 +,,EOP,DT2.1,,A,C,0 +,NIC,BOP,DT2.1,,A,N,0 +,PR,BOP,DT2.1,,A,N,0 +,ACA,BOP,DT2.1,,A,N,0 +,AEA,BOP,DT2.1,,A,N,0 +,,BOP,DT2.1,,A,N,0 +,NIC,IA,DT2.1,,A,N,0 +,PR,IA,DT2.1,,A,N,0 +,ACA,IA,DT2.1,,A,N,0 +,AEA,IA,DT2.1,,A,N,0 +,,IA,DT2.1,,A,N,0 +,NIC,BOP,DT2.1,,A,I,0 +,PR,BOP,DT2.1,,A,I,0 +,ACA,BOP,DT2.1,,A,I,0 +,AEA,BOP,DT2.1,,A,I,0 +,,BOP,DT2.1,,A,I,0 +,NIC,MC,DT2.1,,A,I,0 +,PR,MC,DT2.1,,A,I,0 +,ACA,MC,DT2.1,,A,I,0 +,AEA,MC,DT2.1,,A,I,0 +,,MC,DT2.1,,A,I,0 +,NIC,RCU,DT2.1,,A,I,0 +,PR,RCU,DT2.1,,A,I,0 +,ACA,RCU,DT2.1,,A,I,0 +,AEA,RCU,DT2.1,,A,I,0 +,,RCU,DT2.1,,A,I,0 +,NIC,CF,DT2.1,,A,I,0 +,PR,CF,DT2.1,,A,I,0 +,ACA,CF,DT2.1,,A,I,0 +,AEA,CF,DT2.1,,A,I,0 +,,CF,DT2.1,,A,I,0 +,NIC,IA,DT2.1,,A,I,0 +,PR,IA,DT2.1,,A,I,0 +,ACA,IA,DT2.1,,A,I,0 +,AEA,IA,DT2.1,,A,I,0 +,,IA,DT2.1,,A,I,0 +,NIC,AU,DT2.1,,A,I,0 +,PR,AU,DT2.1,,A,I,0 +,ACA,AU,DT2.1,,A,I,0 +,AEA,AU,DT2.1,,A,I,0 +,,AU,DT2.1,,A,I,0 +,NIC,YCU,DT2.1,,A,I,0 +,PR,YCU,DT2.1,,A,I,0 +,ACA,YCU,DT2.1,,A,I,0 +,AEA,YCU,DT2.1,,A,I,0 +,,YCU,DT2.1,,A,I,0 +,NIC,CRU,DT2.1,,A,I,0 +,PR,CRU,DT2.1,,A,I,0 +,ACA,CRU,DT2.1,,A,I,0 +,AEA,CRU,DT2.1,,A,I,0 +,,CRU,DT2.1,,A,I,0 +,NIC,EV,DT2.1,,A,I,0 +,PR,EV,DT2.1,,A,I,0 +,ACA,EV,DT2.1,,A,I,0 +,AEA,EV,DT2.1,,A,I,0 +,,EV,DT2.1,,A,I,0 +,NIC,CF,DT2.1,,A,N,0 +,PR,CF,DT2.1,,A,N,0 +,ACA,CF,DT2.1,,A,N,0 +,AEA,CF,DT2.1,,A,N,0 +,,CF,DT2.1,,A,N,0 +,NIC,AU,DT2.1,,A,N,0 +,PR,AU,DT2.1,,A,N,0 +,ACA,AU,DT2.1,,A,N,0 +,AEA,AU,DT2.1,,A,N,0 +,,AU,DT2.1,,A,N,0 +,NIC,EV,DT2.1,,A,N,0 +,PR,EV,DT2.1,,A,N,0 +,ACA,EV,DT2.1,,A,N,0 +,AEA,EV,DT2.1,,A,N,0 +,,EV,DT2.1,,A,N,0 +,NIC,CL,DT2.1,,A,C,0 +,PR,CL,DT2.1,,A,C,0 +,ACA,CL,DT2.1,,A,C,0 +,AEA,CL,DT2.1,,A,C,0 +,,CL,DT2.1,,A,C,0 ,NIC,CF,DT1.3,,A,C,-310 +,PR,CF,DT1.3,,A,C,400 +,ACA,CF,DT1.3,,A,C,-10 +,AEA,CF,DT1.3,,A,C,-5 +,,CF,DT1.3,,A,C,0 +,NIC,EA,DT1.3,,A,C,0 +,PR,EA,DT1.3,,A,C,0 +,ACA,EA,DT1.3,,A,C,0 +,AEA,EA,DT1.3,,A,C,0 +,,EA,DT1.3,,A,C,0 +,NIC,AM,DT1.3,,A,C,0 +,PR,AM,DT1.3,,A,C,0 +,ACA,AM,DT1.3,,A,C,0 +,AEA,AM,DT1.3,,A,C,0 +,,AM,DT1.3,,A,C,0 +,NIC,EOP,DT1.3,,A,C,0 +,PR,EOP,DT1.3,,A,C,0 +,ACA,EOP,DT1.3,,A,C,0 +,AEA,EOP,DT1.3,,A,C,0 +,,EOP,DT1.3,,A,C,0 +,NIC,BOP,DT1.3,,A,N,0 +,PR,BOP,DT1.3,,A,N,0 +,ACA,BOP,DT1.3,,A,N,0 +,AEA,BOP,DT1.3,,A,N,0 +,,BOP,DT1.3,,A,N,0 +,NIC,IA,DT1.3,,A,N,0 +,PR,IA,DT1.3,,A,N,0 +,ACA,IA,DT1.3,,A,N,0 +,AEA,IA,DT1.3,,A,N,0 +,,IA,DT1.3,,A,N,0 +,NIC,BOP,DT1.3,,A,I,0 +,PR,BOP,DT1.3,,A,I,0 +,ACA,BOP,DT1.3,,A,I,0 +,AEA,BOP,DT1.3,,A,I,0 +,,BOP,DT1.3,,A,I,0 +,NIC,MC,DT1.3,,A,I,0 +,PR,MC,DT1.3,,A,I,0 +,ACA,MC,DT1.3,,A,I,0 +,AEA,MC,DT1.3,,A,I,0 +,,MC,DT1.3,,A,I,0 +,NIC,RCU,DT1.3,,A,I,0 +,PR,RCU,DT1.3,,A,I,0 +,ACA,RCU,DT1.3,,A,I,0 +,AEA,RCU,DT1.3,,A,I,0 +,,RCU,DT1.3,,A,I,0 +,NIC,CF,DT1.3,,A,I,0 +,PR,CF,DT1.3,,A,I,0 +,ACA,CF,DT1.3,,A,I,0 +,AEA,CF,DT1.3,,A,I,0 +,,CF,DT1.3,,A,I,0 +,NIC,IA,DT1.3,,A,I,0 +,PR,IA,DT1.3,,A,I,0 +,ACA,IA,DT1.3,,A,I,0 +,AEA,IA,DT1.3,,A,I,0 +,,IA,DT1.3,,A,I,0 +,NIC,AU,DT1.3,,A,I,0 +,PR,AU,DT1.3,,A,I,0 +,ACA,AU,DT1.3,,A,I,0 +,AEA,AU,DT1.3,,A,I,0 +,,AU,DT1.3,,A,I,0 +,NIC,YCU,DT1.3,,A,I,0 +,PR,YCU,DT1.3,,A,I,0 +,ACA,YCU,DT1.3,,A,I,0 +,AEA,YCU,DT1.3,,A,I,0 +,,YCU,DT1.3,,A,I,0 +,NIC,CRU,DT1.3,,A,I,0 +,PR,CRU,DT1.3,,A,I,0 +,ACA,CRU,DT1.3,,A,I,0 +,AEA,CRU,DT1.3,,A,I,0 +,,CRU,DT1.3,,A,I,0 +,NIC,EV,DT1.3,,A,I,0 +,PR,EV,DT1.3,,A,I,0 +,ACA,EV,DT1.3,,A,I,0 +,AEA,EV,DT1.3,,A,I,0 +,,EV,DT1.3,,A,I,0 +,NIC,CF,DT1.3,,A,N,0 +,PR,CF,DT1.3,,A,N,0 +,ACA,CF,DT1.3,,A,N,0 +,AEA,CF,DT1.3,,A,N,0 +,,CF,DT1.3,,A,N,0 +,NIC,AU,DT1.3,,A,N,0 +,PR,AU,DT1.3,,A,N,0 +,ACA,AU,DT1.3,,A,N,0 +,AEA,AU,DT1.3,,A,N,0 +,,AU,DT1.3,,A,N,0 +,NIC,EV,DT1.3,,A,N,0 +,PR,EV,DT1.3,,A,N,0 +,ACA,EV,DT1.3,,A,N,0 +,AEA,EV,DT1.3,,A,N,0 +,,EV,DT1.3,,A,N,0 +,NIC,CL,DT1.3,,A,C,0 +,PR,CL,DT1.3,,A,C,0 +,ACA,CL,DT1.3,,A,C,0 +,AEA,CL,DT1.3,,A,C,0 +,,CL,DT1.3,,A,C,0 2020,NIC,CF,DT2.2,,A,C,-310 +,NIC,CF,DT2.2,,A,C,0 +2020,,CF,DT2.2,,A,C,0 +,,CF,DT2.2,,A,C,0 +2020,NIC,EA,DT2.2,,A,C,0 +,NIC,EA,DT2.2,,A,C,0 +2020,,EA,DT2.2,,A,C,0 +,,EA,DT2.2,,A,C,0 +2020,NIC,AM,DT2.2,,A,C,0 +,NIC,AM,DT2.2,,A,C,0 +2020,,AM,DT2.2,,A,C,0 +,,AM,DT2.2,,A,C,0 +2020,NIC,EOP,DT2.2,,A,C,0 +,NIC,EOP,DT2.2,,A,C,0 +2020,,EOP,DT2.2,,A,C,0 +,,EOP,DT2.2,,A,C,0 +2020,NIC,BOP,DT2.2,,A,I,0 +,NIC,BOP,DT2.2,,A,I,0 +2020,,BOP,DT2.2,,A,I,0 +,,BOP,DT2.2,,A,I,0 +2020,NIC,MC,DT2.2,,A,I,0 +,NIC,MC,DT2.2,,A,I,0 +2020,,MC,DT2.2,,A,I,0 +,,MC,DT2.2,,A,I,0 +2020,NIC,RCU,DT2.2,,A,I,0 +,NIC,RCU,DT2.2,,A,I,0 +2020,,RCU,DT2.2,,A,I,0 +,,RCU,DT2.2,,A,I,0 +2020,NIC,CF,DT2.2,,A,I,0 +,NIC,CF,DT2.2,,A,I,0 +2020,,CF,DT2.2,,A,I,0 +,,CF,DT2.2,,A,I,0 +2020,NIC,IA,DT2.2,,A,I,0 +,NIC,IA,DT2.2,,A,I,0 +2020,,IA,DT2.2,,A,I,0 +,,IA,DT2.2,,A,I,0 +2020,NIC,AU,DT2.2,,A,I,0 +,NIC,AU,DT2.2,,A,I,0 +2020,,AU,DT2.2,,A,I,0 +,,AU,DT2.2,,A,I,0 +2020,NIC,YCU,DT2.2,,A,I,0 +,NIC,YCU,DT2.2,,A,I,0 +2020,,YCU,DT2.2,,A,I,0 +,,YCU,DT2.2,,A,I,0 +2020,NIC,CRU,DT2.2,,A,I,0 +,NIC,CRU,DT2.2,,A,I,0 +2020,,CRU,DT2.2,,A,I,0 +,,CRU,DT2.2,,A,I,0 +2020,NIC,EV,DT2.2,,A,I,0 +,NIC,EV,DT2.2,,A,I,0 +2020,,EV,DT2.2,,A,I,0 +,,EV,DT2.2,,A,I,0 +2020,NIC,BOP,DT2.2,,A,N,0 +,NIC,BOP,DT2.2,,A,N,0 +2020,,BOP,DT2.2,,A,N,0 +,,BOP,DT2.2,,A,N,0 +2020,NIC,CF,DT2.2,,A,N,0 +,NIC,CF,DT2.2,,A,N,0 +2020,,CF,DT2.2,,A,N,0 +,,CF,DT2.2,,A,N,0 +2020,NIC,IA,DT2.2,,A,N,0 +,NIC,IA,DT2.2,,A,N,0 +2020,,IA,DT2.2,,A,N,0 +,,IA,DT2.2,,A,N,0 +2020,NIC,AU,DT2.2,,A,N,0 +,,AU,DT2.2,,A,N,0 +2020,,AU,DT2.2,,A,N,0 +,NIC,AU,DT2.2,,A,N,0 +2020,NIC,EV,DT2.2,,A,N,0 +2020,,EV,DT2.2,,A,N,0 +,NIC,EV,DT2.2,,A,N,0 +,,EV,DT2.2,,A,N,0 +2020,NIC,CL,DT2.2,,A,C,0 +2020,,CL,DT2.2,,A,C,0 +,NIC,CL,DT2.2,,A,C,0 +,,CL,DT2.2,,A,C,0 ,NIC,CF,DTR1.1,,A,C,170 +,PR,CF,DTR1.1,,A,C,-200 +,,CF,DTR1.1,,A,C,0 +,NIC,BOP,DTR1.1,,A,I,0 +,,BOP,DTR1.1,,A,I,0 +,PR,BOP,DTR1.1,,A,I,0 +,NIC,IA,DTR1.1,,A,N,0 +,PR,IA,DTR1.1,,A,N,0 +,,IA,DTR1.1,,A,N,0 +,,BOP,DTR1.1,,A,N,0 +,NIC,BOP,DTR1.1,,A,N,0 +,PR,BOP,DTR1.1,,A,N,0 +,,EOP,DTR1.1,,A,C,0 +,NIC,EOP,DTR1.1,,A,C,0 +,PR,EOP,DTR1.1,,A,C,0 +,NIC,AM,DTR1.1,,A,C,0 +,PR,AM,DTR1.1,,A,C,0 +,,AM,DTR1.1,,A,C,0 +,,EA,DTR1.1,,A,C,0 +,NIC,EA,DTR1.1,,A,C,0 +,PR,EA,DTR1.1,,A,C,0 +,,MC,DTR1.1,,A,I,0 +,NIC,MC,DTR1.1,,A,I,0 +,PR,MC,DTR1.1,,A,I,0 +,NIC,RCU,DTR1.1,,A,I,0 +,PR,RCU,DTR1.1,,A,I,0 +,,RCU,DTR1.1,,A,I,0 +,,CF,DTR1.1,,A,I,0 +,NIC,CF,DTR1.1,,A,I,0 +,PR,CF,DTR1.1,,A,I,0 +,,IA,DTR1.1,,A,I,0 +,NIC,IA,DTR1.1,,A,I,0 +,PR,IA,DTR1.1,,A,I,0 +,,AU,DTR1.1,,A,I,0 +,NIC,AU,DTR1.1,,A,I,0 +,PR,AU,DTR1.1,,A,I,0 +,PR,YCU,DTR1.1,,A,I,0 +,,YCU,DTR1.1,,A,I,0 +,NIC,YCU,DTR1.1,,A,I,0 +,NIC,CRU,DTR1.1,,A,I,0 +,PR,CRU,DTR1.1,,A,I,0 +,,CRU,DTR1.1,,A,I,0 +,,EV,DTR1.1,,A,I,0 +,NIC,EV,DTR1.1,,A,I,0 +,PR,EV,DTR1.1,,A,I,0 +,PR,CF,DTR1.1,,A,N,0 +,,CF,DTR1.1,,A,N,0 +,NIC,CF,DTR1.1,,A,N,0 +,NIC,AU,DTR1.1,,A,N,0 +,PR,AU,DTR1.1,,A,N,0 +,,AU,DTR1.1,,A,N,0 +,,EV,DTR1.1,,A,N,0 +,NIC,EV,DTR1.1,,A,N,0 +,PR,EV,DTR1.1,,A,N,0 +,PR,CL,DTR1.1,,A,C,0 +,,CL,DTR1.1,,A,C,0 +,NIC,CL,DTR1.1,,A,C,0 2020,NIC,CF,DTR1.2,,A,C,170 +2020,,CF,DTR1.2,,A,C,0 +,NIC,CF,DTR1.2,,A,C,0 +,,CF,DTR1.2,,A,C,0 +2020,NIC,BOP,DTR1.2,,A,I,0 +2020,,BOP,DTR1.2,,A,I,0 +,NIC,BOP,DTR1.2,,A,I,0 +,,BOP,DTR1.2,,A,I,0 +2020,NIC,EA,DTR1.2,,A,C,0 +2020,,EA,DTR1.2,,A,C,0 +,NIC,EA,DTR1.2,,A,C,0 +,,EA,DTR1.2,,A,C,0 +2020,NIC,AM,DTR1.2,,A,C,0 +,NIC,AM,DTR1.2,,A,C,0 +2020,,AM,DTR1.2,,A,C,0 +,,AM,DTR1.2,,A,C,0 +2020,,EOP,DTR1.2,,A,C,0 +,NIC,EOP,DTR1.2,,A,C,0 +2020,NIC,EOP,DTR1.2,,A,C,0 +,,EOP,DTR1.2,,A,C,0 +2020,NIC,MC,DTR1.2,,A,I,0 +,,MC,DTR1.2,,A,I,0 +2020,,MC,DTR1.2,,A,I,0 +,NIC,MC,DTR1.2,,A,I,0 +2020,NIC,RCU,DTR1.2,,A,I,0 +,NIC,RCU,DTR1.2,,A,I,0 +2020,,RCU,DTR1.2,,A,I,0 +,,RCU,DTR1.2,,A,I,0 +2020,NIC,CF,DTR1.2,,A,I,0 +,NIC,CF,DTR1.2,,A,I,0 +2020,,CF,DTR1.2,,A,I,0 +,,CF,DTR1.2,,A,I,0 +2020,NIC,IA,DTR1.2,,A,I,0 +,NIC,IA,DTR1.2,,A,I,0 +2020,,IA,DTR1.2,,A,I,0 +,,IA,DTR1.2,,A,I,0 +2020,NIC,AU,DTR1.2,,A,I,0 +,NIC,AU,DTR1.2,,A,I,0 +2020,,AU,DTR1.2,,A,I,0 +,,AU,DTR1.2,,A,I,0 +2020,NIC,YCU,DTR1.2,,A,I,0 +,NIC,YCU,DTR1.2,,A,I,0 +2020,,YCU,DTR1.2,,A,I,0 +,,YCU,DTR1.2,,A,I,0 +2020,NIC,CRU,DTR1.2,,A,I,0 +,NIC,CRU,DTR1.2,,A,I,0 +2020,,CRU,DTR1.2,,A,I,0 +,,CRU,DTR1.2,,A,I,0 +2020,NIC,EV,DTR1.2,,A,I,0 +,NIC,EV,DTR1.2,,A,I,0 +2020,,EV,DTR1.2,,A,I,0 +,,EV,DTR1.2,,A,I,0 +2020,NIC,BOP,DTR1.2,,A,N,0 +,NIC,BOP,DTR1.2,,A,N,0 +2020,,BOP,DTR1.2,,A,N,0 +,,BOP,DTR1.2,,A,N,0 +2020,NIC,CF,DTR1.2,,A,N,0 +,NIC,CF,DTR1.2,,A,N,0 +2020,,CF,DTR1.2,,A,N,0 +,,CF,DTR1.2,,A,N,0 +2020,NIC,IA,DTR1.2,,A,N,0 +,NIC,IA,DTR1.2,,A,N,0 +2020,,IA,DTR1.2,,A,N,0 +,,IA,DTR1.2,,A,N,0 +2020,NIC,AU,DTR1.2,,A,N,0 +,NIC,AU,DTR1.2,,A,N,0 +2020,,AU,DTR1.2,,A,N,0 +,,AU,DTR1.2,,A,N,0 +2020,NIC,EV,DTR1.2,,A,N,0 +,NIC,EV,DTR1.2,,A,N,0 +2020,,EV,DTR1.2,,A,N,0 +,,EV,DTR1.2,,A,N,0 +2020,NIC,CL,DTR1.2,,A,C,0 +,NIC,CL,DTR1.2,,A,C,0 +2020,,CL,DTR1.2,,A,C,0 +,,CL,DTR1.2,,A,C,0 +,,IA,DTR2.1,,A,N,0 +,NIC,IA,DTR2.1,,A,N,0 +,PR,IA,DTR2.1,,A,N,0 +,,BOP,DTR2.1,,A,N,0 +,NIC,BOP,DTR2.1,,A,N,0 +,PR,BOP,DTR2.1,,A,N,0 +,,EOP,DTR2.1,,A,C,0 +,NIC,EOP,DTR2.1,,A,C,0 +,PR,EOP,DTR2.1,,A,C,0 +,,AM,DTR2.1,,A,C,0 +,NIC,AM,DTR2.1,,A,C,0 +,PR,AM,DTR2.1,,A,C,0 +,,CF,DTR2.1,,A,C,0 +,NIC,CF,DTR2.1,,A,C,140 ,PR,CF,DTR2.1,,A,C,-200 -,NIC,CF,DTR2.1,,A,C,140 \ No newline at end of file +,,EA,DTR2.1,,A,C,0 +,NIC,EA,DTR2.1,,A,C,0 +,PR,EA,DTR2.1,,A,C,0 +,,BOP,DTR2.1,,A,I,0 +,NIC,BOP,DTR2.1,,A,I,0 +,PR,BOP,DTR2.1,,A,I,0 +,,MC,DTR2.1,,A,I,0 +,NIC,MC,DTR2.1,,A,I,0 +,PR,MC,DTR2.1,,A,I,0 +,,RCU,DTR2.1,,A,I,0 +,NIC,RCU,DTR2.1,,A,I,0 +,PR,RCU,DTR2.1,,A,I,0 +,,CF,DTR2.1,,A,I,0 +,NIC,CF,DTR2.1,,A,I,0 +,PR,CF,DTR2.1,,A,I,0 +,,IA,DTR2.1,,A,I,0 +,NIC,IA,DTR2.1,,A,I,0 +,PR,IA,DTR2.1,,A,I,0 +,,AU,DTR2.1,,A,I,0 +,NIC,AU,DTR2.1,,A,I,0 +,PR,AU,DTR2.1,,A,I,0 +,,YCU,DTR2.1,,A,I,0 +,NIC,YCU,DTR2.1,,A,I,0 +,PR,YCU,DTR2.1,,A,I,0 +,,CRU,DTR2.1,,A,I,0 +,NIC,CRU,DTR2.1,,A,I,0 +,PR,CRU,DTR2.1,,A,I,0 +,,EV,DTR2.1,,A,I,0 +,NIC,EV,DTR2.1,,A,I,0 +,PR,EV,DTR2.1,,A,I,0 +,,CF,DTR2.1,,A,N,0 +,NIC,CF,DTR2.1,,A,N,0 +,PR,CF,DTR2.1,,A,N,0 +,,AU,DTR2.1,,A,N,0 +,NIC,AU,DTR2.1,,A,N,0 +,PR,AU,DTR2.1,,A,N,0 +,,EV,DTR2.1,,A,N,0 +,NIC,EV,DTR2.1,,A,N,0 +,PR,EV,DTR2.1,,A,N,0 +,,CL,DTR2.1,,A,C,0 +,NIC,CL,DTR2.1,,A,C,0 +,PR,CL,DTR2.1,,A,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv new file mode 100644 index 00000000..121fa15f --- /dev/null +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv @@ -0,0 +1,632 @@ +@@Main +Month,ReportingNode,Scenario,Year +12,CH,MTUP10pct,2020 +@@AA +AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,,CF,DT1.1,,AA,C,0 +,NIC,CF,DT1.1,,AA,C,0 +,AEA,CF,DT1.1,,AA,C,0 +,ACA,CF,DT1.1,,AA,C,0 +,PR,CF,DT1.1,,AA,C,0 +,,BOP,DT1.1,,AA,I,0 +,NIC,BOP,DT1.1,,AA,I,0 +,AEA,BOP,DT1.1,,AA,I,0 +,ACA,BOP,DT1.1,,AA,I,0 +,PR,BOP,DT1.1,,AA,I,0 +,,EA,DT1.1,,AA,C,0 +,NIC,EA,DT1.1,,AA,C,0 +,AEA,EA,DT1.1,,AA,C,0 +,ACA,EA,DT1.1,,AA,C,0 +,PR,EA,DT1.1,,AA,C,0 +,,AM,DT1.1,,AA,C,0 +,NIC,AM,DT1.1,,AA,C,0 +,AEA,AM,DT1.1,,AA,C,0 +,ACA,AM,DT1.1,,AA,C,0 +,PR,AM,DT1.1,,AA,C,0 +,,EOP,DT1.1,,AA,C,0 +,NIC,EOP,DT1.1,,AA,C,0 +,AEA,EOP,DT1.1,,AA,C,0 +,ACA,EOP,DT1.1,,AA,C,0 +,PR,EOP,DT1.1,,AA,C,0 +,,BOP,DT1.1,,AA,N,0 +,NIC,BOP,DT1.1,,AA,N,0 +,AEA,BOP,DT1.1,,AA,N,0 +,ACA,BOP,DT1.1,,AA,N,0 +,PR,BOP,DT1.1,,AA,N,0 +,,IA,DT1.1,,AA,N,0 +,NIC,IA,DT1.1,,AA,N,0 +,AEA,IA,DT1.1,,AA,N,0 +,ACA,IA,DT1.1,,AA,N,0 +,PR,IA,DT1.1,,AA,N,0 +,,MC,DT1.1,,AA,I,0 +,NIC,MC,DT1.1,,AA,I,0 +,AEA,MC,DT1.1,,AA,I,0 +,ACA,MC,DT1.1,,AA,I,0 +,PR,MC,DT1.1,,AA,I,0 +,,RCU,DT1.1,,AA,I,0 +,NIC,RCU,DT1.1,,AA,I,0 +,AEA,RCU,DT1.1,,AA,I,0 +,ACA,RCU,DT1.1,,AA,I,0 +,PR,RCU,DT1.1,,AA,I,0 +,,CF,DT1.1,,AA,I,0 +,NIC,CF,DT1.1,,AA,I,0 +,AEA,CF,DT1.1,,AA,I,0 +,ACA,CF,DT1.1,,AA,I,0 +,PR,CF,DT1.1,,AA,I,0 +,,IA,DT1.1,,AA,I,0 +,NIC,IA,DT1.1,,AA,I,0 +,AEA,IA,DT1.1,,AA,I,0 +,ACA,IA,DT1.1,,AA,I,0 +,PR,IA,DT1.1,,AA,I,0 +,,AU,DT1.1,,AA,I,0 +,NIC,AU,DT1.1,,AA,I,0 +,AEA,AU,DT1.1,,AA,I,0 +,ACA,AU,DT1.1,,AA,I,0 +,PR,AU,DT1.1,,AA,I,0 +,,YCU,DT1.1,,AA,I,0 +,NIC,YCU,DT1.1,,AA,I,0 +,AEA,YCU,DT1.1,,AA,I,0 +,ACA,YCU,DT1.1,,AA,I,0 +,PR,YCU,DT1.1,,AA,I,0 +,,CRU,DT1.1,,AA,I,0 +,NIC,CRU,DT1.1,,AA,I,0 +,AEA,CRU,DT1.1,,AA,I,0 +,ACA,CRU,DT1.1,,AA,I,0 +,PR,CRU,DT1.1,,AA,I,0 +,,EV,DT1.1,,AA,I,0 +,NIC,EV,DT1.1,,AA,I,0 +,AEA,EV,DT1.1,,AA,I,0 +,ACA,EV,DT1.1,,AA,I,0 +,PR,EV,DT1.1,,AA,I,0 +,,CF,DT1.1,,AA,N,0 +,NIC,CF,DT1.1,,AA,N,0 +,AEA,CF,DT1.1,,AA,N,0 +,ACA,CF,DT1.1,,AA,N,0 +,PR,CF,DT1.1,,AA,N,0 +,,AU,DT1.1,,AA,N,0 +,NIC,AU,DT1.1,,AA,N,0 +,AEA,AU,DT1.1,,AA,N,0 +,ACA,AU,DT1.1,,AA,N,0 +,PR,AU,DT1.1,,AA,N,0 +,,EV,DT1.1,,AA,N,0 +,NIC,EV,DT1.1,,AA,N,0 +,AEA,EV,DT1.1,,AA,N,0 +,ACA,EV,DT1.1,,AA,N,0 +,PR,EV,DT1.1,,AA,N,0 +,,CL,DT1.1,,AA,C,0 +,NIC,CL,DT1.1,,AA,C,0 +,AEA,CL,DT1.1,,AA,C,0 +,ACA,CL,DT1.1,,AA,C,0 +,PR,CL,DT1.1,,AA,C,0 +2020,NIC,CF,DT1.2,,AA,C,0 +,NIC,CF,DT1.2,,AA,C,0 +2020,,CF,DT1.2,,AA,C,0 +,,CF,DT1.2,,AA,C,0 +2020,NIC,BOP,DT1.2,,AA,I,0 +,NIC,BOP,DT1.2,,AA,I,0 +2020,,BOP,DT1.2,,AA,I,0 +,,BOP,DT1.2,,AA,I,0 +2020,NIC,EA,DT1.2,,AA,C,0 +,NIC,EA,DT1.2,,AA,C,0 +2020,,EA,DT1.2,,AA,C,0 +,,EA,DT1.2,,AA,C,0 +2020,NIC,AM,DT1.2,,AA,C,0 +,NIC,AM,DT1.2,,AA,C,0 +2020,,AM,DT1.2,,AA,C,0 +,,AM,DT1.2,,AA,C,0 +2020,NIC,EOP,DT1.2,,AA,C,0 +,NIC,EOP,DT1.2,,AA,C,0 +2020,,EOP,DT1.2,,AA,C,0 +,,EOP,DT1.2,,AA,C,0 +2020,NIC,MC,DT1.2,,AA,I,0 +,NIC,MC,DT1.2,,AA,I,0 +2020,,MC,DT1.2,,AA,I,0 +,,MC,DT1.2,,AA,I,0 +2020,NIC,RCU,DT1.2,,AA,I,0 +,NIC,RCU,DT1.2,,AA,I,0 +2020,,RCU,DT1.2,,AA,I,0 +,,RCU,DT1.2,,AA,I,0 +2020,NIC,CF,DT1.2,,AA,I,0 +,NIC,CF,DT1.2,,AA,I,0 +2020,,CF,DT1.2,,AA,I,0 +,,CF,DT1.2,,AA,I,0 +2020,NIC,IA,DT1.2,,AA,I,0 +,NIC,IA,DT1.2,,AA,I,0 +2020,,IA,DT1.2,,AA,I,0 +,,IA,DT1.2,,AA,I,0 +2020,NIC,AU,DT1.2,,AA,I,0 +,NIC,AU,DT1.2,,AA,I,0 +2020,,AU,DT1.2,,AA,I,0 +,,AU,DT1.2,,AA,I,0 +2020,NIC,YCU,DT1.2,,AA,I,0 +,NIC,YCU,DT1.2,,AA,I,0 +2020,,YCU,DT1.2,,AA,I,0 +,,YCU,DT1.2,,AA,I,0 +2020,NIC,CRU,DT1.2,,AA,I,0 +,NIC,CRU,DT1.2,,AA,I,0 +2020,,CRU,DT1.2,,AA,I,0 +,,CRU,DT1.2,,AA,I,0 +2020,NIC,EV,DT1.2,,AA,I,0 +,NIC,EV,DT1.2,,AA,I,0 +2020,,EV,DT1.2,,AA,I,0 +,,EV,DT1.2,,AA,I,0 +2020,NIC,BOP,DT1.2,,AA,N,0 +,NIC,BOP,DT1.2,,AA,N,0 +2020,,BOP,DT1.2,,AA,N,0 +,,BOP,DT1.2,,AA,N,0 +2020,NIC,CF,DT1.2,,AA,N,0 +,NIC,CF,DT1.2,,AA,N,0 +2020,,CF,DT1.2,,AA,N,0 +,,CF,DT1.2,,AA,N,0 +2020,NIC,IA,DT1.2,,AA,N,0 +,NIC,IA,DT1.2,,AA,N,0 +2020,,IA,DT1.2,,AA,N,0 +,,IA,DT1.2,,AA,N,0 +2020,NIC,AU,DT1.2,,AA,N,0 +,NIC,AU,DT1.2,,AA,N,0 +2020,,AU,DT1.2,,AA,N,0 +,,AU,DT1.2,,AA,N,0 +2020,NIC,EV,DT1.2,,AA,N,0 +,NIC,EV,DT1.2,,AA,N,0 +2020,,EV,DT1.2,,AA,N,0 +,,EV,DT1.2,,AA,N,0 +2020,NIC,CL,DT1.2,,AA,C,0 +,NIC,CL,DT1.2,,AA,C,0 +2020,,CL,DT1.2,,AA,C,0 +,,CL,DT1.2,,AA,C,0 +,NIC,CF,DT2.1,,AA,C,0 +,PR,CF,DT2.1,,AA,C,0 +,ACA,CF,DT2.1,,AA,C,0 +,AEA,CF,DT2.1,,AA,C,0 +,,CF,DT2.1,,AA,C,0 +,NIC,EA,DT2.1,,AA,C,0 +,PR,EA,DT2.1,,AA,C,0 +,ACA,EA,DT2.1,,AA,C,0 +,AEA,EA,DT2.1,,AA,C,0 +,,EA,DT2.1,,AA,C,0 +,NIC,AM,DT2.1,,AA,C,0 +,PR,AM,DT2.1,,AA,C,0 +,ACA,AM,DT2.1,,AA,C,0 +,AEA,AM,DT2.1,,AA,C,0 +,,AM,DT2.1,,AA,C,0 +,NIC,EOP,DT2.1,,AA,C,0 +,PR,EOP,DT2.1,,AA,C,0 +,ACA,EOP,DT2.1,,AA,C,0 +,AEA,EOP,DT2.1,,AA,C,0 +,,EOP,DT2.1,,AA,C,0 +,NIC,BOP,DT2.1,,AA,N,0 +,PR,BOP,DT2.1,,AA,N,0 +,ACA,BOP,DT2.1,,AA,N,0 +,AEA,BOP,DT2.1,,AA,N,0 +,,BOP,DT2.1,,AA,N,0 +,NIC,IA,DT2.1,,AA,N,0 +,PR,IA,DT2.1,,AA,N,0 +,ACA,IA,DT2.1,,AA,N,0 +,AEA,IA,DT2.1,,AA,N,0 +,,IA,DT2.1,,AA,N,0 +,NIC,BOP,DT2.1,,AA,I,0 +,PR,BOP,DT2.1,,AA,I,0 +,ACA,BOP,DT2.1,,AA,I,0 +,AEA,BOP,DT2.1,,AA,I,0 +,,BOP,DT2.1,,AA,I,0 +,NIC,MC,DT2.1,,AA,I,0 +,PR,MC,DT2.1,,AA,I,0 +,ACA,MC,DT2.1,,AA,I,0 +,AEA,MC,DT2.1,,AA,I,0 +,,MC,DT2.1,,AA,I,0 +,NIC,RCU,DT2.1,,AA,I,0 +,PR,RCU,DT2.1,,AA,I,0 +,ACA,RCU,DT2.1,,AA,I,0 +,AEA,RCU,DT2.1,,AA,I,0 +,,RCU,DT2.1,,AA,I,0 +,NIC,CF,DT2.1,,AA,I,0 +,PR,CF,DT2.1,,AA,I,0 +,ACA,CF,DT2.1,,AA,I,0 +,AEA,CF,DT2.1,,AA,I,0 +,,CF,DT2.1,,AA,I,0 +,NIC,IA,DT2.1,,AA,I,0 +,PR,IA,DT2.1,,AA,I,0 +,ACA,IA,DT2.1,,AA,I,0 +,AEA,IA,DT2.1,,AA,I,0 +,,IA,DT2.1,,AA,I,0 +,NIC,AU,DT2.1,,AA,I,0 +,PR,AU,DT2.1,,AA,I,0 +,ACA,AU,DT2.1,,AA,I,0 +,AEA,AU,DT2.1,,AA,I,0 +,,AU,DT2.1,,AA,I,0 +,NIC,YCU,DT2.1,,AA,I,0 +,PR,YCU,DT2.1,,AA,I,0 +,ACA,YCU,DT2.1,,AA,I,0 +,AEA,YCU,DT2.1,,AA,I,0 +,,YCU,DT2.1,,AA,I,0 +,NIC,CRU,DT2.1,,AA,I,0 +,PR,CRU,DT2.1,,AA,I,0 +,ACA,CRU,DT2.1,,AA,I,0 +,AEA,CRU,DT2.1,,AA,I,0 +,,CRU,DT2.1,,AA,I,0 +,NIC,EV,DT2.1,,AA,I,0 +,PR,EV,DT2.1,,AA,I,0 +,ACA,EV,DT2.1,,AA,I,0 +,AEA,EV,DT2.1,,AA,I,0 +,,EV,DT2.1,,AA,I,0 +,NIC,CF,DT2.1,,AA,N,0 +,PR,CF,DT2.1,,AA,N,0 +,ACA,CF,DT2.1,,AA,N,0 +,AEA,CF,DT2.1,,AA,N,0 +,,CF,DT2.1,,AA,N,0 +,NIC,AU,DT2.1,,AA,N,0 +,PR,AU,DT2.1,,AA,N,0 +,ACA,AU,DT2.1,,AA,N,0 +,AEA,AU,DT2.1,,AA,N,0 +,,AU,DT2.1,,AA,N,0 +,NIC,EV,DT2.1,,AA,N,0 +,PR,EV,DT2.1,,AA,N,0 +,ACA,EV,DT2.1,,AA,N,0 +,AEA,EV,DT2.1,,AA,N,0 +,,EV,DT2.1,,AA,N,0 +,NIC,CL,DT2.1,,AA,C,0 +,PR,CL,DT2.1,,AA,C,0 +,ACA,CL,DT2.1,,AA,C,0 +,AEA,CL,DT2.1,,AA,C,0 +,,CL,DT2.1,,AA,C,0 +,NIC,CF,DT1.3,,AA,C,0 +,PR,CF,DT1.3,,AA,C,0 +,ACA,CF,DT1.3,,AA,C,0 +,AEA,CF,DT1.3,,AA,C,0 +,,CF,DT1.3,,AA,C,0 +,NIC,EA,DT1.3,,AA,C,0 +,PR,EA,DT1.3,,AA,C,0 +,ACA,EA,DT1.3,,AA,C,0 +,AEA,EA,DT1.3,,AA,C,0 +,,EA,DT1.3,,AA,C,0 +,NIC,AM,DT1.3,,AA,C,0 +,PR,AM,DT1.3,,AA,C,0 +,ACA,AM,DT1.3,,AA,C,0 +,AEA,AM,DT1.3,,AA,C,0 +,,AM,DT1.3,,AA,C,0 +,NIC,EOP,DT1.3,,AA,C,0 +,PR,EOP,DT1.3,,AA,C,0 +,ACA,EOP,DT1.3,,AA,C,0 +,AEA,EOP,DT1.3,,AA,C,0 +,,EOP,DT1.3,,AA,C,0 +,NIC,BOP,DT1.3,,AA,N,0 +,PR,BOP,DT1.3,,AA,N,0 +,ACA,BOP,DT1.3,,AA,N,0 +,AEA,BOP,DT1.3,,AA,N,0 +,,BOP,DT1.3,,AA,N,0 +,NIC,IA,DT1.3,,AA,N,0 +,PR,IA,DT1.3,,AA,N,0 +,ACA,IA,DT1.3,,AA,N,0 +,AEA,IA,DT1.3,,AA,N,0 +,,IA,DT1.3,,AA,N,0 +,NIC,BOP,DT1.3,,AA,I,0 +,PR,BOP,DT1.3,,AA,I,0 +,ACA,BOP,DT1.3,,AA,I,0 +,AEA,BOP,DT1.3,,AA,I,0 +,,BOP,DT1.3,,AA,I,0 +,NIC,MC,DT1.3,,AA,I,0 +,PR,MC,DT1.3,,AA,I,0 +,ACA,MC,DT1.3,,AA,I,0 +,AEA,MC,DT1.3,,AA,I,0 +,,MC,DT1.3,,AA,I,0 +,NIC,RCU,DT1.3,,AA,I,0 +,PR,RCU,DT1.3,,AA,I,0 +,ACA,RCU,DT1.3,,AA,I,0 +,AEA,RCU,DT1.3,,AA,I,0 +,,RCU,DT1.3,,AA,I,0 +,NIC,CF,DT1.3,,AA,I,0 +,PR,CF,DT1.3,,AA,I,0 +,ACA,CF,DT1.3,,AA,I,0 +,AEA,CF,DT1.3,,AA,I,0 +,,CF,DT1.3,,AA,I,0 +,NIC,IA,DT1.3,,AA,I,0 +,PR,IA,DT1.3,,AA,I,0 +,ACA,IA,DT1.3,,AA,I,0 +,AEA,IA,DT1.3,,AA,I,0 +,,IA,DT1.3,,AA,I,0 +,NIC,AU,DT1.3,,AA,I,0 +,PR,AU,DT1.3,,AA,I,0 +,ACA,AU,DT1.3,,AA,I,0 +,AEA,AU,DT1.3,,AA,I,0 +,,AU,DT1.3,,AA,I,0 +,NIC,YCU,DT1.3,,AA,I,0 +,PR,YCU,DT1.3,,AA,I,0 +,ACA,YCU,DT1.3,,AA,I,0 +,AEA,YCU,DT1.3,,AA,I,0 +,,YCU,DT1.3,,AA,I,0 +,NIC,CRU,DT1.3,,AA,I,0 +,PR,CRU,DT1.3,,AA,I,0 +,ACA,CRU,DT1.3,,AA,I,0 +,AEA,CRU,DT1.3,,AA,I,0 +,,CRU,DT1.3,,AA,I,0 +,NIC,EV,DT1.3,,AA,I,0 +,PR,EV,DT1.3,,AA,I,0 +,ACA,EV,DT1.3,,AA,I,0 +,AEA,EV,DT1.3,,AA,I,0 +,,EV,DT1.3,,AA,I,0 +,NIC,CF,DT1.3,,AA,N,0 +,PR,CF,DT1.3,,AA,N,0 +,ACA,CF,DT1.3,,AA,N,0 +,AEA,CF,DT1.3,,AA,N,0 +,,CF,DT1.3,,AA,N,0 +,NIC,AU,DT1.3,,AA,N,0 +,PR,AU,DT1.3,,AA,N,0 +,ACA,AU,DT1.3,,AA,N,0 +,AEA,AU,DT1.3,,AA,N,0 +,,AU,DT1.3,,AA,N,0 +,NIC,EV,DT1.3,,AA,N,0 +,PR,EV,DT1.3,,AA,N,0 +,ACA,EV,DT1.3,,AA,N,0 +,AEA,EV,DT1.3,,AA,N,0 +,,EV,DT1.3,,AA,N,0 +,NIC,CL,DT1.3,,AA,C,0 +,PR,CL,DT1.3,,AA,C,0 +,ACA,CL,DT1.3,,AA,C,0 +,AEA,CL,DT1.3,,AA,C,0 +,,CL,DT1.3,,AA,C,0 +2020,NIC,CF,DT2.2,,AA,C,0 +,NIC,CF,DT2.2,,AA,C,0 +2020,,CF,DT2.2,,AA,C,0 +,,CF,DT2.2,,AA,C,0 +2020,NIC,EA,DT2.2,,AA,C,0 +,NIC,EA,DT2.2,,AA,C,0 +2020,,EA,DT2.2,,AA,C,0 +,,EA,DT2.2,,AA,C,0 +2020,NIC,AM,DT2.2,,AA,C,0 +,NIC,AM,DT2.2,,AA,C,0 +2020,,AM,DT2.2,,AA,C,0 +,,AM,DT2.2,,AA,C,0 +2020,NIC,EOP,DT2.2,,AA,C,0 +,NIC,EOP,DT2.2,,AA,C,0 +2020,,EOP,DT2.2,,AA,C,0 +,,EOP,DT2.2,,AA,C,0 +2020,NIC,BOP,DT2.2,,AA,I,0 +,NIC,BOP,DT2.2,,AA,I,0 +2020,,BOP,DT2.2,,AA,I,0 +,,BOP,DT2.2,,AA,I,0 +2020,NIC,MC,DT2.2,,AA,I,0 +,NIC,MC,DT2.2,,AA,I,0 +2020,,MC,DT2.2,,AA,I,0 +,,MC,DT2.2,,AA,I,0 +2020,NIC,RCU,DT2.2,,AA,I,0 +,NIC,RCU,DT2.2,,AA,I,0 +2020,,RCU,DT2.2,,AA,I,0 +,,RCU,DT2.2,,AA,I,0 +2020,NIC,CF,DT2.2,,AA,I,0 +,NIC,CF,DT2.2,,AA,I,0 +2020,,CF,DT2.2,,AA,I,0 +,,CF,DT2.2,,AA,I,0 +2020,NIC,IA,DT2.2,,AA,I,0 +,NIC,IA,DT2.2,,AA,I,0 +2020,,IA,DT2.2,,AA,I,0 +,,IA,DT2.2,,AA,I,0 +2020,NIC,AU,DT2.2,,AA,I,0 +,NIC,AU,DT2.2,,AA,I,0 +2020,,AU,DT2.2,,AA,I,0 +,,AU,DT2.2,,AA,I,0 +2020,NIC,YCU,DT2.2,,AA,I,0 +,NIC,YCU,DT2.2,,AA,I,0 +2020,,YCU,DT2.2,,AA,I,0 +,,YCU,DT2.2,,AA,I,0 +2020,NIC,CRU,DT2.2,,AA,I,0 +,NIC,CRU,DT2.2,,AA,I,0 +2020,,CRU,DT2.2,,AA,I,0 +,,CRU,DT2.2,,AA,I,0 +2020,NIC,EV,DT2.2,,AA,I,0 +,NIC,EV,DT2.2,,AA,I,0 +2020,,EV,DT2.2,,AA,I,0 +,,EV,DT2.2,,AA,I,0 +2020,NIC,BOP,DT2.2,,AA,N,0 +,NIC,BOP,DT2.2,,AA,N,0 +2020,,BOP,DT2.2,,AA,N,0 +,,BOP,DT2.2,,AA,N,0 +2020,NIC,CF,DT2.2,,AA,N,0 +,NIC,CF,DT2.2,,AA,N,0 +2020,,CF,DT2.2,,AA,N,0 +,,CF,DT2.2,,AA,N,0 +2020,NIC,IA,DT2.2,,AA,N,0 +,NIC,IA,DT2.2,,AA,N,0 +2020,,IA,DT2.2,,AA,N,0 +,,IA,DT2.2,,AA,N,0 +,NIC,AU,DT2.2,,AA,N,0 +2020,NIC,AU,DT2.2,,AA,N,0 +,,AU,DT2.2,,AA,N,0 +2020,,AU,DT2.2,,AA,N,0 +2020,NIC,EV,DT2.2,,AA,N,0 +,NIC,EV,DT2.2,,AA,N,0 +,,EV,DT2.2,,AA,N,0 +2020,,EV,DT2.2,,AA,N,0 +,NIC,CL,DT2.2,,AA,C,0 +2020,NIC,CL,DT2.2,,AA,C,0 +,,CL,DT2.2,,AA,C,0 +2020,,CL,DT2.2,,AA,C,0 +,PR,CF,DTR1.1,,AA,C,0 +,,CF,DTR1.1,,AA,C,0 +,NIC,CF,DTR1.1,,AA,C,0 +,NIC,BOP,DTR1.1,,AA,I,0 +,,BOP,DTR1.1,,AA,I,0 +,PR,BOP,DTR1.1,,AA,I,0 +,PR,IA,DTR1.1,,AA,N,0 +,,IA,DTR1.1,,AA,N,0 +,NIC,IA,DTR1.1,,AA,N,0 +,NIC,BOP,DTR1.1,,AA,N,0 +,PR,BOP,DTR1.1,,AA,N,0 +,,BOP,DTR1.1,,AA,N,0 +,NIC,EOP,DTR1.1,,AA,C,0 +,,EOP,DTR1.1,,AA,C,0 +,PR,EOP,DTR1.1,,AA,C,0 +,PR,AM,DTR1.1,,AA,C,0 +,,AM,DTR1.1,,AA,C,0 +,NIC,AM,DTR1.1,,AA,C,0 +,NIC,EA,DTR1.1,,AA,C,0 +,PR,EA,DTR1.1,,AA,C,0 +,,EA,DTR1.1,,AA,C,0 +,NIC,MC,DTR1.1,,AA,I,0 +,,MC,DTR1.1,,AA,I,0 +,PR,MC,DTR1.1,,AA,I,0 +,PR,RCU,DTR1.1,,AA,I,0 +,,RCU,DTR1.1,,AA,I,0 +,NIC,RCU,DTR1.1,,AA,I,0 +,NIC,CF,DTR1.1,,AA,I,0 +,PR,CF,DTR1.1,,AA,I,0 +,,CF,DTR1.1,,AA,I,0 +,NIC,IA,DTR1.1,,AA,I,0 +,,IA,DTR1.1,,AA,I,0 +,PR,IA,DTR1.1,,AA,I,0 +,NIC,AU,DTR1.1,,AA,I,0 +,PR,AU,DTR1.1,,AA,I,0 +,,AU,DTR1.1,,AA,I,0 +,,YCU,DTR1.1,,AA,I,0 +,NIC,YCU,DTR1.1,,AA,I,0 +,PR,YCU,DTR1.1,,AA,I,0 +,NIC,CRU,DTR1.1,,AA,I,0 +,,CRU,DTR1.1,,AA,I,0 +,PR,CRU,DTR1.1,,AA,I,0 +,NIC,EV,DTR1.1,,AA,I,0 +,PR,EV,DTR1.1,,AA,I,0 +,,EV,DTR1.1,,AA,I,0 +,,CF,DTR1.1,,AA,N,0 +,NIC,CF,DTR1.1,,AA,N,0 +,PR,CF,DTR1.1,,AA,N,0 +,NIC,AU,DTR1.1,,AA,N,0 +,,AU,DTR1.1,,AA,N,0 +,PR,AU,DTR1.1,,AA,N,0 +,NIC,EV,DTR1.1,,AA,N,0 +,PR,EV,DTR1.1,,AA,N,0 +,,EV,DTR1.1,,AA,N,0 +,,CL,DTR1.1,,AA,C,0 +,NIC,CL,DTR1.1,,AA,C,0 +,PR,CL,DTR1.1,,AA,C,0 +2020,NIC,CF,DTR1.2,,AA,C,0 +,NIC,CF,DTR1.2,,AA,C,0 +,,CF,DTR1.2,,AA,C,0 +2020,,CF,DTR1.2,,AA,C,0 +,NIC,BOP,DTR1.2,,AA,I,0 +2020,NIC,BOP,DTR1.2,,AA,I,0 +,,BOP,DTR1.2,,AA,I,0 +2020,,BOP,DTR1.2,,AA,I,0 +,NIC,EA,DTR1.2,,AA,C,0 +2020,NIC,EA,DTR1.2,,AA,C,0 +,,EA,DTR1.2,,AA,C,0 +2020,,EA,DTR1.2,,AA,C,0 +,NIC,AM,DTR1.2,,AA,C,0 +2020,NIC,AM,DTR1.2,,AA,C,0 +,,AM,DTR1.2,,AA,C,0 +2020,,AM,DTR1.2,,AA,C,0 +2020,NIC,EOP,DTR1.2,,AA,C,0 +,NIC,EOP,DTR1.2,,AA,C,0 +2020,,EOP,DTR1.2,,AA,C,0 +,,EOP,DTR1.2,,AA,C,0 +2020,,MC,DTR1.2,,AA,I,0 +,,MC,DTR1.2,,AA,I,0 +2020,NIC,MC,DTR1.2,,AA,I,0 +,NIC,MC,DTR1.2,,AA,I,0 +2020,NIC,RCU,DTR1.2,,AA,I,0 +,NIC,RCU,DTR1.2,,AA,I,0 +2020,,RCU,DTR1.2,,AA,I,0 +,,RCU,DTR1.2,,AA,I,0 +2020,NIC,CF,DTR1.2,,AA,I,0 +,NIC,CF,DTR1.2,,AA,I,0 +2020,,CF,DTR1.2,,AA,I,0 +,,CF,DTR1.2,,AA,I,0 +2020,NIC,IA,DTR1.2,,AA,I,0 +,NIC,IA,DTR1.2,,AA,I,0 +2020,,IA,DTR1.2,,AA,I,0 +,,IA,DTR1.2,,AA,I,0 +2020,NIC,AU,DTR1.2,,AA,I,0 +,NIC,AU,DTR1.2,,AA,I,0 +2020,,AU,DTR1.2,,AA,I,0 +,,AU,DTR1.2,,AA,I,0 +2020,NIC,YCU,DTR1.2,,AA,I,0 +,NIC,YCU,DTR1.2,,AA,I,0 +2020,,YCU,DTR1.2,,AA,I,0 +,,YCU,DTR1.2,,AA,I,0 +2020,NIC,CRU,DTR1.2,,AA,I,0 +,NIC,CRU,DTR1.2,,AA,I,0 +2020,,CRU,DTR1.2,,AA,I,0 +,,CRU,DTR1.2,,AA,I,0 +2020,NIC,EV,DTR1.2,,AA,I,0 +,NIC,EV,DTR1.2,,AA,I,0 +2020,,EV,DTR1.2,,AA,I,0 +,,EV,DTR1.2,,AA,I,0 +2020,NIC,BOP,DTR1.2,,AA,N,0 +,NIC,BOP,DTR1.2,,AA,N,0 +2020,,BOP,DTR1.2,,AA,N,0 +,,BOP,DTR1.2,,AA,N,0 +2020,NIC,CF,DTR1.2,,AA,N,0 +,NIC,CF,DTR1.2,,AA,N,0 +2020,,CF,DTR1.2,,AA,N,0 +,,CF,DTR1.2,,AA,N,0 +2020,NIC,IA,DTR1.2,,AA,N,0 +,NIC,IA,DTR1.2,,AA,N,0 +2020,,IA,DTR1.2,,AA,N,0 +,,IA,DTR1.2,,AA,N,0 +2020,NIC,AU,DTR1.2,,AA,N,0 +,NIC,AU,DTR1.2,,AA,N,0 +2020,,AU,DTR1.2,,AA,N,0 +,,AU,DTR1.2,,AA,N,0 +2020,NIC,EV,DTR1.2,,AA,N,0 +,NIC,EV,DTR1.2,,AA,N,0 +2020,,EV,DTR1.2,,AA,N,0 +,,EV,DTR1.2,,AA,N,0 +2020,NIC,CL,DTR1.2,,AA,C,0 +,NIC,CL,DTR1.2,,AA,C,0 +2020,,CL,DTR1.2,,AA,C,0 +,,CL,DTR1.2,,AA,C,0 +,,IA,DTR2.1,,AA,N,0 +,NIC,IA,DTR2.1,,AA,N,0 +,PR,IA,DTR2.1,,AA,N,0 +,,BOP,DTR2.1,,AA,N,0 +,NIC,BOP,DTR2.1,,AA,N,0 +,PR,BOP,DTR2.1,,AA,N,0 +,,EOP,DTR2.1,,AA,C,0 +,NIC,EOP,DTR2.1,,AA,C,0 +,PR,EOP,DTR2.1,,AA,C,0 +,,AM,DTR2.1,,AA,C,0 +,NIC,AM,DTR2.1,,AA,C,0 +,PR,AM,DTR2.1,,AA,C,0 +,,CF,DTR2.1,,AA,C,0 +,NIC,CF,DTR2.1,,AA,C,0 +,PR,CF,DTR2.1,,AA,C,0 +,,EA,DTR2.1,,AA,C,0 +,NIC,EA,DTR2.1,,AA,C,0 +,PR,EA,DTR2.1,,AA,C,0 +,,BOP,DTR2.1,,AA,I,0 +,NIC,BOP,DTR2.1,,AA,I,0 +,PR,BOP,DTR2.1,,AA,I,0 +,,MC,DTR2.1,,AA,I,0 +,NIC,MC,DTR2.1,,AA,I,0 +,PR,MC,DTR2.1,,AA,I,0 +,,RCU,DTR2.1,,AA,I,0 +,NIC,RCU,DTR2.1,,AA,I,0 +,PR,RCU,DTR2.1,,AA,I,0 +,,CF,DTR2.1,,AA,I,0 +,NIC,CF,DTR2.1,,AA,I,0 +,PR,CF,DTR2.1,,AA,I,0 +,,IA,DTR2.1,,AA,I,0 +,NIC,IA,DTR2.1,,AA,I,0 +,PR,IA,DTR2.1,,AA,I,0 +,,AU,DTR2.1,,AA,I,0 +,NIC,AU,DTR2.1,,AA,I,0 +,PR,AU,DTR2.1,,AA,I,0 +,,YCU,DTR2.1,,AA,I,0 +,NIC,YCU,DTR2.1,,AA,I,0 +,PR,YCU,DTR2.1,,AA,I,0 +,,CRU,DTR2.1,,AA,I,0 +,NIC,CRU,DTR2.1,,AA,I,0 +,PR,CRU,DTR2.1,,AA,I,0 +,,EV,DTR2.1,,AA,I,0 +,NIC,EV,DTR2.1,,AA,I,0 +,PR,EV,DTR2.1,,AA,I,0 +,,CF,DTR2.1,,AA,N,0 +,NIC,CF,DTR2.1,,AA,N,0 +,PR,CF,DTR2.1,,AA,N,0 +,,AU,DTR2.1,,AA,N,0 +,NIC,AU,DTR2.1,,AA,N,0 +,PR,AU,DTR2.1,,AA,N,0 +,,EV,DTR2.1,,AA,N,0 +,NIC,EV,DTR2.1,,AA,N,0 +,PR,EV,DTR2.1,,AA,N,0 +,,CL,DTR2.1,,AA,C,0 +,NIC,CL,DTR2.1,,AA,C,0 +,PR,CL,DTR2.1,,AA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv new file mode 100644 index 00000000..ee8d6211 --- /dev/null +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv @@ -0,0 +1,14 @@ +@@Main +Month,ReportingNode,Scenario,Year +12,CH,MTUP10pct,2020 +@@APA +AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,PR,CF,DT1.1,,APA,C,320 +,PR,CF,DT1.1,,APA,I,0 +,PR,CF,DT1.1,,APA,N,0 +,PR,CF,DT2.1,,APA,C,320 +,PR,CF,DT2.1,,APA,I,0 +,PR,CF,DT2.1,,APA,N,0 +,PR,CF,DT1.3,,APA,C,400 +,PR,CF,DT1.3,,APA,I,0 +,PR,CF,DT1.3,,APA,N,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv index 97f1efee..2644bcf6 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv @@ -3,67 +3,163 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@BE AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,NIC,BOP,DT1.1,L,BE,N,658.62824 -,PR,BOP,DT1.1,L,BE,N,-798.53673 -,NIC,BOP,DT1.1,C,BE,N,658.62824 -,PR,BOP,DT1.1,C,BE,N,-798.53673 -,NIC,EOP,DT1.1,L,BE,C,329.6431 -,PR,EOP,DT1.1,L,BE,C,-399.63393 -,NIC,EOP,DT1.1,C,BE,C,329.6431 -,PR,EOP,DT1.1,C,BE,C,-399.63393 -,NIC,IA,DT1.1,L,BE,N,1.01487 -,PR,IA,DT1.1,L,BE,N,-1.0972 -,NIC,IA,DT1.1,C,BE,N,1.01487 -,PR,IA,DT1.1,C,BE,N,-1.0972 +,NIC,BOP,DT1.1,L,BE,N,658.6282390585294 +,PR,BOP,DT1.1,L,BE,N,-798.536731161375 +,NIC,BOP,DT1.1,C,BE,N,658.6282390585294 +,PR,BOP,DT1.1,C,BE,N,-798.536731161375 +,NIC,CL,DT1.1,L,BE,C,0 +,PR,CL,DT1.1,L,BE,C,0 +,NIC,CL,DT1.1,C,BE,C,0 +,PR,CL,DT1.1,C,BE,C,0 +,NIC,EA,DT1.1,L,BE,C,0 +,PR,EA,DT1.1,L,BE,C,0 +,NIC,EA,DT1.1,C,BE,C,0 +,PR,EA,DT1.1,C,BE,C,0 +,NIC,AM,DT1.1,L,BE,C,0 +,PR,AM,DT1.1,L,BE,C,0 +,NIC,AM,DT1.1,C,BE,C,0 +,PR,AM,DT1.1,C,BE,C,0 +,NIC,EOP,DT1.1,L,BE,C,329.6431046636596 +,PR,EOP,DT1.1,L,BE,C,-399.63392949885525 +,NIC,EOP,DT1.1,C,BE,C,329.6431046636596 +,PR,EOP,DT1.1,C,BE,C,-399.63392949885525 +,NIC,IA,DT1.1,L,BE,N,1.0148656051304286 +,PR,IA,DT1.1,L,BE,N,-1.0971983374806105 +,NIC,IA,DT1.1,C,BE,N,1.0148656051304286 +,PR,IA,DT1.1,C,BE,N,-1.0971983374806105 ,NIC,CF,DT1.1,L,BE,N,-330 ,PR,CF,DT1.1,L,BE,N,400 ,NIC,CF,DT1.1,C,BE,N,-330 ,PR,CF,DT1.1,C,BE,N,400 -2020,NIC,BOP,DT1.2,L,BE,N,658.62824 -2020,NIC,BOP,DT1.2,C,BE,N,658.62824 -2020,NIC,EOP,DT1.2,L,BE,C,329.6431 -2020,NIC,EOP,DT1.2,C,BE,C,329.6431 -2020,NIC,IA,DT1.2,L,BE,N,1.01487 -2020,NIC,IA,DT1.2,C,BE,N,1.01487 +,NIC,CF,DT1.1,L,BE,C,0 +,PR,CF,DT1.1,L,BE,C,0 +,NIC,CF,DT1.1,C,BE,C,0 +,PR,CF,DT1.1,C,BE,C,0 +,NIC,BOP,DT1.1,L,BE,I,0 +,PR,BOP,DT1.1,L,BE,I,0 +,NIC,BOP,DT1.1,C,BE,I,0 +,PR,BOP,DT1.1,C,BE,I,0 +,NIC,IA,DT1.1,L,BE,I,0 +,PR,IA,DT1.1,L,BE,I,0 +,NIC,IA,DT1.1,C,BE,I,0 +,PR,IA,DT1.1,C,BE,I,0 +2020,NIC,BOP,DT1.2,L,BE,N,658.6282390585294 +2020,NIC,BOP,DT1.2,C,BE,N,658.6282390585294 +2020,NIC,CL,DT1.2,L,BE,C,0 +2020,NIC,CL,DT1.2,C,BE,C,0 +2020,NIC,EA,DT1.2,L,BE,C,0 +2020,NIC,EA,DT1.2,C,BE,C,0 +2020,NIC,AM,DT1.2,L,BE,C,0 +2020,NIC,AM,DT1.2,C,BE,C,0 +2020,NIC,EOP,DT1.2,L,BE,C,329.6431046636596 +2020,NIC,EOP,DT1.2,C,BE,C,329.6431046636596 +2020,NIC,IA,DT1.2,L,BE,N,1.0148656051304286 +2020,NIC,IA,DT1.2,C,BE,N,1.0148656051304286 2020,NIC,CF,DT1.2,L,BE,N,-330 2020,NIC,CF,DT1.2,C,BE,N,-330 -,NIC,BOP,DTR1.1,L,BE,N,-329.31412 -,PR,BOP,DTR1.1,L,BE,N,399.26837 -,CDR,BOP,DTR1.1,L,BE,N,0.52925 -,NIC,BOP,DTR1.1,C,BE,N,-329.31412 -,PR,BOP,DTR1.1,C,BE,N,399.26837 -,CDR,BOP,DTR1.1,C,BE,N,0.52925 -,NIC,EOP,DTR1.1,L,BE,C,-164.82155 -,PR,EOP,DTR1.1,L,BE,C,199.81696 -,CDR,EOP,DTR1.1,L,BE,C,0.1268 -,NIC,EOP,DTR1.1,C,BE,C,-164.82155 -,PR,EOP,DTR1.1,C,BE,C,199.81696 -,CDR,EOP,DTR1.1,C,BE,C,0.1268 -,NIC,IA,DTR1.1,L,BE,N,-0.50743 -,PR,IA,DTR1.1,L,BE,N,0.5486 -,CDR,IA,DTR1.1,L,BE,N,0.00129 -,NIC,IA,DTR1.1,C,BE,N,-0.50743 -,PR,IA,DTR1.1,C,BE,N,0.5486 -,CDR,IA,DTR1.1,C,BE,N,0.00129 +2020,NIC,CF,DT1.2,L,BE,C,0 +2020,NIC,CF,DT1.2,C,BE,C,0 +2020,NIC,BOP,DT1.2,L,BE,I,0 +2020,NIC,BOP,DT1.2,C,BE,I,0 +2020,NIC,IA,DT1.2,L,BE,I,0 +2020,NIC,IA,DT1.2,C,BE,I,0 +,NIC,BOP,DTR1.1,L,BE,N,-329.3141195292647 +,PR,BOP,DTR1.1,L,BE,N,399.2683655806875 +,CDR,BOP,DTR1.1,L,BE,N,0.5292475300191577 +,NIC,BOP,DTR1.1,C,BE,N,-329.3141195292647 +,PR,BOP,DTR1.1,C,BE,N,399.2683655806875 +,CDR,BOP,DTR1.1,C,BE,N,0.5292475300191577 +,NIC,CL,DTR1.1,L,BE,C,0 +,PR,CL,DTR1.1,L,BE,C,0 +,CDR,CL,DTR1.1,L,BE,C,0 +,NIC,CL,DTR1.1,C,BE,C,0 +,PR,CL,DTR1.1,C,BE,C,0 +,CDR,CL,DTR1.1,C,BE,C,0 +,NIC,EA,DTR1.1,L,BE,C,0 +,PR,EA,DTR1.1,L,BE,C,0 +,CDR,EA,DTR1.1,L,BE,C,0 +,NIC,EA,DTR1.1,C,BE,C,0 +,PR,EA,DTR1.1,C,BE,C,0 +,CDR,EA,DTR1.1,C,BE,C,0 +,NIC,AM,DTR1.1,L,BE,C,0 +,PR,AM,DTR1.1,L,BE,C,0 +,CDR,AM,DTR1.1,L,BE,C,0 +,NIC,AM,DTR1.1,C,BE,C,0 +,PR,AM,DTR1.1,C,BE,C,0 +,CDR,AM,DTR1.1,C,BE,C,0 +,NIC,EOP,DTR1.1,L,BE,C,-164.8215523318298 +,PR,EOP,DTR1.1,L,BE,C,199.81696474942763 +,CDR,EOP,DTR1.1,L,BE,C,0.12679876434718015 +,NIC,EOP,DTR1.1,C,BE,C,-164.8215523318298 +,PR,EOP,DTR1.1,C,BE,C,199.81696474942763 +,CDR,EOP,DTR1.1,C,BE,C,0.12679876434718015 +,NIC,IA,DTR1.1,L,BE,N,-0.5074328025652143 +,PR,IA,DTR1.1,L,BE,N,0.5485991687403052 +,CDR,IA,DTR1.1,L,BE,N,0.001287210150087148 +,NIC,IA,DTR1.1,C,BE,N,-0.5074328025652143 +,PR,IA,DTR1.1,C,BE,N,0.5485991687403052 +,CDR,IA,DTR1.1,C,BE,N,0.001287210150087148 ,NIC,CF,DTR1.1,L,BE,N,165 ,PR,CF,DTR1.1,L,BE,N,-200 -,CDR,CF,DTR1.1,L,BE,N,-0.40374 +,CDR,CF,DTR1.1,L,BE,N,-0.40373597582193455 ,NIC,CF,DTR1.1,C,BE,N,165 ,PR,CF,DTR1.1,C,BE,N,-200 -,CDR,CF,DTR1.1,C,BE,N,-0.40374 -2020,NIC,BOP,DTR1.2,L,BE,N,-329.31412 -2020,CDR,BOP,DTR1.2,L,BE,N,0.52925 -2020,NIC,BOP,DTR1.2,C,BE,N,-329.31412 -2020,CDR,BOP,DTR1.2,C,BE,N,0.52925 -2020,NIC,EOP,DTR1.2,L,BE,C,-164.82155 -2020,CDR,EOP,DTR1.2,L,BE,C,0.1268 -2020,NIC,EOP,DTR1.2,C,BE,C,-164.82155 -2020,CDR,EOP,DTR1.2,C,BE,C,0.1268 -2020,NIC,IA,DTR1.2,L,BE,N,-0.50743 -2020,CDR,IA,DTR1.2,L,BE,N,0.00129 -2020,NIC,IA,DTR1.2,C,BE,N,-0.50743 -2020,CDR,IA,DTR1.2,C,BE,N,0.00129 +,CDR,CF,DTR1.1,C,BE,N,-0.40373597582193455 +,NIC,CF,DTR1.1,L,BE,C,0 +,PR,CF,DTR1.1,L,BE,C,0 +,CDR,CF,DTR1.1,L,BE,C,0 +,NIC,CF,DTR1.1,C,BE,C,0 +,PR,CF,DTR1.1,C,BE,C,0 +,CDR,CF,DTR1.1,C,BE,C,0 +,NIC,BOP,DTR1.1,L,BE,I,0 +,PR,BOP,DTR1.1,L,BE,I,0 +,CDR,BOP,DTR1.1,L,BE,I,0 +,NIC,BOP,DTR1.1,C,BE,I,0 +,PR,BOP,DTR1.1,C,BE,I,0 +,CDR,BOP,DTR1.1,C,BE,I,0 +,NIC,IA,DTR1.1,L,BE,I,0 +,PR,IA,DTR1.1,L,BE,I,0 +,CDR,IA,DTR1.1,L,BE,I,0 +,NIC,IA,DTR1.1,C,BE,I,0 +,PR,IA,DTR1.1,C,BE,I,0 +,CDR,IA,DTR1.1,C,BE,I,0 +2020,NIC,BOP,DTR1.2,L,BE,N,-329.3141195292647 +2020,CDR,BOP,DTR1.2,L,BE,N,0.5292475300191577 +2020,NIC,BOP,DTR1.2,C,BE,N,-329.3141195292647 +2020,CDR,BOP,DTR1.2,C,BE,N,0.5292475300191577 +2020,NIC,CL,DTR1.2,L,BE,C,0 +2020,CDR,CL,DTR1.2,L,BE,C,0 +2020,NIC,CL,DTR1.2,C,BE,C,0 +2020,CDR,CL,DTR1.2,C,BE,C,0 +2020,NIC,EA,DTR1.2,L,BE,C,0 +2020,CDR,EA,DTR1.2,L,BE,C,0 +2020,NIC,EA,DTR1.2,C,BE,C,0 +2020,CDR,EA,DTR1.2,C,BE,C,0 +2020,NIC,AM,DTR1.2,L,BE,C,0 +2020,CDR,AM,DTR1.2,L,BE,C,0 +2020,NIC,AM,DTR1.2,C,BE,C,0 +2020,CDR,AM,DTR1.2,C,BE,C,0 +2020,NIC,EOP,DTR1.2,L,BE,C,-164.8215523318298 +2020,CDR,EOP,DTR1.2,L,BE,C,0.12679876434718015 +2020,NIC,EOP,DTR1.2,C,BE,C,-164.8215523318298 +2020,CDR,EOP,DTR1.2,C,BE,C,0.12679876434718015 +2020,NIC,IA,DTR1.2,L,BE,N,-0.5074328025652143 +2020,CDR,IA,DTR1.2,L,BE,N,0.001287210150087148 +2020,NIC,IA,DTR1.2,C,BE,N,-0.5074328025652143 +2020,CDR,IA,DTR1.2,C,BE,N,0.001287210150087148 2020,NIC,CF,DTR1.2,L,BE,N,165 -2020,CDR,CF,DTR1.2,L,BE,N,-0.40374 +2020,CDR,CF,DTR1.2,L,BE,N,-0.40373597582193455 2020,NIC,CF,DTR1.2,C,BE,N,165 -2020,CDR,CF,DTR1.2,C,BE,N,-0.40374 \ No newline at end of file +2020,CDR,CF,DTR1.2,C,BE,N,-0.40373597582193455 +2020,NIC,CF,DTR1.2,L,BE,C,0 +2020,CDR,CF,DTR1.2,L,BE,C,0 +2020,NIC,CF,DTR1.2,C,BE,C,0 +2020,CDR,CF,DTR1.2,C,BE,C,0 +2020,NIC,BOP,DTR1.2,L,BE,I,0 +2020,CDR,BOP,DTR1.2,L,BE,I,0 +2020,NIC,BOP,DTR1.2,C,BE,I,0 +2020,CDR,BOP,DTR1.2,C,BE,I,0 +2020,NIC,IA,DTR1.2,L,BE,I,0 +2020,CDR,IA,DTR1.2,L,BE,I,0 +2020,NIC,IA,DTR1.2,C,BE,I,0 +2020,CDR,IA,DTR1.2,C,BE,I,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv index 4674e6db..efb379d0 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv @@ -3,4 +3,5 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@BEPA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,PR,CF,DT1.1,L,BEPA,N,320 \ No newline at end of file +,PR,CF,DT1.1,L,BEPA,N,320 +,PR,CF,DT1.1,L,BEPA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv index c57d6d4b..e345e5fc 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv @@ -3,20 +3,98 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@C AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,EA,DT2.1,,C,C,-139.99082 -,,EA,DT1.1,,C,C,-80.02327 -,,BOP,DT1.1,,C,N,80.0332 -,,IA,DT1.1,,C,N,-0.00993 -,,BOP,DT2.1,,C,N,139.90849 -,,IA,DT2.1,,C,N,0.08233 -,,EA,DT1.3,,C,C,-139.99082 -,,BOP,DT1.3,,C,N,139.90849 -,,IA,DT1.3,,C,N,0.08233 -,,AM,DTR1.1,,C,C,26.60498 -,,EOP,DTR1.1,,C,C,-13.93719 -,,BOP,DTR1.1,,C,N,-40.54585 -,,IA,DTR1.1,,C,N,0.00368 -,,AM,DTR2.1,,C,C,46.24958 -,,EOP,DTR2.1,,C,C,-24.22813 -,,BOP,DTR2.1,,C,N,-70.43538 -,,IA,DTR2.1,,C,N,-0.04234 \ No newline at end of file +,,CF,DT1.1,,C,C,-0 +,,BOP,DT1.1,,C,I,-0 +,,EA,DT1.1,,C,C,-15 +,,AM,DT1.1,,C,C,-42.67021114446643 +,,EOP,DT1.1,,C,C,22.35305872130572 +,,BOP,DT1.1,,C,N,80.03319764297927 +,,IA,DT1.1,,C,N,-0.009927777207129784 +,,MC,DT1.1,,C,I,-0 +,,RCU,DT1.1,,C,I,-0 +,,CF,DT1.1,,C,I,-0 +,,IA,DT1.1,,C,I,-0 +,,AU,DT1.1,,C,I,-0 +,,YCU,DT1.1,,C,I,-0 +,,CRU,DT1.1,,C,I,-0 +,,EV,DT1.1,,C,I,-0 +,,CF,DT1.1,,C,N,-0 +,,AU,DT1.1,,C,N,-0 +,,EV,DT1.1,,C,N,-0 +,,CL,DT1.1,,C,C,-0 +,,CF,DT2.1,,C,C,-0 +,,EA,DT2.1,,C,C,-15 +,,AM,DT2.1,,C,C,-82.02271122089925 +,,EOP,DT2.1,,C,C,42.9681136142967 +,,BOP,DT2.1,,C,N,139.90849210284577 +,,IA,DT2.1,,C,N,0.08233273235018213 +,,BOP,DT2.1,,C,I,-0 +,,MC,DT2.1,,C,I,-0 +,,RCU,DT2.1,,C,I,-0 +,,CF,DT2.1,,C,I,-0 +,,IA,DT2.1,,C,I,-0 +,,AU,DT2.1,,C,I,-0 +,,YCU,DT2.1,,C,I,-0 +,,CRU,DT2.1,,C,I,-0 +,,EV,DT2.1,,C,I,-0 +,,CF,DT2.1,,C,N,-0 +,,AU,DT2.1,,C,N,-0 +,,EV,DT2.1,,C,N,-0 +,,CL,DT2.1,,C,C,-0 +,,CF,DT1.3,,C,C,-0 +,,EA,DT1.3,,C,C,-15 +,,AM,DT1.3,,C,C,-82.02271122089925 +,,EOP,DT1.3,,C,C,42.9681136142967 +,,BOP,DT1.3,,C,N,139.90849210284577 +,,IA,DT1.3,,C,N,0.08233273235018213 +,,BOP,DT1.3,,C,I,-0 +,,MC,DT1.3,,C,I,-0 +,,RCU,DT1.3,,C,I,-0 +,,CF,DT1.3,,C,I,-0 +,,IA,DT1.3,,C,I,-0 +,,AU,DT1.3,,C,I,-0 +,,YCU,DT1.3,,C,I,-0 +,,CRU,DT1.3,,C,I,-0 +,,EV,DT1.3,,C,I,-0 +,,CF,DT1.3,,C,N,-0 +,,AU,DT1.3,,C,N,-0 +,,EV,DT1.3,,C,N,-0 +,,CL,DT1.3,,C,C,-0 +,,CF,DTR1.1,,C,C,-0 +,,BOP,DTR1.1,,C,I,-0 +,,IA,DTR1.1,,C,N,0.003676678453477744 +,,BOP,DTR1.1,,C,N,-40.5458463515088 +,,EOP,DTR1.1,,C,C,-13.93718742938804 +,,AM,DTR1.1,,C,C,26.60498224366728 +,,EA,DTR1.1,,C,C,-0 +,,MC,DTR1.1,,C,I,-0 +,,RCU,DTR1.1,,C,I,-0 +,,CF,DTR1.1,,C,I,-0 +,,IA,DTR1.1,,C,I,-0 +,,AU,DTR1.1,,C,I,-0 +,,YCU,DTR1.1,,C,I,-0 +,,CRU,DTR1.1,,C,I,-0 +,,EV,DTR1.1,,C,I,-0 +,,CF,DTR1.1,,C,N,-0 +,,AU,DTR1.1,,C,N,-0 +,,EV,DTR1.1,,C,N,-0 +,,CL,DTR1.1,,C,C,-0 +,,IA,DTR2.1,,C,N,-0.04233655722058882 +,,BOP,DTR2.1,,C,N,-70.43538016962212 +,,EOP,DTR2.1,,C,C,-24.22813469379126 +,,AM,DTR2.1,,C,C,46.24958203305145 +,,CF,DTR2.1,,C,C,-0 +,,EA,DTR2.1,,C,C,-0 +,,BOP,DTR2.1,,C,I,-0 +,,MC,DTR2.1,,C,I,-0 +,,RCU,DTR2.1,,C,I,-0 +,,CF,DTR2.1,,C,I,-0 +,,IA,DTR2.1,,C,I,-0 +,,AU,DTR2.1,,C,I,-0 +,,YCU,DTR2.1,,C,I,-0 +,,CRU,DTR2.1,,C,I,-0 +,,EV,DTR2.1,,C,I,-0 +,,CF,DTR2.1,,C,N,-0 +,,AU,DTR2.1,,C,N,-0 +,,EV,DTR2.1,,C,N,-0 +,,CL,DTR2.1,,C,C,-0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv new file mode 100644 index 00000000..50a4dd69 --- /dev/null +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv @@ -0,0 +1,157 @@ +@@Main +Month,ReportingNode,Scenario,Year +12,CH,MTUP10pct,2020 +@@DA +AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,,CF,DT1.1,,DA,C,-15 +,,BOP,DT1.1,,DA,I,0 +,,EA,DT1.1,,DA,C,0 +,,AM,DT1.1,,DA,C,9.843447868559382 +,,EOP,DT1.1,,DA,C,-5.156552131440618 +,,BOP,DT1.1,,DA,N,0 +,,IA,DT1.1,,DA,N,0 +,,MC,DT1.1,,DA,I,0 +,,RCU,DT1.1,,DA,I,0 +,,CF,DT1.1,,DA,I,0 +,,IA,DT1.1,,DA,I,0 +,,AU,DT1.1,,DA,I,0 +,,YCU,DT1.1,,DA,I,0 +,,CRU,DT1.1,,DA,I,0 +,,EV,DT1.1,,DA,I,0 +,,CF,DT1.1,,DA,N,0 +,,AU,DT1.1,,DA,N,0 +,,EV,DT1.1,,DA,N,0 +,,CL,DT1.1,,DA,C,0 +,,CF,DT1.2,,DA,C,0 +,,BOP,DT1.2,,DA,I,0 +,,EA,DT1.2,,DA,C,0 +,,AM,DT1.2,,DA,C,-0 +,,EOP,DT1.2,,DA,C,0 +,,MC,DT1.2,,DA,I,0 +,,RCU,DT1.2,,DA,I,0 +,,CF,DT1.2,,DA,I,0 +,,IA,DT1.2,,DA,I,0 +,,AU,DT1.2,,DA,I,0 +,,YCU,DT1.2,,DA,I,0 +,,CRU,DT1.2,,DA,I,0 +,,EV,DT1.2,,DA,I,0 +,,BOP,DT1.2,,DA,N,0 +,,CF,DT1.2,,DA,N,0 +,,IA,DT1.2,,DA,N,0 +,,AU,DT1.2,,DA,N,0 +,,EV,DT1.2,,DA,N,0 +,,CL,DT1.2,,DA,C,0 +,,CF,DT2.1,,DA,C,-15 +,,EA,DT2.1,,DA,C,0 +,,AM,DT2.1,,DA,C,9.843447868559382 +,,EOP,DT2.1,,DA,C,-5.156552131440618 +,,BOP,DT2.1,,DA,N,0 +,,IA,DT2.1,,DA,N,0 +,,BOP,DT2.1,,DA,I,0 +,,MC,DT2.1,,DA,I,0 +,,RCU,DT2.1,,DA,I,0 +,,CF,DT2.1,,DA,I,0 +,,IA,DT2.1,,DA,I,0 +,,AU,DT2.1,,DA,I,0 +,,YCU,DT2.1,,DA,I,0 +,,CRU,DT2.1,,DA,I,0 +,,EV,DT2.1,,DA,I,0 +,,CF,DT2.1,,DA,N,0 +,,AU,DT2.1,,DA,N,0 +,,EV,DT2.1,,DA,N,0 +,,CL,DT2.1,,DA,C,0 +,,CF,DT1.3,,DA,C,-15 +,,EA,DT1.3,,DA,C,0 +,,AM,DT1.3,,DA,C,9.843447868559382 +,,EOP,DT1.3,,DA,C,-5.156552131440618 +,,BOP,DT1.3,,DA,N,0 +,,IA,DT1.3,,DA,N,0 +,,BOP,DT1.3,,DA,I,0 +,,MC,DT1.3,,DA,I,0 +,,RCU,DT1.3,,DA,I,0 +,,CF,DT1.3,,DA,I,0 +,,IA,DT1.3,,DA,I,0 +,,AU,DT1.3,,DA,I,0 +,,YCU,DT1.3,,DA,I,0 +,,CRU,DT1.3,,DA,I,0 +,,EV,DT1.3,,DA,I,0 +,,CF,DT1.3,,DA,N,0 +,,AU,DT1.3,,DA,N,0 +,,EV,DT1.3,,DA,N,0 +,,CL,DT1.3,,DA,C,0 +,,CF,DT2.2,,DA,C,0 +,,EA,DT2.2,,DA,C,0 +,,AM,DT2.2,,DA,C,-0 +,,EOP,DT2.2,,DA,C,0 +,,BOP,DT2.2,,DA,I,0 +,,MC,DT2.2,,DA,I,0 +,,RCU,DT2.2,,DA,I,0 +,,CF,DT2.2,,DA,I,0 +,,IA,DT2.2,,DA,I,0 +,,AU,DT2.2,,DA,I,0 +,,YCU,DT2.2,,DA,I,0 +,,CRU,DT2.2,,DA,I,0 +,,EV,DT2.2,,DA,I,0 +,,BOP,DT2.2,,DA,N,0 +,,CF,DT2.2,,DA,N,0 +,,IA,DT2.2,,DA,N,0 +,,AU,DT2.2,,DA,N,0 +,,EV,DT2.2,,DA,N,0 +,,CL,DT2.2,,DA,C,0 +,,CF,DTR1.1,,DA,C,0 +,,BOP,DTR1.1,,DA,I,0 +,,IA,DTR1.1,,DA,N,0 +,,BOP,DTR1.1,,DA,N,0 +,,EOP,DTR1.1,,DA,C,0 +,,AM,DTR1.1,,DA,C,-0 +,,EA,DTR1.1,,DA,C,0 +,,MC,DTR1.1,,DA,I,0 +,,RCU,DTR1.1,,DA,I,0 +,,CF,DTR1.1,,DA,I,0 +,,IA,DTR1.1,,DA,I,0 +,,AU,DTR1.1,,DA,I,0 +,,YCU,DTR1.1,,DA,I,0 +,,CRU,DTR1.1,,DA,I,0 +,,EV,DTR1.1,,DA,I,0 +,,CF,DTR1.1,,DA,N,0 +,,AU,DTR1.1,,DA,N,0 +,,EV,DTR1.1,,DA,N,0 +,,CL,DTR1.1,,DA,C,0 +,,CF,DTR1.2,,DA,C,0 +,,BOP,DTR1.2,,DA,I,0 +,,EA,DTR1.2,,DA,C,0 +,,AM,DTR1.2,,DA,C,-0 +,,EOP,DTR1.2,,DA,C,0 +,,MC,DTR1.2,,DA,I,0 +,,RCU,DTR1.2,,DA,I,0 +,,CF,DTR1.2,,DA,I,0 +,,IA,DTR1.2,,DA,I,0 +,,AU,DTR1.2,,DA,I,0 +,,YCU,DTR1.2,,DA,I,0 +,,CRU,DTR1.2,,DA,I,0 +,,EV,DTR1.2,,DA,I,0 +,,BOP,DTR1.2,,DA,N,0 +,,CF,DTR1.2,,DA,N,0 +,,IA,DTR1.2,,DA,N,0 +,,AU,DTR1.2,,DA,N,0 +,,EV,DTR1.2,,DA,N,0 +,,CL,DTR1.2,,DA,C,0 +,,IA,DTR2.1,,DA,N,0 +,,BOP,DTR2.1,,DA,N,0 +,,EOP,DTR2.1,,DA,C,0 +,,AM,DTR2.1,,DA,C,-0 +,,CF,DTR2.1,,DA,C,0 +,,EA,DTR2.1,,DA,C,0 +,,BOP,DTR2.1,,DA,I,0 +,,MC,DTR2.1,,DA,I,0 +,,RCU,DTR2.1,,DA,I,0 +,,CF,DTR2.1,,DA,I,0 +,,IA,DTR2.1,,DA,I,0 +,,AU,DTR2.1,,DA,I,0 +,,YCU,DTR2.1,,DA,I,0 +,,CRU,DTR2.1,,DA,I,0 +,,EV,DTR2.1,,DA,I,0 +,,CF,DTR2.1,,DA,N,0 +,,AU,DTR2.1,,DA,N,0 +,,EV,DTR2.1,,DA,N,0 +,,CL,DTR2.1,,DA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv index 20a47c21..a3a224c1 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv @@ -3,7 +3,7 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@F AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,AM,DT1.1,L,F,C,0.65623 +,,AM,DT1.1,L,F,C,0.6562298579039588 ,,AM,DT1.2,L,F,C,1 -,,AM,DTR1.1,L,F,C,0.65623 +,,AM,DTR1.1,L,F,C,0.6562298579039588 ,,AM,DTR1.2,L,F,C,1 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv index c38e0f99..30e198ae 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv @@ -3,12 +3,60 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@L AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,AM,DT2.1,,L,C,-118.1274 -,,EA,DT2.1,,L,C,180.00918 -,,EA,DT1.1,,L,C,239.97673 -,,AM,DT1.1,,L,C,-157.4799 -,,EOP,DT1.1,,L,C,82.49683 -,,EOP,DT2.1,,L,C,61.88178 -,,EA,DT1.3,,L,C,260.00918 -,,AM,DT1.3,,L,C,-170.62578 -,,EOP,DT1.3,,L,C,89.38339 \ No newline at end of file +,,CF,DT1.1,,L,C,0 +,,BOP,DT1.1,,L,I,0 +,,EA,DT1.1,,L,C,0 +,,AM,DT1.1,,L,C,0 +,,EOP,DT1.1,,L,C,0 +,,BOP,DT1.1,,L,N,0 +,,IA,DT1.1,,L,N,0 +,,MC,DT1.1,,L,I,0 +,,RCU,DT1.1,,L,I,0 +,,CF,DT1.1,,L,I,0 +,,IA,DT1.1,,L,I,0 +,,AU,DT1.1,,L,I,0 +,,YCU,DT1.1,,L,I,0 +,,CRU,DT1.1,,L,I,0 +,,EV,DT1.1,,L,I,0 +,,CF,DT1.1,,L,N,0 +,,AU,DT1.1,,L,N,0 +,,EV,DT1.1,,L,N,0 +,,CL,DT1.1,,L,C,0 +,,CF,DT2.1,,L,C,0 +,,EA,DT2.1,,L,C,0 +,,AM,DT2.1,,L,C,0 +,,EOP,DT2.1,,L,C,0 +,,BOP,DT2.1,,L,N,0 +,,IA,DT2.1,,L,N,0 +,,BOP,DT2.1,,L,I,0 +,,MC,DT2.1,,L,I,0 +,,RCU,DT2.1,,L,I,0 +,,CF,DT2.1,,L,I,0 +,,IA,DT2.1,,L,I,0 +,,AU,DT2.1,,L,I,0 +,,YCU,DT2.1,,L,I,0 +,,CRU,DT2.1,,L,I,0 +,,EV,DT2.1,,L,I,0 +,,CF,DT2.1,,L,N,0 +,,AU,DT2.1,,L,N,0 +,,EV,DT2.1,,L,N,0 +,,CL,DT2.1,,L,C,0 +,,CF,DT1.3,,L,C,0 +,,EA,DT1.3,,L,C,0 +,,AM,DT1.3,,L,C,0 +,,EOP,DT1.3,,L,C,0 +,,BOP,DT1.3,,L,N,0 +,,IA,DT1.3,,L,N,0 +,,BOP,DT1.3,,L,I,0 +,,MC,DT1.3,,L,I,0 +,,RCU,DT1.3,,L,I,0 +,,CF,DT1.3,,L,I,0 +,,IA,DT1.3,,L,I,0 +,,AU,DT1.3,,L,I,0 +,,YCU,DT1.3,,L,I,0 +,,CRU,DT1.3,,L,I,0 +,,EV,DT1.3,,L,I,0 +,,CF,DT1.3,,L,N,0 +,,AU,DT1.3,,L,N,0 +,,EV,DT1.3,,L,N,0 +,,CL,DT1.3,,L,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv new file mode 100644 index 00000000..2f535c69 --- /dev/null +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv @@ -0,0 +1,43 @@ +@@Main +Month,ReportingNode,Scenario,Year +12,CH,MTUP10pct,2020 +@@LR +AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,,CF,DTR1.1,,LR,C,0 +,,BOP,DTR1.1,,LR,I,0 +,,IA,DTR1.1,,LR,N,0 +,,BOP,DTR1.1,,LR,N,0 +,,EOP,DTR1.1,,LR,C,0 +,,AM,DTR1.1,,LR,C,0 +,,EA,DTR1.1,,LR,C,0 +,,MC,DTR1.1,,LR,I,0 +,,RCU,DTR1.1,,LR,I,0 +,,CF,DTR1.1,,LR,I,0 +,,IA,DTR1.1,,LR,I,0 +,,AU,DTR1.1,,LR,I,0 +,,YCU,DTR1.1,,LR,I,0 +,,CRU,DTR1.1,,LR,I,0 +,,EV,DTR1.1,,LR,I,0 +,,CF,DTR1.1,,LR,N,0 +,,AU,DTR1.1,,LR,N,0 +,,EV,DTR1.1,,LR,N,0 +,,CL,DTR1.1,,LR,C,0 +,,IA,DTR2.1,,LR,N,0 +,,BOP,DTR2.1,,LR,N,0 +,,EOP,DTR2.1,,LR,C,0 +,,AM,DTR2.1,,LR,C,0 +,,CF,DTR2.1,,LR,C,0 +,,EA,DTR2.1,,LR,C,0 +,,BOP,DTR2.1,,LR,I,0 +,,MC,DTR2.1,,LR,I,0 +,,RCU,DTR2.1,,LR,I,0 +,,CF,DTR2.1,,LR,I,0 +,,IA,DTR2.1,,LR,I,0 +,,AU,DTR2.1,,LR,I,0 +,,YCU,DTR2.1,,LR,I,0 +,,CRU,DTR2.1,,LR,I,0 +,,EV,DTR2.1,,LR,I,0 +,,CF,DTR2.1,,LR,N,0 +,,AU,DTR2.1,,LR,N,0 +,,EV,DTR2.1,,LR,N,0 +,,CL,DTR2.1,,LR,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv new file mode 100644 index 00000000..9c632822 --- /dev/null +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv @@ -0,0 +1,632 @@ +@@Main +Month,ReportingNode,Scenario,Year +12,CH,MTUP10pct,2020 +@@OA +AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,,CF,DT1.1,,OA,C,0 +,NIC,CF,DT1.1,,OA,C,0 +,AEA,CF,DT1.1,,OA,C,0 +,ACA,CF,DT1.1,,OA,C,0 +,PR,CF,DT1.1,,OA,C,0 +,,BOP,DT1.1,,OA,I,0 +,NIC,BOP,DT1.1,,OA,I,0 +,AEA,BOP,DT1.1,,OA,I,0 +,ACA,BOP,DT1.1,,OA,I,0 +,PR,BOP,DT1.1,,OA,I,0 +,,EA,DT1.1,,OA,C,0 +,NIC,EA,DT1.1,,OA,C,0 +,AEA,EA,DT1.1,,OA,C,0 +,ACA,EA,DT1.1,,OA,C,0 +,PR,EA,DT1.1,,OA,C,0 +,,AM,DT1.1,,OA,C,0 +,NIC,AM,DT1.1,,OA,C,0 +,AEA,AM,DT1.1,,OA,C,0 +,ACA,AM,DT1.1,,OA,C,0 +,PR,AM,DT1.1,,OA,C,0 +,,EOP,DT1.1,,OA,C,0 +,NIC,EOP,DT1.1,,OA,C,0 +,AEA,EOP,DT1.1,,OA,C,0 +,ACA,EOP,DT1.1,,OA,C,0 +,PR,EOP,DT1.1,,OA,C,0 +,,BOP,DT1.1,,OA,N,0 +,NIC,BOP,DT1.1,,OA,N,0 +,AEA,BOP,DT1.1,,OA,N,0 +,ACA,BOP,DT1.1,,OA,N,0 +,PR,BOP,DT1.1,,OA,N,0 +,,IA,DT1.1,,OA,N,0 +,NIC,IA,DT1.1,,OA,N,0 +,AEA,IA,DT1.1,,OA,N,0 +,ACA,IA,DT1.1,,OA,N,0 +,PR,IA,DT1.1,,OA,N,0 +,,MC,DT1.1,,OA,I,0 +,NIC,MC,DT1.1,,OA,I,0 +,AEA,MC,DT1.1,,OA,I,0 +,ACA,MC,DT1.1,,OA,I,0 +,PR,MC,DT1.1,,OA,I,0 +,,RCU,DT1.1,,OA,I,0 +,NIC,RCU,DT1.1,,OA,I,0 +,AEA,RCU,DT1.1,,OA,I,0 +,ACA,RCU,DT1.1,,OA,I,0 +,PR,RCU,DT1.1,,OA,I,0 +,,CF,DT1.1,,OA,I,0 +,NIC,CF,DT1.1,,OA,I,0 +,AEA,CF,DT1.1,,OA,I,0 +,ACA,CF,DT1.1,,OA,I,0 +,PR,CF,DT1.1,,OA,I,0 +,,IA,DT1.1,,OA,I,0 +,NIC,IA,DT1.1,,OA,I,0 +,AEA,IA,DT1.1,,OA,I,0 +,ACA,IA,DT1.1,,OA,I,0 +,PR,IA,DT1.1,,OA,I,0 +,,AU,DT1.1,,OA,I,0 +,NIC,AU,DT1.1,,OA,I,0 +,AEA,AU,DT1.1,,OA,I,0 +,ACA,AU,DT1.1,,OA,I,0 +,PR,AU,DT1.1,,OA,I,0 +,,YCU,DT1.1,,OA,I,0 +,NIC,YCU,DT1.1,,OA,I,0 +,AEA,YCU,DT1.1,,OA,I,0 +,ACA,YCU,DT1.1,,OA,I,0 +,PR,YCU,DT1.1,,OA,I,0 +,,CRU,DT1.1,,OA,I,0 +,NIC,CRU,DT1.1,,OA,I,0 +,AEA,CRU,DT1.1,,OA,I,0 +,ACA,CRU,DT1.1,,OA,I,0 +,PR,CRU,DT1.1,,OA,I,0 +,,EV,DT1.1,,OA,I,0 +,NIC,EV,DT1.1,,OA,I,0 +,AEA,EV,DT1.1,,OA,I,0 +,ACA,EV,DT1.1,,OA,I,0 +,PR,EV,DT1.1,,OA,I,0 +,,CF,DT1.1,,OA,N,0 +,NIC,CF,DT1.1,,OA,N,0 +,AEA,CF,DT1.1,,OA,N,0 +,ACA,CF,DT1.1,,OA,N,0 +,PR,CF,DT1.1,,OA,N,0 +,,AU,DT1.1,,OA,N,0 +,NIC,AU,DT1.1,,OA,N,0 +,AEA,AU,DT1.1,,OA,N,0 +,ACA,AU,DT1.1,,OA,N,0 +,PR,AU,DT1.1,,OA,N,0 +,,EV,DT1.1,,OA,N,0 +,NIC,EV,DT1.1,,OA,N,0 +,AEA,EV,DT1.1,,OA,N,0 +,ACA,EV,DT1.1,,OA,N,0 +,PR,EV,DT1.1,,OA,N,0 +,,CL,DT1.1,,OA,C,0 +,NIC,CL,DT1.1,,OA,C,0 +,AEA,CL,DT1.1,,OA,C,0 +,ACA,CL,DT1.1,,OA,C,0 +,PR,CL,DT1.1,,OA,C,0 +2020,NIC,CF,DT1.2,,OA,C,0 +,NIC,CF,DT1.2,,OA,C,0 +2020,,CF,DT1.2,,OA,C,0 +,,CF,DT1.2,,OA,C,0 +2020,NIC,BOP,DT1.2,,OA,I,0 +,NIC,BOP,DT1.2,,OA,I,0 +2020,,BOP,DT1.2,,OA,I,0 +,,BOP,DT1.2,,OA,I,0 +2020,NIC,EA,DT1.2,,OA,C,0 +,NIC,EA,DT1.2,,OA,C,0 +2020,,EA,DT1.2,,OA,C,0 +,,EA,DT1.2,,OA,C,0 +2020,NIC,AM,DT1.2,,OA,C,0 +,NIC,AM,DT1.2,,OA,C,0 +2020,,AM,DT1.2,,OA,C,0 +,,AM,DT1.2,,OA,C,0 +2020,NIC,EOP,DT1.2,,OA,C,0 +,NIC,EOP,DT1.2,,OA,C,0 +2020,,EOP,DT1.2,,OA,C,0 +,,EOP,DT1.2,,OA,C,0 +2020,NIC,MC,DT1.2,,OA,I,0 +,NIC,MC,DT1.2,,OA,I,0 +2020,,MC,DT1.2,,OA,I,0 +,,MC,DT1.2,,OA,I,0 +2020,NIC,RCU,DT1.2,,OA,I,0 +,NIC,RCU,DT1.2,,OA,I,0 +2020,,RCU,DT1.2,,OA,I,0 +,,RCU,DT1.2,,OA,I,0 +2020,NIC,CF,DT1.2,,OA,I,0 +,NIC,CF,DT1.2,,OA,I,0 +2020,,CF,DT1.2,,OA,I,0 +,,CF,DT1.2,,OA,I,0 +2020,NIC,IA,DT1.2,,OA,I,0 +,NIC,IA,DT1.2,,OA,I,0 +2020,,IA,DT1.2,,OA,I,0 +,,IA,DT1.2,,OA,I,0 +2020,NIC,AU,DT1.2,,OA,I,0 +,NIC,AU,DT1.2,,OA,I,0 +2020,,AU,DT1.2,,OA,I,0 +,,AU,DT1.2,,OA,I,0 +2020,NIC,YCU,DT1.2,,OA,I,0 +,NIC,YCU,DT1.2,,OA,I,0 +2020,,YCU,DT1.2,,OA,I,0 +,,YCU,DT1.2,,OA,I,0 +2020,NIC,CRU,DT1.2,,OA,I,0 +,NIC,CRU,DT1.2,,OA,I,0 +2020,,CRU,DT1.2,,OA,I,0 +,,CRU,DT1.2,,OA,I,0 +2020,NIC,EV,DT1.2,,OA,I,0 +,NIC,EV,DT1.2,,OA,I,0 +2020,,EV,DT1.2,,OA,I,0 +,,EV,DT1.2,,OA,I,0 +2020,NIC,BOP,DT1.2,,OA,N,0 +,NIC,BOP,DT1.2,,OA,N,0 +2020,,BOP,DT1.2,,OA,N,0 +,,BOP,DT1.2,,OA,N,0 +2020,NIC,CF,DT1.2,,OA,N,0 +,NIC,CF,DT1.2,,OA,N,0 +2020,,CF,DT1.2,,OA,N,0 +,,CF,DT1.2,,OA,N,0 +2020,NIC,IA,DT1.2,,OA,N,0 +,NIC,IA,DT1.2,,OA,N,0 +2020,,IA,DT1.2,,OA,N,0 +,,IA,DT1.2,,OA,N,0 +2020,NIC,AU,DT1.2,,OA,N,0 +,NIC,AU,DT1.2,,OA,N,0 +2020,,AU,DT1.2,,OA,N,0 +,,AU,DT1.2,,OA,N,0 +2020,NIC,EV,DT1.2,,OA,N,0 +,NIC,EV,DT1.2,,OA,N,0 +2020,,EV,DT1.2,,OA,N,0 +,,EV,DT1.2,,OA,N,0 +2020,NIC,CL,DT1.2,,OA,C,0 +,NIC,CL,DT1.2,,OA,C,0 +2020,,CL,DT1.2,,OA,C,0 +,,CL,DT1.2,,OA,C,0 +,NIC,CF,DT2.1,,OA,C,0 +,PR,CF,DT2.1,,OA,C,0 +,ACA,CF,DT2.1,,OA,C,0 +,AEA,CF,DT2.1,,OA,C,0 +,,CF,DT2.1,,OA,C,0 +,NIC,EA,DT2.1,,OA,C,0 +,PR,EA,DT2.1,,OA,C,0 +,ACA,EA,DT2.1,,OA,C,0 +,AEA,EA,DT2.1,,OA,C,0 +,,EA,DT2.1,,OA,C,0 +,NIC,AM,DT2.1,,OA,C,0 +,PR,AM,DT2.1,,OA,C,0 +,ACA,AM,DT2.1,,OA,C,0 +,AEA,AM,DT2.1,,OA,C,0 +,,AM,DT2.1,,OA,C,0 +,NIC,EOP,DT2.1,,OA,C,0 +,PR,EOP,DT2.1,,OA,C,0 +,ACA,EOP,DT2.1,,OA,C,0 +,AEA,EOP,DT2.1,,OA,C,0 +,,EOP,DT2.1,,OA,C,0 +,NIC,BOP,DT2.1,,OA,N,0 +,PR,BOP,DT2.1,,OA,N,0 +,ACA,BOP,DT2.1,,OA,N,0 +,AEA,BOP,DT2.1,,OA,N,0 +,,BOP,DT2.1,,OA,N,0 +,NIC,IA,DT2.1,,OA,N,0 +,PR,IA,DT2.1,,OA,N,0 +,ACA,IA,DT2.1,,OA,N,0 +,AEA,IA,DT2.1,,OA,N,0 +,,IA,DT2.1,,OA,N,0 +,NIC,BOP,DT2.1,,OA,I,0 +,PR,BOP,DT2.1,,OA,I,0 +,ACA,BOP,DT2.1,,OA,I,0 +,AEA,BOP,DT2.1,,OA,I,0 +,,BOP,DT2.1,,OA,I,0 +,NIC,MC,DT2.1,,OA,I,0 +,PR,MC,DT2.1,,OA,I,0 +,ACA,MC,DT2.1,,OA,I,0 +,AEA,MC,DT2.1,,OA,I,0 +,,MC,DT2.1,,OA,I,0 +,NIC,RCU,DT2.1,,OA,I,0 +,PR,RCU,DT2.1,,OA,I,0 +,ACA,RCU,DT2.1,,OA,I,0 +,AEA,RCU,DT2.1,,OA,I,0 +,,RCU,DT2.1,,OA,I,0 +,NIC,CF,DT2.1,,OA,I,0 +,PR,CF,DT2.1,,OA,I,0 +,ACA,CF,DT2.1,,OA,I,0 +,AEA,CF,DT2.1,,OA,I,0 +,,CF,DT2.1,,OA,I,0 +,NIC,IA,DT2.1,,OA,I,0 +,PR,IA,DT2.1,,OA,I,0 +,ACA,IA,DT2.1,,OA,I,0 +,AEA,IA,DT2.1,,OA,I,0 +,,IA,DT2.1,,OA,I,0 +,NIC,AU,DT2.1,,OA,I,0 +,PR,AU,DT2.1,,OA,I,0 +,ACA,AU,DT2.1,,OA,I,0 +,AEA,AU,DT2.1,,OA,I,0 +,,AU,DT2.1,,OA,I,0 +,NIC,YCU,DT2.1,,OA,I,0 +,PR,YCU,DT2.1,,OA,I,0 +,ACA,YCU,DT2.1,,OA,I,0 +,AEA,YCU,DT2.1,,OA,I,0 +,,YCU,DT2.1,,OA,I,0 +,NIC,CRU,DT2.1,,OA,I,0 +,PR,CRU,DT2.1,,OA,I,0 +,ACA,CRU,DT2.1,,OA,I,0 +,AEA,CRU,DT2.1,,OA,I,0 +,,CRU,DT2.1,,OA,I,0 +,NIC,EV,DT2.1,,OA,I,0 +,PR,EV,DT2.1,,OA,I,0 +,ACA,EV,DT2.1,,OA,I,0 +,AEA,EV,DT2.1,,OA,I,0 +,,EV,DT2.1,,OA,I,0 +,NIC,CF,DT2.1,,OA,N,0 +,PR,CF,DT2.1,,OA,N,0 +,ACA,CF,DT2.1,,OA,N,0 +,AEA,CF,DT2.1,,OA,N,0 +,,CF,DT2.1,,OA,N,0 +,NIC,AU,DT2.1,,OA,N,0 +,PR,AU,DT2.1,,OA,N,0 +,ACA,AU,DT2.1,,OA,N,0 +,AEA,AU,DT2.1,,OA,N,0 +,,AU,DT2.1,,OA,N,0 +,NIC,EV,DT2.1,,OA,N,0 +,PR,EV,DT2.1,,OA,N,0 +,ACA,EV,DT2.1,,OA,N,0 +,AEA,EV,DT2.1,,OA,N,0 +,,EV,DT2.1,,OA,N,0 +,NIC,CL,DT2.1,,OA,C,0 +,PR,CL,DT2.1,,OA,C,0 +,ACA,CL,DT2.1,,OA,C,0 +,AEA,CL,DT2.1,,OA,C,0 +,,CL,DT2.1,,OA,C,0 +,NIC,CF,DT1.3,,OA,C,0 +,PR,CF,DT1.3,,OA,C,0 +,ACA,CF,DT1.3,,OA,C,0 +,AEA,CF,DT1.3,,OA,C,0 +,,CF,DT1.3,,OA,C,0 +,NIC,EA,DT1.3,,OA,C,0 +,PR,EA,DT1.3,,OA,C,0 +,ACA,EA,DT1.3,,OA,C,0 +,AEA,EA,DT1.3,,OA,C,0 +,,EA,DT1.3,,OA,C,0 +,NIC,AM,DT1.3,,OA,C,0 +,PR,AM,DT1.3,,OA,C,0 +,ACA,AM,DT1.3,,OA,C,0 +,AEA,AM,DT1.3,,OA,C,0 +,,AM,DT1.3,,OA,C,0 +,NIC,EOP,DT1.3,,OA,C,0 +,PR,EOP,DT1.3,,OA,C,0 +,ACA,EOP,DT1.3,,OA,C,0 +,AEA,EOP,DT1.3,,OA,C,0 +,,EOP,DT1.3,,OA,C,0 +,NIC,BOP,DT1.3,,OA,N,0 +,PR,BOP,DT1.3,,OA,N,0 +,ACA,BOP,DT1.3,,OA,N,0 +,AEA,BOP,DT1.3,,OA,N,0 +,,BOP,DT1.3,,OA,N,0 +,NIC,IA,DT1.3,,OA,N,0 +,PR,IA,DT1.3,,OA,N,0 +,ACA,IA,DT1.3,,OA,N,0 +,AEA,IA,DT1.3,,OA,N,0 +,,IA,DT1.3,,OA,N,0 +,NIC,BOP,DT1.3,,OA,I,0 +,PR,BOP,DT1.3,,OA,I,0 +,ACA,BOP,DT1.3,,OA,I,0 +,AEA,BOP,DT1.3,,OA,I,0 +,,BOP,DT1.3,,OA,I,0 +,NIC,MC,DT1.3,,OA,I,0 +,PR,MC,DT1.3,,OA,I,0 +,ACA,MC,DT1.3,,OA,I,0 +,AEA,MC,DT1.3,,OA,I,0 +,,MC,DT1.3,,OA,I,0 +,NIC,RCU,DT1.3,,OA,I,0 +,PR,RCU,DT1.3,,OA,I,0 +,ACA,RCU,DT1.3,,OA,I,0 +,AEA,RCU,DT1.3,,OA,I,0 +,,RCU,DT1.3,,OA,I,0 +,NIC,CF,DT1.3,,OA,I,0 +,PR,CF,DT1.3,,OA,I,0 +,ACA,CF,DT1.3,,OA,I,0 +,AEA,CF,DT1.3,,OA,I,0 +,,CF,DT1.3,,OA,I,0 +,NIC,IA,DT1.3,,OA,I,0 +,PR,IA,DT1.3,,OA,I,0 +,ACA,IA,DT1.3,,OA,I,0 +,AEA,IA,DT1.3,,OA,I,0 +,,IA,DT1.3,,OA,I,0 +,NIC,AU,DT1.3,,OA,I,0 +,PR,AU,DT1.3,,OA,I,0 +,ACA,AU,DT1.3,,OA,I,0 +,AEA,AU,DT1.3,,OA,I,0 +,,AU,DT1.3,,OA,I,0 +,NIC,YCU,DT1.3,,OA,I,0 +,PR,YCU,DT1.3,,OA,I,0 +,ACA,YCU,DT1.3,,OA,I,0 +,AEA,YCU,DT1.3,,OA,I,0 +,,YCU,DT1.3,,OA,I,0 +,NIC,CRU,DT1.3,,OA,I,0 +,PR,CRU,DT1.3,,OA,I,0 +,ACA,CRU,DT1.3,,OA,I,0 +,AEA,CRU,DT1.3,,OA,I,0 +,,CRU,DT1.3,,OA,I,0 +,NIC,EV,DT1.3,,OA,I,0 +,PR,EV,DT1.3,,OA,I,0 +,ACA,EV,DT1.3,,OA,I,0 +,AEA,EV,DT1.3,,OA,I,0 +,,EV,DT1.3,,OA,I,0 +,NIC,CF,DT1.3,,OA,N,0 +,PR,CF,DT1.3,,OA,N,0 +,ACA,CF,DT1.3,,OA,N,0 +,AEA,CF,DT1.3,,OA,N,0 +,,CF,DT1.3,,OA,N,0 +,NIC,AU,DT1.3,,OA,N,0 +,PR,AU,DT1.3,,OA,N,0 +,ACA,AU,DT1.3,,OA,N,0 +,AEA,AU,DT1.3,,OA,N,0 +,,AU,DT1.3,,OA,N,0 +,NIC,EV,DT1.3,,OA,N,0 +,PR,EV,DT1.3,,OA,N,0 +,ACA,EV,DT1.3,,OA,N,0 +,AEA,EV,DT1.3,,OA,N,0 +,,EV,DT1.3,,OA,N,0 +,NIC,CL,DT1.3,,OA,C,0 +,PR,CL,DT1.3,,OA,C,0 +,ACA,CL,DT1.3,,OA,C,0 +,AEA,CL,DT1.3,,OA,C,0 +,,CL,DT1.3,,OA,C,0 +2020,NIC,CF,DT2.2,,OA,C,0 +,NIC,CF,DT2.2,,OA,C,0 +2020,,CF,DT2.2,,OA,C,0 +,,CF,DT2.2,,OA,C,0 +2020,NIC,EA,DT2.2,,OA,C,0 +,NIC,EA,DT2.2,,OA,C,0 +2020,,EA,DT2.2,,OA,C,0 +,,EA,DT2.2,,OA,C,0 +2020,NIC,AM,DT2.2,,OA,C,0 +,NIC,AM,DT2.2,,OA,C,0 +2020,,AM,DT2.2,,OA,C,0 +,,AM,DT2.2,,OA,C,0 +2020,NIC,EOP,DT2.2,,OA,C,0 +,NIC,EOP,DT2.2,,OA,C,0 +2020,,EOP,DT2.2,,OA,C,0 +,,EOP,DT2.2,,OA,C,0 +2020,NIC,BOP,DT2.2,,OA,I,0 +,NIC,BOP,DT2.2,,OA,I,0 +2020,,BOP,DT2.2,,OA,I,0 +,,BOP,DT2.2,,OA,I,0 +2020,NIC,MC,DT2.2,,OA,I,0 +,NIC,MC,DT2.2,,OA,I,0 +2020,,MC,DT2.2,,OA,I,0 +,,MC,DT2.2,,OA,I,0 +2020,NIC,RCU,DT2.2,,OA,I,0 +,NIC,RCU,DT2.2,,OA,I,0 +2020,,RCU,DT2.2,,OA,I,0 +,,RCU,DT2.2,,OA,I,0 +2020,NIC,CF,DT2.2,,OA,I,0 +,NIC,CF,DT2.2,,OA,I,0 +2020,,CF,DT2.2,,OA,I,0 +,,CF,DT2.2,,OA,I,0 +2020,NIC,IA,DT2.2,,OA,I,0 +,NIC,IA,DT2.2,,OA,I,0 +2020,,IA,DT2.2,,OA,I,0 +,,IA,DT2.2,,OA,I,0 +2020,NIC,AU,DT2.2,,OA,I,0 +,NIC,AU,DT2.2,,OA,I,0 +2020,,AU,DT2.2,,OA,I,0 +,,AU,DT2.2,,OA,I,0 +2020,NIC,YCU,DT2.2,,OA,I,0 +,NIC,YCU,DT2.2,,OA,I,0 +2020,,YCU,DT2.2,,OA,I,0 +,,YCU,DT2.2,,OA,I,0 +2020,NIC,CRU,DT2.2,,OA,I,0 +,NIC,CRU,DT2.2,,OA,I,0 +2020,,CRU,DT2.2,,OA,I,0 +,,CRU,DT2.2,,OA,I,0 +2020,NIC,EV,DT2.2,,OA,I,0 +,NIC,EV,DT2.2,,OA,I,0 +2020,,EV,DT2.2,,OA,I,0 +,,EV,DT2.2,,OA,I,0 +2020,NIC,BOP,DT2.2,,OA,N,0 +,NIC,BOP,DT2.2,,OA,N,0 +2020,,BOP,DT2.2,,OA,N,0 +,,BOP,DT2.2,,OA,N,0 +2020,NIC,CF,DT2.2,,OA,N,0 +,NIC,CF,DT2.2,,OA,N,0 +2020,,CF,DT2.2,,OA,N,0 +,,CF,DT2.2,,OA,N,0 +2020,NIC,IA,DT2.2,,OA,N,0 +,NIC,IA,DT2.2,,OA,N,0 +2020,,IA,DT2.2,,OA,N,0 +,,IA,DT2.2,,OA,N,0 +2020,NIC,AU,DT2.2,,OA,N,0 +2020,,AU,DT2.2,,OA,N,0 +,NIC,AU,DT2.2,,OA,N,0 +,,AU,DT2.2,,OA,N,0 +2020,NIC,EV,DT2.2,,OA,N,0 +2020,,EV,DT2.2,,OA,N,0 +,NIC,EV,DT2.2,,OA,N,0 +,,EV,DT2.2,,OA,N,0 +2020,NIC,CL,DT2.2,,OA,C,0 +,NIC,CL,DT2.2,,OA,C,0 +2020,,CL,DT2.2,,OA,C,0 +,,CL,DT2.2,,OA,C,0 +,,CF,DTR1.1,,OA,C,0 +,NIC,CF,DTR1.1,,OA,C,0 +,PR,CF,DTR1.1,,OA,C,0 +,,BOP,DTR1.1,,OA,I,0 +,NIC,BOP,DTR1.1,,OA,I,0 +,PR,BOP,DTR1.1,,OA,I,0 +,,IA,DTR1.1,,OA,N,0 +,NIC,IA,DTR1.1,,OA,N,0 +,PR,IA,DTR1.1,,OA,N,0 +,NIC,BOP,DTR1.1,,OA,N,0 +,PR,BOP,DTR1.1,,OA,N,0 +,,BOP,DTR1.1,,OA,N,0 +,,EOP,DTR1.1,,OA,C,0 +,NIC,EOP,DTR1.1,,OA,C,0 +,PR,EOP,DTR1.1,,OA,C,0 +,,AM,DTR1.1,,OA,C,0 +,NIC,AM,DTR1.1,,OA,C,0 +,PR,AM,DTR1.1,,OA,C,0 +,NIC,EA,DTR1.1,,OA,C,0 +,PR,EA,DTR1.1,,OA,C,0 +,,EA,DTR1.1,,OA,C,0 +,,MC,DTR1.1,,OA,I,0 +,NIC,MC,DTR1.1,,OA,I,0 +,PR,MC,DTR1.1,,OA,I,0 +,,RCU,DTR1.1,,OA,I,0 +,NIC,RCU,DTR1.1,,OA,I,0 +,PR,RCU,DTR1.1,,OA,I,0 +,NIC,CF,DTR1.1,,OA,I,0 +,PR,CF,DTR1.1,,OA,I,0 +,,CF,DTR1.1,,OA,I,0 +,PR,IA,DTR1.1,,OA,I,0 +,,IA,DTR1.1,,OA,I,0 +,NIC,IA,DTR1.1,,OA,I,0 +,NIC,AU,DTR1.1,,OA,I,0 +,PR,AU,DTR1.1,,OA,I,0 +,,AU,DTR1.1,,OA,I,0 +,,YCU,DTR1.1,,OA,I,0 +,NIC,YCU,DTR1.1,,OA,I,0 +,PR,YCU,DTR1.1,,OA,I,0 +,PR,CRU,DTR1.1,,OA,I,0 +,,CRU,DTR1.1,,OA,I,0 +,NIC,CRU,DTR1.1,,OA,I,0 +,NIC,EV,DTR1.1,,OA,I,0 +,PR,EV,DTR1.1,,OA,I,0 +,,EV,DTR1.1,,OA,I,0 +,,CF,DTR1.1,,OA,N,0 +,NIC,CF,DTR1.1,,OA,N,0 +,PR,CF,DTR1.1,,OA,N,0 +,PR,AU,DTR1.1,,OA,N,0 +,,AU,DTR1.1,,OA,N,0 +,NIC,AU,DTR1.1,,OA,N,0 +,NIC,EV,DTR1.1,,OA,N,0 +,PR,EV,DTR1.1,,OA,N,0 +,,EV,DTR1.1,,OA,N,0 +,,CL,DTR1.1,,OA,C,0 +,NIC,CL,DTR1.1,,OA,C,0 +,PR,CL,DTR1.1,,OA,C,0 +2020,NIC,CF,DTR1.2,,OA,C,0 +2020,,CF,DTR1.2,,OA,C,0 +,NIC,CF,DTR1.2,,OA,C,0 +,,CF,DTR1.2,,OA,C,0 +2020,NIC,BOP,DTR1.2,,OA,I,0 +,NIC,BOP,DTR1.2,,OA,I,0 +2020,,BOP,DTR1.2,,OA,I,0 +,,BOP,DTR1.2,,OA,I,0 +2020,,EA,DTR1.2,,OA,C,0 +,NIC,EA,DTR1.2,,OA,C,0 +2020,NIC,EA,DTR1.2,,OA,C,0 +,,EA,DTR1.2,,OA,C,0 +2020,,AM,DTR1.2,,OA,C,0 +,NIC,AM,DTR1.2,,OA,C,0 +2020,NIC,AM,DTR1.2,,OA,C,0 +,,AM,DTR1.2,,OA,C,0 +2020,NIC,EOP,DTR1.2,,OA,C,0 +,,EOP,DTR1.2,,OA,C,0 +2020,,EOP,DTR1.2,,OA,C,0 +,NIC,EOP,DTR1.2,,OA,C,0 +,NIC,MC,DTR1.2,,OA,I,0 +2020,,MC,DTR1.2,,OA,I,0 +2020,NIC,MC,DTR1.2,,OA,I,0 +,,MC,DTR1.2,,OA,I,0 +2020,NIC,RCU,DTR1.2,,OA,I,0 +,NIC,RCU,DTR1.2,,OA,I,0 +2020,,RCU,DTR1.2,,OA,I,0 +,,RCU,DTR1.2,,OA,I,0 +2020,NIC,CF,DTR1.2,,OA,I,0 +,NIC,CF,DTR1.2,,OA,I,0 +2020,,CF,DTR1.2,,OA,I,0 +,,CF,DTR1.2,,OA,I,0 +2020,NIC,IA,DTR1.2,,OA,I,0 +,NIC,IA,DTR1.2,,OA,I,0 +2020,,IA,DTR1.2,,OA,I,0 +,,IA,DTR1.2,,OA,I,0 +2020,NIC,AU,DTR1.2,,OA,I,0 +,NIC,AU,DTR1.2,,OA,I,0 +2020,,AU,DTR1.2,,OA,I,0 +,,AU,DTR1.2,,OA,I,0 +2020,NIC,YCU,DTR1.2,,OA,I,0 +,NIC,YCU,DTR1.2,,OA,I,0 +2020,,YCU,DTR1.2,,OA,I,0 +,,YCU,DTR1.2,,OA,I,0 +2020,NIC,CRU,DTR1.2,,OA,I,0 +,NIC,CRU,DTR1.2,,OA,I,0 +2020,,CRU,DTR1.2,,OA,I,0 +,,CRU,DTR1.2,,OA,I,0 +2020,NIC,EV,DTR1.2,,OA,I,0 +,NIC,EV,DTR1.2,,OA,I,0 +2020,,EV,DTR1.2,,OA,I,0 +,,EV,DTR1.2,,OA,I,0 +2020,NIC,BOP,DTR1.2,,OA,N,0 +,NIC,BOP,DTR1.2,,OA,N,0 +2020,,BOP,DTR1.2,,OA,N,0 +,,BOP,DTR1.2,,OA,N,0 +2020,NIC,CF,DTR1.2,,OA,N,0 +,NIC,CF,DTR1.2,,OA,N,0 +2020,,CF,DTR1.2,,OA,N,0 +,,CF,DTR1.2,,OA,N,0 +2020,NIC,IA,DTR1.2,,OA,N,0 +,NIC,IA,DTR1.2,,OA,N,0 +2020,,IA,DTR1.2,,OA,N,0 +,,IA,DTR1.2,,OA,N,0 +2020,NIC,AU,DTR1.2,,OA,N,0 +,NIC,AU,DTR1.2,,OA,N,0 +2020,,AU,DTR1.2,,OA,N,0 +,,AU,DTR1.2,,OA,N,0 +2020,NIC,EV,DTR1.2,,OA,N,0 +,NIC,EV,DTR1.2,,OA,N,0 +2020,,EV,DTR1.2,,OA,N,0 +,,EV,DTR1.2,,OA,N,0 +2020,NIC,CL,DTR1.2,,OA,C,0 +,NIC,CL,DTR1.2,,OA,C,0 +2020,,CL,DTR1.2,,OA,C,0 +,,CL,DTR1.2,,OA,C,0 +,,IA,DTR2.1,,OA,N,0 +,NIC,IA,DTR2.1,,OA,N,0 +,PR,IA,DTR2.1,,OA,N,0 +,,BOP,DTR2.1,,OA,N,0 +,NIC,BOP,DTR2.1,,OA,N,0 +,PR,BOP,DTR2.1,,OA,N,0 +,,EOP,DTR2.1,,OA,C,0 +,NIC,EOP,DTR2.1,,OA,C,0 +,PR,EOP,DTR2.1,,OA,C,0 +,,AM,DTR2.1,,OA,C,0 +,NIC,AM,DTR2.1,,OA,C,0 +,PR,AM,DTR2.1,,OA,C,0 +,,CF,DTR2.1,,OA,C,0 +,NIC,CF,DTR2.1,,OA,C,0 +,PR,CF,DTR2.1,,OA,C,0 +,,EA,DTR2.1,,OA,C,0 +,NIC,EA,DTR2.1,,OA,C,0 +,PR,EA,DTR2.1,,OA,C,0 +,,BOP,DTR2.1,,OA,I,0 +,NIC,BOP,DTR2.1,,OA,I,0 +,PR,BOP,DTR2.1,,OA,I,0 +,,MC,DTR2.1,,OA,I,0 +,NIC,MC,DTR2.1,,OA,I,0 +,PR,MC,DTR2.1,,OA,I,0 +,,RCU,DTR2.1,,OA,I,0 +,NIC,RCU,DTR2.1,,OA,I,0 +,PR,RCU,DTR2.1,,OA,I,0 +,,CF,DTR2.1,,OA,I,0 +,NIC,CF,DTR2.1,,OA,I,0 +,PR,CF,DTR2.1,,OA,I,0 +,,IA,DTR2.1,,OA,I,0 +,NIC,IA,DTR2.1,,OA,I,0 +,PR,IA,DTR2.1,,OA,I,0 +,,AU,DTR2.1,,OA,I,0 +,NIC,AU,DTR2.1,,OA,I,0 +,PR,AU,DTR2.1,,OA,I,0 +,,YCU,DTR2.1,,OA,I,0 +,NIC,YCU,DTR2.1,,OA,I,0 +,PR,YCU,DTR2.1,,OA,I,0 +,,CRU,DTR2.1,,OA,I,0 +,NIC,CRU,DTR2.1,,OA,I,0 +,PR,CRU,DTR2.1,,OA,I,0 +,,EV,DTR2.1,,OA,I,0 +,NIC,EV,DTR2.1,,OA,I,0 +,PR,EV,DTR2.1,,OA,I,0 +,,CF,DTR2.1,,OA,N,0 +,NIC,CF,DTR2.1,,OA,N,0 +,PR,CF,DTR2.1,,OA,N,0 +,,AU,DTR2.1,,OA,N,0 +,NIC,AU,DTR2.1,,OA,N,0 +,PR,AU,DTR2.1,,OA,N,0 +,,EV,DTR2.1,,OA,N,0 +,NIC,EV,DTR2.1,,OA,N,0 +,PR,EV,DTR2.1,,OA,N,0 +,,CL,DTR2.1,,OA,C,0 +,NIC,CL,DTR2.1,,OA,C,0 +,PR,CL,DTR2.1,,OA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv index 9b1cb78e..057f1404 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv @@ -3,35 +3,83 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@RA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,BOP,DT1.1,C,RA,N,59.87529 -,,BOP,DT1.1,L,RA,N,59.87529 -,,EOP,DT1.1,C,RA,C,29.96755 -,,EOP,DT1.1,L,RA,C,29.96755 -,,IA,DT1.1,C,RA,N,0.09226 -,,IA,DT1.1,L,RA,N,0.09226 +,,BOP,DT1.1,C,RA,N,59.8752944598663 +,,BOP,DT1.1,L,RA,N,59.8752944598663 +,,CL,DT1.1,C,RA,C,0 +,,CL,DT1.1,L,RA,C,0 +,,EA,DT1.1,C,RA,C,0 +,,EA,DT1.1,L,RA,C,0 +,,AM,DT1.1,C,RA,C,0 +,,AM,DT1.1,L,RA,C,0 +,,EOP,DT1.1,C,RA,C,29.967554969423595 +,,EOP,DT1.1,L,RA,C,29.967554969423595 +,,IA,DT1.1,C,RA,N,0.09226050955731169 +,,IA,DT1.1,L,RA,N,0.09226050955731169 ,,CF,DT1.1,C,RA,N,-30 ,,CF,DT1.1,L,RA,N,-30 -2020,,BOP,DT1.2,C,RA,N,59.87529 -2020,,BOP,DT1.2,L,RA,N,59.87529 -2020,,EOP,DT1.2,C,RA,C,29.96755 -2020,,EOP,DT1.2,L,RA,C,29.96755 -2020,,IA,DT1.2,C,RA,N,0.09226 -2020,,IA,DT1.2,L,RA,N,0.09226 +,,CF,DT1.1,C,RA,C,0 +,,CF,DT1.1,L,RA,C,0 +,,BOP,DT1.1,C,RA,I,0 +,,BOP,DT1.1,L,RA,I,0 +,,IA,DT1.1,C,RA,I,0 +,,IA,DT1.1,L,RA,I,0 +2020,,BOP,DT1.2,C,RA,N,59.8752944598663 +2020,,BOP,DT1.2,L,RA,N,59.8752944598663 +2020,,CL,DT1.2,C,RA,C,0 +2020,,CL,DT1.2,L,RA,C,0 +2020,,EA,DT1.2,C,RA,C,0 +2020,,EA,DT1.2,L,RA,C,0 +2020,,AM,DT1.2,C,RA,C,0 +2020,,AM,DT1.2,L,RA,C,0 +2020,,EOP,DT1.2,C,RA,C,29.967554969423595 +2020,,EOP,DT1.2,L,RA,C,29.967554969423595 +2020,,IA,DT1.2,C,RA,N,0.09226050955731169 +2020,,IA,DT1.2,L,RA,N,0.09226050955731169 2020,,CF,DT1.2,C,RA,N,-30 2020,,CF,DT1.2,L,RA,N,-30 -,,BOP,DTR1.1,C,RA,N,-29.93765 -,,BOP,DTR1.1,L,RA,N,-29.93765 -,,EOP,DTR1.1,C,RA,C,-14.98378 -,,EOP,DTR1.1,L,RA,C,-14.98378 -,,IA,DTR1.1,C,RA,N,-0.04613 -,,IA,DTR1.1,L,RA,N,-0.04613 +2020,,CF,DT1.2,C,RA,C,0 +2020,,CF,DT1.2,L,RA,C,0 +2020,,BOP,DT1.2,C,RA,I,0 +2020,,BOP,DT1.2,L,RA,I,0 +2020,,IA,DT1.2,C,RA,I,0 +2020,,IA,DT1.2,L,RA,I,0 +,,BOP,DTR1.1,C,RA,N,-29.93764722993315 +,,BOP,DTR1.1,L,RA,N,-29.93764722993315 +,,CL,DTR1.1,C,RA,C,0 +,,CL,DTR1.1,L,RA,C,0 +,,EA,DTR1.1,C,RA,C,0 +,,EA,DTR1.1,L,RA,C,0 +,,AM,DTR1.1,C,RA,C,0 +,,AM,DTR1.1,L,RA,C,0 +,,EOP,DTR1.1,C,RA,C,-14.983777484711798 +,,EOP,DTR1.1,L,RA,C,-14.983777484711798 +,,IA,DTR1.1,C,RA,N,-0.046130254778655844 +,,IA,DTR1.1,L,RA,N,-0.046130254778655844 ,,CF,DTR1.1,C,RA,N,15 ,,CF,DTR1.1,L,RA,N,15 -2020,,BOP,DTR1.2,C,RA,N,-29.93765 -2020,,BOP,DTR1.2,L,RA,N,-29.93765 -2020,,EOP,DTR1.2,C,RA,C,-14.98378 -2020,,EOP,DTR1.2,L,RA,C,-14.98378 -2020,,IA,DTR1.2,C,RA,N,-0.04613 -2020,,IA,DTR1.2,L,RA,N,-0.04613 +,,CF,DTR1.1,C,RA,C,0 +,,CF,DTR1.1,L,RA,C,0 +,,BOP,DTR1.1,C,RA,I,0 +,,BOP,DTR1.1,L,RA,I,0 +,,IA,DTR1.1,C,RA,I,0 +,,IA,DTR1.1,L,RA,I,0 +2020,,BOP,DTR1.2,C,RA,N,-29.93764722993315 +2020,,BOP,DTR1.2,L,RA,N,-29.93764722993315 +2020,,CL,DTR1.2,C,RA,C,0 +2020,,CL,DTR1.2,L,RA,C,0 +2020,,EA,DTR1.2,C,RA,C,0 +2020,,EA,DTR1.2,L,RA,C,0 +2020,,AM,DTR1.2,C,RA,C,0 +2020,,AM,DTR1.2,L,RA,C,0 +2020,,EOP,DTR1.2,C,RA,C,-14.983777484711798 +2020,,EOP,DTR1.2,L,RA,C,-14.983777484711798 +2020,,IA,DTR1.2,C,RA,N,-0.046130254778655844 +2020,,IA,DTR1.2,L,RA,N,-0.046130254778655844 2020,,CF,DTR1.2,C,RA,N,15 -2020,,CF,DTR1.2,L,RA,N,15 \ No newline at end of file +2020,,CF,DTR1.2,L,RA,N,15 +2020,,CF,DTR1.2,C,RA,C,0 +2020,,CF,DTR1.2,L,RA,C,0 +2020,,BOP,DTR1.2,C,RA,I,0 +2020,,BOP,DTR1.2,L,RA,I,0 +2020,,IA,DTR1.2,C,RA,I,0 +2020,,IA,DTR1.2,L,RA,I,0 \ No newline at end of file diff --git a/ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb index 2e223c31..8667e55e 100644 --- a/ifrs17-template/Test/IfrsVariablesTest.ipynb +++ b/ifrs17-template/Test/IfrsVariablesTest.ipynb @@ -94,9 +94,14 @@ "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_BE.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_BEPA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_A.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", + "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_AA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", + "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_OA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", + "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_APA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", + "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_DA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_C.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_F.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_L.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", + "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_LR.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_RA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n};" ], @@ -301,15 +306,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 40afd722..1f034123 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -92,10 +92,6 @@ "\n", "\n //Projections", "\n private ProjectionConfiguration[] ProjectionConfiguration;", - "\n", - "\n //DefaultVariables", - "\n public RawVariable[] DefaultRawVariables { get; private set; } = new RawVariable[0];", - "\n public IfrsVariable[] DefaultIfrsVariables { get; private set; } = new IfrsVariable[0];", "\n ", "\n //DataNodes", "\n public IDictionary DataNodeDataBySystemName { get; private set; }", @@ -277,24 +273,10 @@ "\n", "\n if(DefaultPartition != TargetPartition) {", "\n await querySource.Partition.SetAsync(DefaultPartition);", - "\n DefaultRawVariables = await querySource.Query() // Complete Union", - "\n .Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync(); // todo: remove import filter for zero values", - "\n //var defaultIfrsVariables = await querySource.Query()", - "\n // .Where(iv => primaryScopeFromParsedVariables.Contains(iv.DataNode) // Smart Union", - "\n // && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) // cons: arbitrary dimensions + order import matters (for Scenario)", - "\n // || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) // pros: computationally efficient", - "\n // || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", - "\n DefaultIfrsVariables = await querySource.Query() // Complete Union", - "\n .Where(iv => primaryScope.Contains(iv.DataNode) || secondaryScope.Contains(iv.DataNode)).ToArrayAsync(); ", - "\n //DefaultIfrsVariables = await querySource.Query()", - "\n // .Where(iv => primaryScopeFromParsedVariables.Contains(iv.DataNode) // Smart Union v2", - "\n // && !EstimateTypesByImportFormat[ImportFormat].Contains(iv.EstimateType) // cons: arbitrary dimensions", - "\n // || primaryScopeFromLinkedReinsurance.Contains(iv.DataNode) // pros: computationally efficient", - "\n // || secondaryScope.Contains(iv.DataNode)).ToArrayAsync();", - "\n //DefaultRawVariables = await querySource.Query() // Smart Union", - "\n // .Where(rv => primaryScopeFromLinkedReinsurance.Contains(rv.DataNode)).ToArrayAsync(); // this will affect all dimensions... ", - "\n rawVariables = rawVariables.Union(DefaultRawVariables, EqualityComparer.Instance); // not the same of Smart Union for Actuals", - "\n ifrsVariables = ifrsVariables.Union(DefaultIfrsVariables, EqualityComparer.Instance);", + "\n var defaultRawVariables = await querySource.Query().Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync();", + "\n var defaultIfrsVariables = await querySource.Query().Where(iv => allImportScopes.Contains(iv.DataNode)).ToArrayAsync(); ", + "\n rawVariables = rawVariables.Union(defaultRawVariables, EqualityComparer.Instance);", + "\n ifrsVariables = ifrsVariables.Union(defaultIfrsVariables, EqualityComparer.Instance);", "\n await querySource.Partition.SetAsync(TargetPartition);", "\n }", "\n", From 2870df2dd21c092b82ba5c5463f2a7cc4d2b788a Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Thu, 8 Dec 2022 13:00:34 +0100 Subject: [PATCH 17/64] openings importer cleanups --- ifrs17/Import/Importers.ipynb | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 060bb960..075dc6e0 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1161,7 +1161,7 @@ "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", + "\n", "\n var workspace = Workspace.CreateNew();", "\n var log = await ParseActualsToWorkspaceAsync(dataSet, mainArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", @@ -1171,7 +1171,7 @@ "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", - "\n ", + "\n", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", @@ -1307,27 +1307,15 @@ "\n var args = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Opening};", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Opening, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", + "\n", "\n Guid partitionId = new Guid();", "\n var workspace = Workspace.CreateNew();", "\n var parsingLog = await ParseSimpleValueToWorkspaceAsync(dataSet, args, partitionId, workspace);", "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog);", - "\n ", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish().Merge(parsingLog);", - "\n", - "\n await workspace.UpdateAsync(ivs);", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true,", - "\n filter : x => storage.EstimateTypesByImportFormat[ImportFormats.Opening].Contains(x.EstimateType) && ", - "\n storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode ));", "\n", - "\n return Activity.Finish().Merge(parsingLog);", + "\n var calculationLog = await CalculateAndUploadVariablesAsync(args, workspace, false); ", + "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(calculationLog);", + "\n return Activity.Finish().Merge(parsingLog).Merge(calculationLog);", "\n});" ], "metadata": {}, From 09a5c830fcdc16685bcb0fb27252300143ec045c Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 8 Dec 2022 14:58:31 +0100 Subject: [PATCH 18/64] first implementation of yield curve importer --- ifrs17/Constants/Consts.ipynb | 1 + ifrs17/Import/Importers.ipynb | 62 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index ceb279db..0d6ed58a 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -198,6 +198,7 @@ "\n public const string Opening = nameof(Opening); // Importer for Opening Balances (BOP Inforce of CSM/LC)", "\n public const string SimpleValue = nameof(SimpleValue); // Importer for Simple Values (pre-calculated direct import)", "\n", + "\n public const string YieldCurve = nameof(YieldCurve); // Importer for Yield Curve", "\n public const string DataNode = nameof(DataNode); // Importer for Data Node", "\n public const string DataNodeState = nameof(DataNodeState); // Importer for Data Node State", "\n public const string DataNodeParameter = nameof(DataNodeParameter); // Importer for Data Node Parameters", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 075dc6e0..badffd68 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -582,6 +582,68 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Yield Curves " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", + "\n Activity.Start();", + "\n var mainTab = dataSet.Tables[Main];", + "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", + "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n ", + "\n var main = mainTab.Rows.First();", + "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n var year = (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Year)], typeof(int));", + "\n var month = (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Year)], typeof(int));", + "\n ", + "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n ", + "\n var parsingLog = await Import.FromDataSet(dataSet).WithType().WithTarget(workspace).ExecuteAsync(); ", + "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog); ", + "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", + "\n ", + "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", + "\n if (!newYieldCurves.Any()){", + "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", + "\n return Activity.Finish().Merge(parsingLog);", + "\n }", + "\n ", + "\n await DataSource.UpdateAsync(newYieldCurves);", + "\n await DataSource.CommitAsync();", + "\n", + "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", + "\n .Select(x => new ImportArgs( x.ReportingNode,", + "\n x.Year, ", + "\n x.Month,", + "\n Periodicity.Quarterly,", + "\n x.Scenario,", + "\n ImportFormats.Cashflow)).ToArray();", + "\n", + "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", + "\n", + "\n return Activity.Finish().Merge(parsingLog);//.Merge(calculationLog);", + "\n});" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ From 8fb42aff8decf1793bc969e17665e5d9f7609247 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 12 Dec 2022 18:09:51 +0100 Subject: [PATCH 19/64] fix report benchmark scenario --- .../Test/Data/ExportReportVariables.ipynb | 2 +- ...marks_2020_12_CH_MTUP10pct_Contractual.csv | 1663 ++++++++++++++++- .../Test/ReportVariablesTest.ipynb | 19 +- .../Test/ScenarioDataImportTest.ipynb | 115 -- ifrs17/Import/ImportScopeCalculation.ipynb | 2 +- ifrs17/Import/ImportStorage.ipynb | 3 +- ifrs17/Utils/ImportCalculationMethods.ipynb | 23 +- 7 files changed, 1674 insertions(+), 153 deletions(-) diff --git a/ifrs17-template/Test/Data/ExportReportVariables.ipynb b/ifrs17-template/Test/Data/ExportReportVariables.ipynb index b7fc2793..781c0299 100644 --- a/ifrs17-template/Test/Data/ExportReportVariables.ipynb +++ b/ifrs17-template/Test/Data/ExportReportVariables.ipynb @@ -174,7 +174,7 @@ { "cell_type": "code", "source": [ - "var scopesData = (await GetScopesDataAsync(args, reportStorage, Scopes)).Select(rv => rv with { Value = Math.Round(rv.Value, roundingDigits)});", + "var scopesData = (await GetScopesDataAsync(args, reportStorage, Scopes)).AggregateBy().Select(rv => rv with { Value = Math.Round(rv.Value, roundingDigits)});", "\nvar bmFileName = benchmarkFileNamePrefix + GetBenchmarkFileName(args) + \".csv\";" ], "metadata": {}, diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv index 6ab9b317..14bf94d8 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv @@ -1,33 +1,295 @@ @@ReportVariable AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis,EstimateType,FunctionalCurrency,GroupOfContract,InitialProfitability,IsReinsurance,LiabilityType,LineOfBusiness,Novelty,OciType,Partner,Portfolio,Projection,ReportingNode,Scenario,ValuationApproach,Value,VariableType +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AM +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IR4 +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE6 +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP +2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF +2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP +2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-329.6431,OCI2 +2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP +2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF +2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP +2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-1.01487,IFIE2 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-328.62824,ISE12 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,OCI2 +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP +2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF +2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP +2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.96755,OCI2 +2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP +2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF +2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP +2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE2 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,ISE12 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI2 +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0,AM +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,IR4 +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE6 +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,CF +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,ISE2 +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,598.75294,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,299.67555,EOP @@ -39,6 +301,24 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,299.67555,EOP 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.92261,IA +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,59.87529,BOP 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -50,40 +330,200 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.09226,IA +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AM +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IR4 +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE6 +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,CF +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,ISE2 +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP +2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.1268,OCI2 +2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP +2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF +2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP +2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.82155,OCI2 +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP +2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00129,IFIE2 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.12551,ISE12 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,OCI2 +2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP +2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF +2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP +2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.50743,IFIE2 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.31412,ISE12 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,OCI2 +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP +2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF +2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP +2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.98378,OCI2 +2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP +2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF +2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP +2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE2 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE12 @@ -123,79 +563,512 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,15,CF 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-14.98378,EOP 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.04613,IA +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,ISE4 +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,ISE3 +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-320,IR6 +0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP +0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF +0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP +0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-329.6431,OCI1 +0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-798.53673,BOP +0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF +0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,EOP +0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,399.63393,OCI1 +0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP +0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF +0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP +0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-1.01487,IFIE1 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-328.62824,IR5 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,OCI1 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-798.53673,BOP +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,EOP +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,398.53673,IR5 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,OCI1 0,PR,2020,USD,USD,L,BEPA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,320,IR6 -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-82.02271,AM +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-42.67021,AM +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,80.0332,BOP -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,124.99082,CL -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-80.02327,EA -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,42.96811,EOP +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CRU +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,EA +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,22.35306,EOP +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0.00993,IA 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0.00993,IFIE1 -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,82.02271,IR3 -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-125.00075,IR5 +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,42.67021,IR3 +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-65.0332,IR5 +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,MC +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,RCU +0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,AM +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,CF +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5.15655,EOP +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-157.4799,AM -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,239.97673,EA -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,82.49683,EOP -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-239.97673,ISE11 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,157.4799,ISE9 +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE9 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP +0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF +0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP +0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.96755,OCI1 +0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP +0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF +0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP +0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI1 +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,ISE4 +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,ISE3 +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-400,IR6 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-300,CF @@ -223,24 +1096,139 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,OCI1 0,PR,2020,USD,USD,L,BEPA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR6 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-82.02271,AM +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,139.90849,BOP -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,124.99082,CL -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-139.99082,EA +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CRU +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,EA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,42.96811,EOP +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.08233,IA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.08233,IFIE1 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,82.02271,IR3 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-124.90849,IR5 +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,MC +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,RCU +0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,AM +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,CF +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5.15655,EOP +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-170.62578,AM -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,260.00918,EA -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,89.38339,EOP -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-260.00918,ISE11 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,170.62578,ISE9 +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE9 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -381,14 +1369,158 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI1 +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-10,ISE4 +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5,ISE3 +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,400,CF +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-320,IR6 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF @@ -414,24 +1546,139 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BEPA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-82.02271,AM +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,139.90849,BOP -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,124.99082,CL -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-139.99082,EA +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,CRU +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-15,EA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,42.96811,EOP +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.08233,IA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0.08233,IFIE1 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,82.02271,IR3 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-124.90849,IR5 +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,MC +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,RCU +0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,9.84345,AM +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-15,CF +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5.15655,EOP +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-118.1274,AM -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,180.00918,EA -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,61.88178,EOP -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-180.00918,ISE11 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,118.1274,ISE9 +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,IFIE1 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE11 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE9 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,59.87529,BOP 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -626,61 +1873,264 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,29.96755,OCI1 +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,ISE1 +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP +0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.1268,OCI1 +0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP +0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF +0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP +0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.82155,OCI1 +0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,399.26837,BOP +0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF +0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,EOP +0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.5486,IA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-199.81696,OCI1 +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP +0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00129,IFIE1 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.12551,ISE10 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,OCI1 +0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP +0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF +0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP +0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.50743,IFIE1 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.31412,ISE10 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,OCI1 +0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,399.26837,BOP +0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF +0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,EOP +0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.5486,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.5486,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-199.26837,ISE10 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,OCI1 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,26.60498,AM +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-40.54585,BOP +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CRU +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-13.93719,EOP +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00368,IA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00368,IFIE1 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,40.54585,ISE10 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-26.60498,ISE7 +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,MC +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,RCU +0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,YCU +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AM +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IR4 +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE6 +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE8 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP +0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF +0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP +0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.98378,OCI1 +0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP +0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF +0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP +0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE1 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE10 @@ -813,10 +2263,82 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE1 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE10 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,OCI1 +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,140,CF +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CL +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,140,ISE2 +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-200,CF +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CL +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-200,ISE1 +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.48113,BOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.36703,CF 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.11527,EOP @@ -851,12 +2373,103 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,199.81696,EOP 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.5486,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,46.24958,AM +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AU +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-70.43538,BOP +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CRU +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-24.22813,EOP +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EV +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.04234,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.04234,IFIE1 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,70.43538,ISE10 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-46.24958,ISE7 +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,MC +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,RCU +0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,YCU +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AM +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IR4 +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE6 +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE8 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU +0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-29.93765,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,15,CF 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-14.98378,EOP diff --git a/ifrs17-template/Test/ReportVariablesTest.ipynb b/ifrs17-template/Test/ReportVariablesTest.ipynb index 978d2a5e..5f4d7904 100644 --- a/ifrs17-template/Test/ReportVariablesTest.ipynb +++ b/ifrs17-template/Test/ReportVariablesTest.ipynb @@ -136,15 +136,16 @@ "\n scopesData = await GetScopesDataAsync(args, reportStorage, Scopes);", "\n benchmarkData = await GetBenchmarkDataAsync(args, path, Workspace, Import);", "\n", - "\n scopesData.Should().BeEquivalentTo(benchmarkData,", - "\n options => options", - "\n //.ComparingRecordsByValue()", - "\n .ComparingRecordsByMembers() ", - "\n //.ComparingByMembers()", - "\n //.ComparingByValue()", - "\n //.Excluding(o => o.Value)", - "\n .Using(ctx => ctx.Subject.Should().BeApproximately(ctx.Expectation, BenchmarkPrecision))", - "\n .WhenTypeIs() );", + "\n scopesData.AggregateBy().Should().BeEquivalentTo(", + "\n benchmarkData,", + "\n options => options", + "\n //.ComparingRecordsByValue()", + "\n .ComparingRecordsByMembers() ", + "\n //.ComparingByMembers()", + "\n //.ComparingByValue()", + "\n //.Excluding(o => o.Value)", + "\n .Using(ctx => ctx.Subject.Should().BeApproximately(ctx.Expectation, BenchmarkPrecision))", + "\n .WhenTypeIs() );", "\n}" ], "metadata": {}, diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index 49063e59..a0130899 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -855,121 +855,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "# Debug" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//mymodel.GetScopes(myidentities.Where(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\"), o => o.WithContext(\"L\")).Select(x => (x.EstimateType, x.Value, x.Identity))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\") with {AocType = AocTypes.CL}, (string)null, EstimateTypes.CU, (int?)null))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//mymodel.GetScope((myidentities.First(x => x.DataNode == \"DT1.1\" && x.AocType == \"AM\")), o => o.WithContext(\"L\"))" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "/*", - "\nstatic ImportStorage mystorage;", - "\nstatic ImportIdentity[] myidentities; ", - "\nstatic IModel mymodel;", - "\nstatic List my = new List();", - "\nstatic IWorkspace myws; ", - "\nstatic IfrsVariable[] targetIVS;", - "\nstatic IfrsVariable[] defaultIVS;", - "\n", - "\npublic async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", - "\n{", - "\n Activity.Start();", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision).ToArray());", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", - "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n if(saveRawVariables) {", - "\n if(args.Scenario == null) await Workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Select(x => Math.Abs(x)).Sum() < Precision).ToArrayAsync());", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", - "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n my.Add(\"bingo\");", - "\n }", - "\n", - "\n return Activity.Finish();", - "\n}", - "\n", - "\nImport.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", - "\n Activity.Start();", - "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n", - "\n var targetArgs = mainArgs.Scenario == null ", - "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", - "\n : mainArgs.RepeatOnce();", - "\n ", - "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, args == mainArgs));", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", - "\n my.Add(args.ToString());", - "\n ", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n mystorage = storage; ", - "\n myidentities = identities.ToArray(); ", - "\n mymodel = universe;", - "\n targetIVS = ivs.ToArray();", - "\n }", - "\n myws = workspace;", - "\n return Activity.Finish().Merge(log); ", - "\n});", - "\n*/" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index ad6c81b5..1006f7fa 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -238,7 +238,7 @@ "\n ", "\n ", "\n IEnumerable ActualAmountTypes => GetStorage().GetIfrsVariables(Identity)", - "\n .Where(iv => GetStorage().EstimateTypesByImportFormat[ImportFormats.Actual].Contains(iv.EstimateType))", + "\n .Where(iv => GetStorage().ImportActualEstimateTypes.Contains(iv.EstimateType))", "\n .Select(x => x.AmountType)", "\n .ToHashSet();", "\n}", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 1f034123..8df5badf 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -118,7 +118,8 @@ "\n public Dictionary EstimateTypeDimension { get; private set; }", "\n public Dictionary> EstimateTypesByImportFormat { get; private set; }", "\n public Dictionary ExperienceAdjustEstimateTypeMapping { get; private set; } ", - "\n ", + "\n public HashSet ImportActualEstimateTypes => GetImportActualEstimateType();", + "\n", "\n //Constructor", "\n public ImportStorage(ImportArgs args, IDataSource querySource, IWorkspace workspace)", "\n {", diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index c783cc39..e6a5a207 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -271,6 +271,27 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Import Actuals EstimateType" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static HashSet GetImportActualEstimateType()", + "\n{", + "\n return new []{EstimateTypes.A, EstimateTypes.AA, EstimateTypes.OA}.ToHashSet();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] -} +} \ No newline at end of file From 04f9055d5384751717d460f908dea20c7bdb5708 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 12 Dec 2022 18:14:56 +0100 Subject: [PATCH 20/64] cleanup --- ifrs17-template/Constants/CalculationEngine.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index 871cf34e..af978b92 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -28,4 +28,4 @@ "outputs": [] } ] -} +} \ No newline at end of file From 322085a37151c2199313922e362583faf554f1b2 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 13 Dec 2022 09:07:09 +0100 Subject: [PATCH 21/64] preparation before pull develop --- ifrs17/Import/ImportScopeCalculation.ipynb | 309 ++++++++++++++------- 1 file changed, 211 insertions(+), 98 deletions(-) diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index 1006f7fa..ec0b972a 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -2042,7 +2042,7 @@ "source": [ "## Computing All Scopes", "\n", - "\nSince all the calculations defined in the various scopes are to be performed together, it is useful to introduce the scope ComputeAllScopes below, which given a certain Import Identity and Import Storage, performs all the calculations (defined above) based on the corresponding data:" + "\nSince all the calculations defined in the various scopes are to be performed together, it is useful to introduce the scopes: ComputeIfrsVarsActuals, ComputeIfrsVarsCashflows and the ComputeIfrsVarsOpenings below, which given a certain Import Format and Import Storage, performs all the calculations (defined above) based on the corresponding data:" ], "metadata": {}, "execution_count": 0, @@ -2051,96 +2051,127 @@ { "cell_type": "code", "source": [ - "public interface ComputeAllScopes: IScope //ComputeIfrsVariable", + "public interface PvToIfrsVariable: IScope", + "\n{", + "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface RaToIfrsVariable: IScope", + "\n{", + "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ActualToIfrsVariable: IScope", "\n{", - "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", - "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", - "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", - "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", - "\n private string EconomicBasis => Identity.ValuationApproach == ValuationApproaches.VFA ? EconomicBases.C : EconomicBases.L;", - "\n private IEnumerable amortizationFactor => Identity.AocType == AocTypes.AM", - "\n ? GetScope(Identity, o => o.WithContext(EconomicBasis))", - "\n .RepeatOnce()", - "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", - "\n DataNode = x.Identity.DataNode,", - "\n AocType = x.Identity.AocType,", - "\n Novelty = x.Identity.Novelty,", - "\n EconomicBasis = x.EconomicBasis,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition })", - "\n : Enumerable.Empty();", - "\n", "\n IEnumerable Actual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n ", - "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", "\n IEnumerable OverdueActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface DeferrableToIfrsVariable: IScope", + "\n{", "\n IEnumerable DeferrableActual => GetScope(Identity).RepeatOnce().Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", - "\n DataNode = x.Identity.DataNode,", - "\n AocType = x.Identity.AocType,", - "\n Novelty = x.Identity.Novelty,", - "\n AccidentYear = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n ", + "\n DataNode = x.Identity.DataNode,", + "\n AocType = x.Identity.AocType,", + "\n Novelty = x.Identity.Novelty,", + "\n AccidentYear = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface EaForPremiumToIfrsVariable: IScope", + "\n{", "\n IEnumerable BeEAForPremium => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC", "\n || Identity.IsReinsurance", "\n ? Enumerable.Empty()", @@ -2170,7 +2201,30 @@ "\n AmountType = sc.Identity.AmountType,", "\n Value = sc.Value,", "\n Partition = GetStorage().TargetPartition });", - "\n ", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface TmToIfrsVariable: IScope", + "\n{", + "\n private string EconomicBasis => Identity.ValuationApproach == ValuationApproaches.VFA ? EconomicBases.C : EconomicBases.L;", + "\n IEnumerable AmortizationFactor => Identity.AocType == AocTypes.AM", + "\n ? GetScope(Identity, o => o.WithContext(EconomicBasis))", + "\n .RepeatOnce()", + "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", + "\n DataNode = x.Identity.DataNode,", + "\n AocType = x.Identity.AocType,", + "\n Novelty = x.Identity.Novelty,", + "\n EconomicBasis = x.EconomicBasis,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition", + "\n })", + "\n : Enumerable.Empty();", "\n IEnumerable Csms => GetStorage().DataNodeDataBySystemName[Identity.DataNode].LiabilityType == LiabilityTypes.LIC", "\n ? Enumerable.Empty()", "\n : GetScope(Identity).RepeatOnce()", @@ -2191,23 +2245,82 @@ "\n AocType = x.Identity.AocType,", "\n Novelty = x.Identity.Novelty,", "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition })", + "\n Partition = GetStorage().TargetPartition", + "\n })", "\n : GetScope(Identity).RepeatOnce()", "\n .Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", "\n DataNode = x.Identity.DataNode,", "\n AocType = x.Identity.AocType,", "\n Novelty = x.Identity.Novelty,", "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition });", - "\n ", + "\n Partition = GetStorage().TargetPartition", + "\n });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ComputeIfrsVarsActuals : ActualToIfrsVariable, DeferrableToIfrsVariable, EaForPremiumToIfrsVariable, TmToIfrsVariable", + "\n{", + "\n IEnumerable CalculatedIfrsVariables => Actual.Concat(AdvanceActual)", + "\n .Concat(OverdueActual)", + "\n .Concat(ActEAForPremium)", + "\n .Concat(DeferrableActual)", + "\n .Concat(Csms)", + "\n .Concat(Loss);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ComputeIfrsVarsCashflows : PvToIfrsVariable, RaToIfrsVariable, DeferrableToIfrsVariable, EaForPremiumToIfrsVariable, TmToIfrsVariable", + "\n{", + "\n IEnumerable CalculatedIfrsVariables => PvLocked.Concat(PvCurrent)", + "\n .Concat(RaCurrent)", + "\n .Concat(RaLocked)", + "\n .Concat(AmortizationFactor)", + "\n .Concat(BeEAForPremium)", + "\n .Concat(DeferrableActual)", + "\n .Concat(Csms)", + "\n .Concat(Loss);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ComputeIfrsVarsOpenings : ActualToIfrsVariable, DeferrableToIfrsVariable, TmToIfrsVariable", + "\n{", + "\n IEnumerable CalculatedIfrsVariables => AdvanceActual.Concat(OverdueActual)", + "\n .Concat(DeferrableActual)", + "\n .Concat(Csms)", + "\n .Concat(Loss);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ComputeAllScopes: IScope //ComputeIfrsVariable", + "\n{", "\n IEnumerable CalculatedIfrsVariables => GetStorage().ImportFormat switch {", - "\n ImportFormats.Actual => Actual.Concat(AdvanceActual).Concat(OverdueActual).Concat(ActEAForPremium)", - "\n .Concat(DeferrableActual).Concat(Csms).Concat(Loss),", - "\n ImportFormats.Cashflow => PvLocked.Concat(PvCurrent).Concat(RaCurrent).Concat(RaLocked)", - "\n .Concat(amortizationFactor).Concat(BeEAForPremium)", - "\n .Concat(DeferrableActual).Concat(Csms).Concat(Loss),", - "\n ImportFormats.Opening => AdvanceActual.Concat(OverdueActual).Concat(DeferrableActual)", - "\n .Concat(Csms).Concat(Loss),", + "\n ImportFormats.Actual => GetScope(Identity).CalculatedIfrsVariables,", + "\n ImportFormats.Cashflow => GetScope(Identity).CalculatedIfrsVariables,", + "\n ImportFormats.Opening => GetScope(Identity).CalculatedIfrsVariables,", "\n };", "\n}" ], From 6ed2464c1c98763759e8e1ea9ae4336dce921652 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 13 Dec 2022 10:26:49 +0100 Subject: [PATCH 22/64] scenario for GOC removed --- ifrs17/DataModel/DataStructure.ipynb | 6 - ifrs17/Import/ImportScopeCalculation.ipynb | 209 ++++++++------------- ifrs17/Import/Importers.ipynb | 159 +++++++--------- ifrs17/Utils/Queries.ipynb | 1 - 4 files changed, 148 insertions(+), 227 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 73f04acf..d1f330ac 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1377,11 +1377,6 @@ "\n [Dimension(typeof(OciType))]", "\n //[Immutable]", "\n public string OciType { get; init; }", - "\n ", - "\n [NotVisible] ", - "\n [Dimension(typeof(Scenario))]", - "\n //[Immutable]", - "\n public string Scenario { get; init; }", "\n}" ], "metadata": {}, @@ -1687,7 +1682,6 @@ "\n public State PreviousState { get; init; }", "\n ", "\n public bool IsReinsurance { get; init; }", - "\n public string Scenario { get; init; }", "\n public DataNodeData(){}", "\n}" ], diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index 84362cde..e3460248 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -2053,26 +2053,27 @@ "source": [ "public interface PvToIfrsVariable: IScope", "\n{", - "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n IEnumerable PvLocked => GetScope(Identity).PresentValues.Select(x => ", + "\n new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable PvCurrent => GetScope(Identity).PresentValues.Select(x => ", + "\n new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", "\n}" ], "metadata": {}, @@ -2084,26 +2085,27 @@ "source": [ "public interface RaToIfrsVariable: IScope", "\n{", - "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Select(x => new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", - "\n EstimateType = x.Identity.EstimateType, ", - "\n DataNode = x.Identity.Id.DataNode, ", - "\n AocType = x.Identity.Id.AocType, ", - "\n Novelty = x.Identity.Id.Novelty, ", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n IEnumerable RaCurrent => GetScope(Identity).PresentValues.Select(x => ", + "\n new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n ", + "\n IEnumerable RaLocked => GetScope(Identity).PresentValues.Select(x => ", + "\n new IfrsVariable{ EconomicBasis = x.EconomicBasis, ", + "\n EstimateType = x.Identity.EstimateType, ", + "\n DataNode = x.Identity.Id.DataNode, ", + "\n AocType = x.Identity.Id.AocType, ", + "\n Novelty = x.Identity.Id.Novelty, ", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", "\n}" ], "metadata": {}, @@ -2115,33 +2117,35 @@ "source": [ "public interface ActualToIfrsVariable: IScope", "\n{", - "\n IEnumerable Actual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", - "\n IEnumerable OverdueActual => GetScope(Identity).Actuals.Select(x => new IfrsVariable{ EstimateType = x.Identity.EstimateType,", - "\n DataNode = x.Identity.Id.DataNode,", - "\n AocType = x.Identity.Id.AocType,", - "\n Novelty = x.Identity.Id.Novelty,", - "\n AccidentYear = x.Identity.AccidentYear,", - "\n AmountType = x.Identity.AmountType,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n IEnumerable Actual => GetScope(Identity).Actuals.Select(x => ", + "\n new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n ", + "\n IEnumerable AdvanceActual => GetScope(Identity).Actuals.Select(x => ", + "\n new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", + "\n", + "\n IEnumerable OverdueActual => GetScope(Identity).Actuals.Select(x => ", + "\n new IfrsVariable{ EstimateType = x.Identity.EstimateType,", + "\n DataNode = x.Identity.Id.DataNode,", + "\n AocType = x.Identity.Id.AocType,", + "\n Novelty = x.Identity.Id.Novelty,", + "\n AccidentYear = x.Identity.AccidentYear,", + "\n AmountType = x.Identity.AmountType,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", "\n}" ], "metadata": {}, @@ -2153,14 +2157,14 @@ "source": [ "public interface DeferrableToIfrsVariable: IScope", "\n{", - "\n IEnumerable DeferrableActual => GetScope(Identity).RepeatOnce().Select(x => new IfrsVariable{ EstimateType = x.EstimateType,", - "\n DataNode = x.Identity.DataNode,", - "\n AocType = x.Identity.AocType,", - "\n Novelty = x.Identity.Novelty,", - "\n AccidentYear = null,", - "\n Value = x.Value,", - "\n Partition = GetStorage().TargetPartition", - "\n });", + "\n IEnumerable DeferrableActual => GetScope(Identity).RepeatOnce().Select(x => ", + "\n new IfrsVariable{ EstimateType = x.EstimateType,", + "\n DataNode = x.Identity.DataNode,", + "\n AocType = x.Identity.AocType,", + "\n Novelty = x.Identity.Novelty,", + "\n AccidentYear = null,", + "\n Value = x.Value,", + "\n Partition = GetStorage().TargetPartition });", "\n}" ], "metadata": {}, @@ -2315,7 +2319,7 @@ { "cell_type": "code", "source": [ - "public interface ComputeAllScopes: IScope //ComputeIfrsVariable", + "public interface ComputeAllScopes: IScope", "\n{", "\n IEnumerable CalculatedIfrsVariables => GetStorage().ImportFormat switch {", "\n ImportFormats.Actual => GetScope(Identity).CalculatedIfrsVariables,", @@ -2327,57 +2331,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface ComputeIfrsVarsActuals : ActualToIfrsVariable, DeferrableToIfrsVariable, EaForPremiumToIfrsVariable, TmToIfrsVariable", - "\n{", - "\n IEnumerable CalculatedIfrsVariables => Actual.Concat(AdvanceActual)", - "\n .Concat(OverdueActual)", - "\n .Concat(ActEAForPremium)", - "\n .Concat(DeferrableActual)", - "\n .Concat(Csms)", - "\n .Concat(Loss);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface ComputeIfrsVarsCashflows : PvToIfrsVariable, RaToIfrsVariable, DeferrableToIfrsVariable, EaForPremiumToIfrsVariable, TmToIfrsVariable", - "\n{", - "\n IEnumerable CalculatedIfrsVariables => PvLocked.Concat(PvCurrent)", - "\n .Concat(RaCurrent)", - "\n .Concat(RaLocked)", - "\n .Concat(AmortizationFactor)", - "\n .Concat(BeEAForPremium)", - "\n .Concat(DeferrableActual)", - "\n .Concat(Csms)", - "\n .Concat(Loss);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface ComputeIfrsVarsOpenings : ActualToIfrsVariable, DeferrableToIfrsVariable, TmToIfrsVariable", - "\n{", - "\n IEnumerable CalculatedIfrsVariables => AdvanceActual.Concat(OverdueActual)", - "\n .Concat(DeferrableActual)", - "\n .Concat(Csms)", - "\n .Concat(Loss);", - "\n} " - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] -} +} \ No newline at end of file diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 4bc65be6..e9c0d0a4 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -622,108 +622,83 @@ "\n await storage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n var errors = new List();", - "\n var scenarioColumnInsurancePortfolio = dataSet.Tables[nameof(InsurancePortfolio)].Columns.Any(x => x.ColumnName == nameof(InsurancePortfolio.Scenario));", - "\n var scenarioColumnReinsurancePortfolio = dataSet.Tables[nameof(ReinsurancePortfolio)].Columns.Any(x => x.ColumnName == nameof(ReinsurancePortfolio.Scenario));", - "\n ", + "\n var errors = new List(); ", "\n var importLogPortfolios = await Import.FromDataSet(dataSet)", - "\n .WithType((dataset, datarow) => new InsurancePortfolio {", - "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", - "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", - "\n Partition = storage.TargetPartitionByReportingNode.Id,", - "\n ContractualCurrency = datarow.Field(nameof(DataNode.ContractualCurrency)),", - "\n FunctionalCurrency = storage.ReportingNode.Currency,", - "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", - "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", - "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = scenarioColumnInsurancePortfolio", - "\n ? datarow.Field(nameof(InsurancePortfolio.Scenario)) ", - "\n : (string)null", - "\n })", - "\n .WithType((dataset, datarow) =>new ReinsurancePortfolio {", - "\n SystemName = datarow.Field(nameof(DataNode.SystemName)),", - "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", - "\n Partition = storage.TargetPartitionByReportingNode.Id,", - "\n ContractualCurrency = datarow.Field(nameof(DataNode.ContractualCurrency)),", - "\n FunctionalCurrency = storage.ReportingNode.Currency,", - "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", - "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", - "\n OciType = datarow.Field(nameof(DataNode.OciType)),", - "\n Scenario = scenarioColumnReinsurancePortfolio", - "\n ? datarow.Field(nameof(ReinsurancePortfolio.Scenario)) ", - "\n : (string)null", - "\n })", + "\n .WithType((dataset, datarow) => ", + "\n new InsurancePortfolio { SystemName = datarow.Field(nameof(DataNode.SystemName)),", + "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", + "\n Partition = storage.TargetPartitionByReportingNode.Id,", + "\n ContractualCurrency = datarow.Field(nameof(DataNode.ContractualCurrency)),", + "\n FunctionalCurrency = storage.ReportingNode.Currency,", + "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", + "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", + "\n OciType = datarow.Field(nameof(DataNode.OciType)) })", + "\n .WithType((dataset, datarow) =>", + "\n new ReinsurancePortfolio { SystemName = datarow.Field(nameof(DataNode.SystemName)),", + "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", + "\n Partition = storage.TargetPartitionByReportingNode.Id,", + "\n ContractualCurrency = datarow.Field(nameof(DataNode.ContractualCurrency)),", + "\n FunctionalCurrency = storage.ReportingNode.Currency,", + "\n LineOfBusiness = datarow.Field(nameof(DataNode.LineOfBusiness)),", + "\n ValuationApproach = datarow.Field(nameof(DataNode.ValuationApproach)),", + "\n OciType = datarow.Field(nameof(DataNode.OciType)) })", "\n .WithTarget(workspace)", "\n .ExecuteAsync();", "\n ", "\n var portfolios = await workspace.Query().ToDictionaryAsync(x => x.SystemName);", - "\n var scenarioColumnGroupOfInsuranceContract = dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.Scenario));", - "\n var scenarioColumnGroupOfReinsuranceContract = dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.Scenario));", "\n var yieldCurveColumnGroupOfInsuranceContract = dataSet.Tables[nameof(GroupOfInsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfInsuranceContract.YieldCurveName));", "\n var yieldCurveColumnGroupOfReinsuranceContract = dataSet.Tables[nameof(GroupOfReinsuranceContract)].Columns.Any(x => x.ColumnName == nameof(GroupOfReinsuranceContract.YieldCurveName));", "\n", "\n var importLogGroupOfContracts = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", - "\n var gicSystemName = datarow.Field(nameof(DataNode.SystemName));", - "\n var pf = datarow.Field(nameof(InsurancePortfolio));", - "\n if(!portfolios.TryGetValue(pf, out var portfolioData))", - "\n {", - "\n ApplicationMessage.Log(Error.PortfolioGicNotFound, pf, gicSystemName);", - "\n return null;", - "\n }", - "\n var gic = new GroupOfInsuranceContract {", - "\n SystemName = gicSystemName,", - "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", - "\n Partition = storage.TargetPartitionByReportingNode.Id,", - "\n ContractualCurrency = portfolioData.ContractualCurrency,", - "\n FunctionalCurrency = portfolioData.FunctionalCurrency,", - "\n LineOfBusiness = portfolioData.LineOfBusiness,", - "\n ValuationApproach = portfolioData.ValuationApproach,", - "\n OciType = portfolioData.OciType,", - "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", - "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", - "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", - "\n Scenario = scenarioColumnGroupOfInsuranceContract", - "\n ? datarow.Field(nameof(GroupOfInsuranceContract.Scenario)) ", - "\n : (string)null,", - "\n Portfolio = pf,", - "\n YieldCurveName = yieldCurveColumnGroupOfInsuranceContract", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", - "\n : (string)null,", - "\n };", - "\n return ExtendGroupOfContract(gic, datarow);", - "\n })", + "\n var gicSystemName = datarow.Field(nameof(DataNode.SystemName));", + "\n var pf = datarow.Field(nameof(InsurancePortfolio));", + "\n if(!portfolios.TryGetValue(pf, out var portfolioData)) {", + "\n ApplicationMessage.Log(Error.PortfolioGicNotFound, pf, gicSystemName);", + "\n return null;", + "\n }", + "\n var gic = new GroupOfInsuranceContract { SystemName = gicSystemName,", + "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", + "\n Partition = storage.TargetPartitionByReportingNode.Id,", + "\n ContractualCurrency = portfolioData.ContractualCurrency,", + "\n FunctionalCurrency = portfolioData.FunctionalCurrency,", + "\n LineOfBusiness = portfolioData.LineOfBusiness,", + "\n ValuationApproach = portfolioData.ValuationApproach,", + "\n OciType = portfolioData.OciType,", + "\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 YieldCurveName = yieldCurveColumnGroupOfInsuranceContract", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n : (string)null };", + "\n return ExtendGroupOfContract(gic, datarow);", + "\n })", "\n .WithType((dataset, datarow) => {", - "\n var gricSystemName = datarow.Field(nameof(DataNode.SystemName));", - "\n var pf = datarow.Field(nameof(ReinsurancePortfolio));", - "\n if(!portfolios.TryGetValue(pf, out var portfolioData))", - "\n {", - "\n ApplicationMessage.Log(Error.PortfolioGicNotFound, pf, gricSystemName);", - "\n return null;", - "\n }", - "\n var gric = new GroupOfReinsuranceContract {", - "\n SystemName = gricSystemName,", - "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", - "\n Partition = storage.TargetPartitionByReportingNode.Id,", - "\n ContractualCurrency = portfolioData.ContractualCurrency,", - "\n FunctionalCurrency = portfolioData.FunctionalCurrency,", - "\n LineOfBusiness = portfolioData.LineOfBusiness,", - "\n ValuationApproach = portfolioData.ValuationApproach,", - "\n OciType = portfolioData.OciType,", - "\n AnnualCohort = Convert.ToInt32(datarow.Field(nameof(GroupOfContract.AnnualCohort))),", - "\n LiabilityType = datarow.Field(nameof(GroupOfContract.LiabilityType)),", - "\n Profitability = datarow.Field(nameof(GroupOfContract.Profitability)),", - "\n Scenario = scenarioColumnGroupOfReinsuranceContract", - "\n ? datarow.Field(nameof(GroupOfReinsuranceContract.Scenario)) ", - "\n : (string)null,", - "\n Portfolio = pf,", - "\n Partner = datarow.Field(nameof(GroupOfContract.Partner)),", - "\n YieldCurveName = yieldCurveColumnGroupOfReinsuranceContract", - "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", - "\n : (string)null,", - "\n };", - "\n return ExtendGroupOfContract(gric, datarow);", - "\n })", + "\n var gricSystemName = datarow.Field(nameof(DataNode.SystemName));", + "\n var pf = datarow.Field(nameof(ReinsurancePortfolio));", + "\n if(!portfolios.TryGetValue(pf, out var portfolioData)) {", + "\n ApplicationMessage.Log(Error.PortfolioGicNotFound, pf, gricSystemName);", + "\n return null;", + "\n }", + "\n var gric = new GroupOfReinsuranceContract { SystemName = gricSystemName,", + "\n DisplayName = datarow.Field(nameof(DataNode.DisplayName)),", + "\n Partition = storage.TargetPartitionByReportingNode.Id,", + "\n ContractualCurrency = portfolioData.ContractualCurrency,", + "\n FunctionalCurrency = portfolioData.FunctionalCurrency,", + "\n LineOfBusiness = portfolioData.LineOfBusiness,", + "\n ValuationApproach = portfolioData.ValuationApproach,", + "\n OciType = portfolioData.OciType,", + "\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 Partner = datarow.Field(nameof(GroupOfContract.Partner)),", + "\n YieldCurveName = yieldCurveColumnGroupOfReinsuranceContract", + "\n ? datarow.Field(nameof(GroupOfContract.YieldCurveName)) ", + "\n : (string)null };", + "\n return ExtendGroupOfContract(gric, datarow);", + "\n })", "\n .WithTarget(workspace)", "\n .ExecuteAsync();", "\n ", @@ -1323,4 +1298,4 @@ "outputs": [] } ] -} +} \ No newline at end of file diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 4721ecf0..879f1bb3 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -290,7 +290,6 @@ "\n LiabilityType = dn.LiabilityType,", "\n Profitability = dn.Profitability,", "\n Partner = dn.Partner,", - "\n Scenario = dn.Scenario, ", "\n IsReinsurance = dn.GetType() == typeof(GroupOfReinsuranceContract),", "\n };", "\n }", From 67d807e17876cbd63ae12d55cdb991c40cb8217d Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 10:35:48 +0100 Subject: [PATCH 23/64] YieldCurves new format added. --- .../Files/Parameters/YieldCurve.csv | 11 --- .../Files/Parameters/YieldCurve_2020_1.csv | 7 ++ .../Files/Parameters/YieldCurve_2020_12.csv | 7 ++ .../Files/Parameters/YieldCurve_2020_3.csv | 9 ++ .../Files/Parameters/YieldCurve_2021_3.csv | 8 ++ .../InitSystemorphRefDataToMemory.ipynb | 98 ++++++++++++++++++- ifrs17/Import/Importers.ipynb | 33 +++++-- 7 files changed, 154 insertions(+), 19 deletions(-) delete mode 100644 ifrs17-template/Files/Parameters/YieldCurve.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv diff --git a/ifrs17-template/Files/Parameters/YieldCurve.csv b/ifrs17-template/Files/Parameters/YieldCurve.csv deleted file mode 100644 index 892b7ee7..00000000 --- a/ifrs17-template/Files/Parameters/YieldCurve.csv +++ /dev/null @@ -1,11 +0,0 @@ -@@YieldCurve,,,,,, -Currency,Year,Month,Values0,Values1,Values2,Values3 -EUR,2020,3,0.008685495,0.008685495,0.018498471,0.019966839 -CHF,2020,3,0.002,0.002,0.002,0.002 -CHF,2021,3,0.1,0.1,0.1,0.1 -USD,2021,3,0.005,0.005,0.005,0.005 -USD,2020,12,0.002,0.002,0.002,0.002 -USD,2020,3,0.002,0.002,0.002,0.002 -USD,2020,1,0.002,0.002,0.002,0.002 -GBP,2021,3,0.005,0.005,0.005,0.005 -GBP,2020,3,0.002,0.002,0.002,0.002 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv new file mode 100644 index 00000000..c94e347e --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv @@ -0,0 +1,7 @@ +@@Main +Year,Month +2020,12 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +USD,0.002,0.002,0.002,0.002 + diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv new file mode 100644 index 00000000..c97a6549 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv @@ -0,0 +1,7 @@ +@@Main +Year,Month +2020,1 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +USD,0.002,0.002,0.002,0.002 + diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv new file mode 100644 index 00000000..c1cd9fb8 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv @@ -0,0 +1,9 @@ +@@Main +Year,Month +2020,3 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +EUR,0.008685495,0.008685495,0.018498471,0.019966839 +CHF,0.002,0.002,0.002,0.002 +USD,0.002,0.002,0.002,0.002 +GBP,0.002,0.002,0.002,0.002 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv new file mode 100644 index 00000000..ba2ade3d --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv @@ -0,0 +1,8 @@ +@@Main +Year,Month +2021,3 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0.1,0.1,0.1,0.1 +USD,0.005,0.005,0.005,0.005 +GBP,0.005,0.005,0.005,0.005 diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index b0125ccd..98856df5 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -154,7 +154,83 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/Parameters/YieldCurve.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "//var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync();", + "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", + "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", + "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", + "\n//log", + "\n", + "\n//Iamport.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", + "\n Activity.Start();", + "\n // Parsing Main", + "\n var file = \"../Files/Parameters/YieldCurve_2020_1.csv\";", + "\n var extension = System.IO.Path.GetExtension(file);", + "\n var stream = await Project.FileStorage.ReadAsync(file);", + "\n", + "\n var mainTab = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet.Tables[Main];\",", + "\n //var mainTab = dataSet.Tables[Main];", + "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", + "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n ", + "\n var main = mainTab.Rows.First();", + "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", + "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", + "\n ", + "\n // Create Parsing Storage, maybe not needed", + "\n var parsingStorage = new ParsingStorage(args, DataSource, workspace);", + "\n await parsingStorage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var importLog = await Import.FromDataSet(dataSet)", + "\n .WithType((dataset, datarow) => {", + "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", + "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", + "\n var item = new YieldCurve {", + "\n Year = year,", + "\n Month = month, ", + "\n Scenario = scenario,", + "\n Values = values", + "\n };", + "\n return item;", + "\n }).WithTarget(workspace).ExecuteAsync(); ", + "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n ", + "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n ", + "\n ", + "\n", + "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog); ", + "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", + "\n ", + "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", + "\n if (!newYieldCurves.Any()){", + "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", + "\n return Activity.Finish().Merge(parsingLog);", + "\n }", + "\n ", + "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", + "\n await DataSource.CommitAsync();", + "\n", + "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", + "\n .Select(x => new ImportArgs( x.ReportingNode,", + "\n x.Year, ", + "\n x.Month,", + "\n Periodicity.Quarterly,", + "\n x.Scenario,", + "\n ImportFormats.Cashflow)).ToArray();", + "\n", + "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", + "\n", + "\n return Activity.Finish().Merge(parsingLog);//.Merge(calculationLog);", + "\n//});" ], "metadata": {}, "execution_count": 0, @@ -208,7 +284,25 @@ { "cell_type": "code", "source": [ - "" + "DataSource.Query()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "DataSource.Query()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index badffd68..a0d0d2da 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -596,24 +596,45 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", + "\n // Parsing Main", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n ", "\n var main = mainTab.Rows.First();", "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var year = (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Year)], typeof(int));", - "\n var month = (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Year)], typeof(int));", + "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", + "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", "\n ", + "\n // Create Parsing Storage, maybe not needed", + "\n var parsingStorage = new ParsingStorage(args, DataSource, workspace);", + "\n await parsingStorage.InitializeAsync();", + "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n ", + "\n var importLog = await Import.FromDataSet(dataSet)", + "\n .WithType((dataset, datarow) => {", + "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", + "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", + "\n var item = new YieldCurve {", + "\n Year = year,", + "\n Month = month, ", + "\n Scenario = scenario,", + "\n Values = values", + "\n };", + "\n return item;", + "\n }).WithTarget(workspace).ExecuteAsync(); ", "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", "\n ", + "\n ", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", "\n ", - "\n var parsingLog = await Import.FromDataSet(dataSet).WithType().WithTarget(workspace).ExecuteAsync(); ", + "\n ", + "\n", "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog); ", "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", "\n ", @@ -623,7 +644,7 @@ "\n return Activity.Finish().Merge(parsingLog);", "\n }", "\n ", - "\n await DataSource.UpdateAsync(newYieldCurves);", + "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", "\n await DataSource.CommitAsync();", "\n", "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", From f552dacdbe03600e4642366474f0d9903dc98836 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 13 Dec 2022 10:44:53 +0100 Subject: [PATCH 24/64] more readable relaxed query util method --- ifrs17/Utils/Queries.ipynb | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 879f1bb3..41661a18 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -431,20 +431,21 @@ "\n where T : IPartitioned ", "\n where P : IPartition", "\n{", - "\n var variables = await workspace.LoadPartitionedDataAsync(targetPartition);", + "\n var isRelaxed = (format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) || ", + "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable));", "\n", - "\n if(targetPartition != defaultPartition) {", - "\n var isRelaxed = (format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) || ", - "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable));", - "\n // For scenario re-calculation", - "\n if(!variables.Any() && isRelaxed) variables = await dataSource.LoadPartitionedDataAsync(targetPartition); ", - "\n // For scenarios related to parameters solely", - "\n if(!variables.Any() && isRelaxed) variables = await dataSource.LoadPartitionedDataAsync(defaultPartition);", - "\n }", - "\n ", + "\n var variablesFromWorkspace = await workspace.LoadPartitionedDataAsync(targetPartition);", + "\n if(targetPartition == defaultPartition || !isRelaxed || variablesFromWorkspace.Any()) return variablesFromWorkspace; ", + "\n", + "\n // For scenario re-calculation", + "\n var variablesFromDataSource = await dataSource.LoadPartitionedDataAsync(targetPartition);", + "\n if(variablesFromDataSource.Any()) return variablesFromDataSource;", + "\n", + "\n // For scenarios related to parameters solely", + "\n var variablesDefault = await dataSource.LoadPartitionedDataAsync(defaultPartition);", "\n await workspace.Partition.SetAsync

(targetPartition);", "\n await dataSource.Partition.SetAsync

(targetPartition);", - "\n return variables;", + "\n return variablesDefault;", "\n} " ], "metadata": {}, From 5c5718393c9517ecfc128def14c1281c4669d6f0 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 12:08:23 +0100 Subject: [PATCH 25/64] warning triggering multiple calculation --- ifrs17/Constants/Validations.ipynb | 3 ++- ifrs17/Import/Importers.ipynb | 30 ++++++++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index e4db9b6c..bec0e120 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -51,7 +51,7 @@ "source": [ "public enum Warning {", "\n // Import", - "\n ActiveDataNodeWithCashflowBOPI, VariablesAlreadyImported, VariablesAlreadyCalculated,", + "\n ActiveDataNodeWithCashflowBOPI, VariablesAlreadyImported, VariablesAlreadyCalculated, PartitionCalculationsTriggered,", "\n // Default", "\n Generic", "\n}; " @@ -182,6 +182,7 @@ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", + "\n (Warning.PartitionCalculationsTriggered, 1) => $\"Importing a Best Estimate file outdates Sensitivities calculations for the same Period. The following Scenario will be recalculated: {s[0]}.\", ", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", "\n (_ , _) => $\"Warning not found.\"", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index e9c0d0a4..4327914c 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1021,19 +1021,22 @@ "\n Activity.Start();", "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", - "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", "\n var targetArgs = mainArgs.Scenario == null ", "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", + "\n", + "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.PartitionCalculationsTriggered, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", + "\n ", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", + "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", + "\n", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, args == mainArgs));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", @@ -1134,6 +1137,15 @@ "\n Activity.Start();", "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", + "\n", + "\n var targetArgs = mainArgs.Scenario == null ", + "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", + "\n : mainArgs.RepeatOnce();", + "\n", + "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.PartitionCalculationsTriggered, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", + "\n ", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", @@ -1141,12 +1153,6 @@ "\n var log = await ParseActualsToWorkspaceAsync(dataSet, mainArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", - "\n var targetArgs = mainArgs.Scenario == null ? ", - "\n mainArgs.RepeatOnce() :", - "\n mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Actual)).ToArrayAsync());", - "\n", "\n foreach (var args in targetArgs) {", "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", From c2a779fc190e3b45cd72a4e01a739b64c2d5df45 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 13:14:14 +0100 Subject: [PATCH 26/64] cleanup the importer --- .../InitSystemorphRefDataToMemory.ipynb | 57 +++++++++++-------- ifrs17/Import/Importers.ipynb | 28 +++------ 2 files changed, 41 insertions(+), 44 deletions(-) diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index 98856df5..c537dd12 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -160,15 +160,14 @@ "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", "\n//log", "\n", - "\n//Iamport.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", - "\n Activity.Start();", - "\n // Parsing Main", - "\n var file = \"../Files/Parameters/YieldCurve_2020_1.csv\";", + "\n var file = \"../Files/Parameters/YieldCurve_2021_3.csv\";", "\n var extension = System.IO.Path.GetExtension(file);", "\n var stream = await Project.FileStorage.ReadAsync(file);", + "\n var dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", "\n", - "\n var mainTab = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet.Tables[Main];\",", - "\n //var mainTab = dataSet.Tables[Main];", + "\n Activity.Start();", + "\n // Parsing Main", + "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", @@ -179,18 +178,17 @@ "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", - "\n ", - "\n // Create Parsing Storage, maybe not needed", - "\n var parsingStorage = new ParsingStorage(args, DataSource, workspace);", - "\n await parsingStorage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", + "\n", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n ", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", "\n var item = new YieldCurve {", + "\n Currency = currency,", "\n Year = year,", "\n Month = month, ", "\n Scenario = scenario,", @@ -199,25 +197,17 @@ "\n return item;", "\n }).WithTarget(workspace).ExecuteAsync(); ", "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n ", - "\n ", - "\n", - "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog); ", "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", - "\n ", "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", "\n if (!newYieldCurves.Any()){", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(parsingLog);", + "\n return Activity.Finish().Merge(importLog);", "\n }", "\n ", "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", "\n await DataSource.CommitAsync();", - "\n", "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", "\n .Select(x => new ImportArgs( x.ReportingNode,", @@ -228,9 +218,26 @@ "\n ImportFormats.Cashflow)).ToArray();", "\n", "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", - "\n", - "\n return Activity.Finish().Merge(parsingLog);//.Merge(calculationLog);", - "\n//});" + "\n return Activity.Finish().Merge(importLog);", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "DataSource.Query()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "DataSource.Reset(DataSource.Reset(x => x.ResetType()))" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 13e4c1e9..2e0e80db 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -596,7 +596,7 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n // Parsing Main", + "\n // Parsing Main ", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", @@ -608,18 +608,17 @@ "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", - "\n ", - "\n // Create Parsing Storage, maybe not needed", - "\n var parsingStorage = new ParsingStorage(args, DataSource, workspace);", - "\n await parsingStorage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", + "\n", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n ", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", "\n var item = new YieldCurve {", + "\n Currency = currency,", "\n Year = year,", "\n Month = month, ", "\n Scenario = scenario,", @@ -628,25 +627,17 @@ "\n return item;", "\n }).WithTarget(workspace).ExecuteAsync(); ", "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n ", - "\n ", - "\n", - "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog); ", "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", - "\n ", "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", "\n if (!newYieldCurves.Any()){", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(parsingLog);", + "\n return Activity.Finish().Merge(importLog);", "\n }", "\n ", "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", "\n await DataSource.CommitAsync();", - "\n", "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", "\n .Select(x => new ImportArgs( x.ReportingNode,", @@ -657,8 +648,7 @@ "\n ImportFormats.Cashflow)).ToArray();", "\n", "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", - "\n", - "\n return Activity.Finish().Merge(parsingLog);//.Merge(calculationLog);", + "\n return Activity.Finish().Merge(importLog);", "\n});" ], "metadata": {}, From f4869529bae7fac902e8e67204bc65f1fc20fa7a Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 13:30:43 +0100 Subject: [PATCH 27/64] comments on warning implemented --- ifrs17/Constants/Validations.ipynb | 4 ++-- ifrs17/Import/Importers.ipynb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index bec0e120..50863fd9 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -51,7 +51,7 @@ "source": [ "public enum Warning {", "\n // Import", - "\n ActiveDataNodeWithCashflowBOPI, VariablesAlreadyImported, VariablesAlreadyCalculated, PartitionCalculationsTriggered,", + "\n ActiveDataNodeWithCashflowBOPI, VariablesAlreadyImported, VariablesAlreadyCalculated, ScenarioReCalculations,", "\n // Default", "\n Generic", "\n}; " @@ -182,7 +182,7 @@ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", - "\n (Warning.PartitionCalculationsTriggered, 1) => $\"Importing a Best Estimate file outdates Sensitivities calculations for the same Period. The following Scenario will be recalculated: {s[0]}.\", ", + "\n (Warning.ScenarioReCalculations , 1) => $\"The import of the current file for the Best Estimate scenario makes the result of dependent Scenarios out of date. Hence, the following Scenarios are recalculated: {s[0]}.\", ", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", "\n (_ , _) => $\"Warning not found.\"", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 4327914c..74cf1583 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -1028,7 +1028,7 @@ "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", "\n", - "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.PartitionCalculationsTriggered, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", + "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", "\n ", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -1144,7 +1144,7 @@ "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", "\n : mainArgs.RepeatOnce();", "\n", - "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.PartitionCalculationsTriggered, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", + "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", "\n ", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", From e4c08d77eb6d1ec936ce4955896c7be1c2a96341 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 14:43:04 +0100 Subject: [PATCH 28/64] test clean up --- .../InitSystemorphRefDataToMemory.ipynb | 89 ++----------------- ifrs17/Import/Importers.ipynb | 10 +-- 2 files changed, 10 insertions(+), 89 deletions(-) diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index c537dd12..2cb7df96 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -154,90 +154,11 @@ { "cell_type": "code", "source": [ - "//var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync();", - "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", - "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", - "\n//log.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync());", - "\n//log", - "\n", - "\n var file = \"../Files/Parameters/YieldCurve_2021_3.csv\";", - "\n var extension = System.IO.Path.GetExtension(file);", - "\n var stream = await Project.FileStorage.ReadAsync(file);", - "\n var dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", - "\n", - "\n Activity.Start();", - "\n // Parsing Main", - "\n var mainTab = dataSet.Tables[Main];", - "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", - "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n ", - "\n var main = mainTab.Rows.First();", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", - "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", - "\n", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n ", - "\n var importLog = await Import.FromDataSet(dataSet)", - "\n .WithType((dataset, datarow) => {", - "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", - "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", - "\n var item = new YieldCurve {", - "\n Currency = currency,", - "\n Year = year,", - "\n Month = month, ", - "\n Scenario = scenario,", - "\n Values = values", - "\n };", - "\n return item;", - "\n }).WithTarget(workspace).ExecuteAsync(); ", - "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", - "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n ", - "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", - "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", - "\n if (!newYieldCurves.Any()){", - "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(importLog);", - "\n }", - "\n ", - "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", - "\n await DataSource.CommitAsync();", - "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", - "\n .Select(x => new ImportArgs( x.ReportingNode,", - "\n x.Year, ", - "\n x.Month,", - "\n Periodicity.Quarterly,", - "\n x.Scenario,", - "\n ImportFormats.Cashflow)).ToArray();", - "\n", - "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", - "\n return Activity.Finish().Merge(importLog);", - "\n" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Reset(DataSource.Reset(x => x.ResetType()))" + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 3f8c3d2b..c2924f30 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -596,7 +596,7 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n // Parsing Main ", + "\n // Parsing Main", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", @@ -608,10 +608,10 @@ "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", - "\n", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n ", + "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", @@ -626,7 +626,7 @@ "\n };", "\n return item;", "\n }).WithTarget(workspace).ExecuteAsync(); ", - "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n ", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", @@ -636,7 +636,7 @@ "\n return Activity.Finish().Merge(importLog);", "\n }", "\n ", - "\n await DataSource.UpdateAsync(newYieldCurves.Concat(oldYieldCurves));", + "\n await DataSource.UpdateAsync(newYieldCurves);", "\n await DataSource.CommitAsync();", "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", From f09aff19480d2552788405d9f124e4379a923993 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 13 Dec 2022 17:58:18 +0100 Subject: [PATCH 29/64] YieldCurve Importer now trigger calculation --- .../InitSystemorphRefDataToMemory.ipynb | 27 ---- .../Test/ScenarioYieldCurveImportTest.ipynb | 151 ++++++++++++++++++ ifrs17/Import/Importers.ipynb | 63 ++++++-- 3 files changed, 203 insertions(+), 38 deletions(-) create mode 100644 ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index 2cb7df96..b05be8ff 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -208,33 +208,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync();" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb new file mode 100644 index 00000000..754ed36d --- /dev/null +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -0,0 +1,151 @@ +{ + "metadata": { + "authors": [], + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Scenario Yiled Curve Import Test

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "DataSource.Reset(x => x.ResetType().ResetType());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Best Estimate Initialization" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var cashflowBestEstimateInit = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", + "\nDT1.1,NIC,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", + "\nDT1.1,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", + "\nDT1.1,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", + "\nDTR1.1,PR,CL,C,,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0", + "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", + "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", + "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowBestEstimateInit).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var ivsBestEstimateInit = await DataSource.Query().ToArrayAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Scenario Yield Curve Import" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var yieldCurveScenario = @\"", + "\n@@Main", + "\nYear,Month,Scenario", + "\n2020,12,YCUP1.0pct", + "\n@@YieldCurve", + "\nCurrency,Values0,Values1,Values2,Values3", + "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", + "\nCHF,0.102,0.102,0.102,0.102", + "\nUSD,0.102,0.102,0.102,0.102", + "\nGBP,0.102,0.102,0.102,0.102", + "\n\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(yieldCurveScenario).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index c2924f30..72252652 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -135,6 +135,9 @@ "\n ImportFormats.Opening => aocConfigurationByAocStep.Where(x => x.InputSource.Contains(InputSource.Opening) && x.DataType == DataType.Optional).GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", "\n ImportFormats.SimpleValue => aocConfigurationByAocStep.GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).Concat((await dataSource.Query().ToArrayAsync())", "\n .Select(vt => new AocStep(vt.SystemName,null))).ToHashSet(),", + "\n ImportFormats.YieldCurve => aocConfigurationByAocStep.Where(x => x.InputSource.Contains(InputSource.Cashflow) &&", + "\n !new DataType[]{DataType.Calculated, DataType.CalculatedTelescopic}.Contains(x.DataType) )", + "\n .GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", "\n _ => Enumerable.Empty().ToHashSet(),", "\n };", "\n ", @@ -591,6 +594,52 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public async Task CalculationYieldCurvesAsync(int year, int month, string scenario)", + "\n{ ", + "\n ", + "\n Activity.Start();", + "\n // we have already overwritten the new one, we need to only retrigger the calculations", + "\n var scenarioYieldCurve = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == year && x.Month == month && x.Scenario != null)", + "\n .Select(x => x.Scenario).ToHashSet();", + "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", + "\n // = all", + "\n var targetPartitions = scenario == null", + "\n ? (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == year && x.Month == month && !scenarioYieldCurve.Contains(x.Scenario))", + "\n : (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == null);", + "\n", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n", + "\n var log = Activity.Finish();", + "\n foreach(var pt in targetPartitions)", + "\n {", + "\n var targetScenario = scenario != null ", + "\n ? scenario", + "\n : pt.Scenario;", + "\n ", + "\n var args = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), targetScenario, ImportFormats.Cashflow);", + "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n Year = args.Year,", + "\n Month = args.Month,", + "\n ReportingNode = args.ReportingNode, ", + "\n Scenario = args.Scenario } } );", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false));", + "\n if(log.Errors.Any()) return log;", + "\n }", + "\n return log;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -638,17 +687,9 @@ "\n ", "\n await DataSource.UpdateAsync(newYieldCurves);", "\n await DataSource.CommitAsync();", - "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", - "\n .Select(x => new ImportArgs( x.ReportingNode,", - "\n x.Year, ", - "\n x.Month,", - "\n Periodicity.Quarterly,", - "\n x.Scenario,", - "\n ImportFormats.Cashflow)).ToArray();", - "\n", - "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", - "\n return Activity.Finish().Merge(importLog);", + "\n ", + "\n var calculationLog = await CalculationYieldCurvesAsync(year, month, scenario);", + "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", "\n});" ], "metadata": {}, From 236a2b73d66d55e0adcb61fed3f1d1cf9559831f Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 13 Dec 2022 18:33:16 +0100 Subject: [PATCH 30/64] fix report variables benchmark --- ...marks_2020_12_CH_MTUP10pct_Contractual.csv | 168 ------------------ 1 file changed, 168 deletions(-) diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv index 14bf94d8..86b67a8f 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv @@ -1,43 +1,5 @@ @@ReportVariable AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis,EstimateType,FunctionalCurrency,GroupOfContract,InitialProfitability,IsReinsurance,LiabilityType,LineOfBusiness,Novelty,OciType,Partner,Portfolio,Projection,ReportingNode,Scenario,ValuationApproach,Value,VariableType -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AM 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU @@ -58,24 +20,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU 0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU @@ -176,44 +120,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE2 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,ISE12 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI2 -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0,AM 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU @@ -234,24 +140,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU 0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU @@ -330,44 +218,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.09226,IA -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AM 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU @@ -388,24 +238,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU 0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU From 33a8a92f38d1d9f3943c29e9bb6af15f64f7e217 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 14 Dec 2022 15:05:07 +0100 Subject: [PATCH 31/64] test coverage improved --- .../Test/ScenarioYieldCurveImportTest.ipynb | 194 +++++++++++++++++- ifrs17/Constants/Validations.ipynb | 1 + ifrs17/Import/ImportStorage.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 4 +- 4 files changed, 195 insertions(+), 6 deletions(-) diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 754ed36d..d4e6ab3e 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -36,7 +36,20 @@ { "cell_type": "code", "source": [ - "DataSource.Reset(x => x.ResetType().ResetType());" + "DataSource.Reset(x => x.ResetType().ResetType().ResetType());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog" ], "metadata": {}, "execution_count": 0, @@ -46,7 +59,8 @@ "cell_type": "code", "source": [ "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "\nvar argsScenarioYieldCurve = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"YCUP1.0pct\", ImportFormats.Cashflow);", + "\nvar argsScenarioTransactionalData = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"SRUP1.0pct\", ImportFormats.Cashflow);" ], "metadata": {}, "execution_count": 0, @@ -92,6 +106,26 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var actualsBestEstimateInit = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,", + "\n@@Actual", + "\nDataNode,AocType,ValueType,AccidentYear,Value", + "\nDT1.1,CF,ACA,,-10", + "\nDT1.1,CF,AEA,,-5", + "\nDT1.1,CF,NIC,,-280", + "\nDT1.1,CF,PR,,400", + "\nDTR1.1,CF,PR,,-200", + "\nDTR1.1,CF,NIC,,140\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -101,6 +135,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(actualsBestEstimateInit).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -141,7 +184,152 @@ { "cell_type": "code", "source": [ - "" + "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", + "\nvar ivsScenarioYieldCurve = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = (ivsScenarioYieldCurve.Where(x => Math.Abs(x.Value) > Precision).ToArray()).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Further Import of the same Yield Curve should not retrigger IFRS17 Calculations" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var log = await Import.FromString(yieldCurveScenario).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nvar ivsScenarioYieldCurveReimport = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioYieldCurve.Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());", + "\ndiffs.ToArray().Length.Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Scenario Transactional Data Import" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var cashflowScenarioTransactionalData = @\"", + "\n@@Main", + "\nReportingNode,Year,Month,Scenario", + "\nCH,2020,12,SRUP1.0pct", + "\n@@Cashflow", + "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", + "\nDT1.1,NIC,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", + "\nDT1.1,CU,CL,C,,-11,-11,-11,-11,-11,-11,-13,-11,-11,-11,-11,-11,-11,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", + "\nDT1.1,RA,CL,C,,-5.0,-2.5,-2.5,-2.5,-2.5,-2.7,-2.5,-2.4,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", + "\nDTR1.1,PR,CL,C,,58,0,0,56,0,0,54,0,0,50,0,8,50,0,0,50,0,0,50,0,0,50,0,0", + "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", + "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", + "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowScenarioTransactionalData).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenarioTransactionalData);", + "\nvar ivsScenarioTransactionalData = await DataSource.Query().ToArrayAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var bestEstimateYieldCurve = @\"", + "\n@@Main", + "\nYear,Month", + "\n2020,12", + "\n@@YieldCurve", + "\nCurrency,Values0,Values1,Values2,Values3", + "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", + "\nCHF,0.102,0.012,0.102,0.102", + "\nUSD,0.102,0.102,0.102,0.102", + "\nGBP,0.102,0.102,0.102,0.102", + "\n\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(bestEstimateYieldCurve).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nvar ivsBestEstimateYieldCurve = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = (ivsBestEstimateYieldCurve).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenarioTransactionalData);", + "\nvar ivsScenarioTransactionalDataRecalculation = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioTransactionalDataRecalculation.Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", + "\nvar ivsScenarioTransactionalDataRecalculation = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioTransactionalDataRecalculation.Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 50863fd9..8ea597e1 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -182,6 +182,7 @@ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", + "\n (Warning.VariablesAlreadyImported , 0) => $\"The import of the current file does not contain any new data. Hence, no data will be saved or calculations performed\",", "\n (Warning.ScenarioReCalculations , 1) => $\"The import of the current file for the Best Estimate scenario makes the result of dependent Scenarios out of date. Hence, the following Scenarios are recalculated: {s[0]}.\", ", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 8df5badf..f2cc68eb 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -145,7 +145,7 @@ "\n await hierarchyCache.InitializeAsync();", "\n ", "\n //EstimateType to load and to update", - "\n EstimateTypesByImportFormat = new InputSource[] { InputSource.Opening, InputSource.Actual, InputSource.Cashflow,}", + "\n EstimateTypesByImportFormat = new InputSource[] { InputSource.Opening, InputSource.Actual, InputSource.Cashflow, }", "\n .ToDictionary(x => x.ToString(), ", "\n x => estimateTypes", "\n .Where(et => et.InputSource.Contains(x))", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 72252652..44b6dade 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -135,8 +135,8 @@ "\n ImportFormats.Opening => aocConfigurationByAocStep.Where(x => x.InputSource.Contains(InputSource.Opening) && x.DataType == DataType.Optional).GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", "\n ImportFormats.SimpleValue => aocConfigurationByAocStep.GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).Concat((await dataSource.Query().ToArrayAsync())", "\n .Select(vt => new AocStep(vt.SystemName,null))).ToHashSet(),", - "\n ImportFormats.YieldCurve => aocConfigurationByAocStep.Where(x => x.InputSource.Contains(InputSource.Cashflow) &&", - "\n !new DataType[]{DataType.Calculated, DataType.CalculatedTelescopic}.Contains(x.DataType) )", + "\n ImportFormats.YieldCurve => aocConfigurationByAocStep.Where(x => (x.InputSource.Contains(InputSource.Cashflow) || x.InputSource.Contains(InputSource.Actual) )&&", + "\n !new DataType[]{DataType.Calculated, DataType.CalculatedTelescopic}.Contains(x.DataType) ) // what's the meaning of that?", "\n .GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", "\n _ => Enumerable.Empty().ToHashSet(),", "\n };", From 899b7f9dc89d136d6ad08dc67101668245245afb Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 14 Dec 2022 18:51:21 +0100 Subject: [PATCH 32/64] some comments resolved --- ifrs17-template/Test/IfrsVariablesTest.ipynb | 12 ++++++------ ifrs17-template/Test/ScenarioDataImportTest.ipynb | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb index 8667e55e..66dc85a1 100644 --- a/ifrs17-template/Test/IfrsVariablesTest.ipynb +++ b/ifrs17-template/Test/IfrsVariablesTest.ipynb @@ -139,7 +139,7 @@ { "cell_type": "code", "source": [ - "public IfrsVariable CreateVariable (IDataRow row, Guid partition)", + "public IfrsVariable CreateVariable(IDataRow row, Guid partition)", "\n{", "\n if (!double.TryParse(row[nameof(IfrsVariable.Value)]?.ToString(), AllowedNumberStyles, CultureInfo.InvariantCulture, out var doubleValue))", "\n throw new Exception(\"Value cannot be parsed.\");", @@ -186,7 +186,7 @@ { "cell_type": "code", "source": [ - "public List CompareAgainstBm (List errors, IEnumerable expected, IEnumerable computed)", + "public List CompareAgainstBm(List errors, IEnumerable expected, IEnumerable computed)", "\n{", "\n var expectedNotComputed = expected.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Except(computed, EqualityComparer.Instance);", "\n var computedNotExpected = computed.Where(x => Math.Abs(x.Value) > BenchmarkPrecision).Except(expected, EqualityComparer.Instance);", @@ -198,10 +198,10 @@ "\n errors.Add(new BenchmarkTestResult(\"Extra computed variable for: Partition \" + variable.Partition + \", \" + variable.ToIdentityString()));", "\n", "\n var comparer = EqualityComparer.Instance; ", - "\n foreach (var a in expected) {", - "\n var b = computed.FirstOrDefault(y => comparer.Equals(a,y))?? null;", - "\n if(b == null || Math.Abs(a.Value + b.Value) < BenchmarkPrecision) continue;", - "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: Partition \" + a.Partition + \", \" + a.ToIdentityString(), -a.Value, b.Value));", + "\n foreach (var benchmarkVariable in expected) {", + "\n var computedVariable = computed.FirstOrDefault(y => comparer.Equals(benchmarkVariable,y))?? null;", + "\n if(computedVariable == null || Math.Abs(benchmarkVariable.Value + computedVariable.Value) < BenchmarkPrecision) continue;", + "\n errors.Add(new BenchmarkTestResult(\"Value does not match for Variable: Partition \" + benchmarkVariable.Partition + \", \" + benchmarkVariable.ToIdentityString(), -benchmarkVariable.Value, computedVariable.Value));", "\n }", "\n", "\n return errors;", diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index a0130899..dc115103 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -45,7 +45,7 @@ { "cell_type": "code", "source": [ - "var actualEstimateTypes = new[] {\"A\",\"AA\",\"OA\"};" + "var actualEstimateTypes = GetImportActualEstimateType();" ], "metadata": {}, "execution_count": 0, @@ -309,6 +309,7 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.C || x.EstimateType == EstimateTypes.L).ToArray().Length.Should().NotBe(0);", "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().NotBe(0);" ], "metadata": {}, @@ -428,8 +429,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + "\nivsScenarioActualNoACAAEA/*.Where(x => x.EstimateType == EstimateTypes.F && Math.Abs(x.Value) > Precision)*/.Count().Should().NotBe(0);", + "\nivsScenarioActualNoACAAEA/*.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision)*/.Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -529,7 +530,7 @@ { "cell_type": "markdown", "source": [ - "Reimport of best estimate with different gross cash flow, whereas reinsurance business is the same of the initialization. This causes an update of the best estimate IFRS variables but it must have no impact on Scenario variables because gross cash flow for Scenario have already been imported. " + "Reimport of best estimate with different gross cash flow, whereas reinsurance business is the same of the initialization. This causes an update of the best estimate IFRS variables but it must have no impact on Scenario variables because gross cash flow contains only a combination of AocType, Novelty and AmoutType that have already been imported for Scenario (see above the variable cashflowsScenarioEqualToBestEstimate). " ], "metadata": {}, "execution_count": 0, From 6dfd9e571b041a8ca683344f563e9cc8701cc017 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 15 Dec 2022 14:20:19 +0100 Subject: [PATCH 33/64] validation added --- ifrs17-template/Test/ScenarioDataImportTest.ipynb | 6 +++--- ifrs17/Constants/Validations.ipynb | 3 ++- ifrs17/Import/ImportStorage.ipynb | 4 ++-- ifrs17/Import/Importers.ipynb | 4 ++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index dc115103..6d23fb74 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -429,8 +429,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA/*.Where(x => x.EstimateType == EstimateTypes.F && Math.Abs(x.Value) > Precision)*/.Count().Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA/*.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision)*/.Count().Should().Be(0);" + "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.F).Count().Should().NotBe(0);", + "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -859,7 +859,7 @@ { "cell_type": "code", "source": [ - "" + "DataSource.Query()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 50863fd9..02f769a2 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -66,7 +66,7 @@ "public enum Error { ", "\n // Import", "\n NoMainTab, IncompleteMainTab, ParsingScientificNotation, ValueTypeNotFound, ValueTypeNotValid, ", - "\n ReportingNodeInMainNotFound, YearInMainNotFound, MonthInMainNotFound,", + "\n ReportingNodeInMainNotFound, YearInMainNotFound, MonthInMainNotFound, ScenarioInMainNotAvailable", "\n AocTypeNotValid, AocTypeCompulsoryNotFound, AocTypePositionNotSupported, AocConfigurationOrderNotUnique,", "\n // Partition", "\n PartitionNotFound, ParsedPartitionNotFound, PartititionNameNotFound, PartitionTypeNotFound,", @@ -117,6 +117,7 @@ "\n (Error.ReportingNodeInMainNotFound , _) => $\"Reporting Node missing from the Main tab.\",", "\n (Error.YearInMainNotFound , _) => $\"Year missing from the Main tab.\",", "\n (Error.MonthInMainNotFound , _) => $\"Month missing from the Main tab.\",", + "\n (Error.ScenarioInMainNotAvailable , 1) => $\"Scenario {s[0]} has not been defined.\",", "\n (Error.AocTypeNotValid , 1) => $\"The parsed AoC Type {s[0]} is invalid.\",", "\n (Error.AocTypeCompulsoryNotFound , _) => $\"Not all compulsory AoC Types have been imported.\",", "\n (Error.AocTypePositionNotSupported , 1) => $\"The position of the AoC Type {s[0]} is not supported.\",", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 8df5badf..ed46e91e 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -274,8 +274,8 @@ "\n", "\n if(DefaultPartition != TargetPartition) {", "\n await querySource.Partition.SetAsync(DefaultPartition);", - "\n var defaultRawVariables = await querySource.Query().Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync();", - "\n var defaultIfrsVariables = await querySource.Query().Where(iv => allImportScopes.Contains(iv.DataNode)).ToArrayAsync(); ", + "\n var defaultRawVariables = await querySource.Query().Where(rv => rv.Partition == DefaultPartition).Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync();", + "\n var defaultIfrsVariables = await querySource.Query().Where(iv => iv.Partition == DefaultPartition).Where(iv => allImportScopes.Contains(iv.DataNode)).ToArrayAsync(); ", "\n rawVariables = rawVariables.Union(defaultRawVariables, EqualityComparer.Instance);", "\n ifrsVariables = ifrsVariables.Union(defaultIfrsVariables, EqualityComparer.Instance);", "\n await querySource.Partition.SetAsync(TargetPartition);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 74cf1583..42c99e57 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -321,6 +321,10 @@ "\n var main = mainTab.Rows.First();", "\n var reportingNode = (string)main[nameof(ReportingNode)];", "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n var availableScenarios = await DataSource.Query().ToArrayAsync();", + "\n if(scenario != null || !availableScenarios.Contains(scenario)) ApplicationMessage.Log(Error.ScenarioInMainNotAvailable, scenario);", + "\n if(ApplicationMessage.HasErrors()) return null;", + "\n", "\n ImportArgs args;", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", From d31353aed79d1f23396a93567ceec07b9dce6030 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 16 Dec 2022 12:00:03 +0100 Subject: [PATCH 34/64] new args datamodel, bm with standard digits --- .../Test/Data/ExportIfrsVariable.ipynb | 22 +- .../BM_CH_2020_12_MTUP10pct_A.csv | 426 ++++-------------- .../BM_CH_2020_12_MTUP10pct_AA.csv | 420 ++++------------- .../BM_CH_2020_12_MTUP10pct_BE.csv | 104 ++--- .../BM_CH_2020_12_MTUP10pct_C.csv | 44 +- .../BM_CH_2020_12_MTUP10pct_DA.csv | 30 +- .../BM_CH_2020_12_MTUP10pct_F.csv | 4 +- .../BM_CH_2020_12_MTUP10pct_L.csv | 8 +- .../BM_CH_2020_12_MTUP10pct_LR.csv | 14 +- .../BM_CH_2020_12_MTUP10pct_OA.csv | 422 ++++------------- .../BM_CH_2020_12_MTUP10pct_RA.csv | 48 +- .../Test/ScenarioDataImportTest.ipynb | 9 - ifrs17/Constants/Validations.ipynb | 2 +- ifrs17/DataModel/DataStructure.ipynb | 37 +- 14 files changed, 417 insertions(+), 1173 deletions(-) diff --git a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb index 5e7d141f..0d64201c 100644 --- a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb +++ b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb @@ -97,7 +97,7 @@ { "cell_type": "code", "source": [ - "var estimateType = \"BEPA\";", + "/*var estimateType = \"BEPA\";", "\nawait Export.ToCsv(\"BM_\"+args.ReportingNode+\"_\"+args.Year.ToString()+\"_\"+args.Month.ToString()+\"_\"+scenario+\"_\"+estimateType)", "\n .WithTable(tableConfig => tableConfig", "\n .AtBeginning()", @@ -113,7 +113,7 @@ "\n .WithColumn(x => x.Id, x => x.Delete())", "\n )", "\n .WithSource(DataSource)", - "\n .ExecuteAsync()" + "\n .ExecuteAsync()*/" ], "metadata": {}, "execution_count": 0, @@ -122,7 +122,23 @@ { "cell_type": "code", "source": [ - "" + "var estimateType = \"LR\";", + "\nawait Export.ToCsv(\"BM_\"+args.ReportingNode+\"_\"+args.Year.ToString()+\"_\"+args.Month.ToString()+\"_\"+scenario+\"_\"+estimateType)", + "\n .WithTable(tableConfig => tableConfig", + "\n .AtBeginning()", + "\n .WithName(Main)", + "\n .WithSource(source => args.RepeatOnce().AsQueryable())", + "\n .WithColumn(x => x.Periodicity, x => x.Delete())", + "\n .WithColumn(x => x.ImportFormat, x => x.Delete())", + "\n )", + "\n .WithTable(tableConfig => tableConfig", + "\n .WithSource(source => computedVariables[estimateType].Select(x => x with {Value = Math.Round(x.Value, 5)}).AsQueryable())", + "\n .WithName(estimateType)", + "\n .WithColumn(x => x.Partition, x => x.Delete())", + "\n .WithColumn(x => x.Id, x => x.Delete())", + "\n )", + "\n .WithSource(DataSource)", + "\n .ExecuteAsync() " ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv index 9b0e07e1..c37ccf37 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv @@ -3,630 +3,364 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@A AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,A,C,0 -,NIC,CF,DT1.1,,A,C,-310 -,AEA,CF,DT1.1,,A,C,-5 -,ACA,CF,DT1.1,,A,C,-10 -,PR,CF,DT1.1,,A,C,400 -,,BOP,DT1.1,,A,I,0 -,NIC,BOP,DT1.1,,A,I,0 -,AEA,BOP,DT1.1,,A,I,0 -,ACA,BOP,DT1.1,,A,I,0 -,PR,BOP,DT1.1,,A,I,0 -,,EA,DT1.1,,A,C,0 -,NIC,EA,DT1.1,,A,C,0 -,AEA,EA,DT1.1,,A,C,0 -,ACA,EA,DT1.1,,A,C,0 -,PR,EA,DT1.1,,A,C,0 -,,AM,DT1.1,,A,C,0 -,NIC,AM,DT1.1,,A,C,0 -,AEA,AM,DT1.1,,A,C,0 -,ACA,AM,DT1.1,,A,C,0 -,PR,AM,DT1.1,,A,C,0 -,,EOP,DT1.1,,A,C,0 -,NIC,EOP,DT1.1,,A,C,0 -,AEA,EOP,DT1.1,,A,C,0 -,ACA,EOP,DT1.1,,A,C,0 -,PR,EOP,DT1.1,,A,C,0 -,,BOP,DT1.1,,A,N,0 -,NIC,BOP,DT1.1,,A,N,0 ,AEA,BOP,DT1.1,,A,N,0 ,ACA,BOP,DT1.1,,A,N,0 ,PR,BOP,DT1.1,,A,N,0 -,,IA,DT1.1,,A,N,0 +,NIC,BOP,DT1.1,,A,N,0 +,AEA,EOP,DT1.1,,A,C,0 +,ACA,EOP,DT1.1,,A,C,0 +,PR,EOP,DT1.1,,A,C,0 +,NIC,EOP,DT1.1,,A,C,0 +,AEA,AM,DT1.1,,A,C,0 +,ACA,AM,DT1.1,,A,C,0 +,PR,AM,DT1.1,,A,C,0 +,NIC,AM,DT1.1,,A,C,0 +,AEA,EA,DT1.1,,A,C,0 +,ACA,EA,DT1.1,,A,C,0 +,PR,EA,DT1.1,,A,C,0 +,NIC,EA,DT1.1,,A,C,0 +,AEA,BOP,DT1.1,,A,I,0 +,ACA,BOP,DT1.1,,A,I,0 +,PR,BOP,DT1.1,,A,I,0 +,NIC,BOP,DT1.1,,A,I,0 +,NIC,CF,DT1.1,,A,C,-310 +,PR,CF,DT1.1,,A,C,400 +,ACA,CF,DT1.1,,A,C,-10 +,AEA,CF,DT1.1,,A,C,-5 ,NIC,IA,DT1.1,,A,N,0 -,AEA,IA,DT1.1,,A,N,0 -,ACA,IA,DT1.1,,A,N,0 ,PR,IA,DT1.1,,A,N,0 -,,MC,DT1.1,,A,I,0 +,ACA,IA,DT1.1,,A,N,0 +,AEA,IA,DT1.1,,A,N,0 ,NIC,MC,DT1.1,,A,I,0 -,AEA,MC,DT1.1,,A,I,0 -,ACA,MC,DT1.1,,A,I,0 ,PR,MC,DT1.1,,A,I,0 -,,RCU,DT1.1,,A,I,0 +,ACA,MC,DT1.1,,A,I,0 +,AEA,MC,DT1.1,,A,I,0 ,NIC,RCU,DT1.1,,A,I,0 -,AEA,RCU,DT1.1,,A,I,0 -,ACA,RCU,DT1.1,,A,I,0 ,PR,RCU,DT1.1,,A,I,0 -,,CF,DT1.1,,A,I,0 +,ACA,RCU,DT1.1,,A,I,0 +,AEA,RCU,DT1.1,,A,I,0 ,NIC,CF,DT1.1,,A,I,0 -,AEA,CF,DT1.1,,A,I,0 -,ACA,CF,DT1.1,,A,I,0 ,PR,CF,DT1.1,,A,I,0 -,,IA,DT1.1,,A,I,0 +,ACA,CF,DT1.1,,A,I,0 +,AEA,CF,DT1.1,,A,I,0 ,NIC,IA,DT1.1,,A,I,0 -,AEA,IA,DT1.1,,A,I,0 -,ACA,IA,DT1.1,,A,I,0 ,PR,IA,DT1.1,,A,I,0 -,,AU,DT1.1,,A,I,0 +,ACA,IA,DT1.1,,A,I,0 +,AEA,IA,DT1.1,,A,I,0 ,NIC,AU,DT1.1,,A,I,0 -,AEA,AU,DT1.1,,A,I,0 -,ACA,AU,DT1.1,,A,I,0 ,PR,AU,DT1.1,,A,I,0 -,,YCU,DT1.1,,A,I,0 +,ACA,AU,DT1.1,,A,I,0 +,AEA,AU,DT1.1,,A,I,0 ,NIC,YCU,DT1.1,,A,I,0 -,AEA,YCU,DT1.1,,A,I,0 -,ACA,YCU,DT1.1,,A,I,0 ,PR,YCU,DT1.1,,A,I,0 -,,CRU,DT1.1,,A,I,0 +,ACA,YCU,DT1.1,,A,I,0 +,AEA,YCU,DT1.1,,A,I,0 ,NIC,CRU,DT1.1,,A,I,0 -,AEA,CRU,DT1.1,,A,I,0 -,ACA,CRU,DT1.1,,A,I,0 ,PR,CRU,DT1.1,,A,I,0 -,,EV,DT1.1,,A,I,0 +,ACA,CRU,DT1.1,,A,I,0 +,AEA,CRU,DT1.1,,A,I,0 ,NIC,EV,DT1.1,,A,I,0 -,AEA,EV,DT1.1,,A,I,0 -,ACA,EV,DT1.1,,A,I,0 ,PR,EV,DT1.1,,A,I,0 -,,CF,DT1.1,,A,N,0 +,ACA,EV,DT1.1,,A,I,0 +,AEA,EV,DT1.1,,A,I,0 ,NIC,CF,DT1.1,,A,N,0 -,AEA,CF,DT1.1,,A,N,0 -,ACA,CF,DT1.1,,A,N,0 ,PR,CF,DT1.1,,A,N,0 -,,AU,DT1.1,,A,N,0 +,ACA,CF,DT1.1,,A,N,0 +,AEA,CF,DT1.1,,A,N,0 ,NIC,AU,DT1.1,,A,N,0 -,AEA,AU,DT1.1,,A,N,0 -,ACA,AU,DT1.1,,A,N,0 ,PR,AU,DT1.1,,A,N,0 -,,EV,DT1.1,,A,N,0 +,ACA,AU,DT1.1,,A,N,0 +,AEA,AU,DT1.1,,A,N,0 ,NIC,EV,DT1.1,,A,N,0 -,AEA,EV,DT1.1,,A,N,0 -,ACA,EV,DT1.1,,A,N,0 ,PR,EV,DT1.1,,A,N,0 -,,CL,DT1.1,,A,C,0 +,ACA,EV,DT1.1,,A,N,0 +,AEA,EV,DT1.1,,A,N,0 ,NIC,CL,DT1.1,,A,C,0 -,AEA,CL,DT1.1,,A,C,0 -,ACA,CL,DT1.1,,A,C,0 ,PR,CL,DT1.1,,A,C,0 +,ACA,CL,DT1.1,,A,C,0 +,AEA,CL,DT1.1,,A,C,0 2020,NIC,CF,DT1.2,,A,C,-310 -,NIC,CF,DT1.2,,A,C,0 -2020,,CF,DT1.2,,A,C,0 -,,CF,DT1.2,,A,C,0 2020,NIC,BOP,DT1.2,,A,I,0 -,NIC,BOP,DT1.2,,A,I,0 -2020,,BOP,DT1.2,,A,I,0 -,,BOP,DT1.2,,A,I,0 2020,NIC,EA,DT1.2,,A,C,0 -,NIC,EA,DT1.2,,A,C,0 -2020,,EA,DT1.2,,A,C,0 -,,EA,DT1.2,,A,C,0 2020,NIC,AM,DT1.2,,A,C,0 -,NIC,AM,DT1.2,,A,C,0 -2020,,AM,DT1.2,,A,C,0 -,,AM,DT1.2,,A,C,0 2020,NIC,EOP,DT1.2,,A,C,0 -,NIC,EOP,DT1.2,,A,C,0 -2020,,EOP,DT1.2,,A,C,0 -,,EOP,DT1.2,,A,C,0 2020,NIC,MC,DT1.2,,A,I,0 -,NIC,MC,DT1.2,,A,I,0 -2020,,MC,DT1.2,,A,I,0 -,,MC,DT1.2,,A,I,0 2020,NIC,RCU,DT1.2,,A,I,0 -,NIC,RCU,DT1.2,,A,I,0 -2020,,RCU,DT1.2,,A,I,0 -,,RCU,DT1.2,,A,I,0 2020,NIC,CF,DT1.2,,A,I,0 -,NIC,CF,DT1.2,,A,I,0 -2020,,CF,DT1.2,,A,I,0 -,,CF,DT1.2,,A,I,0 2020,NIC,IA,DT1.2,,A,I,0 -,NIC,IA,DT1.2,,A,I,0 -2020,,IA,DT1.2,,A,I,0 -,,IA,DT1.2,,A,I,0 2020,NIC,AU,DT1.2,,A,I,0 -,NIC,AU,DT1.2,,A,I,0 -2020,,AU,DT1.2,,A,I,0 -,,AU,DT1.2,,A,I,0 2020,NIC,YCU,DT1.2,,A,I,0 -,NIC,YCU,DT1.2,,A,I,0 -2020,,YCU,DT1.2,,A,I,0 -,,YCU,DT1.2,,A,I,0 2020,NIC,CRU,DT1.2,,A,I,0 -,NIC,CRU,DT1.2,,A,I,0 -2020,,CRU,DT1.2,,A,I,0 -,,CRU,DT1.2,,A,I,0 2020,NIC,EV,DT1.2,,A,I,0 -,NIC,EV,DT1.2,,A,I,0 -2020,,EV,DT1.2,,A,I,0 -,,EV,DT1.2,,A,I,0 2020,NIC,BOP,DT1.2,,A,N,0 -,NIC,BOP,DT1.2,,A,N,0 -2020,,BOP,DT1.2,,A,N,0 -,,BOP,DT1.2,,A,N,0 2020,NIC,CF,DT1.2,,A,N,0 -,NIC,CF,DT1.2,,A,N,0 -2020,,CF,DT1.2,,A,N,0 -,,CF,DT1.2,,A,N,0 2020,NIC,IA,DT1.2,,A,N,0 -,NIC,IA,DT1.2,,A,N,0 -2020,,IA,DT1.2,,A,N,0 -,,IA,DT1.2,,A,N,0 2020,NIC,AU,DT1.2,,A,N,0 -,NIC,AU,DT1.2,,A,N,0 -2020,,AU,DT1.2,,A,N,0 -,,AU,DT1.2,,A,N,0 2020,NIC,EV,DT1.2,,A,N,0 -,NIC,EV,DT1.2,,A,N,0 -2020,,EV,DT1.2,,A,N,0 -,,EV,DT1.2,,A,N,0 2020,NIC,CL,DT1.2,,A,C,0 -,NIC,CL,DT1.2,,A,C,0 -2020,,CL,DT1.2,,A,C,0 -,,CL,DT1.2,,A,C,0 ,NIC,CF,DT2.1,,A,C,-310 ,PR,CF,DT2.1,,A,C,400 ,ACA,CF,DT2.1,,A,C,-10 ,AEA,CF,DT2.1,,A,C,-5 -,,CF,DT2.1,,A,C,0 ,NIC,EA,DT2.1,,A,C,0 ,PR,EA,DT2.1,,A,C,0 ,ACA,EA,DT2.1,,A,C,0 ,AEA,EA,DT2.1,,A,C,0 -,,EA,DT2.1,,A,C,0 ,NIC,AM,DT2.1,,A,C,0 ,PR,AM,DT2.1,,A,C,0 ,ACA,AM,DT2.1,,A,C,0 ,AEA,AM,DT2.1,,A,C,0 -,,AM,DT2.1,,A,C,0 ,NIC,EOP,DT2.1,,A,C,0 ,PR,EOP,DT2.1,,A,C,0 ,ACA,EOP,DT2.1,,A,C,0 ,AEA,EOP,DT2.1,,A,C,0 -,,EOP,DT2.1,,A,C,0 ,NIC,BOP,DT2.1,,A,N,0 ,PR,BOP,DT2.1,,A,N,0 ,ACA,BOP,DT2.1,,A,N,0 ,AEA,BOP,DT2.1,,A,N,0 -,,BOP,DT2.1,,A,N,0 ,NIC,IA,DT2.1,,A,N,0 ,PR,IA,DT2.1,,A,N,0 ,ACA,IA,DT2.1,,A,N,0 ,AEA,IA,DT2.1,,A,N,0 -,,IA,DT2.1,,A,N,0 ,NIC,BOP,DT2.1,,A,I,0 ,PR,BOP,DT2.1,,A,I,0 ,ACA,BOP,DT2.1,,A,I,0 ,AEA,BOP,DT2.1,,A,I,0 -,,BOP,DT2.1,,A,I,0 ,NIC,MC,DT2.1,,A,I,0 ,PR,MC,DT2.1,,A,I,0 ,ACA,MC,DT2.1,,A,I,0 ,AEA,MC,DT2.1,,A,I,0 -,,MC,DT2.1,,A,I,0 ,NIC,RCU,DT2.1,,A,I,0 ,PR,RCU,DT2.1,,A,I,0 ,ACA,RCU,DT2.1,,A,I,0 ,AEA,RCU,DT2.1,,A,I,0 -,,RCU,DT2.1,,A,I,0 ,NIC,CF,DT2.1,,A,I,0 ,PR,CF,DT2.1,,A,I,0 ,ACA,CF,DT2.1,,A,I,0 ,AEA,CF,DT2.1,,A,I,0 -,,CF,DT2.1,,A,I,0 ,NIC,IA,DT2.1,,A,I,0 ,PR,IA,DT2.1,,A,I,0 ,ACA,IA,DT2.1,,A,I,0 ,AEA,IA,DT2.1,,A,I,0 -,,IA,DT2.1,,A,I,0 ,NIC,AU,DT2.1,,A,I,0 ,PR,AU,DT2.1,,A,I,0 ,ACA,AU,DT2.1,,A,I,0 ,AEA,AU,DT2.1,,A,I,0 -,,AU,DT2.1,,A,I,0 ,NIC,YCU,DT2.1,,A,I,0 ,PR,YCU,DT2.1,,A,I,0 ,ACA,YCU,DT2.1,,A,I,0 ,AEA,YCU,DT2.1,,A,I,0 -,,YCU,DT2.1,,A,I,0 ,NIC,CRU,DT2.1,,A,I,0 ,PR,CRU,DT2.1,,A,I,0 ,ACA,CRU,DT2.1,,A,I,0 ,AEA,CRU,DT2.1,,A,I,0 -,,CRU,DT2.1,,A,I,0 ,NIC,EV,DT2.1,,A,I,0 ,PR,EV,DT2.1,,A,I,0 ,ACA,EV,DT2.1,,A,I,0 ,AEA,EV,DT2.1,,A,I,0 -,,EV,DT2.1,,A,I,0 ,NIC,CF,DT2.1,,A,N,0 ,PR,CF,DT2.1,,A,N,0 ,ACA,CF,DT2.1,,A,N,0 ,AEA,CF,DT2.1,,A,N,0 -,,CF,DT2.1,,A,N,0 ,NIC,AU,DT2.1,,A,N,0 ,PR,AU,DT2.1,,A,N,0 ,ACA,AU,DT2.1,,A,N,0 ,AEA,AU,DT2.1,,A,N,0 -,,AU,DT2.1,,A,N,0 ,NIC,EV,DT2.1,,A,N,0 ,PR,EV,DT2.1,,A,N,0 ,ACA,EV,DT2.1,,A,N,0 ,AEA,EV,DT2.1,,A,N,0 -,,EV,DT2.1,,A,N,0 ,NIC,CL,DT2.1,,A,C,0 ,PR,CL,DT2.1,,A,C,0 ,ACA,CL,DT2.1,,A,C,0 ,AEA,CL,DT2.1,,A,C,0 -,,CL,DT2.1,,A,C,0 ,NIC,CF,DT1.3,,A,C,-310 ,PR,CF,DT1.3,,A,C,400 ,ACA,CF,DT1.3,,A,C,-10 ,AEA,CF,DT1.3,,A,C,-5 -,,CF,DT1.3,,A,C,0 ,NIC,EA,DT1.3,,A,C,0 ,PR,EA,DT1.3,,A,C,0 ,ACA,EA,DT1.3,,A,C,0 ,AEA,EA,DT1.3,,A,C,0 -,,EA,DT1.3,,A,C,0 ,NIC,AM,DT1.3,,A,C,0 ,PR,AM,DT1.3,,A,C,0 ,ACA,AM,DT1.3,,A,C,0 ,AEA,AM,DT1.3,,A,C,0 -,,AM,DT1.3,,A,C,0 ,NIC,EOP,DT1.3,,A,C,0 ,PR,EOP,DT1.3,,A,C,0 ,ACA,EOP,DT1.3,,A,C,0 ,AEA,EOP,DT1.3,,A,C,0 -,,EOP,DT1.3,,A,C,0 ,NIC,BOP,DT1.3,,A,N,0 ,PR,BOP,DT1.3,,A,N,0 ,ACA,BOP,DT1.3,,A,N,0 ,AEA,BOP,DT1.3,,A,N,0 -,,BOP,DT1.3,,A,N,0 ,NIC,IA,DT1.3,,A,N,0 ,PR,IA,DT1.3,,A,N,0 ,ACA,IA,DT1.3,,A,N,0 ,AEA,IA,DT1.3,,A,N,0 -,,IA,DT1.3,,A,N,0 ,NIC,BOP,DT1.3,,A,I,0 ,PR,BOP,DT1.3,,A,I,0 ,ACA,BOP,DT1.3,,A,I,0 ,AEA,BOP,DT1.3,,A,I,0 -,,BOP,DT1.3,,A,I,0 ,NIC,MC,DT1.3,,A,I,0 ,PR,MC,DT1.3,,A,I,0 ,ACA,MC,DT1.3,,A,I,0 ,AEA,MC,DT1.3,,A,I,0 -,,MC,DT1.3,,A,I,0 ,NIC,RCU,DT1.3,,A,I,0 ,PR,RCU,DT1.3,,A,I,0 ,ACA,RCU,DT1.3,,A,I,0 ,AEA,RCU,DT1.3,,A,I,0 -,,RCU,DT1.3,,A,I,0 ,NIC,CF,DT1.3,,A,I,0 ,PR,CF,DT1.3,,A,I,0 ,ACA,CF,DT1.3,,A,I,0 ,AEA,CF,DT1.3,,A,I,0 -,,CF,DT1.3,,A,I,0 ,NIC,IA,DT1.3,,A,I,0 ,PR,IA,DT1.3,,A,I,0 ,ACA,IA,DT1.3,,A,I,0 ,AEA,IA,DT1.3,,A,I,0 -,,IA,DT1.3,,A,I,0 ,NIC,AU,DT1.3,,A,I,0 ,PR,AU,DT1.3,,A,I,0 ,ACA,AU,DT1.3,,A,I,0 ,AEA,AU,DT1.3,,A,I,0 -,,AU,DT1.3,,A,I,0 ,NIC,YCU,DT1.3,,A,I,0 ,PR,YCU,DT1.3,,A,I,0 ,ACA,YCU,DT1.3,,A,I,0 ,AEA,YCU,DT1.3,,A,I,0 -,,YCU,DT1.3,,A,I,0 ,NIC,CRU,DT1.3,,A,I,0 ,PR,CRU,DT1.3,,A,I,0 ,ACA,CRU,DT1.3,,A,I,0 ,AEA,CRU,DT1.3,,A,I,0 -,,CRU,DT1.3,,A,I,0 ,NIC,EV,DT1.3,,A,I,0 ,PR,EV,DT1.3,,A,I,0 ,ACA,EV,DT1.3,,A,I,0 ,AEA,EV,DT1.3,,A,I,0 -,,EV,DT1.3,,A,I,0 ,NIC,CF,DT1.3,,A,N,0 ,PR,CF,DT1.3,,A,N,0 ,ACA,CF,DT1.3,,A,N,0 ,AEA,CF,DT1.3,,A,N,0 -,,CF,DT1.3,,A,N,0 ,NIC,AU,DT1.3,,A,N,0 ,PR,AU,DT1.3,,A,N,0 ,ACA,AU,DT1.3,,A,N,0 ,AEA,AU,DT1.3,,A,N,0 -,,AU,DT1.3,,A,N,0 ,NIC,EV,DT1.3,,A,N,0 ,PR,EV,DT1.3,,A,N,0 ,ACA,EV,DT1.3,,A,N,0 ,AEA,EV,DT1.3,,A,N,0 -,,EV,DT1.3,,A,N,0 ,NIC,CL,DT1.3,,A,C,0 ,PR,CL,DT1.3,,A,C,0 ,ACA,CL,DT1.3,,A,C,0 ,AEA,CL,DT1.3,,A,C,0 -,,CL,DT1.3,,A,C,0 2020,NIC,CF,DT2.2,,A,C,-310 -,NIC,CF,DT2.2,,A,C,0 -2020,,CF,DT2.2,,A,C,0 -,,CF,DT2.2,,A,C,0 2020,NIC,EA,DT2.2,,A,C,0 -,NIC,EA,DT2.2,,A,C,0 -2020,,EA,DT2.2,,A,C,0 -,,EA,DT2.2,,A,C,0 2020,NIC,AM,DT2.2,,A,C,0 -,NIC,AM,DT2.2,,A,C,0 -2020,,AM,DT2.2,,A,C,0 -,,AM,DT2.2,,A,C,0 2020,NIC,EOP,DT2.2,,A,C,0 -,NIC,EOP,DT2.2,,A,C,0 -2020,,EOP,DT2.2,,A,C,0 -,,EOP,DT2.2,,A,C,0 2020,NIC,BOP,DT2.2,,A,I,0 -,NIC,BOP,DT2.2,,A,I,0 -2020,,BOP,DT2.2,,A,I,0 -,,BOP,DT2.2,,A,I,0 2020,NIC,MC,DT2.2,,A,I,0 -,NIC,MC,DT2.2,,A,I,0 -2020,,MC,DT2.2,,A,I,0 -,,MC,DT2.2,,A,I,0 2020,NIC,RCU,DT2.2,,A,I,0 -,NIC,RCU,DT2.2,,A,I,0 -2020,,RCU,DT2.2,,A,I,0 -,,RCU,DT2.2,,A,I,0 2020,NIC,CF,DT2.2,,A,I,0 -,NIC,CF,DT2.2,,A,I,0 -2020,,CF,DT2.2,,A,I,0 -,,CF,DT2.2,,A,I,0 2020,NIC,IA,DT2.2,,A,I,0 -,NIC,IA,DT2.2,,A,I,0 -2020,,IA,DT2.2,,A,I,0 -,,IA,DT2.2,,A,I,0 2020,NIC,AU,DT2.2,,A,I,0 -,NIC,AU,DT2.2,,A,I,0 -2020,,AU,DT2.2,,A,I,0 -,,AU,DT2.2,,A,I,0 2020,NIC,YCU,DT2.2,,A,I,0 -,NIC,YCU,DT2.2,,A,I,0 -2020,,YCU,DT2.2,,A,I,0 -,,YCU,DT2.2,,A,I,0 2020,NIC,CRU,DT2.2,,A,I,0 -,NIC,CRU,DT2.2,,A,I,0 -2020,,CRU,DT2.2,,A,I,0 -,,CRU,DT2.2,,A,I,0 2020,NIC,EV,DT2.2,,A,I,0 -,NIC,EV,DT2.2,,A,I,0 -2020,,EV,DT2.2,,A,I,0 -,,EV,DT2.2,,A,I,0 2020,NIC,BOP,DT2.2,,A,N,0 -,NIC,BOP,DT2.2,,A,N,0 -2020,,BOP,DT2.2,,A,N,0 -,,BOP,DT2.2,,A,N,0 2020,NIC,CF,DT2.2,,A,N,0 -,NIC,CF,DT2.2,,A,N,0 -2020,,CF,DT2.2,,A,N,0 -,,CF,DT2.2,,A,N,0 2020,NIC,IA,DT2.2,,A,N,0 -,NIC,IA,DT2.2,,A,N,0 -2020,,IA,DT2.2,,A,N,0 -,,IA,DT2.2,,A,N,0 2020,NIC,AU,DT2.2,,A,N,0 -,,AU,DT2.2,,A,N,0 -2020,,AU,DT2.2,,A,N,0 -,NIC,AU,DT2.2,,A,N,0 2020,NIC,EV,DT2.2,,A,N,0 -2020,,EV,DT2.2,,A,N,0 -,NIC,EV,DT2.2,,A,N,0 -,,EV,DT2.2,,A,N,0 2020,NIC,CL,DT2.2,,A,C,0 -2020,,CL,DT2.2,,A,C,0 -,NIC,CL,DT2.2,,A,C,0 -,,CL,DT2.2,,A,C,0 ,NIC,CF,DTR1.1,,A,C,170 ,PR,CF,DTR1.1,,A,C,-200 -,,CF,DTR1.1,,A,C,0 ,NIC,BOP,DTR1.1,,A,I,0 -,,BOP,DTR1.1,,A,I,0 ,PR,BOP,DTR1.1,,A,I,0 -,NIC,IA,DTR1.1,,A,N,0 -,PR,IA,DTR1.1,,A,N,0 -,,IA,DTR1.1,,A,N,0 -,,BOP,DTR1.1,,A,N,0 -,NIC,BOP,DTR1.1,,A,N,0 -,PR,BOP,DTR1.1,,A,N,0 -,,EOP,DTR1.1,,A,C,0 -,NIC,EOP,DTR1.1,,A,C,0 -,PR,EOP,DTR1.1,,A,C,0 ,NIC,AM,DTR1.1,,A,C,0 ,PR,AM,DTR1.1,,A,C,0 -,,AM,DTR1.1,,A,C,0 -,,EA,DTR1.1,,A,C,0 +,NIC,EOP,DTR1.1,,A,C,0 +,PR,EOP,DTR1.1,,A,C,0 +,NIC,BOP,DTR1.1,,A,N,0 +,PR,BOP,DTR1.1,,A,N,0 +,NIC,IA,DTR1.1,,A,N,0 +,PR,IA,DTR1.1,,A,N,0 ,NIC,EA,DTR1.1,,A,C,0 ,PR,EA,DTR1.1,,A,C,0 -,,MC,DTR1.1,,A,I,0 ,NIC,MC,DTR1.1,,A,I,0 ,PR,MC,DTR1.1,,A,I,0 ,NIC,RCU,DTR1.1,,A,I,0 ,PR,RCU,DTR1.1,,A,I,0 -,,RCU,DTR1.1,,A,I,0 -,,CF,DTR1.1,,A,I,0 ,NIC,CF,DTR1.1,,A,I,0 ,PR,CF,DTR1.1,,A,I,0 -,,IA,DTR1.1,,A,I,0 ,NIC,IA,DTR1.1,,A,I,0 ,PR,IA,DTR1.1,,A,I,0 -,,AU,DTR1.1,,A,I,0 ,NIC,AU,DTR1.1,,A,I,0 ,PR,AU,DTR1.1,,A,I,0 -,PR,YCU,DTR1.1,,A,I,0 -,,YCU,DTR1.1,,A,I,0 ,NIC,YCU,DTR1.1,,A,I,0 +,PR,YCU,DTR1.1,,A,I,0 ,NIC,CRU,DTR1.1,,A,I,0 ,PR,CRU,DTR1.1,,A,I,0 -,,CRU,DTR1.1,,A,I,0 -,,EV,DTR1.1,,A,I,0 ,NIC,EV,DTR1.1,,A,I,0 ,PR,EV,DTR1.1,,A,I,0 -,PR,CF,DTR1.1,,A,N,0 -,,CF,DTR1.1,,A,N,0 ,NIC,CF,DTR1.1,,A,N,0 +,PR,CF,DTR1.1,,A,N,0 ,NIC,AU,DTR1.1,,A,N,0 ,PR,AU,DTR1.1,,A,N,0 -,,AU,DTR1.1,,A,N,0 -,,EV,DTR1.1,,A,N,0 ,NIC,EV,DTR1.1,,A,N,0 ,PR,EV,DTR1.1,,A,N,0 -,PR,CL,DTR1.1,,A,C,0 -,,CL,DTR1.1,,A,C,0 ,NIC,CL,DTR1.1,,A,C,0 +,PR,CL,DTR1.1,,A,C,0 2020,NIC,CF,DTR1.2,,A,C,170 -2020,,CF,DTR1.2,,A,C,0 -,NIC,CF,DTR1.2,,A,C,0 -,,CF,DTR1.2,,A,C,0 2020,NIC,BOP,DTR1.2,,A,I,0 -2020,,BOP,DTR1.2,,A,I,0 -,NIC,BOP,DTR1.2,,A,I,0 -,,BOP,DTR1.2,,A,I,0 2020,NIC,EA,DTR1.2,,A,C,0 -2020,,EA,DTR1.2,,A,C,0 -,NIC,EA,DTR1.2,,A,C,0 -,,EA,DTR1.2,,A,C,0 2020,NIC,AM,DTR1.2,,A,C,0 -,NIC,AM,DTR1.2,,A,C,0 -2020,,AM,DTR1.2,,A,C,0 -,,AM,DTR1.2,,A,C,0 -2020,,EOP,DTR1.2,,A,C,0 -,NIC,EOP,DTR1.2,,A,C,0 2020,NIC,EOP,DTR1.2,,A,C,0 -,,EOP,DTR1.2,,A,C,0 2020,NIC,MC,DTR1.2,,A,I,0 -,,MC,DTR1.2,,A,I,0 -2020,,MC,DTR1.2,,A,I,0 -,NIC,MC,DTR1.2,,A,I,0 2020,NIC,RCU,DTR1.2,,A,I,0 -,NIC,RCU,DTR1.2,,A,I,0 -2020,,RCU,DTR1.2,,A,I,0 -,,RCU,DTR1.2,,A,I,0 2020,NIC,CF,DTR1.2,,A,I,0 -,NIC,CF,DTR1.2,,A,I,0 -2020,,CF,DTR1.2,,A,I,0 -,,CF,DTR1.2,,A,I,0 2020,NIC,IA,DTR1.2,,A,I,0 -,NIC,IA,DTR1.2,,A,I,0 -2020,,IA,DTR1.2,,A,I,0 -,,IA,DTR1.2,,A,I,0 2020,NIC,AU,DTR1.2,,A,I,0 -,NIC,AU,DTR1.2,,A,I,0 -2020,,AU,DTR1.2,,A,I,0 -,,AU,DTR1.2,,A,I,0 2020,NIC,YCU,DTR1.2,,A,I,0 -,NIC,YCU,DTR1.2,,A,I,0 -2020,,YCU,DTR1.2,,A,I,0 -,,YCU,DTR1.2,,A,I,0 2020,NIC,CRU,DTR1.2,,A,I,0 -,NIC,CRU,DTR1.2,,A,I,0 -2020,,CRU,DTR1.2,,A,I,0 -,,CRU,DTR1.2,,A,I,0 2020,NIC,EV,DTR1.2,,A,I,0 -,NIC,EV,DTR1.2,,A,I,0 -2020,,EV,DTR1.2,,A,I,0 -,,EV,DTR1.2,,A,I,0 2020,NIC,BOP,DTR1.2,,A,N,0 -,NIC,BOP,DTR1.2,,A,N,0 -2020,,BOP,DTR1.2,,A,N,0 -,,BOP,DTR1.2,,A,N,0 2020,NIC,CF,DTR1.2,,A,N,0 -,NIC,CF,DTR1.2,,A,N,0 -2020,,CF,DTR1.2,,A,N,0 -,,CF,DTR1.2,,A,N,0 2020,NIC,IA,DTR1.2,,A,N,0 -,NIC,IA,DTR1.2,,A,N,0 -2020,,IA,DTR1.2,,A,N,0 -,,IA,DTR1.2,,A,N,0 2020,NIC,AU,DTR1.2,,A,N,0 -,NIC,AU,DTR1.2,,A,N,0 -2020,,AU,DTR1.2,,A,N,0 -,,AU,DTR1.2,,A,N,0 2020,NIC,EV,DTR1.2,,A,N,0 -,NIC,EV,DTR1.2,,A,N,0 -2020,,EV,DTR1.2,,A,N,0 -,,EV,DTR1.2,,A,N,0 2020,NIC,CL,DTR1.2,,A,C,0 -,NIC,CL,DTR1.2,,A,C,0 -2020,,CL,DTR1.2,,A,C,0 -,,CL,DTR1.2,,A,C,0 -,,IA,DTR2.1,,A,N,0 -,NIC,IA,DTR2.1,,A,N,0 -,PR,IA,DTR2.1,,A,N,0 -,,BOP,DTR2.1,,A,N,0 -,NIC,BOP,DTR2.1,,A,N,0 -,PR,BOP,DTR2.1,,A,N,0 -,,EOP,DTR2.1,,A,C,0 -,NIC,EOP,DTR2.1,,A,C,0 -,PR,EOP,DTR2.1,,A,C,0 -,,AM,DTR2.1,,A,C,0 -,NIC,AM,DTR2.1,,A,C,0 -,PR,AM,DTR2.1,,A,C,0 -,,CF,DTR2.1,,A,C,0 -,NIC,CF,DTR2.1,,A,C,140 ,PR,CF,DTR2.1,,A,C,-200 -,,EA,DTR2.1,,A,C,0 -,NIC,EA,DTR2.1,,A,C,0 +,NIC,CF,DTR2.1,,A,C,140 +,PR,AM,DTR2.1,,A,C,0 +,NIC,AM,DTR2.1,,A,C,0 +,PR,EOP,DTR2.1,,A,C,0 +,NIC,EOP,DTR2.1,,A,C,0 +,PR,BOP,DTR2.1,,A,N,0 +,NIC,BOP,DTR2.1,,A,N,0 +,PR,IA,DTR2.1,,A,N,0 +,NIC,IA,DTR2.1,,A,N,0 ,PR,EA,DTR2.1,,A,C,0 -,,BOP,DTR2.1,,A,I,0 -,NIC,BOP,DTR2.1,,A,I,0 +,NIC,EA,DTR2.1,,A,C,0 ,PR,BOP,DTR2.1,,A,I,0 -,,MC,DTR2.1,,A,I,0 -,NIC,MC,DTR2.1,,A,I,0 +,NIC,BOP,DTR2.1,,A,I,0 ,PR,MC,DTR2.1,,A,I,0 -,,RCU,DTR2.1,,A,I,0 -,NIC,RCU,DTR2.1,,A,I,0 +,NIC,MC,DTR2.1,,A,I,0 ,PR,RCU,DTR2.1,,A,I,0 -,,CF,DTR2.1,,A,I,0 -,NIC,CF,DTR2.1,,A,I,0 +,NIC,RCU,DTR2.1,,A,I,0 ,PR,CF,DTR2.1,,A,I,0 -,,IA,DTR2.1,,A,I,0 -,NIC,IA,DTR2.1,,A,I,0 +,NIC,CF,DTR2.1,,A,I,0 ,PR,IA,DTR2.1,,A,I,0 -,,AU,DTR2.1,,A,I,0 -,NIC,AU,DTR2.1,,A,I,0 +,NIC,IA,DTR2.1,,A,I,0 ,PR,AU,DTR2.1,,A,I,0 -,,YCU,DTR2.1,,A,I,0 -,NIC,YCU,DTR2.1,,A,I,0 +,NIC,AU,DTR2.1,,A,I,0 ,PR,YCU,DTR2.1,,A,I,0 -,,CRU,DTR2.1,,A,I,0 -,NIC,CRU,DTR2.1,,A,I,0 +,NIC,YCU,DTR2.1,,A,I,0 ,PR,CRU,DTR2.1,,A,I,0 -,,EV,DTR2.1,,A,I,0 -,NIC,EV,DTR2.1,,A,I,0 +,NIC,CRU,DTR2.1,,A,I,0 ,PR,EV,DTR2.1,,A,I,0 -,,CF,DTR2.1,,A,N,0 -,NIC,CF,DTR2.1,,A,N,0 +,NIC,EV,DTR2.1,,A,I,0 ,PR,CF,DTR2.1,,A,N,0 -,,AU,DTR2.1,,A,N,0 -,NIC,AU,DTR2.1,,A,N,0 +,NIC,CF,DTR2.1,,A,N,0 ,PR,AU,DTR2.1,,A,N,0 -,,EV,DTR2.1,,A,N,0 -,NIC,EV,DTR2.1,,A,N,0 +,NIC,AU,DTR2.1,,A,N,0 ,PR,EV,DTR2.1,,A,N,0 -,,CL,DTR2.1,,A,C,0 -,NIC,CL,DTR2.1,,A,C,0 -,PR,CL,DTR2.1,,A,C,0 \ No newline at end of file +,NIC,EV,DTR2.1,,A,N,0 +,PR,CL,DTR2.1,,A,C,0 +,NIC,CL,DTR2.1,,A,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv index 121fa15f..aa2e4c80 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv @@ -3,630 +3,364 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@AA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,AA,C,0 -,NIC,CF,DT1.1,,AA,C,0 -,AEA,CF,DT1.1,,AA,C,0 -,ACA,CF,DT1.1,,AA,C,0 -,PR,CF,DT1.1,,AA,C,0 -,,BOP,DT1.1,,AA,I,0 -,NIC,BOP,DT1.1,,AA,I,0 -,AEA,BOP,DT1.1,,AA,I,0 -,ACA,BOP,DT1.1,,AA,I,0 -,PR,BOP,DT1.1,,AA,I,0 -,,EA,DT1.1,,AA,C,0 -,NIC,EA,DT1.1,,AA,C,0 -,AEA,EA,DT1.1,,AA,C,0 -,ACA,EA,DT1.1,,AA,C,0 -,PR,EA,DT1.1,,AA,C,0 -,,AM,DT1.1,,AA,C,0 -,NIC,AM,DT1.1,,AA,C,0 -,AEA,AM,DT1.1,,AA,C,0 -,ACA,AM,DT1.1,,AA,C,0 -,PR,AM,DT1.1,,AA,C,0 -,,EOP,DT1.1,,AA,C,0 -,NIC,EOP,DT1.1,,AA,C,0 ,AEA,EOP,DT1.1,,AA,C,0 ,ACA,EOP,DT1.1,,AA,C,0 ,PR,EOP,DT1.1,,AA,C,0 -,,BOP,DT1.1,,AA,N,0 +,NIC,EOP,DT1.1,,AA,C,0 +,AEA,AM,DT1.1,,AA,C,0 +,ACA,AM,DT1.1,,AA,C,0 +,PR,AM,DT1.1,,AA,C,0 +,NIC,AM,DT1.1,,AA,C,0 +,AEA,EA,DT1.1,,AA,C,0 +,ACA,EA,DT1.1,,AA,C,0 +,PR,EA,DT1.1,,AA,C,0 +,NIC,EA,DT1.1,,AA,C,0 +,AEA,BOP,DT1.1,,AA,I,0 +,ACA,BOP,DT1.1,,AA,I,0 +,PR,BOP,DT1.1,,AA,I,0 +,NIC,BOP,DT1.1,,AA,I,0 +,AEA,CF,DT1.1,,AA,C,0 +,NIC,CF,DT1.1,,AA,C,0 +,PR,CF,DT1.1,,AA,C,0 +,ACA,CF,DT1.1,,AA,C,0 ,NIC,BOP,DT1.1,,AA,N,0 -,AEA,BOP,DT1.1,,AA,N,0 -,ACA,BOP,DT1.1,,AA,N,0 ,PR,BOP,DT1.1,,AA,N,0 -,,IA,DT1.1,,AA,N,0 +,ACA,BOP,DT1.1,,AA,N,0 +,AEA,BOP,DT1.1,,AA,N,0 ,NIC,IA,DT1.1,,AA,N,0 -,AEA,IA,DT1.1,,AA,N,0 -,ACA,IA,DT1.1,,AA,N,0 ,PR,IA,DT1.1,,AA,N,0 -,,MC,DT1.1,,AA,I,0 +,ACA,IA,DT1.1,,AA,N,0 +,AEA,IA,DT1.1,,AA,N,0 ,NIC,MC,DT1.1,,AA,I,0 -,AEA,MC,DT1.1,,AA,I,0 -,ACA,MC,DT1.1,,AA,I,0 ,PR,MC,DT1.1,,AA,I,0 -,,RCU,DT1.1,,AA,I,0 +,ACA,MC,DT1.1,,AA,I,0 +,AEA,MC,DT1.1,,AA,I,0 ,NIC,RCU,DT1.1,,AA,I,0 -,AEA,RCU,DT1.1,,AA,I,0 -,ACA,RCU,DT1.1,,AA,I,0 ,PR,RCU,DT1.1,,AA,I,0 -,,CF,DT1.1,,AA,I,0 +,ACA,RCU,DT1.1,,AA,I,0 +,AEA,RCU,DT1.1,,AA,I,0 ,NIC,CF,DT1.1,,AA,I,0 -,AEA,CF,DT1.1,,AA,I,0 -,ACA,CF,DT1.1,,AA,I,0 ,PR,CF,DT1.1,,AA,I,0 -,,IA,DT1.1,,AA,I,0 +,ACA,CF,DT1.1,,AA,I,0 +,AEA,CF,DT1.1,,AA,I,0 ,NIC,IA,DT1.1,,AA,I,0 -,AEA,IA,DT1.1,,AA,I,0 -,ACA,IA,DT1.1,,AA,I,0 ,PR,IA,DT1.1,,AA,I,0 -,,AU,DT1.1,,AA,I,0 +,ACA,IA,DT1.1,,AA,I,0 +,AEA,IA,DT1.1,,AA,I,0 ,NIC,AU,DT1.1,,AA,I,0 -,AEA,AU,DT1.1,,AA,I,0 -,ACA,AU,DT1.1,,AA,I,0 ,PR,AU,DT1.1,,AA,I,0 -,,YCU,DT1.1,,AA,I,0 +,ACA,AU,DT1.1,,AA,I,0 +,AEA,AU,DT1.1,,AA,I,0 ,NIC,YCU,DT1.1,,AA,I,0 -,AEA,YCU,DT1.1,,AA,I,0 -,ACA,YCU,DT1.1,,AA,I,0 ,PR,YCU,DT1.1,,AA,I,0 -,,CRU,DT1.1,,AA,I,0 +,ACA,YCU,DT1.1,,AA,I,0 +,AEA,YCU,DT1.1,,AA,I,0 ,NIC,CRU,DT1.1,,AA,I,0 -,AEA,CRU,DT1.1,,AA,I,0 -,ACA,CRU,DT1.1,,AA,I,0 ,PR,CRU,DT1.1,,AA,I,0 -,,EV,DT1.1,,AA,I,0 +,ACA,CRU,DT1.1,,AA,I,0 +,AEA,CRU,DT1.1,,AA,I,0 ,NIC,EV,DT1.1,,AA,I,0 -,AEA,EV,DT1.1,,AA,I,0 -,ACA,EV,DT1.1,,AA,I,0 ,PR,EV,DT1.1,,AA,I,0 -,,CF,DT1.1,,AA,N,0 +,ACA,EV,DT1.1,,AA,I,0 +,AEA,EV,DT1.1,,AA,I,0 ,NIC,CF,DT1.1,,AA,N,0 -,AEA,CF,DT1.1,,AA,N,0 -,ACA,CF,DT1.1,,AA,N,0 ,PR,CF,DT1.1,,AA,N,0 -,,AU,DT1.1,,AA,N,0 +,ACA,CF,DT1.1,,AA,N,0 +,AEA,CF,DT1.1,,AA,N,0 ,NIC,AU,DT1.1,,AA,N,0 -,AEA,AU,DT1.1,,AA,N,0 -,ACA,AU,DT1.1,,AA,N,0 ,PR,AU,DT1.1,,AA,N,0 -,,EV,DT1.1,,AA,N,0 +,ACA,AU,DT1.1,,AA,N,0 +,AEA,AU,DT1.1,,AA,N,0 ,NIC,EV,DT1.1,,AA,N,0 -,AEA,EV,DT1.1,,AA,N,0 -,ACA,EV,DT1.1,,AA,N,0 ,PR,EV,DT1.1,,AA,N,0 -,,CL,DT1.1,,AA,C,0 +,ACA,EV,DT1.1,,AA,N,0 +,AEA,EV,DT1.1,,AA,N,0 ,NIC,CL,DT1.1,,AA,C,0 -,AEA,CL,DT1.1,,AA,C,0 -,ACA,CL,DT1.1,,AA,C,0 ,PR,CL,DT1.1,,AA,C,0 +,ACA,CL,DT1.1,,AA,C,0 +,AEA,CL,DT1.1,,AA,C,0 2020,NIC,CF,DT1.2,,AA,C,0 -,NIC,CF,DT1.2,,AA,C,0 -2020,,CF,DT1.2,,AA,C,0 -,,CF,DT1.2,,AA,C,0 2020,NIC,BOP,DT1.2,,AA,I,0 -,NIC,BOP,DT1.2,,AA,I,0 -2020,,BOP,DT1.2,,AA,I,0 -,,BOP,DT1.2,,AA,I,0 2020,NIC,EA,DT1.2,,AA,C,0 -,NIC,EA,DT1.2,,AA,C,0 -2020,,EA,DT1.2,,AA,C,0 -,,EA,DT1.2,,AA,C,0 2020,NIC,AM,DT1.2,,AA,C,0 -,NIC,AM,DT1.2,,AA,C,0 -2020,,AM,DT1.2,,AA,C,0 -,,AM,DT1.2,,AA,C,0 2020,NIC,EOP,DT1.2,,AA,C,0 -,NIC,EOP,DT1.2,,AA,C,0 -2020,,EOP,DT1.2,,AA,C,0 -,,EOP,DT1.2,,AA,C,0 2020,NIC,MC,DT1.2,,AA,I,0 -,NIC,MC,DT1.2,,AA,I,0 -2020,,MC,DT1.2,,AA,I,0 -,,MC,DT1.2,,AA,I,0 2020,NIC,RCU,DT1.2,,AA,I,0 -,NIC,RCU,DT1.2,,AA,I,0 -2020,,RCU,DT1.2,,AA,I,0 -,,RCU,DT1.2,,AA,I,0 2020,NIC,CF,DT1.2,,AA,I,0 -,NIC,CF,DT1.2,,AA,I,0 -2020,,CF,DT1.2,,AA,I,0 -,,CF,DT1.2,,AA,I,0 2020,NIC,IA,DT1.2,,AA,I,0 -,NIC,IA,DT1.2,,AA,I,0 -2020,,IA,DT1.2,,AA,I,0 -,,IA,DT1.2,,AA,I,0 2020,NIC,AU,DT1.2,,AA,I,0 -,NIC,AU,DT1.2,,AA,I,0 -2020,,AU,DT1.2,,AA,I,0 -,,AU,DT1.2,,AA,I,0 2020,NIC,YCU,DT1.2,,AA,I,0 -,NIC,YCU,DT1.2,,AA,I,0 -2020,,YCU,DT1.2,,AA,I,0 -,,YCU,DT1.2,,AA,I,0 2020,NIC,CRU,DT1.2,,AA,I,0 -,NIC,CRU,DT1.2,,AA,I,0 -2020,,CRU,DT1.2,,AA,I,0 -,,CRU,DT1.2,,AA,I,0 2020,NIC,EV,DT1.2,,AA,I,0 -,NIC,EV,DT1.2,,AA,I,0 -2020,,EV,DT1.2,,AA,I,0 -,,EV,DT1.2,,AA,I,0 2020,NIC,BOP,DT1.2,,AA,N,0 -,NIC,BOP,DT1.2,,AA,N,0 -2020,,BOP,DT1.2,,AA,N,0 -,,BOP,DT1.2,,AA,N,0 2020,NIC,CF,DT1.2,,AA,N,0 -,NIC,CF,DT1.2,,AA,N,0 -2020,,CF,DT1.2,,AA,N,0 -,,CF,DT1.2,,AA,N,0 2020,NIC,IA,DT1.2,,AA,N,0 -,NIC,IA,DT1.2,,AA,N,0 -2020,,IA,DT1.2,,AA,N,0 -,,IA,DT1.2,,AA,N,0 2020,NIC,AU,DT1.2,,AA,N,0 -,NIC,AU,DT1.2,,AA,N,0 -2020,,AU,DT1.2,,AA,N,0 -,,AU,DT1.2,,AA,N,0 2020,NIC,EV,DT1.2,,AA,N,0 -,NIC,EV,DT1.2,,AA,N,0 -2020,,EV,DT1.2,,AA,N,0 -,,EV,DT1.2,,AA,N,0 2020,NIC,CL,DT1.2,,AA,C,0 -,NIC,CL,DT1.2,,AA,C,0 -2020,,CL,DT1.2,,AA,C,0 -,,CL,DT1.2,,AA,C,0 ,NIC,CF,DT2.1,,AA,C,0 ,PR,CF,DT2.1,,AA,C,0 ,ACA,CF,DT2.1,,AA,C,0 ,AEA,CF,DT2.1,,AA,C,0 -,,CF,DT2.1,,AA,C,0 ,NIC,EA,DT2.1,,AA,C,0 ,PR,EA,DT2.1,,AA,C,0 ,ACA,EA,DT2.1,,AA,C,0 ,AEA,EA,DT2.1,,AA,C,0 -,,EA,DT2.1,,AA,C,0 ,NIC,AM,DT2.1,,AA,C,0 ,PR,AM,DT2.1,,AA,C,0 ,ACA,AM,DT2.1,,AA,C,0 ,AEA,AM,DT2.1,,AA,C,0 -,,AM,DT2.1,,AA,C,0 ,NIC,EOP,DT2.1,,AA,C,0 ,PR,EOP,DT2.1,,AA,C,0 ,ACA,EOP,DT2.1,,AA,C,0 ,AEA,EOP,DT2.1,,AA,C,0 -,,EOP,DT2.1,,AA,C,0 ,NIC,BOP,DT2.1,,AA,N,0 ,PR,BOP,DT2.1,,AA,N,0 ,ACA,BOP,DT2.1,,AA,N,0 ,AEA,BOP,DT2.1,,AA,N,0 -,,BOP,DT2.1,,AA,N,0 ,NIC,IA,DT2.1,,AA,N,0 ,PR,IA,DT2.1,,AA,N,0 ,ACA,IA,DT2.1,,AA,N,0 ,AEA,IA,DT2.1,,AA,N,0 -,,IA,DT2.1,,AA,N,0 ,NIC,BOP,DT2.1,,AA,I,0 ,PR,BOP,DT2.1,,AA,I,0 ,ACA,BOP,DT2.1,,AA,I,0 ,AEA,BOP,DT2.1,,AA,I,0 -,,BOP,DT2.1,,AA,I,0 ,NIC,MC,DT2.1,,AA,I,0 ,PR,MC,DT2.1,,AA,I,0 ,ACA,MC,DT2.1,,AA,I,0 ,AEA,MC,DT2.1,,AA,I,0 -,,MC,DT2.1,,AA,I,0 ,NIC,RCU,DT2.1,,AA,I,0 ,PR,RCU,DT2.1,,AA,I,0 ,ACA,RCU,DT2.1,,AA,I,0 ,AEA,RCU,DT2.1,,AA,I,0 -,,RCU,DT2.1,,AA,I,0 ,NIC,CF,DT2.1,,AA,I,0 ,PR,CF,DT2.1,,AA,I,0 ,ACA,CF,DT2.1,,AA,I,0 ,AEA,CF,DT2.1,,AA,I,0 -,,CF,DT2.1,,AA,I,0 ,NIC,IA,DT2.1,,AA,I,0 ,PR,IA,DT2.1,,AA,I,0 ,ACA,IA,DT2.1,,AA,I,0 ,AEA,IA,DT2.1,,AA,I,0 -,,IA,DT2.1,,AA,I,0 ,NIC,AU,DT2.1,,AA,I,0 ,PR,AU,DT2.1,,AA,I,0 ,ACA,AU,DT2.1,,AA,I,0 ,AEA,AU,DT2.1,,AA,I,0 -,,AU,DT2.1,,AA,I,0 ,NIC,YCU,DT2.1,,AA,I,0 ,PR,YCU,DT2.1,,AA,I,0 ,ACA,YCU,DT2.1,,AA,I,0 ,AEA,YCU,DT2.1,,AA,I,0 -,,YCU,DT2.1,,AA,I,0 ,NIC,CRU,DT2.1,,AA,I,0 ,PR,CRU,DT2.1,,AA,I,0 ,ACA,CRU,DT2.1,,AA,I,0 ,AEA,CRU,DT2.1,,AA,I,0 -,,CRU,DT2.1,,AA,I,0 ,NIC,EV,DT2.1,,AA,I,0 ,PR,EV,DT2.1,,AA,I,0 ,ACA,EV,DT2.1,,AA,I,0 ,AEA,EV,DT2.1,,AA,I,0 -,,EV,DT2.1,,AA,I,0 ,NIC,CF,DT2.1,,AA,N,0 ,PR,CF,DT2.1,,AA,N,0 ,ACA,CF,DT2.1,,AA,N,0 ,AEA,CF,DT2.1,,AA,N,0 -,,CF,DT2.1,,AA,N,0 ,NIC,AU,DT2.1,,AA,N,0 ,PR,AU,DT2.1,,AA,N,0 ,ACA,AU,DT2.1,,AA,N,0 ,AEA,AU,DT2.1,,AA,N,0 -,,AU,DT2.1,,AA,N,0 ,NIC,EV,DT2.1,,AA,N,0 ,PR,EV,DT2.1,,AA,N,0 ,ACA,EV,DT2.1,,AA,N,0 ,AEA,EV,DT2.1,,AA,N,0 -,,EV,DT2.1,,AA,N,0 ,NIC,CL,DT2.1,,AA,C,0 ,PR,CL,DT2.1,,AA,C,0 ,ACA,CL,DT2.1,,AA,C,0 ,AEA,CL,DT2.1,,AA,C,0 -,,CL,DT2.1,,AA,C,0 ,NIC,CF,DT1.3,,AA,C,0 ,PR,CF,DT1.3,,AA,C,0 ,ACA,CF,DT1.3,,AA,C,0 ,AEA,CF,DT1.3,,AA,C,0 -,,CF,DT1.3,,AA,C,0 ,NIC,EA,DT1.3,,AA,C,0 ,PR,EA,DT1.3,,AA,C,0 ,ACA,EA,DT1.3,,AA,C,0 ,AEA,EA,DT1.3,,AA,C,0 -,,EA,DT1.3,,AA,C,0 ,NIC,AM,DT1.3,,AA,C,0 ,PR,AM,DT1.3,,AA,C,0 ,ACA,AM,DT1.3,,AA,C,0 ,AEA,AM,DT1.3,,AA,C,0 -,,AM,DT1.3,,AA,C,0 ,NIC,EOP,DT1.3,,AA,C,0 ,PR,EOP,DT1.3,,AA,C,0 ,ACA,EOP,DT1.3,,AA,C,0 ,AEA,EOP,DT1.3,,AA,C,0 -,,EOP,DT1.3,,AA,C,0 ,NIC,BOP,DT1.3,,AA,N,0 ,PR,BOP,DT1.3,,AA,N,0 ,ACA,BOP,DT1.3,,AA,N,0 ,AEA,BOP,DT1.3,,AA,N,0 -,,BOP,DT1.3,,AA,N,0 ,NIC,IA,DT1.3,,AA,N,0 ,PR,IA,DT1.3,,AA,N,0 ,ACA,IA,DT1.3,,AA,N,0 ,AEA,IA,DT1.3,,AA,N,0 -,,IA,DT1.3,,AA,N,0 ,NIC,BOP,DT1.3,,AA,I,0 ,PR,BOP,DT1.3,,AA,I,0 ,ACA,BOP,DT1.3,,AA,I,0 ,AEA,BOP,DT1.3,,AA,I,0 -,,BOP,DT1.3,,AA,I,0 ,NIC,MC,DT1.3,,AA,I,0 ,PR,MC,DT1.3,,AA,I,0 ,ACA,MC,DT1.3,,AA,I,0 ,AEA,MC,DT1.3,,AA,I,0 -,,MC,DT1.3,,AA,I,0 ,NIC,RCU,DT1.3,,AA,I,0 ,PR,RCU,DT1.3,,AA,I,0 ,ACA,RCU,DT1.3,,AA,I,0 ,AEA,RCU,DT1.3,,AA,I,0 -,,RCU,DT1.3,,AA,I,0 ,NIC,CF,DT1.3,,AA,I,0 ,PR,CF,DT1.3,,AA,I,0 ,ACA,CF,DT1.3,,AA,I,0 ,AEA,CF,DT1.3,,AA,I,0 -,,CF,DT1.3,,AA,I,0 ,NIC,IA,DT1.3,,AA,I,0 ,PR,IA,DT1.3,,AA,I,0 ,ACA,IA,DT1.3,,AA,I,0 ,AEA,IA,DT1.3,,AA,I,0 -,,IA,DT1.3,,AA,I,0 ,NIC,AU,DT1.3,,AA,I,0 ,PR,AU,DT1.3,,AA,I,0 ,ACA,AU,DT1.3,,AA,I,0 ,AEA,AU,DT1.3,,AA,I,0 -,,AU,DT1.3,,AA,I,0 ,NIC,YCU,DT1.3,,AA,I,0 ,PR,YCU,DT1.3,,AA,I,0 ,ACA,YCU,DT1.3,,AA,I,0 ,AEA,YCU,DT1.3,,AA,I,0 -,,YCU,DT1.3,,AA,I,0 ,NIC,CRU,DT1.3,,AA,I,0 ,PR,CRU,DT1.3,,AA,I,0 ,ACA,CRU,DT1.3,,AA,I,0 ,AEA,CRU,DT1.3,,AA,I,0 -,,CRU,DT1.3,,AA,I,0 ,NIC,EV,DT1.3,,AA,I,0 ,PR,EV,DT1.3,,AA,I,0 ,ACA,EV,DT1.3,,AA,I,0 ,AEA,EV,DT1.3,,AA,I,0 -,,EV,DT1.3,,AA,I,0 ,NIC,CF,DT1.3,,AA,N,0 ,PR,CF,DT1.3,,AA,N,0 ,ACA,CF,DT1.3,,AA,N,0 ,AEA,CF,DT1.3,,AA,N,0 -,,CF,DT1.3,,AA,N,0 ,NIC,AU,DT1.3,,AA,N,0 ,PR,AU,DT1.3,,AA,N,0 ,ACA,AU,DT1.3,,AA,N,0 ,AEA,AU,DT1.3,,AA,N,0 -,,AU,DT1.3,,AA,N,0 ,NIC,EV,DT1.3,,AA,N,0 ,PR,EV,DT1.3,,AA,N,0 ,ACA,EV,DT1.3,,AA,N,0 ,AEA,EV,DT1.3,,AA,N,0 -,,EV,DT1.3,,AA,N,0 ,NIC,CL,DT1.3,,AA,C,0 ,PR,CL,DT1.3,,AA,C,0 ,ACA,CL,DT1.3,,AA,C,0 ,AEA,CL,DT1.3,,AA,C,0 -,,CL,DT1.3,,AA,C,0 2020,NIC,CF,DT2.2,,AA,C,0 -,NIC,CF,DT2.2,,AA,C,0 -2020,,CF,DT2.2,,AA,C,0 -,,CF,DT2.2,,AA,C,0 2020,NIC,EA,DT2.2,,AA,C,0 -,NIC,EA,DT2.2,,AA,C,0 -2020,,EA,DT2.2,,AA,C,0 -,,EA,DT2.2,,AA,C,0 2020,NIC,AM,DT2.2,,AA,C,0 -,NIC,AM,DT2.2,,AA,C,0 -2020,,AM,DT2.2,,AA,C,0 -,,AM,DT2.2,,AA,C,0 2020,NIC,EOP,DT2.2,,AA,C,0 -,NIC,EOP,DT2.2,,AA,C,0 -2020,,EOP,DT2.2,,AA,C,0 -,,EOP,DT2.2,,AA,C,0 2020,NIC,BOP,DT2.2,,AA,I,0 -,NIC,BOP,DT2.2,,AA,I,0 -2020,,BOP,DT2.2,,AA,I,0 -,,BOP,DT2.2,,AA,I,0 2020,NIC,MC,DT2.2,,AA,I,0 -,NIC,MC,DT2.2,,AA,I,0 -2020,,MC,DT2.2,,AA,I,0 -,,MC,DT2.2,,AA,I,0 2020,NIC,RCU,DT2.2,,AA,I,0 -,NIC,RCU,DT2.2,,AA,I,0 -2020,,RCU,DT2.2,,AA,I,0 -,,RCU,DT2.2,,AA,I,0 2020,NIC,CF,DT2.2,,AA,I,0 -,NIC,CF,DT2.2,,AA,I,0 -2020,,CF,DT2.2,,AA,I,0 -,,CF,DT2.2,,AA,I,0 2020,NIC,IA,DT2.2,,AA,I,0 -,NIC,IA,DT2.2,,AA,I,0 -2020,,IA,DT2.2,,AA,I,0 -,,IA,DT2.2,,AA,I,0 2020,NIC,AU,DT2.2,,AA,I,0 -,NIC,AU,DT2.2,,AA,I,0 -2020,,AU,DT2.2,,AA,I,0 -,,AU,DT2.2,,AA,I,0 2020,NIC,YCU,DT2.2,,AA,I,0 -,NIC,YCU,DT2.2,,AA,I,0 -2020,,YCU,DT2.2,,AA,I,0 -,,YCU,DT2.2,,AA,I,0 2020,NIC,CRU,DT2.2,,AA,I,0 -,NIC,CRU,DT2.2,,AA,I,0 -2020,,CRU,DT2.2,,AA,I,0 -,,CRU,DT2.2,,AA,I,0 2020,NIC,EV,DT2.2,,AA,I,0 -,NIC,EV,DT2.2,,AA,I,0 -2020,,EV,DT2.2,,AA,I,0 -,,EV,DT2.2,,AA,I,0 2020,NIC,BOP,DT2.2,,AA,N,0 -,NIC,BOP,DT2.2,,AA,N,0 -2020,,BOP,DT2.2,,AA,N,0 -,,BOP,DT2.2,,AA,N,0 2020,NIC,CF,DT2.2,,AA,N,0 -,NIC,CF,DT2.2,,AA,N,0 -2020,,CF,DT2.2,,AA,N,0 -,,CF,DT2.2,,AA,N,0 2020,NIC,IA,DT2.2,,AA,N,0 -,NIC,IA,DT2.2,,AA,N,0 -2020,,IA,DT2.2,,AA,N,0 -,,IA,DT2.2,,AA,N,0 -,NIC,AU,DT2.2,,AA,N,0 2020,NIC,AU,DT2.2,,AA,N,0 -,,AU,DT2.2,,AA,N,0 -2020,,AU,DT2.2,,AA,N,0 2020,NIC,EV,DT2.2,,AA,N,0 -,NIC,EV,DT2.2,,AA,N,0 -,,EV,DT2.2,,AA,N,0 -2020,,EV,DT2.2,,AA,N,0 -,NIC,CL,DT2.2,,AA,C,0 2020,NIC,CL,DT2.2,,AA,C,0 -,,CL,DT2.2,,AA,C,0 -2020,,CL,DT2.2,,AA,C,0 -,PR,CF,DTR1.1,,AA,C,0 -,,CF,DTR1.1,,AA,C,0 ,NIC,CF,DTR1.1,,AA,C,0 +,PR,CF,DTR1.1,,AA,C,0 ,NIC,BOP,DTR1.1,,AA,I,0 -,,BOP,DTR1.1,,AA,I,0 ,PR,BOP,DTR1.1,,AA,I,0 -,PR,IA,DTR1.1,,AA,N,0 -,,IA,DTR1.1,,AA,N,0 -,NIC,IA,DTR1.1,,AA,N,0 -,NIC,BOP,DTR1.1,,AA,N,0 -,PR,BOP,DTR1.1,,AA,N,0 -,,BOP,DTR1.1,,AA,N,0 +,NIC,AM,DTR1.1,,AA,C,0 +,PR,AM,DTR1.1,,AA,C,0 ,NIC,EOP,DTR1.1,,AA,C,0 -,,EOP,DTR1.1,,AA,C,0 ,PR,EOP,DTR1.1,,AA,C,0 -,PR,AM,DTR1.1,,AA,C,0 -,,AM,DTR1.1,,AA,C,0 -,NIC,AM,DTR1.1,,AA,C,0 +,NIC,BOP,DTR1.1,,AA,N,0 +,PR,BOP,DTR1.1,,AA,N,0 +,NIC,IA,DTR1.1,,AA,N,0 +,PR,IA,DTR1.1,,AA,N,0 ,NIC,EA,DTR1.1,,AA,C,0 ,PR,EA,DTR1.1,,AA,C,0 -,,EA,DTR1.1,,AA,C,0 ,NIC,MC,DTR1.1,,AA,I,0 -,,MC,DTR1.1,,AA,I,0 ,PR,MC,DTR1.1,,AA,I,0 -,PR,RCU,DTR1.1,,AA,I,0 -,,RCU,DTR1.1,,AA,I,0 ,NIC,RCU,DTR1.1,,AA,I,0 +,PR,RCU,DTR1.1,,AA,I,0 ,NIC,CF,DTR1.1,,AA,I,0 ,PR,CF,DTR1.1,,AA,I,0 -,,CF,DTR1.1,,AA,I,0 ,NIC,IA,DTR1.1,,AA,I,0 -,,IA,DTR1.1,,AA,I,0 ,PR,IA,DTR1.1,,AA,I,0 ,NIC,AU,DTR1.1,,AA,I,0 ,PR,AU,DTR1.1,,AA,I,0 -,,AU,DTR1.1,,AA,I,0 -,,YCU,DTR1.1,,AA,I,0 ,NIC,YCU,DTR1.1,,AA,I,0 ,PR,YCU,DTR1.1,,AA,I,0 ,NIC,CRU,DTR1.1,,AA,I,0 -,,CRU,DTR1.1,,AA,I,0 ,PR,CRU,DTR1.1,,AA,I,0 ,NIC,EV,DTR1.1,,AA,I,0 ,PR,EV,DTR1.1,,AA,I,0 -,,EV,DTR1.1,,AA,I,0 -,,CF,DTR1.1,,AA,N,0 ,NIC,CF,DTR1.1,,AA,N,0 ,PR,CF,DTR1.1,,AA,N,0 ,NIC,AU,DTR1.1,,AA,N,0 -,,AU,DTR1.1,,AA,N,0 ,PR,AU,DTR1.1,,AA,N,0 ,NIC,EV,DTR1.1,,AA,N,0 ,PR,EV,DTR1.1,,AA,N,0 -,,EV,DTR1.1,,AA,N,0 -,,CL,DTR1.1,,AA,C,0 ,NIC,CL,DTR1.1,,AA,C,0 ,PR,CL,DTR1.1,,AA,C,0 2020,NIC,CF,DTR1.2,,AA,C,0 -,NIC,CF,DTR1.2,,AA,C,0 -,,CF,DTR1.2,,AA,C,0 -2020,,CF,DTR1.2,,AA,C,0 -,NIC,BOP,DTR1.2,,AA,I,0 2020,NIC,BOP,DTR1.2,,AA,I,0 -,,BOP,DTR1.2,,AA,I,0 -2020,,BOP,DTR1.2,,AA,I,0 -,NIC,EA,DTR1.2,,AA,C,0 2020,NIC,EA,DTR1.2,,AA,C,0 -,,EA,DTR1.2,,AA,C,0 -2020,,EA,DTR1.2,,AA,C,0 -,NIC,AM,DTR1.2,,AA,C,0 2020,NIC,AM,DTR1.2,,AA,C,0 -,,AM,DTR1.2,,AA,C,0 -2020,,AM,DTR1.2,,AA,C,0 2020,NIC,EOP,DTR1.2,,AA,C,0 -,NIC,EOP,DTR1.2,,AA,C,0 -2020,,EOP,DTR1.2,,AA,C,0 -,,EOP,DTR1.2,,AA,C,0 -2020,,MC,DTR1.2,,AA,I,0 -,,MC,DTR1.2,,AA,I,0 2020,NIC,MC,DTR1.2,,AA,I,0 -,NIC,MC,DTR1.2,,AA,I,0 2020,NIC,RCU,DTR1.2,,AA,I,0 -,NIC,RCU,DTR1.2,,AA,I,0 -2020,,RCU,DTR1.2,,AA,I,0 -,,RCU,DTR1.2,,AA,I,0 2020,NIC,CF,DTR1.2,,AA,I,0 -,NIC,CF,DTR1.2,,AA,I,0 -2020,,CF,DTR1.2,,AA,I,0 -,,CF,DTR1.2,,AA,I,0 2020,NIC,IA,DTR1.2,,AA,I,0 -,NIC,IA,DTR1.2,,AA,I,0 -2020,,IA,DTR1.2,,AA,I,0 -,,IA,DTR1.2,,AA,I,0 2020,NIC,AU,DTR1.2,,AA,I,0 -,NIC,AU,DTR1.2,,AA,I,0 -2020,,AU,DTR1.2,,AA,I,0 -,,AU,DTR1.2,,AA,I,0 2020,NIC,YCU,DTR1.2,,AA,I,0 -,NIC,YCU,DTR1.2,,AA,I,0 -2020,,YCU,DTR1.2,,AA,I,0 -,,YCU,DTR1.2,,AA,I,0 2020,NIC,CRU,DTR1.2,,AA,I,0 -,NIC,CRU,DTR1.2,,AA,I,0 -2020,,CRU,DTR1.2,,AA,I,0 -,,CRU,DTR1.2,,AA,I,0 2020,NIC,EV,DTR1.2,,AA,I,0 -,NIC,EV,DTR1.2,,AA,I,0 -2020,,EV,DTR1.2,,AA,I,0 -,,EV,DTR1.2,,AA,I,0 2020,NIC,BOP,DTR1.2,,AA,N,0 -,NIC,BOP,DTR1.2,,AA,N,0 -2020,,BOP,DTR1.2,,AA,N,0 -,,BOP,DTR1.2,,AA,N,0 2020,NIC,CF,DTR1.2,,AA,N,0 -,NIC,CF,DTR1.2,,AA,N,0 -2020,,CF,DTR1.2,,AA,N,0 -,,CF,DTR1.2,,AA,N,0 2020,NIC,IA,DTR1.2,,AA,N,0 -,NIC,IA,DTR1.2,,AA,N,0 -2020,,IA,DTR1.2,,AA,N,0 -,,IA,DTR1.2,,AA,N,0 2020,NIC,AU,DTR1.2,,AA,N,0 -,NIC,AU,DTR1.2,,AA,N,0 -2020,,AU,DTR1.2,,AA,N,0 -,,AU,DTR1.2,,AA,N,0 2020,NIC,EV,DTR1.2,,AA,N,0 -,NIC,EV,DTR1.2,,AA,N,0 -2020,,EV,DTR1.2,,AA,N,0 -,,EV,DTR1.2,,AA,N,0 2020,NIC,CL,DTR1.2,,AA,C,0 -,NIC,CL,DTR1.2,,AA,C,0 -2020,,CL,DTR1.2,,AA,C,0 -,,CL,DTR1.2,,AA,C,0 -,,IA,DTR2.1,,AA,N,0 -,NIC,IA,DTR2.1,,AA,N,0 -,PR,IA,DTR2.1,,AA,N,0 -,,BOP,DTR2.1,,AA,N,0 -,NIC,BOP,DTR2.1,,AA,N,0 -,PR,BOP,DTR2.1,,AA,N,0 -,,EOP,DTR2.1,,AA,C,0 -,NIC,EOP,DTR2.1,,AA,C,0 -,PR,EOP,DTR2.1,,AA,C,0 -,,AM,DTR2.1,,AA,C,0 -,NIC,AM,DTR2.1,,AA,C,0 -,PR,AM,DTR2.1,,AA,C,0 -,,CF,DTR2.1,,AA,C,0 -,NIC,CF,DTR2.1,,AA,C,0 ,PR,CF,DTR2.1,,AA,C,0 -,,EA,DTR2.1,,AA,C,0 -,NIC,EA,DTR2.1,,AA,C,0 +,NIC,CF,DTR2.1,,AA,C,0 +,PR,AM,DTR2.1,,AA,C,0 +,NIC,AM,DTR2.1,,AA,C,0 +,PR,EOP,DTR2.1,,AA,C,0 +,NIC,EOP,DTR2.1,,AA,C,0 +,PR,BOP,DTR2.1,,AA,N,0 +,NIC,BOP,DTR2.1,,AA,N,0 +,PR,IA,DTR2.1,,AA,N,0 +,NIC,IA,DTR2.1,,AA,N,0 ,PR,EA,DTR2.1,,AA,C,0 -,,BOP,DTR2.1,,AA,I,0 -,NIC,BOP,DTR2.1,,AA,I,0 +,NIC,EA,DTR2.1,,AA,C,0 ,PR,BOP,DTR2.1,,AA,I,0 -,,MC,DTR2.1,,AA,I,0 -,NIC,MC,DTR2.1,,AA,I,0 +,NIC,BOP,DTR2.1,,AA,I,0 ,PR,MC,DTR2.1,,AA,I,0 -,,RCU,DTR2.1,,AA,I,0 -,NIC,RCU,DTR2.1,,AA,I,0 +,NIC,MC,DTR2.1,,AA,I,0 ,PR,RCU,DTR2.1,,AA,I,0 -,,CF,DTR2.1,,AA,I,0 -,NIC,CF,DTR2.1,,AA,I,0 +,NIC,RCU,DTR2.1,,AA,I,0 ,PR,CF,DTR2.1,,AA,I,0 -,,IA,DTR2.1,,AA,I,0 -,NIC,IA,DTR2.1,,AA,I,0 +,NIC,CF,DTR2.1,,AA,I,0 ,PR,IA,DTR2.1,,AA,I,0 -,,AU,DTR2.1,,AA,I,0 -,NIC,AU,DTR2.1,,AA,I,0 +,NIC,IA,DTR2.1,,AA,I,0 ,PR,AU,DTR2.1,,AA,I,0 -,,YCU,DTR2.1,,AA,I,0 -,NIC,YCU,DTR2.1,,AA,I,0 +,NIC,AU,DTR2.1,,AA,I,0 ,PR,YCU,DTR2.1,,AA,I,0 -,,CRU,DTR2.1,,AA,I,0 -,NIC,CRU,DTR2.1,,AA,I,0 +,NIC,YCU,DTR2.1,,AA,I,0 ,PR,CRU,DTR2.1,,AA,I,0 -,,EV,DTR2.1,,AA,I,0 -,NIC,EV,DTR2.1,,AA,I,0 +,NIC,CRU,DTR2.1,,AA,I,0 ,PR,EV,DTR2.1,,AA,I,0 -,,CF,DTR2.1,,AA,N,0 -,NIC,CF,DTR2.1,,AA,N,0 +,NIC,EV,DTR2.1,,AA,I,0 ,PR,CF,DTR2.1,,AA,N,0 -,,AU,DTR2.1,,AA,N,0 -,NIC,AU,DTR2.1,,AA,N,0 +,NIC,CF,DTR2.1,,AA,N,0 ,PR,AU,DTR2.1,,AA,N,0 -,,EV,DTR2.1,,AA,N,0 -,NIC,EV,DTR2.1,,AA,N,0 +,NIC,AU,DTR2.1,,AA,N,0 ,PR,EV,DTR2.1,,AA,N,0 -,,CL,DTR2.1,,AA,C,0 -,NIC,CL,DTR2.1,,AA,C,0 -,PR,CL,DTR2.1,,AA,C,0 \ No newline at end of file +,NIC,EV,DTR2.1,,AA,N,0 +,PR,CL,DTR2.1,,AA,C,0 +,NIC,CL,DTR2.1,,AA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv index 2644bcf6..3386f560 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv @@ -3,10 +3,10 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@BE AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,NIC,BOP,DT1.1,L,BE,N,658.6282390585294 -,PR,BOP,DT1.1,L,BE,N,-798.536731161375 -,NIC,BOP,DT1.1,C,BE,N,658.6282390585294 -,PR,BOP,DT1.1,C,BE,N,-798.536731161375 +,NIC,BOP,DT1.1,L,BE,N,658.62824 +,PR,BOP,DT1.1,L,BE,N,-798.53673 +,NIC,BOP,DT1.1,C,BE,N,658.62824 +,PR,BOP,DT1.1,C,BE,N,-798.53673 ,NIC,CL,DT1.1,L,BE,C,0 ,PR,CL,DT1.1,L,BE,C,0 ,NIC,CL,DT1.1,C,BE,C,0 @@ -19,14 +19,14 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,PR,AM,DT1.1,L,BE,C,0 ,NIC,AM,DT1.1,C,BE,C,0 ,PR,AM,DT1.1,C,BE,C,0 -,NIC,EOP,DT1.1,L,BE,C,329.6431046636596 -,PR,EOP,DT1.1,L,BE,C,-399.63392949885525 -,NIC,EOP,DT1.1,C,BE,C,329.6431046636596 -,PR,EOP,DT1.1,C,BE,C,-399.63392949885525 -,NIC,IA,DT1.1,L,BE,N,1.0148656051304286 -,PR,IA,DT1.1,L,BE,N,-1.0971983374806105 -,NIC,IA,DT1.1,C,BE,N,1.0148656051304286 -,PR,IA,DT1.1,C,BE,N,-1.0971983374806105 +,NIC,EOP,DT1.1,L,BE,C,329.6431 +,PR,EOP,DT1.1,L,BE,C,-399.63393 +,NIC,EOP,DT1.1,C,BE,C,329.6431 +,PR,EOP,DT1.1,C,BE,C,-399.63393 +,NIC,IA,DT1.1,L,BE,N,1.01487 +,PR,IA,DT1.1,L,BE,N,-1.0972 +,NIC,IA,DT1.1,C,BE,N,1.01487 +,PR,IA,DT1.1,C,BE,N,-1.0972 ,NIC,CF,DT1.1,L,BE,N,-330 ,PR,CF,DT1.1,L,BE,N,400 ,NIC,CF,DT1.1,C,BE,N,-330 @@ -43,18 +43,18 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,PR,IA,DT1.1,L,BE,I,0 ,NIC,IA,DT1.1,C,BE,I,0 ,PR,IA,DT1.1,C,BE,I,0 -2020,NIC,BOP,DT1.2,L,BE,N,658.6282390585294 -2020,NIC,BOP,DT1.2,C,BE,N,658.6282390585294 +2020,NIC,BOP,DT1.2,L,BE,N,658.62824 +2020,NIC,BOP,DT1.2,C,BE,N,658.62824 2020,NIC,CL,DT1.2,L,BE,C,0 2020,NIC,CL,DT1.2,C,BE,C,0 2020,NIC,EA,DT1.2,L,BE,C,0 2020,NIC,EA,DT1.2,C,BE,C,0 2020,NIC,AM,DT1.2,L,BE,C,0 2020,NIC,AM,DT1.2,C,BE,C,0 -2020,NIC,EOP,DT1.2,L,BE,C,329.6431046636596 -2020,NIC,EOP,DT1.2,C,BE,C,329.6431046636596 -2020,NIC,IA,DT1.2,L,BE,N,1.0148656051304286 -2020,NIC,IA,DT1.2,C,BE,N,1.0148656051304286 +2020,NIC,EOP,DT1.2,L,BE,C,329.6431 +2020,NIC,EOP,DT1.2,C,BE,C,329.6431 +2020,NIC,IA,DT1.2,L,BE,N,1.01487 +2020,NIC,IA,DT1.2,C,BE,N,1.01487 2020,NIC,CF,DT1.2,L,BE,N,-330 2020,NIC,CF,DT1.2,C,BE,N,-330 2020,NIC,CF,DT1.2,L,BE,C,0 @@ -63,12 +63,12 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu 2020,NIC,BOP,DT1.2,C,BE,I,0 2020,NIC,IA,DT1.2,L,BE,I,0 2020,NIC,IA,DT1.2,C,BE,I,0 -,NIC,BOP,DTR1.1,L,BE,N,-329.3141195292647 -,PR,BOP,DTR1.1,L,BE,N,399.2683655806875 -,CDR,BOP,DTR1.1,L,BE,N,0.5292475300191577 -,NIC,BOP,DTR1.1,C,BE,N,-329.3141195292647 -,PR,BOP,DTR1.1,C,BE,N,399.2683655806875 -,CDR,BOP,DTR1.1,C,BE,N,0.5292475300191577 +,NIC,BOP,DTR1.1,L,BE,N,-329.31412 +,PR,BOP,DTR1.1,L,BE,N,399.26837 +,CDR,BOP,DTR1.1,L,BE,N,0.52925 +,NIC,BOP,DTR1.1,C,BE,N,-329.31412 +,PR,BOP,DTR1.1,C,BE,N,399.26837 +,CDR,BOP,DTR1.1,C,BE,N,0.52925 ,NIC,CL,DTR1.1,L,BE,C,0 ,PR,CL,DTR1.1,L,BE,C,0 ,CDR,CL,DTR1.1,L,BE,C,0 @@ -87,24 +87,24 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,NIC,AM,DTR1.1,C,BE,C,0 ,PR,AM,DTR1.1,C,BE,C,0 ,CDR,AM,DTR1.1,C,BE,C,0 -,NIC,EOP,DTR1.1,L,BE,C,-164.8215523318298 -,PR,EOP,DTR1.1,L,BE,C,199.81696474942763 -,CDR,EOP,DTR1.1,L,BE,C,0.12679876434718015 -,NIC,EOP,DTR1.1,C,BE,C,-164.8215523318298 -,PR,EOP,DTR1.1,C,BE,C,199.81696474942763 -,CDR,EOP,DTR1.1,C,BE,C,0.12679876434718015 -,NIC,IA,DTR1.1,L,BE,N,-0.5074328025652143 -,PR,IA,DTR1.1,L,BE,N,0.5485991687403052 -,CDR,IA,DTR1.1,L,BE,N,0.001287210150087148 -,NIC,IA,DTR1.1,C,BE,N,-0.5074328025652143 -,PR,IA,DTR1.1,C,BE,N,0.5485991687403052 -,CDR,IA,DTR1.1,C,BE,N,0.001287210150087148 +,NIC,EOP,DTR1.1,L,BE,C,-164.82155 +,PR,EOP,DTR1.1,L,BE,C,199.81696 +,CDR,EOP,DTR1.1,L,BE,C,0.1268 +,NIC,EOP,DTR1.1,C,BE,C,-164.82155 +,PR,EOP,DTR1.1,C,BE,C,199.81696 +,CDR,EOP,DTR1.1,C,BE,C,0.1268 +,NIC,IA,DTR1.1,L,BE,N,-0.50743 +,PR,IA,DTR1.1,L,BE,N,0.5486 +,CDR,IA,DTR1.1,L,BE,N,0.00129 +,NIC,IA,DTR1.1,C,BE,N,-0.50743 +,PR,IA,DTR1.1,C,BE,N,0.5486 +,CDR,IA,DTR1.1,C,BE,N,0.00129 ,NIC,CF,DTR1.1,L,BE,N,165 ,PR,CF,DTR1.1,L,BE,N,-200 -,CDR,CF,DTR1.1,L,BE,N,-0.40373597582193455 +,CDR,CF,DTR1.1,L,BE,N,-0.40374 ,NIC,CF,DTR1.1,C,BE,N,165 ,PR,CF,DTR1.1,C,BE,N,-200 -,CDR,CF,DTR1.1,C,BE,N,-0.40373597582193455 +,CDR,CF,DTR1.1,C,BE,N,-0.40374 ,NIC,CF,DTR1.1,L,BE,C,0 ,PR,CF,DTR1.1,L,BE,C,0 ,CDR,CF,DTR1.1,L,BE,C,0 @@ -123,10 +123,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,NIC,IA,DTR1.1,C,BE,I,0 ,PR,IA,DTR1.1,C,BE,I,0 ,CDR,IA,DTR1.1,C,BE,I,0 -2020,NIC,BOP,DTR1.2,L,BE,N,-329.3141195292647 -2020,CDR,BOP,DTR1.2,L,BE,N,0.5292475300191577 -2020,NIC,BOP,DTR1.2,C,BE,N,-329.3141195292647 -2020,CDR,BOP,DTR1.2,C,BE,N,0.5292475300191577 +2020,NIC,BOP,DTR1.2,L,BE,N,-329.31412 +2020,CDR,BOP,DTR1.2,L,BE,N,0.52925 +2020,NIC,BOP,DTR1.2,C,BE,N,-329.31412 +2020,CDR,BOP,DTR1.2,C,BE,N,0.52925 2020,NIC,CL,DTR1.2,L,BE,C,0 2020,CDR,CL,DTR1.2,L,BE,C,0 2020,NIC,CL,DTR1.2,C,BE,C,0 @@ -139,18 +139,18 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu 2020,CDR,AM,DTR1.2,L,BE,C,0 2020,NIC,AM,DTR1.2,C,BE,C,0 2020,CDR,AM,DTR1.2,C,BE,C,0 -2020,NIC,EOP,DTR1.2,L,BE,C,-164.8215523318298 -2020,CDR,EOP,DTR1.2,L,BE,C,0.12679876434718015 -2020,NIC,EOP,DTR1.2,C,BE,C,-164.8215523318298 -2020,CDR,EOP,DTR1.2,C,BE,C,0.12679876434718015 -2020,NIC,IA,DTR1.2,L,BE,N,-0.5074328025652143 -2020,CDR,IA,DTR1.2,L,BE,N,0.001287210150087148 -2020,NIC,IA,DTR1.2,C,BE,N,-0.5074328025652143 -2020,CDR,IA,DTR1.2,C,BE,N,0.001287210150087148 +2020,NIC,EOP,DTR1.2,L,BE,C,-164.82155 +2020,CDR,EOP,DTR1.2,L,BE,C,0.1268 +2020,NIC,EOP,DTR1.2,C,BE,C,-164.82155 +2020,CDR,EOP,DTR1.2,C,BE,C,0.1268 +2020,NIC,IA,DTR1.2,L,BE,N,-0.50743 +2020,CDR,IA,DTR1.2,L,BE,N,0.00129 +2020,NIC,IA,DTR1.2,C,BE,N,-0.50743 +2020,CDR,IA,DTR1.2,C,BE,N,0.00129 2020,NIC,CF,DTR1.2,L,BE,N,165 -2020,CDR,CF,DTR1.2,L,BE,N,-0.40373597582193455 +2020,CDR,CF,DTR1.2,L,BE,N,-0.40374 2020,NIC,CF,DTR1.2,C,BE,N,165 -2020,CDR,CF,DTR1.2,C,BE,N,-0.40373597582193455 +2020,CDR,CF,DTR1.2,C,BE,N,-0.40374 2020,NIC,CF,DTR1.2,L,BE,C,0 2020,CDR,CF,DTR1.2,L,BE,C,0 2020,NIC,CF,DTR1.2,C,BE,C,0 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv index e345e5fc..15011804 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv @@ -3,13 +3,13 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@C AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,C,C,-0 -,,BOP,DT1.1,,C,I,-0 +,,EOP,DT1.1,,C,C,22.35306 +,,AM,DT1.1,,C,C,-42.67021 ,,EA,DT1.1,,C,C,-15 -,,AM,DT1.1,,C,C,-42.67021114446643 -,,EOP,DT1.1,,C,C,22.35305872130572 -,,BOP,DT1.1,,C,N,80.03319764297927 -,,IA,DT1.1,,C,N,-0.009927777207129784 +,,BOP,DT1.1,,C,I,-0 +,,CF,DT1.1,,C,C,-0 +,,BOP,DT1.1,,C,N,80.0332 +,,IA,DT1.1,,C,N,-0.00993 ,,MC,DT1.1,,C,I,-0 ,,RCU,DT1.1,,C,I,-0 ,,CF,DT1.1,,C,I,-0 @@ -24,10 +24,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT1.1,,C,C,-0 ,,CF,DT2.1,,C,C,-0 ,,EA,DT2.1,,C,C,-15 -,,AM,DT2.1,,C,C,-82.02271122089925 -,,EOP,DT2.1,,C,C,42.9681136142967 -,,BOP,DT2.1,,C,N,139.90849210284577 -,,IA,DT2.1,,C,N,0.08233273235018213 +,,AM,DT2.1,,C,C,-82.02271 +,,EOP,DT2.1,,C,C,42.96811 +,,BOP,DT2.1,,C,N,139.90849 +,,IA,DT2.1,,C,N,0.08233 ,,BOP,DT2.1,,C,I,-0 ,,MC,DT2.1,,C,I,-0 ,,RCU,DT2.1,,C,I,-0 @@ -43,10 +43,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT2.1,,C,C,-0 ,,CF,DT1.3,,C,C,-0 ,,EA,DT1.3,,C,C,-15 -,,AM,DT1.3,,C,C,-82.02271122089925 -,,EOP,DT1.3,,C,C,42.9681136142967 -,,BOP,DT1.3,,C,N,139.90849210284577 -,,IA,DT1.3,,C,N,0.08233273235018213 +,,AM,DT1.3,,C,C,-82.02271 +,,EOP,DT1.3,,C,C,42.96811 +,,BOP,DT1.3,,C,N,139.90849 +,,IA,DT1.3,,C,N,0.08233 ,,BOP,DT1.3,,C,I,-0 ,,MC,DT1.3,,C,I,-0 ,,RCU,DT1.3,,C,I,-0 @@ -62,10 +62,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT1.3,,C,C,-0 ,,CF,DTR1.1,,C,C,-0 ,,BOP,DTR1.1,,C,I,-0 -,,IA,DTR1.1,,C,N,0.003676678453477744 -,,BOP,DTR1.1,,C,N,-40.5458463515088 -,,EOP,DTR1.1,,C,C,-13.93718742938804 -,,AM,DTR1.1,,C,C,26.60498224366728 +,,AM,DTR1.1,,C,C,26.60498 +,,EOP,DTR1.1,,C,C,-13.93719 +,,BOP,DTR1.1,,C,N,-40.54585 +,,IA,DTR1.1,,C,N,0.00368 ,,EA,DTR1.1,,C,C,-0 ,,MC,DTR1.1,,C,I,-0 ,,RCU,DTR1.1,,C,I,-0 @@ -79,11 +79,11 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,AU,DTR1.1,,C,N,-0 ,,EV,DTR1.1,,C,N,-0 ,,CL,DTR1.1,,C,C,-0 -,,IA,DTR2.1,,C,N,-0.04233655722058882 -,,BOP,DTR2.1,,C,N,-70.43538016962212 -,,EOP,DTR2.1,,C,C,-24.22813469379126 -,,AM,DTR2.1,,C,C,46.24958203305145 ,,CF,DTR2.1,,C,C,-0 +,,AM,DTR2.1,,C,C,46.24958 +,,EOP,DTR2.1,,C,C,-24.22813 +,,BOP,DTR2.1,,C,N,-70.43538 +,,IA,DTR2.1,,C,N,-0.04234 ,,EA,DTR2.1,,C,C,-0 ,,BOP,DTR2.1,,C,I,-0 ,,MC,DTR2.1,,C,I,-0 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv index 50a4dd69..7e103cb6 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv @@ -3,11 +3,11 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@DA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,DA,C,-15 -,,BOP,DT1.1,,DA,I,0 +,,EOP,DT1.1,,DA,C,-5.15655 +,,AM,DT1.1,,DA,C,9.84345 ,,EA,DT1.1,,DA,C,0 -,,AM,DT1.1,,DA,C,9.843447868559382 -,,EOP,DT1.1,,DA,C,-5.156552131440618 +,,BOP,DT1.1,,DA,I,0 +,,CF,DT1.1,,DA,C,-15 ,,BOP,DT1.1,,DA,N,0 ,,IA,DT1.1,,DA,N,0 ,,MC,DT1.1,,DA,I,0 @@ -43,8 +43,8 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT1.2,,DA,C,0 ,,CF,DT2.1,,DA,C,-15 ,,EA,DT2.1,,DA,C,0 -,,AM,DT2.1,,DA,C,9.843447868559382 -,,EOP,DT2.1,,DA,C,-5.156552131440618 +,,AM,DT2.1,,DA,C,9.84345 +,,EOP,DT2.1,,DA,C,-5.15655 ,,BOP,DT2.1,,DA,N,0 ,,IA,DT2.1,,DA,N,0 ,,BOP,DT2.1,,DA,I,0 @@ -62,8 +62,8 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT2.1,,DA,C,0 ,,CF,DT1.3,,DA,C,-15 ,,EA,DT1.3,,DA,C,0 -,,AM,DT1.3,,DA,C,9.843447868559382 -,,EOP,DT1.3,,DA,C,-5.156552131440618 +,,AM,DT1.3,,DA,C,9.84345 +,,EOP,DT1.3,,DA,C,-5.15655 ,,BOP,DT1.3,,DA,N,0 ,,IA,DT1.3,,DA,N,0 ,,BOP,DT1.3,,DA,I,0 @@ -100,10 +100,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,CL,DT2.2,,DA,C,0 ,,CF,DTR1.1,,DA,C,0 ,,BOP,DTR1.1,,DA,I,0 -,,IA,DTR1.1,,DA,N,0 -,,BOP,DTR1.1,,DA,N,0 -,,EOP,DTR1.1,,DA,C,0 ,,AM,DTR1.1,,DA,C,-0 +,,EOP,DTR1.1,,DA,C,0 +,,BOP,DTR1.1,,DA,N,0 +,,IA,DTR1.1,,DA,N,0 ,,EA,DTR1.1,,DA,C,0 ,,MC,DTR1.1,,DA,I,0 ,,RCU,DTR1.1,,DA,I,0 @@ -136,11 +136,11 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,AU,DTR1.2,,DA,N,0 ,,EV,DTR1.2,,DA,N,0 ,,CL,DTR1.2,,DA,C,0 -,,IA,DTR2.1,,DA,N,0 -,,BOP,DTR2.1,,DA,N,0 -,,EOP,DTR2.1,,DA,C,0 -,,AM,DTR2.1,,DA,C,-0 ,,CF,DTR2.1,,DA,C,0 +,,AM,DTR2.1,,DA,C,-0 +,,EOP,DTR2.1,,DA,C,0 +,,BOP,DTR2.1,,DA,N,0 +,,IA,DTR2.1,,DA,N,0 ,,EA,DTR2.1,,DA,C,0 ,,BOP,DTR2.1,,DA,I,0 ,,MC,DTR2.1,,DA,I,0 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv index a3a224c1..20a47c21 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_F.csv @@ -3,7 +3,7 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@F AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,AM,DT1.1,L,F,C,0.6562298579039588 +,,AM,DT1.1,L,F,C,0.65623 ,,AM,DT1.2,L,F,C,1 -,,AM,DTR1.1,L,F,C,0.6562298579039588 +,,AM,DTR1.1,L,F,C,0.65623 ,,AM,DTR1.2,L,F,C,1 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv index 30e198ae..b24c3610 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv @@ -3,11 +3,11 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@L AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,L,C,0 -,,BOP,DT1.1,,L,I,0 -,,EA,DT1.1,,L,C,0 -,,AM,DT1.1,,L,C,0 ,,EOP,DT1.1,,L,C,0 +,,AM,DT1.1,,L,C,0 +,,EA,DT1.1,,L,C,0 +,,BOP,DT1.1,,L,I,0 +,,CF,DT1.1,,L,C,0 ,,BOP,DT1.1,,L,N,0 ,,IA,DT1.1,,L,N,0 ,,MC,DT1.1,,L,I,0 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv index 2f535c69..5e9f018b 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv @@ -5,10 +5,10 @@ Month,ReportingNode,Scenario,Year AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value ,,CF,DTR1.1,,LR,C,0 ,,BOP,DTR1.1,,LR,I,0 -,,IA,DTR1.1,,LR,N,0 -,,BOP,DTR1.1,,LR,N,0 -,,EOP,DTR1.1,,LR,C,0 ,,AM,DTR1.1,,LR,C,0 +,,EOP,DTR1.1,,LR,C,0 +,,BOP,DTR1.1,,LR,N,0 +,,IA,DTR1.1,,LR,N,0 ,,EA,DTR1.1,,LR,C,0 ,,MC,DTR1.1,,LR,I,0 ,,RCU,DTR1.1,,LR,I,0 @@ -22,11 +22,11 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,AU,DTR1.1,,LR,N,0 ,,EV,DTR1.1,,LR,N,0 ,,CL,DTR1.1,,LR,C,0 -,,IA,DTR2.1,,LR,N,0 -,,BOP,DTR2.1,,LR,N,0 -,,EOP,DTR2.1,,LR,C,0 -,,AM,DTR2.1,,LR,C,0 ,,CF,DTR2.1,,LR,C,0 +,,AM,DTR2.1,,LR,C,0 +,,EOP,DTR2.1,,LR,C,0 +,,BOP,DTR2.1,,LR,N,0 +,,IA,DTR2.1,,LR,N,0 ,,EA,DTR2.1,,LR,C,0 ,,BOP,DTR2.1,,LR,I,0 ,,MC,DTR2.1,,LR,I,0 diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv index 9c632822..9725b5a6 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv @@ -3,630 +3,364 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@OA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DT1.1,,OA,C,0 -,NIC,CF,DT1.1,,OA,C,0 -,AEA,CF,DT1.1,,OA,C,0 -,ACA,CF,DT1.1,,OA,C,0 -,PR,CF,DT1.1,,OA,C,0 -,,BOP,DT1.1,,OA,I,0 -,NIC,BOP,DT1.1,,OA,I,0 -,AEA,BOP,DT1.1,,OA,I,0 -,ACA,BOP,DT1.1,,OA,I,0 -,PR,BOP,DT1.1,,OA,I,0 -,,EA,DT1.1,,OA,C,0 -,NIC,EA,DT1.1,,OA,C,0 -,AEA,EA,DT1.1,,OA,C,0 -,ACA,EA,DT1.1,,OA,C,0 -,PR,EA,DT1.1,,OA,C,0 -,,AM,DT1.1,,OA,C,0 -,NIC,AM,DT1.1,,OA,C,0 -,AEA,AM,DT1.1,,OA,C,0 -,ACA,AM,DT1.1,,OA,C,0 -,PR,AM,DT1.1,,OA,C,0 -,,EOP,DT1.1,,OA,C,0 -,NIC,EOP,DT1.1,,OA,C,0 ,AEA,EOP,DT1.1,,OA,C,0 ,ACA,EOP,DT1.1,,OA,C,0 ,PR,EOP,DT1.1,,OA,C,0 -,,BOP,DT1.1,,OA,N,0 +,NIC,EOP,DT1.1,,OA,C,0 +,AEA,AM,DT1.1,,OA,C,0 +,ACA,AM,DT1.1,,OA,C,0 +,PR,AM,DT1.1,,OA,C,0 +,NIC,AM,DT1.1,,OA,C,0 +,AEA,EA,DT1.1,,OA,C,0 +,ACA,EA,DT1.1,,OA,C,0 +,PR,EA,DT1.1,,OA,C,0 +,NIC,EA,DT1.1,,OA,C,0 +,AEA,BOP,DT1.1,,OA,I,0 +,ACA,BOP,DT1.1,,OA,I,0 +,PR,BOP,DT1.1,,OA,I,0 +,NIC,BOP,DT1.1,,OA,I,0 +,AEA,CF,DT1.1,,OA,C,0 +,ACA,CF,DT1.1,,OA,C,0 +,PR,CF,DT1.1,,OA,C,0 +,NIC,CF,DT1.1,,OA,C,0 ,NIC,BOP,DT1.1,,OA,N,0 -,AEA,BOP,DT1.1,,OA,N,0 -,ACA,BOP,DT1.1,,OA,N,0 ,PR,BOP,DT1.1,,OA,N,0 -,,IA,DT1.1,,OA,N,0 +,ACA,BOP,DT1.1,,OA,N,0 +,AEA,BOP,DT1.1,,OA,N,0 ,NIC,IA,DT1.1,,OA,N,0 -,AEA,IA,DT1.1,,OA,N,0 -,ACA,IA,DT1.1,,OA,N,0 ,PR,IA,DT1.1,,OA,N,0 -,,MC,DT1.1,,OA,I,0 +,ACA,IA,DT1.1,,OA,N,0 +,AEA,IA,DT1.1,,OA,N,0 ,NIC,MC,DT1.1,,OA,I,0 -,AEA,MC,DT1.1,,OA,I,0 -,ACA,MC,DT1.1,,OA,I,0 ,PR,MC,DT1.1,,OA,I,0 -,,RCU,DT1.1,,OA,I,0 +,ACA,MC,DT1.1,,OA,I,0 +,AEA,MC,DT1.1,,OA,I,0 ,NIC,RCU,DT1.1,,OA,I,0 -,AEA,RCU,DT1.1,,OA,I,0 -,ACA,RCU,DT1.1,,OA,I,0 ,PR,RCU,DT1.1,,OA,I,0 -,,CF,DT1.1,,OA,I,0 +,ACA,RCU,DT1.1,,OA,I,0 +,AEA,RCU,DT1.1,,OA,I,0 ,NIC,CF,DT1.1,,OA,I,0 -,AEA,CF,DT1.1,,OA,I,0 -,ACA,CF,DT1.1,,OA,I,0 ,PR,CF,DT1.1,,OA,I,0 -,,IA,DT1.1,,OA,I,0 +,ACA,CF,DT1.1,,OA,I,0 +,AEA,CF,DT1.1,,OA,I,0 ,NIC,IA,DT1.1,,OA,I,0 -,AEA,IA,DT1.1,,OA,I,0 -,ACA,IA,DT1.1,,OA,I,0 ,PR,IA,DT1.1,,OA,I,0 -,,AU,DT1.1,,OA,I,0 +,ACA,IA,DT1.1,,OA,I,0 +,AEA,IA,DT1.1,,OA,I,0 ,NIC,AU,DT1.1,,OA,I,0 -,AEA,AU,DT1.1,,OA,I,0 -,ACA,AU,DT1.1,,OA,I,0 ,PR,AU,DT1.1,,OA,I,0 -,,YCU,DT1.1,,OA,I,0 +,ACA,AU,DT1.1,,OA,I,0 +,AEA,AU,DT1.1,,OA,I,0 ,NIC,YCU,DT1.1,,OA,I,0 -,AEA,YCU,DT1.1,,OA,I,0 -,ACA,YCU,DT1.1,,OA,I,0 ,PR,YCU,DT1.1,,OA,I,0 -,,CRU,DT1.1,,OA,I,0 +,ACA,YCU,DT1.1,,OA,I,0 +,AEA,YCU,DT1.1,,OA,I,0 ,NIC,CRU,DT1.1,,OA,I,0 -,AEA,CRU,DT1.1,,OA,I,0 -,ACA,CRU,DT1.1,,OA,I,0 ,PR,CRU,DT1.1,,OA,I,0 -,,EV,DT1.1,,OA,I,0 +,ACA,CRU,DT1.1,,OA,I,0 +,AEA,CRU,DT1.1,,OA,I,0 ,NIC,EV,DT1.1,,OA,I,0 -,AEA,EV,DT1.1,,OA,I,0 -,ACA,EV,DT1.1,,OA,I,0 ,PR,EV,DT1.1,,OA,I,0 -,,CF,DT1.1,,OA,N,0 +,ACA,EV,DT1.1,,OA,I,0 +,AEA,EV,DT1.1,,OA,I,0 ,NIC,CF,DT1.1,,OA,N,0 -,AEA,CF,DT1.1,,OA,N,0 -,ACA,CF,DT1.1,,OA,N,0 ,PR,CF,DT1.1,,OA,N,0 -,,AU,DT1.1,,OA,N,0 +,ACA,CF,DT1.1,,OA,N,0 +,AEA,CF,DT1.1,,OA,N,0 ,NIC,AU,DT1.1,,OA,N,0 -,AEA,AU,DT1.1,,OA,N,0 -,ACA,AU,DT1.1,,OA,N,0 ,PR,AU,DT1.1,,OA,N,0 -,,EV,DT1.1,,OA,N,0 +,ACA,AU,DT1.1,,OA,N,0 +,AEA,AU,DT1.1,,OA,N,0 ,NIC,EV,DT1.1,,OA,N,0 -,AEA,EV,DT1.1,,OA,N,0 -,ACA,EV,DT1.1,,OA,N,0 ,PR,EV,DT1.1,,OA,N,0 -,,CL,DT1.1,,OA,C,0 +,ACA,EV,DT1.1,,OA,N,0 +,AEA,EV,DT1.1,,OA,N,0 ,NIC,CL,DT1.1,,OA,C,0 -,AEA,CL,DT1.1,,OA,C,0 -,ACA,CL,DT1.1,,OA,C,0 ,PR,CL,DT1.1,,OA,C,0 +,ACA,CL,DT1.1,,OA,C,0 +,AEA,CL,DT1.1,,OA,C,0 2020,NIC,CF,DT1.2,,OA,C,0 -,NIC,CF,DT1.2,,OA,C,0 -2020,,CF,DT1.2,,OA,C,0 -,,CF,DT1.2,,OA,C,0 2020,NIC,BOP,DT1.2,,OA,I,0 -,NIC,BOP,DT1.2,,OA,I,0 -2020,,BOP,DT1.2,,OA,I,0 -,,BOP,DT1.2,,OA,I,0 2020,NIC,EA,DT1.2,,OA,C,0 -,NIC,EA,DT1.2,,OA,C,0 -2020,,EA,DT1.2,,OA,C,0 -,,EA,DT1.2,,OA,C,0 2020,NIC,AM,DT1.2,,OA,C,0 -,NIC,AM,DT1.2,,OA,C,0 -2020,,AM,DT1.2,,OA,C,0 -,,AM,DT1.2,,OA,C,0 2020,NIC,EOP,DT1.2,,OA,C,0 -,NIC,EOP,DT1.2,,OA,C,0 -2020,,EOP,DT1.2,,OA,C,0 -,,EOP,DT1.2,,OA,C,0 2020,NIC,MC,DT1.2,,OA,I,0 -,NIC,MC,DT1.2,,OA,I,0 -2020,,MC,DT1.2,,OA,I,0 -,,MC,DT1.2,,OA,I,0 2020,NIC,RCU,DT1.2,,OA,I,0 -,NIC,RCU,DT1.2,,OA,I,0 -2020,,RCU,DT1.2,,OA,I,0 -,,RCU,DT1.2,,OA,I,0 2020,NIC,CF,DT1.2,,OA,I,0 -,NIC,CF,DT1.2,,OA,I,0 -2020,,CF,DT1.2,,OA,I,0 -,,CF,DT1.2,,OA,I,0 2020,NIC,IA,DT1.2,,OA,I,0 -,NIC,IA,DT1.2,,OA,I,0 -2020,,IA,DT1.2,,OA,I,0 -,,IA,DT1.2,,OA,I,0 2020,NIC,AU,DT1.2,,OA,I,0 -,NIC,AU,DT1.2,,OA,I,0 -2020,,AU,DT1.2,,OA,I,0 -,,AU,DT1.2,,OA,I,0 2020,NIC,YCU,DT1.2,,OA,I,0 -,NIC,YCU,DT1.2,,OA,I,0 -2020,,YCU,DT1.2,,OA,I,0 -,,YCU,DT1.2,,OA,I,0 2020,NIC,CRU,DT1.2,,OA,I,0 -,NIC,CRU,DT1.2,,OA,I,0 -2020,,CRU,DT1.2,,OA,I,0 -,,CRU,DT1.2,,OA,I,0 2020,NIC,EV,DT1.2,,OA,I,0 -,NIC,EV,DT1.2,,OA,I,0 -2020,,EV,DT1.2,,OA,I,0 -,,EV,DT1.2,,OA,I,0 2020,NIC,BOP,DT1.2,,OA,N,0 -,NIC,BOP,DT1.2,,OA,N,0 -2020,,BOP,DT1.2,,OA,N,0 -,,BOP,DT1.2,,OA,N,0 2020,NIC,CF,DT1.2,,OA,N,0 -,NIC,CF,DT1.2,,OA,N,0 -2020,,CF,DT1.2,,OA,N,0 -,,CF,DT1.2,,OA,N,0 2020,NIC,IA,DT1.2,,OA,N,0 -,NIC,IA,DT1.2,,OA,N,0 -2020,,IA,DT1.2,,OA,N,0 -,,IA,DT1.2,,OA,N,0 2020,NIC,AU,DT1.2,,OA,N,0 -,NIC,AU,DT1.2,,OA,N,0 -2020,,AU,DT1.2,,OA,N,0 -,,AU,DT1.2,,OA,N,0 2020,NIC,EV,DT1.2,,OA,N,0 -,NIC,EV,DT1.2,,OA,N,0 -2020,,EV,DT1.2,,OA,N,0 -,,EV,DT1.2,,OA,N,0 2020,NIC,CL,DT1.2,,OA,C,0 -,NIC,CL,DT1.2,,OA,C,0 -2020,,CL,DT1.2,,OA,C,0 -,,CL,DT1.2,,OA,C,0 ,NIC,CF,DT2.1,,OA,C,0 ,PR,CF,DT2.1,,OA,C,0 ,ACA,CF,DT2.1,,OA,C,0 ,AEA,CF,DT2.1,,OA,C,0 -,,CF,DT2.1,,OA,C,0 ,NIC,EA,DT2.1,,OA,C,0 ,PR,EA,DT2.1,,OA,C,0 ,ACA,EA,DT2.1,,OA,C,0 ,AEA,EA,DT2.1,,OA,C,0 -,,EA,DT2.1,,OA,C,0 ,NIC,AM,DT2.1,,OA,C,0 ,PR,AM,DT2.1,,OA,C,0 ,ACA,AM,DT2.1,,OA,C,0 ,AEA,AM,DT2.1,,OA,C,0 -,,AM,DT2.1,,OA,C,0 ,NIC,EOP,DT2.1,,OA,C,0 ,PR,EOP,DT2.1,,OA,C,0 ,ACA,EOP,DT2.1,,OA,C,0 ,AEA,EOP,DT2.1,,OA,C,0 -,,EOP,DT2.1,,OA,C,0 ,NIC,BOP,DT2.1,,OA,N,0 ,PR,BOP,DT2.1,,OA,N,0 ,ACA,BOP,DT2.1,,OA,N,0 ,AEA,BOP,DT2.1,,OA,N,0 -,,BOP,DT2.1,,OA,N,0 ,NIC,IA,DT2.1,,OA,N,0 ,PR,IA,DT2.1,,OA,N,0 ,ACA,IA,DT2.1,,OA,N,0 ,AEA,IA,DT2.1,,OA,N,0 -,,IA,DT2.1,,OA,N,0 ,NIC,BOP,DT2.1,,OA,I,0 ,PR,BOP,DT2.1,,OA,I,0 ,ACA,BOP,DT2.1,,OA,I,0 ,AEA,BOP,DT2.1,,OA,I,0 -,,BOP,DT2.1,,OA,I,0 ,NIC,MC,DT2.1,,OA,I,0 ,PR,MC,DT2.1,,OA,I,0 ,ACA,MC,DT2.1,,OA,I,0 ,AEA,MC,DT2.1,,OA,I,0 -,,MC,DT2.1,,OA,I,0 ,NIC,RCU,DT2.1,,OA,I,0 ,PR,RCU,DT2.1,,OA,I,0 ,ACA,RCU,DT2.1,,OA,I,0 ,AEA,RCU,DT2.1,,OA,I,0 -,,RCU,DT2.1,,OA,I,0 ,NIC,CF,DT2.1,,OA,I,0 ,PR,CF,DT2.1,,OA,I,0 ,ACA,CF,DT2.1,,OA,I,0 ,AEA,CF,DT2.1,,OA,I,0 -,,CF,DT2.1,,OA,I,0 ,NIC,IA,DT2.1,,OA,I,0 ,PR,IA,DT2.1,,OA,I,0 ,ACA,IA,DT2.1,,OA,I,0 ,AEA,IA,DT2.1,,OA,I,0 -,,IA,DT2.1,,OA,I,0 ,NIC,AU,DT2.1,,OA,I,0 ,PR,AU,DT2.1,,OA,I,0 ,ACA,AU,DT2.1,,OA,I,0 ,AEA,AU,DT2.1,,OA,I,0 -,,AU,DT2.1,,OA,I,0 ,NIC,YCU,DT2.1,,OA,I,0 ,PR,YCU,DT2.1,,OA,I,0 ,ACA,YCU,DT2.1,,OA,I,0 ,AEA,YCU,DT2.1,,OA,I,0 -,,YCU,DT2.1,,OA,I,0 ,NIC,CRU,DT2.1,,OA,I,0 ,PR,CRU,DT2.1,,OA,I,0 ,ACA,CRU,DT2.1,,OA,I,0 ,AEA,CRU,DT2.1,,OA,I,0 -,,CRU,DT2.1,,OA,I,0 ,NIC,EV,DT2.1,,OA,I,0 ,PR,EV,DT2.1,,OA,I,0 ,ACA,EV,DT2.1,,OA,I,0 ,AEA,EV,DT2.1,,OA,I,0 -,,EV,DT2.1,,OA,I,0 ,NIC,CF,DT2.1,,OA,N,0 ,PR,CF,DT2.1,,OA,N,0 ,ACA,CF,DT2.1,,OA,N,0 ,AEA,CF,DT2.1,,OA,N,0 -,,CF,DT2.1,,OA,N,0 ,NIC,AU,DT2.1,,OA,N,0 ,PR,AU,DT2.1,,OA,N,0 ,ACA,AU,DT2.1,,OA,N,0 ,AEA,AU,DT2.1,,OA,N,0 -,,AU,DT2.1,,OA,N,0 ,NIC,EV,DT2.1,,OA,N,0 ,PR,EV,DT2.1,,OA,N,0 ,ACA,EV,DT2.1,,OA,N,0 ,AEA,EV,DT2.1,,OA,N,0 -,,EV,DT2.1,,OA,N,0 ,NIC,CL,DT2.1,,OA,C,0 ,PR,CL,DT2.1,,OA,C,0 ,ACA,CL,DT2.1,,OA,C,0 ,AEA,CL,DT2.1,,OA,C,0 -,,CL,DT2.1,,OA,C,0 ,NIC,CF,DT1.3,,OA,C,0 ,PR,CF,DT1.3,,OA,C,0 ,ACA,CF,DT1.3,,OA,C,0 ,AEA,CF,DT1.3,,OA,C,0 -,,CF,DT1.3,,OA,C,0 ,NIC,EA,DT1.3,,OA,C,0 ,PR,EA,DT1.3,,OA,C,0 ,ACA,EA,DT1.3,,OA,C,0 ,AEA,EA,DT1.3,,OA,C,0 -,,EA,DT1.3,,OA,C,0 ,NIC,AM,DT1.3,,OA,C,0 ,PR,AM,DT1.3,,OA,C,0 ,ACA,AM,DT1.3,,OA,C,0 ,AEA,AM,DT1.3,,OA,C,0 -,,AM,DT1.3,,OA,C,0 ,NIC,EOP,DT1.3,,OA,C,0 ,PR,EOP,DT1.3,,OA,C,0 ,ACA,EOP,DT1.3,,OA,C,0 ,AEA,EOP,DT1.3,,OA,C,0 -,,EOP,DT1.3,,OA,C,0 ,NIC,BOP,DT1.3,,OA,N,0 ,PR,BOP,DT1.3,,OA,N,0 ,ACA,BOP,DT1.3,,OA,N,0 ,AEA,BOP,DT1.3,,OA,N,0 -,,BOP,DT1.3,,OA,N,0 ,NIC,IA,DT1.3,,OA,N,0 ,PR,IA,DT1.3,,OA,N,0 ,ACA,IA,DT1.3,,OA,N,0 ,AEA,IA,DT1.3,,OA,N,0 -,,IA,DT1.3,,OA,N,0 ,NIC,BOP,DT1.3,,OA,I,0 ,PR,BOP,DT1.3,,OA,I,0 ,ACA,BOP,DT1.3,,OA,I,0 ,AEA,BOP,DT1.3,,OA,I,0 -,,BOP,DT1.3,,OA,I,0 ,NIC,MC,DT1.3,,OA,I,0 ,PR,MC,DT1.3,,OA,I,0 ,ACA,MC,DT1.3,,OA,I,0 ,AEA,MC,DT1.3,,OA,I,0 -,,MC,DT1.3,,OA,I,0 ,NIC,RCU,DT1.3,,OA,I,0 ,PR,RCU,DT1.3,,OA,I,0 ,ACA,RCU,DT1.3,,OA,I,0 ,AEA,RCU,DT1.3,,OA,I,0 -,,RCU,DT1.3,,OA,I,0 ,NIC,CF,DT1.3,,OA,I,0 ,PR,CF,DT1.3,,OA,I,0 ,ACA,CF,DT1.3,,OA,I,0 ,AEA,CF,DT1.3,,OA,I,0 -,,CF,DT1.3,,OA,I,0 ,NIC,IA,DT1.3,,OA,I,0 ,PR,IA,DT1.3,,OA,I,0 ,ACA,IA,DT1.3,,OA,I,0 ,AEA,IA,DT1.3,,OA,I,0 -,,IA,DT1.3,,OA,I,0 ,NIC,AU,DT1.3,,OA,I,0 ,PR,AU,DT1.3,,OA,I,0 ,ACA,AU,DT1.3,,OA,I,0 ,AEA,AU,DT1.3,,OA,I,0 -,,AU,DT1.3,,OA,I,0 ,NIC,YCU,DT1.3,,OA,I,0 ,PR,YCU,DT1.3,,OA,I,0 ,ACA,YCU,DT1.3,,OA,I,0 ,AEA,YCU,DT1.3,,OA,I,0 -,,YCU,DT1.3,,OA,I,0 ,NIC,CRU,DT1.3,,OA,I,0 ,PR,CRU,DT1.3,,OA,I,0 ,ACA,CRU,DT1.3,,OA,I,0 ,AEA,CRU,DT1.3,,OA,I,0 -,,CRU,DT1.3,,OA,I,0 ,NIC,EV,DT1.3,,OA,I,0 ,PR,EV,DT1.3,,OA,I,0 ,ACA,EV,DT1.3,,OA,I,0 ,AEA,EV,DT1.3,,OA,I,0 -,,EV,DT1.3,,OA,I,0 ,NIC,CF,DT1.3,,OA,N,0 ,PR,CF,DT1.3,,OA,N,0 ,ACA,CF,DT1.3,,OA,N,0 ,AEA,CF,DT1.3,,OA,N,0 -,,CF,DT1.3,,OA,N,0 ,NIC,AU,DT1.3,,OA,N,0 ,PR,AU,DT1.3,,OA,N,0 ,ACA,AU,DT1.3,,OA,N,0 ,AEA,AU,DT1.3,,OA,N,0 -,,AU,DT1.3,,OA,N,0 ,NIC,EV,DT1.3,,OA,N,0 ,PR,EV,DT1.3,,OA,N,0 ,ACA,EV,DT1.3,,OA,N,0 ,AEA,EV,DT1.3,,OA,N,0 -,,EV,DT1.3,,OA,N,0 ,NIC,CL,DT1.3,,OA,C,0 ,PR,CL,DT1.3,,OA,C,0 ,ACA,CL,DT1.3,,OA,C,0 ,AEA,CL,DT1.3,,OA,C,0 -,,CL,DT1.3,,OA,C,0 2020,NIC,CF,DT2.2,,OA,C,0 -,NIC,CF,DT2.2,,OA,C,0 -2020,,CF,DT2.2,,OA,C,0 -,,CF,DT2.2,,OA,C,0 2020,NIC,EA,DT2.2,,OA,C,0 -,NIC,EA,DT2.2,,OA,C,0 -2020,,EA,DT2.2,,OA,C,0 -,,EA,DT2.2,,OA,C,0 2020,NIC,AM,DT2.2,,OA,C,0 -,NIC,AM,DT2.2,,OA,C,0 -2020,,AM,DT2.2,,OA,C,0 -,,AM,DT2.2,,OA,C,0 2020,NIC,EOP,DT2.2,,OA,C,0 -,NIC,EOP,DT2.2,,OA,C,0 -2020,,EOP,DT2.2,,OA,C,0 -,,EOP,DT2.2,,OA,C,0 2020,NIC,BOP,DT2.2,,OA,I,0 -,NIC,BOP,DT2.2,,OA,I,0 -2020,,BOP,DT2.2,,OA,I,0 -,,BOP,DT2.2,,OA,I,0 2020,NIC,MC,DT2.2,,OA,I,0 -,NIC,MC,DT2.2,,OA,I,0 -2020,,MC,DT2.2,,OA,I,0 -,,MC,DT2.2,,OA,I,0 2020,NIC,RCU,DT2.2,,OA,I,0 -,NIC,RCU,DT2.2,,OA,I,0 -2020,,RCU,DT2.2,,OA,I,0 -,,RCU,DT2.2,,OA,I,0 2020,NIC,CF,DT2.2,,OA,I,0 -,NIC,CF,DT2.2,,OA,I,0 -2020,,CF,DT2.2,,OA,I,0 -,,CF,DT2.2,,OA,I,0 2020,NIC,IA,DT2.2,,OA,I,0 -,NIC,IA,DT2.2,,OA,I,0 -2020,,IA,DT2.2,,OA,I,0 -,,IA,DT2.2,,OA,I,0 2020,NIC,AU,DT2.2,,OA,I,0 -,NIC,AU,DT2.2,,OA,I,0 -2020,,AU,DT2.2,,OA,I,0 -,,AU,DT2.2,,OA,I,0 2020,NIC,YCU,DT2.2,,OA,I,0 -,NIC,YCU,DT2.2,,OA,I,0 -2020,,YCU,DT2.2,,OA,I,0 -,,YCU,DT2.2,,OA,I,0 2020,NIC,CRU,DT2.2,,OA,I,0 -,NIC,CRU,DT2.2,,OA,I,0 -2020,,CRU,DT2.2,,OA,I,0 -,,CRU,DT2.2,,OA,I,0 2020,NIC,EV,DT2.2,,OA,I,0 -,NIC,EV,DT2.2,,OA,I,0 -2020,,EV,DT2.2,,OA,I,0 -,,EV,DT2.2,,OA,I,0 2020,NIC,BOP,DT2.2,,OA,N,0 -,NIC,BOP,DT2.2,,OA,N,0 -2020,,BOP,DT2.2,,OA,N,0 -,,BOP,DT2.2,,OA,N,0 2020,NIC,CF,DT2.2,,OA,N,0 -,NIC,CF,DT2.2,,OA,N,0 -2020,,CF,DT2.2,,OA,N,0 -,,CF,DT2.2,,OA,N,0 2020,NIC,IA,DT2.2,,OA,N,0 -,NIC,IA,DT2.2,,OA,N,0 -2020,,IA,DT2.2,,OA,N,0 -,,IA,DT2.2,,OA,N,0 2020,NIC,AU,DT2.2,,OA,N,0 -2020,,AU,DT2.2,,OA,N,0 -,NIC,AU,DT2.2,,OA,N,0 -,,AU,DT2.2,,OA,N,0 2020,NIC,EV,DT2.2,,OA,N,0 -2020,,EV,DT2.2,,OA,N,0 -,NIC,EV,DT2.2,,OA,N,0 -,,EV,DT2.2,,OA,N,0 2020,NIC,CL,DT2.2,,OA,C,0 -,NIC,CL,DT2.2,,OA,C,0 -2020,,CL,DT2.2,,OA,C,0 -,,CL,DT2.2,,OA,C,0 -,,CF,DTR1.1,,OA,C,0 ,NIC,CF,DTR1.1,,OA,C,0 ,PR,CF,DTR1.1,,OA,C,0 -,,BOP,DTR1.1,,OA,I,0 ,NIC,BOP,DTR1.1,,OA,I,0 ,PR,BOP,DTR1.1,,OA,I,0 -,,IA,DTR1.1,,OA,N,0 -,NIC,IA,DTR1.1,,OA,N,0 -,PR,IA,DTR1.1,,OA,N,0 -,NIC,BOP,DTR1.1,,OA,N,0 -,PR,BOP,DTR1.1,,OA,N,0 -,,BOP,DTR1.1,,OA,N,0 -,,EOP,DTR1.1,,OA,C,0 -,NIC,EOP,DTR1.1,,OA,C,0 -,PR,EOP,DTR1.1,,OA,C,0 -,,AM,DTR1.1,,OA,C,0 ,NIC,AM,DTR1.1,,OA,C,0 ,PR,AM,DTR1.1,,OA,C,0 +,NIC,EOP,DTR1.1,,OA,C,0 +,PR,EOP,DTR1.1,,OA,C,0 +,NIC,BOP,DTR1.1,,OA,N,0 +,PR,BOP,DTR1.1,,OA,N,0 +,NIC,IA,DTR1.1,,OA,N,0 +,PR,IA,DTR1.1,,OA,N,0 ,NIC,EA,DTR1.1,,OA,C,0 ,PR,EA,DTR1.1,,OA,C,0 -,,EA,DTR1.1,,OA,C,0 -,,MC,DTR1.1,,OA,I,0 ,NIC,MC,DTR1.1,,OA,I,0 ,PR,MC,DTR1.1,,OA,I,0 -,,RCU,DTR1.1,,OA,I,0 ,NIC,RCU,DTR1.1,,OA,I,0 ,PR,RCU,DTR1.1,,OA,I,0 ,NIC,CF,DTR1.1,,OA,I,0 ,PR,CF,DTR1.1,,OA,I,0 -,,CF,DTR1.1,,OA,I,0 -,PR,IA,DTR1.1,,OA,I,0 -,,IA,DTR1.1,,OA,I,0 ,NIC,IA,DTR1.1,,OA,I,0 +,PR,IA,DTR1.1,,OA,I,0 ,NIC,AU,DTR1.1,,OA,I,0 ,PR,AU,DTR1.1,,OA,I,0 -,,AU,DTR1.1,,OA,I,0 -,,YCU,DTR1.1,,OA,I,0 ,NIC,YCU,DTR1.1,,OA,I,0 ,PR,YCU,DTR1.1,,OA,I,0 -,PR,CRU,DTR1.1,,OA,I,0 -,,CRU,DTR1.1,,OA,I,0 ,NIC,CRU,DTR1.1,,OA,I,0 +,PR,CRU,DTR1.1,,OA,I,0 ,NIC,EV,DTR1.1,,OA,I,0 ,PR,EV,DTR1.1,,OA,I,0 -,,EV,DTR1.1,,OA,I,0 -,,CF,DTR1.1,,OA,N,0 ,NIC,CF,DTR1.1,,OA,N,0 ,PR,CF,DTR1.1,,OA,N,0 -,PR,AU,DTR1.1,,OA,N,0 -,,AU,DTR1.1,,OA,N,0 ,NIC,AU,DTR1.1,,OA,N,0 +,PR,AU,DTR1.1,,OA,N,0 ,NIC,EV,DTR1.1,,OA,N,0 ,PR,EV,DTR1.1,,OA,N,0 -,,EV,DTR1.1,,OA,N,0 -,,CL,DTR1.1,,OA,C,0 ,NIC,CL,DTR1.1,,OA,C,0 ,PR,CL,DTR1.1,,OA,C,0 2020,NIC,CF,DTR1.2,,OA,C,0 -2020,,CF,DTR1.2,,OA,C,0 -,NIC,CF,DTR1.2,,OA,C,0 -,,CF,DTR1.2,,OA,C,0 2020,NIC,BOP,DTR1.2,,OA,I,0 -,NIC,BOP,DTR1.2,,OA,I,0 -2020,,BOP,DTR1.2,,OA,I,0 -,,BOP,DTR1.2,,OA,I,0 -2020,,EA,DTR1.2,,OA,C,0 -,NIC,EA,DTR1.2,,OA,C,0 2020,NIC,EA,DTR1.2,,OA,C,0 -,,EA,DTR1.2,,OA,C,0 -2020,,AM,DTR1.2,,OA,C,0 -,NIC,AM,DTR1.2,,OA,C,0 2020,NIC,AM,DTR1.2,,OA,C,0 -,,AM,DTR1.2,,OA,C,0 2020,NIC,EOP,DTR1.2,,OA,C,0 -,,EOP,DTR1.2,,OA,C,0 -2020,,EOP,DTR1.2,,OA,C,0 -,NIC,EOP,DTR1.2,,OA,C,0 -,NIC,MC,DTR1.2,,OA,I,0 -2020,,MC,DTR1.2,,OA,I,0 2020,NIC,MC,DTR1.2,,OA,I,0 -,,MC,DTR1.2,,OA,I,0 2020,NIC,RCU,DTR1.2,,OA,I,0 -,NIC,RCU,DTR1.2,,OA,I,0 -2020,,RCU,DTR1.2,,OA,I,0 -,,RCU,DTR1.2,,OA,I,0 2020,NIC,CF,DTR1.2,,OA,I,0 -,NIC,CF,DTR1.2,,OA,I,0 -2020,,CF,DTR1.2,,OA,I,0 -,,CF,DTR1.2,,OA,I,0 2020,NIC,IA,DTR1.2,,OA,I,0 -,NIC,IA,DTR1.2,,OA,I,0 -2020,,IA,DTR1.2,,OA,I,0 -,,IA,DTR1.2,,OA,I,0 2020,NIC,AU,DTR1.2,,OA,I,0 -,NIC,AU,DTR1.2,,OA,I,0 -2020,,AU,DTR1.2,,OA,I,0 -,,AU,DTR1.2,,OA,I,0 2020,NIC,YCU,DTR1.2,,OA,I,0 -,NIC,YCU,DTR1.2,,OA,I,0 -2020,,YCU,DTR1.2,,OA,I,0 -,,YCU,DTR1.2,,OA,I,0 2020,NIC,CRU,DTR1.2,,OA,I,0 -,NIC,CRU,DTR1.2,,OA,I,0 -2020,,CRU,DTR1.2,,OA,I,0 -,,CRU,DTR1.2,,OA,I,0 2020,NIC,EV,DTR1.2,,OA,I,0 -,NIC,EV,DTR1.2,,OA,I,0 -2020,,EV,DTR1.2,,OA,I,0 -,,EV,DTR1.2,,OA,I,0 2020,NIC,BOP,DTR1.2,,OA,N,0 -,NIC,BOP,DTR1.2,,OA,N,0 -2020,,BOP,DTR1.2,,OA,N,0 -,,BOP,DTR1.2,,OA,N,0 2020,NIC,CF,DTR1.2,,OA,N,0 -,NIC,CF,DTR1.2,,OA,N,0 -2020,,CF,DTR1.2,,OA,N,0 -,,CF,DTR1.2,,OA,N,0 2020,NIC,IA,DTR1.2,,OA,N,0 -,NIC,IA,DTR1.2,,OA,N,0 -2020,,IA,DTR1.2,,OA,N,0 -,,IA,DTR1.2,,OA,N,0 2020,NIC,AU,DTR1.2,,OA,N,0 -,NIC,AU,DTR1.2,,OA,N,0 -2020,,AU,DTR1.2,,OA,N,0 -,,AU,DTR1.2,,OA,N,0 2020,NIC,EV,DTR1.2,,OA,N,0 -,NIC,EV,DTR1.2,,OA,N,0 -2020,,EV,DTR1.2,,OA,N,0 -,,EV,DTR1.2,,OA,N,0 2020,NIC,CL,DTR1.2,,OA,C,0 -,NIC,CL,DTR1.2,,OA,C,0 -2020,,CL,DTR1.2,,OA,C,0 -,,CL,DTR1.2,,OA,C,0 -,,IA,DTR2.1,,OA,N,0 -,NIC,IA,DTR2.1,,OA,N,0 -,PR,IA,DTR2.1,,OA,N,0 -,,BOP,DTR2.1,,OA,N,0 -,NIC,BOP,DTR2.1,,OA,N,0 -,PR,BOP,DTR2.1,,OA,N,0 -,,EOP,DTR2.1,,OA,C,0 -,NIC,EOP,DTR2.1,,OA,C,0 -,PR,EOP,DTR2.1,,OA,C,0 -,,AM,DTR2.1,,OA,C,0 -,NIC,AM,DTR2.1,,OA,C,0 -,PR,AM,DTR2.1,,OA,C,0 -,,CF,DTR2.1,,OA,C,0 -,NIC,CF,DTR2.1,,OA,C,0 ,PR,CF,DTR2.1,,OA,C,0 -,,EA,DTR2.1,,OA,C,0 -,NIC,EA,DTR2.1,,OA,C,0 +,NIC,CF,DTR2.1,,OA,C,0 +,PR,AM,DTR2.1,,OA,C,0 +,NIC,AM,DTR2.1,,OA,C,0 +,PR,EOP,DTR2.1,,OA,C,0 +,NIC,EOP,DTR2.1,,OA,C,0 +,PR,BOP,DTR2.1,,OA,N,0 +,NIC,BOP,DTR2.1,,OA,N,0 +,PR,IA,DTR2.1,,OA,N,0 +,NIC,IA,DTR2.1,,OA,N,0 ,PR,EA,DTR2.1,,OA,C,0 -,,BOP,DTR2.1,,OA,I,0 -,NIC,BOP,DTR2.1,,OA,I,0 +,NIC,EA,DTR2.1,,OA,C,0 ,PR,BOP,DTR2.1,,OA,I,0 -,,MC,DTR2.1,,OA,I,0 -,NIC,MC,DTR2.1,,OA,I,0 +,NIC,BOP,DTR2.1,,OA,I,0 ,PR,MC,DTR2.1,,OA,I,0 -,,RCU,DTR2.1,,OA,I,0 -,NIC,RCU,DTR2.1,,OA,I,0 +,NIC,MC,DTR2.1,,OA,I,0 ,PR,RCU,DTR2.1,,OA,I,0 -,,CF,DTR2.1,,OA,I,0 -,NIC,CF,DTR2.1,,OA,I,0 +,NIC,RCU,DTR2.1,,OA,I,0 ,PR,CF,DTR2.1,,OA,I,0 -,,IA,DTR2.1,,OA,I,0 -,NIC,IA,DTR2.1,,OA,I,0 +,NIC,CF,DTR2.1,,OA,I,0 ,PR,IA,DTR2.1,,OA,I,0 -,,AU,DTR2.1,,OA,I,0 -,NIC,AU,DTR2.1,,OA,I,0 +,NIC,IA,DTR2.1,,OA,I,0 ,PR,AU,DTR2.1,,OA,I,0 -,,YCU,DTR2.1,,OA,I,0 -,NIC,YCU,DTR2.1,,OA,I,0 +,NIC,AU,DTR2.1,,OA,I,0 ,PR,YCU,DTR2.1,,OA,I,0 -,,CRU,DTR2.1,,OA,I,0 -,NIC,CRU,DTR2.1,,OA,I,0 +,NIC,YCU,DTR2.1,,OA,I,0 ,PR,CRU,DTR2.1,,OA,I,0 -,,EV,DTR2.1,,OA,I,0 -,NIC,EV,DTR2.1,,OA,I,0 +,NIC,CRU,DTR2.1,,OA,I,0 ,PR,EV,DTR2.1,,OA,I,0 -,,CF,DTR2.1,,OA,N,0 -,NIC,CF,DTR2.1,,OA,N,0 +,NIC,EV,DTR2.1,,OA,I,0 ,PR,CF,DTR2.1,,OA,N,0 -,,AU,DTR2.1,,OA,N,0 -,NIC,AU,DTR2.1,,OA,N,0 +,NIC,CF,DTR2.1,,OA,N,0 ,PR,AU,DTR2.1,,OA,N,0 -,,EV,DTR2.1,,OA,N,0 -,NIC,EV,DTR2.1,,OA,N,0 +,NIC,AU,DTR2.1,,OA,N,0 ,PR,EV,DTR2.1,,OA,N,0 -,,CL,DTR2.1,,OA,C,0 -,NIC,CL,DTR2.1,,OA,C,0 -,PR,CL,DTR2.1,,OA,C,0 \ No newline at end of file +,NIC,EV,DTR2.1,,OA,N,0 +,PR,CL,DTR2.1,,OA,C,0 +,NIC,CL,DTR2.1,,OA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv index 057f1404..05da2dca 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv @@ -3,18 +3,18 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@RA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,BOP,DT1.1,C,RA,N,59.8752944598663 -,,BOP,DT1.1,L,RA,N,59.8752944598663 +,,BOP,DT1.1,C,RA,N,59.87529 +,,BOP,DT1.1,L,RA,N,59.87529 ,,CL,DT1.1,C,RA,C,0 ,,CL,DT1.1,L,RA,C,0 ,,EA,DT1.1,C,RA,C,0 ,,EA,DT1.1,L,RA,C,0 ,,AM,DT1.1,C,RA,C,0 ,,AM,DT1.1,L,RA,C,0 -,,EOP,DT1.1,C,RA,C,29.967554969423595 -,,EOP,DT1.1,L,RA,C,29.967554969423595 -,,IA,DT1.1,C,RA,N,0.09226050955731169 -,,IA,DT1.1,L,RA,N,0.09226050955731169 +,,EOP,DT1.1,C,RA,C,29.96755 +,,EOP,DT1.1,L,RA,C,29.96755 +,,IA,DT1.1,C,RA,N,0.09226 +,,IA,DT1.1,L,RA,N,0.09226 ,,CF,DT1.1,C,RA,N,-30 ,,CF,DT1.1,L,RA,N,-30 ,,CF,DT1.1,C,RA,C,0 @@ -23,18 +23,18 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,BOP,DT1.1,L,RA,I,0 ,,IA,DT1.1,C,RA,I,0 ,,IA,DT1.1,L,RA,I,0 -2020,,BOP,DT1.2,C,RA,N,59.8752944598663 -2020,,BOP,DT1.2,L,RA,N,59.8752944598663 +2020,,BOP,DT1.2,C,RA,N,59.87529 +2020,,BOP,DT1.2,L,RA,N,59.87529 2020,,CL,DT1.2,C,RA,C,0 2020,,CL,DT1.2,L,RA,C,0 2020,,EA,DT1.2,C,RA,C,0 2020,,EA,DT1.2,L,RA,C,0 2020,,AM,DT1.2,C,RA,C,0 2020,,AM,DT1.2,L,RA,C,0 -2020,,EOP,DT1.2,C,RA,C,29.967554969423595 -2020,,EOP,DT1.2,L,RA,C,29.967554969423595 -2020,,IA,DT1.2,C,RA,N,0.09226050955731169 -2020,,IA,DT1.2,L,RA,N,0.09226050955731169 +2020,,EOP,DT1.2,C,RA,C,29.96755 +2020,,EOP,DT1.2,L,RA,C,29.96755 +2020,,IA,DT1.2,C,RA,N,0.09226 +2020,,IA,DT1.2,L,RA,N,0.09226 2020,,CF,DT1.2,C,RA,N,-30 2020,,CF,DT1.2,L,RA,N,-30 2020,,CF,DT1.2,C,RA,C,0 @@ -43,18 +43,18 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu 2020,,BOP,DT1.2,L,RA,I,0 2020,,IA,DT1.2,C,RA,I,0 2020,,IA,DT1.2,L,RA,I,0 -,,BOP,DTR1.1,C,RA,N,-29.93764722993315 -,,BOP,DTR1.1,L,RA,N,-29.93764722993315 +,,BOP,DTR1.1,C,RA,N,-29.93765 +,,BOP,DTR1.1,L,RA,N,-29.93765 ,,CL,DTR1.1,C,RA,C,0 ,,CL,DTR1.1,L,RA,C,0 ,,EA,DTR1.1,C,RA,C,0 ,,EA,DTR1.1,L,RA,C,0 ,,AM,DTR1.1,C,RA,C,0 ,,AM,DTR1.1,L,RA,C,0 -,,EOP,DTR1.1,C,RA,C,-14.983777484711798 -,,EOP,DTR1.1,L,RA,C,-14.983777484711798 -,,IA,DTR1.1,C,RA,N,-0.046130254778655844 -,,IA,DTR1.1,L,RA,N,-0.046130254778655844 +,,EOP,DTR1.1,C,RA,C,-14.98378 +,,EOP,DTR1.1,L,RA,C,-14.98378 +,,IA,DTR1.1,C,RA,N,-0.04613 +,,IA,DTR1.1,L,RA,N,-0.04613 ,,CF,DTR1.1,C,RA,N,15 ,,CF,DTR1.1,L,RA,N,15 ,,CF,DTR1.1,C,RA,C,0 @@ -63,18 +63,18 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,,BOP,DTR1.1,L,RA,I,0 ,,IA,DTR1.1,C,RA,I,0 ,,IA,DTR1.1,L,RA,I,0 -2020,,BOP,DTR1.2,C,RA,N,-29.93764722993315 -2020,,BOP,DTR1.2,L,RA,N,-29.93764722993315 +2020,,BOP,DTR1.2,C,RA,N,-29.93765 +2020,,BOP,DTR1.2,L,RA,N,-29.93765 2020,,CL,DTR1.2,C,RA,C,0 2020,,CL,DTR1.2,L,RA,C,0 2020,,EA,DTR1.2,C,RA,C,0 2020,,EA,DTR1.2,L,RA,C,0 2020,,AM,DTR1.2,C,RA,C,0 2020,,AM,DTR1.2,L,RA,C,0 -2020,,EOP,DTR1.2,C,RA,C,-14.983777484711798 -2020,,EOP,DTR1.2,L,RA,C,-14.983777484711798 -2020,,IA,DTR1.2,C,RA,N,-0.046130254778655844 -2020,,IA,DTR1.2,L,RA,N,-0.046130254778655844 +2020,,EOP,DTR1.2,C,RA,C,-14.98378 +2020,,EOP,DTR1.2,L,RA,C,-14.98378 +2020,,IA,DTR1.2,C,RA,N,-0.04613 +2020,,IA,DTR1.2,L,RA,N,-0.04613 2020,,CF,DTR1.2,C,RA,N,15 2020,,CF,DTR1.2,L,RA,N,15 2020,,CF,DTR1.2,C,RA,C,0 diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index 6d23fb74..a641c44c 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -855,15 +855,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 02f769a2..64a58f8c 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -66,7 +66,7 @@ "public enum Error { ", "\n // Import", "\n NoMainTab, IncompleteMainTab, ParsingScientificNotation, ValueTypeNotFound, ValueTypeNotValid, ", - "\n ReportingNodeInMainNotFound, YearInMainNotFound, MonthInMainNotFound, ScenarioInMainNotAvailable", + "\n ReportingNodeInMainNotFound, YearInMainNotFound, MonthInMainNotFound, ScenarioInMainNotAvailable,", "\n AocTypeNotValid, AocTypeCompulsoryNotFound, AocTypePositionNotSupported, AocConfigurationOrderNotUnique,", "\n // Partition", "\n PartitionNotFound, ParsedPartitionNotFound, PartititionNameNotFound, PartitionTypeNotFound,", diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index d1f330ac..7268b4ee 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -2070,7 +2070,42 @@ { "cell_type": "code", "source": [ - "public record Args(string ReportingNode, int Year, int Month, Periodicity Periodicity, string Scenario){}" + "public record Args", + "\n{", + "\n [Required]", + "\n [IdentityProperty]", + "\n [Dimension(typeof(ReportingNode))]", + "\n public string ReportingNode { get; init; }", + "\n", + "\n [Required]", + "\n [IdentityProperty]", + "\n [NoArithmetics(ArithmeticOperation.Scale)]", + "\n [Dimension(typeof(int), nameof(Year))]", + "\n [Range(1900, 2100, ErrorMessage = \"Value for {0} must be between {1} and {2}.\")]", + "\n public int Year { get; init; }", + "\n", + "\n [Required]", + "\n [IdentityProperty]", + "\n [NoArithmetics(ArithmeticOperation.Scale)]", + "\n [Dimension(typeof(int), nameof(Month))]", + "\n [Range(1, 12, ErrorMessage = \"Value for {0} must be between {1} and {2}.\")]", + "\n public int Month { get; init; } ", + "\n [IdentityProperty]", + "\n [Dimension(typeof(Scenario))]", + "\n public string Scenario { get; init; }", + "\n", + "\n [IdentityProperty]", + "\n public Periodicity Periodicity{ get; init; }", + "\n", + "\n public Args(string reportingNode, int year, int month, Periodicity periodicity, string scenario)", + "\n {", + "\n ReportingNode = reportingNode;", + "\n Year = year;", + "\n Month = month;", + "\n Periodicity = periodicity;", + "\n Scenario = scenario;", + "\n }", + "\n}" ], "metadata": {}, "execution_count": 0, From 2bb616814d206e2dc92587245ff5cf39657f7df8 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Mon, 19 Dec 2022 11:59:33 +0100 Subject: [PATCH 35/64] Useless Zeros not saved, code cleanup --- .../BM_CH_2020_12_MTUP10pct_AA.csv | 366 ----- .../BM_CH_2020_12_MTUP10pct_L.csv | 62 - .../BM_CH_2020_12_MTUP10pct_LR.csv | 43 - .../BM_CH_2020_12_MTUP10pct_OA.csv | 366 ----- ...marks_2020_12_CH_MTUP10pct_Contractual.csv | 1463 ----------------- ifrs17-template/Test/IfrsVariablesTest.ipynb | 22 - ifrs17/DataModel/DataStructure.ipynb | 1 + ifrs17/Import/ImportStorage.ipynb | 8 +- ifrs17/Import/Importers.ipynb | 12 +- ifrs17/Utils/Queries.ipynb | 28 +- 10 files changed, 29 insertions(+), 2342 deletions(-) delete mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv delete mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv delete mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv delete mode 100644 ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv deleted file mode 100644 index aa2e4c80..00000000 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_AA.csv +++ /dev/null @@ -1,366 +0,0 @@ -@@Main -Month,ReportingNode,Scenario,Year -12,CH,MTUP10pct,2020 -@@AA -AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,AEA,EOP,DT1.1,,AA,C,0 -,ACA,EOP,DT1.1,,AA,C,0 -,PR,EOP,DT1.1,,AA,C,0 -,NIC,EOP,DT1.1,,AA,C,0 -,AEA,AM,DT1.1,,AA,C,0 -,ACA,AM,DT1.1,,AA,C,0 -,PR,AM,DT1.1,,AA,C,0 -,NIC,AM,DT1.1,,AA,C,0 -,AEA,EA,DT1.1,,AA,C,0 -,ACA,EA,DT1.1,,AA,C,0 -,PR,EA,DT1.1,,AA,C,0 -,NIC,EA,DT1.1,,AA,C,0 -,AEA,BOP,DT1.1,,AA,I,0 -,ACA,BOP,DT1.1,,AA,I,0 -,PR,BOP,DT1.1,,AA,I,0 -,NIC,BOP,DT1.1,,AA,I,0 -,AEA,CF,DT1.1,,AA,C,0 -,NIC,CF,DT1.1,,AA,C,0 -,PR,CF,DT1.1,,AA,C,0 -,ACA,CF,DT1.1,,AA,C,0 -,NIC,BOP,DT1.1,,AA,N,0 -,PR,BOP,DT1.1,,AA,N,0 -,ACA,BOP,DT1.1,,AA,N,0 -,AEA,BOP,DT1.1,,AA,N,0 -,NIC,IA,DT1.1,,AA,N,0 -,PR,IA,DT1.1,,AA,N,0 -,ACA,IA,DT1.1,,AA,N,0 -,AEA,IA,DT1.1,,AA,N,0 -,NIC,MC,DT1.1,,AA,I,0 -,PR,MC,DT1.1,,AA,I,0 -,ACA,MC,DT1.1,,AA,I,0 -,AEA,MC,DT1.1,,AA,I,0 -,NIC,RCU,DT1.1,,AA,I,0 -,PR,RCU,DT1.1,,AA,I,0 -,ACA,RCU,DT1.1,,AA,I,0 -,AEA,RCU,DT1.1,,AA,I,0 -,NIC,CF,DT1.1,,AA,I,0 -,PR,CF,DT1.1,,AA,I,0 -,ACA,CF,DT1.1,,AA,I,0 -,AEA,CF,DT1.1,,AA,I,0 -,NIC,IA,DT1.1,,AA,I,0 -,PR,IA,DT1.1,,AA,I,0 -,ACA,IA,DT1.1,,AA,I,0 -,AEA,IA,DT1.1,,AA,I,0 -,NIC,AU,DT1.1,,AA,I,0 -,PR,AU,DT1.1,,AA,I,0 -,ACA,AU,DT1.1,,AA,I,0 -,AEA,AU,DT1.1,,AA,I,0 -,NIC,YCU,DT1.1,,AA,I,0 -,PR,YCU,DT1.1,,AA,I,0 -,ACA,YCU,DT1.1,,AA,I,0 -,AEA,YCU,DT1.1,,AA,I,0 -,NIC,CRU,DT1.1,,AA,I,0 -,PR,CRU,DT1.1,,AA,I,0 -,ACA,CRU,DT1.1,,AA,I,0 -,AEA,CRU,DT1.1,,AA,I,0 -,NIC,EV,DT1.1,,AA,I,0 -,PR,EV,DT1.1,,AA,I,0 -,ACA,EV,DT1.1,,AA,I,0 -,AEA,EV,DT1.1,,AA,I,0 -,NIC,CF,DT1.1,,AA,N,0 -,PR,CF,DT1.1,,AA,N,0 -,ACA,CF,DT1.1,,AA,N,0 -,AEA,CF,DT1.1,,AA,N,0 -,NIC,AU,DT1.1,,AA,N,0 -,PR,AU,DT1.1,,AA,N,0 -,ACA,AU,DT1.1,,AA,N,0 -,AEA,AU,DT1.1,,AA,N,0 -,NIC,EV,DT1.1,,AA,N,0 -,PR,EV,DT1.1,,AA,N,0 -,ACA,EV,DT1.1,,AA,N,0 -,AEA,EV,DT1.1,,AA,N,0 -,NIC,CL,DT1.1,,AA,C,0 -,PR,CL,DT1.1,,AA,C,0 -,ACA,CL,DT1.1,,AA,C,0 -,AEA,CL,DT1.1,,AA,C,0 -2020,NIC,CF,DT1.2,,AA,C,0 -2020,NIC,BOP,DT1.2,,AA,I,0 -2020,NIC,EA,DT1.2,,AA,C,0 -2020,NIC,AM,DT1.2,,AA,C,0 -2020,NIC,EOP,DT1.2,,AA,C,0 -2020,NIC,MC,DT1.2,,AA,I,0 -2020,NIC,RCU,DT1.2,,AA,I,0 -2020,NIC,CF,DT1.2,,AA,I,0 -2020,NIC,IA,DT1.2,,AA,I,0 -2020,NIC,AU,DT1.2,,AA,I,0 -2020,NIC,YCU,DT1.2,,AA,I,0 -2020,NIC,CRU,DT1.2,,AA,I,0 -2020,NIC,EV,DT1.2,,AA,I,0 -2020,NIC,BOP,DT1.2,,AA,N,0 -2020,NIC,CF,DT1.2,,AA,N,0 -2020,NIC,IA,DT1.2,,AA,N,0 -2020,NIC,AU,DT1.2,,AA,N,0 -2020,NIC,EV,DT1.2,,AA,N,0 -2020,NIC,CL,DT1.2,,AA,C,0 -,NIC,CF,DT2.1,,AA,C,0 -,PR,CF,DT2.1,,AA,C,0 -,ACA,CF,DT2.1,,AA,C,0 -,AEA,CF,DT2.1,,AA,C,0 -,NIC,EA,DT2.1,,AA,C,0 -,PR,EA,DT2.1,,AA,C,0 -,ACA,EA,DT2.1,,AA,C,0 -,AEA,EA,DT2.1,,AA,C,0 -,NIC,AM,DT2.1,,AA,C,0 -,PR,AM,DT2.1,,AA,C,0 -,ACA,AM,DT2.1,,AA,C,0 -,AEA,AM,DT2.1,,AA,C,0 -,NIC,EOP,DT2.1,,AA,C,0 -,PR,EOP,DT2.1,,AA,C,0 -,ACA,EOP,DT2.1,,AA,C,0 -,AEA,EOP,DT2.1,,AA,C,0 -,NIC,BOP,DT2.1,,AA,N,0 -,PR,BOP,DT2.1,,AA,N,0 -,ACA,BOP,DT2.1,,AA,N,0 -,AEA,BOP,DT2.1,,AA,N,0 -,NIC,IA,DT2.1,,AA,N,0 -,PR,IA,DT2.1,,AA,N,0 -,ACA,IA,DT2.1,,AA,N,0 -,AEA,IA,DT2.1,,AA,N,0 -,NIC,BOP,DT2.1,,AA,I,0 -,PR,BOP,DT2.1,,AA,I,0 -,ACA,BOP,DT2.1,,AA,I,0 -,AEA,BOP,DT2.1,,AA,I,0 -,NIC,MC,DT2.1,,AA,I,0 -,PR,MC,DT2.1,,AA,I,0 -,ACA,MC,DT2.1,,AA,I,0 -,AEA,MC,DT2.1,,AA,I,0 -,NIC,RCU,DT2.1,,AA,I,0 -,PR,RCU,DT2.1,,AA,I,0 -,ACA,RCU,DT2.1,,AA,I,0 -,AEA,RCU,DT2.1,,AA,I,0 -,NIC,CF,DT2.1,,AA,I,0 -,PR,CF,DT2.1,,AA,I,0 -,ACA,CF,DT2.1,,AA,I,0 -,AEA,CF,DT2.1,,AA,I,0 -,NIC,IA,DT2.1,,AA,I,0 -,PR,IA,DT2.1,,AA,I,0 -,ACA,IA,DT2.1,,AA,I,0 -,AEA,IA,DT2.1,,AA,I,0 -,NIC,AU,DT2.1,,AA,I,0 -,PR,AU,DT2.1,,AA,I,0 -,ACA,AU,DT2.1,,AA,I,0 -,AEA,AU,DT2.1,,AA,I,0 -,NIC,YCU,DT2.1,,AA,I,0 -,PR,YCU,DT2.1,,AA,I,0 -,ACA,YCU,DT2.1,,AA,I,0 -,AEA,YCU,DT2.1,,AA,I,0 -,NIC,CRU,DT2.1,,AA,I,0 -,PR,CRU,DT2.1,,AA,I,0 -,ACA,CRU,DT2.1,,AA,I,0 -,AEA,CRU,DT2.1,,AA,I,0 -,NIC,EV,DT2.1,,AA,I,0 -,PR,EV,DT2.1,,AA,I,0 -,ACA,EV,DT2.1,,AA,I,0 -,AEA,EV,DT2.1,,AA,I,0 -,NIC,CF,DT2.1,,AA,N,0 -,PR,CF,DT2.1,,AA,N,0 -,ACA,CF,DT2.1,,AA,N,0 -,AEA,CF,DT2.1,,AA,N,0 -,NIC,AU,DT2.1,,AA,N,0 -,PR,AU,DT2.1,,AA,N,0 -,ACA,AU,DT2.1,,AA,N,0 -,AEA,AU,DT2.1,,AA,N,0 -,NIC,EV,DT2.1,,AA,N,0 -,PR,EV,DT2.1,,AA,N,0 -,ACA,EV,DT2.1,,AA,N,0 -,AEA,EV,DT2.1,,AA,N,0 -,NIC,CL,DT2.1,,AA,C,0 -,PR,CL,DT2.1,,AA,C,0 -,ACA,CL,DT2.1,,AA,C,0 -,AEA,CL,DT2.1,,AA,C,0 -,NIC,CF,DT1.3,,AA,C,0 -,PR,CF,DT1.3,,AA,C,0 -,ACA,CF,DT1.3,,AA,C,0 -,AEA,CF,DT1.3,,AA,C,0 -,NIC,EA,DT1.3,,AA,C,0 -,PR,EA,DT1.3,,AA,C,0 -,ACA,EA,DT1.3,,AA,C,0 -,AEA,EA,DT1.3,,AA,C,0 -,NIC,AM,DT1.3,,AA,C,0 -,PR,AM,DT1.3,,AA,C,0 -,ACA,AM,DT1.3,,AA,C,0 -,AEA,AM,DT1.3,,AA,C,0 -,NIC,EOP,DT1.3,,AA,C,0 -,PR,EOP,DT1.3,,AA,C,0 -,ACA,EOP,DT1.3,,AA,C,0 -,AEA,EOP,DT1.3,,AA,C,0 -,NIC,BOP,DT1.3,,AA,N,0 -,PR,BOP,DT1.3,,AA,N,0 -,ACA,BOP,DT1.3,,AA,N,0 -,AEA,BOP,DT1.3,,AA,N,0 -,NIC,IA,DT1.3,,AA,N,0 -,PR,IA,DT1.3,,AA,N,0 -,ACA,IA,DT1.3,,AA,N,0 -,AEA,IA,DT1.3,,AA,N,0 -,NIC,BOP,DT1.3,,AA,I,0 -,PR,BOP,DT1.3,,AA,I,0 -,ACA,BOP,DT1.3,,AA,I,0 -,AEA,BOP,DT1.3,,AA,I,0 -,NIC,MC,DT1.3,,AA,I,0 -,PR,MC,DT1.3,,AA,I,0 -,ACA,MC,DT1.3,,AA,I,0 -,AEA,MC,DT1.3,,AA,I,0 -,NIC,RCU,DT1.3,,AA,I,0 -,PR,RCU,DT1.3,,AA,I,0 -,ACA,RCU,DT1.3,,AA,I,0 -,AEA,RCU,DT1.3,,AA,I,0 -,NIC,CF,DT1.3,,AA,I,0 -,PR,CF,DT1.3,,AA,I,0 -,ACA,CF,DT1.3,,AA,I,0 -,AEA,CF,DT1.3,,AA,I,0 -,NIC,IA,DT1.3,,AA,I,0 -,PR,IA,DT1.3,,AA,I,0 -,ACA,IA,DT1.3,,AA,I,0 -,AEA,IA,DT1.3,,AA,I,0 -,NIC,AU,DT1.3,,AA,I,0 -,PR,AU,DT1.3,,AA,I,0 -,ACA,AU,DT1.3,,AA,I,0 -,AEA,AU,DT1.3,,AA,I,0 -,NIC,YCU,DT1.3,,AA,I,0 -,PR,YCU,DT1.3,,AA,I,0 -,ACA,YCU,DT1.3,,AA,I,0 -,AEA,YCU,DT1.3,,AA,I,0 -,NIC,CRU,DT1.3,,AA,I,0 -,PR,CRU,DT1.3,,AA,I,0 -,ACA,CRU,DT1.3,,AA,I,0 -,AEA,CRU,DT1.3,,AA,I,0 -,NIC,EV,DT1.3,,AA,I,0 -,PR,EV,DT1.3,,AA,I,0 -,ACA,EV,DT1.3,,AA,I,0 -,AEA,EV,DT1.3,,AA,I,0 -,NIC,CF,DT1.3,,AA,N,0 -,PR,CF,DT1.3,,AA,N,0 -,ACA,CF,DT1.3,,AA,N,0 -,AEA,CF,DT1.3,,AA,N,0 -,NIC,AU,DT1.3,,AA,N,0 -,PR,AU,DT1.3,,AA,N,0 -,ACA,AU,DT1.3,,AA,N,0 -,AEA,AU,DT1.3,,AA,N,0 -,NIC,EV,DT1.3,,AA,N,0 -,PR,EV,DT1.3,,AA,N,0 -,ACA,EV,DT1.3,,AA,N,0 -,AEA,EV,DT1.3,,AA,N,0 -,NIC,CL,DT1.3,,AA,C,0 -,PR,CL,DT1.3,,AA,C,0 -,ACA,CL,DT1.3,,AA,C,0 -,AEA,CL,DT1.3,,AA,C,0 -2020,NIC,CF,DT2.2,,AA,C,0 -2020,NIC,EA,DT2.2,,AA,C,0 -2020,NIC,AM,DT2.2,,AA,C,0 -2020,NIC,EOP,DT2.2,,AA,C,0 -2020,NIC,BOP,DT2.2,,AA,I,0 -2020,NIC,MC,DT2.2,,AA,I,0 -2020,NIC,RCU,DT2.2,,AA,I,0 -2020,NIC,CF,DT2.2,,AA,I,0 -2020,NIC,IA,DT2.2,,AA,I,0 -2020,NIC,AU,DT2.2,,AA,I,0 -2020,NIC,YCU,DT2.2,,AA,I,0 -2020,NIC,CRU,DT2.2,,AA,I,0 -2020,NIC,EV,DT2.2,,AA,I,0 -2020,NIC,BOP,DT2.2,,AA,N,0 -2020,NIC,CF,DT2.2,,AA,N,0 -2020,NIC,IA,DT2.2,,AA,N,0 -2020,NIC,AU,DT2.2,,AA,N,0 -2020,NIC,EV,DT2.2,,AA,N,0 -2020,NIC,CL,DT2.2,,AA,C,0 -,NIC,CF,DTR1.1,,AA,C,0 -,PR,CF,DTR1.1,,AA,C,0 -,NIC,BOP,DTR1.1,,AA,I,0 -,PR,BOP,DTR1.1,,AA,I,0 -,NIC,AM,DTR1.1,,AA,C,0 -,PR,AM,DTR1.1,,AA,C,0 -,NIC,EOP,DTR1.1,,AA,C,0 -,PR,EOP,DTR1.1,,AA,C,0 -,NIC,BOP,DTR1.1,,AA,N,0 -,PR,BOP,DTR1.1,,AA,N,0 -,NIC,IA,DTR1.1,,AA,N,0 -,PR,IA,DTR1.1,,AA,N,0 -,NIC,EA,DTR1.1,,AA,C,0 -,PR,EA,DTR1.1,,AA,C,0 -,NIC,MC,DTR1.1,,AA,I,0 -,PR,MC,DTR1.1,,AA,I,0 -,NIC,RCU,DTR1.1,,AA,I,0 -,PR,RCU,DTR1.1,,AA,I,0 -,NIC,CF,DTR1.1,,AA,I,0 -,PR,CF,DTR1.1,,AA,I,0 -,NIC,IA,DTR1.1,,AA,I,0 -,PR,IA,DTR1.1,,AA,I,0 -,NIC,AU,DTR1.1,,AA,I,0 -,PR,AU,DTR1.1,,AA,I,0 -,NIC,YCU,DTR1.1,,AA,I,0 -,PR,YCU,DTR1.1,,AA,I,0 -,NIC,CRU,DTR1.1,,AA,I,0 -,PR,CRU,DTR1.1,,AA,I,0 -,NIC,EV,DTR1.1,,AA,I,0 -,PR,EV,DTR1.1,,AA,I,0 -,NIC,CF,DTR1.1,,AA,N,0 -,PR,CF,DTR1.1,,AA,N,0 -,NIC,AU,DTR1.1,,AA,N,0 -,PR,AU,DTR1.1,,AA,N,0 -,NIC,EV,DTR1.1,,AA,N,0 -,PR,EV,DTR1.1,,AA,N,0 -,NIC,CL,DTR1.1,,AA,C,0 -,PR,CL,DTR1.1,,AA,C,0 -2020,NIC,CF,DTR1.2,,AA,C,0 -2020,NIC,BOP,DTR1.2,,AA,I,0 -2020,NIC,EA,DTR1.2,,AA,C,0 -2020,NIC,AM,DTR1.2,,AA,C,0 -2020,NIC,EOP,DTR1.2,,AA,C,0 -2020,NIC,MC,DTR1.2,,AA,I,0 -2020,NIC,RCU,DTR1.2,,AA,I,0 -2020,NIC,CF,DTR1.2,,AA,I,0 -2020,NIC,IA,DTR1.2,,AA,I,0 -2020,NIC,AU,DTR1.2,,AA,I,0 -2020,NIC,YCU,DTR1.2,,AA,I,0 -2020,NIC,CRU,DTR1.2,,AA,I,0 -2020,NIC,EV,DTR1.2,,AA,I,0 -2020,NIC,BOP,DTR1.2,,AA,N,0 -2020,NIC,CF,DTR1.2,,AA,N,0 -2020,NIC,IA,DTR1.2,,AA,N,0 -2020,NIC,AU,DTR1.2,,AA,N,0 -2020,NIC,EV,DTR1.2,,AA,N,0 -2020,NIC,CL,DTR1.2,,AA,C,0 -,PR,CF,DTR2.1,,AA,C,0 -,NIC,CF,DTR2.1,,AA,C,0 -,PR,AM,DTR2.1,,AA,C,0 -,NIC,AM,DTR2.1,,AA,C,0 -,PR,EOP,DTR2.1,,AA,C,0 -,NIC,EOP,DTR2.1,,AA,C,0 -,PR,BOP,DTR2.1,,AA,N,0 -,NIC,BOP,DTR2.1,,AA,N,0 -,PR,IA,DTR2.1,,AA,N,0 -,NIC,IA,DTR2.1,,AA,N,0 -,PR,EA,DTR2.1,,AA,C,0 -,NIC,EA,DTR2.1,,AA,C,0 -,PR,BOP,DTR2.1,,AA,I,0 -,NIC,BOP,DTR2.1,,AA,I,0 -,PR,MC,DTR2.1,,AA,I,0 -,NIC,MC,DTR2.1,,AA,I,0 -,PR,RCU,DTR2.1,,AA,I,0 -,NIC,RCU,DTR2.1,,AA,I,0 -,PR,CF,DTR2.1,,AA,I,0 -,NIC,CF,DTR2.1,,AA,I,0 -,PR,IA,DTR2.1,,AA,I,0 -,NIC,IA,DTR2.1,,AA,I,0 -,PR,AU,DTR2.1,,AA,I,0 -,NIC,AU,DTR2.1,,AA,I,0 -,PR,YCU,DTR2.1,,AA,I,0 -,NIC,YCU,DTR2.1,,AA,I,0 -,PR,CRU,DTR2.1,,AA,I,0 -,NIC,CRU,DTR2.1,,AA,I,0 -,PR,EV,DTR2.1,,AA,I,0 -,NIC,EV,DTR2.1,,AA,I,0 -,PR,CF,DTR2.1,,AA,N,0 -,NIC,CF,DTR2.1,,AA,N,0 -,PR,AU,DTR2.1,,AA,N,0 -,NIC,AU,DTR2.1,,AA,N,0 -,PR,EV,DTR2.1,,AA,N,0 -,NIC,EV,DTR2.1,,AA,N,0 -,PR,CL,DTR2.1,,AA,C,0 -,NIC,CL,DTR2.1,,AA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv deleted file mode 100644 index b24c3610..00000000 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_L.csv +++ /dev/null @@ -1,62 +0,0 @@ -@@Main -Month,ReportingNode,Scenario,Year -12,CH,MTUP10pct,2020 -@@L -AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,EOP,DT1.1,,L,C,0 -,,AM,DT1.1,,L,C,0 -,,EA,DT1.1,,L,C,0 -,,BOP,DT1.1,,L,I,0 -,,CF,DT1.1,,L,C,0 -,,BOP,DT1.1,,L,N,0 -,,IA,DT1.1,,L,N,0 -,,MC,DT1.1,,L,I,0 -,,RCU,DT1.1,,L,I,0 -,,CF,DT1.1,,L,I,0 -,,IA,DT1.1,,L,I,0 -,,AU,DT1.1,,L,I,0 -,,YCU,DT1.1,,L,I,0 -,,CRU,DT1.1,,L,I,0 -,,EV,DT1.1,,L,I,0 -,,CF,DT1.1,,L,N,0 -,,AU,DT1.1,,L,N,0 -,,EV,DT1.1,,L,N,0 -,,CL,DT1.1,,L,C,0 -,,CF,DT2.1,,L,C,0 -,,EA,DT2.1,,L,C,0 -,,AM,DT2.1,,L,C,0 -,,EOP,DT2.1,,L,C,0 -,,BOP,DT2.1,,L,N,0 -,,IA,DT2.1,,L,N,0 -,,BOP,DT2.1,,L,I,0 -,,MC,DT2.1,,L,I,0 -,,RCU,DT2.1,,L,I,0 -,,CF,DT2.1,,L,I,0 -,,IA,DT2.1,,L,I,0 -,,AU,DT2.1,,L,I,0 -,,YCU,DT2.1,,L,I,0 -,,CRU,DT2.1,,L,I,0 -,,EV,DT2.1,,L,I,0 -,,CF,DT2.1,,L,N,0 -,,AU,DT2.1,,L,N,0 -,,EV,DT2.1,,L,N,0 -,,CL,DT2.1,,L,C,0 -,,CF,DT1.3,,L,C,0 -,,EA,DT1.3,,L,C,0 -,,AM,DT1.3,,L,C,0 -,,EOP,DT1.3,,L,C,0 -,,BOP,DT1.3,,L,N,0 -,,IA,DT1.3,,L,N,0 -,,BOP,DT1.3,,L,I,0 -,,MC,DT1.3,,L,I,0 -,,RCU,DT1.3,,L,I,0 -,,CF,DT1.3,,L,I,0 -,,IA,DT1.3,,L,I,0 -,,AU,DT1.3,,L,I,0 -,,YCU,DT1.3,,L,I,0 -,,CRU,DT1.3,,L,I,0 -,,EV,DT1.3,,L,I,0 -,,CF,DT1.3,,L,N,0 -,,AU,DT1.3,,L,N,0 -,,EV,DT1.3,,L,N,0 -,,CL,DT1.3,,L,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv deleted file mode 100644 index 5e9f018b..00000000 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_LR.csv +++ /dev/null @@ -1,43 +0,0 @@ -@@Main -Month,ReportingNode,Scenario,Year -12,CH,MTUP10pct,2020 -@@LR -AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,,CF,DTR1.1,,LR,C,0 -,,BOP,DTR1.1,,LR,I,0 -,,AM,DTR1.1,,LR,C,0 -,,EOP,DTR1.1,,LR,C,0 -,,BOP,DTR1.1,,LR,N,0 -,,IA,DTR1.1,,LR,N,0 -,,EA,DTR1.1,,LR,C,0 -,,MC,DTR1.1,,LR,I,0 -,,RCU,DTR1.1,,LR,I,0 -,,CF,DTR1.1,,LR,I,0 -,,IA,DTR1.1,,LR,I,0 -,,AU,DTR1.1,,LR,I,0 -,,YCU,DTR1.1,,LR,I,0 -,,CRU,DTR1.1,,LR,I,0 -,,EV,DTR1.1,,LR,I,0 -,,CF,DTR1.1,,LR,N,0 -,,AU,DTR1.1,,LR,N,0 -,,EV,DTR1.1,,LR,N,0 -,,CL,DTR1.1,,LR,C,0 -,,CF,DTR2.1,,LR,C,0 -,,AM,DTR2.1,,LR,C,0 -,,EOP,DTR2.1,,LR,C,0 -,,BOP,DTR2.1,,LR,N,0 -,,IA,DTR2.1,,LR,N,0 -,,EA,DTR2.1,,LR,C,0 -,,BOP,DTR2.1,,LR,I,0 -,,MC,DTR2.1,,LR,I,0 -,,RCU,DTR2.1,,LR,I,0 -,,CF,DTR2.1,,LR,I,0 -,,IA,DTR2.1,,LR,I,0 -,,AU,DTR2.1,,LR,I,0 -,,YCU,DTR2.1,,LR,I,0 -,,CRU,DTR2.1,,LR,I,0 -,,EV,DTR2.1,,LR,I,0 -,,CF,DTR2.1,,LR,N,0 -,,AU,DTR2.1,,LR,N,0 -,,EV,DTR2.1,,LR,N,0 -,,CL,DTR2.1,,LR,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv deleted file mode 100644 index 9725b5a6..00000000 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_OA.csv +++ /dev/null @@ -1,366 +0,0 @@ -@@Main -Month,ReportingNode,Scenario,Year -12,CH,MTUP10pct,2020 -@@OA -AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,AEA,EOP,DT1.1,,OA,C,0 -,ACA,EOP,DT1.1,,OA,C,0 -,PR,EOP,DT1.1,,OA,C,0 -,NIC,EOP,DT1.1,,OA,C,0 -,AEA,AM,DT1.1,,OA,C,0 -,ACA,AM,DT1.1,,OA,C,0 -,PR,AM,DT1.1,,OA,C,0 -,NIC,AM,DT1.1,,OA,C,0 -,AEA,EA,DT1.1,,OA,C,0 -,ACA,EA,DT1.1,,OA,C,0 -,PR,EA,DT1.1,,OA,C,0 -,NIC,EA,DT1.1,,OA,C,0 -,AEA,BOP,DT1.1,,OA,I,0 -,ACA,BOP,DT1.1,,OA,I,0 -,PR,BOP,DT1.1,,OA,I,0 -,NIC,BOP,DT1.1,,OA,I,0 -,AEA,CF,DT1.1,,OA,C,0 -,ACA,CF,DT1.1,,OA,C,0 -,PR,CF,DT1.1,,OA,C,0 -,NIC,CF,DT1.1,,OA,C,0 -,NIC,BOP,DT1.1,,OA,N,0 -,PR,BOP,DT1.1,,OA,N,0 -,ACA,BOP,DT1.1,,OA,N,0 -,AEA,BOP,DT1.1,,OA,N,0 -,NIC,IA,DT1.1,,OA,N,0 -,PR,IA,DT1.1,,OA,N,0 -,ACA,IA,DT1.1,,OA,N,0 -,AEA,IA,DT1.1,,OA,N,0 -,NIC,MC,DT1.1,,OA,I,0 -,PR,MC,DT1.1,,OA,I,0 -,ACA,MC,DT1.1,,OA,I,0 -,AEA,MC,DT1.1,,OA,I,0 -,NIC,RCU,DT1.1,,OA,I,0 -,PR,RCU,DT1.1,,OA,I,0 -,ACA,RCU,DT1.1,,OA,I,0 -,AEA,RCU,DT1.1,,OA,I,0 -,NIC,CF,DT1.1,,OA,I,0 -,PR,CF,DT1.1,,OA,I,0 -,ACA,CF,DT1.1,,OA,I,0 -,AEA,CF,DT1.1,,OA,I,0 -,NIC,IA,DT1.1,,OA,I,0 -,PR,IA,DT1.1,,OA,I,0 -,ACA,IA,DT1.1,,OA,I,0 -,AEA,IA,DT1.1,,OA,I,0 -,NIC,AU,DT1.1,,OA,I,0 -,PR,AU,DT1.1,,OA,I,0 -,ACA,AU,DT1.1,,OA,I,0 -,AEA,AU,DT1.1,,OA,I,0 -,NIC,YCU,DT1.1,,OA,I,0 -,PR,YCU,DT1.1,,OA,I,0 -,ACA,YCU,DT1.1,,OA,I,0 -,AEA,YCU,DT1.1,,OA,I,0 -,NIC,CRU,DT1.1,,OA,I,0 -,PR,CRU,DT1.1,,OA,I,0 -,ACA,CRU,DT1.1,,OA,I,0 -,AEA,CRU,DT1.1,,OA,I,0 -,NIC,EV,DT1.1,,OA,I,0 -,PR,EV,DT1.1,,OA,I,0 -,ACA,EV,DT1.1,,OA,I,0 -,AEA,EV,DT1.1,,OA,I,0 -,NIC,CF,DT1.1,,OA,N,0 -,PR,CF,DT1.1,,OA,N,0 -,ACA,CF,DT1.1,,OA,N,0 -,AEA,CF,DT1.1,,OA,N,0 -,NIC,AU,DT1.1,,OA,N,0 -,PR,AU,DT1.1,,OA,N,0 -,ACA,AU,DT1.1,,OA,N,0 -,AEA,AU,DT1.1,,OA,N,0 -,NIC,EV,DT1.1,,OA,N,0 -,PR,EV,DT1.1,,OA,N,0 -,ACA,EV,DT1.1,,OA,N,0 -,AEA,EV,DT1.1,,OA,N,0 -,NIC,CL,DT1.1,,OA,C,0 -,PR,CL,DT1.1,,OA,C,0 -,ACA,CL,DT1.1,,OA,C,0 -,AEA,CL,DT1.1,,OA,C,0 -2020,NIC,CF,DT1.2,,OA,C,0 -2020,NIC,BOP,DT1.2,,OA,I,0 -2020,NIC,EA,DT1.2,,OA,C,0 -2020,NIC,AM,DT1.2,,OA,C,0 -2020,NIC,EOP,DT1.2,,OA,C,0 -2020,NIC,MC,DT1.2,,OA,I,0 -2020,NIC,RCU,DT1.2,,OA,I,0 -2020,NIC,CF,DT1.2,,OA,I,0 -2020,NIC,IA,DT1.2,,OA,I,0 -2020,NIC,AU,DT1.2,,OA,I,0 -2020,NIC,YCU,DT1.2,,OA,I,0 -2020,NIC,CRU,DT1.2,,OA,I,0 -2020,NIC,EV,DT1.2,,OA,I,0 -2020,NIC,BOP,DT1.2,,OA,N,0 -2020,NIC,CF,DT1.2,,OA,N,0 -2020,NIC,IA,DT1.2,,OA,N,0 -2020,NIC,AU,DT1.2,,OA,N,0 -2020,NIC,EV,DT1.2,,OA,N,0 -2020,NIC,CL,DT1.2,,OA,C,0 -,NIC,CF,DT2.1,,OA,C,0 -,PR,CF,DT2.1,,OA,C,0 -,ACA,CF,DT2.1,,OA,C,0 -,AEA,CF,DT2.1,,OA,C,0 -,NIC,EA,DT2.1,,OA,C,0 -,PR,EA,DT2.1,,OA,C,0 -,ACA,EA,DT2.1,,OA,C,0 -,AEA,EA,DT2.1,,OA,C,0 -,NIC,AM,DT2.1,,OA,C,0 -,PR,AM,DT2.1,,OA,C,0 -,ACA,AM,DT2.1,,OA,C,0 -,AEA,AM,DT2.1,,OA,C,0 -,NIC,EOP,DT2.1,,OA,C,0 -,PR,EOP,DT2.1,,OA,C,0 -,ACA,EOP,DT2.1,,OA,C,0 -,AEA,EOP,DT2.1,,OA,C,0 -,NIC,BOP,DT2.1,,OA,N,0 -,PR,BOP,DT2.1,,OA,N,0 -,ACA,BOP,DT2.1,,OA,N,0 -,AEA,BOP,DT2.1,,OA,N,0 -,NIC,IA,DT2.1,,OA,N,0 -,PR,IA,DT2.1,,OA,N,0 -,ACA,IA,DT2.1,,OA,N,0 -,AEA,IA,DT2.1,,OA,N,0 -,NIC,BOP,DT2.1,,OA,I,0 -,PR,BOP,DT2.1,,OA,I,0 -,ACA,BOP,DT2.1,,OA,I,0 -,AEA,BOP,DT2.1,,OA,I,0 -,NIC,MC,DT2.1,,OA,I,0 -,PR,MC,DT2.1,,OA,I,0 -,ACA,MC,DT2.1,,OA,I,0 -,AEA,MC,DT2.1,,OA,I,0 -,NIC,RCU,DT2.1,,OA,I,0 -,PR,RCU,DT2.1,,OA,I,0 -,ACA,RCU,DT2.1,,OA,I,0 -,AEA,RCU,DT2.1,,OA,I,0 -,NIC,CF,DT2.1,,OA,I,0 -,PR,CF,DT2.1,,OA,I,0 -,ACA,CF,DT2.1,,OA,I,0 -,AEA,CF,DT2.1,,OA,I,0 -,NIC,IA,DT2.1,,OA,I,0 -,PR,IA,DT2.1,,OA,I,0 -,ACA,IA,DT2.1,,OA,I,0 -,AEA,IA,DT2.1,,OA,I,0 -,NIC,AU,DT2.1,,OA,I,0 -,PR,AU,DT2.1,,OA,I,0 -,ACA,AU,DT2.1,,OA,I,0 -,AEA,AU,DT2.1,,OA,I,0 -,NIC,YCU,DT2.1,,OA,I,0 -,PR,YCU,DT2.1,,OA,I,0 -,ACA,YCU,DT2.1,,OA,I,0 -,AEA,YCU,DT2.1,,OA,I,0 -,NIC,CRU,DT2.1,,OA,I,0 -,PR,CRU,DT2.1,,OA,I,0 -,ACA,CRU,DT2.1,,OA,I,0 -,AEA,CRU,DT2.1,,OA,I,0 -,NIC,EV,DT2.1,,OA,I,0 -,PR,EV,DT2.1,,OA,I,0 -,ACA,EV,DT2.1,,OA,I,0 -,AEA,EV,DT2.1,,OA,I,0 -,NIC,CF,DT2.1,,OA,N,0 -,PR,CF,DT2.1,,OA,N,0 -,ACA,CF,DT2.1,,OA,N,0 -,AEA,CF,DT2.1,,OA,N,0 -,NIC,AU,DT2.1,,OA,N,0 -,PR,AU,DT2.1,,OA,N,0 -,ACA,AU,DT2.1,,OA,N,0 -,AEA,AU,DT2.1,,OA,N,0 -,NIC,EV,DT2.1,,OA,N,0 -,PR,EV,DT2.1,,OA,N,0 -,ACA,EV,DT2.1,,OA,N,0 -,AEA,EV,DT2.1,,OA,N,0 -,NIC,CL,DT2.1,,OA,C,0 -,PR,CL,DT2.1,,OA,C,0 -,ACA,CL,DT2.1,,OA,C,0 -,AEA,CL,DT2.1,,OA,C,0 -,NIC,CF,DT1.3,,OA,C,0 -,PR,CF,DT1.3,,OA,C,0 -,ACA,CF,DT1.3,,OA,C,0 -,AEA,CF,DT1.3,,OA,C,0 -,NIC,EA,DT1.3,,OA,C,0 -,PR,EA,DT1.3,,OA,C,0 -,ACA,EA,DT1.3,,OA,C,0 -,AEA,EA,DT1.3,,OA,C,0 -,NIC,AM,DT1.3,,OA,C,0 -,PR,AM,DT1.3,,OA,C,0 -,ACA,AM,DT1.3,,OA,C,0 -,AEA,AM,DT1.3,,OA,C,0 -,NIC,EOP,DT1.3,,OA,C,0 -,PR,EOP,DT1.3,,OA,C,0 -,ACA,EOP,DT1.3,,OA,C,0 -,AEA,EOP,DT1.3,,OA,C,0 -,NIC,BOP,DT1.3,,OA,N,0 -,PR,BOP,DT1.3,,OA,N,0 -,ACA,BOP,DT1.3,,OA,N,0 -,AEA,BOP,DT1.3,,OA,N,0 -,NIC,IA,DT1.3,,OA,N,0 -,PR,IA,DT1.3,,OA,N,0 -,ACA,IA,DT1.3,,OA,N,0 -,AEA,IA,DT1.3,,OA,N,0 -,NIC,BOP,DT1.3,,OA,I,0 -,PR,BOP,DT1.3,,OA,I,0 -,ACA,BOP,DT1.3,,OA,I,0 -,AEA,BOP,DT1.3,,OA,I,0 -,NIC,MC,DT1.3,,OA,I,0 -,PR,MC,DT1.3,,OA,I,0 -,ACA,MC,DT1.3,,OA,I,0 -,AEA,MC,DT1.3,,OA,I,0 -,NIC,RCU,DT1.3,,OA,I,0 -,PR,RCU,DT1.3,,OA,I,0 -,ACA,RCU,DT1.3,,OA,I,0 -,AEA,RCU,DT1.3,,OA,I,0 -,NIC,CF,DT1.3,,OA,I,0 -,PR,CF,DT1.3,,OA,I,0 -,ACA,CF,DT1.3,,OA,I,0 -,AEA,CF,DT1.3,,OA,I,0 -,NIC,IA,DT1.3,,OA,I,0 -,PR,IA,DT1.3,,OA,I,0 -,ACA,IA,DT1.3,,OA,I,0 -,AEA,IA,DT1.3,,OA,I,0 -,NIC,AU,DT1.3,,OA,I,0 -,PR,AU,DT1.3,,OA,I,0 -,ACA,AU,DT1.3,,OA,I,0 -,AEA,AU,DT1.3,,OA,I,0 -,NIC,YCU,DT1.3,,OA,I,0 -,PR,YCU,DT1.3,,OA,I,0 -,ACA,YCU,DT1.3,,OA,I,0 -,AEA,YCU,DT1.3,,OA,I,0 -,NIC,CRU,DT1.3,,OA,I,0 -,PR,CRU,DT1.3,,OA,I,0 -,ACA,CRU,DT1.3,,OA,I,0 -,AEA,CRU,DT1.3,,OA,I,0 -,NIC,EV,DT1.3,,OA,I,0 -,PR,EV,DT1.3,,OA,I,0 -,ACA,EV,DT1.3,,OA,I,0 -,AEA,EV,DT1.3,,OA,I,0 -,NIC,CF,DT1.3,,OA,N,0 -,PR,CF,DT1.3,,OA,N,0 -,ACA,CF,DT1.3,,OA,N,0 -,AEA,CF,DT1.3,,OA,N,0 -,NIC,AU,DT1.3,,OA,N,0 -,PR,AU,DT1.3,,OA,N,0 -,ACA,AU,DT1.3,,OA,N,0 -,AEA,AU,DT1.3,,OA,N,0 -,NIC,EV,DT1.3,,OA,N,0 -,PR,EV,DT1.3,,OA,N,0 -,ACA,EV,DT1.3,,OA,N,0 -,AEA,EV,DT1.3,,OA,N,0 -,NIC,CL,DT1.3,,OA,C,0 -,PR,CL,DT1.3,,OA,C,0 -,ACA,CL,DT1.3,,OA,C,0 -,AEA,CL,DT1.3,,OA,C,0 -2020,NIC,CF,DT2.2,,OA,C,0 -2020,NIC,EA,DT2.2,,OA,C,0 -2020,NIC,AM,DT2.2,,OA,C,0 -2020,NIC,EOP,DT2.2,,OA,C,0 -2020,NIC,BOP,DT2.2,,OA,I,0 -2020,NIC,MC,DT2.2,,OA,I,0 -2020,NIC,RCU,DT2.2,,OA,I,0 -2020,NIC,CF,DT2.2,,OA,I,0 -2020,NIC,IA,DT2.2,,OA,I,0 -2020,NIC,AU,DT2.2,,OA,I,0 -2020,NIC,YCU,DT2.2,,OA,I,0 -2020,NIC,CRU,DT2.2,,OA,I,0 -2020,NIC,EV,DT2.2,,OA,I,0 -2020,NIC,BOP,DT2.2,,OA,N,0 -2020,NIC,CF,DT2.2,,OA,N,0 -2020,NIC,IA,DT2.2,,OA,N,0 -2020,NIC,AU,DT2.2,,OA,N,0 -2020,NIC,EV,DT2.2,,OA,N,0 -2020,NIC,CL,DT2.2,,OA,C,0 -,NIC,CF,DTR1.1,,OA,C,0 -,PR,CF,DTR1.1,,OA,C,0 -,NIC,BOP,DTR1.1,,OA,I,0 -,PR,BOP,DTR1.1,,OA,I,0 -,NIC,AM,DTR1.1,,OA,C,0 -,PR,AM,DTR1.1,,OA,C,0 -,NIC,EOP,DTR1.1,,OA,C,0 -,PR,EOP,DTR1.1,,OA,C,0 -,NIC,BOP,DTR1.1,,OA,N,0 -,PR,BOP,DTR1.1,,OA,N,0 -,NIC,IA,DTR1.1,,OA,N,0 -,PR,IA,DTR1.1,,OA,N,0 -,NIC,EA,DTR1.1,,OA,C,0 -,PR,EA,DTR1.1,,OA,C,0 -,NIC,MC,DTR1.1,,OA,I,0 -,PR,MC,DTR1.1,,OA,I,0 -,NIC,RCU,DTR1.1,,OA,I,0 -,PR,RCU,DTR1.1,,OA,I,0 -,NIC,CF,DTR1.1,,OA,I,0 -,PR,CF,DTR1.1,,OA,I,0 -,NIC,IA,DTR1.1,,OA,I,0 -,PR,IA,DTR1.1,,OA,I,0 -,NIC,AU,DTR1.1,,OA,I,0 -,PR,AU,DTR1.1,,OA,I,0 -,NIC,YCU,DTR1.1,,OA,I,0 -,PR,YCU,DTR1.1,,OA,I,0 -,NIC,CRU,DTR1.1,,OA,I,0 -,PR,CRU,DTR1.1,,OA,I,0 -,NIC,EV,DTR1.1,,OA,I,0 -,PR,EV,DTR1.1,,OA,I,0 -,NIC,CF,DTR1.1,,OA,N,0 -,PR,CF,DTR1.1,,OA,N,0 -,NIC,AU,DTR1.1,,OA,N,0 -,PR,AU,DTR1.1,,OA,N,0 -,NIC,EV,DTR1.1,,OA,N,0 -,PR,EV,DTR1.1,,OA,N,0 -,NIC,CL,DTR1.1,,OA,C,0 -,PR,CL,DTR1.1,,OA,C,0 -2020,NIC,CF,DTR1.2,,OA,C,0 -2020,NIC,BOP,DTR1.2,,OA,I,0 -2020,NIC,EA,DTR1.2,,OA,C,0 -2020,NIC,AM,DTR1.2,,OA,C,0 -2020,NIC,EOP,DTR1.2,,OA,C,0 -2020,NIC,MC,DTR1.2,,OA,I,0 -2020,NIC,RCU,DTR1.2,,OA,I,0 -2020,NIC,CF,DTR1.2,,OA,I,0 -2020,NIC,IA,DTR1.2,,OA,I,0 -2020,NIC,AU,DTR1.2,,OA,I,0 -2020,NIC,YCU,DTR1.2,,OA,I,0 -2020,NIC,CRU,DTR1.2,,OA,I,0 -2020,NIC,EV,DTR1.2,,OA,I,0 -2020,NIC,BOP,DTR1.2,,OA,N,0 -2020,NIC,CF,DTR1.2,,OA,N,0 -2020,NIC,IA,DTR1.2,,OA,N,0 -2020,NIC,AU,DTR1.2,,OA,N,0 -2020,NIC,EV,DTR1.2,,OA,N,0 -2020,NIC,CL,DTR1.2,,OA,C,0 -,PR,CF,DTR2.1,,OA,C,0 -,NIC,CF,DTR2.1,,OA,C,0 -,PR,AM,DTR2.1,,OA,C,0 -,NIC,AM,DTR2.1,,OA,C,0 -,PR,EOP,DTR2.1,,OA,C,0 -,NIC,EOP,DTR2.1,,OA,C,0 -,PR,BOP,DTR2.1,,OA,N,0 -,NIC,BOP,DTR2.1,,OA,N,0 -,PR,IA,DTR2.1,,OA,N,0 -,NIC,IA,DTR2.1,,OA,N,0 -,PR,EA,DTR2.1,,OA,C,0 -,NIC,EA,DTR2.1,,OA,C,0 -,PR,BOP,DTR2.1,,OA,I,0 -,NIC,BOP,DTR2.1,,OA,I,0 -,PR,MC,DTR2.1,,OA,I,0 -,NIC,MC,DTR2.1,,OA,I,0 -,PR,RCU,DTR2.1,,OA,I,0 -,NIC,RCU,DTR2.1,,OA,I,0 -,PR,CF,DTR2.1,,OA,I,0 -,NIC,CF,DTR2.1,,OA,I,0 -,PR,IA,DTR2.1,,OA,I,0 -,NIC,IA,DTR2.1,,OA,I,0 -,PR,AU,DTR2.1,,OA,I,0 -,NIC,AU,DTR2.1,,OA,I,0 -,PR,YCU,DTR2.1,,OA,I,0 -,NIC,YCU,DTR2.1,,OA,I,0 -,PR,CRU,DTR2.1,,OA,I,0 -,NIC,CRU,DTR2.1,,OA,I,0 -,PR,EV,DTR2.1,,OA,I,0 -,NIC,EV,DTR2.1,,OA,I,0 -,PR,CF,DTR2.1,,OA,N,0 -,NIC,CF,DTR2.1,,OA,N,0 -,PR,AU,DTR2.1,,OA,N,0 -,NIC,AU,DTR2.1,,OA,N,0 -,PR,EV,DTR2.1,,OA,N,0 -,NIC,EV,DTR2.1,,OA,N,0 -,PR,CL,DTR2.1,,OA,C,0 -,NIC,CL,DTR2.1,,OA,C,0 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv index 86b67a8f..5c3c3747 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH_MTUP10pct_Contractual.csv @@ -1,183 +1,33 @@ @@ReportVariable AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis,EstimateType,FunctionalCurrency,GroupOfContract,InitialProfitability,IsReinsurance,LiabilityType,LineOfBusiness,Novelty,OciType,Partner,Portfolio,Projection,ReportingNode,Scenario,ValuationApproach,Value,VariableType -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AM -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IR4 -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE6 -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,A,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,AA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP -2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF -2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP -2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-329.6431,OCI2 -2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP -2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF -2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP -2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-1.01487,IFIE2 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-328.62824,ISE12 2020,NIC,2020,USD,USD,L,BE,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,OCI2 -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,OA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP -2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF -2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP -2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 2020,,2020,USD,USD,C,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.96755,OCI2 -2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP -2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF -2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP -2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE2 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,ISE12 2020,,2020,USD,USD,L,RA,CHF,DT1.2,P,False,LIC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI2 -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0,AM -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,IR4 -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE6 -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,CF -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,ISE2 -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,A,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,AA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,598.75294,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,299.67555,EOP @@ -189,24 +39,6 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,299.67555,EOP 2020,NIC,2020,USD,USD,L,BE,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.92261,IA -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,OA,CHF,DT2.2,P,False,LIC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,59.87529,BOP 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 2020,,2020,USD,USD,C,RA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -218,144 +50,40 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP 2020,,2020,USD,USD,L,RA,CHF,DT2.2,P,False,LIC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.09226,IA -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AM -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IR4 -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE6 -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,CF -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,ISE2 -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,A,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,AA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP -2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 2020,CDR,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.1268,OCI2 -2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP -2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF -2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP -2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 2020,NIC,2020,USD,USD,C,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.82155,OCI2 -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP -2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00129,IFIE2 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.12551,ISE12 2020,CDR,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,OCI2 -2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP -2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF -2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP -2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.50743,IFIE2 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.31412,ISE12 2020,NIC,2020,USD,USD,L,BE,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,OCI2 -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -2020,NIC,2020,USD,USD,,OA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP -2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF -2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP -2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 2020,,2020,USD,USD,C,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.98378,OCI2 -2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP -2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF -2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP -2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE2 2020,,2020,USD,USD,L,RA,CHF,DTR1.2,P,True,LIC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE12 @@ -395,512 +123,73 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,15,CF 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-14.98378,EOP 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.04613,IA -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,ISE4 -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,ISE3 -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR1 -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,AA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-320,IR6 -0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP -0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF -0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP -0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-329.6431,OCI1 -0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-798.53673,BOP -0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF -0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,EOP -0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,399.63393,OCI1 -0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,658.62824,BOP -0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-330,CF -0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,EOP -0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,1.01487,IA 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-1.01487,IFIE1 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-328.62824,IR5 0,NIC,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,329.6431,OCI1 -0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-798.53673,BOP -0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF -0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,EOP -0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,398.53673,IR5 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,OCI1 0,PR,2020,USD,USD,L,BEPA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-42.67021,AM -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,80.0332,BOP -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CRU 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,EA 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,22.35306,EOP -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0.00993,IA 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0.00993,IFIE1 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,42.67021,IR3 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-65.0332,IR5 -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,MC -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,RCU -0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,AM -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,CF -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5.15655,EOP -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE11 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE9 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,OA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP -0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF -0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP -0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.96755,OCI1 -0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP -0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF -0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP -0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.09226,IA 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI1 -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-10,ISE4 -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5,ISE3 -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-310,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,CF -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CL -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR1 -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,AA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-400,IR6 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-300,CF @@ -928,139 +217,18 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-399.63393,OCI1 0,PR,2020,USD,USD,L,BEPA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,400,IR6 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-82.02271,AM -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,139.90849,BOP -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,CRU 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,EA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,42.96811,EOP -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0.08233,IA 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.08233,IFIE1 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,82.02271,IR3 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-124.90849,IR5 -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,MC -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,RCU -0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,AM -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-15,CF -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-5.15655,EOP -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE11 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,ISE9 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,OA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,59.87529,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,0,CH,MTUP10pct,BBA,-30,CF 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -1201,158 +369,14 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,0,CH,MTUP10pct,BBA,29.96755,OCI1 -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-10,CF -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-10,ISE4 -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5,CF -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5,ISE3 -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-310,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,400,CF -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CL -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,400,IR1 -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,AA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 0,PR,2020,USD,USD,,APA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-320,IR6 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-300,CF @@ -1378,139 +402,18 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BEPA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-82.02271,AM -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,139.90849,BOP -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,CRU 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-15,EA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,42.96811,EOP -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0.08233,IA 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-0.08233,IFIE1 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,82.02271,IR3 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-124.90849,IR5 -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,MC -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,RCU -0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,-0,YCU 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,9.84345,AM -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-15,CF -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-5.15655,EOP -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,9.84345,IR4 0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,-9.84345,ISE6 -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,IFIE1 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE11 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,ISE9 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,ACA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,AEA,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,OA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,59.87529,BOP 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,0,CH,MTUP10pct,BBA,-30,CF 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,0,CH,MTUP10pct,BBA,29.96755,EOP @@ -1705,264 +608,61 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,-0.09226,IFIE1 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,0,CH,MTUP10pct,BBA,29.96755,OCI1 -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,170,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CL -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,ISE1 -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,A,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,AA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP -0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 0,CDR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.1268,OCI1 -0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP -0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF -0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP -0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 0,NIC,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.82155,OCI1 -0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,399.26837,BOP -0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF -0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,EOP -0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.5486,IA 0,PR,2020,USD,USD,C,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-199.81696,OCI1 -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.52925,BOP -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.40374,CF -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,EOP -0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00129,IA 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00129,IFIE1 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.12551,ISE10 0,CDR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.1268,OCI1 -0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-329.31412,BOP -0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,165,CF -0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,EOP -0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.50743,IA 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.50743,IFIE1 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,164.31412,ISE10 0,NIC,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-164.82155,OCI1 -0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,399.26837,BOP -0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-200,CF -0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,EOP -0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.5486,IA 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.5486,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-199.26837,ISE10 0,PR,2020,USD,USD,L,BE,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,199.81696,OCI1 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,26.60498,AM -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-40.54585,BOP -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,CRU -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-13.93719,EOP -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.00368,IA 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.00368,IFIE1 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,40.54585,ISE10 0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-26.60498,ISE7 -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,MC -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,RCU -0,,2020,USD,USD,,C,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,YCU -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0,AM -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IR4 -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE6 -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE11 -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,ISE8 -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,OA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP -0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF -0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP -0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.98378,OCI1 -0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,BOP 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-29.93765,BOP -0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,CF 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,15,CF -0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,EA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,EOP -0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0,IA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-0.04613,IA 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE1 0,,2020,USD,USD,L,RA,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE10 @@ -2095,82 +795,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,0.04613,IFIE1 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,14.93765,ISE10 0,,2020,USD,USD,L,RA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,0,CH,MTUP10pct,BBA,-14.98378,OCI1 -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP 0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,140,CF -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CL -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA 0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,140,ISE2 -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP 0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-200,CF -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CL -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA 0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-200,ISE1 -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,A,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,AA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.48113,BOP 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.36703,CF 0,CDR,2020,USD,USD,C,BE,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.11527,EOP @@ -2205,103 +833,12 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,199.81696,EOP 0,PR,2020,USD,USD,L,BE,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.5486,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,46.24958,AM -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AU -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,BOP 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-70.43538,BOP -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CF -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,CRU -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-24.22813,EOP -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,EV -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0.04234,IA 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0.04234,IFIE1 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,70.43538,ISE10 0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-46.24958,ISE7 -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,MC -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,RCU -0,,2020,USD,USD,,C,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,YCU -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-0,AM -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IR4 -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE6 -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,DA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE11 -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,ISE8 -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,NIC,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AM -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,AU -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,BOP -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CF -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,CRU -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EA -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EOP -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,EV -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,IA -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,MC -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,RCU -0,PR,2020,USD,USD,,OA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,0,CH,MTUP10pct,BBA,0,YCU 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,-29.93765,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,0,CH,MTUP10pct,BBA,15,CF 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,0,CH,MTUP10pct,BBA,-14.98378,EOP diff --git a/ifrs17-template/Test/IfrsVariablesTest.ipynb b/ifrs17-template/Test/IfrsVariablesTest.ipynb index 66dc85a1..860c13ee 100644 --- a/ifrs17-template/Test/IfrsVariablesTest.ipynb +++ b/ifrs17-template/Test/IfrsVariablesTest.ipynb @@ -94,14 +94,10 @@ "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_BE.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_BEPA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_A.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", - "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_AA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", - "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_OA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_APA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_DA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_C.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_F.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", - "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_L.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", - "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_LR.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n new BenchmarkMetadata(pathToBm+\"BM_CH_2020_12_MTUP10pct_RA.csv\" , \"CH\", 2020, 12, \"MTUP10pct\"),", "\n};" ], @@ -296,24 +292,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "errorList" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 7268b4ee..af1791bc 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -2090,6 +2090,7 @@ "\n [Dimension(typeof(int), nameof(Month))]", "\n [Range(1, 12, ErrorMessage = \"Value for {0} must be between {1} and {2}.\")]", "\n public int Month { get; init; } ", + "\n ", "\n [IdentityProperty]", "\n [Dimension(typeof(Scenario))]", "\n public string Scenario { get; init; }", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index ed46e91e..8f2303c0 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -175,8 +175,8 @@ "\n await workspace.Partition.SetAsync(TargetPartition);", "\n ", "\n //Get data from Workspace (result of parsing)", - "\n var parsedRawVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", - "\n var parsedIfrsVariables = await workspace.RelaxedQueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", + "\n var parsedRawVariables = await workspace.QueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", + "\n var parsedIfrsVariables = await workspace.QueryPartitionedDataAsync(querySource, TargetPartition, DefaultPartition, ImportFormat);", "\n ", "\n //DataNodes", "\n DataNodeDataBySystemName = await workspace.LoadDataNodesAsync(args);", @@ -274,8 +274,8 @@ "\n", "\n if(DefaultPartition != TargetPartition) {", "\n await querySource.Partition.SetAsync(DefaultPartition);", - "\n var defaultRawVariables = await querySource.Query().Where(rv => rv.Partition == DefaultPartition).Where(rv => primaryScope.Contains(rv.DataNode)).ToArrayAsync();", - "\n var defaultIfrsVariables = await querySource.Query().Where(iv => iv.Partition == DefaultPartition).Where(iv => allImportScopes.Contains(iv.DataNode)).ToArrayAsync(); ", + "\n var defaultRawVariables = await querySource.Query().Where(rv => rv.Partition == DefaultPartition && primaryScope.Contains(rv.DataNode)).ToArrayAsync();", + "\n var defaultIfrsVariables = await querySource.Query().Where(iv => iv.Partition == DefaultPartition && allImportScopes.Contains(iv.DataNode)).ToArrayAsync(); ", "\n rawVariables = rawVariables.Union(defaultRawVariables, EqualityComparer.Instance);", "\n ifrsVariables = ifrsVariables.Union(defaultIfrsVariables, EqualityComparer.Instance);", "\n await querySource.Partition.SetAsync(TargetPartition);", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 42c99e57..0b8d49e8 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -321,8 +321,7 @@ "\n var main = mainTab.Rows.First();", "\n var reportingNode = (string)main[nameof(ReportingNode)];", "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var availableScenarios = await DataSource.Query().ToArrayAsync();", - "\n if(scenario != null || !availableScenarios.Contains(scenario)) ApplicationMessage.Log(Error.ScenarioInMainNotAvailable, scenario);", + "\n ", "\n if(ApplicationMessage.HasErrors()) return null;", "\n", "\n ImportArgs args;", @@ -456,7 +455,14 @@ "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", + "\n", + "\n if(storage.DefaultPartition != storage.TargetPartition){", + "\n var bestEstimateIvs = await DataSource.LoadPartitionedDataAsync(storage.DefaultPartition, storage.TargetPartition);", + "\n ivs = ivs.Where(iv => Math.Abs(iv.Value) >= Precision).ToArray().Concat(", + "\n ivs.Where(iv => Math.Abs(iv.Value) < Precision).Intersect(bestEstimateIvs, EqualityComparer.Instance).Select(iv => iv with {Value = 0.0}).ToArray());", + "\n }", + "\n", + "\n", "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision));", "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 41661a18..e90d6921 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -412,12 +412,16 @@ { "cell_type": "code", "source": [ - "public static async Task LoadPartitionedDataAsync(this IDataSource querySource, Guid partition)", - "\n where T : IPartitioned ", + "public static async Task LoadPartitionedDataAsync(this IDataSource querySource, Guid partition, Guid? partitionBackup = null)", + "\n where T : IPartitioned", "\n where P : IPartition", + "\n", "\n{", "\n await querySource.Partition.SetAsync

(partition);", - "\n return (await querySource.Query().ToArrayAsync());", + "\n // Temporary workaround for physical database: where clause is necessary", + "\n var data = await querySource.Query().Where(x => x.Partition == partition).ToArrayAsync();", + "\n if(partitionBackup != null) await querySource.Partition.SetAsync

(partitionBackup);", + "\n return data;", "\n}" ], "metadata": {}, @@ -427,26 +431,24 @@ { "cell_type": "code", "source": [ - "public static async Task RelaxedQueryPartitionedDataAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition, string format)", - "\n where T : IPartitioned ", + "public static async Task QueryPartitionedDataAsync(this IWorkspace workspace, IDataSource dataSource, Guid targetPartition, Guid defaultPartition, string format)", + "\n where T : IPartitioned", "\n where P : IPartition", "\n{", - "\n var isRelaxed = (format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) || ", - "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable));", + "\n var isRelaxed = targetPartition != defaultPartition &&", + "\n ((format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) ||", + "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable)));", "\n", "\n var variablesFromWorkspace = await workspace.LoadPartitionedDataAsync(targetPartition);", - "\n if(targetPartition == defaultPartition || !isRelaxed || variablesFromWorkspace.Any()) return variablesFromWorkspace; ", + "\n if(!isRelaxed || variablesFromWorkspace.Any()) return variablesFromWorkspace;", "\n", "\n // For scenario re-calculation", "\n var variablesFromDataSource = await dataSource.LoadPartitionedDataAsync(targetPartition);", "\n if(variablesFromDataSource.Any()) return variablesFromDataSource;", "\n", "\n // For scenarios related to parameters solely", - "\n var variablesDefault = await dataSource.LoadPartitionedDataAsync(defaultPartition);", - "\n await workspace.Partition.SetAsync

(targetPartition);", - "\n await dataSource.Partition.SetAsync

(targetPartition);", - "\n return variablesDefault;", - "\n} " + "\n return await dataSource.LoadPartitionedDataAsync(defaultPartition, targetPartition);", + "\n}" ], "metadata": {}, "execution_count": 0, From f67e384f4311dbf9f3a01092c015de97ff87918c Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Mon, 19 Dec 2022 14:36:54 +0100 Subject: [PATCH 36/64] comments on EqualityComparer resolved, BM updated --- .../Test/Data/ExportIfrsVariable.ipynb | 27 +- .../BM_CH_2020_12_MTUP10pct_A.csv | 344 +----------------- .../BM_CH_2020_12_MTUP10pct_APA.csv | 8 +- .../BM_CH_2020_12_MTUP10pct_BE.csv | 98 +---- .../BM_CH_2020_12_MTUP10pct_BEPA.csv | 3 +- .../BM_CH_2020_12_MTUP10pct_C.csv | 76 +--- .../BM_CH_2020_12_MTUP10pct_DA.csv | 145 +------- .../BM_CH_2020_12_MTUP10pct_RA.csv | 50 +-- ifrs17/Utils/EqualityComparers.ipynb | 3 +- 9 files changed, 11 insertions(+), 743 deletions(-) diff --git a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb index 0d64201c..45dad4c4 100644 --- a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb +++ b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb @@ -97,32 +97,7 @@ { "cell_type": "code", "source": [ - "/*var estimateType = \"BEPA\";", - "\nawait Export.ToCsv(\"BM_\"+args.ReportingNode+\"_\"+args.Year.ToString()+\"_\"+args.Month.ToString()+\"_\"+scenario+\"_\"+estimateType)", - "\n .WithTable(tableConfig => tableConfig", - "\n .AtBeginning()", - "\n .WithName(Main)", - "\n .WithSource(source => args.RepeatOnce().AsQueryable())", - "\n .WithColumn(x => x.Periodicity, x => x.Delete())", - "\n .WithColumn(x => x.ImportFormat, x => x.Delete())", - "\n )", - "\n .WithTable(tableConfig => tableConfig", - "\n .WithSource(source => computedVariables[estimateType].AsQueryable())", - "\n .WithName(estimateType)", - "\n .WithColumn(x => x.Partition, x => x.Delete())", - "\n .WithColumn(x => x.Id, x => x.Delete())", - "\n )", - "\n .WithSource(DataSource)", - "\n .ExecuteAsync()*/" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var estimateType = \"LR\";", + "var estimateType = \"APA\";", "\nawait Export.ToCsv(\"BM_\"+args.ReportingNode+\"_\"+args.Year.ToString()+\"_\"+args.Month.ToString()+\"_\"+scenario+\"_\"+estimateType)", "\n .WithTable(tableConfig => tableConfig", "\n .AtBeginning()", diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv index c37ccf37..b950aba6 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_A.csv @@ -3,364 +3,22 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@A AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,AEA,BOP,DT1.1,,A,N,0 -,ACA,BOP,DT1.1,,A,N,0 -,PR,BOP,DT1.1,,A,N,0 -,NIC,BOP,DT1.1,,A,N,0 -,AEA,EOP,DT1.1,,A,C,0 -,ACA,EOP,DT1.1,,A,C,0 -,PR,EOP,DT1.1,,A,C,0 -,NIC,EOP,DT1.1,,A,C,0 -,AEA,AM,DT1.1,,A,C,0 -,ACA,AM,DT1.1,,A,C,0 -,PR,AM,DT1.1,,A,C,0 -,NIC,AM,DT1.1,,A,C,0 -,AEA,EA,DT1.1,,A,C,0 -,ACA,EA,DT1.1,,A,C,0 -,PR,EA,DT1.1,,A,C,0 -,NIC,EA,DT1.1,,A,C,0 -,AEA,BOP,DT1.1,,A,I,0 -,ACA,BOP,DT1.1,,A,I,0 -,PR,BOP,DT1.1,,A,I,0 -,NIC,BOP,DT1.1,,A,I,0 ,NIC,CF,DT1.1,,A,C,-310 ,PR,CF,DT1.1,,A,C,400 ,ACA,CF,DT1.1,,A,C,-10 ,AEA,CF,DT1.1,,A,C,-5 -,NIC,IA,DT1.1,,A,N,0 -,PR,IA,DT1.1,,A,N,0 -,ACA,IA,DT1.1,,A,N,0 -,AEA,IA,DT1.1,,A,N,0 -,NIC,MC,DT1.1,,A,I,0 -,PR,MC,DT1.1,,A,I,0 -,ACA,MC,DT1.1,,A,I,0 -,AEA,MC,DT1.1,,A,I,0 -,NIC,RCU,DT1.1,,A,I,0 -,PR,RCU,DT1.1,,A,I,0 -,ACA,RCU,DT1.1,,A,I,0 -,AEA,RCU,DT1.1,,A,I,0 -,NIC,CF,DT1.1,,A,I,0 -,PR,CF,DT1.1,,A,I,0 -,ACA,CF,DT1.1,,A,I,0 -,AEA,CF,DT1.1,,A,I,0 -,NIC,IA,DT1.1,,A,I,0 -,PR,IA,DT1.1,,A,I,0 -,ACA,IA,DT1.1,,A,I,0 -,AEA,IA,DT1.1,,A,I,0 -,NIC,AU,DT1.1,,A,I,0 -,PR,AU,DT1.1,,A,I,0 -,ACA,AU,DT1.1,,A,I,0 -,AEA,AU,DT1.1,,A,I,0 -,NIC,YCU,DT1.1,,A,I,0 -,PR,YCU,DT1.1,,A,I,0 -,ACA,YCU,DT1.1,,A,I,0 -,AEA,YCU,DT1.1,,A,I,0 -,NIC,CRU,DT1.1,,A,I,0 -,PR,CRU,DT1.1,,A,I,0 -,ACA,CRU,DT1.1,,A,I,0 -,AEA,CRU,DT1.1,,A,I,0 -,NIC,EV,DT1.1,,A,I,0 -,PR,EV,DT1.1,,A,I,0 -,ACA,EV,DT1.1,,A,I,0 -,AEA,EV,DT1.1,,A,I,0 -,NIC,CF,DT1.1,,A,N,0 -,PR,CF,DT1.1,,A,N,0 -,ACA,CF,DT1.1,,A,N,0 -,AEA,CF,DT1.1,,A,N,0 -,NIC,AU,DT1.1,,A,N,0 -,PR,AU,DT1.1,,A,N,0 -,ACA,AU,DT1.1,,A,N,0 -,AEA,AU,DT1.1,,A,N,0 -,NIC,EV,DT1.1,,A,N,0 -,PR,EV,DT1.1,,A,N,0 -,ACA,EV,DT1.1,,A,N,0 -,AEA,EV,DT1.1,,A,N,0 -,NIC,CL,DT1.1,,A,C,0 -,PR,CL,DT1.1,,A,C,0 -,ACA,CL,DT1.1,,A,C,0 -,AEA,CL,DT1.1,,A,C,0 2020,NIC,CF,DT1.2,,A,C,-310 -2020,NIC,BOP,DT1.2,,A,I,0 -2020,NIC,EA,DT1.2,,A,C,0 -2020,NIC,AM,DT1.2,,A,C,0 -2020,NIC,EOP,DT1.2,,A,C,0 -2020,NIC,MC,DT1.2,,A,I,0 -2020,NIC,RCU,DT1.2,,A,I,0 -2020,NIC,CF,DT1.2,,A,I,0 -2020,NIC,IA,DT1.2,,A,I,0 -2020,NIC,AU,DT1.2,,A,I,0 -2020,NIC,YCU,DT1.2,,A,I,0 -2020,NIC,CRU,DT1.2,,A,I,0 -2020,NIC,EV,DT1.2,,A,I,0 -2020,NIC,BOP,DT1.2,,A,N,0 -2020,NIC,CF,DT1.2,,A,N,0 -2020,NIC,IA,DT1.2,,A,N,0 -2020,NIC,AU,DT1.2,,A,N,0 -2020,NIC,EV,DT1.2,,A,N,0 -2020,NIC,CL,DT1.2,,A,C,0 ,NIC,CF,DT2.1,,A,C,-310 ,PR,CF,DT2.1,,A,C,400 ,ACA,CF,DT2.1,,A,C,-10 ,AEA,CF,DT2.1,,A,C,-5 -,NIC,EA,DT2.1,,A,C,0 -,PR,EA,DT2.1,,A,C,0 -,ACA,EA,DT2.1,,A,C,0 -,AEA,EA,DT2.1,,A,C,0 -,NIC,AM,DT2.1,,A,C,0 -,PR,AM,DT2.1,,A,C,0 -,ACA,AM,DT2.1,,A,C,0 -,AEA,AM,DT2.1,,A,C,0 -,NIC,EOP,DT2.1,,A,C,0 -,PR,EOP,DT2.1,,A,C,0 -,ACA,EOP,DT2.1,,A,C,0 -,AEA,EOP,DT2.1,,A,C,0 -,NIC,BOP,DT2.1,,A,N,0 -,PR,BOP,DT2.1,,A,N,0 -,ACA,BOP,DT2.1,,A,N,0 -,AEA,BOP,DT2.1,,A,N,0 -,NIC,IA,DT2.1,,A,N,0 -,PR,IA,DT2.1,,A,N,0 -,ACA,IA,DT2.1,,A,N,0 -,AEA,IA,DT2.1,,A,N,0 -,NIC,BOP,DT2.1,,A,I,0 -,PR,BOP,DT2.1,,A,I,0 -,ACA,BOP,DT2.1,,A,I,0 -,AEA,BOP,DT2.1,,A,I,0 -,NIC,MC,DT2.1,,A,I,0 -,PR,MC,DT2.1,,A,I,0 -,ACA,MC,DT2.1,,A,I,0 -,AEA,MC,DT2.1,,A,I,0 -,NIC,RCU,DT2.1,,A,I,0 -,PR,RCU,DT2.1,,A,I,0 -,ACA,RCU,DT2.1,,A,I,0 -,AEA,RCU,DT2.1,,A,I,0 -,NIC,CF,DT2.1,,A,I,0 -,PR,CF,DT2.1,,A,I,0 -,ACA,CF,DT2.1,,A,I,0 -,AEA,CF,DT2.1,,A,I,0 -,NIC,IA,DT2.1,,A,I,0 -,PR,IA,DT2.1,,A,I,0 -,ACA,IA,DT2.1,,A,I,0 -,AEA,IA,DT2.1,,A,I,0 -,NIC,AU,DT2.1,,A,I,0 -,PR,AU,DT2.1,,A,I,0 -,ACA,AU,DT2.1,,A,I,0 -,AEA,AU,DT2.1,,A,I,0 -,NIC,YCU,DT2.1,,A,I,0 -,PR,YCU,DT2.1,,A,I,0 -,ACA,YCU,DT2.1,,A,I,0 -,AEA,YCU,DT2.1,,A,I,0 -,NIC,CRU,DT2.1,,A,I,0 -,PR,CRU,DT2.1,,A,I,0 -,ACA,CRU,DT2.1,,A,I,0 -,AEA,CRU,DT2.1,,A,I,0 -,NIC,EV,DT2.1,,A,I,0 -,PR,EV,DT2.1,,A,I,0 -,ACA,EV,DT2.1,,A,I,0 -,AEA,EV,DT2.1,,A,I,0 -,NIC,CF,DT2.1,,A,N,0 -,PR,CF,DT2.1,,A,N,0 -,ACA,CF,DT2.1,,A,N,0 -,AEA,CF,DT2.1,,A,N,0 -,NIC,AU,DT2.1,,A,N,0 -,PR,AU,DT2.1,,A,N,0 -,ACA,AU,DT2.1,,A,N,0 -,AEA,AU,DT2.1,,A,N,0 -,NIC,EV,DT2.1,,A,N,0 -,PR,EV,DT2.1,,A,N,0 -,ACA,EV,DT2.1,,A,N,0 -,AEA,EV,DT2.1,,A,N,0 -,NIC,CL,DT2.1,,A,C,0 -,PR,CL,DT2.1,,A,C,0 -,ACA,CL,DT2.1,,A,C,0 -,AEA,CL,DT2.1,,A,C,0 ,NIC,CF,DT1.3,,A,C,-310 ,PR,CF,DT1.3,,A,C,400 ,ACA,CF,DT1.3,,A,C,-10 ,AEA,CF,DT1.3,,A,C,-5 -,NIC,EA,DT1.3,,A,C,0 -,PR,EA,DT1.3,,A,C,0 -,ACA,EA,DT1.3,,A,C,0 -,AEA,EA,DT1.3,,A,C,0 -,NIC,AM,DT1.3,,A,C,0 -,PR,AM,DT1.3,,A,C,0 -,ACA,AM,DT1.3,,A,C,0 -,AEA,AM,DT1.3,,A,C,0 -,NIC,EOP,DT1.3,,A,C,0 -,PR,EOP,DT1.3,,A,C,0 -,ACA,EOP,DT1.3,,A,C,0 -,AEA,EOP,DT1.3,,A,C,0 -,NIC,BOP,DT1.3,,A,N,0 -,PR,BOP,DT1.3,,A,N,0 -,ACA,BOP,DT1.3,,A,N,0 -,AEA,BOP,DT1.3,,A,N,0 -,NIC,IA,DT1.3,,A,N,0 -,PR,IA,DT1.3,,A,N,0 -,ACA,IA,DT1.3,,A,N,0 -,AEA,IA,DT1.3,,A,N,0 -,NIC,BOP,DT1.3,,A,I,0 -,PR,BOP,DT1.3,,A,I,0 -,ACA,BOP,DT1.3,,A,I,0 -,AEA,BOP,DT1.3,,A,I,0 -,NIC,MC,DT1.3,,A,I,0 -,PR,MC,DT1.3,,A,I,0 -,ACA,MC,DT1.3,,A,I,0 -,AEA,MC,DT1.3,,A,I,0 -,NIC,RCU,DT1.3,,A,I,0 -,PR,RCU,DT1.3,,A,I,0 -,ACA,RCU,DT1.3,,A,I,0 -,AEA,RCU,DT1.3,,A,I,0 -,NIC,CF,DT1.3,,A,I,0 -,PR,CF,DT1.3,,A,I,0 -,ACA,CF,DT1.3,,A,I,0 -,AEA,CF,DT1.3,,A,I,0 -,NIC,IA,DT1.3,,A,I,0 -,PR,IA,DT1.3,,A,I,0 -,ACA,IA,DT1.3,,A,I,0 -,AEA,IA,DT1.3,,A,I,0 -,NIC,AU,DT1.3,,A,I,0 -,PR,AU,DT1.3,,A,I,0 -,ACA,AU,DT1.3,,A,I,0 -,AEA,AU,DT1.3,,A,I,0 -,NIC,YCU,DT1.3,,A,I,0 -,PR,YCU,DT1.3,,A,I,0 -,ACA,YCU,DT1.3,,A,I,0 -,AEA,YCU,DT1.3,,A,I,0 -,NIC,CRU,DT1.3,,A,I,0 -,PR,CRU,DT1.3,,A,I,0 -,ACA,CRU,DT1.3,,A,I,0 -,AEA,CRU,DT1.3,,A,I,0 -,NIC,EV,DT1.3,,A,I,0 -,PR,EV,DT1.3,,A,I,0 -,ACA,EV,DT1.3,,A,I,0 -,AEA,EV,DT1.3,,A,I,0 -,NIC,CF,DT1.3,,A,N,0 -,PR,CF,DT1.3,,A,N,0 -,ACA,CF,DT1.3,,A,N,0 -,AEA,CF,DT1.3,,A,N,0 -,NIC,AU,DT1.3,,A,N,0 -,PR,AU,DT1.3,,A,N,0 -,ACA,AU,DT1.3,,A,N,0 -,AEA,AU,DT1.3,,A,N,0 -,NIC,EV,DT1.3,,A,N,0 -,PR,EV,DT1.3,,A,N,0 -,ACA,EV,DT1.3,,A,N,0 -,AEA,EV,DT1.3,,A,N,0 -,NIC,CL,DT1.3,,A,C,0 -,PR,CL,DT1.3,,A,C,0 -,ACA,CL,DT1.3,,A,C,0 -,AEA,CL,DT1.3,,A,C,0 2020,NIC,CF,DT2.2,,A,C,-310 -2020,NIC,EA,DT2.2,,A,C,0 -2020,NIC,AM,DT2.2,,A,C,0 -2020,NIC,EOP,DT2.2,,A,C,0 -2020,NIC,BOP,DT2.2,,A,I,0 -2020,NIC,MC,DT2.2,,A,I,0 -2020,NIC,RCU,DT2.2,,A,I,0 -2020,NIC,CF,DT2.2,,A,I,0 -2020,NIC,IA,DT2.2,,A,I,0 -2020,NIC,AU,DT2.2,,A,I,0 -2020,NIC,YCU,DT2.2,,A,I,0 -2020,NIC,CRU,DT2.2,,A,I,0 -2020,NIC,EV,DT2.2,,A,I,0 -2020,NIC,BOP,DT2.2,,A,N,0 -2020,NIC,CF,DT2.2,,A,N,0 -2020,NIC,IA,DT2.2,,A,N,0 -2020,NIC,AU,DT2.2,,A,N,0 -2020,NIC,EV,DT2.2,,A,N,0 -2020,NIC,CL,DT2.2,,A,C,0 ,NIC,CF,DTR1.1,,A,C,170 ,PR,CF,DTR1.1,,A,C,-200 -,NIC,BOP,DTR1.1,,A,I,0 -,PR,BOP,DTR1.1,,A,I,0 -,NIC,AM,DTR1.1,,A,C,0 -,PR,AM,DTR1.1,,A,C,0 -,NIC,EOP,DTR1.1,,A,C,0 -,PR,EOP,DTR1.1,,A,C,0 -,NIC,BOP,DTR1.1,,A,N,0 -,PR,BOP,DTR1.1,,A,N,0 -,NIC,IA,DTR1.1,,A,N,0 -,PR,IA,DTR1.1,,A,N,0 -,NIC,EA,DTR1.1,,A,C,0 -,PR,EA,DTR1.1,,A,C,0 -,NIC,MC,DTR1.1,,A,I,0 -,PR,MC,DTR1.1,,A,I,0 -,NIC,RCU,DTR1.1,,A,I,0 -,PR,RCU,DTR1.1,,A,I,0 -,NIC,CF,DTR1.1,,A,I,0 -,PR,CF,DTR1.1,,A,I,0 -,NIC,IA,DTR1.1,,A,I,0 -,PR,IA,DTR1.1,,A,I,0 -,NIC,AU,DTR1.1,,A,I,0 -,PR,AU,DTR1.1,,A,I,0 -,NIC,YCU,DTR1.1,,A,I,0 -,PR,YCU,DTR1.1,,A,I,0 -,NIC,CRU,DTR1.1,,A,I,0 -,PR,CRU,DTR1.1,,A,I,0 -,NIC,EV,DTR1.1,,A,I,0 -,PR,EV,DTR1.1,,A,I,0 -,NIC,CF,DTR1.1,,A,N,0 -,PR,CF,DTR1.1,,A,N,0 -,NIC,AU,DTR1.1,,A,N,0 -,PR,AU,DTR1.1,,A,N,0 -,NIC,EV,DTR1.1,,A,N,0 -,PR,EV,DTR1.1,,A,N,0 -,NIC,CL,DTR1.1,,A,C,0 -,PR,CL,DTR1.1,,A,C,0 2020,NIC,CF,DTR1.2,,A,C,170 -2020,NIC,BOP,DTR1.2,,A,I,0 -2020,NIC,EA,DTR1.2,,A,C,0 -2020,NIC,AM,DTR1.2,,A,C,0 -2020,NIC,EOP,DTR1.2,,A,C,0 -2020,NIC,MC,DTR1.2,,A,I,0 -2020,NIC,RCU,DTR1.2,,A,I,0 -2020,NIC,CF,DTR1.2,,A,I,0 -2020,NIC,IA,DTR1.2,,A,I,0 -2020,NIC,AU,DTR1.2,,A,I,0 -2020,NIC,YCU,DTR1.2,,A,I,0 -2020,NIC,CRU,DTR1.2,,A,I,0 -2020,NIC,EV,DTR1.2,,A,I,0 -2020,NIC,BOP,DTR1.2,,A,N,0 -2020,NIC,CF,DTR1.2,,A,N,0 -2020,NIC,IA,DTR1.2,,A,N,0 -2020,NIC,AU,DTR1.2,,A,N,0 -2020,NIC,EV,DTR1.2,,A,N,0 -2020,NIC,CL,DTR1.2,,A,C,0 ,PR,CF,DTR2.1,,A,C,-200 -,NIC,CF,DTR2.1,,A,C,140 -,PR,AM,DTR2.1,,A,C,0 -,NIC,AM,DTR2.1,,A,C,0 -,PR,EOP,DTR2.1,,A,C,0 -,NIC,EOP,DTR2.1,,A,C,0 -,PR,BOP,DTR2.1,,A,N,0 -,NIC,BOP,DTR2.1,,A,N,0 -,PR,IA,DTR2.1,,A,N,0 -,NIC,IA,DTR2.1,,A,N,0 -,PR,EA,DTR2.1,,A,C,0 -,NIC,EA,DTR2.1,,A,C,0 -,PR,BOP,DTR2.1,,A,I,0 -,NIC,BOP,DTR2.1,,A,I,0 -,PR,MC,DTR2.1,,A,I,0 -,NIC,MC,DTR2.1,,A,I,0 -,PR,RCU,DTR2.1,,A,I,0 -,NIC,RCU,DTR2.1,,A,I,0 -,PR,CF,DTR2.1,,A,I,0 -,NIC,CF,DTR2.1,,A,I,0 -,PR,IA,DTR2.1,,A,I,0 -,NIC,IA,DTR2.1,,A,I,0 -,PR,AU,DTR2.1,,A,I,0 -,NIC,AU,DTR2.1,,A,I,0 -,PR,YCU,DTR2.1,,A,I,0 -,NIC,YCU,DTR2.1,,A,I,0 -,PR,CRU,DTR2.1,,A,I,0 -,NIC,CRU,DTR2.1,,A,I,0 -,PR,EV,DTR2.1,,A,I,0 -,NIC,EV,DTR2.1,,A,I,0 -,PR,CF,DTR2.1,,A,N,0 -,NIC,CF,DTR2.1,,A,N,0 -,PR,AU,DTR2.1,,A,N,0 -,NIC,AU,DTR2.1,,A,N,0 -,PR,EV,DTR2.1,,A,N,0 -,NIC,EV,DTR2.1,,A,N,0 -,PR,CL,DTR2.1,,A,C,0 -,NIC,CL,DTR2.1,,A,C,0 \ No newline at end of file +,NIC,CF,DTR2.1,,A,C,140 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv index ee8d6211..98071041 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_APA.csv @@ -4,11 +4,5 @@ Month,ReportingNode,Scenario,Year @@APA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value ,PR,CF,DT1.1,,APA,C,320 -,PR,CF,DT1.1,,APA,I,0 -,PR,CF,DT1.1,,APA,N,0 ,PR,CF,DT2.1,,APA,C,320 -,PR,CF,DT2.1,,APA,I,0 -,PR,CF,DT2.1,,APA,N,0 -,PR,CF,DT1.3,,APA,C,400 -,PR,CF,DT1.3,,APA,I,0 -,PR,CF,DT1.3,,APA,N,0 \ No newline at end of file +,PR,CF,DT1.3,,APA,C,400 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv index 3386f560..97f1efee 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BE.csv @@ -7,18 +7,6 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,PR,BOP,DT1.1,L,BE,N,-798.53673 ,NIC,BOP,DT1.1,C,BE,N,658.62824 ,PR,BOP,DT1.1,C,BE,N,-798.53673 -,NIC,CL,DT1.1,L,BE,C,0 -,PR,CL,DT1.1,L,BE,C,0 -,NIC,CL,DT1.1,C,BE,C,0 -,PR,CL,DT1.1,C,BE,C,0 -,NIC,EA,DT1.1,L,BE,C,0 -,PR,EA,DT1.1,L,BE,C,0 -,NIC,EA,DT1.1,C,BE,C,0 -,PR,EA,DT1.1,C,BE,C,0 -,NIC,AM,DT1.1,L,BE,C,0 -,PR,AM,DT1.1,L,BE,C,0 -,NIC,AM,DT1.1,C,BE,C,0 -,PR,AM,DT1.1,C,BE,C,0 ,NIC,EOP,DT1.1,L,BE,C,329.6431 ,PR,EOP,DT1.1,L,BE,C,-399.63393 ,NIC,EOP,DT1.1,C,BE,C,329.6431 @@ -31,62 +19,20 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,PR,CF,DT1.1,L,BE,N,400 ,NIC,CF,DT1.1,C,BE,N,-330 ,PR,CF,DT1.1,C,BE,N,400 -,NIC,CF,DT1.1,L,BE,C,0 -,PR,CF,DT1.1,L,BE,C,0 -,NIC,CF,DT1.1,C,BE,C,0 -,PR,CF,DT1.1,C,BE,C,0 -,NIC,BOP,DT1.1,L,BE,I,0 -,PR,BOP,DT1.1,L,BE,I,0 -,NIC,BOP,DT1.1,C,BE,I,0 -,PR,BOP,DT1.1,C,BE,I,0 -,NIC,IA,DT1.1,L,BE,I,0 -,PR,IA,DT1.1,L,BE,I,0 -,NIC,IA,DT1.1,C,BE,I,0 -,PR,IA,DT1.1,C,BE,I,0 2020,NIC,BOP,DT1.2,L,BE,N,658.62824 2020,NIC,BOP,DT1.2,C,BE,N,658.62824 -2020,NIC,CL,DT1.2,L,BE,C,0 -2020,NIC,CL,DT1.2,C,BE,C,0 -2020,NIC,EA,DT1.2,L,BE,C,0 -2020,NIC,EA,DT1.2,C,BE,C,0 -2020,NIC,AM,DT1.2,L,BE,C,0 -2020,NIC,AM,DT1.2,C,BE,C,0 2020,NIC,EOP,DT1.2,L,BE,C,329.6431 2020,NIC,EOP,DT1.2,C,BE,C,329.6431 2020,NIC,IA,DT1.2,L,BE,N,1.01487 2020,NIC,IA,DT1.2,C,BE,N,1.01487 2020,NIC,CF,DT1.2,L,BE,N,-330 2020,NIC,CF,DT1.2,C,BE,N,-330 -2020,NIC,CF,DT1.2,L,BE,C,0 -2020,NIC,CF,DT1.2,C,BE,C,0 -2020,NIC,BOP,DT1.2,L,BE,I,0 -2020,NIC,BOP,DT1.2,C,BE,I,0 -2020,NIC,IA,DT1.2,L,BE,I,0 -2020,NIC,IA,DT1.2,C,BE,I,0 ,NIC,BOP,DTR1.1,L,BE,N,-329.31412 ,PR,BOP,DTR1.1,L,BE,N,399.26837 ,CDR,BOP,DTR1.1,L,BE,N,0.52925 ,NIC,BOP,DTR1.1,C,BE,N,-329.31412 ,PR,BOP,DTR1.1,C,BE,N,399.26837 ,CDR,BOP,DTR1.1,C,BE,N,0.52925 -,NIC,CL,DTR1.1,L,BE,C,0 -,PR,CL,DTR1.1,L,BE,C,0 -,CDR,CL,DTR1.1,L,BE,C,0 -,NIC,CL,DTR1.1,C,BE,C,0 -,PR,CL,DTR1.1,C,BE,C,0 -,CDR,CL,DTR1.1,C,BE,C,0 -,NIC,EA,DTR1.1,L,BE,C,0 -,PR,EA,DTR1.1,L,BE,C,0 -,CDR,EA,DTR1.1,L,BE,C,0 -,NIC,EA,DTR1.1,C,BE,C,0 -,PR,EA,DTR1.1,C,BE,C,0 -,CDR,EA,DTR1.1,C,BE,C,0 -,NIC,AM,DTR1.1,L,BE,C,0 -,PR,AM,DTR1.1,L,BE,C,0 -,CDR,AM,DTR1.1,L,BE,C,0 -,NIC,AM,DTR1.1,C,BE,C,0 -,PR,AM,DTR1.1,C,BE,C,0 -,CDR,AM,DTR1.1,C,BE,C,0 ,NIC,EOP,DTR1.1,L,BE,C,-164.82155 ,PR,EOP,DTR1.1,L,BE,C,199.81696 ,CDR,EOP,DTR1.1,L,BE,C,0.1268 @@ -105,40 +51,10 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu ,NIC,CF,DTR1.1,C,BE,N,165 ,PR,CF,DTR1.1,C,BE,N,-200 ,CDR,CF,DTR1.1,C,BE,N,-0.40374 -,NIC,CF,DTR1.1,L,BE,C,0 -,PR,CF,DTR1.1,L,BE,C,0 -,CDR,CF,DTR1.1,L,BE,C,0 -,NIC,CF,DTR1.1,C,BE,C,0 -,PR,CF,DTR1.1,C,BE,C,0 -,CDR,CF,DTR1.1,C,BE,C,0 -,NIC,BOP,DTR1.1,L,BE,I,0 -,PR,BOP,DTR1.1,L,BE,I,0 -,CDR,BOP,DTR1.1,L,BE,I,0 -,NIC,BOP,DTR1.1,C,BE,I,0 -,PR,BOP,DTR1.1,C,BE,I,0 -,CDR,BOP,DTR1.1,C,BE,I,0 -,NIC,IA,DTR1.1,L,BE,I,0 -,PR,IA,DTR1.1,L,BE,I,0 -,CDR,IA,DTR1.1,L,BE,I,0 -,NIC,IA,DTR1.1,C,BE,I,0 -,PR,IA,DTR1.1,C,BE,I,0 -,CDR,IA,DTR1.1,C,BE,I,0 2020,NIC,BOP,DTR1.2,L,BE,N,-329.31412 2020,CDR,BOP,DTR1.2,L,BE,N,0.52925 2020,NIC,BOP,DTR1.2,C,BE,N,-329.31412 2020,CDR,BOP,DTR1.2,C,BE,N,0.52925 -2020,NIC,CL,DTR1.2,L,BE,C,0 -2020,CDR,CL,DTR1.2,L,BE,C,0 -2020,NIC,CL,DTR1.2,C,BE,C,0 -2020,CDR,CL,DTR1.2,C,BE,C,0 -2020,NIC,EA,DTR1.2,L,BE,C,0 -2020,CDR,EA,DTR1.2,L,BE,C,0 -2020,NIC,EA,DTR1.2,C,BE,C,0 -2020,CDR,EA,DTR1.2,C,BE,C,0 -2020,NIC,AM,DTR1.2,L,BE,C,0 -2020,CDR,AM,DTR1.2,L,BE,C,0 -2020,NIC,AM,DTR1.2,C,BE,C,0 -2020,CDR,AM,DTR1.2,C,BE,C,0 2020,NIC,EOP,DTR1.2,L,BE,C,-164.82155 2020,CDR,EOP,DTR1.2,L,BE,C,0.1268 2020,NIC,EOP,DTR1.2,C,BE,C,-164.82155 @@ -150,16 +66,4 @@ AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Valu 2020,NIC,CF,DTR1.2,L,BE,N,165 2020,CDR,CF,DTR1.2,L,BE,N,-0.40374 2020,NIC,CF,DTR1.2,C,BE,N,165 -2020,CDR,CF,DTR1.2,C,BE,N,-0.40374 -2020,NIC,CF,DTR1.2,L,BE,C,0 -2020,CDR,CF,DTR1.2,L,BE,C,0 -2020,NIC,CF,DTR1.2,C,BE,C,0 -2020,CDR,CF,DTR1.2,C,BE,C,0 -2020,NIC,BOP,DTR1.2,L,BE,I,0 -2020,CDR,BOP,DTR1.2,L,BE,I,0 -2020,NIC,BOP,DTR1.2,C,BE,I,0 -2020,CDR,BOP,DTR1.2,C,BE,I,0 -2020,NIC,IA,DTR1.2,L,BE,I,0 -2020,CDR,IA,DTR1.2,L,BE,I,0 -2020,NIC,IA,DTR1.2,C,BE,I,0 -2020,CDR,IA,DTR1.2,C,BE,I,0 \ No newline at end of file +2020,CDR,CF,DTR1.2,C,BE,N,-0.40374 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv index efb379d0..4674e6db 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_BEPA.csv @@ -3,5 +3,4 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@BEPA AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value -,PR,CF,DT1.1,L,BEPA,N,320 -,PR,CF,DT1.1,L,BEPA,C,0 \ No newline at end of file +,PR,CF,DT1.1,L,BEPA,N,320 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv index 15011804..dcfc1f10 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_C.csv @@ -3,98 +3,26 @@ Month,ReportingNode,Scenario,Year 12,CH,MTUP10pct,2020 @@C AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value +,,BOP,DT1.1,,C,N,80.0332 ,,EOP,DT1.1,,C,C,22.35306 ,,AM,DT1.1,,C,C,-42.67021 ,,EA,DT1.1,,C,C,-15 -,,BOP,DT1.1,,C,I,-0 -,,CF,DT1.1,,C,C,-0 -,,BOP,DT1.1,,C,N,80.0332 ,,IA,DT1.1,,C,N,-0.00993 -,,MC,DT1.1,,C,I,-0 -,,RCU,DT1.1,,C,I,-0 -,,CF,DT1.1,,C,I,-0 -,,IA,DT1.1,,C,I,-0 -,,AU,DT1.1,,C,I,-0 -,,YCU,DT1.1,,C,I,-0 -,,CRU,DT1.1,,C,I,-0 -,,EV,DT1.1,,C,I,-0 -,,CF,DT1.1,,C,N,-0 -,,AU,DT1.1,,C,N,-0 -,,EV,DT1.1,,C,N,-0 -,,CL,DT1.1,,C,C,-0 -,,CF,DT2.1,,C,C,-0 ,,EA,DT2.1,,C,C,-15 ,,AM,DT2.1,,C,C,-82.02271 ,,EOP,DT2.1,,C,C,42.96811 ,,BOP,DT2.1,,C,N,139.90849 ,,IA,DT2.1,,C,N,0.08233 -,,BOP,DT2.1,,C,I,-0 -,,MC,DT2.1,,C,I,-0 -,,RCU,DT2.1,,C,I,-0 -,,CF,DT2.1,,C,I,-0 -,,IA,DT2.1,,C,I,-0 -,,AU,DT2.1,,C,I,-0 -,,YCU,DT2.1,,C,I,-0 -,,CRU,DT2.1,,C,I,-0 -,,EV,DT2.1,,C,I,-0 -,,CF,DT2.1,,C,N,-0 -,,AU,DT2.1,,C,N,-0 -,,EV,DT2.1,,C,N,-0 -,,CL,DT2.1,,C,C,-0 -,,CF,DT1.3,,C,C,-0 ,,EA,DT1.3,,C,C,-15 ,,AM,DT1.3,,C,C,-82.02271 ,,EOP,DT1.3,,C,C,42.96811 ,,BOP,DT1.3,,C,N,139.90849 ,,IA,DT1.3,,C,N,0.08233 -,,BOP,DT1.3,,C,I,-0 -,,MC,DT1.3,,C,I,-0 -,,RCU,DT1.3,,C,I,-0 -,,CF,DT1.3,,C,I,-0 -,,IA,DT1.3,,C,I,-0 -,,AU,DT1.3,,C,I,-0 -,,YCU,DT1.3,,C,I,-0 -,,CRU,DT1.3,,C,I,-0 -,,EV,DT1.3,,C,I,-0 -,,CF,DT1.3,,C,N,-0 -,,AU,DT1.3,,C,N,-0 -,,EV,DT1.3,,C,N,-0 -,,CL,DT1.3,,C,C,-0 -,,CF,DTR1.1,,C,C,-0 -,,BOP,DTR1.1,,C,I,-0 ,,AM,DTR1.1,,C,C,26.60498 ,,EOP,DTR1.1,,C,C,-13.93719 ,,BOP,DTR1.1,,C,N,-40.54585 ,,IA,DTR1.1,,C,N,0.00368 -,,EA,DTR1.1,,C,C,-0 -,,MC,DTR1.1,,C,I,-0 -,,RCU,DTR1.1,,C,I,-0 -,,CF,DTR1.1,,C,I,-0 -,,IA,DTR1.1,,C,I,-0 -,,AU,DTR1.1,,C,I,-0 -,,YCU,DTR1.1,,C,I,-0 -,,CRU,DTR1.1,,C,I,-0 -,,EV,DTR1.1,,C,I,-0 -,,CF,DTR1.1,,C,N,-0 -,,AU,DTR1.1,,C,N,-0 -,,EV,DTR1.1,,C,N,-0 -,,CL,DTR1.1,,C,C,-0 -,,CF,DTR2.1,,C,C,-0 ,,AM,DTR2.1,,C,C,46.24958 ,,EOP,DTR2.1,,C,C,-24.22813 ,,BOP,DTR2.1,,C,N,-70.43538 -,,IA,DTR2.1,,C,N,-0.04234 -,,EA,DTR2.1,,C,C,-0 -,,BOP,DTR2.1,,C,I,-0 -,,MC,DTR2.1,,C,I,-0 -,,RCU,DTR2.1,,C,I,-0 -,,CF,DTR2.1,,C,I,-0 -,,IA,DTR2.1,,C,I,-0 -,,AU,DTR2.1,,C,I,-0 -,,YCU,DTR2.1,,C,I,-0 -,,CRU,DTR2.1,,C,I,-0 -,,EV,DTR2.1,,C,I,-0 -,,CF,DTR2.1,,C,N,-0 -,,AU,DTR2.1,,C,N,-0 -,,EV,DTR2.1,,C,N,-0 -,,CL,DTR2.1,,C,C,-0 \ No newline at end of file +,,IA,DTR2.1,,C,N,-0.04234 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv index 7e103cb6..4ad94e50 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_DA.csv @@ -5,153 +5,10 @@ Month,ReportingNode,Scenario,Year AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value ,,EOP,DT1.1,,DA,C,-5.15655 ,,AM,DT1.1,,DA,C,9.84345 -,,EA,DT1.1,,DA,C,0 -,,BOP,DT1.1,,DA,I,0 ,,CF,DT1.1,,DA,C,-15 -,,BOP,DT1.1,,DA,N,0 -,,IA,DT1.1,,DA,N,0 -,,MC,DT1.1,,DA,I,0 -,,RCU,DT1.1,,DA,I,0 -,,CF,DT1.1,,DA,I,0 -,,IA,DT1.1,,DA,I,0 -,,AU,DT1.1,,DA,I,0 -,,YCU,DT1.1,,DA,I,0 -,,CRU,DT1.1,,DA,I,0 -,,EV,DT1.1,,DA,I,0 -,,CF,DT1.1,,DA,N,0 -,,AU,DT1.1,,DA,N,0 -,,EV,DT1.1,,DA,N,0 -,,CL,DT1.1,,DA,C,0 -,,CF,DT1.2,,DA,C,0 -,,BOP,DT1.2,,DA,I,0 -,,EA,DT1.2,,DA,C,0 -,,AM,DT1.2,,DA,C,-0 -,,EOP,DT1.2,,DA,C,0 -,,MC,DT1.2,,DA,I,0 -,,RCU,DT1.2,,DA,I,0 -,,CF,DT1.2,,DA,I,0 -,,IA,DT1.2,,DA,I,0 -,,AU,DT1.2,,DA,I,0 -,,YCU,DT1.2,,DA,I,0 -,,CRU,DT1.2,,DA,I,0 -,,EV,DT1.2,,DA,I,0 -,,BOP,DT1.2,,DA,N,0 -,,CF,DT1.2,,DA,N,0 -,,IA,DT1.2,,DA,N,0 -,,AU,DT1.2,,DA,N,0 -,,EV,DT1.2,,DA,N,0 -,,CL,DT1.2,,DA,C,0 ,,CF,DT2.1,,DA,C,-15 -,,EA,DT2.1,,DA,C,0 ,,AM,DT2.1,,DA,C,9.84345 ,,EOP,DT2.1,,DA,C,-5.15655 -,,BOP,DT2.1,,DA,N,0 -,,IA,DT2.1,,DA,N,0 -,,BOP,DT2.1,,DA,I,0 -,,MC,DT2.1,,DA,I,0 -,,RCU,DT2.1,,DA,I,0 -,,CF,DT2.1,,DA,I,0 -,,IA,DT2.1,,DA,I,0 -,,AU,DT2.1,,DA,I,0 -,,YCU,DT2.1,,DA,I,0 -,,CRU,DT2.1,,DA,I,0 -,,EV,DT2.1,,DA,I,0 -,,CF,DT2.1,,DA,N,0 -,,AU,DT2.1,,DA,N,0 -,,EV,DT2.1,,DA,N,0 -,,CL,DT2.1,,DA,C,0 ,,CF,DT1.3,,DA,C,-15 -,,EA,DT1.3,,DA,C,0 ,,AM,DT1.3,,DA,C,9.84345 -,,EOP,DT1.3,,DA,C,-5.15655 -,,BOP,DT1.3,,DA,N,0 -,,IA,DT1.3,,DA,N,0 -,,BOP,DT1.3,,DA,I,0 -,,MC,DT1.3,,DA,I,0 -,,RCU,DT1.3,,DA,I,0 -,,CF,DT1.3,,DA,I,0 -,,IA,DT1.3,,DA,I,0 -,,AU,DT1.3,,DA,I,0 -,,YCU,DT1.3,,DA,I,0 -,,CRU,DT1.3,,DA,I,0 -,,EV,DT1.3,,DA,I,0 -,,CF,DT1.3,,DA,N,0 -,,AU,DT1.3,,DA,N,0 -,,EV,DT1.3,,DA,N,0 -,,CL,DT1.3,,DA,C,0 -,,CF,DT2.2,,DA,C,0 -,,EA,DT2.2,,DA,C,0 -,,AM,DT2.2,,DA,C,-0 -,,EOP,DT2.2,,DA,C,0 -,,BOP,DT2.2,,DA,I,0 -,,MC,DT2.2,,DA,I,0 -,,RCU,DT2.2,,DA,I,0 -,,CF,DT2.2,,DA,I,0 -,,IA,DT2.2,,DA,I,0 -,,AU,DT2.2,,DA,I,0 -,,YCU,DT2.2,,DA,I,0 -,,CRU,DT2.2,,DA,I,0 -,,EV,DT2.2,,DA,I,0 -,,BOP,DT2.2,,DA,N,0 -,,CF,DT2.2,,DA,N,0 -,,IA,DT2.2,,DA,N,0 -,,AU,DT2.2,,DA,N,0 -,,EV,DT2.2,,DA,N,0 -,,CL,DT2.2,,DA,C,0 -,,CF,DTR1.1,,DA,C,0 -,,BOP,DTR1.1,,DA,I,0 -,,AM,DTR1.1,,DA,C,-0 -,,EOP,DTR1.1,,DA,C,0 -,,BOP,DTR1.1,,DA,N,0 -,,IA,DTR1.1,,DA,N,0 -,,EA,DTR1.1,,DA,C,0 -,,MC,DTR1.1,,DA,I,0 -,,RCU,DTR1.1,,DA,I,0 -,,CF,DTR1.1,,DA,I,0 -,,IA,DTR1.1,,DA,I,0 -,,AU,DTR1.1,,DA,I,0 -,,YCU,DTR1.1,,DA,I,0 -,,CRU,DTR1.1,,DA,I,0 -,,EV,DTR1.1,,DA,I,0 -,,CF,DTR1.1,,DA,N,0 -,,AU,DTR1.1,,DA,N,0 -,,EV,DTR1.1,,DA,N,0 -,,CL,DTR1.1,,DA,C,0 -,,CF,DTR1.2,,DA,C,0 -,,BOP,DTR1.2,,DA,I,0 -,,EA,DTR1.2,,DA,C,0 -,,AM,DTR1.2,,DA,C,-0 -,,EOP,DTR1.2,,DA,C,0 -,,MC,DTR1.2,,DA,I,0 -,,RCU,DTR1.2,,DA,I,0 -,,CF,DTR1.2,,DA,I,0 -,,IA,DTR1.2,,DA,I,0 -,,AU,DTR1.2,,DA,I,0 -,,YCU,DTR1.2,,DA,I,0 -,,CRU,DTR1.2,,DA,I,0 -,,EV,DTR1.2,,DA,I,0 -,,BOP,DTR1.2,,DA,N,0 -,,CF,DTR1.2,,DA,N,0 -,,IA,DTR1.2,,DA,N,0 -,,AU,DTR1.2,,DA,N,0 -,,EV,DTR1.2,,DA,N,0 -,,CL,DTR1.2,,DA,C,0 -,,CF,DTR2.1,,DA,C,0 -,,AM,DTR2.1,,DA,C,-0 -,,EOP,DTR2.1,,DA,C,0 -,,BOP,DTR2.1,,DA,N,0 -,,IA,DTR2.1,,DA,N,0 -,,EA,DTR2.1,,DA,C,0 -,,BOP,DTR2.1,,DA,I,0 -,,MC,DTR2.1,,DA,I,0 -,,RCU,DTR2.1,,DA,I,0 -,,CF,DTR2.1,,DA,I,0 -,,IA,DTR2.1,,DA,I,0 -,,AU,DTR2.1,,DA,I,0 -,,YCU,DTR2.1,,DA,I,0 -,,CRU,DTR2.1,,DA,I,0 -,,EV,DTR2.1,,DA,I,0 -,,CF,DTR2.1,,DA,N,0 -,,AU,DTR2.1,,DA,N,0 -,,EV,DTR2.1,,DA,N,0 -,,CL,DTR2.1,,DA,C,0 \ No newline at end of file +,,EOP,DT1.3,,DA,C,-5.15655 \ No newline at end of file diff --git a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv index 05da2dca..9b1cb78e 100644 --- a/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv +++ b/ifrs17-template/Test/Data/IfrsVariableBenchmarks/BM_CH_2020_12_MTUP10pct_RA.csv @@ -5,81 +5,33 @@ Month,ReportingNode,Scenario,Year AccidentYear,AmountType,AocType,DataNode,EconomicBasis,EstimateType,Novelty,Value ,,BOP,DT1.1,C,RA,N,59.87529 ,,BOP,DT1.1,L,RA,N,59.87529 -,,CL,DT1.1,C,RA,C,0 -,,CL,DT1.1,L,RA,C,0 -,,EA,DT1.1,C,RA,C,0 -,,EA,DT1.1,L,RA,C,0 -,,AM,DT1.1,C,RA,C,0 -,,AM,DT1.1,L,RA,C,0 ,,EOP,DT1.1,C,RA,C,29.96755 ,,EOP,DT1.1,L,RA,C,29.96755 ,,IA,DT1.1,C,RA,N,0.09226 ,,IA,DT1.1,L,RA,N,0.09226 ,,CF,DT1.1,C,RA,N,-30 ,,CF,DT1.1,L,RA,N,-30 -,,CF,DT1.1,C,RA,C,0 -,,CF,DT1.1,L,RA,C,0 -,,BOP,DT1.1,C,RA,I,0 -,,BOP,DT1.1,L,RA,I,0 -,,IA,DT1.1,C,RA,I,0 -,,IA,DT1.1,L,RA,I,0 2020,,BOP,DT1.2,C,RA,N,59.87529 2020,,BOP,DT1.2,L,RA,N,59.87529 -2020,,CL,DT1.2,C,RA,C,0 -2020,,CL,DT1.2,L,RA,C,0 -2020,,EA,DT1.2,C,RA,C,0 -2020,,EA,DT1.2,L,RA,C,0 -2020,,AM,DT1.2,C,RA,C,0 -2020,,AM,DT1.2,L,RA,C,0 2020,,EOP,DT1.2,C,RA,C,29.96755 2020,,EOP,DT1.2,L,RA,C,29.96755 2020,,IA,DT1.2,C,RA,N,0.09226 2020,,IA,DT1.2,L,RA,N,0.09226 2020,,CF,DT1.2,C,RA,N,-30 2020,,CF,DT1.2,L,RA,N,-30 -2020,,CF,DT1.2,C,RA,C,0 -2020,,CF,DT1.2,L,RA,C,0 -2020,,BOP,DT1.2,C,RA,I,0 -2020,,BOP,DT1.2,L,RA,I,0 -2020,,IA,DT1.2,C,RA,I,0 -2020,,IA,DT1.2,L,RA,I,0 ,,BOP,DTR1.1,C,RA,N,-29.93765 ,,BOP,DTR1.1,L,RA,N,-29.93765 -,,CL,DTR1.1,C,RA,C,0 -,,CL,DTR1.1,L,RA,C,0 -,,EA,DTR1.1,C,RA,C,0 -,,EA,DTR1.1,L,RA,C,0 -,,AM,DTR1.1,C,RA,C,0 -,,AM,DTR1.1,L,RA,C,0 ,,EOP,DTR1.1,C,RA,C,-14.98378 ,,EOP,DTR1.1,L,RA,C,-14.98378 ,,IA,DTR1.1,C,RA,N,-0.04613 ,,IA,DTR1.1,L,RA,N,-0.04613 ,,CF,DTR1.1,C,RA,N,15 ,,CF,DTR1.1,L,RA,N,15 -,,CF,DTR1.1,C,RA,C,0 -,,CF,DTR1.1,L,RA,C,0 -,,BOP,DTR1.1,C,RA,I,0 -,,BOP,DTR1.1,L,RA,I,0 -,,IA,DTR1.1,C,RA,I,0 -,,IA,DTR1.1,L,RA,I,0 2020,,BOP,DTR1.2,C,RA,N,-29.93765 2020,,BOP,DTR1.2,L,RA,N,-29.93765 -2020,,CL,DTR1.2,C,RA,C,0 -2020,,CL,DTR1.2,L,RA,C,0 -2020,,EA,DTR1.2,C,RA,C,0 -2020,,EA,DTR1.2,L,RA,C,0 -2020,,AM,DTR1.2,C,RA,C,0 -2020,,AM,DTR1.2,L,RA,C,0 2020,,EOP,DTR1.2,C,RA,C,-14.98378 2020,,EOP,DTR1.2,L,RA,C,-14.98378 2020,,IA,DTR1.2,C,RA,N,-0.04613 2020,,IA,DTR1.2,L,RA,N,-0.04613 2020,,CF,DTR1.2,C,RA,N,15 -2020,,CF,DTR1.2,L,RA,N,15 -2020,,CF,DTR1.2,C,RA,C,0 -2020,,CF,DTR1.2,L,RA,C,0 -2020,,BOP,DTR1.2,C,RA,I,0 -2020,,BOP,DTR1.2,L,RA,I,0 -2020,,IA,DTR1.2,C,RA,I,0 -2020,,IA,DTR1.2,L,RA,I,0 \ No newline at end of file +2020,,CF,DTR1.2,L,RA,N,15 \ No newline at end of file diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index d32b5039..243e73f9 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Equality Comparers Equality Comparers

" ], "metadata": {}, "execution_count": 0, @@ -48,6 +48,7 @@ "source": [ "public static bool SequenceEqual(this double[] defaultArray, double[] testArray, double precision)", "\n{", + "\n if ( defaultArray == null || testArray == null ) return false; ", "\n if (defaultArray.Length != testArray.Length) return false;", "\n for (int i = 0; i < defaultArray.Length; i++){", "\n if(Math.Abs(defaultArray[i]-testArray[i]) >= precision) return false;", From 6f42ff612f5940360391c49a70b9d38790930d6d Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Mon, 19 Dec 2022 18:26:40 +0100 Subject: [PATCH 37/64] Test Improved --- .../Test/ScenarioDataImportTest.ipynb | 110 +++++++++++------- 1 file changed, 69 insertions(+), 41 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index a641c44c..193197c6 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -45,17 +45,17 @@ { "cell_type": "code", "source": [ - "var actualEstimateTypes = GetImportActualEstimateType();" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + "var ws = Workspace.CreateNew();", + "\nws.InitializeFrom(DataSource);", + "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);", + "\nvar initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", + "\nawait initStorage.InitializeAsync();", + "\nvar actualETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", + "\nvar cashflowETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Cashflow];", + "\nvar actualOrCashflowETs = actualETs.Intersect(cashflowETs);", + "\nvar onlyActualETs = actualETs.Except(cashflowETs);", + "\nvar onlyCashflowETs = cashflowETs.Except(actualETs);" ], "metadata": {}, "execution_count": 0, @@ -180,7 +180,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioInitCashFlows = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioInitCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioInitCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -189,9 +192,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);" + "actualVars.Length.Should().Be(0);", + "\ncashflowVars.Length.Should().NotBe(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -235,7 +238,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioInitActuals = DataSource.Query().ToArray();", - "\nvar diffs = ivsScenarioInitActuals.Except(ivsScenarioInitCashFlows, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioInitActuals.Except(ivsScenarioInitCashFlows, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -244,9 +250,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.CU).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).ToArray().Length.Should().Be(0);" + "actualVars.Length.Should().NotBe(0);", + "\ncashflowVars.Length.Should().Be(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -299,7 +305,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioCashflowUpdateCU = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioCashflowUpdateCU.Except(ivsScenarioInitActuals, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioCashflowUpdateCU.Except(ivsScenarioInitActuals, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -308,9 +317,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.C || x.EstimateType == EstimateTypes.L).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().NotBe(0);" + "actualVars.Length.Should().Be(0);", + "\ncashflowVars.Length.Should().NotBe(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -355,7 +364,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioActualUpdateACAAEA = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioActualUpdateACAAEA.Except(ivsScenarioCashflowUpdateCU, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioActualUpdateACAAEA.Except(ivsScenarioCashflowUpdateCU, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -365,7 +377,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().Be(0);" + "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().Be(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -572,7 +585,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateReimportCashFlows = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsBestEstimateReimportCashFlows.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -582,7 +598,8 @@ "cell_type": "code", "source": [ "diffs.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().NotBe(0);", - "\ndiffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).Count().Should().NotBe(0);" + "\nactualVars.Length.Should().Be(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -602,8 +619,8 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType) && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + "diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", + "\ndiffs.Where(x => onlyActualETs.Contains(x.EstimateType) && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -651,7 +668,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportCashFlowsImpact = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioReimportCashFlowsImpact.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioReimportCashFlowsImpact.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -660,8 +680,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", - "\ndiffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Where(x => Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + "cashflowVars.Length.Should().NotBe(0);", + "\nactualVars.Length.Should().Be(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -706,7 +727,9 @@ "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsBestEstimateReimportActuals.Except(ivsBestEstimateReimportCashFlows, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -715,8 +738,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == \"DA\").Count().Should().Be(0);" + "actualVars.Length.Should().NotBe(0);", + "\ncashflowVars.Length.Should().NotBe(0);", + "\ncashflowVars.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -727,7 +751,9 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportActuals = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioReimportActuals.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());" + "\nvar diffs = ivsScenarioReimportActuals.Except(ivsScenarioReimportCashFlows, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -736,8 +762,9 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).ToArray().Length.Should().Be(0);", - "\ndiffs.Where(x => x.EstimateType == \"DA\").Count().Should().Be(0);" + "actualVars.Length.Should().Be(0);", + "\ncashflowVars.Length.Should().NotBe(0);", + "\ncashflowVars.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -840,7 +867,8 @@ "await DataSource.Partition.SetAsync(argsScenario);", "\nvar ivsScenarioReimportCashFlowsWithCU = await DataSource.Query().ToArrayAsync();", "\nvar diffs = ivsScenarioReimportCashFlowsWithCU.Except(ivsScenarioReimportCashflowNoCU, IfrsVariableComparer.Instance());", - "\nvar items = diffs.Where(x => actualEstimateTypes.Contains(x.EstimateType)).Select(x => x.EstimateType).Distinct();" + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -849,8 +877,8 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => !actualEstimateTypes.Contains(x.EstimateType)).Where(x => Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().NotBe(0);" + "actualVars.Length.Should().Be(0);", + "\ncashflowVars.Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, From 67375042bf76c50f94fe22060b3f14d2ec31f4a3 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 20 Dec 2022 12:08:38 +0100 Subject: [PATCH 38/64] comments resolved --- ifrs17-template/Test/Data/ExportIfrsVariable.ipynb | 11 ++++++++++- ifrs17/Import/Importers.ipynb | 9 ++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb index 45dad4c4..2b320b8d 100644 --- a/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb +++ b/ifrs17-template/Test/Data/ExportIfrsVariable.ipynb @@ -53,6 +53,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "int roundingDigits = - (int)Math.Log10(BenchmarkPrecision) + 1;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -107,7 +116,7 @@ "\n .WithColumn(x => x.ImportFormat, x => x.Delete())", "\n )", "\n .WithTable(tableConfig => tableConfig", - "\n .WithSource(source => computedVariables[estimateType].Select(x => x with {Value = Math.Round(x.Value, 5)}).AsQueryable())", + "\n .WithSource(source => computedVariables[estimateType].Select(x => x with {Value = Math.Round(x.Value, roundingDigits)}).AsQueryable())", "\n .WithName(estimateType)", "\n .WithColumn(x => x.Partition, x => x.Delete())", "\n .WithColumn(x => x.Id, x => x.Delete())", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 0b8d49e8..c4361822 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -632,7 +632,6 @@ "\n await storage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n var errors = new List(); ", "\n var importLogPortfolios = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => ", "\n new InsurancePortfolio { SystemName = datarow.Field(nameof(DataNode.SystemName)),", @@ -962,7 +961,7 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n var accidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() > 0; ", + "\n var missingAccidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() == 0; ", "\n ", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", @@ -1008,7 +1007,11 @@ "\n Novelty = novelty,", "\n AmountType = amountType,", "\n EstimateType = estimateType,", - "\n AccidentYear = accidentYearColumn? (Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)? accidentYear : (int?)null) : (int?)null, ", + "\n AccidentYear = missingAccidentYearColumn", + "\n ? (int?)null ", + "\n : Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)", + "\n ? accidentYear ", + "\n : (int?)null, ", "\n Partition = parsingStorage.TargetPartitionByReportingNodeAndPeriod.Id,", "\n Values = Multiply(GetSign((aocType, amountType, estimateType, dataNodeData.IsReinsurance), parsingStorage.HierarchyCache), values)", "\n };", From 90a04d1c6271bdb0a1d96ad7eef448bb8897517a Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 20 Dec 2022 14:47:59 +0100 Subject: [PATCH 39/64] refactoring of Main Parser, all tests green --- ifrs17/DataModel/DataStructure.ipynb | 49 ++++++++--- ifrs17/Import/Importers.ipynb | 127 ++++++++++++++++++--------- 2 files changed, 124 insertions(+), 52 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 1081bd98..687b2e15 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -2062,7 +2062,7 @@ "source": [ "# Args", "\n", - "\nArgs are used to hold data related to the partition and additional information required to performe calculation at import and report. ", + "\nArgs are used to hold data related to Gruop Level and additional information required to performe calculation at import. ", "\nThey are not persisted, i.e. they are not saved on the database." ], "metadata": {}, @@ -2076,11 +2076,6 @@ "\n{", "\n [Required]", "\n [IdentityProperty]", - "\n [Dimension(typeof(ReportingNode))]", - "\n public string ReportingNode { get; init; }", - "\n", - "\n [Required]", - "\n [IdentityProperty]", "\n [NoArithmetics(ArithmeticOperation.Scale)]", "\n [Dimension(typeof(int), nameof(Year))]", "\n [Range(1900, 2100, ErrorMessage = \"Value for {0} must be between {1} and {2}.\")]", @@ -2097,16 +2092,46 @@ "\n [Dimension(typeof(Scenario))]", "\n public string Scenario { get; init; }", "\n", + "\n public Args(int year, int month, string scenario)", + "\n {", + "\n Year = year;", + "\n Month = month;", + "\n Scenario = scenario;", + "\n }", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Partitioned Args are used to hold data related to the partition and additional information required to performe calculation at import and report. ", + "\nThey are not persisted, i.e. they are not saved on the database." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public record PartitionedArgs : Args", + "\n{", + "\n [Required]", + "\n [IdentityProperty]", + "\n [Dimension(typeof(ReportingNode))]", + "\n public string ReportingNode { get; init; }", + "\n ", "\n [IdentityProperty]", "\n public Periodicity Periodicity{ get; init; }", "\n", - "\n public Args(string reportingNode, int year, int month, Periodicity periodicity, string scenario)", + "\n public PartitionedArgs(string reportingNode, int year, int month, Periodicity periodicity, string scenario)", + "\n : base( year, month, scenario)", "\n {", "\n ReportingNode = reportingNode;", - "\n Year = year;", - "\n Month = month;", "\n Periodicity = periodicity;", - "\n Scenario = scenario;", "\n }", "\n}" ], @@ -2117,7 +2142,7 @@ { "cell_type": "code", "source": [ - "public record ImportArgs : Args", + "public record ImportArgs : PartitionedArgs", "\n{", "\n public string ImportFormat { get; init; }", "\n ", @@ -2135,7 +2160,7 @@ { "cell_type": "code", "source": [ - "public record ReportArgs : Args", + "public record ReportArgs : PartitionedArgs", "\n{", "\n public string HierarchyName { get; init; }", "\n ", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 3b71dfed..8ffb597e 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -299,9 +299,9 @@ { "cell_type": "markdown", "source": [ - "## Parse Main Tab and return Args", + "## Parse Main Tabs", "\n", - "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." + "\nThe main table of our custom import formats contains the information (Year, Month, Scenario) which are required to identify unpartition data. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." ], "metadata": {}, "execution_count": 0, @@ -310,50 +310,106 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsFromMainAsync(IDataSet dataSet)", + "public async Task GetArgsFromMainAsync(IDataSet dataSet)", "\n{", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", + "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", - "\n ", + "\n", "\n var main = mainTab.Rows.First();", - "\n var reportingNode = (string)main[nameof(ReportingNode)];", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n ", + "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n var year = (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int));", + "\n var month = (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int));", + "\n return new Args(year, month, scenario);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task GetReportingNodeFromMainAsync(IDataSet dataSet)", + "\n{", + "\n var mainTab = dataSet.Tables[Main];", + "\n if(mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", + "\n return (string)mainTab.Rows.First()[nameof(ReportingNode)];", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task GetPartitionedArgsFromMainAsync(IDataSet dataSet)", + "\n{", + "\n var args = await GetArgsFromMainAsync(dataSet);", + "\n var mainTab = dataSet.Tables[Main];", + "\n if(mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", + "\n if(ApplicationMessage.HasErrors()) return null;", + "\n var reportingNode = await GetReportingNodeFromMainAsync(dataSet);", + "\n return new PartitionedArgs(reportingNode, args.Year, args.Month, default(Periodicity), args.Scenario);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Parse Main and return ImportArgs", "\n", - "\n ImportArgs args;", + "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [PartitionedArgs](../DataModel/DataStructure#partitionedargs) and used in the next methods." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task GetArgsFromMainAsync(IDataSet dataSet)", + "\n{", + "\n ImportArgs importArgs;", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", - "\n args = new ImportArgs( reportingNode,", + "\n var reportingNode = await GetReportingNodeFromMainAsync(dataSet);", + "\n if(ApplicationMessage.HasErrors()) return null;", + "\n importArgs = new ImportArgs(reportingNode,", "\n default(int),", "\n default(int),", "\n default(Periodicity),", - "\n scenario,", + "\n null,", "\n default(string));", "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(importArgs)),", "\n ReportingNode = reportingNode } } );", "\n break;", "\n }", "\n case nameof(PartitionByReportingNodeAndPeriod) : {", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(PartitionByReportingNodeAndPeriod.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", + "\n ", + "\n var args = await GetPartitionedArgsFromMainAsync(dataSet);", "\n if(ApplicationMessage.HasErrors()) return null;", - "\n args = new ImportArgs( reportingNode, ", - "\n (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Year)], typeof(int)),", - "\n (int)Convert.ChangeType(main[nameof(PartitionByReportingNodeAndPeriod.Month)], typeof(int)),", + "\n importArgs = new ImportArgs( args.ReportingNode, ", + "\n args.Year,", + "\n args.Month,", "\n default(Periodicity),", - "\n scenario,", + "\n args.Scenario,", "\n default(string) );", "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", - "\n Year = args.Year,", - "\n Month = args.Month,", - "\n ReportingNode = reportingNode, ", - "\n Scenario = scenario } } );", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(importArgs)),", + "\n Year = importArgs.Year,", + "\n Month = importArgs.Month,", + "\n ReportingNode = importArgs.ReportingNode, ", + "\n Scenario = importArgs.Scenario } } );", "\n break;", "\n }", "\n default : {", @@ -363,7 +419,7 @@ "\n }", "\n ", "\n await DataSource.CommitAsync();", - "\n return args;", + "\n return importArgs;", "\n}" ], "metadata": {}, @@ -606,18 +662,9 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n // Parsing Main", - "\n var mainTab = dataSet.Tables[Main];", - "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", - "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(YieldCurve.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n ", - "\n var main = mainTab.Rows.First();", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var year = (int)Convert.ChangeType(main[nameof(YieldCurve.Year)], typeof(int));", - "\n var month = (int)Convert.ChangeType(main[nameof(YieldCurve.Month)], typeof(int));", + "\n var args = await GetArgsFromMainAsync(dataSet);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", @@ -629,9 +676,9 @@ "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", "\n var item = new YieldCurve {", "\n Currency = currency,", - "\n Year = year,", - "\n Month = month, ", - "\n Scenario = scenario,", + "\n Year = args.Year,", + "\n Month = args.Month, ", + "\n Scenario = args.Scenario,", "\n Values = values", "\n };", "\n return item;", @@ -649,7 +696,7 @@ "\n await DataSource.UpdateAsync(newYieldCurves);", "\n await DataSource.CommitAsync();", "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == scenario)", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == args.Scenario)", "\n .Select(x => new ImportArgs( x.ReportingNode,", "\n x.Year, ", "\n x.Month,", From fae228a4ae71b757b5f202e95c859a92dfb86e2e Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 20 Dec 2022 17:40:54 +0100 Subject: [PATCH 40/64] typo fixing --- ifrs17/DataModel/DataStructure.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 30 ---------------------------- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 6b64affe..5af0a862 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -2062,7 +2062,7 @@ "source": [ "# Args", "\n", - "\nArgs are used to hold data related to Gruop Level and additional information required to performe calculation at import. ", + "\nArgs are used to hold data related to Group Level and additional information required to performe calculation at import. ", "\nThey are not persisted, i.e. they are not saved on the database." ], "metadata": {}, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index c1117f72..87b09d2f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -499,36 +499,6 @@ }, { "cell_type": "code", - "source": [ - "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", - "\n{", - "\n Activity.Start();", - "\n var storage = new ImportStorage(args, DataSource, workspace);", - "\n await storage.InitializeAsync();", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n ", - "\n var universe = Scopes.ForStorage(storage).ToScope();", - "\n var identities = universe.GetScopes(storage.DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities);", - "\n var ivs = universe.GetScopes(identities).SelectMany(x => x.CalculatedIfrsVariables);", - "\n if(Activity.HasErrors()) return Activity.Finish();", - "\n", - "\n if(storage.DefaultPartition != storage.TargetPartition){", - "\n var bestEstimateIvs = await DataSource.LoadPartitionedDataAsync(storage.DefaultPartition, storage.TargetPartition);", - "\n ivs = ivs.Where(iv => Math.Abs(iv.Value) >= Precision).ToArray().Concat(", - "\n ivs.Where(iv => Math.Abs(iv.Value) < Precision).Intersect(bestEstimateIvs, EqualityComparer.Instance).Select(iv => iv with {Value = 0.0}).ToArray());", - "\n }", - "\n", - "\n", - "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision));", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", - "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", - "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n if(saveRawVariables) {", - "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Sum(x => Math.Abs(x)) < Precision).ToArrayAsync());", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", - "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", - "\n }", - "\n return Activity.Finish();", "source": [ "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", "\n{", From 4e0abfa57eac19ae5045be40d0694f4fbf5a9d53 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 20 Dec 2022 18:20:00 +0100 Subject: [PATCH 41/64] importer and test for yield curve improved --- .../Test/ScenarioYieldCurveImportTest.ipynb | 22 ++++++++++++++++--- ifrs17/Import/Importers.ipynb | 20 +++++++---------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index d4e6ab3e..d731c0b3 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -60,7 +60,18 @@ "source": [ "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", "\nvar argsScenarioYieldCurve = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"YCUP1.0pct\", ImportFormats.Cashflow);", - "\nvar argsScenarioTransactionalData = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"SRUP1.0pct\", ImportFormats.Cashflow);" + "\nvar argsScenarioTransactionalData = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"SRUP1.0pct\", ImportFormats.Cashflow);", + "\n", + "\nvar ws = Workspace.CreateNew();", + "\nws.InitializeFrom(DataSource);", + "\nvar initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", + "\nawait initStorage.InitializeAsync();", + "\n", + "\nvar actualETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", + "\nvar cashflowETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Cashflow];", + "\nvar actualOrCashflowETs = actualETs.Intersect(cashflowETs);", + "\nvar onlyActualETs = actualETs.Except(cashflowETs);", + "\nvar onlyCashflowETs = cashflowETs.Except(actualETs);" ], "metadata": {}, "execution_count": 0, @@ -186,7 +197,10 @@ "source": [ "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", "\nvar ivsScenarioYieldCurve = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = (ivsScenarioYieldCurve.Where(x => Math.Abs(x.Value) > Precision).ToArray()).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + "\nvar diffs = (ivsScenarioYieldCurve.Where(x => Math.Abs(x.Value) > Precision).ToArray()).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", + "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -195,7 +209,9 @@ { "cell_type": "code", "source": [ - "diffs.ToArray().Length.Should().NotBe(0);" + "actualVars.Length.Should().Be(0);", + "\ncashflowVars.Length.Should().NotBe(0);", + "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 67969d24..5e11a386 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -663,21 +663,20 @@ { "cell_type": "code", "source": [ - "public async Task CalculationYieldCurvesAsync(int year, int month, string scenario)", + "public async Task CalculationYieldCurvesAsync(Args mainArgs)", "\n{ ", - "\n ", "\n Activity.Start();", - "\n // we have already overwritten the new one, we need to only retrigger the calculations", + "\n var isScenario = mainArgs.Scenario == null;", "\n var scenarioYieldCurve = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && x.Scenario != null)", + "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => x.Scenario).ToHashSet();", "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", "\n // = all", - "\n var targetPartitions = scenario == null", + "\n var targetPartitions = isScenario", "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && !scenarioYieldCurve.Contains(x.Scenario))", + "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && !scenarioYieldCurve.Contains(x.Scenario))", "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == year && x.Month == month && x.Scenario == null);", + "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario == null);", "\n", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", @@ -685,10 +684,7 @@ "\n var log = Activity.Finish();", "\n foreach(var pt in targetPartitions)", "\n {", - "\n var targetScenario = scenario != null ", - "\n ? scenario", - "\n : pt.Scenario;", - "\n ", + "\n var targetScenario = isScenario ? pt.Scenario : mainArgs.Scenario;", "\n var args = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), targetScenario, ImportFormats.Cashflow);", "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", @@ -745,7 +741,7 @@ "\n await DataSource.UpdateAsync(newYieldCurves);", "\n await DataSource.CommitAsync();", "\n ", - "\n var calculationLog = await CalculationYieldCurvesAsync(year, month, scenario);", + "\n var calculationLog = await CalculationYieldCurvesAsync(args);", "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", "\n});" ], From b9ac24752831bfe498f480d9fde91782f7e40672 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 21 Dec 2022 16:21:37 +0100 Subject: [PATCH 42/64] code improvment and cleanup --- .../InitSystemorphRefDataToMemory.ipynb | 27 --- ifrs17/DataModel/DataStructure.ipynb | 49 ++--- ifrs17/Import/Importers.ipynb | 167 ++++++++---------- ifrs17/Utils/ImportCalculationMethods.ipynb | 33 ++++ 4 files changed, 114 insertions(+), 162 deletions(-) diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index 4ac7d0ee..052fa1fc 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -208,33 +208,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync();" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "DataSource.Query()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 5af0a862..a9275444 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -2062,7 +2062,7 @@ "source": [ "# Args", "\n", - "\nArgs are used to hold data related to Group Level and additional information required to performe calculation at import. ", + "\nArgs are used to hold data related to the partition and additional information required to performe calculation at import and report. ", "\nThey are not persisted, i.e. they are not saved on the database." ], "metadata": {}, @@ -2076,6 +2076,11 @@ "\n{", "\n [Required]", "\n [IdentityProperty]", + "\n [Dimension(typeof(ReportingNode))]", + "\n public string ReportingNode { get; init; }", + "\n", + "\n [Required]", + "\n [IdentityProperty]", "\n [NoArithmetics(ArithmeticOperation.Scale)]", "\n [Dimension(typeof(int), nameof(Year))]", "\n [Range(1900, 2100, ErrorMessage = \"Value for {0} must be between {1} and {2}.\")]", @@ -2092,46 +2097,16 @@ "\n [Dimension(typeof(Scenario))]", "\n public string Scenario { get; init; }", "\n", - "\n public Args(int year, int month, string scenario)", - "\n {", - "\n Year = year;", - "\n Month = month;", - "\n Scenario = scenario;", - "\n }", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Partitioned Args are used to hold data related to the partition and additional information required to performe calculation at import and report. ", - "\nThey are not persisted, i.e. they are not saved on the database." - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public record PartitionedArgs : Args", - "\n{", - "\n [Required]", - "\n [IdentityProperty]", - "\n [Dimension(typeof(ReportingNode))]", - "\n public string ReportingNode { get; init; }", - "\n ", "\n [IdentityProperty]", "\n public Periodicity Periodicity{ get; init; }", "\n", - "\n public PartitionedArgs(string reportingNode, int year, int month, Periodicity periodicity, string scenario)", - "\n : base( year, month, scenario)", + "\n public Args(string reportingNode, int year, int month, Periodicity periodicity, string scenario)", "\n {", "\n ReportingNode = reportingNode;", + "\n Year = year;", + "\n Month = month;", "\n Periodicity = periodicity;", + "\n Scenario = scenario;", "\n }", "\n}" ], @@ -2142,7 +2117,7 @@ { "cell_type": "code", "source": [ - "public record ImportArgs : PartitionedArgs", + "public record ImportArgs : Args", "\n{", "\n public string ImportFormat { get; init; }", "\n ", @@ -2160,7 +2135,7 @@ { "cell_type": "code", "source": [ - "public record ReportArgs : PartitionedArgs", + "public record ReportArgs : Args", "\n{", "\n public string HierarchyName { get; init; }", "\n ", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 37302cef..57900e1a 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -299,9 +299,9 @@ { "cell_type": "markdown", "source": [ - "## Parse Main Tabs", + "## Parse Main Tab", "\n", - "\nThe main table of our custom import formats contains the information (Year, Month, Scenario) which are required to identify unpartition data. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." + "\nThe main table of our custom import formats contains the information which are required to identify the data depending on the ImportFormat. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." ], "metadata": {}, "execution_count": 0, @@ -310,52 +310,29 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsFromMainAsync(IDataSet dataSet)", + "public async Task GetArgsFromMainAsync(IDataSet dataSet, string importFormat)", "\n{", + "\n var isRNMandatory = GetMandatoryItems(nameof(ReportingNode), importFormat);", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", + "\n if(isRNMandatory && mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", "\n", - "\n var main = mainTab.Rows.First();", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var year = (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int));", - "\n var month = (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int));", - "\n return new Args(year, month, scenario);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task GetReportingNodeFromMainAsync(IDataSet dataSet)", - "\n{", - "\n var mainTab = dataSet.Tables[Main];", - "\n if(mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", + "\n var isYearMandatory = GetMandatoryItems(nameof(Args.Year), importFormat);", + "\n if(isYearMandatory && mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", - "\n return (string)mainTab.Rows.First()[nameof(ReportingNode)];", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task GetPartitionedArgsFromMainAsync(IDataSet dataSet)", - "\n{", - "\n var args = await GetArgsFromMainAsync(dataSet);", - "\n var mainTab = dataSet.Tables[Main];", - "\n if(mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", + "\n", + "\n var isMonthMandatory = GetMandatoryItems(nameof(Args.Month), importFormat);", + "\n if(isMonthMandatory && mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", - "\n var reportingNode = await GetReportingNodeFromMainAsync(dataSet);", - "\n return new PartitionedArgs(reportingNode, args.Year, args.Month, default(Periodicity), args.Scenario);", + "\n", + "\n var main = mainTab.Rows.First();", + "\n var reportingNode = isRNMandatory ? (string)main[nameof(ReportingNode)] : default(string);", + "\n var year = isYearMandatory ? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", + "\n var month = isMonthMandatory ? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", + "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n return new Args(reportingNode, year, month, default(Periodicity), scenario);", "\n}" ], "metadata": {}, @@ -376,40 +353,29 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsFromMainAsync(IDataSet dataSet)", + "public async Task GetArgsAndPartitionAsync(IDataSet dataSet, string importFormat)", "\n{", - "\n ImportArgs importArgs;", + "\n var mainArgs = await GetArgsFromMainAsync(dataSet, importFormat);", + "\n ImportArgs args = new ImportArgs( mainArgs.ReportingNode,", + "\n mainArgs.Year,", + "\n mainArgs.Month,", + "\n default(Periodicity),", + "\n mainArgs.Scenario,", + "\n importFormat);", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", - "\n var reportingNode = await GetReportingNodeFromMainAsync(dataSet);", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n importArgs = new ImportArgs(reportingNode,", - "\n default(int),", - "\n default(int),", - "\n default(Periodicity),", - "\n null,", - "\n default(string));", "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(importArgs)),", - "\n ReportingNode = reportingNode } } );", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n ReportingNode = args.ReportingNode } } );", "\n break;", "\n }", "\n case nameof(PartitionByReportingNodeAndPeriod) : {", - "\n ", - "\n var args = await GetPartitionedArgsFromMainAsync(dataSet);", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n importArgs = new ImportArgs( args.ReportingNode, ", - "\n args.Year,", - "\n args.Month,", - "\n default(Periodicity),", - "\n args.Scenario,", - "\n default(string) );", "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(importArgs)),", - "\n Year = importArgs.Year,", - "\n Month = importArgs.Month,", - "\n ReportingNode = importArgs.ReportingNode, ", - "\n Scenario = importArgs.Scenario } } );", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n Year = args.Year,", + "\n Month = args.Month,", + "\n ReportingNode = args.ReportingNode, ", + "\n Scenario = args.Scenario } } );", "\n break;", "\n }", "\n default : {", @@ -419,7 +385,7 @@ "\n }", "\n ", "\n await DataSource.CommitAsync();", - "\n return importArgs;", + "\n return args;", "\n}" ], "metadata": {}, @@ -497,6 +463,27 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public async Task GetTargetArgsAsync(ImportArgs mainArgs)", + "\n{", + "\n var scenarioArgs = await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", + "\n var isMultipleArg = mainArgs.Scenario == null && scenarioArgs.Any();", + "\n var targetArgs = isMultipleArg", + "\n ? mainArgs.RepeatOnce().Concat(scenarioArgs)", + "\n : mainArgs.RepeatOnce();", + "\n", + "\n if (isMultipleArg) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", scenarioArgs.Select(x => x.Scenario)));", + "\n return targetArgs.ToArray();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -662,7 +649,7 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsFromMainAsync(dataSet);", + "\n var args = await GetArgsFromMainAsync(dataSet, ImportFormats.YieldCurve);", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", @@ -745,7 +732,7 @@ "\n .DisableInitialization());", "\n ", "\n Activity.Start();", - "\n var args = await GetArgsFromMainAsync(dataSet);", + "\n var args = await GetArgsAndPartitionAsync(dataSet, default(string));", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -900,7 +887,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsFromMainAsync(dataSet);", + "\n var args = await GetArgsAndPartitionAsync(dataSet, default(string));", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -959,7 +946,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsFromMainAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeParameter};", + "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.DataNodeParameter);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -1081,8 +1068,7 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n var missingAccidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() == 0; ", - "\n ", + "\n var hasAccidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() > 0;", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", "\n var aocType = datarow.Field(nameof(RawVariable.AocType));", @@ -1123,11 +1109,9 @@ "\n Novelty = novelty,", "\n AmountType = valueType.AmountType,", "\n EstimateType = valueType.EstimateType,", - "\n AccidentYear = missingAccidentYearColumn", - "\n ? (int?)null ", - "\n : Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)", - "\n ? accidentYear ", - "\n : (int?)null, ", + "\n AccidentYear = hasAccidentYearColumn && Int32.TryParse((datarow.Field(nameof(RawVariable.AccidentYear))), out var accidentYear)", + "\n ? accidentYear", + "\n : (int?)null,", "\n Partition = parsingStorage.TargetPartitionByReportingNodeAndPeriod.Id,", "\n Values = Multiply(GetSign((aocType, valueType.AmountType, valueType.EstimateType, dataNodeData.IsReinsurance), parsingStorage.HierarchyCache), values)", "\n };", @@ -1148,17 +1132,10 @@ "source": [ "Import.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Cashflow};", + "\n var mainArgs = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Cashflow);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgs = mainArgs.Scenario == null ", - "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", - "\n : mainArgs.RepeatOnce();", - "\n", - "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", - "\n ", + "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -1253,16 +1230,10 @@ "source": [ "Import.DefineFormat(ImportFormats.Actual, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Actual};", + "\n var mainArgs = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Actual);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgs = mainArgs.Scenario == null ", - "\n ? mainArgs.RepeatOnce().Concat(await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync())", - "\n : mainArgs.RepeatOnce();", - "\n if (targetArgs.Count() > 1) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetArgs.Skip(1).Select(x => x.Scenario)));", - "\n ", + "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", @@ -1365,7 +1336,7 @@ "source": [ "Import.DefineFormat(ImportFormats.SimpleValue, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.SimpleValue};", + "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.SimpleValue);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.SimpleValue, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -1402,7 +1373,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Opening, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = (await GetArgsFromMainAsync(dataSet)) with {ImportFormat = ImportFormats.Opening};", + "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Opening);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Opening, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", @@ -1421,4 +1392,4 @@ "outputs": [] } ] -} +} \ No newline at end of file diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index 1c394e71..2305de30 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -307,6 +307,39 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Mandatory Properties by Import Format" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static bool GetMandatoryItems(string itemName, string importFormat)", + "\n{", + "\n var mandatoryItemsByImportFormat = new Dictionary>()", + "\n {", + "\n {nameof(Args.ReportingNode), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", + "\n ImportFormats.DataNodeState, ImportFormats.DataNode, ImportFormats.DataNodeParameter}.ToHashSet()},", + "\n {nameof(Args.Year), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", + "\n ImportFormats.YieldCurve, ImportFormats.DataNodeState, ImportFormats.DataNodeParameter}.ToHashSet()},", + "\n {nameof(Args.Month), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", + "\n ImportFormats.YieldCurve, ImportFormats.DataNodeState, ImportFormats.DataNodeParameter}.ToHashSet()}", + "\n };", + "\n", + "\n return mandatoryItemsByImportFormat.TryGetValue(nameof(itemName), out var mandatoryImportFormatSet) ", + "\n ? mandatoryImportFormatSet.Contains(importFormat)", + "\n : false;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file From 603c63b32195cb9b07a4b4e65bcb8b1bf5366277 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 22 Dec 2022 11:59:07 +0100 Subject: [PATCH 43/64] code cleanup --- .../InitSystemorphToDatabase.ipynb | 5 +- ifrs17/Import/Importers.ipynb | 74 ++++++++++--------- ifrs17/Utils/ImportCalculationMethods.ipynb | 33 --------- 3 files changed, 43 insertions(+), 69 deletions(-) diff --git a/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb b/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb index 65138c29..c95affec 100644 --- a/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb @@ -123,7 +123,10 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/Parameters/YieldCurve.csv\").WithType().WithTarget(DataSource).ExecuteAsync()" + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithType().WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithType().WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithType().WithTarget(DataSource).ExecuteAsync());" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 57900e1a..cc87385f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -299,7 +299,7 @@ { "cell_type": "markdown", "source": [ - "## Parse Main Tab", + "## Parser And Validator of Main Tab", "\n", "\nThe main table of our custom import formats contains the information which are required to identify the data depending on the ImportFormat. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." ], @@ -310,29 +310,31 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsFromMainAsync(IDataSet dataSet, string importFormat)", - "\n{", - "\n var isRNMandatory = GetMandatoryItems(nameof(ReportingNode), importFormat);", + "public ImportArgs GetArgsFromMain(IDataSet dataSet) {", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", - "\n if(isRNMandatory && mainTab.Columns.FirstOrDefault(x => x.ColumnName == nameof(ReportingNode)) == null) ApplicationMessage.Log(Error.ReportingNodeInMainNotFound);", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n", - "\n var isYearMandatory = GetMandatoryItems(nameof(Args.Year), importFormat);", - "\n if(isYearMandatory && mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()!=1) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n", - "\n var isMonthMandatory = GetMandatoryItems(nameof(Args.Month), importFormat);", - "\n if(isMonthMandatory && mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()!=1) ApplicationMessage.Log(Error.MonthInMainNotFound);", "\n if(ApplicationMessage.HasErrors()) return null;", "\n", "\n var main = mainTab.Rows.First();", - "\n var reportingNode = isRNMandatory ? (string)main[nameof(ReportingNode)] : default(string);", - "\n var year = isYearMandatory ? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", - "\n var month = isMonthMandatory ? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n return new Args(reportingNode, year, month, default(Periodicity), scenario);", + "\n var reportingNode = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.ReportingNode)).Count()>0? (string)main[nameof(ReportingNode)] : default(string);", + "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", + "\n var year = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()>0? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", + "\n var month = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()>0? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", + "\n", + "\n return new ImportArgs(reportingNode, year, month, default(Periodicity), scenario, default(string));", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public static void ValidateArgsForPeriod(this ImportArgs args) {", + "\n if(args.Year == default(int)) ApplicationMessage.Log(Error.YearInMainNotFound);", + "\n if(args.Month == default(int)) ApplicationMessage.Log(Error.MonthInMainNotFound);", "\n}" ], "metadata": {}, @@ -342,7 +344,7 @@ { "cell_type": "markdown", "source": [ - "## Parse Main and return ImportArgs", + "## Get Args And Set Partition", "\n ", "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [PartitionedArgs](../DataModel/DataStructure#partitionedargs) and used in the next methods." ], @@ -353,15 +355,12 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsAndPartitionAsync(IDataSet dataSet, string importFormat)", + "public async Task GetArgsAndSetPartitionAsync(IDataSet dataSet)", "\n{", - "\n var mainArgs = await GetArgsFromMainAsync(dataSet, importFormat);", - "\n ImportArgs args = new ImportArgs( mainArgs.ReportingNode,", - "\n mainArgs.Year,", - "\n mainArgs.Month,", - "\n default(Periodicity),", - "\n mainArgs.Scenario,", - "\n importFormat);", + "\n var args = GetArgsFromMain(dataSet);", + "\n if(ApplicationMessage.HasErrors()) return null;", + "\n if(args.ReportingNode == default(string)) { ApplicationMessage.Log(Error.ReportingNodeInMainNotFound); return null; }", + "\n", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", @@ -370,6 +369,8 @@ "\n break;", "\n }", "\n case nameof(PartitionByReportingNodeAndPeriod) : {", + "\n args.ValidateArgsForPeriod();", + "\n if(ApplicationMessage.HasErrors()) return null;", "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", "\n Year = args.Year,", @@ -649,7 +650,8 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsFromMainAsync(dataSet, ImportFormats.YieldCurve);", + "\n var args = GetArgsFromMain(dataSet);", + "\n args.ValidateArgsForPeriod();", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", @@ -732,7 +734,7 @@ "\n .DisableInitialization());", "\n ", "\n Activity.Start();", - "\n var args = await GetArgsAndPartitionAsync(dataSet, default(string));", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -887,7 +889,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndPartitionAsync(dataSet, default(string));", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -946,7 +948,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.DataNodeParameter);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -1132,7 +1134,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Cashflow);", + "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", @@ -1230,7 +1232,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Actual, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Actual);", + "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", @@ -1336,7 +1338,8 @@ "source": [ "Import.DefineFormat(ImportFormats.SimpleValue, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.SimpleValue);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.SimpleValue, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -1373,7 +1376,8 @@ "source": [ "Import.DefineFormat(ImportFormats.Opening, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndPartitionAsync(dataSet, ImportFormats.Opening);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Opening, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", diff --git a/ifrs17/Utils/ImportCalculationMethods.ipynb b/ifrs17/Utils/ImportCalculationMethods.ipynb index 2305de30..1c394e71 100644 --- a/ifrs17/Utils/ImportCalculationMethods.ipynb +++ b/ifrs17/Utils/ImportCalculationMethods.ipynb @@ -307,39 +307,6 @@ "metadata": {}, "execution_count": 0, "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Mandatory Properties by Import Format" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public static bool GetMandatoryItems(string itemName, string importFormat)", - "\n{", - "\n var mandatoryItemsByImportFormat = new Dictionary>()", - "\n {", - "\n {nameof(Args.ReportingNode), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", - "\n ImportFormats.DataNodeState, ImportFormats.DataNode, ImportFormats.DataNodeParameter}.ToHashSet()},", - "\n {nameof(Args.Year), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", - "\n ImportFormats.YieldCurve, ImportFormats.DataNodeState, ImportFormats.DataNodeParameter}.ToHashSet()},", - "\n {nameof(Args.Month), new []{ImportFormats.Cashflow, ImportFormats.Actual, ImportFormats.Opening, ImportFormats.SimpleValue, ", - "\n ImportFormats.YieldCurve, ImportFormats.DataNodeState, ImportFormats.DataNodeParameter}.ToHashSet()}", - "\n };", - "\n", - "\n return mandatoryItemsByImportFormat.TryGetValue(nameof(itemName), out var mandatoryImportFormatSet) ", - "\n ? mandatoryImportFormatSet.Contains(importFormat)", - "\n : false;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] } ] } \ No newline at end of file From c803c5188600b1155edca5bc2776acc6fdffa01a Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 22 Dec 2022 12:21:22 +0100 Subject: [PATCH 44/64] Name property in YieldCurve Implemented --- ifrs17/Import/Importers.ipynb | 8 ++++++-- ifrs17/Utils/EqualityComparers.ipynb | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index cc87385f..5910376b 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -657,18 +657,22 @@ "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", - "\n", + "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Where(x => x.ColumnName == nameof(YieldCurve.Name)).Count() > 0;", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType((dataset, datarow) => {", "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", + "\n var name = hasNameColumn", + "\n ? datarow.Field(nameof(YieldCurve.Name))", + "\n : default(string);", "\n var item = new YieldCurve {", "\n Currency = currency,", "\n Year = args.Year,", "\n Month = args.Month, ", "\n Scenario = args.Scenario,", - "\n Values = values", + "\n Values = values,", + "\n Name = name", "\n };", "\n return item;", "\n }).WithTarget(workspace).ExecuteAsync(); ", diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index 243e73f9..1c38efa8 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -116,7 +116,8 @@ "\n private YieldCurveComparer(){}", "\n", "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => ", - "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Values.SequenceEqual(y.Values, Precision);", + "\n x.Year == y.Year && x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency ", + "\n && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values, Precision);", "\n\t", "\n\tpublic int GetHashCode (YieldCurve x) => 0;", "\n", From af344a8f369a12df83eaccec5144f63557bca54c Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 22 Dec 2022 13:32:21 +0100 Subject: [PATCH 45/64] bug fix, all test green --- ifrs17/Import/Importers.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 5910376b..a7503d48 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -650,7 +650,7 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = GetArgsFromMain(dataSet);", + "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", "\n args.ValidateArgsForPeriod();", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", @@ -893,7 +893,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeState};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -952,7 +952,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeParameter};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -1138,7 +1138,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Cashflow};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", @@ -1236,7 +1236,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Actual, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", @@ -1342,7 +1342,7 @@ "source": [ "Import.DefineFormat(ImportFormats.SimpleValue, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.SimpleValue};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.SimpleValue, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -1380,7 +1380,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Opening, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Opening};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Opening, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", From 45c1b091f2aa508b2fcbba2ce3bc3b2ef41343c3 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 22 Dec 2022 17:10:54 +0100 Subject: [PATCH 46/64] commit to DB only with succeeded import --- ifrs17/Import/Importers.ipynb | 62 ++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index a7503d48..f3bdfa16 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -239,7 +239,7 @@ { "cell_type": "markdown", "source": [ - "## Clean the Database" + "## Clean the Target QuerySource" ], "metadata": {}, "execution_count": 0, @@ -248,10 +248,10 @@ { "cell_type": "code", "source": [ - "async public Task CleanDatabaseAsync (Expression> filter = null) where T : class", + "public static async Task CleanIfrsTargetAsync (this IDataSource dataSource, Expression> filter = null) where T : class", "\n{", - "\n var loadData = await DataSource.Query().Where(filter?? (Expression>)(x => true)).ToListAsync();", - "\n await DataSource.DeleteAsync(loadData);", + "\n var loadData = await dataSource.Query().Where(filter?? (Expression>)(x => true)).ToListAsync();", + "\n await dataSource.DeleteAsync(loadData);", "\n}" ], "metadata": {}, @@ -261,7 +261,7 @@ { "cell_type": "markdown", "source": [ - "## Update the Database" + "## Update the Target QuerySource" ], "metadata": {}, "execution_count": 0, @@ -270,17 +270,17 @@ { "cell_type": "code", "source": [ - "public async Task CommitToDatabase (IWorkspace workspace, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", + "public static async Task CommitToIfrsTarget (this IDataSource dataSource, IDataSource targetSource, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", "\nwhere TData : class, IPartitioned", "\nwhere TPartition : IfrsPartition", "\n{", "\n if(partitionId != new Guid()) {", - "\n await workspace.Partition.SetAsync(partitionId);", - "\n await DataSource.Partition.SetAsync(partitionId);", + "\n await targetSource.Partition.SetAsync(partitionId);", + "\n await dataSource.Partition.SetAsync(partitionId);", "\n }", - "\n if(snapshot) await CleanDatabaseAsync(filter);", - "\n await DataSource.UpdateAsync( await workspace.Query().ToArrayAsync() );", - "\n await DataSource.CommitAsync();", + "\n if(snapshot) await CleanIfrsTargetAsync(targetSource, filter);", + "\n await targetSource.UpdateAsync( await dataSource.Query().ToArrayAsync() );", + "\n await targetSource.CommitAsync();", "\n}" ], "metadata": {}, @@ -488,10 +488,10 @@ { "cell_type": "code", "source": [ - "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, bool saveRawVariables)", + "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, IWorkspace savingWorkspace, bool saveRawVariables)", "\n{", "\n Activity.Start();", - "\n var storage = new ImportStorage(args, DataSource, workspace);", + "\n var storage = new ImportStorage(args, savingWorkspace, workspace);", "\n await storage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -506,14 +506,13 @@ "\n ivs.Where(iv => Math.Abs(iv.Value) < Precision).Intersect(bestEstimateIvs, EqualityComparer.Instance).Select(iv => iv with {Value = 0.0}).ToArray());", "\n }", "\n", - "\n", "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision));", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n await workspace.CommitToIfrsTarget(savingWorkspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n if(saveRawVariables) {", "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Sum(x => Math.Abs(x)) < Precision).ToArrayAsync());", - "\n await CommitToDatabase(workspace, storage.TargetPartition, snapshot : true, ", + "\n await workspace.CommitToIfrsTarget(savingWorkspace, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n }", "\n return Activity.Finish();", @@ -838,10 +837,10 @@ "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodesToWorkspaceAsync(dataSet, workspace);", "\n var partition = (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode));", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", - "\n await CommitToDatabase(workspace, partition);", + "\n await workspace.CommitToIfrsTarget(DataSource, partition);", + "\n await workspace.CommitToIfrsTarget(DataSource, partition);", + "\n await workspace.CommitToIfrsTarget(DataSource, partition);", + "\n await workspace.CommitToIfrsTarget(DataSource, partition);", "\n return log;", "\n});" ], @@ -924,7 +923,7 @@ "Import.DefineFormat(ImportFormats.DataNodeState, async (options, dataSet) => {", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeStateToWorkspaceAsync(dataSet, workspace);", - "\n await CommitToDatabase(workspace, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", + "\n await workspace.CommitToIfrsTarget(DataSource, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", "\n return log;", "\n});" ], @@ -1036,8 +1035,8 @@ "\n Guid partitionId = new Guid();", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeParameterToWorkspaceAsync(dataSet, partitionId, workspace);", - "\n await CommitToDatabase(workspace, partitionId, snapshot: false);", - "\n await CommitToDatabase(workspace, partitionId, snapshot: false); ", + "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot: false);", + "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot: false); ", "\n ", "\n return log;", "\n});" @@ -1149,10 +1148,13 @@ "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", + "\n var savingWorkspace = Workspace.CreateNew();", + "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, args == mainArgs));", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, args == mainArgs));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", + "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", "\n return Activity.Finish().Merge(log); ", "\n});" ], @@ -1247,10 +1249,13 @@ "\n var log = await ParseActualsToWorkspaceAsync(dataSet, mainArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", + "\n var savingWorkspace = Workspace.CreateNew();", + "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", "\n foreach (var args in targetArgs) {", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false)); ", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", + "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", "\n return Activity.Finish().Merge(log);", "\n});" ], @@ -1354,7 +1359,7 @@ "\n ", "\n workspace.Query().Select(v => new {v.DataNode, v.AccidentYear}).Distinct();", "\n ", - "\n await CommitToDatabase(workspace, partitionId, snapshot : true,", + "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot : true,", "\n filter : x => workspace.Query().Select(v => v.DataNode).Distinct().Contains(x.DataNode));", "\n", "\n return Activity.Finish().Merge(parsingLog);", @@ -1390,8 +1395,11 @@ "\n var parsingLog = await ParseSimpleValueToWorkspaceAsync(dataSet, args, partitionId, workspace);", "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog);", "\n", - "\n var calculationLog = await CalculateAndUploadVariablesAsync(args, workspace, false); ", + "\n var savingWorkspace = Workspace.CreateNew();", + "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", + "\n var calculationLog = await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, false); ", "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(calculationLog);", + "\n if (!calculationLog.Errors.Any()) await savingWorkspace.CommitToIfrsTarget(DataSource, partitionId);", "\n return Activity.Finish().Merge(parsingLog).Merge(calculationLog);", "\n});" ], From c79492360c88dce0297676116b3aef773a10ea53 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 22 Dec 2022 17:52:33 +0100 Subject: [PATCH 47/64] yield curve updated --- ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv | 7 +++++++ ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv | 1 + ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv | 3 +-- ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv | 6 ++++++ ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv | 3 +-- ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv | 6 ++++++ 6 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv new file mode 100644 index 00000000..657f3e7e --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv @@ -0,0 +1,7 @@ +@@Main +Year,Month +2019,12 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0,0,0.015,0.02 +XTSHY,0.85,0.85,0.85,0.85 \ No newline at end of file diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv index c97a6549..48e9669d 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv @@ -4,4 +4,5 @@ Year,Month @@YieldCurve Currency,Values0,Values1,Values2,Values3 USD,0.002,0.002,0.002,0.002 +CHF,0.01,0.02,0.025,0.025 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv index c1cd9fb8..266e8682 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv @@ -4,6 +4,5 @@ Year,Month @@YieldCurve Currency,Values0,Values1,Values2,Values3 EUR,0.008685495,0.008685495,0.018498471,0.019966839 -CHF,0.002,0.002,0.002,0.002 USD,0.002,0.002,0.002,0.002 -GBP,0.002,0.002,0.002,0.002 +GBP,0.01,0.015,0.02,0.02 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv new file mode 100644 index 00000000..ef5b7414 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv @@ -0,0 +1,6 @@ +@@Main +Year,Month +2021,12 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0.025,0.025,0.035,0.035 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv index ba2ade3d..5386ae88 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv @@ -3,6 +3,5 @@ Year,Month 2021,3 @@YieldCurve Currency,Values0,Values1,Values2,Values3 -CHF,0.1,0.1,0.1,0.1 USD,0.005,0.005,0.005,0.005 -GBP,0.005,0.005,0.005,0.005 +GBP,0.015,0.02,0.02,0.025 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv new file mode 100644 index 00000000..65e212d4 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv @@ -0,0 +1,6 @@ +@@Main +Year,Month +2021,6 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0.03,0.03,0.035,0.035 From e53cb945a882fde5346eeda699ddba46efb97845 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 23 Dec 2022 11:08:55 +0100 Subject: [PATCH 48/64] new yield curves files created --- ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv | 7 +++++++ ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv | 1 + ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv | 3 +-- ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv | 6 ++++++ ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv | 3 +-- ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv | 6 ++++++ 6 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv create mode 100644 ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv new file mode 100644 index 00000000..657f3e7e --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2019_12.csv @@ -0,0 +1,7 @@ +@@Main +Year,Month +2019,12 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0,0,0.015,0.02 +XTSHY,0.85,0.85,0.85,0.85 \ No newline at end of file diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv index c97a6549..48e9669d 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv @@ -4,4 +4,5 @@ Year,Month @@YieldCurve Currency,Values0,Values1,Values2,Values3 USD,0.002,0.002,0.002,0.002 +CHF,0.01,0.02,0.025,0.025 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv index c1cd9fb8..266e8682 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_3.csv @@ -4,6 +4,5 @@ Year,Month @@YieldCurve Currency,Values0,Values1,Values2,Values3 EUR,0.008685495,0.008685495,0.018498471,0.019966839 -CHF,0.002,0.002,0.002,0.002 USD,0.002,0.002,0.002,0.002 -GBP,0.002,0.002,0.002,0.002 +GBP,0.01,0.015,0.02,0.02 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv new file mode 100644 index 00000000..ef5b7414 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_12.csv @@ -0,0 +1,6 @@ +@@Main +Year,Month +2021,12 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0.025,0.025,0.035,0.035 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv index ba2ade3d..5386ae88 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_3.csv @@ -3,6 +3,5 @@ Year,Month 2021,3 @@YieldCurve Currency,Values0,Values1,Values2,Values3 -CHF,0.1,0.1,0.1,0.1 USD,0.005,0.005,0.005,0.005 -GBP,0.005,0.005,0.005,0.005 +GBP,0.015,0.02,0.02,0.025 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv b/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv new file mode 100644 index 00000000..65e212d4 --- /dev/null +++ b/ifrs17-template/Files/Parameters/YieldCurve_2021_6.csv @@ -0,0 +1,6 @@ +@@Main +Year,Month +2021,6 +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +CHF,0.03,0.03,0.035,0.035 From f2c851781b96c96a533eebd951520c136941cd2d Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 3 Jan 2023 14:40:59 +0100 Subject: [PATCH 49/64] comment resolved --- ifrs17/Import/Importers.ipynb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index a1e065f2..8f235551 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -467,18 +467,18 @@ { "cell_type": "code", "source": [ - "public async Task GetTargetArgsAsync(ImportArgs mainArgs)", + "public async Task GettargetArgsListAsync(ImportArgs mainArgs)", "\n{", "\n var scenarioArgs = await DataSource.Query() ", "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", "\n var isMultipleArg = mainArgs.Scenario == null && scenarioArgs.Any();", - "\n var targetArgs = isMultipleArg", + "\n var targetArgsList = isMultipleArg", "\n ? mainArgs.RepeatOnce().Concat(scenarioArgs)", "\n : mainArgs.RepeatOnce();", "\n", "\n if (isMultipleArg) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", scenarioArgs.Select(x => x.Scenario)));", - "\n return targetArgs.ToArray();", + "\n return targetArgsList.ToArray();", "\n}" ], "metadata": {}, @@ -687,7 +687,7 @@ "\n ", "\n await DataSource.UpdateAsync(newYieldCurves);", "\n await DataSource.CommitAsync();", - "\n var targetArgs = (await DataSource.Query().ToArrayAsync())", + "\n var targetArgsList = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == args.Scenario)", "\n .Select(x => new ImportArgs( x.ReportingNode,", "\n x.Year, ", @@ -696,7 +696,7 @@ "\n x.Scenario,", "\n ImportFormats.Cashflow)).ToArray();", "\n", - "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgs);", + "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgsList);", "\n return Activity.Finish().Merge(importLog);", "\n});" ], @@ -1141,7 +1141,7 @@ "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Cashflow};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", + "\n var targetArgsList = await GettargetArgsListAsync(mainArgs);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -1151,7 +1151,7 @@ "\n", "\n var savingWorkspace = Workspace.CreateNew();", "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", - "\n foreach (var args in targetArgs) {", + "\n foreach (var args in targetArgsList) {", "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, args == mainArgs));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", @@ -1242,7 +1242,7 @@ "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgs = await GetTargetArgsAsync(mainArgs);", + "\n var targetArgsList = await GettargetArgsListAsync(mainArgs);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", @@ -1252,7 +1252,7 @@ "\n", "\n var savingWorkspace = Workspace.CreateNew();", "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", - "\n foreach (var args in targetArgs) {", + "\n foreach (var args in targetArgsList) {", "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", From bb7e6d94917de3995054cbdfc1d884b5a1386161 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 4 Jan 2023 18:28:57 +0100 Subject: [PATCH 50/64] some comments resolved --- .../InitSystemorphRefDataToMemory.ipynb | 5 ++- .../InitSystemorphToDatabase.ipynb | 12 ++++-- ifrs17/Import/Importers.ipynb | 41 +++++++++---------- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb index 052fa1fc..f4c5b6f8 100644 --- a/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphRefDataToMemory.ipynb @@ -154,10 +154,13 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2019_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_6.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", "\nlog" ], "metadata": {}, diff --git a/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb b/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb index c95affec..a8aea982 100644 --- a/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb +++ b/ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb @@ -123,10 +123,14 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithType().WithTarget(DataSource).ExecuteAsync();", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithType().WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithType().WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithType().WithTarget(DataSource).ExecuteAsync());" + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2019_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_6.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 8f235551..9ea1b16c 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -248,7 +248,7 @@ { "cell_type": "code", "source": [ - "public static async Task CleanIfrsTargetAsync (this IDataSource dataSource, Expression> filter = null) where T : class", + "public static async Task CleanAsync (this IDataSource dataSource, Expression> filter = null) where T : class", "\n{", "\n var loadData = await dataSource.Query().Where(filter?? (Expression>)(x => true)).ToListAsync();", "\n await dataSource.DeleteAsync(loadData);", @@ -278,7 +278,7 @@ "\n await targetSource.Partition.SetAsync(partitionId);", "\n await dataSource.Partition.SetAsync(partitionId);", "\n }", - "\n if(snapshot) await CleanIfrsTargetAsync(targetSource, filter);", + "\n if(snapshot) await CleanAsync(targetSource, filter);", "\n await targetSource.UpdateAsync( await dataSource.Query().ToArrayAsync() );", "\n await targetSource.CommitAsync();", "\n}" @@ -655,37 +655,36 @@ "\n", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n var oldYieldCurves = await DataSource.Query().ToArrayAsync();", + "\n", + "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Where(x => x.ColumnName == nameof(YieldCurve.Name)).Count() > 0;", - "\n var importLog = await Import.FromDataSet(dataSet)", - "\n .WithType((dataset, datarow) => {", - "\n var currency = datarow.Field(nameof(YieldCurve.Currency));", - "\n var values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray();", - "\n var name = hasNameColumn", - "\n ? datarow.Field(nameof(YieldCurve.Name))", - "\n : default(string);", - "\n var item = new YieldCurve {", - "\n Currency = currency,", + "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", + "\n var yieldCurve = new YieldCurve {", + "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", "\n Year = args.Year,", "\n Month = args.Month, ", "\n Scenario = args.Scenario,", - "\n Values = values,", - "\n Name = name", + "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", + "\n Name = hasNameColumn", + "\n ? datarow.Field(nameof(YieldCurve.Name))", + "\n : default(string)", "\n };", - "\n return item;", - "\n }).WithTarget(workspace).ExecuteAsync(); ", + "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", + "\n ? null", + "\n : yieldCurve;", + "\n }", + "\n ).WithTarget(workspace).ExecuteAsync(); ", "\n ", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", - "\n var newYieldCurves = await workspace.Query().ToArrayAsync();", - "\n newYieldCurves = newYieldCurves.Except(oldYieldCurves, YieldCurveComparer.Instance()).ToArray();", - "\n if (!newYieldCurves.Any()){", + "\n yieldCurves = await workspace.Query().ToArrayAsync();", + "\n if (!yieldCurves.Any()){", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", "\n return Activity.Finish().Merge(importLog);", "\n }", "\n ", - "\n await DataSource.UpdateAsync(newYieldCurves);", + "\n await DataSource.UpdateAsync(yieldCurves);", "\n await DataSource.CommitAsync();", "\n var targetArgsList = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == args.Scenario)", From 5ef6da90f79b3f602cd33da9eefea89516451e38 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 5 Jan 2023 16:10:04 +0100 Subject: [PATCH 51/64] renames and markdown and use of .Any --- ifrs17/Import/Importers.ipynb | 151 ++++++++++++++++++---------------- 1 file changed, 81 insertions(+), 70 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 9ea1b16c..eb05c826 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -270,17 +270,17 @@ { "cell_type": "code", "source": [ - "public static async Task CommitToIfrsTarget (this IDataSource dataSource, IDataSource targetSource, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", + "public static async Task CommitToAsync (this IDataSource source, IDataSource target, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", "\nwhere TData : class, IPartitioned", "\nwhere TPartition : IfrsPartition", "\n{", "\n if(partitionId != new Guid()) {", - "\n await targetSource.Partition.SetAsync(partitionId);", - "\n await dataSource.Partition.SetAsync(partitionId);", + "\n await target.Partition.SetAsync(partitionId);", + "\n await source.Partition.SetAsync(partitionId);", "\n }", - "\n if(snapshot) await CleanAsync(targetSource, filter);", - "\n await targetSource.UpdateAsync( await dataSource.Query().ToArrayAsync() );", - "\n await targetSource.CommitAsync();", + "\n if(snapshot) await CleanAsync(target, filter);", + "\n await target.UpdateAsync( await source.Query().ToArrayAsync() );", + "\n await target.CommitAsync();", "\n}" ], "metadata": {}, @@ -299,9 +299,11 @@ { "cell_type": "markdown", "source": [ - "## Parser And Validator of Main Tab", + "## Parse the Main Tab", "\n", - "\nThe main table of our custom import formats contains the information which are required to identify the data depending on the ImportFormat. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods." + "\nThe main table of our custom import formats contains the information which are required to identify the data partition depending on the ImportFormat. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods.", + "\n", + "\nGetArgsFromMain performes basic valiadations on the existance of the main tab. Then reads the reporting node, year, month, and scenario and return an ImportArgs with the results. If any of these information a default value is returned and will be validated in the following methods. " ], "metadata": {}, "execution_count": 0, @@ -313,14 +315,14 @@ "public ImportArgs GetArgsFromMain(IDataSet dataSet) {", "\n var mainTab = dataSet.Tables[Main];", "\n if(mainTab == null) ApplicationMessage.Log(Error.NoMainTab);", - "\n if(mainTab.Rows.Count() == 0) ApplicationMessage.Log(Error.IncompleteMainTab);", + "\n if(!mainTab.Rows.Any()) ApplicationMessage.Log(Error.IncompleteMainTab);", "\n if(ApplicationMessage.HasErrors()) return null;", "\n", "\n var main = mainTab.Rows.First();", - "\n var reportingNode = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.ReportingNode)).Count()>0? (string)main[nameof(ReportingNode)] : default(string);", - "\n var scenario = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Scenario)).Count()>0? (string)main[nameof(Scenario)] : default(string);", - "\n var year = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Year)).Count()>0? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", - "\n var month = mainTab.Columns.Where(x => x.ColumnName == nameof(Args.Month)).Count()>0? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", + "\n var reportingNode = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.ReportingNode)) ? (string)main[nameof(ReportingNode)] : default(string);", + "\n var scenario = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Scenario)) ? (string)main[nameof(Scenario)] : default(string);", + "\n var year = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Year)) ? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", + "\n var month = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Month)) ? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", "\n", "\n return new ImportArgs(reportingNode, year, month, default(Periodicity), scenario, default(string));", "\n}" @@ -329,6 +331,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "A validation method which checks year and month. Log errors if any is missing. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -344,9 +355,9 @@ { "cell_type": "markdown", "source": [ - "## Get Args And Set Partition", - "\n ", - "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [PartitionedArgs](../DataModel/DataStructure#partitionedargs) and used in the next methods." + "## Get Args and create Partition", + "\n", + "\nThis is the main method to get Args which reference a specific data partition. All validations are triggered after parsing and if the partition is not already existing in the DataSource it is created. " ], "metadata": {}, "execution_count": 0, @@ -355,7 +366,7 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsAndSetPartitionAsync(IDataSet dataSet)", + "public async Task GetArgsAndCommitPartitionAsync(IDataSet dataSet)", "\n{", "\n var args = GetArgsFromMain(dataSet);", "\n if(ApplicationMessage.HasErrors()) return null;", @@ -467,18 +478,19 @@ { "cell_type": "code", "source": [ - "public async Task GettargetArgsListAsync(ImportArgs mainArgs)", + "public async Task GetAllArgsAsync(ImportArgs primaryArgs)", "\n{", - "\n var scenarioArgs = await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == mainArgs.ReportingNode && x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", - "\n var isMultipleArg = mainArgs.Scenario == null && scenarioArgs.Any();", - "\n var targetArgsList = isMultipleArg", - "\n ? mainArgs.RepeatOnce().Concat(scenarioArgs)", - "\n : mainArgs.RepeatOnce();", + "\n if (primaryArgs.Scenario != null)", + "\n return primaryArgs.RepeatOnce().ToArray();", "\n", - "\n if (isMultipleArg) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", scenarioArgs.Select(x => x.Scenario)));", - "\n return targetArgsList.ToArray();", + "\n var secondaryArgs = await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", + "\n ", + "\n if (secondaryArgs.Any())", + "\n ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", + "\n ", + "\n return primaryArgs.RepeatOnce().Concat(secondaryArgs).ToArray();", "\n}" ], "metadata": {}, @@ -488,10 +500,10 @@ { "cell_type": "code", "source": [ - "public async Task CalculateAndUploadVariablesAsync(ImportArgs args, IWorkspace workspace, IWorkspace savingWorkspace, bool saveRawVariables)", + "public async Task ComputeAsync(ImportArgs args, IWorkspace workspace, IWorkspace workspaceToCompute, bool saveRawVariables)", "\n{", "\n Activity.Start();", - "\n var storage = new ImportStorage(args, savingWorkspace, workspace);", + "\n var storage = new ImportStorage(args, workspaceToCompute, workspace);", "\n await storage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -507,12 +519,12 @@ "\n }", "\n", "\n await workspace.UpdateAsync(ivs.Where(x => storage.DefaultPartition != storage.TargetPartition || Math.Abs(x.Value) >= Precision));", - "\n await workspace.CommitToIfrsTarget(savingWorkspace, storage.TargetPartition, snapshot : true, ", + "\n await workspace.CommitToAsync(workspaceToCompute, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.EstimateTypesByImportFormat[args.ImportFormat].Contains(x.EstimateType) ", "\n && storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n if(saveRawVariables) {", "\n if(args.Scenario == null) await workspace.DeleteAsync(await workspace.Query().Where(rv => rv.Values.Sum(x => Math.Abs(x)) < Precision).ToArrayAsync());", - "\n await workspace.CommitToIfrsTarget(savingWorkspace, storage.TargetPartition, snapshot : true, ", + "\n await workspace.CommitToAsync(workspaceToCompute, storage.TargetPartition, snapshot : true, ", "\n filter : x => storage.DataNodesByImportScope[ImportScope.Primary].Contains(x.DataNode));", "\n }", "\n return Activity.Finish();", @@ -657,7 +669,7 @@ "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", "\n", "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", - "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Where(x => x.ColumnName == nameof(YieldCurve.Name)).Count() > 0;", + "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", "\n var yieldCurve = new YieldCurve {", "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", @@ -686,7 +698,7 @@ "\n ", "\n await DataSource.UpdateAsync(yieldCurves);", "\n await DataSource.CommitAsync();", - "\n var targetArgsList = (await DataSource.Query().ToArrayAsync())", + "\n var secondaryArgs = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == args.Scenario)", "\n .Select(x => new ImportArgs( x.ReportingNode,", "\n x.Year, ", @@ -695,7 +707,6 @@ "\n x.Scenario,", "\n ImportFormats.Cashflow)).ToArray();", "\n", - "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgsList);", "\n return Activity.Finish().Merge(importLog);", "\n});" ], @@ -736,7 +747,7 @@ "\n .DisableInitialization());", "\n ", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet);", + "\n var args = await GetArgsAndCommitPartitionAsync(dataSet);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -837,10 +848,10 @@ "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodesToWorkspaceAsync(dataSet, workspace);", "\n var partition = (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode));", - "\n await workspace.CommitToIfrsTarget(DataSource, partition);", - "\n await workspace.CommitToIfrsTarget(DataSource, partition);", - "\n await workspace.CommitToIfrsTarget(DataSource, partition);", - "\n await workspace.CommitToIfrsTarget(DataSource, partition);", + "\n await workspace.CommitToAsync(DataSource, partition);", + "\n await workspace.CommitToAsync(DataSource, partition);", + "\n await workspace.CommitToAsync(DataSource, partition);", + "\n await workspace.CommitToAsync(DataSource, partition);", "\n return log;", "\n});" ], @@ -892,7 +903,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeState};", + "\n var args = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeState};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -923,7 +934,7 @@ "Import.DefineFormat(ImportFormats.DataNodeState, async (options, dataSet) => {", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeStateToWorkspaceAsync(dataSet, workspace);", - "\n await workspace.CommitToIfrsTarget(DataSource, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", + "\n await workspace.CommitToAsync(DataSource, (Guid)workspace.Partition.GetCurrent(nameof(PartitionByReportingNode)), snapshot: false); ", "\n return log;", "\n});" ], @@ -951,7 +962,7 @@ "\n .DisableInitialization()", "\n .DisableInitialization());", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeParameter};", + "\n var args = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.DataNodeParameter};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var storage = new ParsingStorage(args, DataSource, workspace);", @@ -1035,8 +1046,8 @@ "\n Guid partitionId = new Guid();", "\n var workspace = Workspace.CreateNew();", "\n var log = await UploadDataNodeParameterToWorkspaceAsync(dataSet, partitionId, workspace);", - "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot: false);", - "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot: false); ", + "\n await workspace.CommitToAsync(DataSource, partitionId, snapshot: false);", + "\n await workspace.CommitToAsync(DataSource, partitionId, snapshot: false); ", "\n ", "\n return log;", "\n});" @@ -1073,7 +1084,7 @@ "\n await parsingStorage.InitializeAsync();", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", - "\n var hasAccidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Where(x => x.ColumnName == nameof(RawVariable.AccidentYear)).Count() > 0;", + "\n var hasAccidentYearColumn = dataSet.Tables[ImportFormats.Cashflow].Columns.Any(x => x.ColumnName == nameof(RawVariable.AccidentYear));", "\n var importLog = await Import.FromDataSet(dataSet)", "\n .WithType ( (dataset, datarow) => {", "\n var aocType = datarow.Field(nameof(RawVariable.AocType));", @@ -1137,24 +1148,24 @@ "source": [ "Import.DefineFormat(ImportFormats.Cashflow, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Cashflow};", + "\n var primaryArgs = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Cashflow};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgsList = await GettargetArgsListAsync(mainArgs);", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, mainArgs);", + "\n var allArgs = await GetAllArgsAsync(primaryArgs);", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, primaryArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", "\n var workspace = Workspace.CreateNew();", - "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n var log = await ParseCashflowsToWorkspaceAsync(dataSet, primaryArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", - "\n var savingWorkspace = Workspace.CreateNew();", - "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", - "\n foreach (var args in targetArgsList) {", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, args == mainArgs));", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n foreach (var args in allArgs) {", + "\n log = log.Merge(await ComputeAsync(args, workspace, workspaceToCompute, args == primaryArgs));", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", - "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", + "\n await workspaceToCompute.CommitToTargetAsync(DataSource);", "\n return Activity.Finish().Merge(log); ", "\n});" ], @@ -1238,24 +1249,24 @@ "source": [ "Import.DefineFormat(ImportFormats.Actual, async (options, dataSet) => {", "\n Activity.Start();", - "\n var mainArgs = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Actual};", + "\n var primaryArgs = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var targetArgsList = await GettargetArgsListAsync(mainArgs);", - "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, mainArgs);", + "\n var allArgs = await GetAllArgsAsync(primaryArgs);", + "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, primaryArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", - "\n var log = await ParseActualsToWorkspaceAsync(dataSet, mainArgs, workspace);", + "\n var log = await ParseActualsToWorkspaceAsync(dataSet, primaryArgs, workspace);", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n", - "\n var savingWorkspace = Workspace.CreateNew();", - "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", - "\n foreach (var args in targetArgsList) {", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, false)); ", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n foreach (var args in allArgs) {", + "\n log = log.Merge(await ComputeAsync(args, workspace, workspaceToCompute, false)); ", "\n if(log.Errors.Any()) return Activity.Finish().Merge(log);", "\n }", - "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", + "\n if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", "\n return Activity.Finish().Merge(log);", "\n});" ], @@ -1347,7 +1358,7 @@ "source": [ "Import.DefineFormat(ImportFormats.SimpleValue, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.SimpleValue};", + "\n var args = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.SimpleValue};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.SimpleValue, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -1359,7 +1370,7 @@ "\n ", "\n workspace.Query().Select(v => new {v.DataNode, v.AccidentYear}).Distinct();", "\n ", - "\n await workspace.CommitToIfrsTarget(DataSource, partitionId, snapshot : true,", + "\n await workspace.CommitToAsync(DataSource, partitionId, snapshot : true,", "\n filter : x => workspace.Query().Select(v => v.DataNode).Distinct().Contains(x.DataNode));", "\n", "\n return Activity.Finish().Merge(parsingLog);", @@ -1385,7 +1396,7 @@ "source": [ "Import.DefineFormat(ImportFormats.Opening, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = await GetArgsAndSetPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Opening};", + "\n var args = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Opening};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Opening, args);", "\n if(Activity.HasErrors()) return Activity.Finish();", @@ -1395,11 +1406,11 @@ "\n var parsingLog = await ParseSimpleValueToWorkspaceAsync(dataSet, args, partitionId, workspace);", "\n if(parsingLog.Errors.Any()) return Activity.Finish().Merge(parsingLog);", "\n", - "\n var savingWorkspace = Workspace.CreateNew();", - "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", - "\n var calculationLog = await CalculateAndUploadVariablesAsync(args, workspace, savingWorkspace, false); ", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n var calculationLog = await ComputeAsync(args, workspace, workspaceToCompute, false); ", "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(calculationLog);", - "\n if (!calculationLog.Errors.Any()) await savingWorkspace.CommitToIfrsTarget(DataSource, partitionId);", + "\n await workspaceToCompute.CommitToAsync(DataSource, partitionId);", "\n return Activity.Finish().Merge(parsingLog).Merge(calculationLog);", "\n});" ], From 92f44f7d345ef84bbfb0379f96537be2af7aa020 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 5 Jan 2023 16:34:04 +0100 Subject: [PATCH 52/64] code improvments --- .../Test/ScenarioYieldCurveImportTest.ipynb | 54 ++++---- ifrs17/Import/Importers.ipynb | 123 +++++++++++++----- 2 files changed, 118 insertions(+), 59 deletions(-) diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index d731c0b3..33aea86c 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -42,19 +42,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -77,6 +64,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "DataSource.Query()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -94,15 +90,15 @@ "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", "\n@@Cashflow", - "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", - "\nDT1.1,PR,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", - "\nDT1.1,NIC,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", - "\nDT1.1,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", - "\nDT1.1,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", - "\nDTR1.1,PR,CL,C,,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0", - "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", - "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", - "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" + "\nDataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,BE,CL,C,,100,0,0,100,0,0,100,0,0,100,0,0,0,100,0,0,100,0,0,100,0,0,100,0", + "\nDT1.1,NIC,BE,CL,C,,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25,-25", + "\nDT1.1,,CU,CL,C,,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", + "\nDT1.1,,RA,CL,C,,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", + "\nDTR1.1,PR,BE,CL,C,,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0,50,0,0", + "\nDTR1.1,NIC,BE,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", + "\nDTR1.1,,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", + "\nDTR1.1,,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" ], "metadata": {}, "execution_count": 0, @@ -125,13 +121,13 @@ "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,", "\n@@Actual", - "\nDataNode,AocType,ValueType,AccidentYear,Value", - "\nDT1.1,CF,ACA,,-10", - "\nDT1.1,CF,AEA,,-5", - "\nDT1.1,CF,NIC,,-280", - "\nDT1.1,CF,PR,,400", - "\nDTR1.1,CF,PR,,-200", - "\nDTR1.1,CF,NIC,,140\";" + "\nDataNode,AocType,AmountType,EstimateType,AccidentYear,Value", + "\nDT1.1,CF,ACA,A,,-10", + "\nDT1.1,CF,AEA,A,,-5", + "\nDT1.1,CF,NIC,A,,-280", + "\nDT1.1,CF,PR,A,,400", + "\nDTR1.1,CF,PR,A,,-200", + "\nDTR1.1,CF,NIC,A,,140\";" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 79663aaa..61ccd626 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -358,12 +358,8 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsAndSetPartitionAsync(IDataSet dataSet)", + "public async Task SetPartitionAsync(ImportArgs args, IDataSource targetSource)", "\n{", - "\n var args = GetArgsFromMain(dataSet);", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n if(args.ReportingNode == default(string)) { ApplicationMessage.Log(Error.ReportingNodeInMainNotFound); return null; }", - "\n", "\n switch(typeof(IPartition).Name) {", "\n case nameof(PartitionByReportingNode) : {", "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", @@ -388,7 +384,47 @@ "\n }", "\n }", "\n ", - "\n await DataSource.CommitAsync();", + "\n await targetSource.CommitAsync();", + "\n return null;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task SetPartitionsAsync(Args args, IDataSource targetSource)", + "\n{ ", + "\n foreach( var reportingNode in (await targetSource.Query().Select(x => x.ReportingNode).ToArrayAsync())) {", + "\n var importArgs = new ImportArgs (reportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, default(string));", + "\n if(args.Scenario != null) {", + "\n await SetPartitionAsync(importArgs, targetSource);", + "\n await SetPartitionAsync(importArgs, targetSource);", + "\n await SetPartitionAsync(importArgs with {Scenario = null}, targetSource);", + "\n await SetPartitionAsync(importArgs with {Scenario = null}, targetSource);", + "\n }", + "\n else {", + "\n await SetPartitionAsync(importArgs, targetSource);", + "\n await SetPartitionAsync(importArgs, targetSource);", + "\n }", + "\n }", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task GetArgsAndSetPartitionAsync(IDataSet dataSet)", + "\n{", + "\n var args = GetArgsFromMain(dataSet);", + "\n if(ApplicationMessage.HasErrors()) return null;", + "\n if(args.ReportingNode == default(string)) { ApplicationMessage.Log(Error.ReportingNodeInMainNotFound); return null; }", + "\n await SetPartitionAsync(args, DataSource);", "\n return args;", "\n}" ], @@ -650,38 +686,67 @@ { "cell_type": "code", "source": [ - "public async Task CalculationYieldCurvesAsync(Args mainArgs)", + "public async Task OptimizeWorkSpacesAsync(ImportArgs args, Guid partition, IWorkspace workspace)", + "\n{ ", + "\n Activity.Start();", + "\n var updatedCurrencies = (await workspace.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", + "\n var activeDataNodes = await workspace.Query()", + "\n .Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", + "\n x.Scenario == args.Scenario && x.Partition == partition)", + "\n .Select(x => x.DataNode).ToArrayAsync();", + "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", + "\n .Select(x => x.SystemName).ToArrayAsync();", + "\n // Can we have different datanodes with the same name in different partitions?", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", + "\n ", + "\n // Can we have datanodes with different currency linked together by InterDataNodeParameter?", + "\n return Activity.Finish();", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task CalculationYieldCurvesAsync(Args args)", "\n{ ", "\n Activity.Start();", - "\n var isScenario = mainArgs.Scenario == null;", - "\n var scenarioYieldCurve = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario != null)", + "\n var isScenarioYieldCurve = args.Scenario != null;", + "\n await SetPartitionsAsync(args, DataSource);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", "\n .Select(x => x.Scenario).ToHashSet();", "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", "\n // = all", - "\n var targetPartitions = isScenario", + "\n var targetPartitions = isScenarioYieldCurve", "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && !scenarioYieldCurve.Contains(x.Scenario))", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == mainArgs.Year && x.Month == mainArgs.Month && x.Scenario == null);", - "\n", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null);", + "\n var updatedCurrencies = (await DataSource.Query().ToArrayAsync()).Select(x => x.Currency);", + "\n ", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n", + "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n ", + "\n var savingWorkspace = Workspace.CreateNew();", + "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", + "\n ", "\n var log = Activity.Finish();", - "\n foreach(var pt in targetPartitions)", - "\n {", - "\n var targetScenario = isScenario ? pt.Scenario : mainArgs.Scenario;", - "\n var args = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), targetScenario, ImportFormats.Cashflow);", - "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", - "\n Year = args.Year,", - "\n Month = args.Month,", - "\n ReportingNode = args.ReportingNode, ", - "\n Scenario = args.Scenario } } );", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(args, workspace, false));", + "\n foreach(var pt in targetPartitions) {", + "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", + "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace));", + "\n if(log.Errors.Any()) return log;", + "\n log = log.Merge(await CalculateAndUploadVariablesAsync(importArgs, workspace, savingWorkspace, false));", "\n if(log.Errors.Any()) return log;", "\n }", + "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", "\n return log;", "\n}" ], @@ -699,7 +764,7 @@ "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", + "\n workspace.Initialize(x => x.FromSource(DataSource));", "\n", "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Where(x => x.ColumnName == nameof(YieldCurve.Name)).Count() > 0;", @@ -731,10 +796,8 @@ "\n ", "\n await DataSource.UpdateAsync(yieldCurves);", "\n await DataSource.CommitAsync();", - "\n var targetArgsList = (await DataSource.Query().ToArrayAsync())", "\n ", "\n var calculationLog = await CalculationYieldCurvesAsync(args);", - "\n //var calculationLog = await CalculationYieldCurvesAsync(targetArgsList);", "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", "\n});" ], From d235b7785eae4881ba86ce76f47614b931419294 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 6 Jan 2023 14:26:42 +0100 Subject: [PATCH 53/64] test debug --- .../Test/ScenarioYieldCurveImportTest.ipynb | 146 ++++++++++++++++-- ifrs17-template/Test/scenarioYieldCurve.csv | 9 ++ ifrs17/Import/Importers.ipynb | 25 ++- 3 files changed, 151 insertions(+), 29 deletions(-) create mode 100644 ifrs17-template/Test/scenarioYieldCurve.csv diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 33aea86c..c08486b1 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -18,7 +18,7 @@ { "cell_type": "markdown", "source": [ - "

Scenario Yiled Curve Import Test

" + "

Scenario Yield Curve Import Test

" ], "metadata": {}, "execution_count": 0, @@ -67,7 +67,14 @@ { "cell_type": "code", "source": [ - "DataSource.Query()" + "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2019_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_6.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", + "\nlog" ], "metadata": {}, "execution_count": 0, @@ -133,6 +140,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(actualsBestEstimateInit).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -145,7 +161,105 @@ { "cell_type": "code", "source": [ - "await Import.FromString(actualsBestEstimateInit).WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "var file = \"scenarioYieldCurve.csv\";", + "\nvar extension = System.IO.Path.GetExtension(file);", + "\n", + "\nvar stream = await Project.FileStorage.ReadAsync(file);", + "\n", + "\nvar dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", + "\n Activity.Start();", + "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", + "\n args.ValidateArgsForPeriod();", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n", + "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", + "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", + "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", + "\n var yieldCurve = new YieldCurve {", + "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", + "\n Year = args.Year,", + "\n Month = args.Month, ", + "\n Scenario = args.Scenario,", + "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", + "\n Name = hasNameColumn", + "\n ? datarow.Field(nameof(YieldCurve.Name))", + "\n : default(string)", + "\n };", + "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", + "\n ? null", + "\n : yieldCurve;", + "\n }", + "\n ).WithTarget(workspace).ExecuteAsync(); ", + "\n ", + "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", + "\n ", + "\n yieldCurves = await workspace.Query().ToArrayAsync();", + "\n if (!yieldCurves.Any()){", + "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", + "\n return Activity.Finish().Merge(importLog);", + "\n }", + "\n ", + "\n await DataSource.UpdateAsync(yieldCurves);", + "\n await DataSource.CommitAsync();", + "\n ", + "\n //var calculationLog = await CalculationYieldCurvesAsync(args);", + "\n var isScenarioYieldCurve = args.Scenario != null;", + "\n await SetPartitionsAsync(args, DataSource);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => x.Scenario).ToHashSet();", + "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", + "\n // = all", + "\n var targetPartitions = isScenarioYieldCurve", + "\n ? (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", + "\n : (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", + "\n .OrderByDescending(x => x.Scenario);", + "\n", + "\n var workspace1 = Workspace.CreateNew();", + "\n workspace1.Initialize(x => x.FromSource(DataSource));", + "\n ", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n //var log = Activity.Finish();", + "\n //foreach(var pt in targetPartitions) {", + "\n var pt = (targetPartitions.ToArray())[0];", + "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", + "\n //log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace1));", + "\n //if(log.Errors.Any()) return log;", + "\n var updatedCurrencies = (await workspace1.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", + "\n /*var activeDataNodes = await workspace1.Query()", + "\n .Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", + "\n x.Scenario == args.Scenario && x.Partition == pt.Id)", + "\n .Select(x => x.DataNode).ToArrayAsync();", + "\n var dataNodesToUpdate = await workspace1.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", + "\n .Select(x => x.SystemName).ToArrayAsync();", + "\n // Can we have different datanodes with the same name in different partitions?", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", + "\n log = log.Merge(await ComputeAsync(importArgs, workspace1, workspaceToCompute, false));", + "\n if(log.Errors.Any()) return log;*/", + "\n //}", + "\n //if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", + "\n //return Activity.Finish().Merge(importLog);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "updatedCurrencies" ], "metadata": {}, "execution_count": 0, @@ -202,6 +316,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -251,15 +374,11 @@ "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,SRUP1.0pct", "\n@@Cashflow", - "\nDataNode,AmountType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", - "\nDT1.1,PR,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", - "\nDT1.1,NIC,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", - "\nDT1.1,CU,CL,C,,-11,-11,-11,-11,-11,-11,-13,-11,-11,-11,-11,-11,-11,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-3", - "\nDT1.1,RA,CL,C,,-5.0,-2.5,-2.5,-2.5,-2.5,-2.7,-2.5,-2.4,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5,-2.5", - "\nDTR1.1,PR,CL,C,,58,0,0,56,0,0,54,0,0,50,0,8,50,0,0,50,0,0,50,0,0,50,0,0", - "\nDTR1.1,NIC,CL,C,,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5,12.5", - "\nDTR1.1,CU,CL,C,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5", - "\nDTR1.1,RA,CL,C,,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25\";" + "\nDataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", + "\nDT1.1,PR,BE,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", + "\nDT1.1,NIC,BE,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", + "\nDT1.1,,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-53.5,-52.5,-31.3", + "\nDT1.1,,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" ], "metadata": {}, "execution_count": 0, @@ -317,7 +436,8 @@ "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", "\nvar ivsBestEstimateYieldCurve = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = (ivsBestEstimateYieldCurve).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" + "\nvar diffs = (ivsBestEstimateYieldCurve).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", + "\ndiffs.ToArray().Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/scenarioYieldCurve.csv b/ifrs17-template/Test/scenarioYieldCurve.csv new file mode 100644 index 00000000..27c9f239 --- /dev/null +++ b/ifrs17-template/Test/scenarioYieldCurve.csv @@ -0,0 +1,9 @@ +@@Main +Year,Month,Scenario +2020,12,YCUP1.0pct +@@YieldCurve +Currency,Values0,Values1,Values2,Values3 +EUR,0.108685495,0.108685495,0.118498471,0.119966839 +CHF,0.102,0.102,0.102,0.102 +USD,0.102,0.102,0.102,0.102 +GBP,0.102,0.102,0.102,0.102 \ No newline at end of file diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 4e6c958a..c2ed6ef1 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -135,13 +135,8 @@ "\n ImportFormats.Opening => aocConfigurationByAocStep.Where(x => x.InputSource.Contains(InputSource.Opening) && x.DataType == DataType.Optional).GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", "\n ImportFormats.SimpleValue => aocConfigurationByAocStep.GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).Concat((await dataSource.Query().ToArrayAsync())", "\n .Select(vt => new AocStep(vt.SystemName,null))).ToHashSet(),", - "\n ImportFormats.YieldCurve => aocConfigurationByAocStep.Where(x => (x.InputSource.Contains(InputSource.Cashflow) || x.InputSource.Contains(InputSource.Actual) )&&", - "\n !new DataType[]{DataType.Calculated, DataType.CalculatedTelescopic}.Contains(x.DataType) ) // what's the meaning of that?", - "\n .GroupBy(x => new AocStep(x.AocType, x.Novelty), (k,v) => k).ToHashSet(),", - "\n _ => Enumerable.Empty().ToHashSet(),", + "\n _ => Enumerable.Empty().ToHashSet(),", "\n };", - "\n ", - "\n //DataNodes", "\n DataNodeDataBySystemName = args.ImportFormat == ImportFormats.Opening ", "\n ? (await LoadDataNodesAsync(dataSource, args)).Where(kvp => kvp.Value.Year == args.Year).ToDictionary(kvp => kvp.Key, kvp => kvp.Value)", "\n : await LoadDataNodesAsync(dataSource, args);", @@ -430,7 +425,7 @@ { "cell_type": "code", "source": [ - "public async Task GetArgsAndSetPartitionAsync(IDataSet dataSet)", + "public async Task GetArgsAndCommitPartitionAsync(IDataSet dataSet)", "\n{", "\n var args = GetArgsFromMain(dataSet);", "\n if(ApplicationMessage.HasErrors()) return null;", @@ -739,26 +734,25 @@ "\n // = all", "\n var targetPartitions = isScenarioYieldCurve", "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null);", - "\n var updatedCurrencies = (await DataSource.Query().ToArrayAsync()).Select(x => x.Currency);", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario));", "\n ", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource));", "\n ", - "\n var savingWorkspace = Workspace.CreateNew();", - "\n savingWorkspace.Initialize(x => x.FromSource(DataSource));", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", "\n ", "\n var log = Activity.Finish();", "\n foreach(var pt in targetPartitions) {", "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace));", "\n if(log.Errors.Any()) return log;", - "\n log = log.Merge(await CalculateAndUploadVariablesAsync(importArgs, workspace, savingWorkspace, false));", + "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", "\n if(log.Errors.Any()) return log;", "\n }", - "\n if (!log.Errors.Any()) await savingWorkspace.CommitToTargetAsync(DataSource);", + "\n if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", "\n return log;", "\n}" ], @@ -808,9 +802,8 @@ "\n ", "\n await DataSource.UpdateAsync(yieldCurves);", "\n await DataSource.CommitAsync();", - "\n var secondaryArgs = (await DataSource.Query().ToArrayAsync())", "\n ", - "\n var calculationLog = await CalculationYieldCurvesAsync(args);", + "\n var calculationLog = await CalculationYieldCurvesAsync(args, );", "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", "\n});" ], From cba75a414c0ad11da68c526f07da511081ea9bc3 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 11 Jan 2023 15:56:44 +0100 Subject: [PATCH 54/64] cleanup merge errors --- ifrs17/Import/Importers.ipynb | 134 +++++++++++++++------------------- 1 file changed, 59 insertions(+), 75 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index d5e9b75c..ec7c8617 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -355,41 +355,9 @@ { "cell_type": "markdown", "source": [ - "## Get Args and commit Partition", - "\n", - "\nThis is the main method to get Args which reference a specific data partition. All validations are triggered after parsing and if the partition is not already existing in the DataSource it is created and committed. " - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task GetArgsAndCommitPartitionAsync(IDataSet dataSet)", - "\n{", - "\n var args = GetArgsFromMain(dataSet);", - "metadata": {}, - "\n if(args.ReportingNode == default(string)) { ApplicationMessage.Log(Error.ReportingNodeInMainNotFound); return null; }", - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public static void ValidateArgsForPeriod(this ImportArgs args) {", - "\n if(args.Year == default(int)) ApplicationMessage.Log(Error.YearInMainNotFound);", - "\n if(args.Month == default(int)) ApplicationMessage.Log(Error.MonthInMainNotFound);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Get Args and create Partition", + "## Create Partition", "\n", + "\nThese are the methods used to create the partition if not already existing in the DataSource. " ], "metadata": {}, "execution_count": 0, @@ -456,6 +424,17 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Get Args and create Partition", + "\n", + "\nThis is the main method to get Args which reference a specific data partition. All validations are triggered after parsing and if the partition is not already existing in the DataSource it is created. " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -542,6 +521,7 @@ "\nThe following methods are used in the different importers to compute the [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", "\n", "\nGetAllArgsAsync retrieves the partitions or Args that require computation. They are the union of the primary args (the one read from the main tab of the imported file) with the secondary args (senarios which depends on the best estimate data).", + "\n", "\nComputeAsync computes the IfrsVariables for a given partition (identified by its ImportArgs) and stores the results in a disposable workspace. This then serves as DataSource in the calculation of the secondary partitions (identified by the secondary args)." ], "metadata": {}, @@ -736,56 +716,60 @@ { "cell_type": "code", "source": [ - "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", + "public async Task OptimizeWorkSpacesAsync(ImportArgs args, Guid partition, IWorkspace workspace)", + "\n{ ", "\n Activity.Start();", - "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", - "\n args.ValidateArgsForPeriod();", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", - "\n", - "\n var committedYieldCurves = await DataSource.Query().ToArrayAsync();", - "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", - "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", - "\n var yieldCurve = new YieldCurve {", - "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", - "\n Year = args.Year,", - "\n Month = args.Month, ", - "\n Scenario = args.Scenario,", - "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", - "\n Name = hasNameColumn", - "\n ? datarow.Field(nameof(YieldCurve.Name))", - "\n : default(string)", - "\n };", - "\n return committedYieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", - "\n ? null", - "\n : yieldCurve;", - "\n }", - "\n ).WithTarget(workspace).ExecuteAsync(); ", + "\n var updatedCurrencies = (await workspace.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", + "\n var activeDataNodes = await workspace.Query()", + "\n .Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", + "\n x.Scenario == args.Scenario && x.Partition == partition)", + "\n .Select(x => x.DataNode).ToArrayAsync();", + "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", + "\n .Select(x => x.SystemName).ToArrayAsync();", + "\n // Can we have different datanodes with the same name in different partitions?", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", "\n ", - "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n ", - "\n var toCommitYieldCurves = await workspace.Query().ToArrayAsync();", - "\n if (!toCommitYieldCurves.Any()){", - "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(importLog);", - "\n }", - "\n ", - "\n await DataSource.UpdateAsync(toCommitYieldCurves);", - "\n await DataSource.CommitAsync();", - "\n ", - "\n return Activity.Finish().Merge(importLog);", - "\n});" + "\n // Can we have datanodes with different currency linked together by InterDataNodeParameter? yes", + "\n return Activity.Finish();", + "\n}" ], "metadata": {}, "execution_count": 0, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ + "public async Task CalculationYieldCurvesAsync(Args args)", + "\n{ ", + "\n Activity.Start();", + "\n var isScenarioYieldCurve = args.Scenario != null;", + "\n await SetPartitionsAsync(args, DataSource);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => x.Scenario).ToHashSet();", + "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", + "\n // = all", + "\n var targetPartitions = isScenarioYieldCurve", + "\n ? (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", + "\n : (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario));", + "\n ", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n ", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n ", + "\n var log = Activity.Finish();", + "\n foreach(var pt in targetPartitions) {", + "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace));", "\n if(log.Errors.Any()) return log;", "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", From 4f626a227f5700c2183f31d65b9b98f450445334 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 12 Jan 2023 08:33:40 +0100 Subject: [PATCH 55/64] code cleanup --- .../Test/ScenarioYieldCurveImportTest.ipynb | 79 ++----------------- ifrs17/Import/Importers.ipynb | 37 +++++---- 2 files changed, 26 insertions(+), 90 deletions(-) diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index c08486b1..5eae0392 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -161,19 +161,19 @@ { "cell_type": "code", "source": [ - "var file = \"scenarioYieldCurve.csv\";", + "/*var file = \"scenarioYieldCurve.csv\";", "\nvar extension = System.IO.Path.GetExtension(file);", "\n", "\nvar stream = await Project.FileStorage.ReadAsync(file);", "\n", "\nvar dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", - "\n Activity.Start();", + "\n Activity.Start();", "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", "\n args.ValidateArgsForPeriod();", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization());", "\n", "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", @@ -196,70 +196,17 @@ "\n ).WithTarget(workspace).ExecuteAsync(); ", "\n ", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n ", "\n yieldCurves = await workspace.Query().ToArrayAsync();", "\n if (!yieldCurves.Any()){", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", "\n return Activity.Finish().Merge(importLog);", "\n }", "\n ", - "\n await DataSource.UpdateAsync(yieldCurves);", - "\n await DataSource.CommitAsync();", - "\n ", - "\n //var calculationLog = await CalculationYieldCurvesAsync(args);", - "\n var isScenarioYieldCurve = args.Scenario != null;", - "\n await SetPartitionsAsync(args, DataSource);", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", - "\n .Select(x => x.Scenario).ToHashSet();", - "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", - "\n // = all", - "\n var targetPartitions = isScenarioYieldCurve", - "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", - "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", - "\n .OrderByDescending(x => x.Scenario);", - "\n", - "\n var workspace1 = Workspace.CreateNew();", - "\n workspace1.Initialize(x => x.FromSource(DataSource));", - "\n ", - "\n var workspaceToCompute = Workspace.CreateNew();", - "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", - "\n //var log = Activity.Finish();", - "\n //foreach(var pt in targetPartitions) {", - "\n var pt = (targetPartitions.ToArray())[0];", - "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", - "\n //log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace1));", - "\n //if(log.Errors.Any()) return log;", - "\n var updatedCurrencies = (await workspace1.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", - "\n /*var activeDataNodes = await workspace1.Query()", - "\n .Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", - "\n x.Scenario == args.Scenario && x.Partition == pt.Id)", - "\n .Select(x => x.DataNode).ToArrayAsync();", - "\n var dataNodesToUpdate = await workspace1.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", - "\n .Select(x => x.SystemName).ToArrayAsync();", - "\n // Can we have different datanodes with the same name in different partitions?", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", - "\n log = log.Merge(await ComputeAsync(importArgs, workspace1, workspaceToCompute, false));", - "\n if(log.Errors.Any()) return log;*/", - "\n //}", - "\n //if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", - "\n //return Activity.Finish().Merge(importLog);" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "updatedCurrencies" + "\n var calculationLog = await CalculationYieldCurvesAsync(args, workspace);", + "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", + "\n //await DataSource.UpdateAsync(yieldCurves);", + "\n //await DataSource.CommitAsync();", + "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);*/" ], "metadata": {}, "execution_count": 0, @@ -286,7 +233,6 @@ "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", "\nCHF,0.102,0.102,0.102,0.102", "\nUSD,0.102,0.102,0.102,0.102", - "\nGBP,0.102,0.102,0.102,0.102", "\n\";" ], "metadata": {}, @@ -316,15 +262,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index ec7c8617..e9f5a238 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -716,14 +716,14 @@ { "cell_type": "code", "source": [ - "public async Task OptimizeWorkSpacesAsync(ImportArgs args, Guid partition, IWorkspace workspace)", + "public async Task OptimizeWorkSpacesAsync(ImportArgs args, Guid partition, IEnumerable updatedCurrencies, IWorkspace workspace)", "\n{ ", "\n Activity.Start();", - "\n var updatedCurrencies = (await workspace.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", - "\n var activeDataNodes = await workspace.Query()", - "\n .Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", - "\n x.Scenario == args.Scenario && x.Partition == partition)", - "\n .Select(x => x.DataNode).ToArrayAsync();", + "\n var targetPartitionByRn = (await workspace.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).Single().Id;", + "\n //var updatedCurrencies = (await workspace.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", + "\n var activeDataNodes = (await workspace.Query().Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", + "\n x.Scenario == args.Scenario && x.Partition == targetPartitionByRn).ToArrayAsync())", + "\n .Select(x => x.DataNode);", "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", "\n .Select(x => x.SystemName).ToArrayAsync();", "\n // Can we have different datanodes with the same name in different partitions?", @@ -743,7 +743,7 @@ { "cell_type": "code", "source": [ - "public async Task CalculationYieldCurvesAsync(Args args)", + "public async Task CalculationYieldCurvesAsync(Args args, IEnumerable updatedCurrencies, IWorkspace workspace)", "\n{ ", "\n Activity.Start();", "\n var isScenarioYieldCurve = args.Scenario != null;", @@ -752,25 +752,23 @@ "\n", "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", - "\n .Select(x => x.Scenario).ToHashSet();", + "\n .Select(x => x.Scenario);", "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", "\n // = all", "\n var targetPartitions = isScenarioYieldCurve", "\n ? (await DataSource.Query().ToArrayAsync())", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario));", - "\n ", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource));", - "\n ", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", + "\n .OrderByDescending(x => x.Scenario);", + "\n", "\n var workspaceToCompute = Workspace.CreateNew();", "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", "\n ", "\n var log = Activity.Finish();", "\n foreach(var pt in targetPartitions) {", - "\n var importArgs = new ImportArgs(pt.ReportingNode, pt.Year, pt.Month, default(Periodicity), isScenarioYieldCurve ? pt.Scenario : args.Scenario, ImportFormats.Cashflow);", - "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, workspace));", + "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), isScenarioYieldCurve ? null : args.Scenario, ImportFormats.Cashflow);", + "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, updatedCurrencies, workspace));", "\n if(log.Errors.Any()) return log;", "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", "\n if(log.Errors.Any()) return log;", @@ -793,10 +791,11 @@ "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization());", "\n", "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", + "\n // possible checks: duplications on lines in the yield curve input", "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", "\n var yieldCurve = new YieldCurve {", "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", @@ -822,11 +821,11 @@ "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", "\n return Activity.Finish().Merge(importLog);", "\n }", - "\n ", + "\n var updatedCurrencies = yieldCurves.Select(x => x.Currency).Distinct();", + "\n var calculationLog = await CalculationYieldCurvesAsync(args, updatedCurrencies, workspace);", + "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", "\n await DataSource.UpdateAsync(yieldCurves);", "\n await DataSource.CommitAsync();", - "\n ", - "\n var calculationLog = await CalculationYieldCurvesAsync(args, );", "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", "\n});" ], From 0bbd7689fed0fa24890be7975085344f73463f79 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 12 Jan 2023 18:36:28 +0100 Subject: [PATCH 56/64] typo fix, test and importer improved --- .../Files/Parameters/YieldCurve_2020_1.csv | 2 +- .../Files/Parameters/YieldCurve_2020_12.csv | 2 +- .../Test/ScenarioYieldCurveImportTest.ipynb | 227 +++++++++++++----- ifrs17/Constants/Validations.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 8 +- ifrs17/Utils/Queries.ipynb | 2 +- 6 files changed, 175 insertions(+), 68 deletions(-) diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv index c94e347e..c97a6549 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_1.csv @@ -1,6 +1,6 @@ @@Main Year,Month -2020,12 +2020,1 @@YieldCurve Currency,Values0,Values1,Values2,Values3 USD,0.002,0.002,0.002,0.002 diff --git a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv index 48e9669d..b6fcb54c 100644 --- a/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv +++ b/ifrs17-template/Files/Parameters/YieldCurve_2020_12.csv @@ -1,6 +1,6 @@ @@Main Year,Month -2020,1 +2020,12 @@YieldCurve Currency,Values0,Values1,Values2,Values3 USD,0.002,0.002,0.002,0.002 diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 5eae0392..8fa14d85 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -42,6 +42,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Setting Constants" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -158,60 +167,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "/*var file = \"scenarioYieldCurve.csv\";", - "\nvar extension = System.IO.Path.GetExtension(file);", - "\n", - "\nvar stream = await Project.FileStorage.ReadAsync(file);", - "\n", - "\nvar dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", - "\n Activity.Start();", - "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", - "\n args.ValidateArgsForPeriod();", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization());", - "\n", - "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", - "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", - "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", - "\n var yieldCurve = new YieldCurve {", - "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", - "\n Year = args.Year,", - "\n Month = args.Month, ", - "\n Scenario = args.Scenario,", - "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", - "\n Name = hasNameColumn", - "\n ? datarow.Field(nameof(YieldCurve.Name))", - "\n : default(string)", - "\n };", - "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", - "\n ? null", - "\n : yieldCurve;", - "\n }", - "\n ).WithTarget(workspace).ExecuteAsync(); ", - "\n ", - "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n yieldCurves = await workspace.Query().ToArrayAsync();", - "\n if (!yieldCurves.Any()){", - "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(importLog);", - "\n }", - "\n ", - "\n var calculationLog = await CalculationYieldCurvesAsync(args, workspace);", - "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", - "\n //await DataSource.UpdateAsync(yieldCurves);", - "\n //await DataSource.CommitAsync();", - "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);*/" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -297,7 +252,9 @@ { "cell_type": "markdown", "source": [ - "# Scenario Transactional Data Import" + "# Multiple Scenario Test ", + "\n", + "\nIn this example we imported a new Scenario, called SRUP1.0pct, to check how the importer treats different types of Scenarios." ], "metadata": {}, "execution_count": 0, @@ -314,8 +271,8 @@ "\nDataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,BE,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", "\nDT1.1,NIC,BE,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", - "\nDT1.1,,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-53.5,-52.5,-31.3", - "\nDT1.1,,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" + "\nDT1.1,,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";", + "\n//DT1.1,,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-53.5,-52.5,-31.3" ], "metadata": {}, "execution_count": 0, @@ -380,13 +337,152 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var file = \"newbestestimateYieldCurve.csv\";", + "\nvar extension = System.IO.Path.GetExtension(file);", + "\n", + "\nvar stream = await Project.FileStorage.ReadAsync(file);", + "\n", + "\nvar dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", + "\n Activity.Start();", + "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", + "\n args.ValidateArgsForPeriod();", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var workspace = Workspace.CreateNew();", + "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n", + "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", + "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", + "\n // possible checks: duplications on lines in the yield curve input", + "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", + "\n var yieldCurve = new YieldCurve {", + "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", + "\n Year = args.Year,", + "\n Month = args.Month, ", + "\n Scenario = args.Scenario,", + "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", + "\n Name = hasNameColumn", + "\n ? datarow.Field(nameof(YieldCurve.Name))", + "\n : default(string)", + "\n };", + "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", + "\n ? null", + "\n : yieldCurve;", + "\n }", + "\n ).WithTarget(workspace).ExecuteAsync(); ", + "\n ", + "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", + "\n ", + "\n yieldCurves = await workspace.Query().ToArrayAsync();", + "\n if (!yieldCurves.Any()){", + "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", + "\n return Activity.Finish().Merge(importLog);", + "\n }", + "\n var updatedCurrencies = yieldCurves.Select(x => x.Currency).Distinct();", + "\n //var calculationLog = await CalculationYieldCurvesAsync(args, updatedCurrencies, workspace);", + "\n //if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", + "\n var isScenarioYieldCurve = args.Scenario != null;", + "\n await SetPartitionsAsync(args, DataSource);", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", + "\n", + "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => x.Scenario).Distinct();", + "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", + "\n // = all", + "\n var targetPartitions = isScenarioYieldCurve", + "\n ? (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", + "\n : (await DataSource.Query().ToArrayAsync())", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", + "\n .OrderBy(x => x.Scenario);", + "\n", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", + "\n ", + "\n var log = Activity.Finish();", + "\n //foreach(var pt in targetPartitions) {", + "\n var pt = (targetPartitions.ToArray())[1];", + "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow);", + "\n //log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, updatedCurrencies, workspace));", + "\n //if(log.Errors.Any()) return log;", + "\n ", + "\n var targetPartitionByRn = (await workspace.Query().Where(p => p.ReportingNode == importArgs.ReportingNode).ToArrayAsync()).Single().Id;", + "\n await workspace.Partition.SetAsync(targetPartitionByRn);", + "\n await workspace.Partition.SetAsync(pt.Id);", + "\n var activeDataNodes = (await workspace.Query().Where(x => x.State == State.Active && x.Year == importArgs.Year && x.Month == importArgs.Month && ", + "\n x.Scenario == importArgs.Scenario && x.Partition == targetPartitionByRn).ToArrayAsync())", + "\n .Select(x => x.DataNode);", + "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", + "\n .Select(x => x.SystemName).ToArrayAsync();", + "\n // Can we have different datanodes with the same name in different partitions?", + "\n await workspace.Partition.SetAsync(pt.Id);", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", + "\n await workspace.DeleteAsync(", + "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", + "\n", + "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", + "\n if(log.Errors.Any()) return log;", + "\n //}", + "\n if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", + "\n //await DataSource.UpdateAsync(yieldCurves);", + "\n //await DataSource.CommitAsync();", + "\n //return Activity.Finish().Merge(importLog).Merge(calculationLog);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(pt.Id);", + "\n(await workspaceToCompute.Query().ToArrayAsync()).Except(await DataSource.Query().ToArrayAsync(), IfrsVariableComparer.Instance())", + "\n//(await workspaceToCompute.Query().ToArrayAsync())" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "(await DataSource.Query().ToArrayAsync()).Take(5)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsScenarioTransactionalData);", "\nvar ivsScenarioTransactionalDataRecalculation = await DataSource.Query().ToArrayAsync();", "\nvar diffs = ivsScenarioTransactionalDataRecalculation.Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" + "\n//diffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs" ], "metadata": {}, "execution_count": 0, @@ -396,9 +492,18 @@ "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", - "\nvar ivsScenarioTransactionalDataRecalculation = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioTransactionalDataRecalculation.Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" + "\nvar ivsScenarioYieldCurveDataRecalculation = await DataSource.Query().ToArrayAsync();", + "\nvar diffs = ivsScenarioYieldCurveDataRecalculation.Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());", + "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index bc958dd4..44cb9dba 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -157,7 +157,7 @@ "\n (Error.CreditDefaultRateNotFound , 1) => $\"Credit Default Rate not found for rating {s[0]}.\",", "\n (Error.MissingPremiumAllocation , 1) => $\"Premium Allocation Rate not found for Group of Contract {s[0]}.\", // TODO: this is now a warning to be produced by a validation in the importers (default is 1)", "\n (Error.ReinsuranceCoverage , 1) => $\"Reinsurance Allocation Rate not found for Group of Insurance Contract {s[0]}.\",", - "\n (Error.YieldCurveNotFound , 3) => $\"Yield Curve not found for currency {s[0]}, year {s[1]}, and month {s[2]}.\",", + "\n (Error.YieldCurveNotFound , 4) => $\"Yield Curve not found for currency {s[0]}, year {s[1]}, month {s[2]} and sensitivity {(s[3] == null ? \"BestEstimate\" : s[3])}.\",", "\n (Error.YieldCurvePeriodNotApplicable , 2) => $\"YieldCurve period NotApplicable not valid for AoC Step with AoC Type {s[0]} and Novelty {s[1]}.\",", "\n (Error.EconomicBasisNotFound , 1) => $\"EconomicBasis not valid for DataNode {s[0]}.\",", "\n (Error.AccountingVariableTypeNotFound , 1) => $\"AccountingVariableType {s[0]} not found.\",", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index e9f5a238..f0fb63c8 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -720,7 +720,9 @@ "\n{ ", "\n Activity.Start();", "\n var targetPartitionByRn = (await workspace.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).Single().Id;", - "\n //var updatedCurrencies = (await workspace.Query().ToArrayAsync()).Select(x => x.Currency).Distinct();", + "\n await workspace.Partition.SetAsync(targetPartitionByRn);", + "\n await workspace.Partition.SetAsync(partition);", + "\n ", "\n var activeDataNodes = (await workspace.Query().Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", "\n x.Scenario == args.Scenario && x.Partition == targetPartitionByRn).ToArrayAsync())", "\n .Select(x => x.DataNode);", @@ -767,7 +769,7 @@ "\n ", "\n var log = Activity.Finish();", "\n foreach(var pt in targetPartitions) {", - "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), isScenarioYieldCurve ? null : args.Scenario, ImportFormats.Cashflow);", + "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow);", "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, updatedCurrencies, workspace));", "\n if(log.Errors.Any()) return log;", "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", @@ -791,7 +793,7 @@ "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization());", + "\n workspace.Initialize(x => x.FromSource(DataSource));", "\n", "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index e90d6921..e78b5fc8 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -193,7 +193,7 @@ "\n var loadedYc = (await querySource.LoadCurrentParameterAsync(argsNew, x => x.Currency, x => x.Currency == dn.ContractualCurrency));", "\n ", "\n if(!loadedYc.TryGetValue(dn.ContractualCurrency, out var lockedYc))", - "\n ApplicationMessage.Log(Error.YieldCurveNotFound, dn.ContractualCurrency, argsNew.Year.ToString(), argsNew.Month.ToString());", + "\n ApplicationMessage.Log(Error.YieldCurveNotFound, dn.ContractualCurrency, argsNew.Year.ToString(), argsNew.Month.ToString(), argsNew.Scenario);", "\n ", "\n lockedInYieldCurveByGoc[dn.DataNode] = lockedYc;", "\n }", From 2732291885f2f58bf70703bb8ad002802d18e3da Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Thu, 19 Jan 2023 16:21:58 +0100 Subject: [PATCH 57/64] best --- .../Test/ScenarioDataImportTest.ipynb | 45 ++- .../Test/ScenarioYieldCurveImportTest.ipynb | 344 +++++++++--------- ifrs17-template/Test/Tests.ipynb | 9 + ifrs17/Constants/Validations.ipynb | 4 +- ifrs17/Import/Importers.ipynb | 249 +++++-------- ifrs17/Utils/Queries.ipynb | 10 +- 6 files changed, 326 insertions(+), 335 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index c372ff33..24ceb395 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -42,16 +42,49 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Setting Constants" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ "var ws = Workspace.CreateNew();", - "\nws.InitializeFrom(DataSource);", - "\nvar argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", - "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);", - "\nvar initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", - "\nawait initStorage.InitializeAsync();", - "\nvar actualETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", + "\nws.InitializeFrom(DataSource);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", + "\nvar argsScenario = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"Test\", ImportFormats.Cashflow);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", + "\nawait initStorage.InitializeAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actualETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", "\nvar cashflowETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Cashflow];", "\nvar actualOrCashflowETs = actualETs.Intersect(cashflowETs);", "\nvar onlyActualETs = actualETs.Except(cashflowETs);", diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 8fa14d85..9249c72d 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -51,23 +51,22 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var ws = Workspace.CreateNew();", + "\nws.InitializeFrom(DataSource);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ "var argsBestEstimate = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, null, ImportFormats.Cashflow);", "\nvar argsScenarioYieldCurve = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"YCUP1.0pct\", ImportFormats.Cashflow);", - "\nvar argsScenarioTransactionalData = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"SRUP1.0pct\", ImportFormats.Cashflow);", - "\n", - "\nvar ws = Workspace.CreateNew();", - "\nws.InitializeFrom(DataSource);", - "\nvar initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", - "\nawait initStorage.InitializeAsync();", - "\n", - "\nvar actualETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", - "\nvar cashflowETs = initStorage.EstimateTypesByImportFormat[ImportFormats.Cashflow];", - "\nvar actualOrCashflowETs = actualETs.Intersect(cashflowETs);", - "\nvar onlyActualETs = actualETs.Except(cashflowETs);", - "\nvar onlyCashflowETs = cashflowETs.Except(actualETs);" + "\nvar argsScenarioTransactionalData = new ImportArgs (\"CH\", 2020, 12, Periodicity.Quarterly, \"SRUP1.0pct\", ImportFormats.Cashflow);" ], "metadata": {}, "execution_count": 0, @@ -76,14 +75,21 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromFile(\"../Files/Parameters/YieldCurve_2019_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_1.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2020_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_3.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_6.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog.Merge(await Import.FromFile(\"../Files/Parameters/YieldCurve_2021_12.csv\").WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync());", - "\nlog" + "var initStorage = new ImportStorage(argsBestEstimate, DataSource, ws);", + "\nawait initStorage.InitializeAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actualEstimateTypes = initStorage.EstimateTypesByImportFormat[ImportFormats.Actual];", + "\nvar cashflowEstimateTypes = initStorage.EstimateTypesByImportFormat[ImportFormats.Cashflow];", + "\nvar actualAndCashflowEstimateTypes = actualEstimateTypes.Intersect(cashflowEstimateTypes);", + "\nvar onlyActualEstimateTypes = actualEstimateTypes.Except(cashflowEstimateTypes);", + "\nvar onlyCashflowEstimateTypes = cashflowEstimateTypes.Except(actualEstimateTypes);" ], "metadata": {}, "execution_count": 0, @@ -98,6 +104,30 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "var basicYieldCurve = @\"", + "\n@@Main", + "\nYear,Month,Scenario", + "\n2020,1,", + "\n@@YieldCurve", + "\nCurrency,Values0,Values1,Values2,Values3", + "\nUSD,0.002,0.002,0.002,0.002\";" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(basicYieldCurve).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -120,15 +150,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "await Import.FromString(cashflowBestEstimateInit).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -149,6 +170,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(cashflowBestEstimateInit).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -161,7 +191,8 @@ { "cell_type": "code", "source": [ - "var ivsBestEstimateInit = await DataSource.Query().ToArrayAsync();" + "await DataSource.Partition.SetAsync(argsBestEstimate);", + "\nvar ivsBestEstimateInit = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -187,8 +218,7 @@ "\nCurrency,Values0,Values1,Values2,Values3", "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", "\nCHF,0.102,0.102,0.102,0.102", - "\nUSD,0.102,0.102,0.102,0.102", - "\n\";" + "\nUSD,0.102,0.102,0.102,0.102\";" ], "metadata": {}, "execution_count": 0, @@ -207,11 +237,18 @@ "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", - "\nvar ivsScenarioYieldCurve = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = (ivsScenarioYieldCurve.Where(x => Math.Abs(x.Value) > Precision).ToArray()).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\nvar actualVars = diffs.Where(x => onlyActualETs.Contains(x.EstimateType)).ToArray();", - "\nvar cashflowVars = diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType)).ToArray();", - "\nvar actualOrCashflowVars = diffs.Where(x => actualOrCashflowETs.Contains(x.EstimateType)).ToArray();" + "\nvar ivsScenarioYieldCurve = await DataSource.Query().ToArrayAsync();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var diffs = ivsScenarioYieldCurve.Where(x => Math.Abs(x.Value) > Precision).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", + "\nvar actualVars = diffs.Where(x => onlyActualEstimateTypes.Contains(x.EstimateType)).ToArray();", + "\nvar cashflowVars = diffs.Where(x => onlyCashflowEstimateTypes.Contains(x.EstimateType)).ToArray();" ], "metadata": {}, "execution_count": 0, @@ -221,8 +258,7 @@ "cell_type": "code", "source": [ "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "\ncashflowVars.Length.Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -231,7 +267,26 @@ { "cell_type": "markdown", "source": [ - "# Further Import of the same Yield Curve should not retrigger IFRS17 Calculations" + "# Re-Import of the same Yield Curve does not trigger IFRS17 Calculations" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromString(yieldCurveScenario).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", + "\nvar ivsScenarioYieldCurveReimport = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -240,10 +295,16 @@ { "cell_type": "code", "source": [ - "var log = await Import.FromString(yieldCurveScenario).WithFormat(ImportFormats.YieldCurve).WithTarget(DataSource).ExecuteAsync();", - "\nvar ivsScenarioYieldCurveReimport = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioYieldCurve.Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());", - "\ndiffs.ToArray().Length.Should().Be(0);" + "var diffs = ivsScenarioYieldCurve.Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -252,9 +313,13 @@ { "cell_type": "markdown", "source": [ - "# Multiple Scenario Test ", + "# Multiple Scenarios ", "\n", - "\nIn this example we imported a new Scenario, called SRUP1.0pct, to check how the importer treats different types of Scenarios." + "\nIn this example, a new Cashflow for a different Scenario - SRUP1.0pct - is imported. ", + "\nThe aim is to check how the Yield Curve importer behaves when a new Best Estimate Yield Curve is imported. ", + "\nWe can identify the following two cases: ", + "\n - a Scenario including a dedicated Yield Curve: only the Best Estimate variables are re-calculated;", + "\n - a Scenario including only transactional data: re-calculation is needed to account for the updated Best Estimate Yield Curve. " ], "metadata": {}, "execution_count": 0, @@ -263,7 +328,7 @@ { "cell_type": "code", "source": [ - "var cashflowScenarioTransactionalData = @\"", + "var cashflowScenario = @\"", "\n@@Main", "\nReportingNode,Year,Month,Scenario", "\nCH,2020,12,SRUP1.0pct", @@ -271,8 +336,7 @@ "\nDataNode,AmountType,EstimateType,AocType,Novelty,AccidentYear,Values0,Values1,Values2,Values3,Values4,Values5,Values6,Values7,Values8,Values9,Values10,Values11,Values12,Values13,Values14,Values15,Values16,Values17,Values18,Values19,Values20,Values21,Values22,Values23", "\nDT1.1,PR,BE,CL,C,,110,0,0,110,0,0,110,0,0,110,0,0,0,110,0,0,110,0,0,110,0,0,110,0", "\nDT1.1,NIC,BE,CL,C,,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5,-27.5", - "\nDT1.1,,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";", - "\n//DT1.1,,CU,CL,C,,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-11,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-53.5,-52.5,-31.3" + "\nDT1.1,,RA,CL,C,,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75,-2.75\";" ], "metadata": {}, "execution_count": 0, @@ -281,7 +345,7 @@ { "cell_type": "code", "source": [ - "await Import.FromString(cashflowScenarioTransactionalData).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromString(cashflowScenario).WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -306,11 +370,9 @@ "\n2020,12", "\n@@YieldCurve", "\nCurrency,Values0,Values1,Values2,Values3", - "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", - "\nCHF,0.102,0.012,0.102,0.102", - "\nUSD,0.102,0.102,0.102,0.102", - "\nGBP,0.102,0.102,0.102,0.102", - "\n\";" + "\nEUR,0.108,0.108,0.118,0.119", + "\nCHF,0.103,0.103,0.103,0.103", + "\nUSD,0.903,0.103,0.103,0.103\";" ], "metadata": {}, "execution_count": 0, @@ -325,13 +387,20 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate variables are re-calculated" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsBestEstimate);", - "\nvar ivsBestEstimateYieldCurve = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = (ivsBestEstimateYieldCurve).Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());", - "\ndiffs.ToArray().Length.Should().NotBe(0);" + "\nvar ivsBestEstimateUpdated = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -340,99 +409,7 @@ { "cell_type": "code", "source": [ - "var file = \"newbestestimateYieldCurve.csv\";", - "\nvar extension = System.IO.Path.GetExtension(file);", - "\n", - "\nvar stream = await Project.FileStorage.ReadAsync(file);", - "\n", - "\nvar dataSet = (await DataSetReader.ReadFromStream(stream).WithContentType(extension).ExecuteAsync()).DataSet;", - "\n Activity.Start();", - "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", - "\n args.ValidateArgsForPeriod();", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource));", - "\n", - "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", - "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", - "\n // possible checks: duplications on lines in the yield curve input", - "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", - "\n var yieldCurve = new YieldCurve {", - "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", - "\n Year = args.Year,", - "\n Month = args.Month, ", - "\n Scenario = args.Scenario,", - "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", - "\n Name = hasNameColumn", - "\n ? datarow.Field(nameof(YieldCurve.Name))", - "\n : default(string)", - "\n };", - "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", - "\n ? null", - "\n : yieldCurve;", - "\n }", - "\n ).WithTarget(workspace).ExecuteAsync(); ", - "\n ", - "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n ", - "\n yieldCurves = await workspace.Query().ToArrayAsync();", - "\n if (!yieldCurves.Any()){", - "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", - "\n return Activity.Finish().Merge(importLog);", - "\n }", - "\n var updatedCurrencies = yieldCurves.Select(x => x.Currency).Distinct();", - "\n //var calculationLog = await CalculationYieldCurvesAsync(args, updatedCurrencies, workspace);", - "\n //if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", - "\n var isScenarioYieldCurve = args.Scenario != null;", - "\n await SetPartitionsAsync(args, DataSource);", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", - "\n .Select(x => x.Scenario).Distinct();", - "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", - "\n // = all", - "\n var targetPartitions = isScenarioYieldCurve", - "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", - "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", - "\n .OrderBy(x => x.Scenario);", - "\n", - "\n var workspaceToCompute = Workspace.CreateNew();", - "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", - "\n ", - "\n var log = Activity.Finish();", - "\n //foreach(var pt in targetPartitions) {", - "\n var pt = (targetPartitions.ToArray())[1];", - "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow);", - "\n //log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, updatedCurrencies, workspace));", - "\n //if(log.Errors.Any()) return log;", - "\n ", - "\n var targetPartitionByRn = (await workspace.Query().Where(p => p.ReportingNode == importArgs.ReportingNode).ToArrayAsync()).Single().Id;", - "\n await workspace.Partition.SetAsync(targetPartitionByRn);", - "\n await workspace.Partition.SetAsync(pt.Id);", - "\n var activeDataNodes = (await workspace.Query().Where(x => x.State == State.Active && x.Year == importArgs.Year && x.Month == importArgs.Month && ", - "\n x.Scenario == importArgs.Scenario && x.Partition == targetPartitionByRn).ToArrayAsync())", - "\n .Select(x => x.DataNode);", - "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", - "\n .Select(x => x.SystemName).ToArrayAsync();", - "\n // Can we have different datanodes with the same name in different partitions?", - "\n await workspace.Partition.SetAsync(pt.Id);", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == pt.Id)).ToArrayAsync());", - "\n", - "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", - "\n if(log.Errors.Any()) return log;", - "\n //}", - "\n if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", - "\n //await DataSource.UpdateAsync(yieldCurves);", - "\n //await DataSource.CommitAsync();", - "\n //return Activity.Finish().Merge(importLog).Merge(calculationLog);" + "var diffs = ivsBestEstimateUpdated.Except(ivsBestEstimateInit, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -441,7 +418,16 @@ { "cell_type": "code", "source": [ - "" + "diffs.Count().Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Scenario with dedicated Yield Curve does not change" ], "metadata": {}, "execution_count": 0, @@ -450,9 +436,8 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(pt.Id);", - "\n(await workspaceToCompute.Query().ToArrayAsync()).Except(await DataSource.Query().ToArrayAsync(), IfrsVariableComparer.Instance())", - "\n//(await workspaceToCompute.Query().ToArrayAsync())" + "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", + "\nvar ivsScenarioYieldCurveUpdated = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -461,7 +446,25 @@ { "cell_type": "code", "source": [ - "(await DataSource.Query().ToArrayAsync()).Take(5)" + "var diffs = ivsScenarioYieldCurveUpdated.Where(x => Math.Abs(x.Value) > Precision).Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "diffs.Count().Should().Be(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Scenario including Transactional Data solely is re-calculated" ], "metadata": {}, "execution_count": 0, @@ -471,9 +474,7 @@ "cell_type": "code", "source": [ "await DataSource.Partition.SetAsync(argsScenarioTransactionalData);", - "\nvar ivsScenarioTransactionalDataRecalculation = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioTransactionalDataRecalculation.Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());", - "\n//diffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().NotBe(0);" + "\nvar ivsScenarioTransactionalDataUpdated = await DataSource.Query().ToArrayAsync();" ], "metadata": {}, "execution_count": 0, @@ -482,7 +483,7 @@ { "cell_type": "code", "source": [ - "diffs" + "var diffs = ivsScenarioTransactionalDataUpdated.Where(x => Math.Abs(x.Value) > Precision).Except(ivsScenarioTransactionalData, IfrsVariableComparer.Instance());" ], "metadata": {}, "execution_count": 0, @@ -491,10 +492,25 @@ { "cell_type": "code", "source": [ - "await DataSource.Partition.SetAsync(argsScenarioYieldCurve);", - "\nvar ivsScenarioYieldCurveDataRecalculation = await DataSource.Query().ToArrayAsync();", - "\nvar diffs = ivsScenarioYieldCurveDataRecalculation.Except(ivsScenarioYieldCurve, IfrsVariableComparer.Instance());", - "\ndiffs.Where(x => Math.Abs(x.Value) > Precision).ToArray().Length.Should().Be(0);" + "diffs.Count().Should().NotBe(0);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb index c493097e..5e1cafd9 100644 --- a/ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -99,6 +99,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"ScenarioYieldCurveImportTest\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index 44cb9dba..cdd463cf 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -157,7 +157,7 @@ "\n (Error.CreditDefaultRateNotFound , 1) => $\"Credit Default Rate not found for rating {s[0]}.\",", "\n (Error.MissingPremiumAllocation , 1) => $\"Premium Allocation Rate not found for Group of Contract {s[0]}.\", // TODO: this is now a warning to be produced by a validation in the importers (default is 1)", "\n (Error.ReinsuranceCoverage , 1) => $\"Reinsurance Allocation Rate not found for Group of Insurance Contract {s[0]}.\",", - "\n (Error.YieldCurveNotFound , 4) => $\"Yield Curve not found for currency {s[0]}, year {s[1]}, month {s[2]} and sensitivity {(s[3] == null ? \"BestEstimate\" : s[3])}.\",", + "\n (Error.YieldCurveNotFound , 4) => $\"Yield Curve not found for Currency {s[0]}, Year {s[1]}, Month {s[2]}, and Scenario {(s[3] == null ? \"Best Estimate\" : s[3])}.\",", "\n (Error.YieldCurvePeriodNotApplicable , 2) => $\"YieldCurve period NotApplicable not valid for AoC Step with AoC Type {s[0]} and Novelty {s[1]}.\",", "\n (Error.EconomicBasisNotFound , 1) => $\"EconomicBasis not valid for DataNode {s[0]}.\",", "\n (Error.AccountingVariableTypeNotFound , 1) => $\"AccountingVariableType {s[0]} not found.\",", @@ -184,7 +184,7 @@ "\n // Import", "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", "\n (Warning.VariablesAlreadyImported , 0) => $\"The import of the current file does not contain any new data. Hence, no data will be saved or calculations performed\",", - "\n (Warning.ScenarioReCalculations , 1) => $\"The import of the current file for the Best Estimate scenario makes the result of dependent Scenarios out of date. Hence, the following Scenarios are recalculated: {s[0]}.\", ", + "\n (Warning.ScenarioReCalculations , 1) => $\"The present Best Estimate import makes the result of dependent Scenarios out of date. Hence, the following Scenarios are re-calculated: {s[0]}.\", ", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", "\n (_ , _) => $\"Warning not found.\"", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index ab208e40..a8d48083 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -366,57 +366,33 @@ { "cell_type": "code", "source": [ - "public async Task SetPartitionAsync(ImportArgs args, IDataSource targetSource)", + "public async Task SetPartitionAsync(ImportArgs args, params IDataSource[] dataSources)", "\n{", - "\n switch(typeof(IPartition).Name) {", - "\n case nameof(PartitionByReportingNode) : {", - "\n await DataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", - "\n ReportingNode = args.ReportingNode } } );", - "\n break;", - "\n }", - "\n case nameof(PartitionByReportingNodeAndPeriod) : {", - "\n args.ValidateArgsForPeriod();", - "\n if(ApplicationMessage.HasErrors()) return null;", - "\n await DataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", - "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", - "\n Year = args.Year,", - "\n Month = args.Month,", - "\n ReportingNode = args.ReportingNode, ", - "\n Scenario = args.Scenario } } );", - "\n break;", - "\n }", - "\n default : {", - "\n ApplicationMessage.Log(Error.PartitionTypeNotFound, typeof(IPartition).Name); ", - "\n return null;", - "\n }", - "\n }", - "\n ", - "\n await targetSource.CommitAsync();", - "\n return null;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task SetPartitionsAsync(Args args, IDataSource targetSource)", - "\n{ ", - "\n foreach( var reportingNode in (await targetSource.Query().Select(x => x.ReportingNode).ToArrayAsync())) {", - "\n var importArgs = new ImportArgs (reportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, default(string));", - "\n if(args.Scenario != null) {", - "\n await SetPartitionAsync(importArgs, targetSource);", - "\n await SetPartitionAsync(importArgs, targetSource);", - "\n await SetPartitionAsync(importArgs with {Scenario = null}, targetSource);", - "\n await SetPartitionAsync(importArgs with {Scenario = null}, targetSource);", - "\n }", - "\n else {", - "\n await SetPartitionAsync(importArgs, targetSource);", - "\n await SetPartitionAsync(importArgs, targetSource);", + "\n foreach (var dataSource in dataSources) {", + "\n switch(typeof(IPartition).Name) {", + "\n case nameof(PartitionByReportingNode) : {", + "\n await dataSource.UpdateAsync( new[] { new PartitionByReportingNode { ", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n ReportingNode = args.ReportingNode } } );", + "\n break;", + "\n }", + "\n case nameof(PartitionByReportingNodeAndPeriod) : {", + "\n args.ValidateArgsForPeriod();", + "\n if(ApplicationMessage.HasErrors()) return;", + "\n await dataSource.UpdateAsync( new[]{ new PartitionByReportingNodeAndPeriod { ", + "\n Id = (Guid)(await DataSource.Partition.GetKeyForInstanceAsync(args)),", + "\n Year = args.Year,", + "\n Month = args.Month,", + "\n ReportingNode = args.ReportingNode, ", + "\n Scenario = args.Scenario } } );", + "\n break;", + "\n }", + "\n default : {", + "\n ApplicationMessage.Log(Error.PartitionTypeNotFound, typeof(IPartition).Name); ", + "\n return;", + "\n }", "\n }", + "\n await dataSource.CommitAsync();", "\n }", "\n}" ], @@ -533,16 +509,13 @@ "source": [ "public async Task GetAllArgsAsync(ImportArgs primaryArgs)", "\n{", - "\n if (primaryArgs.Scenario != null)", - "\n return primaryArgs.RepeatOnce().ToArray();", + "\n if (primaryArgs.Scenario != null) return primaryArgs.RepeatOnce().ToArray();", "\n", "\n var secondaryArgs = await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", + "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", "\n ", - "\n if (secondaryArgs.Any())", - "\n ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", - "\n ", + "\n if (secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", "\n return primaryArgs.RepeatOnce().Concat(secondaryArgs).ToArray();", "\n}" ], @@ -714,76 +687,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public async Task OptimizeWorkSpacesAsync(ImportArgs args, Guid partition, IEnumerable updatedCurrencies, IWorkspace workspace)", - "\n{ ", - "\n Activity.Start();", - "\n var targetPartitionByRn = (await workspace.Query().Where(p => p.ReportingNode == args.ReportingNode).ToArrayAsync()).Single().Id;", - "\n await workspace.Partition.SetAsync(targetPartitionByRn);", - "\n await workspace.Partition.SetAsync(partition);", - "\n ", - "\n var activeDataNodes = (await workspace.Query().Where(x => x.State == State.Active && x.Year == args.Year && x.Month == args.Month && ", - "\n x.Scenario == args.Scenario && x.Partition == targetPartitionByRn).ToArrayAsync())", - "\n .Select(x => x.DataNode);", - "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency) && activeDataNodes.Contains(x.SystemName))", - "\n .Select(x => x.SystemName).ToArrayAsync();", - "\n // Can we have different datanodes with the same name in different partitions?", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", - "\n await workspace.DeleteAsync(", - "\n await workspace.Query().Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && x.Partition == partition)).ToArrayAsync());", - "\n ", - "\n // Can we have datanodes with different currency linked together by InterDataNodeParameter? yes", - "\n return Activity.Finish();", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task CalculationYieldCurvesAsync(Args args, IEnumerable updatedCurrencies, IWorkspace workspace)", - "\n{ ", - "\n Activity.Start();", - "\n var isScenarioYieldCurve = args.Scenario != null;", - "\n await SetPartitionsAsync(args, DataSource);", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", - "\n var scenarioYieldCurves = (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", - "\n .Select(x => x.Scenario);", - "\n //YC_BE => (IFRS_BE && IFRS_SCE) EXCEPT YC_SCE; YC_SCE => IFRS_BE ", - "\n // = all", - "\n var targetPartitions = isScenarioYieldCurve", - "\n ? (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null)", - "\n : (await DataSource.Query().ToArrayAsync())", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarioYieldCurves.Contains(x.Scenario))", - "\n .OrderByDescending(x => x.Scenario);", - "\n", - "\n var workspaceToCompute = Workspace.CreateNew();", - "\n workspaceToCompute.Initialize(x => x.FromSource(DataSource));", - "\n ", - "\n var log = Activity.Finish();", - "\n foreach(var pt in targetPartitions) {", - "\n var importArgs = new ImportArgs(pt.ReportingNode, args.Year, args.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow);", - "\n log = log.Merge(await OptimizeWorkSpacesAsync(importArgs, pt.Id, updatedCurrencies, workspace));", - "\n if(log.Errors.Any()) return log;", - "\n log = log.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", - "\n if(log.Errors.Any()) return log;", - "\n }", - "\n if (!log.Errors.Any()) await workspaceToCompute.CommitToTargetAsync(DataSource);", - "\n return log;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -791,45 +694,75 @@ "\n Activity.Start();", "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", "\n args.ValidateArgsForPeriod();", - "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", - "\n", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n var workspace = Workspace.CreateNew();", - "\n workspace.Initialize(x => x.FromSource(DataSource));", + "\n workspace.Initialize(x => x.FromSource(options.TargetDataSource).DisableInitialization()", + "\n .DisableInitialization().DisableInitialization());", "\n", - "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", + "\n var committedYieldCurves = await options.TargetDataSource.Query().ToArrayAsync();", "\n var hasNameColumn = dataSet.Tables[ImportFormats.YieldCurve].Columns.Any(x => x.ColumnName == nameof(YieldCurve.Name));", - "\n // possible checks: duplications on lines in the yield curve input", - "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", - "\n var yieldCurve = new YieldCurve {", - "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", - "\n Year = args.Year,", - "\n Month = args.Month, ", - "\n Scenario = args.Scenario,", - "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", - "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", - "\n Name = hasNameColumn", - "\n ? datarow.Field(nameof(YieldCurve.Name))", - "\n : default(string)", - "\n };", - "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", - "\n ? null", - "\n : yieldCurve;", - "\n }", - "\n ).WithTarget(workspace).ExecuteAsync(); ", - "\n ", + "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", + "\n var yieldCurve = new YieldCurve { ", + "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", + "\n Year = args.Year,", + "\n Month = args.Month, ", + "\n Scenario = args.Scenario,", + "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", + "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", + "\n Name = hasNameColumn ? datarow.Field(nameof(YieldCurve.Name)) : default(string)", + "\n };", + "\n return committedYieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance()) ? null : yieldCurve;", + "\n }).WithTarget(workspace).ExecuteAsync(); ", + "\n", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", - "\n ", - "\n yieldCurves = await workspace.Query().ToArrayAsync();", - "\n if (!yieldCurves.Any()){", + "\n var toCommitYieldCurves = await workspace.Query().ToArrayAsync();", + "\n if (!toCommitYieldCurves.Any()) {", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", "\n return Activity.Finish().Merge(importLog);", "\n }", - "\n var updatedCurrencies = yieldCurves.Select(x => x.Currency).Distinct();", - "\n var calculationLog = await CalculationYieldCurvesAsync(args, updatedCurrencies, workspace);", - "\n if(calculationLog.Errors.Any()) return Activity.Finish().Merge(importLog).Merge(calculationLog); ", - "\n await DataSource.UpdateAsync(yieldCurves);", - "\n await DataSource.CommitAsync();", - "\n return Activity.Finish().Merge(importLog).Merge(calculationLog);", + "\n", + "\n PartitionByReportingNodeAndPeriod[] targetPartitions;", + "\n if(args.Scenario == null) {", + "\n var scenariosWithYieldCurves = committedYieldCurves.Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct();", + "\n targetPartitions = await options.TargetDataSource.Query()", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenariosWithYieldCurves.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", + "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", + "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", + "\n }", + "\n else {", + "\n targetPartitions = (await options.TargetDataSource.Query()", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync()).Select(x => x with {Scenario = args.Scenario}).ToArray();", + "\n }", + "\n", + "\n var updatedCurrencies = toCommitYieldCurves.Select(x => x.Currency).Distinct();", + "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency)).Select(x => x.SystemName).ToArrayAsync();", + "\n var workspaceToCompute = Workspace.CreateNew();", + "\n workspaceToCompute.Initialize(x => x.FromSource(options.TargetDataSource));", + "\n ", + "\n foreach (var partition in targetPartitions) {", + "\n var importArgs = new ImportArgs(partition.ReportingNode, args.Year, args.Month, default(Periodicity), partition.Scenario, ImportFormats.Cashflow);", + "\n await SetPartitionAsync(importArgs, workspace, workspaceToCompute);", + "\n var targetPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(importArgs));", + "\n var defaultPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(partition with {Scenario=null}));", + "\n if(ApplicationMessage.HasErrors()) return Activity.Finish().Merge(importLog);", + "\n ", + "\n // Avoid starting the computation if no best estimate cash flow has ever been imported ", + "\n if(importArgs.Scenario == null) {", + "\n await options.TargetDataSource.Partition.SetAsync(null);", + "\n if(!(await options.TargetDataSource.Query().Where(x => x.Partition == targetPartition).Take(1).ToArrayAsync()).Any()) continue;", + "\n }", + "\n", + "\n // Remove data nodes which are unaffected by the updated yield curves", + "\n await workspaceToCompute.DeleteAsync( await workspaceToCompute.Query()", + "\n .Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && (x.Partition == targetPartition || x.Partition == defaultPartition))).ToArrayAsync() );", + "\n", + "\n importLog = importLog.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", + "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog);", + "\n }", + "\n", + "\n await workspaceToCompute.UpdateAsync(toCommitYieldCurves);", + "\n await workspaceToCompute.CommitToTargetAsync(options.TargetDataSource);", + "\n return Activity.Finish().Merge(importLog);", "\n});" ], "metadata": {}, diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 66616c2d..9bc52275 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -455,18 +455,18 @@ "\n where T : IPartitioned", "\n where P : IPartition", "\n{", - "\n var isRelaxed = targetPartition != defaultPartition &&", - "\n ((format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) ||", + "\n var isRelaxed = ((format != ImportFormats.Cashflow && typeof(T).Name == nameof(IfrsVariable)) ||", "\n (format == ImportFormats.Cashflow && typeof(T).Name == nameof(RawVariable)));", "\n", "\n var variablesFromWorkspace = await workspace.LoadPartitionedDataAsync(targetPartition);", "\n if(!isRelaxed || variablesFromWorkspace.Any()) return variablesFromWorkspace;", "\n", - "\n // For scenario re-calculation", + "\n // This is for scenario re-calculation", "\n var variablesFromDataSource = await dataSource.LoadPartitionedDataAsync(targetPartition);", "\n if(variablesFromDataSource.Any()) return variablesFromDataSource;", "\n", - "\n // For scenarios related to parameters solely", + "\n // This is for scenarios affecting parameters solely", + "\n // And for the best estimate when parameters are updated", "\n return await dataSource.LoadPartitionedDataAsync(defaultPartition, targetPartition);", "\n}" ], @@ -484,4 +484,4 @@ "outputs": [] } ] -} +} \ No newline at end of file From 0980c00343f879dfe86822d16d1060bd05f06b62 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Fri, 20 Jan 2023 09:46:42 +0100 Subject: [PATCH 58/64] implement feedback --- .../Test/ScenarioYieldCurveImportTest.ipynb | 20 +------------------ ifrs17-template/Test/scenarioYieldCurve.csv | 9 --------- ifrs17/Constants/Validations.ipynb | 4 ++-- ifrs17/Import/ImportStorage.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 10 ++++++---- ifrs17/Utils/Queries.ipynb | 4 ++-- 6 files changed, 12 insertions(+), 37 deletions(-) delete mode 100644 ifrs17-template/Test/scenarioYieldCurve.csv diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 9249c72d..3e2c7fce 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -216,7 +216,7 @@ "\n2020,12,YCUP1.0pct", "\n@@YieldCurve", "\nCurrency,Values0,Values1,Values2,Values3", - "\nEUR,0.108685495,0.108685495,0.118498471,0.119966839", + "\nEUR,0.108,0.108,0.118,0.119", "\nCHF,0.102,0.102,0.102,0.102", "\nUSD,0.102,0.102,0.102,0.102\";" ], @@ -498,24 +498,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ diff --git a/ifrs17-template/Test/scenarioYieldCurve.csv b/ifrs17-template/Test/scenarioYieldCurve.csv deleted file mode 100644 index 27c9f239..00000000 --- a/ifrs17-template/Test/scenarioYieldCurve.csv +++ /dev/null @@ -1,9 +0,0 @@ -@@Main -Year,Month,Scenario -2020,12,YCUP1.0pct -@@YieldCurve -Currency,Values0,Values1,Values2,Values3 -EUR,0.108685495,0.108685495,0.118498471,0.119966839 -CHF,0.102,0.102,0.102,0.102 -USD,0.102,0.102,0.102,0.102 -GBP,0.102,0.102,0.102,0.102 \ No newline at end of file diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index cdd463cf..31407b23 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -157,7 +157,7 @@ "\n (Error.CreditDefaultRateNotFound , 1) => $\"Credit Default Rate not found for rating {s[0]}.\",", "\n (Error.MissingPremiumAllocation , 1) => $\"Premium Allocation Rate not found for Group of Contract {s[0]}.\", // TODO: this is now a warning to be produced by a validation in the importers (default is 1)", "\n (Error.ReinsuranceCoverage , 1) => $\"Reinsurance Allocation Rate not found for Group of Insurance Contract {s[0]}.\",", - "\n (Error.YieldCurveNotFound , 4) => $\"Yield Curve not found for Currency {s[0]}, Year {s[1]}, Month {s[2]}, and Scenario {(s[3] == null ? \"Best Estimate\" : s[3])}.\",", + "\n (Error.YieldCurveNotFound , 5) => $\"Yield Curve not found for Currency {s[0]}, Year {s[1]}, Month {s[2]}, Scenario {(s[3] == null ? \"Best Estimate\" : s[3])} and Name {s[4]}.\",", "\n (Error.YieldCurvePeriodNotApplicable , 2) => $\"YieldCurve period NotApplicable not valid for AoC Step with AoC Type {s[0]} and Novelty {s[1]}.\",", "\n (Error.EconomicBasisNotFound , 1) => $\"EconomicBasis not valid for DataNode {s[0]}.\",", "\n (Error.AccountingVariableTypeNotFound , 1) => $\"AccountingVariableType {s[0]} not found.\",", @@ -183,7 +183,7 @@ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AoC Type: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", - "\n (Warning.VariablesAlreadyImported , 0) => $\"The import of the current file does not contain any new data. Hence, no data will be saved or calculations performed\",", + "\n (Warning.VariablesAlreadyImported , 0) => $\"The import of the current file does not contain any new data. Hence, no data will be saved or calculations will be performed.\",", "\n (Warning.ScenarioReCalculations , 1) => $\"The present Best Estimate import makes the result of dependent Scenarios out of date. Hence, the following Scenarios are re-calculated: {s[0]}.\", ", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", diff --git a/ifrs17/Import/ImportStorage.ipynb b/ifrs17/Import/ImportStorage.ipynb index 70ee3cef..e5136298 100644 --- a/ifrs17/Import/ImportStorage.ipynb +++ b/ifrs17/Import/ImportStorage.ipynb @@ -145,7 +145,7 @@ "\n await hierarchyCache.InitializeAsync();", "\n ", "\n //EstimateType to load and to update", - "\n EstimateTypesByImportFormat = new InputSource[] { InputSource.Opening, InputSource.Actual, InputSource.Cashflow, }", + "\n EstimateTypesByImportFormat = new InputSource[] { InputSource.Opening, InputSource.Actual, InputSource.Cashflow }", "\n .ToDictionary(x => x.ToString(), ", "\n x => estimateTypes", "\n .Where(et => et.InputSource.Contains(x))", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index a8d48083..0138e9f3 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -509,13 +509,15 @@ "source": [ "public async Task GetAllArgsAsync(ImportArgs primaryArgs)", "\n{", - "\n if (primaryArgs.Scenario != null) return primaryArgs.RepeatOnce().ToArray();", + "\n if (primaryArgs.Scenario != null) ", + "\n return primaryArgs.RepeatOnce().ToArray();", "\n", "\n var secondaryArgs = await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", + "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", "\n ", - "\n if (secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", + "\n if (secondaryArgs.Any()) ", + "\n ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", "\n return primaryArgs.RepeatOnce().Concat(secondaryArgs).ToArray();", "\n}" ], diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index 9bc52275..d682396d 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -193,7 +193,7 @@ "\n var loadedYc = (await querySource.LoadCurrentParameterAsync(argsNew, x => x.Currency, x => x.Currency == dn.ContractualCurrency && x.Name == dn.YieldCurveName));", "\n ", "\n if (!loadedYc.TryGetValue(dn.ContractualCurrency, out var lockedYc))", - "\n ApplicationMessage.Log(Error.YieldCurveNotFound, dn.ContractualCurrency, argsNew.Year.ToString(), argsNew.Month.ToString(), argsNew.Scenario);", + "\n ApplicationMessage.Log(Error.YieldCurveNotFound, dn.ContractualCurrency, argsNew.Year.ToString(), argsNew.Month.ToString(), argsNew.Scenario, dn.YieldCurveName);", "\n ", "\n lockedInYieldCurveByGoc[dn.DataNode] = lockedYc;", "\n }", @@ -235,7 +235,7 @@ "\n : true));", "\n ", "\n if (!loadedYc.TryGetValue(key.ContractualCurrency, out var currentYcDict))", - "\n ApplicationMessage.Log(Error.YieldCurveNotFound, key.ContractualCurrency, args.Year.ToString(), args.Month.ToString());", + "\n ApplicationMessage.Log(Error.YieldCurveNotFound, key.ContractualCurrency, args.Year.ToString(), args.Month.ToString(), args.Scenario, key.YieldCurveName);", "\n", "\n foreach(var dn in dnByValAppContrCurrYcName[key])", "\n {", From adbacc08a90df03b32b662bacd01a7da07468c32 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Fri, 20 Jan 2023 10:32:15 +0100 Subject: [PATCH 59/64] feedback v2: consistency and readability up --- ifrs17/Import/Importers.ipynb | 82 +++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 0138e9f3..ea9be6d1 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -507,18 +507,38 @@ { "cell_type": "code", "source": [ - "public async Task GetAllArgsAsync(ImportArgs primaryArgs)", + "public async Task GetAllArgsAsync(ImportArgs args, IDataSource dataSource, string format)", "\n{", - "\n if (primaryArgs.Scenario != null) ", - "\n return primaryArgs.RepeatOnce().ToArray();", - "\n", - "\n var secondaryArgs = await DataSource.Query() ", - "\n .Where(x => x.ReportingNode == primaryArgs.ReportingNode && x.Year == primaryArgs.Year && x.Month == primaryArgs.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", + "\n switch(format)", + "\n {", + "\n case ImportFormats.YieldCurve : ", + "\n {", + "\n if(args.Scenario == null) {", + "\n var scenariosWithYieldCurves = await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => x.Scenario).Distinct().ToArrayAsync();", + "\n var targetPartitions = await dataSource.Query()", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenariosWithYieldCurves.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", + "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", + "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", + "\n return targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n }", + "\n else {", + "\n return (await dataSource.Query()", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n }", + "\n }", + "\n default : ", + "\n {", + "\n if(args.Scenario != null) return args.RepeatOnce().ToArray();", + "\n var secondaryArgs = await DataSource.Query() ", + "\n .Where(x => x.ReportingNode == args.ReportingNode && x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", "\n ", - "\n if (secondaryArgs.Any()) ", - "\n ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", - "\n return primaryArgs.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n if(secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", + "\n return args.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n }", + "\n }", "\n}" ], "metadata": {}, @@ -694,8 +714,8 @@ "source": [ "Import.DefineFormat(ImportFormats.YieldCurve, async (options, dataSet) => {", "\n Activity.Start();", - "\n var args = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", - "\n args.ValidateArgsForPeriod();", + "\n var primaryArgs = GetArgsFromMain(dataSet) with {ImportFormat = ImportFormats.YieldCurve};", + "\n primaryArgs.ValidateArgsForPeriod();", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish();", "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(options.TargetDataSource).DisableInitialization()", @@ -706,9 +726,9 @@ "\n var importLog = await Import.FromDataSet(dataSet).WithType((dataset, datarow) => { ", "\n var yieldCurve = new YieldCurve { ", "\n Currency = datarow.Field(nameof(YieldCurve.Currency)),", - "\n Year = args.Year,", - "\n Month = args.Month, ", - "\n Scenario = args.Scenario,", + "\n Year = primaryArgs.Year,", + "\n Month = primaryArgs.Month, ", + "\n Scenario = primaryArgs.Scenario,", "\n Values = datarow.Table.Columns.Where(c => c.ColumnName.StartsWith(nameof(YieldCurve.Values))).OrderBy(c => c.ColumnName.Length).ThenBy(c => c.ColumnName)", "\n .Select(x => datarow.Field(x.ColumnName).CheckStringForExponentialAndConvertToDouble()).ToArray(),", "\n Name = hasNameColumn ? datarow.Field(nameof(YieldCurve.Name)) : default(string)", @@ -723,33 +743,21 @@ "\n return Activity.Finish().Merge(importLog);", "\n }", "\n", - "\n PartitionByReportingNodeAndPeriod[] targetPartitions;", - "\n if(args.Scenario == null) {", - "\n var scenariosWithYieldCurves = committedYieldCurves.Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct();", - "\n targetPartitions = await options.TargetDataSource.Query()", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenariosWithYieldCurves.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", - "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", - "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", - "\n }", - "\n else {", - "\n targetPartitions = (await options.TargetDataSource.Query()", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync()).Select(x => x with {Scenario = args.Scenario}).ToArray();", - "\n }", - "\n", + "\n var allArgs = await GetAllArgsAsync(primaryArgs, options.TargetDataSource, ImportFormats.YieldCurve);", "\n var updatedCurrencies = toCommitYieldCurves.Select(x => x.Currency).Distinct();", "\n var dataNodesToUpdate = await workspace.Query().Where(x => updatedCurrencies.Contains(x.ContractualCurrency)).Select(x => x.SystemName).ToArrayAsync();", "\n var workspaceToCompute = Workspace.CreateNew();", "\n workspaceToCompute.Initialize(x => x.FromSource(options.TargetDataSource));", "\n ", - "\n foreach (var partition in targetPartitions) {", - "\n var importArgs = new ImportArgs(partition.ReportingNode, args.Year, args.Month, default(Periodicity), partition.Scenario, ImportFormats.Cashflow);", - "\n await SetPartitionAsync(importArgs, workspace, workspaceToCompute);", - "\n var targetPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(importArgs));", - "\n var defaultPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(partition with {Scenario=null}));", + "\n foreach (var args in allArgs) {", + "\n await SetPartitionAsync(args, workspace, workspaceToCompute);", + "\n var targetPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(args));", + "\n var defaultPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(", + "\n new ImportArgs(args.ReportingNode, args.Year, args.Month, default(Periodicity), null, ImportFormats.Cashflow) ));", "\n if(ApplicationMessage.HasErrors()) return Activity.Finish().Merge(importLog);", "\n ", "\n // Avoid starting the computation if no best estimate cash flow has ever been imported ", - "\n if(importArgs.Scenario == null) {", + "\n if(args.Scenario == null) {", "\n await options.TargetDataSource.Partition.SetAsync(null);", "\n if(!(await options.TargetDataSource.Query().Where(x => x.Partition == targetPartition).Take(1).ToArrayAsync()).Any()) continue;", "\n }", @@ -758,7 +766,7 @@ "\n await workspaceToCompute.DeleteAsync( await workspaceToCompute.Query()", "\n .Where(x => !(dataNodesToUpdate.Contains(x.DataNode) && (x.Partition == targetPartition || x.Partition == defaultPartition))).ToArrayAsync() );", "\n", - "\n importLog = importLog.Merge(await ComputeAsync(importArgs, workspace, workspaceToCompute, false));", + "\n importLog = importLog.Merge(await ComputeAsync(args, workspace, workspaceToCompute, false));", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog);", "\n }", "\n", @@ -1208,7 +1216,7 @@ "\n var primaryArgs = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Cashflow};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var allArgs = await GetAllArgsAsync(primaryArgs);", + "\n var allArgs = await GetAllArgsAsync(primaryArgs, options.TargetDataSource, ImportFormats.Cashflow);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Cashflow, primaryArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n ", @@ -1309,7 +1317,7 @@ "\n var primaryArgs = await GetArgsAndCommitPartitionAsync(dataSet) with {ImportFormat = ImportFormats.Actual};", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", - "\n var allArgs = await GetAllArgsAsync(primaryArgs);", + "\n var allArgs = await GetAllArgsAsync(primaryArgs, options.TargetDataSource, ImportFormats.Actual);", "\n await DataNodeFactoryAsync(dataSet, ImportFormats.Actual, primaryArgs);", "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", From c6dbb99b8393929711f6f3510cae0f852d7c5699 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Sun, 22 Jan 2023 12:56:24 +0100 Subject: [PATCH 60/64] add toggle --- ifrs17/Constants/Consts.ipynb | 9 +++++++++ ifrs17/Import/Importers.ipynb | 10 +++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 08842d5a..23d90c66 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -27,6 +27,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public const bool EnableScenario = false;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index ea9be6d1..829eec7d 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -509,6 +509,7 @@ "source": [ "public async Task GetAllArgsAsync(ImportArgs args, IDataSource dataSource, string format)", "\n{", + "\n ImportArgs[] allArgs;", "\n switch(format)", "\n {", "\n case ImportFormats.YieldCurve : ", @@ -520,13 +521,14 @@ "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenariosWithYieldCurves.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", - "\n return targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", "\n }", "\n else {", - "\n return (await dataSource.Query()", + "\n allArgs = (await dataSource.Query()", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow)).ToArray();", "\n }", + "\n break;", "\n }", "\n default : ", "\n {", @@ -536,9 +538,11 @@ "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArrayAsync();", "\n ", "\n if(secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", - "\n return args.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n allArgs = args.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n break;", "\n }", "\n }", + "\n return allArgs.Where(x => (!EnableScenario && x.Scenario == null) || EnableScenario).ToArray();", "\n}" ], "metadata": {}, From fab4daefa7e689836e2dbaad67851898afef2e40 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Sun, 22 Jan 2023 13:01:08 +0100 Subject: [PATCH 61/64] commit partition renaming --- ifrs17/Constants/Consts.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 23d90c66..67836a8d 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -30,7 +30,7 @@ { "cell_type": "code", "source": [ - "public const bool EnableScenario = false;" + "public const bool EnableScenario = true;" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 829eec7d..330a4f3b 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -366,7 +366,7 @@ { "cell_type": "code", "source": [ - "public async Task SetPartitionAsync(ImportArgs args, params IDataSource[] dataSources)", + "public async Task CommitPartitionAsync(ImportArgs args, params IDataSource[] dataSources)", "\n{", "\n foreach (var dataSource in dataSources) {", "\n switch(typeof(IPartition).Name) {", @@ -419,7 +419,7 @@ "\n var args = GetArgsFromMain(dataSet);", "\n if(ApplicationMessage.HasErrors()) return null;", "\n if(args.ReportingNode == default(string)) { ApplicationMessage.Log(Error.ReportingNodeInMainNotFound); return null; }", - "\n await SetPartitionAsync(args, DataSource);", + "\n await CommitPartitionAsync(args, DataSource);", "\n return args;", "\n}" ], @@ -754,7 +754,7 @@ "\n workspaceToCompute.Initialize(x => x.FromSource(options.TargetDataSource));", "\n ", "\n foreach (var args in allArgs) {", - "\n await SetPartitionAsync(args, workspace, workspaceToCompute);", + "\n await CommitPartitionAsync(args, workspace, workspaceToCompute);", "\n var targetPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(args));", "\n var defaultPartition = (Guid)(await options.TargetDataSource.Partition.GetKeyForInstanceAsync(", "\n new ImportArgs(args.ReportingNode, args.Year, args.Month, default(Periodicity), null, ImportFormats.Cashflow) ));", From d457d62062f532a95cfca2247de1de1509ad98f6 Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 23 Jan 2023 14:51:36 +0100 Subject: [PATCH 62/64] improved toggle + better relaxed queries --- .../Test/ScenarioDataImportTest.ipynb | 88 +++++++++++++------ .../Test/ScenarioYieldCurveImportTest.ipynb | 14 +-- ifrs17/Constants/Consts.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 2 +- ifrs17/Utils/Queries.ipynb | 8 +- 5 files changed, 76 insertions(+), 38 deletions(-) diff --git a/ifrs17-template/Test/ScenarioDataImportTest.ipynb b/ifrs17-template/Test/ScenarioDataImportTest.ipynb index 24ceb395..e6603fef 100644 --- a/ifrs17-template/Test/ScenarioDataImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioDataImportTest.ipynb @@ -225,9 +225,11 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().Be(0);", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n diffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -283,9 +285,11 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().NotBe(0);", - "\ncashflowVars.Length.Should().Be(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().NotBe(0);", + "\n cashflowVars.Length.Should().Be(0);", + "\n diffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -350,9 +354,11 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().Be(0);", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n diffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -409,9 +415,11 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\ndiffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().Be(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "if(EnableScenario) {", + "\n diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\n diffs.Where(x => x.EstimateType == EstimateTypes.F).ToArray().Length.Should().Be(0);", + "\n diffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -474,9 +482,11 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.F).Count().Should().NotBe(0);", - "\nivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + "if(EnableScenario) {", + "\n diffs.Where(x => x.EstimateType == EstimateTypes.DA).ToArray().Length.Should().NotBe(0);", + "\n ivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.F).Count().Should().NotBe(0);", + "\n ivsScenarioActualNoACAAEA.Where(x => x.EstimateType == EstimateTypes.DA && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -558,7 +568,7 @@ { "cell_type": "code", "source": [ - "diffs.Count().Should().Be(0);" + "if(EnableScenario) diffs.Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -652,8 +662,10 @@ { "cell_type": "code", "source": [ - "diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", - "\ndiffs.Where(x => onlyActualETs.Contains(x.EstimateType) && Math.Abs(x.Value) > Precision).Count().Should().Be(0);" + "if(EnableScenario) {", + "\n diffs.Where(x => onlyCashflowETs.Contains(x.EstimateType) && x.EstimateType != EstimateTypes.F && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", + "\n diffs.Where(x => onlyActualETs.Contains(x.EstimateType) && Math.Abs(x.Value) > Precision).Count().Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -713,9 +725,11 @@ { "cell_type": "code", "source": [ - "cashflowVars.Length.Should().NotBe(0);", - "\nactualVars.Length.Should().Be(0);", - "\ndiffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);" + "if(EnableScenario) {", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n actualVars.Length.Should().Be(0);", + "\n diffs.Except(actualVars.Union(cashflowVars).Union(actualOrCashflowVars)).ToArray().Length.Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -795,9 +809,11 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);", - "\ncashflowVars.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().Be(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().Be(0);", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n cashflowVars.Where(x => x.EstimateType == EstimateTypes.DA).Count().Should().Be(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -910,8 +926,28 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().Be(0);", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb index 3e2c7fce..002c811c 100644 --- a/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb +++ b/ifrs17-template/Test/ScenarioYieldCurveImportTest.ipynb @@ -257,8 +257,10 @@ { "cell_type": "code", "source": [ - "actualVars.Length.Should().Be(0);", - "\ncashflowVars.Length.Should().NotBe(0);" + "if(EnableScenario) {", + "\n actualVars.Length.Should().Be(0);", + "\n cashflowVars.Length.Should().NotBe(0);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -304,7 +306,7 @@ { "cell_type": "code", "source": [ - "diffs.Count().Should().Be(0);" + "if(EnableScenario) diffs.Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -418,7 +420,7 @@ { "cell_type": "code", "source": [ - "diffs.Count().Should().NotBe(0);" + "if(EnableScenario) if(EnableScenario) diffs.Count().Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, @@ -455,7 +457,7 @@ { "cell_type": "code", "source": [ - "diffs.Count().Should().Be(0);" + "if(EnableScenario) diffs.Count().Should().Be(0);" ], "metadata": {}, "execution_count": 0, @@ -492,7 +494,7 @@ { "cell_type": "code", "source": [ - "diffs.Count().Should().NotBe(0);" + "if(EnableScenario) diffs.Count().Should().NotBe(0);" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 67836a8d..23d90c66 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -30,7 +30,7 @@ { "cell_type": "code", "source": [ - "public const bool EnableScenario = true;" + "public const bool EnableScenario = false;" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 330a4f3b..89db5cdd 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -565,7 +565,7 @@ "\n if(Activity.HasErrors()) return Activity.Finish();", "\n", "\n if(storage.DefaultPartition != storage.TargetPartition){", - "\n var bestEstimateIvs = await DataSource.LoadPartitionedDataAsync(storage.DefaultPartition, storage.TargetPartition);", + "\n var bestEstimateIvs = await DataSource.LoadPartitionedDataAsync(storage.DefaultPartition);", "\n ivs = ivs.Where(iv => Math.Abs(iv.Value) >= Precision).ToArray().Concat(", "\n ivs.Where(iv => Math.Abs(iv.Value) < Precision).Intersect(bestEstimateIvs, EqualityComparer.Instance).Select(iv => iv with {Value = 0.0}).ToArray());", "\n }", diff --git a/ifrs17/Utils/Queries.ipynb b/ifrs17/Utils/Queries.ipynb index d682396d..6fa652ed 100644 --- a/ifrs17/Utils/Queries.ipynb +++ b/ifrs17/Utils/Queries.ipynb @@ -432,15 +432,15 @@ { "cell_type": "code", "source": [ - "public static async Task LoadPartitionedDataAsync(this IDataSource querySource, Guid partition, Guid? partitionBackup = null)", + "public static async Task LoadPartitionedDataAsync(this IDataSource querySource, Guid partition)", "\n where T : IPartitioned", "\n where P : IPartition", - "\n", "\n{", + "\n var partitionBackup = (Guid)querySource.Partition.GetCurrent(typeof(P).Name);", "\n await querySource.Partition.SetAsync

(partition);", "\n // Temporary workaround for physical database: where clause is necessary", "\n var data = await querySource.Query().Where(x => x.Partition == partition).ToArrayAsync();", - "\n if(partitionBackup != null) await querySource.Partition.SetAsync

(partitionBackup);", + "\n await querySource.Partition.SetAsync

(partitionBackup);", "\n return data;", "\n}" ], @@ -467,7 +467,7 @@ "\n", "\n // This is for scenarios affecting parameters solely", "\n // And for the best estimate when parameters are updated", - "\n return await dataSource.LoadPartitionedDataAsync(defaultPartition, targetPartition);", + "\n return await dataSource.LoadPartitionedDataAsync(defaultPartition);", "\n}" ], "metadata": {}, From a58a80c79ef94a2a483a45247917b38368c69a9c Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 23 Jan 2023 16:06:54 +0100 Subject: [PATCH 63/64] make args and storage initializer more robust --- ifrs17/Import/Importers.ipynb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 89db5cdd..3f229809 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -100,7 +100,8 @@ "\n await workspace.Partition.SetAsync(TargetPartitionByReportingNode.Id);", "\n await dataSource.Partition.SetAsync(TargetPartitionByReportingNode.Id);", "\n ", - "\n if(args.Year != default(int) && args.Month != default(int))", + "\n if(args.ImportFormat == ImportFormats.Cashflow || args.ImportFormat == ImportFormats.Actual || ", + "\n args.ImportFormat == ImportFormats.SimpleValue || args.ImportFormat == ImportFormats.Opening)", "\n {", "\n TargetPartitionByReportingNodeAndPeriod = (await workspace.Query()", "\n .Where(p => p.ReportingNode == args.ReportingNode &&", @@ -319,10 +320,10 @@ "\n if(ApplicationMessage.HasErrors()) return null;", "\n", "\n var main = mainTab.Rows.First();", - "\n var reportingNode = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.ReportingNode)) ? (string)main[nameof(ReportingNode)] : default(string);", - "\n var scenario = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Scenario)) ? (string)main[nameof(Scenario)] : default(string);", - "\n var year = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Year)) ? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", - "\n var month = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Month)) ? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", + "\n var reportingNode = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.ReportingNode)) && main[nameof(Args.ReportingNode)] != null ? (string)main[nameof(ReportingNode)] : default(string);", + "\n var scenario = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Scenario)) && main[nameof(Args.Scenario)] != null ? (string)main[nameof(Scenario)] : default(string);", + "\n var year = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Year)) && main[nameof(Args.Year)] != null ? (int)Convert.ChangeType(main[nameof(Args.Year)], typeof(int)) : default(int);", + "\n var month = mainTab.Columns.Any(x => x.ColumnName == nameof(Args.Month)) && main[nameof(Args.Month)] != null ? (int)Convert.ChangeType(main[nameof(Args.Month)], typeof(int)) : default(int);", "\n", "\n return new ImportArgs(reportingNode, year, month, default(Periodicity), scenario, default(string));", "\n}" From 24cacd41a1abe60b6cafb11b82c57ecf4c0f2d7f Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Mon, 23 Jan 2023 16:28:06 +0100 Subject: [PATCH 64/64] pv cleanups --- .../PresentValue - Episode 2.ipynb | 12 ++----- .../PresentValue - Episode 3.ipynb | 35 ++++--------------- ifrs17-template/Test/Tests.ipynb | 4 +-- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/PresentValueSeries/PresentValue - Episode 2.ipynb b/PresentValueSeries/PresentValue - Episode 2.ipynb index 37e9ce42..804597e7 100644 --- a/PresentValueSeries/PresentValue - Episode 2.ipynb +++ b/PresentValueSeries/PresentValue - Episode 2.ipynb @@ -168,10 +168,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"YieldCurve.xlsx\")", - "\n .WithType()", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"YieldCurve.xlsx\").WithType().WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -180,10 +177,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Cashflows.xlsx\")", - "\n .WithFormat(\"Cashflow\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"Cashflows.xlsx\").WithFormat(\"Cashflow\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -507,4 +501,4 @@ "outputs": [] } ] -} +} \ No newline at end of file diff --git a/PresentValueSeries/PresentValue - Episode 3.ipynb b/PresentValueSeries/PresentValue - Episode 3.ipynb index 16605c69..3463cc41 100644 --- a/PresentValueSeries/PresentValue - Episode 3.ipynb +++ b/PresentValueSeries/PresentValue - Episode 3.ipynb @@ -168,10 +168,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodes_CH.xlsx\")", - "\n .WithFormat(\"DataNode\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"DataNodes_CH.xlsx\").WithFormat(\"DataNode\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -180,10 +177,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"DataNodes_DE.xlsx\")", - "\n .WithFormat(\"DataNode\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"DataNodes_DE.xlsx\").WithFormat(\"DataNode\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -192,10 +186,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"YieldCurve.xlsx\")", - "\n .WithType()", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"YieldCurve.xlsx\").WithType().WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -204,10 +195,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"Cashflows.xlsx\")", - "\n .WithFormat(\"Cashflow\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"Cashflows.xlsx\").WithFormat(\"Cashflow\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -216,10 +204,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"CF_CH_2021_12.xlsx\")", - "\n .WithFormat(\"Cashflow\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"CF_CH_2021_12.xlsx\").WithFormat(\"Cashflow\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -228,10 +213,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"CF_DE_2021_12.xlsx\")", - "\n .WithFormat(\"Cashflow\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"CF_DE_2021_12.xlsx\").WithFormat(\"Cashflow\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, @@ -240,10 +222,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"CF_DE_2022_12.xlsx\")", - "\n .WithFormat(\"Cashflow\")", - "\n .WithTarget(DataSource)", - "\n .ExecuteAsync()" + "await Import.FromFile(\"CF_DE_2022_12.xlsx\").WithFormat(\"Cashflow\").WithTarget(DataSource).ExecuteAsync()" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Test/Tests.ipynb b/ifrs17-template/Test/Tests.ipynb index 5e1cafd9..3a29c378 100644 --- a/ifrs17-template/Test/Tests.ipynb +++ b/ifrs17-template/Test/Tests.ipynb @@ -30,7 +30,7 @@ "cell_type": "markdown", "source": [ "Comprehensive collection of tests executed on top of the Systemorph use cases (initialization).", - "\n
Execute this Notebook using at least 16Gb RAM." + "\n
Execute this Notebook using at least 20Gb RAM." ], "metadata": {}, "execution_count": 0, @@ -163,4 +163,4 @@ "outputs": [] } ] -} \ No newline at end of file +}