From 5e619f677e7d8559d4d3816212eb1425bdc34a8e Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Tue, 29 Nov 2022 17:36:38 +0100 Subject: [PATCH 01/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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/53] 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 236a2b73d66d55e0adcb61fed3f1d1cf9559831f Mon Sep 17 00:00:00 2001 From: Andrea Muolo Date: Tue, 13 Dec 2022 18:33:16 +0100 Subject: [PATCH 29/53] 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 899b7f9dc89d136d6ad08dc67101668245245afb Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 14 Dec 2022 18:51:21 +0100 Subject: [PATCH 30/53] 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 31/53] 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 32/53] 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 33/53] 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 34/53] 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 35/53] 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 36/53] 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 37/53] 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 38/53] 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 b9ac24752831bfe498f480d9fde91782f7e40672 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Wed, 21 Dec 2022 16:21:37 +0100 Subject: [PATCH 39/53] 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 40/53] 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 41/53] 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 42/53] 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 43/53] 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 e53cb945a882fde5346eeda699ddba46efb97845 Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Fri, 23 Dec 2022 11:08:55 +0100 Subject: [PATCH 44/53] 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 45/53] 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 46/53] 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 47/53] 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 4715003afd40556b5afe194bcc35e12f9abf718a Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 5 Jan 2023 16:43:41 +0100 Subject: [PATCH 48/53] improve equality comparer --- ifrs17/Constants/Consts.ipynb | 9 +++++++++ ifrs17/Import/Importers.ipynb | 22 +++++++--------------- ifrs17/Utils/EqualityComparers.ipynb | 13 +++++++------ 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 0d6ed58a..08842d5a 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -63,6 +63,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public const double YieldCurvePrecision = 1E-8;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index eb05c826..f2b4afac 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -270,7 +270,7 @@ { "cell_type": "code", "source": [ - "public static async Task CommitToAsync (this IDataSource source, IDataSource target, Guid partitionId = new Guid(), bool snapshot = true, Expression> filter = null) ", + "public static async Task CommitToAsync (this IDataSource source, IDataSource target, Guid partitionId = default, bool snapshot = true, Expression> filter = null) ", "\nwhere TData : class, IPartitioned", "\nwhere TPartition : IfrsPartition", "\n{", @@ -668,7 +668,7 @@ "\n var workspace = Workspace.CreateNew();", "\n workspace.Initialize(x => x.FromSource(DataSource).DisableInitialization().DisableInitialization());", "\n", - "\n var yieldCurves = await DataSource.Query().ToArrayAsync();", + "\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 {", @@ -682,7 +682,7 @@ "\n ? datarow.Field(nameof(YieldCurve.Name))", "\n : default(string)", "\n };", - "\n return yieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", + "\n return committedYieldCurves.Contains(yieldCurve, YieldCurveComparer.Instance())", "\n ? null", "\n : yieldCurve;", "\n }", @@ -690,23 +690,15 @@ "\n ", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", - "\n yieldCurves = await workspace.Query().ToArrayAsync();", - "\n if (!yieldCurves.Any()){", + "\n 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(yieldCurves);", + "\n await DataSource.UpdateAsync(toCommitYieldCurves);", "\n await DataSource.CommitAsync();", - "\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, ", - "\n x.Month,", - "\n Periodicity.Quarterly,", - "\n x.Scenario,", - "\n ImportFormats.Cashflow)).ToArray();", - "\n", + "\n ", "\n return Activity.Finish().Merge(importLog);", "\n});" ], diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index 1c38efa8..af61edf6 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -115,15 +115,16 @@ "\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 ", - "\n && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values, Precision);", - "\n\t", + "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => x.Year == y.Year ", + "\n ? x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values, YieldCurvePrecision)", + "\n : x.Year > y.Year", + "\n ? x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values.Skip(x.Year - y.Year).ToArray(), YieldCurvePrecision)", + "\n : x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.Skip(x.Year - y.Year).ToArray().SequenceEqual(y.Values, YieldCurvePrecision);", + "\n", "\n\tpublic int GetHashCode (YieldCurve x) => 0;", "\n", "\n public static YieldCurveComparer Instance() => new YieldCurveComparer();", - "\n}", - "\n" + "\n}" ], "metadata": {}, "execution_count": 0, From f78d5494ee446729afa12d539878f63ba4861819 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 5 Jan 2023 18:09:22 +0100 Subject: [PATCH 49/53] equality comparer --- ifrs17/Import/Importers.ipynb | 2 +- ifrs17/Test/EqualityComparerTest.ipynb | 101 +++++++++++++++++++++++++ ifrs17/Test/Tests.ipynb | 9 +++ ifrs17/Utils/EqualityComparers.ipynb | 23 ++++-- 4 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 ifrs17/Test/EqualityComparerTest.ipynb diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index f2b4afac..bef897ee 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -690,7 +690,7 @@ "\n ", "\n if(importLog.Errors.Any()) return Activity.Finish().Merge(importLog); ", "\n ", - "\n toCommitYieldCurves = await workspace.Query().ToArrayAsync();", + "\n var toCommitYieldCurves = await workspace.Query().ToArrayAsync();", "\n if (!toCommitYieldCurves.Any()){", "\n ApplicationMessage.Log(Warning.VariablesAlreadyImported); ", "\n return Activity.Finish().Merge(importLog);", diff --git a/ifrs17/Test/EqualityComparerTest.ipynb b/ifrs17/Test/EqualityComparerTest.ipynb new file mode 100644 index 00000000..f9f608f0 --- /dev/null +++ b/ifrs17/Test/EqualityComparerTest.ipynb @@ -0,0 +1,101 @@ +{ + "metadata": { + "authors": [], + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "code", + "source": [ + "#!import \"../Utils/EqualityComparers\"", + "\n#!import \"../Utils/TestHelper\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "using FluentAssertions;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var comparer = YieldCurveComparer.Instance(); " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var yc = new YieldCurve() {Currency = \"EUR\", ", + "\n Year = 2000,", + "\n Month = 1,", + "\n Name = default, ", + "\n Scenario = default, ", + "\n Values = new double[]{0.001, 0.002, 0.003, 0.004}};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc,yc).Should().BeTrue()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc,null).Should().BeFalse()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var resyc3 = comp.Equals(yc1, yc1 with { Month = 19});", + "\nvar resyc4 = comp.Equals(yc1, yc1 with {Year = 2001});", + "\nvar resyc5 = comp.Equals(yc1, yc1 with {Year = 2001, Values = new[] { 2d, 3d } });", + "\nvar resyc6 = comp.Equals(yc1, yc1 with { Year = 1999 });", + "\nvar resyc7 = comp.Equals(yc1, yc1 with { Year = 1999, Values = new[] { 1d, 1d, 2d, 3d } });" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/ifrs17/Test/Tests.ipynb b/ifrs17/Test/Tests.ipynb index ef37f404..7a5e9882 100644 --- a/ifrs17/Test/Tests.ipynb +++ b/ifrs17/Test/Tests.ipynb @@ -50,6 +50,15 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"EqualityComparerTest\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17/Utils/EqualityComparers.ipynb b/ifrs17/Utils/EqualityComparers.ipynb index af61edf6..488dc6a8 100644 --- a/ifrs17/Utils/EqualityComparers.ipynb +++ b/ifrs17/Utils/EqualityComparers.ipynb @@ -115,13 +115,22 @@ "\n{", "\n private YieldCurveComparer(){}", "\n", - "\n\tpublic bool Equals(YieldCurve x, YieldCurve y) => x.Year == y.Year ", - "\n ? x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values, YieldCurvePrecision)", - "\n : x.Year > y.Year", - "\n ? x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.SequenceEqual(y.Values.Skip(x.Year - y.Year).ToArray(), YieldCurvePrecision)", - "\n : x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name && x.Values.Skip(x.Year - y.Year).ToArray().SequenceEqual(y.Values, YieldCurvePrecision);", - "\n", - "\n\tpublic int GetHashCode (YieldCurve x) => 0;", + "\n public bool Equals(YieldCurve x, YieldCurve y)", + "\n {", + "\n if (x == null && y == null)", + "\n return true; ", + "\n if (x == null || y == null)", + "\n return false; ", + "\n if (!(x.Month == y.Month && x.Scenario == y.Scenario && x.Currency == y.Currency && x.Id == y.Id && x.Name == y.Name))", + "\n return false; ", + "\n if (x.Year == y.Year)", + "\n return x.Values.SequenceEqual(y.Values, YieldCurvePrecision); ", + "\n return x.Year > y.Year", + "\n ? x.Values.SequenceEqual(y.Values.Skip(x.Year - y.Year).ToArray(), YieldCurvePrecision)", + "\n : x.Values.Skip(y.Year - x.Year).ToArray().SequenceEqual(y.Values, YieldCurvePrecision);", + "\n }", + "\n\t", + "\n public int GetHashCode (YieldCurve x) => 0;", "\n", "\n public static YieldCurveComparer Instance() => new YieldCurveComparer();", "\n}" From fead68364757f80abfbb4255f111e0b28e3de0c4 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 6 Jan 2023 10:24:56 +0100 Subject: [PATCH 50/53] yc comparer test --- ifrs17/Test/EqualityComparerTest.ipynb | 60 +++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/ifrs17/Test/EqualityComparerTest.ipynb b/ifrs17/Test/EqualityComparerTest.ipynb index f9f608f0..444f18b3 100644 --- a/ifrs17/Test/EqualityComparerTest.ipynb +++ b/ifrs17/Test/EqualityComparerTest.ipynb @@ -15,6 +15,24 @@ "nbformat": 4, "nbformat_minor": 5, "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Equality Comparers Test

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Yield Curve" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -78,11 +96,43 @@ { "cell_type": "code", "source": [ - "var resyc3 = comp.Equals(yc1, yc1 with { Month = 19});", - "\nvar resyc4 = comp.Equals(yc1, yc1 with {Year = 2001});", - "\nvar resyc5 = comp.Equals(yc1, yc1 with {Year = 2001, Values = new[] { 2d, 3d } });", - "\nvar resyc6 = comp.Equals(yc1, yc1 with { Year = 1999 });", - "\nvar resyc7 = comp.Equals(yc1, yc1 with { Year = 1999, Values = new[] { 1d, 1d, 2d, 3d } });" + "comparer.Equals(yc,yc with { Month = 19}).Should().BeFalse()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc,yc with { Year = 2001}).Should().BeFalse()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc, yc with {Year = 2001, Values = new[] { 0.002, 0.003, 0.004 } }).Should().BeTrue()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc,yc with { Year = 1999}).Should().BeFalse()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "comparer.Equals(yc,yc with { Year = 1999, Values = new[] { 0.001, 0.001, 0.002, 0.003, 0.004 } }).Should().BeTrue()" ], "metadata": {}, "execution_count": 0, From ab3c287aa551b728d8a96751bf1aa1c816175dd8 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 6 Jan 2023 11:06:57 +0100 Subject: [PATCH 51/53] documentation and clean IHierarchy --- ifrs17/DataModel/DataStructure.ipynb | 25 ------------------------- ifrs17/Import/Importers.ipynb | 17 ++++++++++++++--- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index a9275444..2521b257 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -189,31 +189,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "The interface IHierarchy is used for modelling dimensions which have an hierarchical structure, such as [Amount Type](#amount-type)." - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface IHierarchy", - "\n{", - "\n public string Name { get; init; }", - "\n ", - "\n public string Parent { get; init; }", - "\n ", - "\n public string Child { get; init; }", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index bef897ee..8f5c995f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -261,7 +261,9 @@ { "cell_type": "markdown", "source": [ - "## Update the Target QuerySource" + "## Update the Target DataSource", + "\n", + "\nSource and target data space are of type IDataSource to allow update and commit to a Workspace or to a DataSource." ], "metadata": {}, "execution_count": 0, @@ -469,7 +471,12 @@ { "cell_type": "markdown", "source": [ - "## Calculate and Upload IFRS Variables" + "## Calculate IFRS Variables", + "\n", + "\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).", + "\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": {}, "execution_count": 0, @@ -650,7 +657,11 @@ { "cell_type": "markdown", "source": [ - "# Yield Curves " + "# Yield Curves ", + "\n", + "\n[Yield curves](../DataModel/DataStructure#yield-curve) are imported for a specific year, month, and scenario (not required if best estimate). This informations are collected in the main section of the file. ", + "\n", + "\nYield curves to be imported are compared against those already present in the DataSource and only the new ones are stored." ], "metadata": {}, "execution_count": 0, From 439e726fb3bcff02aae86eb616b85a9faabd3142 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 6 Jan 2023 11:07:26 +0100 Subject: [PATCH 52/53] pv update xlsx files --- PresentValueSeries/CF_CH_2021_12.xlsx | Bin 22926 -> 22999 bytes PresentValueSeries/CF_DE_2021_12.xlsx | Bin 22827 -> 22896 bytes PresentValueSeries/CF_DE_2022_12.xlsx | Bin 28391 -> 28474 bytes PresentValueSeries/Cashflows.xlsx | Bin 22854 -> 22908 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PresentValueSeries/CF_CH_2021_12.xlsx b/PresentValueSeries/CF_CH_2021_12.xlsx index bdc502b9dee82ff54fd14ec993a5dcb9137e1824..a7156d0c7b89d207597c6b29ade0e56d0cb85ef7 100644 GIT binary patch delta 11942 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 delta 11847 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 b5_m*U6dDoyPG1z794xI*_fA>s?<@Zc#|(&x diff --git a/PresentValueSeries/CF_DE_2022_12.xlsx b/PresentValueSeries/CF_DE_2022_12.xlsx index fe5e13b8f35227c1478fbd6fd39d889cf5f337e7..cbcadc97b0f86c090d871db54c51a7e0829c321a 100644 GIT binary patch delta 17404 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 W_@OkxORu>d_`N38n{<`G68|670U>7q delta 11800 zcmZvC1ymf()-4b`xCeLFKyV4}?(Pr>?%qHM8r(ftAh^40aCesk*MY&|O}_j7d+-0& zn_e@kYM))FYP$D1eX3VK)j|)}LRVuUAh|nnNXElLLH$T1LZAm2B);Mz?cx2b?@0OV zehb$UpxN)uYQqb4sxZ}UDCUmMHlxKH0 zVWgobfQ!C|`*{4}@XJkRs6&P?s}9M-7FS`+#6?25&{{2E7DLTs9re5YOZp&NK{|$> zW_k0Lpe&c~=(rk!HiztmIY}$>2#6>tGFwiAMih=rI%Kz`%BYvhzwi7_HKW!aBU!Ap zh7hW`=1jYeNi~TfRxv=oKo!`V#YJ7VA{Zlk2S~mq!NLBx{t$k8D?OR#tb@#xpE5F&!6}VT${G zOu+V*{ngjAF``fQJ3!q5NSBWfSB*rS6k?(|$dhUh?OOjw>7q6V9`#O}PA7|K! zIvDQ`I2W|n;!vT4nWI#?`!F?)YJassV@3~)k4(P_hVBDA9M^9!84M!&AG532WU8d27jD#Fx zCV{BH8Q)ti5)}y^q29y3_apMPgidd#w|H_w%@9D`S8vXf&vN=1GGCJ8c+E{+%j&2B zO!7R)UxF){P1B~+E)+|K?XK2IyYFGooYAaN`D=*?Wi{VCLhWOFAv%Yqt;ud4~03xM$h-j&7wcV6RFsSh%H+_@k^!t01Jl5bJ5^JTljn;%(%9`J6 z(43*pl~u39s?Oww5$EQBob{V;9+NZtLGM11)LDPZ*>~ge#i>7)cioFU z{a8iA9N!|vDTpCEsgE%IU-b^s|VHdgX*9u3a-@>9+4Up=$Ay( z_qcU4Z!h7H3xoZx?g*fuhOHAx(cS^?S-tG-vJw?zGubgh&yyd>m^YEq;_QMG%CEk* zrj{Ogtk#)_n!uUc3K&;BYzok3p2)R)PliHYItNWG_3d32GP*#S7gZJ~-B8MX$Ky}E z@sKkPu;>ZLI`+y2$t|)MSyx{>gYReeO2#Krpkm1L8rAjq7Yj{4Ng_qA<~RV~2h+uf z21q(H>^~8`5pMkFhcx!*gGXj0asqX#8k2lXZC#u4b)U*car==0zYfV zs>u;1PxDK7ba|mblZsrDOm1TXx1YM{I$esBs1ke?!THPlkLQ5>!b0|yqu!f1Vk4JM zHh?%roYkT5@j<{;2aAwb1_%TkOYY1WYI>q^yLukTLQoyqy9{a9NB!hpSrK+`==H&0 zEHI@-vFM^qa;VF;woMzxbhyXz`5vXM6AgBd9!tZ6%;ff&4cpnJ`j!h%zvp7bfDILh zHwDGvdZAm{Fu6#>uIiu4Yh0CD=;QZ?rb*!)?t0HY*?y7+{a$_*1Vd#6 zeKBT&l~JxP>ahY*@3g#tn!)d`JEr+3&1Nm;t*>)Z(gU2rr`~G~8t)EwcGFnU97xUqMZqFU^mmWL-~B zyCSd0K)~I;a#L>wS-|VL@yn&a>w~_oW(L&{Bm7}g)| zhl~|(Kc>@lfnHx9yq_<@T>&qb;41B9-O>D!v$@*B+O`JfvJ)c~CdM}7QSM}+63ey` z(uG>~vWs}cFUVw3PO973n5`||jAA@|lM)A3`z?s;*X_1e;LI(G>4se@N9^Kecj#& zTMS9_?1+Q?+{A?~7Nwg?!%iL#Qf}h1bJto)Yi|$y(`!(ior zN{d%I5p6T5;mKs3j}Rkm+>=2Bss#js1(qS0DA<+8D(=}Jg5)oT_!km`KtKLMEEYW4 z#YuGsS zPxxX*K1=*T9RQ(id>*pjXyh~USz06Y-D_y_7WK~QBL#QpeIbIm)@kUgAM<|uM13-v z^JL_;(*PpfuRlE&+{X}f5Y#-i)N@%8*WFE!lL=7D@jlI#jfkHvH$?(SEpyAj{J-B< z@r|t#?zRf-dgYBc%ekhzT3pC4Yl+0AmS+E`55c(orTnMkZXGPw0Mh8iGney5eQfk1 z2&h znsM8n!cvF3z5!IN*f0Xlx{G|{zQ6P@XP-qInvi~Ds0}w>4J&U+Poue}shJiOrj4ek zIXT`B+Z5aAf{Q{je>1oFj!r81=2DK5^arMQo2j4o1P-^u#-N zzjxv?s`LPNInL5jw+TZRX3`S3{bRok)2g7OFI1tm2o@Yr1>3!s;9~XJUOuKR*G;mj zzq{tUdu%!?yW{vD%{#gH(}ARm((c8`qE;K#CpiYiCD-0}m3Ecm`VBkUy=QXBe6)5% zGTB0a##1jGv?upAvyG9Qcrb34T22khwU@Mq!v%&bq5DIyOxjhFbCi6~b&5AA#hEd% z=;MOrfB+j{X~;eon#UL@IT&->%Zq2{^CsBPK?<6A0?x}~$h?^EO>9mPV_=1jJK`95 zO1$}&zu_^miG0wT?wm##bW;bvISQbez0TzakI$_`B*ZABn;?Z|FxG zBV*e=XoXEMh@8TPTS)G78bq7l=^>r>ZdT}D*hp1Hvq7U;4`#y{>3QC&&ri&v zEF<(IVSUFJ{(Up{IrGxU%4wB{3|>V0^nHcO_Ad;(MpG#M1pHFe#38dS-t=v#KMwH5 zrC{NAbg^Lk7(AXuFw^wLAEa_RGg$)XL4Z@>bg?wrS0A4^Pmx>6!2|Rx)d1bwKp-W` zFxq=?!?IcGkrlY(j}DsEC-iysT+=r*+&0XnXN}A}f;wmcxW5Sb9vo#R{O4&l0x_QlYcM_C2egwRl z90O+LrYC{U;^>(;D?*ya_STq5yJT9Q@+bXBBDK9rhIc$u$Pk3F3tMWKOx8ol+4sAZ z=$w#HMK$_sF)Stp2%w42FgPc70GwJF(yT5D6I^}TNLw>xf6Z{dZ5ASbLwSlNFzj_i zNoF6L!drs?^Z1<;eeJp6R%MA&xG&@#(Bc;rOm-~OQ15Q1 ztW_%#k;n$r-n8=97%8Tu@SG0mI4v@^3e>n;iYoW^VR?M+Us-qhA{c@+0Ia%h+Kj9Q zGkjMVVoQ3~y9O+5-_L3nFb{P3S_@$;>EU`$5{y0raLCB~jsn6^X%1ozU)jV~BZdbX zFt)HbxKt~5@cnWLR@SsoI1N9TYeT&Oah%Hdh1zTp2~G3k^kAv72AaND4ruKj1&MQ@ zOd|CRWP;wnPad~gs^NTD1C#^~KA+%CcCzFIGe)kL(4mBkONybmy5nf5GQ(NHtMxF( zyXqs(WVPlKwD3jcjZX%_=wF9yYv9x!u>C+S&V<=D4Kh5AG>ex&Hj2oW;f8s0OLV7! z^QB6m-w0>bZ(rY+GAGioZLK_HgnWpl9 zJGZ*}sz|yC%{>86iH@~JsmsX2fow*^i!n?TkHtV;eQ_yV88^s**2s29FGKr?r3FdU z{ozbHh3Pjn*974G+iu+cqvo9%V-jsH<;qX$L%7isxSU7L`O__W0YuvU=MhW__r>~L zFE<598l9xtbG`E|z$hecod=5ct4I`i8Q!S}KcXh-Q7COR30M^hlL#U8*QIWx&xGTxD$4l$=}U0vnDEgiJz}jCSAH zzfD*BVPJe!WQ+X*Rf4$}s6?9h0x>~t znEda+F=@awvoYej=$+DPN#~)dKs7d55TIp0 zV_ry&&x?Yn{QlQ$b>Gj#_?63fiw!I~n1DXg;!-w`%ArGOeYn!;>P-P9BHQ4@rJi`p z%uL8Lg#3q3lso-81O3kU-fEMe^Pk+ytlYNMUf)i~0eN047vp(swB&x$8q&|hXctGw z+9*qCZ`g@ZzL5XQ?IMfRW~Wxm8I=2FF}b%W6r|DJ%Y!u&S2l_Q+jeVx5k`r(YFmp! z8!-siiDcHSt@+C=Q-|JWnh5D?Dr6_j4DXlJL-@Fv!1Jbs92#5&ob5P#H8q1o`!FGC zq#hn_H^3ReSMxbs2fLlYu7druxhJP8a$8x1Ep8(Lv>!%j&u1(I(Yy6_dIx8>{ufF% zDB~}`>Zg-o@WTalJ+eR!nK`sgzVvSKNf|PrxEy%HaE;6!dXJ!OVt>m6l6&*Ff=`$6 z!T60*XQ8UA@sS*4w?B}L$ax!kmNj|(nk|6}#ZiVb_7X9Tn?_k~| zD;Yw6Lrh?KGqTjpC+{*6X*`9#hN&yy!GVVF=5`cmjF)3q_=aU;$p1q`r#du>m}nNl zw-w->pwOMfz)vXnBHH?3^)2Izg6>kHZ!k+ft``Ha!O#{YNCH`{FiW*H%d&z{Y)}2~ ziy`ya1%-;^2WOXxx|170x+no6EY$G$JJf=xT`ot+CITvo6VNDD_|@ha;skK)gmn4A zO-p&m?y!ouDKG?}PZ30FKbGjT`pI~60BzVZs_@a!N~-Wb!?>T15Fx=zDMcd6#joAw zNELo9gc-tsPKgK!SJCSbPsszSaQR8&DDo^f3{kJs0NCw@N6Zl0SW3jI^;mKZUz~ry zyp=DAV#(5&A&Y0y7^Omy{}@WZO&Np8-lRVsSq{Eq%cZ_|4u+48vd66 zaq<5pNca-}Zx8cfm=XmWvE)FOk4Uf+6`3T&&o^>6*|2{(UO)M-SyaiSG4h3D$la_$ zF++&P=!2U}7BMA2dzPR*P0*e@XipKeXAjylypgcYytW9 zH;9-Ih&wYNnqcxa6YC0NxlDsO-!3hWRCZD~3jqCdI*F}n<4X}fPrh_^D5_1|zgL#<4)~6eFtn&;2k_-M%Ae~l_}=!#1Z3rf9?_%A`gAUgp;KT8m3N*2pDaC1FU=7 z$PdS@*9QCcnUI>a6x0|!F>iL%ZeQTq5Y6qV-x=nfeii7RcjdmI`8G4s1=DB2{qUYh zSG(dwS6dpa!r#-&{3@>sXW0jMtW+J}m&{J>#+=Bq6fl3zbBd$FC?lgiK93R2@gVeB zh!;v#q95w+17WT8?SAav?DU?tIk1!l%kggqhRf#=AE~a4Wut~ERSBH7AO6~qBQrQR zljS|yvr8q^0E$lyi}P+tmJtp^1k#DimQPvUUuW_A%*@*ys7r%&`L_X+NPa}6^Pgnz ztIkH{WB-xCMtlJ8NiOf%K3box!1tCDkEX@Bj+~1CmOaGmU9+}xg>?@1wDCv5gAX(w zi*c0?sl=_~p-y-nh8agV#@*i6%;y-hpJlYy(Gi7J8x$;Q5t_3oAIr$3C-2Z|Iz!#& zpD*y%PO1eMk`h%v0UVD7r#a6gW`U@O2?68`^-8)CB&@UXboc*gfM`bZHj)1R$3m(e zRT*ul%tL^Wl~*_kcVXFCSR!{+c*V!z%1D*&?O(Q&Sm+!Bf1R6TXW6>;jw)g!BWFAm z)LBOsrR>hNiNsNZDOlEg=hxk1A$e>RRtw=pNho3mBHt@8EzEQ8jdHHMQidy zWFV^zDk~e9D=eFC;V(>av)>eNRq+1Us&dbNSo&45r2&t zG3Mlpo0x9CA^p&z%Vhi{G4IP=&FoZh3~=JgQYXk*Bzou0IDC?#>l#rpJL3!v@wBCo z^us1jOA9ItH0-zSq+0l!2fVuQcG&2psn_;0GLq9iZ1Vd~eU?M1GBuou^^Xf$5w-dz zAhOm3`duJ2E6@)nT+qDzQc(SvU)Ws!X~vd$$cB-jhp$ z=HqgpNzH;#j}rn;`WUA)@IteA24@RfeU7Q5mZ~8N^P35Ayj9t>&+V>`wAxgjL_x3V z3w57=RyiLG!$V~FT^!@W2u_;Fiaihp}G&(%uG%7rBrijR_}ubPsKI9Etr&{y~zXS6OqD*NpZ2{zsk z8IGDN^ON$)`+7PETnfvIuw>5_dHOo8SzpGmP<}k)m3?HJV}M#_We7yh!_>2jro@_0Kqj*mXvK+a4TkCkES58H)# z!501&{>Ax&c845;4z2N4!felZY=&cGzw*b-E?xI?snt&VNzW$M@wFG=>i6R-!oMHA z)+Z`DuCk+qzD9ocP1SiOuv&sP^Cj@n(I%Iy`eHU4p`z<%(`wIt(iMxGP>42u5(N9X*Q3=icQaKG94a<6D^Cnn5Ck1x0vn|PP z$?ArihF`%9c?{FBhT)<=x%e0dF5?|pE=AiTJ{@8B|K?gL1NIz~et4oLbv@CFJB{e9vqA1)y8xXO#s$yWU;I%PObm9of9jq6Sf4Yy(zRQR!~ zUV=~J9)q6$^LhTOe^`<|gH4ShF?HC0ftia$K*qZXsyJcGbB|!(TMbWz;k8&c%FTjW zwGWAzYp*W)@SK~+DDfY*PhUtAy z2_6}@noaGW??e*fb{_PQoFHU4Vj1~OzX>YqxHD{|MUrNpdv%(4q>cR@f@x$2CYQBmW}UI0v_9zJuY>`f~3DGl#-Un%AB3-}BP zLG~m}Qj4Lo-g@hx+f|7&;`?(XQ}41KXInW%@TEVSQh9ea*fiT@%a;kIg0zFX&)*6> zGAc^qfw1)rl=w4sfe{1eU4KZPUJCmq+U~0VTW(pzO(UMBGyF21j1yp&+W#R``XW!g z>eqtYVw}McRn5k^q~xHDc{f#t{n<&CD$A20lQ}t5RJoN!0rmDm<`793G=Z_|grgly zfIX?nIia$HB*R!3|1CxGDIal|Nh67v#^x$Are;kCXZ} zKU&?2xj?WVwGM3{O;L7e*XVSMlcFcYUoB@tJ_hlAY^LSLq=QN8p!brU8<{kt*yvCW9|2-_z;Qw`4 z3(a-!1P#22Lcl|3COxwO=?h8^CPdNT%d@5!Ft_NqY~$wp_IyR(&%I^E>j)LX@ukN@ zKgnAXuL;W;vhF2~{EL96UiH!a38|dFQ*;U)BYp7WbH?)z7Z$9IBKz&~=`iJ^Xk)v# zG?OsE!50*+Hydi#(jsIy_H6nTv0%p(Nb0R~L)WG~D7yE;ex^OnVwrF@HiXu^eQ|96 zVe}cOOa;cY7cH^I@_#d@8O(5{6_0AhDOIMFY4XJ;92`A{cf7)!bv`aZHTPXwOgo$0 z9e=4o`0WUdX{{F4i>?jxgEUzx4s6DP% zkZvuuc6lmbk9n+uE5ADIWf$d39IE5bnbJWHgPnb4@6Fgzq9pFzqkn<>8{9~3?}PgX zprN2R5_^P*fq6s6S#|=rEnn&v@jc&^hcY+%@j2YkxbJrAJV<8>pjs)H6AXbbFTU?_ zkr==&CpAy4%I+sx+5o@4;4FsT`NB72W*yP9t;_|XisinSKjV?O6oiWe$0QZY5io6~ z#$Bai;RE%HUq1*8E_E@DI`OJm_kKMeR%8-+o=WHS2Z(bB?$p=T(&HY^tA!@%rawJC-n-8z!^8-5+qY2=xXJw0UKP zohx#+Kxdx)?tcEMEamt_fq(wQx$KoO32=E7R{t6jB#ZK62GxuV@sqKEE?529M}|@Z zzoc~!1JFrt7!Wkj%85<*rd+yzcQav~4=Jzq`}m5yHdJBYfMo!S)Q+|8wUyk>BpRd*Qw3`T>3iW`Fm7pfmrY?Kv?Kpd zCs6xM6}%B@JE7MHpV^>)cTx|l zwiX{}Pp?MrpYFha{fFA3>{WA)Pb_O_{OQzySPtz*n_Rc7l4kyNbLeZ7YvJzk({{P{G& ze0+Dc*yoPy;eqmwXMsl!*(jA~#HjPhyk)7%1My5f`qJ3h{o$%w$WNd3jHh_$^a!$R z7~Or?_BdQ#y(rUXod^Tj`aV2vuR0o|ZN@pY`n@{bxCtkXgWH8!GrCA}GJW})eB@H8 zA|)0U$wo78*v-MxSiy+iiL25DLss}5|yfWynJ4!q#1E!cZPaA z#i^Zem<>IQqmpE3Ip@jYSk_)1;us(9yWWXEvqqtmPWu`bG6I>=kDuYBz5*37Y|Yxf zN}8eVb<5p#ol{+<^+5k9#ibqhRe9BQ6(bAC<(FV4WQ+6mxlB&JgII0ST77b_S)y@i zlmhI>4K8=2ud1nE8>P7QN|S|?5p+81TG5sqT` z3lsTsJ21}|swY!C`UyYoPN*sJYrd=9v`gD(rJ;bi+_0jI20VEaf?)gPu9+Vx{k2U> zrRgZm!i61?QFyZCcVT6vI4CXi`kj*_qUXHv+|Z=Jj4TiT*uRC#R?|~Qa3E9KO!Vuf z%Q*GYrA*O%JOn_ zq`=^t0Ckh2kc4kF{Y5CT-go3)x#8&CNGzyIVmAT{`LT5lRmrT{OyN%N^>~-U+w8*M zuYJKE&dVof`{UvqXQ_don zaN#VT=mA-Rbo1r@IDb8^%Y(Rn8^%cXX#j57w|vDqzc=jUOMZl$0{Ny~kPc3XMNWP% zj%c~^+;s0d&(_r%+uWZcasC=15s{L@SmHNg%P?%q)H`P5Q7jrk!~^0Y^gSBUe+f+y zk#5VOzo;?C2viujkg}Na%VW7z#YwtGFXB z!w!C=!4hR2IK`$(;`nA=sXH0aFv;~O4(32nxauvMS}6%$=rz0{$Qt`OxFLx>3=?SC2~1W&iSq!31Yyche( zD`p&&sEW+h^b7es+u)Ql+Hws{1dc{B2>s@8ZYvGG`30ZUaKQVeMqJ@%fm-8IkKZQ2*CxI4N0(KmZyN(Cz~|Z1gey; z--G+v$<4_iD_{+iVnlu9#{VhTC@~!@8{w+L5KOhgJCbfDyE;==e`0P+T2d1F+>OhG z%26#I7(dmBJ9b@)&-Oe~)pM{GI+ZWRN3ae39l+scj~N`oC=;^q1}-y(4`9z`Zp zD&eOk*~!pP=fjSXjC^+mL$254U=tW}su{t>oaT3mDQEeZlab|IS7L_l2;WE=olX>OqOn%zo_0U18CYe68&?Swa=zRrDY= z&U>0=A0*o8&hjl8RJ}A+0=wuFYvK6>5m>TYHabfY-@cy=-_o{@=+SsP1_gHw3kOWR z+*fX7ZGav!mnxz&j?U_jHL@!vZt>70vo+tmk#?QOhKaTxbBrrEJEl41+8wId49F*S zHp?=+%(pguEQlYdSbN`%YDb(`UWZYl-b}2hz_w~7wO$e6Iz!`O>*-{QxhdRgo6hsi zF1ypud_*U1pGW4Lwk&5)GqL?i7hyeSl5q9u!3;3S=Cn@`j}P@$Ff}?piD1CN8^nMn zWJ=Z2KjxF?4HLd30g1=Mds{_M$azyD3(`yn$o@icSH_X>qQouEBq=I-Is6-tS)XR9B$X?|Y%W_j+u+1p?@ z51rCL6S%)BAj?%!+I!CZXFmwXJ9SKmUPq%y3k{4b^|51woXfOBs>NDoMimR1L+Ckd z85x|QW?e9MLpWeTG}9^MpeLruTWJMeUA9RP5V9~n_)`0Wrk-9lR7&Tk!e&D14P%uo z9wko#`htl(nBZ4!Tc>S^d9RP()k0n@vUrLNE&H}!ZS*upAbDenH+@1MwX=E0ACBlw z1Yl?Y;T*HHwjC}yUY?YXIItx%VlO1gOsZ8`L;;Ec3SsV(8I+#N-Hp^W|5F<~gSAq{ z&PGwLlJn%U8u7q#$6H(Om|dN3Q4CTe%G;-x+ulAOwEs*cf1LTCrm&x;Waxl1!i>3e zxetnd^O-;&ig9xb^)(!RPu>BGKpSsIhxd-mQ-ht-ORD$kJ z4Ahi{fkjK4#>7qB(8MMF&zp!)P>>fA|LaqS2_X?CGH5ZvY%~7Dx7A{UR!q#$q9yvz z?i&gU^}ohIL5(G@YLOHDyNZVtd^rEh-kyl3Eeca7k~k_tlNg}Q2vhwL(j-b8(B^_3 zNqo>2g`P|l)Zr)kPr3O2dXPwr*P$c+=b}UQ3Ehw{=Kq>uT_JH!M+llK5ldGHnm Date: Fri, 6 Jan 2023 13:59:50 +0100 Subject: [PATCH 53/53] improve doc --- ifrs17/Import/Importers.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 8f5c995f..638f6679 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -357,9 +357,9 @@ { "cell_type": "markdown", "source": [ - "## Get Args and create Partition", + "## 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. " + "\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,