From 521842114b4dbcd8a7a441ba471a2b7869a638de Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Mon, 8 May 2023 12:56:09 +0200 Subject: [PATCH 01/38] Reports --- ifrs17-template/Report/ReportEyCases.ipynb | 851 +++++++++++++++++++++ 1 file changed, 851 insertions(+) create mode 100644 ifrs17-template/Report/ReportEyCases.ipynb diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb new file mode 100644 index 00000000..c7955b75 --- /dev/null +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -0,0 +1,851 @@ +{ + "metadata": { + "authors": [], + "id": "DCgii_7-fECfGgqIf40f0w", + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "", + "\n

Report for EY Cases

" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The Reports shown in this notebook are based on the cases presented on the \"Applying IFRS 17: A closer look at the new Insurance Contracts Standard\" report by EY (June 2021)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Set up data and configuration" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#!import \"../Initialization/InitSystemorphToMemory\"" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "Workspace.InitializeFrom(DataSource);", + "\nifrs17.Reset(Workspace)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Report configuration" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var reportingNode = \"FR\";", + "\nvar reportingPeriod = (2020, 12);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var pv = ifrs17.PresentValues;", + "\npv.ReportingNode = reportingNode;", + "\npv.ReportingPeriod = reportingPeriod;", + "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var ra = ifrs17.RiskAdjustments;", + "\nra.ReportingNode = reportingNode;", + "\nra.ReportingPeriod = reportingPeriod;", + "\nra.ColumnSlices = new string[]{\"GroupOfContract\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var experienceAdjustments = ifrs17.ExperienceAdjustments;", + "\nexperienceAdjustments.ReportingNode = reportingNode;", + "\nexperienceAdjustments.ReportingPeriod = reportingPeriod;", + "\nexperienceAdjustments.RowSlices = new string[]{\"AmountType\", \"EstimateType\"};", + "\nexperienceAdjustments.ColumnSlices = new string[]{\"GroupOfContract\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", + "\nallocatedTechnicalMargins.ReportingNode = reportingNode;", + "\nallocatedTechnicalMargins.ReportingPeriod = reportingPeriod;", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actuarialLrc = ifrs17.ActuarialLrc;", + "\nactuarialLrc.ReportingNode = reportingNode;", + "\nactuarialLrc.ReportingPeriod = reportingPeriod;", + "\nactuarialLrc.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var actuarialLic = ifrs17.ActuarialLic;", + "\nactuarialLic.ReportingNode = reportingNode;", + "\nactuarialLic.ReportingPeriod = reportingPeriod;", + "\nactuarialLic.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var financialPerformance = ifrs17.FinancialPerformance;", + "\nfinancialPerformance.ReportingNode = reportingNode;", + "\nfinancialPerformance.ReportingPeriod = reportingPeriod;", + "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Illustration 52", + "\nComparison of the liability for remaining coverage under the general model and the premium allocation approach when there are changes in expected cash flows.", + "\n", + "\nConsider a group of contracts measured in accordance with the general model. A premium of CU2,000 is received at the beginning of a two-year coverage period. The entity estimates fulfilment cash flows in years 1 and 2 will be CU900 each year. The opening contractual service margin is CU200 [CU2,000 — CU900 — CU900 = CU200] (for illustration purposes, discount and risk adjustment are ignored).", + "\n", + "\nThe entity incurs claims in year one, as expected, of CU900. At the end of year one, the entity assumes that cash flows in the following year of coverage will increase from the previous estimate of CU900 to CU950. In terms of paragraph 44(c), this change in the fulfilment cash flows relates to future services and consequently reduces the contractual service margin from CU200 to CU150. The amount recognised as insurance revenue because of the transfer of services in the period, determined by the allocation of the contractual service margin remaining at the end of the reporting period (before any allocation) over the current and remaining coverage period applying paragraph B119 amounts to CU75 (CU150 ÷ 2).", + "\n", + "\nThe liability for remaining coverage at the end of year 1, in accordance with the general model, would be CU950 + CU75 = CU1,025. Revenue in year 1 would be CU975 [expected insurance service expense of CU900 + release of the contractual service margin of CU75]. Revenue in year 2 would be CU1,025 [expected insurance service expense of CU950 + release of the contractual", + "\nservice margin of CU75]. ", + "\n", + "\nIf the entity had applied the premium allocation approach, it would have allocated CU1,000 to profit or loss in year 1 (assuming that the expected release of risk would still not be differing significantly from the release of risk at the end of year 1), as revenue and the liability for remaining coverage at the end of year 1 would be", + "\nCU1,000, i.e., a different amount compared with the general model. ", + "\n", + "\nThe requirement in the general model to allocate an amount of the contractual service margin in profit or loss after making adjustments for changes in expected cash flows relating to future service can cause the liability for remaining coverage (in accordance with the general model) to differ from the liability for remaining coverage (in accordance with the premium allocation approach)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "**TODO** Add PAA and check projection 1" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var dataFilter = new [] {", + "\n (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pv.DataFilter = dataFilter; (await pv.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Actuarial Experience Adjustment" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "experienceAdjustments.DataFilter = dataFilter; (await experienceAdjustments.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margin / Loss Component / Loss Recovery Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "allocatedTechnicalMargins.DataFilter = dataFilter; (await allocatedTechnicalMargins.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LRC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLrc.DataFilter = dataFilter; (await actuarialLrc.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformance.DataFilter = dataFilter; (await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Illustration 57", + "\nMeasurement on initial recognition of groups of reinsurance contracts held [Example 11 in the Illustrative Examples to IFRS 17, IE124-129].", + "\n", + "\nAn entity enters into a reinsurance contract that, in return for a premium of CU300 m, covers 30% of each claim from the underlying insurance contracts. Applying the relevant criteria, the entity considers that the group comprises a single contract held. For simplicity, this example disregards the risk of non-performance of the reinsurer and all other amounts. The entity measures the estimates of the present value of future cash flows for the group of reinsurance contracts held using assumptions consistent with those used to measure the estimates of the present value of the future cash flows for the group of the underlying insurance contracts, as shown in the table below:" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "dataFilter = new [] {", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The entity measures the present value of the future cash inflows consistent with the assumptions of the cash outflows of the underlying insurance contracts. Consequently, the estimate of cash inflows is CU270 m (i.e., 30% of CU900 m)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pv.DataFilter = dataFilter.Concat(new [] {(\"EconomicBasis\", \"L\")}); (await pv.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Risk Adjustment" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The risk adjustment is determined to represent the amount of risk being transferred by the holder of the reinsurance contract to the issuer of the contract. Consequently, the risk adjustment, which is treated as an inflow rather than an outflow, is CU18 m (i.e., estimated to be 30% of 60)." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "ra.DataFilter = dataFilter.Concat(new [] {(\"EconomicBasis\", \"L\")}); (await ra.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Actuarial Experience Adjustment" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "experienceAdjustments.DataFilter = dataFilter; (await experienceAdjustments.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margin / Loss Component / Loss Recovery Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The contractual service margin is an amount equal to the sum of the fulfilment cash flows and any cash flows arising at that date. In this example, there is a net loss on purchasing the reinsurance and the contractual service margin is an asset.", + "\n", + "\nIf the premium was only CU260 m, there would be a net gain of CU28 m on purchasing the reinsurance (i.e., inflows of CU270 m, plus the risk adjustment of CU18 m less outflows of CU260 m) and the contractual service margin would represent a liability of CU28 m to eliminate the net gain on inception." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "allocatedTechnicalMargins.DataFilter = dataFilter; (await allocatedTechnicalMargins.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LRC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLrc.DataFilter = dataFilter; (await actuarialLrc.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformance.DataFilter = dataFilter; (await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Illustration 58", + "\nInitial measurement of a group of reinsurance contracts held that provides coverage for groups of underlying insurance contracts, including an onerous group [Example 12 in the Illustrative Examples to IFRS 17, IE138A-138K].", + "\n", + "\nAt the beginning of Year 1, an entity enters into a reinsurance contract that in return for a fixed premium covers 30 per cent of each claim from the groups of underlying insurance contracts. The reinsurance held is the only contract in the group. The underlying insurance contracts are issued at the same time as the entity enters into the reinsurance contract held. For simplicity it is assumed that no contracts will lapse before the end of the coverage period, there are no changes in estimates and all other amounts, including the effect of discounting, the risk adjustment for non-performance risk and the risk of non-performance of the reinsurer are ignored.", + "\n", + "\nSome of the underlying insurance contracts are onerous at initial recognition. Thus, the entity establishes a group comprising the onerous contracts. The remainder of the underlying insurance contracts are expected to be profitable and, in this example, the entity establishes a single group comprising the profitable contracts. The coverage period of the underlying insurance contracts and the reinsurance contract held is three years from the beginning of Year one. Services is provided evenly over the coverage periods." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "dataFilter = new [] {", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The entity expects to receive CU1,110 on the underlying insurance contracts immediately after initial recognition. Claims on the underlying insurance contracts are expected to be incurred evenly across the coverage period and are paid immediately after claims are incurred.", + "\n", + "\nThe entity establishes a group comprising a single reinsurance contract held that provides proportionate coverage. The entity pays a premium of CU315 to the reinsurer immediately after initial recognition. The entity expects to receive recoveries of claims from the reinsurer on the same day that the entity pays claims on the underlying insurance contracts.", + "\n", + "\nApplying IFRS 17, the entity measures the estimates of the present value of the future cash flows for the group of reinsurance contracts held using assumptions consistent with those used to measure the estimates of the present value of the future cash flows for the groups of underlying insurance contracts. Consequently, the estimate of the present value of the future cash inflows is CU270 (recovery of 30 per cent of the estimates of the present value of the future cash outflows for the groups of underlying insurance contracts of CU900).", + "\n", + "\nThe entity measures the group of underlying insurance contracts on initial recognition and the group of reinsurance contracts held on initial recognition, as follows:", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pv.DataFilter = dataFilter.Concat(new [] {(\"EconomicBasis\", \"L\")}); (await pv.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Actuarial Experience Adjustment" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "experienceAdjustments.DataFilter = dataFilter; (await experienceAdjustments.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margin / Loss Component / Loss Recovery Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Applying IFRS 17, the entity adjusts the contractual service margin of the reinsurance contract held and recognises income to reflect the loss recovery. The entity determines the adjustment to the contractual service margin and the income recognised as CU27 (the loss of CU90 recognised for the onerous group of underlying insurance contracts multiplied by 30 per cent, the fixed percentage of claims the entity expects has the right to recover). ", + "\n", + "\nThe contractual service margin of CU45 is adjusted by CU27, resulting in a contractual service margin of CU72, reflecting a net cost on the reinsurance contract held. The reinsurance contract asset of CU27 comprises the fulfilment cash flows of CU45 (net outflows) and a contractual service margin reflecting a net cost of CU72. The entity establishes a loss-recovery component of the asset for remaining coverage of CU27 depicting the recovery of losses recognised." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "**TODO** Fix Loreco" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "allocatedTechnicalMargins.DataFilter = dataFilter; (await allocatedTechnicalMargins.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LRC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLrc.DataFilter = dataFilter; (await actuarialLrc.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformance.DataFilter = dataFilter; (await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Illustration 59", + "\nMeasurement subsequent to initial recognition of groups of reinsurance contracts held [Example 12A and 12B in the Illustrative Examples to IFRS 17, IE130-138].", + "\n", + "\nAn entity enters into a reinsurance contract that, in return for a fixed premium, covers 30% of each claim from the underlying insurance contracts (the entity assumes that it could transfer 30% of non-financial risk from the underlying contracts to the reinsurer). In this example, the effect of discounting, the risk of the reinsurer’s non-performance, and other amounts are disregarded for simplicity. Applying the relevant criteria, the entity considers that the group comprises a single contract held.", + "\n", + "\nImmediately before the end of year one, the entity measures the group of underlying insurance contracts and the reinsurance contract held, as shown below.", + "\n", + "\nIn this example, the difference between the contractual service margin for the reinsurance contract held of CU25m and 30% of the underlying group of insurance contracts of CU30m (30% X CU100) arises because of a different pricing policy between the underlying group of insurance contracts and the reinsurance contract held.", + "\n", + "\n*Example A*", + "\n", + "\nAt the end of year one, the entity revises its estimates of the fulfilment cash flows of the underlying group of contracts. The entity estimates there is an increase in the fulfilment cash flows of the underlying contracts of CU50m and a decrease in the contractual service margin by the same amount (the group of underlying insurance contracts is not onerous). The entity increases the fulfilment cash flows of the reinsurance contract held by 30 per cent of the change in fulfilment cash flows of the underlying group of insurance contracts ($15m = 30% of $50m). Applying paragraph 66, the entity adjusts the contractual service margin of the reinsurance contract held by the whole amount of the change in the fulfilment cash flows of this reinsurance contract held of CU15 m from CU(25) m to CU(10) m. This is because the whole change in the fulfilment cash flows allocated to the group of underlying insurance contracts adjusts the contractual service margin of those underlying insurance contracts. Therefore, at the end of year 1, the entity measures the insurance contracts liability and the reinsurance contract asset, as shown below. These changes do not affect estimates of profit and loss as all changes in the fulfilment cash flows go to the contractual service margin.", + "\n", + "\n*Example B*", + "\n", + "\nAt the end of year one, the entity revises its estimates of the fulfilment cash flows of the underlying group of contracts. The entity estimates that there is an increase in the fulfilment cash flows of the underlying group of insurance contracts of CU160 m. This change makes the underlying group of insurance contracts onerous and the entity decreases the contractual service margin by CU100 m to zero and recognises the remaining CU60 m as a loss in profit or loss. The entity increases the fulfilment cash flows of the reinsurance contract held by CU48 m which equals 30 per cent of the fulfilment cash flows of the underlying group of insurance contracts (CU48 m=30% of CU160 m). Applying paragraph 66, the entity adjusts the contractual service margin of the reinsurance contract held for the change in fulfilment cash flows that relate to future services to the extent this change results from a change in the fulfilment cash flows of the group of underlying insurance contracts that adjusts the contractual service margin for that group. Consequently, the change in the fulfilment cash flows of the reinsurance contract held of CU48 m are recognised as shown below.", + "\n - Adjusting the contractual service margin of the reinsurance contract held for CU30 m of the change in the fulfilment cash flows. The CU30 m is equivalent to the change in the fulfilment cash flows that adjusts the contractual service margin of the underlying contracts of CU100 m (CU30 m = 30% x CU100 m). Consequently, the contractual service margin of the reinsurance contract held of CU5 m equals the contractual service margin on initial recognition of CU25 m adjusted for the part of the change in the fulfilment cash flows of CU30 m (CU5 m = CU(25) m + CU30 m). This represents a contractual service margin \"asset\".", + "\n - Recognising the remaining change in the fulfilment cash flows of the reinsurance contract held, CU18 m (i.e. CU48 m - CU30 m) immediately in profit or loss.", + "\n", + "\nTherefore, at the end of year one, using these alternative estimates, the entity measures the insurance contract liability and the reinsurance contract asset, as shown below." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "**TODO** Check this example" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "dataFilter = new [] {", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY63R\")};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pv.DataFilter = dataFilter.Concat(new [] {(\"EconomicBasis\", \"L\")}); (await pv.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margin / Loss Component / Loss Recovery Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "allocatedTechnicalMargins.DataFilter = dataFilter; (await allocatedTechnicalMargins.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LRC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLrc.DataFilter = dataFilter; (await actuarialLrc.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformance.DataFilter = dataFilter; (await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Illustration 63", + "\nTreatment of changes in reinsurance recoveries arising from past events.", + "\n", + "\nCompany A (the cedant) has a liability for incurred claims of CU100. It decides to enter into a reinsurance contract under which it cedes 50% of the liability for incurred claims. The cedant pays a reinsurance premium of CU55 to the reinsurer at inception and cedes an amount of CU50 (i.e., 50%) of its liability for incurred claims. This results in a net cost of reinsurance of CU5 at initial recognition. The net cost of CU5 goes immediately through profit and loss following paragraph 65A of IFRS 17 (net cost of purchasing reinsurance coverage recognised as an expense).", + "\n", + "\nIn Year one, the liability for incurred claims of the underlying direct contracts increases from CU100 to CU115. As a consequence, the share of liability for incurred claims ceded to the reinsurer increases by CU7.5 (50% of CU15) and implies a favourable change (increase) in the asset for remaining coverage of the reinsurance contract held of $7.5.", + "\n", + "\nThe favourable change in the asset for remaining coverage of $7.5 should be credited direct to profit or loss to match the treatment for the change of the underlying liability for incurred claims and not to the contractual service margin. This accounting (i.e., direct to profit or loss) should be the same if the deviation was unfavourable." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "dataFilter = new [] {", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"),", + "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\")};" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Best Estimate" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pv.DataFilter = dataFilter; (await pv.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Contractual Service Margin / Loss Component / Loss Recovery Component" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "allocatedTechnicalMargins.DataFilter = dataFilter; (await allocatedTechnicalMargins.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LRC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLrc.DataFilter = dataFilter; (await actuarialLrc.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## LIC Actuarial" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "actuarialLic.DataFilter = dataFilter; (await actuarialLic.ToReportAsync)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformance.DataFilter = dataFilter; (await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file From 9a0b08d69ac637acf98e0d9c05cd3cd2930ed893 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 10 May 2023 17:27:12 +0200 Subject: [PATCH 02/38] update --- .../Files/TransactionalData/Actuals_FR_2020_12.csv | 2 ++ .../Files/TransactionalData/NominalCashflows_FR_2020_12.csv | 5 +++++ ifrs17-template/Report/ReportEyCases.ipynb | 1 - ifrs17-template/Report/Reports.ipynb | 1 - 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index f84d2524..8e642da3 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -5,6 +5,8 @@ FR,2020,12,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value EY52BBA.1,CF,PR,A,,2000 EY52BBA.1,CF,NIC,A,,-900 +EY52PPA.1,CF,PR,A,,2000 +EY52PPA.1,CF,NIC,A,,-900 EY57G.1,CF,PR,A,,1000 EY57G.1,CF,NIC,A,,-900 EY57R.1,CF,PR,A,,-300 diff --git a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv index 662e8b2f..8859501f 100644 --- a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv @@ -9,6 +9,11 @@ EY52BBA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.166 EY52BBA.1,PR,BE,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 EY52BBA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY52BBA.1,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +EY52PPA.1,PR,BE,BOP,N,,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +EY52PPA.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75 +EY52PPA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 +EY52PPA.1,PR,BE,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 +EY52PPA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY57G.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,,,,,,,,,,,, EY57G.1,,RA,BOP,N,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,,,,,,,,,,,, diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index c7955b75..ab11e957 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -1,7 +1,6 @@ { "metadata": { "authors": [], - "id": "DCgii_7-fECfGgqIf40f0w", "kernelspec": { "display_name": "Formula Framework", "language": "C#", diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index f9c55208..1a712078 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -1,7 +1,6 @@ { "metadata": { "authors": [], - "id": "DCgii_7-fECfGgqIf40f0w", "kernelspec": { "display_name": "Formula Framework", "language": "C#", From 7fb9b117a2009e6c43df1d25cd4ca35a5f3bf0e0 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 10 May 2023 17:39:52 +0200 Subject: [PATCH 03/38] fix --- .../Files/TransactionalData/NominalCashflows_FR_2020_12.csv | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv index 8859501f..662e8b2f 100644 --- a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv @@ -9,11 +9,6 @@ EY52BBA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.166 EY52BBA.1,PR,BE,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 EY52BBA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY52BBA.1,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -EY52PPA.1,PR,BE,BOP,N,,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -EY52PPA.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75 -EY52PPA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 -EY52PPA.1,PR,BE,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 -EY52PPA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY57G.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,,,,,,,,,,,, EY57G.1,,RA,BOP,N,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,,,,,,,,,,,, From e28f16744842de7dc0ebba0be5be70096280bb32 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 10 May 2023 17:48:53 +0200 Subject: [PATCH 04/38] fix --- ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index 8e642da3..b02510e5 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -5,7 +5,7 @@ FR,2020,12,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value EY52BBA.1,CF,PR,A,,2000 EY52BBA.1,CF,NIC,A,,-900 -EY52PPA.1,CF,PR,A,,2000 +EY52PPA.1,CF,PR,A,,1000 EY52PPA.1,CF,NIC,A,,-900 EY57G.1,CF,PR,A,,1000 EY57G.1,CF,NIC,A,,-900 From 0d8c41667f563ec377e2f384cea2f3dc70069fa6 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 11 May 2023 09:39:49 +0200 Subject: [PATCH 05/38] Fix --- .../Files/DataNodes/DataNodeParameters_FR_2020_12.csv | 2 +- ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv | 2 +- ifrs17-template/Files/DataNodes/DataNodes_FR.csv | 4 ++-- .../Files/TransactionalData/Actuals_FR_2020_12.csv | 4 ++-- .../Files/TransactionalData/NominalCashflows_FR_2020_12.csv | 2 ++ 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv b/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv index f02f1b4e..cb9f526a 100644 --- a/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv +++ b/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv @@ -5,7 +5,7 @@ FR,2020,12 @@SingleDataNodeParameter,, DataNode,PremiumAllocation, EY52BBA.1,1, -EY52PPA.1,1, +EY52PAA.1,0, EY57G.1,1, EY58G.1,1, EY58G.2,1, diff --git a/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv b/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv index 61536920..7768854f 100644 --- a/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv +++ b/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv @@ -5,7 +5,7 @@ FR,2020,12 @@DataNodeState,, DataNode,State, EY52BBA.1,Active, -EY52PPA.1,Active, +EY52PAA.1,Active, EY57G.1,Active, EY57R.1,Active, EY58G.1,Active, diff --git a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv index 101878c1..7ba3e015 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv @@ -5,7 +5,7 @@ FR,,,,,, @@InsurancePortfolio,,,,,, SystemName,DisplayName,ContractualCurrency,LineOfBusiness,ValuationApproach,OciType, EY52BBA,52 BBA,EUR,MOT,BBA,, -EY52PPA,52 PAA,EUR,MOT,PAA,, +EY52PAA,52 PAA,EUR,MOT,PAA,, EY57G,57 Gross,EUR,MOT,BBA,, EY58G,58 Gross,EUR,MOT,BBA,, EY59G,59 Gross,EUR,MOT,BBA,, @@ -14,7 +14,7 @@ EY63G,63 Gross,EUR,MOT,BBA,, @@GroupOfInsuranceContract,,,,,, SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability,YieldCurveName EY52BBA.1,52 BBA,EY52BBA,2020,LRC,P,NoDiscount -EY52PPA.1,52 PAA,EY52PPA,2020,LRC,P,NoDiscount +EY52PAA.1,52 PAA,EY52PPA,2020,LRC,P,NoDiscount EY57G.1,57 Gross Profitable,EY57G,2020,LRC,P,NoDiscount EY58G.1,58 Gross Profitable,EY58G,2020,LRC,P,NoDiscount EY58G.2,58 Gross Onerous,EY58G,2020,LRC,O,NoDiscount diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index b02510e5..657d2cfb 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -5,8 +5,8 @@ FR,2020,12,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value EY52BBA.1,CF,PR,A,,2000 EY52BBA.1,CF,NIC,A,,-900 -EY52PPA.1,CF,PR,A,,1000 -EY52PPA.1,CF,NIC,A,,-900 +EY52PAA.1,CF,PR,A,,1000 +EY52PAA.1,CF,NIC,A,,-900 EY57G.1,CF,PR,A,,1000 EY57G.1,CF,NIC,A,,-900 EY57R.1,CF,PR,A,,-300 diff --git a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv index 662e8b2f..9642881b 100644 --- a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv @@ -9,6 +9,8 @@ EY52BBA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.166 EY52BBA.1,PR,BE,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 EY52BBA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY52BBA.1,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +EY52PAA.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, +EY52PAA.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,,,,,,,,,,,, EY57G.1,,RA,BOP,N,,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,,,,,,,,,,,, From 7108f924ff94fa7d340a9be081f144cd8c683770 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 11 May 2023 10:07:02 +0200 Subject: [PATCH 06/38] Fix --- ifrs17-template/Files/DataNodes/DataNodes_FR.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv index 7ba3e015..8eb79342 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv @@ -14,7 +14,7 @@ EY63G,63 Gross,EUR,MOT,BBA,, @@GroupOfInsuranceContract,,,,,, SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability,YieldCurveName EY52BBA.1,52 BBA,EY52BBA,2020,LRC,P,NoDiscount -EY52PAA.1,52 PAA,EY52PPA,2020,LRC,P,NoDiscount +EY52PAA.1,52 PAA,EY52PAA,2020,LRC,P,NoDiscount EY57G.1,57 Gross Profitable,EY57G,2020,LRC,P,NoDiscount EY58G.1,58 Gross Profitable,EY58G,2020,LRC,P,NoDiscount EY58G.2,58 Gross Onerous,EY58G,2020,LRC,O,NoDiscount From 636c1861eb349436f01a4af08072c792eda72232 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 11 May 2023 10:43:57 +0200 Subject: [PATCH 07/38] Fix to reports --- ifrs17-template/Report/ReportEyCases.ipynb | 9 +++++---- ifrs17-template/Report/Reports.ipynb | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index ab11e957..7c8dbad8 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -1,6 +1,7 @@ { "metadata": { "authors": [], + "id": "C85T6MryOUK0o6bo3T9lMg", "kernelspec": { "display_name": "Formula Framework", "language": "C#", @@ -314,7 +315,7 @@ "cell_type": "code", "source": [ "dataFilter = new [] {", - "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52PAA\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", "\n (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};" ], "metadata": {}, @@ -476,7 +477,7 @@ "cell_type": "code", "source": [ "dataFilter = new [] {", - "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52PAA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY59G\"), (\"Portfolio\", \"!EY63G\"),", "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};" ], "metadata": {}, @@ -650,7 +651,7 @@ "cell_type": "code", "source": [ "dataFilter = new [] {", - "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY63G\"),", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52PAA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY63G\"),", "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY63R\")};" ], "metadata": {}, @@ -749,7 +750,7 @@ "cell_type": "code", "source": [ "dataFilter = new [] {", - "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"),", + "\n (\"Portfolio\", \"!EY52BBA\"), (\"Portfolio\", \"!EY52PAA\"), (\"Portfolio\", \"!EY57G\"), (\"Portfolio\", \"!EY58G\"), (\"Portfolio\", \"!EY59G\"),", "\n (\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\")};" ], "metadata": {}, diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 1a712078..9630627e 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -1,6 +1,7 @@ { "metadata": { "authors": [], + "id": "kE0lIOQKnkOdWh63xf3cZA", "kernelspec": { "display_name": "Formula Framework", "language": "C#", From 9d34835c103d1055588f65958ce77512466d6abf Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 11 May 2023 10:49:12 +0200 Subject: [PATCH 08/38] BBA .2 --- .../Files/DataNodes/DataNodeParameters_FR_2020_12.csv | 1 + .../Files/DataNodes/DataNodeStates_FR_2020_12.csv | 1 + ifrs17-template/Files/DataNodes/DataNodes_FR.csv | 3 ++- .../Files/TransactionalData/Actuals_FR_2020_12.csv | 2 ++ .../Files/TransactionalData/NominalCashflows_FR_2020_12.csv | 5 +++++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv b/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv index cb9f526a..035bf3c8 100644 --- a/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv +++ b/ifrs17-template/Files/DataNodes/DataNodeParameters_FR_2020_12.csv @@ -5,6 +5,7 @@ FR,2020,12 @@SingleDataNodeParameter,, DataNode,PremiumAllocation, EY52BBA.1,1, +EY52BBA.2,1, EY52PAA.1,0, EY57G.1,1, EY58G.1,1, diff --git a/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv b/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv index 7768854f..ce36fdca 100644 --- a/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv +++ b/ifrs17-template/Files/DataNodes/DataNodeStates_FR_2020_12.csv @@ -5,6 +5,7 @@ FR,2020,12 @@DataNodeState,, DataNode,State, EY52BBA.1,Active, +EY52BBA.2,Active, EY52PAA.1,Active, EY57G.1,Active, EY57R.1,Active, diff --git a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv index 8eb79342..200d34ac 100644 --- a/ifrs17-template/Files/DataNodes/DataNodes_FR.csv +++ b/ifrs17-template/Files/DataNodes/DataNodes_FR.csv @@ -13,7 +13,8 @@ EY63G,63 Gross,EUR,MOT,BBA,, ,,,,,, @@GroupOfInsuranceContract,,,,,, SystemName,DisplayName,InsurancePortfolio,AnnualCohort,LiabilityType,Profitability,YieldCurveName -EY52BBA.1,52 BBA,EY52BBA,2020,LRC,P,NoDiscount +EY52BBA.1,52 BBA EV,EY52BBA,2020,LRC,P,NoDiscount +EY52BBA.2,52 BBA NOEV,EY52BBA,2020,LRC,P,NoDiscount EY52PAA.1,52 PAA,EY52PAA,2020,LRC,P,NoDiscount EY57G.1,57 Gross Profitable,EY57G,2020,LRC,P,NoDiscount EY58G.1,58 Gross Profitable,EY58G,2020,LRC,P,NoDiscount diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index 657d2cfb..85daf285 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -5,6 +5,8 @@ FR,2020,12,,, DataNode,AocType,AmountType,EstimateType,AccidentYear,Value EY52BBA.1,CF,PR,A,,2000 EY52BBA.1,CF,NIC,A,,-900 +EY52BBA.2,CF,PR,A,,2000 +EY52BBA.2,CF,NIC,A,,-900 EY52PAA.1,CF,PR,A,,1000 EY52PAA.1,CF,NIC,A,,-900 EY57G.1,CF,PR,A,,1000 diff --git a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv index 9642881b..c434b7b8 100644 --- a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv @@ -9,6 +9,11 @@ EY52BBA.1,NIC,BE,EV,N,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.166 EY52BBA.1,PR,BE,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 EY52BBA.1,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667,-79.16666667 EY52BBA.1,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +EY52BBA.2,PR,BE,BOP,N,,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +EY52BBA.2,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75 +EY52BBA.2,PR,BE,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 +EY52BBA.2,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75 +EY52BBA.2,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 EY52PAA.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY52PAA.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, From 0d00d1807715094a604705fe0c1e69b3cbb1f8c8 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 11 May 2023 17:21:37 +0200 Subject: [PATCH 09/38] Update --- ifrs17-template/Report/ReportEyCases.ipynb | 5 ++++- ifrs17-template/Report/Reports.ipynb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 7c8dbad8..653c6e33 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -192,7 +192,10 @@ { "cell_type": "markdown", "source": [ - "**TODO** Add PAA and check projection 1" + "We have prepared 3 GICs to show this case:", + "\n - 52 BBA EV: the BBA case as described abobe, with the Experience Variance to Future Services AOC Step introducing the estimate adjustment of CU50", + "\n - 52 BBA NOEV: a version where there is no estimate adjustment, therefore producing figures matching the PAA case", + "\n - 58 PAA: the PAA version" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 9630627e..7cc4c459 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -99,7 +99,7 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (2021, 3);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", + "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" From 9c6d95349d154253e5dbccd36428739847cbfb4e Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 16 May 2023 08:32:14 +0200 Subject: [PATCH 10/38] Alt pnl --- ifrs17-template/Files/Dimensions.csv | 69 +++++++++++++++------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 6341704f..a4e3a6ea 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -172,36 +172,39 @@ D,Changes in Balance,,10,,,,,,,, @@PnlVariableType,,,,,,,,,,, SystemName,DisplayName,Parent,Order,,,,,,,, TCI,Total Comprehensive Income,,0,,,,,,,, -PNL,Profit and Loss,TCI,1,,,,,,,, -OCI,Other Comprehensive Income,TCI,2,,,,,,,, -ISR,Insurance Service Result,PNL,3,,,,,,,, -IR,Insurance Revenue,ISR,4,,,,,,,, -IR1,Premiums,IR,5,,,,,,,, -IR2,Exc. Investment Components,IR,6,,,,,,,, -IR3,CSM Amortization,IR,7,,,,,,,, -IR4,Acquistion Expenses Amortization,IR,8,,,,,,,, -IR5,Non-Financial LRC Changes (Exc. CSM Amortization),IR,9,,,,,,,, -IR6,Exc. Experience Adjustment on Premiums,IR,10,,,,,,,, -ISE,Insurance Service Expense,ISR,11,,,,,,,, -ISE1,Reinsurance Premiums,ISE,12,,,,,,,, -ISE2,Claims,ISE,13,,,,,,,, -ISE3,Expenses,ISE,14,,,,,,,, -ISE4,Commissions,ISE,15,,,,,,,, -ISE5,Exc. Investment Components,ISE,16,,,,,,,, -ISE6,Acquisition Expenses,ISE,17,,,,,,,, -ISE7,Reinsurance CSM Amortization,ISE,18,,,,,,,, -ISE8,LoReCo Release,ISE,19,,,,,,,, -ISE9,Loss Component Release,ISE,20,,,,,,,, -ISE10,Non-Financial Reinsurance LRC Changes (Exc. LC/LoReCo),ISE,21,,,,,,,, -ISE11,Loss Component / LoReCo Changes (Exc. Releases),ISE,22,,,,,,,, -ISE12,Non Financial LIC Changes,ISE,23,,,,,,,, -IFIE,Insurance Finance Income/Expense,PNL,24,,,,,,,, -IFIE1,Financial LRC Changes,IFIE,25,,,,,,,, -IFIE2,Financial LIC Changes,IFIE,26,,,,,,,, -IFIE3,FX Changes,IFIE,27,,,,,,,, -OCI1,Financial LRC Changes,OCI,28,,,,,,,, -OCI2,Financial LIC Changes,OCI,29,,,,,,,, -OCI3,FX Changes,OCI,30,,,,,,,, +PNL,Profit and Loss,TCI,100,,,,,,,, +OCI,Other Comprehensive Income,TCI,200,,,,,,,, +ISR,Insurance Service Result,PNL,300,,,,,,,, +IR,Insurance Revenue,ISR,400,,,,,,,, +ISE,Insurance Service Expense,ISR,500,,,,,,,, +IFIE,Insurance Finance Income/Expense,PNL,600,,,,,,,, +IR1,Premiums,IR,401,,,,,,,, +IR2,Exc. Investment Components,IR,402,,,,,,,, +IR3,CSM Amortization,IR,403,,,,,,,, +IR4,Acquistion Expenses Amortization,IR,404,,,,,,,, +IR5,Non-Financial LRC Changes (Exc. CSM Amortization),IR,405,,,,,,,, +IR6,Exc. Experience Adjustment on Premiums,IR,406,,,,,,,, +IR11,PAA Premiums,IR1,451,,,,,,,, +IR12,Experience Adjustment on Premiums,IR1,452,,,,,,,, +IR13,Releases and Amortizations,IR,453,,,,,,,, +ISE1,Reinsurance Premiums,ISE,501,,,,,,,, +ISE2,Claims,ISE,502,,,,,,,, +ISE3,Expenses,ISE,503,,,,,,,, +ISE4,Commissions,ISE,504,,,,,,,, +ISE5,Exc. Investment Components,ISE,505,,,,,,,, +ISE6,Acquisition Expenses,ISE,506,,,,,,,, +ISE7,Reinsurance CSM Amortization,ISE,507,,,,,,,, +ISE8,LoReCo Release,ISE,508,,,,,,,, +ISE9,Loss Component Release,ISE,509,,,,,,,, +ISE10,Non-Financial Reinsurance LRC Changes (Exc. LC/LoReCo),ISE,510,,,,,,,, +ISE11,Loss Component / LoReCo Changes (Exc. Releases),ISE,511,,,,,,,, +ISE12,Non Financial LIC Changes,ISE,512,,,,,,,, +IFIE1,Financial LRC Changes,IFIE,601,,,,,,,, +IFIE2,Financial LIC Changes,IFIE,602,,,,,,,, +IFIE3,FX Changes,IFIE,603,,,,,,,, +OCI1,Financial LRC Changes,OCI,201,,,,,,,, +OCI2,Financial LIC Changes,OCI,202,,,,,,,, +OCI3,FX Changes,OCI,203,,,,,,,, ,,,,,,,,,,, @@Profitability,,,,,,,,,,, SystemName,DisplayName,,,,,,,,,, @@ -245,9 +248,9 @@ P2,End of March,0,3,30,,,,,,, P3,End of April,0,4,40,,,,,,, P4,End of May,0,5,50,,,,,,, P5,End of June,0,6,60,,,,,,, -P6,End of July,0,7,70,,,,,,,, -P7,End of August,0,8,80,,,,,,,, -P8,End of September,0,9,90,,,,,,,, +P6,End of July,0,7,70,,,,,,, +P7,End of August,0,8,80,,,,,,, +P8,End of September,0,9,90,,,,,,, P9,End of October,0,10,100,,,,,,, P10,End of November,0,11,110,,,,,,, P11,End of December,0,12,120,,,,,,, From 99f8c5477170444f4d0044f6aba5f70708e074b4 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 16 May 2023 08:41:44 +0200 Subject: [PATCH 11/38] fp alt --- .../TransactionalData/Actuals_FR_2020_12.csv | 2 +- .../NominalCashflows_FR_2020_12.csv | 2 +- ifrs17-template/Report/ReportEyCases.ipynb | 2 +- ifrs17/Report/ReportScopes.ipynb | 78 +++++++++++++++++++ 4 files changed, 81 insertions(+), 3 deletions(-) diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index 85daf285..da9a388e 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -7,7 +7,7 @@ EY52BBA.1,CF,PR,A,,2000 EY52BBA.1,CF,NIC,A,,-900 EY52BBA.2,CF,PR,A,,2000 EY52BBA.2,CF,NIC,A,,-900 -EY52PAA.1,CF,PR,A,,1000 +EY52PAA.1,CF,PR,A,,2000 EY52PAA.1,CF,NIC,A,,-900 EY57G.1,CF,PR,A,,1000 EY57G.1,CF,NIC,A,,-900 diff --git a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv index c434b7b8..e2ab7732 100644 --- a/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/NominalCashflows_FR_2020_12.csv @@ -14,7 +14,7 @@ EY52BBA.2,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75, EY52BBA.2,PR,BE,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 EY52BBA.2,NIC,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75 EY52BBA.2,,CU,CL,C,,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -EY52PAA.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, +EY52PAA.1,PR,BE,BOP,N,,2000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY52PAA.1,PR,BE,CL,C,,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,PR,BE,BOP,N,,1000,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,, EY57G.1,NIC,BE,BOP,N,,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,-75,,,,,,,,,,,, diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 653c6e33..701d1a7c 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -195,7 +195,7 @@ "We have prepared 3 GICs to show this case:", "\n - 52 BBA EV: the BBA case as described abobe, with the Experience Variance to Future Services AOC Step introducing the estimate adjustment of CU50", "\n - 52 BBA NOEV: a version where there is no estimate adjustment, therefore producing figures matching the PAA case", - "\n - 58 PAA: the PAA version" + "\n - 52 PAA: the PAA version" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 6d4c0434..f4951081 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1097,6 +1097,84 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "", + "\n# IFRS 17 Alternative Financial Performance" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n", + "\n // PAA Premiums", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube PaaPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", + "\n _ => Enumerable.Empty().ToArray().ToDataCube()", + "\n };", + "\n", + "\n // Experience Adjustment On Premiums --> TODO This should be to P&L, not CSM", + "\n private IDataCube WrittenPremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", + "\n", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude IC Claims and NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n // Loss Component Release (Amortization)", + "\n private IDataCube LossComponentAmortization => -1 * GetScope(Identity).Lc", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedExpenses + AcquistionExpensesAmortization;", + "\n", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ From 31293245fef3efd6d5376ba7ef17a56180bea393 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 16 May 2023 08:42:25 +0200 Subject: [PATCH 12/38] engine --- ifrs17-template/Constants/CalculationEngine.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index 721e117b..b7e7b0cf 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -22,7 +22,8 @@ "var projectName = \"ifrs17\";", "\nvar environmentName = \"v1.3.0\";", "\nvar notebookName = \"CalculationEngine\";", - "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" + "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";", + "\ncalculationEngine = $\"#!import \\\"../../ifrs17/CalculationEngine\\\"\";" ], "metadata": {}, "execution_count": 0, From adfe31ca56e9cf7f83a802d422437a15454a0cb8 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 16 May 2023 13:45:38 +0200 Subject: [PATCH 13/38] new p&l --- ifrs17-template/Report/ReportEyCases.ipynb | 154 +++++++++++++++++++++ ifrs17/DataModel/DataStructure.ipynb | 2 +- ifrs17/Report/ReportScopes.ipynb | 24 +++- 3 files changed, 175 insertions(+), 5 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 701d1a7c..d45ec1e5 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -167,6 +167,160 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# New P&L" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n", + "\n // PAA Premiums", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube PaaPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", + "\n _ => Enumerable.Empty().ToArray().ToDataCube()", + "\n };", + "\n", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => -1 * EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube WrittenPremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (", + "\n (NotPaaActualPremiums - NotPaaBestEstimatePremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (WrittenPremiumsToCsm - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", + "\n", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude IC Claims and NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n // Loss Component Release (Amortization)", + "\n private IDataCube LossComponentAmortization => GetScope(Identity).Lc", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedExpenses + AcquistionExpensesAmortization;", + "\n", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var reportStorage = new ReportStorage(Workspace, Report, Export);", + "\nawait reportStorage.InitializeReportIndependentCacheAsync();", + "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", + "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", + "\n", + "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = (reportingPeriod, reportingNode, null,CurrencyType.Contractual);", + "\n", + "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", + "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var fp = universe.GetScopes(identities).Aggregate().InsuranceRevenue;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "fp.Where(x => !x.IsReinsurance).ToDataCube().Where(x => x.EstimateType == null)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "await Report.ForDataCube(fp.Where(x => !x.IsReinsurance).ToDataCube())", + "\n .WithQuerySource(Workspace)", + "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", + "\n .SliceColumnsBy(financialPerformance.ColumnSlices.ToArray())", + "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 7)", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index cd156be2..682628f3 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -262,7 +262,7 @@ "public abstract record KeyedDimension : INamed {", "\n [Key]", "\n [IdentityProperty]", - "\n [StringLength(16)]", + "\n [StringLength(50)]", "\n public string SystemName { get; init; }", "\n ", "\n [NotVisible]", diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index f4951081..151ba492 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1125,11 +1125,27 @@ "\n _ => Enumerable.Empty().ToArray().ToDataCube()", "\n };", "\n", - "\n // Experience Adjustment On Premiums --> TODO This should be to P&L, not CSM", - "\n private IDataCube WrittenPremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => -1 * EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube WrittenPremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", "\n", - "\n private IDataCube ExperienceAdjustmentOnPremiums => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n private IDataCube ExperienceAdjustmentOnPremiums => ((NotPaaActualPremiums - WrittenPremiumsToCsm) - (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", "\n", From b6464a662d892cfbc898e657a1bc7f9b9b08fcf5 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 17 May 2023 20:52:46 +0200 Subject: [PATCH 14/38] Add LC to IR --- ifrs17-template/Report/ReportEyCases.ipynb | 102 +++++++++++++++++++-- ifrs17/Report/ReportScopes.ipynb | 81 +--------------- 2 files changed, 97 insertions(+), 86 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index d45ec1e5..03d0f4a9 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -180,6 +180,8 @@ "cell_type": "code", "source": [ "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", "\n", "\n // PAA Premiums", "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", @@ -215,8 +217,8 @@ "\n private IDataCube BestEstimatePremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", "\n", "\n private IDataCube ExperienceAdjustmentOnPremiums => (", - "\n (NotPaaActualPremiums - NotPaaBestEstimatePremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", - "\n (WrittenPremiumsToCsm - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", "\n )", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", @@ -227,9 +229,14 @@ "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", "\n ", - "\n private IDataCube ExpectedClaims => CfOut // --> Exclude IC Claims and NA Expenses", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", + "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", + "\n", "\n private IDataCube ExpectedExpenses => CfOut", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", @@ -254,9 +261,75 @@ "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedExpenses + AcquistionExpensesAmortization;", + "\n ", + "\n // InsuranceRevenue ", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + AcquistionExpensesAmortization;", + "\n", + "\n}", + "\n", + "\npublic interface InsuranceRevenueNotApplicable : InsuranceRevenue {", + "\n IDataCube InsuranceRevenue.InsuranceRevenue => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", + "\n", + "\n // Actuals cash flow out Release", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube ActualClaims => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE2\" });", + "\n private IDataCube ActualClaimsInvestmentComponent => -1 * EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE5\" });", "\n", + "\n private IDataCube ActualExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE6\" });", + "\n", + "\n // Loss Component", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LcAmortization => -1 * Lc.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"ISE9\" });", + "\n ", + "\n private IDataCube LcNonFinancialChanges => -1 * Lc", + "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n ", + "\n // private IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", + "\n // .AggregateOver(nameof(Novelty))", + "\n // .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n // private IDataCube FinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) + Lc.Filter((\"VariableType\", AocTypes.YCU)) + Lc.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n // .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // Insurance Service Expense ", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", + "\n ", + "\n}", + "\n", + "\npublic interface InsuranceServiceExpenseNotApplicable : InsuranceServiceExpense {", + "\n IDataCube InsuranceServiceExpense.InsuranceServiceExpense => Enumerable.Empty().ToArray().ToDataCube(); ", "\n}" ], "metadata": {}, @@ -292,7 +365,17 @@ { "cell_type": "code", "source": [ - "var fp = universe.GetScopes(identities).Aggregate().InsuranceRevenue;" + "var ir = universe.GetScopes(identities).Aggregate().InsuranceRevenue;", + "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "//fp//.Where(x => !x.IsReinsurance).ToDataCube().Where(x => x.EstimateType == null)" ], "metadata": {}, "execution_count": 0, @@ -301,7 +384,8 @@ { "cell_type": "code", "source": [ - "fp.Where(x => !x.IsReinsurance).ToDataCube().Where(x => x.EstimateType == null)" + "financialPerformance.DataFilter = new [] {(\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};", + "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" ], "metadata": {}, "execution_count": 0, @@ -310,10 +394,10 @@ { "cell_type": "code", "source": [ - "await Report.ForDataCube(fp.Where(x => !x.IsReinsurance).ToDataCube())", + "await Report.ForDataCube(ir+ise)", "\n .WithQuerySource(Workspace)", "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", - "\n .SliceColumnsBy(financialPerformance.ColumnSlices.ToArray())", + "\n .SliceColumnsBy(new [] {\"Currency\"}.Concat(financialPerformance.ColumnSlices).ToArray())", "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 7)", "\n .ExecuteAsync()" ], diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 151ba492..270a4c9c 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -633,7 +633,7 @@ "\nThe overall formulas for each of the sections above are as follows:", "\n$$", "\n\\begin{array}{rl}", - "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\text{ Incurred Incoming Cash flows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cash flows} - \\text{ Experience Adjustment On Premium }", + "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Incoming Cash flows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cash flows} - \\text{ Experience Adjustment On Premium }", "\n\\\\", "\nISE =& -\\Delta \\text{ Reinsurance Non-Financial LRC } - \\Delta \\text{ Non-Financial LIC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Outgoing Cash flows } - \\text{ Amortization of the Insurance Acquisition Cash flows}", "\n\\\\", @@ -857,6 +857,8 @@ "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n", + "\n IDataCube NonFinancialChangesToIr => -1 * (Amortization + NonFinancialChanges).SelectToDataCube(v => v with { VariableType = \"IR5\" }); ", "\n ", "\n IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", "\n .AggregateOver(nameof(Novelty))", @@ -1110,82 +1112,7 @@ { "cell_type": "code", "source": [ - "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n", - "\n // PAA Premiums", - "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", - "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", - "\n ", - "\n private IDataCube PaaPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", - "\n _ => Enumerable.Empty().ToArray().ToDataCube()", - "\n };", - "\n", - "\n // Experience Adjustment On Premiums", - "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => -1 * EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", - "\n };", - "\n", - "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => -1 * GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", - "\n };", - "\n", - "\n private IDataCube WrittenPremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", - "\n", - "\n private IDataCube ExperienceAdjustmentOnPremiums => ((NotPaaActualPremiums - WrittenPremiumsToCsm) - (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", - "\n", - "\n // Expected Best Estimate cash flow out Release", - "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", - "\n ", - "\n private IDataCube ExpectedClaims => CfOut // --> Exclude IC Claims and NA Expenses", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n private IDataCube ExpectedExpenses => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // RA Release", - "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", - "\n", - "\n // CSM Release (Amortization)", - "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n // Loss Component Release (Amortization)", - "\n private IDataCube LossComponentAmortization => -1 * GetScope(Identity).Lc", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // Acquistion Expenses Release (Amortization)", - "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedExpenses + AcquistionExpensesAmortization;", - "\n", - "\n}" + "" ], "metadata": {}, "execution_count": 0, From 1ce83bbb6161ace685b0f3f9b0b0cedb8bb0d30f Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Fri, 19 May 2023 00:26:21 +0200 Subject: [PATCH 15/38] Update --- ifrs17-template/Files/Dimensions.csv | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index a4e3a6ea..6a3d3370 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -124,8 +124,10 @@ OA,Overdue Actuals,70,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,,,,,, -BEPA,Best Estimate of Present Value,140,None,4,NotApplicable,,,,,, +BEPA,Best Estimate of Present Value To Csm,110,None,4,NotApplicable,,,,,, +APA,Actuals To Csm,120,None,2,NotApplicable,,,,,, +BEPR,Best Estimate of Present Value To Revenue,130,None,4,NotApplicable,,,,,, +APR,Actuals To Revenue,140,None,2,NotApplicable,,,,,, ,,,,,,,,,,, @@LiabilityType,,,,,,,,,,, SystemName,DisplayName,,,,,,,,,, From 7259fc05481e71ac63c19f9a6610b64a22bf1ed6 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Fri, 19 May 2023 00:29:19 +0200 Subject: [PATCH 16/38] Fix to eaop --- ifrs17-template/Report/Reports.ipynb | 255 +++++++++++++++++++++++---- ifrs17/Constants/Consts.ipynb | 4 +- ifrs17/Report/ReportScopes.ipynb | 22 ++- 3 files changed, 245 insertions(+), 36 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 7cc4c459..463ad519 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -97,11 +97,11 @@ "source": [ "var pv = ifrs17.PresentValues;", "\npv.ReportingNode = \"CH\";", - "\npv.ReportingPeriod = (2021, 3);", + "\npv.ReportingPeriod = (2020, 12);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", + "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", - "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", + "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -126,9 +126,9 @@ "source": [ "var ra = ifrs17.RiskAdjustments;", "\nra.ReportingNode = \"CH\";", - "\nra.ReportingPeriod = (2021, 3);", - "\nra.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EconomicBasis\"", - "\nra.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.2\")};", + "\nra.ReportingPeriod = (2020, 12);", + "\nra.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\", \"EconomicBasis\"", + "\nra.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DT1.2\")};", "\n(await ra.ToReportAsync)" ], "metadata": {}, @@ -155,8 +155,8 @@ "var writtenActual = ifrs17.WrittenActuals;", "\nwrittenActual.ReportingNode = \"CH\";", "\nwrittenActual.ReportingPeriod = (2021, 3);", - "\nwrittenActual.ColumnSlices = new string[]{};//\"GroupOfContract\"", - "\nwrittenActual.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", + "\nwrittenActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await writtenActual.ToReportAsync)" ], "metadata": {}, @@ -184,7 +184,7 @@ "\naccrualActual.ReportingNode = \"CH\";", "\naccrualActual.ReportingPeriod = (2021, 3);", "\naccrualActual.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\naccrualActual.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};", + "\naccrualActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"EstimateType\", \"AA\")};", "\n(await accrualActual.ToReportAsync)" ], "metadata": {}, @@ -207,9 +207,9 @@ "source": [ "var deferrableActual = ifrs17.DeferralActuals;", "\ndeferrableActual.ReportingNode = \"CH\";", - "\ndeferrableActual.ReportingPeriod = (2021, 3);", + "\ndeferrableActual.ReportingPeriod = (2020, 12);", "\ndeferrableActual.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\ndeferrableActual.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\ndeferrableActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await deferrableActual.ToReportAsync)" ], "metadata": {}, @@ -236,9 +236,9 @@ "source": [ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;", "\nfulfillmentCashflows.ReportingNode = \"CH\";", - "\nfulfillmentCashflows.ReportingPeriod = (2021, 3);", - "\nfulfillmentCashflows.ColumnSlices = new string[]{};//\"EstimateType\"", - "\nfulfillmentCashflows.DataFilter = null;// new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nfulfillmentCashflows.ReportingPeriod = (2020, 12);", + "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"EstimateType\"", + "\nfulfillmentCashflows.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await fulfillmentCashflows.ToReportAsync)" ], "metadata": {}, @@ -261,9 +261,9 @@ "source": [ "var experienceAdjustments = ifrs17.ExperienceAdjustments;", "\nexperienceAdjustments.ReportingNode = \"CH\";", - "\nexperienceAdjustments.ReportingPeriod = (2021, 3);", - "\nexperienceAdjustments.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\nexperienceAdjustments.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nexperienceAdjustments.ReportingPeriod = (2020, 12);", + "\nexperienceAdjustments.ColumnSlices = new string[]{\"GroupOfContract\",\"AmountType\"};//\"GroupOfContract\", \"AmountType\"", + "\nexperienceAdjustments.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await experienceAdjustments.ToReportAsync)" ], "metadata": {}, @@ -287,9 +287,9 @@ "source": [ "var technicalMargins = ifrs17.TechnicalMargins;", "\ntechnicalMargins.ReportingNode = \"CH\";", - "\ntechnicalMargins.ReportingPeriod = (2021, 3);", - "\ntechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\ntechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\ntechnicalMargins.ReportingPeriod = (2020, 12);", + "\ntechnicalMargins.ColumnSlices = new string[]{\"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", + "\ntechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await technicalMargins.ToReportAsync)" ], "metadata": {}, @@ -314,9 +314,9 @@ "source": [ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", - "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 3);", + "\nallocatedTechnicalMargins.ReportingPeriod = (2020, 12);", "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EstimateType\"", - "\nallocatedTechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nallocatedTechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync)" ], "metadata": {}, @@ -339,9 +339,9 @@ "source": [ "var actuarialLrc = ifrs17.ActuarialLrc;", "\nactuarialLrc.ReportingNode = \"CH\";", - "\nactuarialLrc.ReportingPeriod = (2021, 3);", + "\nactuarialLrc.ReportingPeriod = (2020, 12);", "\nactuarialLrc.ColumnSlices = new string[]{};//\"GroupOfContract\"", - "\nactuarialLrc.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nactuarialLrc.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await actuarialLrc.ToReportAsync)" ], "metadata": {}, @@ -364,9 +364,9 @@ "source": [ "var lrc = ifrs17.Lrc;", "\nlrc.ReportingNode = \"CH\";", - "\nlrc.ReportingPeriod = (2021, 3);", + "\nlrc.ReportingPeriod = (2020, 12);", "\nlrc.ColumnSlices = new string[]{};//\"GroupOfContract\",", - "\nlrc.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nlrc.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lrc.ToReportAsync)" ], "metadata": {}, @@ -441,9 +441,9 @@ "source": [ "var financialPerformance = ifrs17.FinancialPerformance;", "\nfinancialPerformance.ReportingNode = \"CH\";", - "\nfinancialPerformance.ReportingPeriod = (2021, 3);", - "\nfinancialPerformance.ColumnSlices = new string[]{};//\"GroupOfContract\"", - "\nfinancialPerformance.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nfinancialPerformance.ReportingPeriod = (2020, 12);", + "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", + "\nfinancialPerformance.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" ], "metadata": {}, @@ -453,7 +453,202 @@ { "cell_type": "code", "source": [ - "" + "await Report.ForDataCube((ir+ise).Filter(x => x.GroupOfContract == \"DT1.1\"))", + "\n .WithQuerySource(Workspace)", + "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", + "\n .SliceColumnsBy(new [] {\"Currency\", \"GroupOfContract\"}.Concat(financialPerformance.ColumnSlices).ToArray())", + "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 3)", + "\n .ExecuteAsync()" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", + "\n", + "\n // PAA Premiums", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube PaaPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", + "\n _ => Enumerable.Empty().ToArray().ToDataCube()", + "\n };", + "\n", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube WrittenPremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (", + "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", + "\n", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", + "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", + "\n", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n private IDataCube ExpectedCommissions => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n // Loss Component Release (Amortization)", + "\n private IDataCube LossComponentAmortization => GetScope(Identity).Lc", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n // InsuranceRevenue ", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization;", + "\n", + "\n}", + "\n", + "\npublic interface InsuranceRevenueNotApplicable : InsuranceRevenue {", + "\n IDataCube InsuranceRevenue.InsuranceRevenue => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", + "\n", + "\n // Actuals cash flow out Release", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube ActualClaims => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE2\" });", + "\n private IDataCube ActualClaimsInvestmentComponent => -1 * EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE5\" });", + "\n", + "\n private IDataCube ActualExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", + "\n", + "\n private IDataCube ActualCommissions => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE6\" });", + "\n", + "\n // Loss Component", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LcAmortization => -1 * Lc.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"ISE9\" });", + "\n ", + "\n private IDataCube LcNonFinancialChanges => -1 * Lc", + "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n ", + "\n // private IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", + "\n // .AggregateOver(nameof(Novelty))", + "\n // .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n // private IDataCube FinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) + Lc.Filter((\"VariableType\", AocTypes.YCU)) + Lc.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n // .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // Insurance Service Expense ", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", + "\n ", + "\n}", + "\n", + "\npublic interface InsuranceServiceExpenseNotApplicable : InsuranceServiceExpense {", + "\n IDataCube InsuranceServiceExpense.InsuranceServiceExpense => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var reportStorage = new ReportStorage(Workspace, Report, Export);", + "\nawait reportStorage.InitializeReportIndependentCacheAsync();", + "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", + "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", + "\n", + "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2020,12), \"CH\", null,CurrencyType.Contractual);", + "\n", + "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", + "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", + "\n", + "\nvar universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();", + "\n", + "\nvar ir = universe.GetScopes(identities).Aggregate().InsuranceRevenue;", + "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 74437596..d56dfa5b 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -309,6 +309,8 @@ "\n public const string FCF = nameof(FCF); //Fulfilment Cash flows", "\n public const string BEPA = nameof(BEPA); //Experience Adjusted BE Premium to Csm", "\n public const string APA = nameof(APA); //Experience Adjusted Written Actual Premium to Csm", + "\n public const string BEPR = nameof(BEPR); //Experience Adjusted BE Premium to Revenue", + "\n public const string APR = nameof(APR); //Experience Adjusted Written Actual Premium to Revenue", "\n}" ], "metadata": {}, @@ -482,4 +484,4 @@ "outputs": [] } ] -} +} \ No newline at end of file diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 270a4c9c..873e27d8 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1039,7 +1039,8 @@ "cell_type": "markdown", "source": [ "The figures disclosed in the Financial Performance as described above consider full Premiums for past, current and future services (for Best Estimate and Actuals).", - "\nHowever, we applied the Premium Allocation factor in the CSM computations to adjust for the experience. To correct this, we need to exclude the Experience Adjustment on Premium part in the Financial Performance to avoid double counting and it is allocated under 'Insurance Revenue' in the 'Exc. Experience Adjustment on Premiums' section." + "\nWe have applied the Premium Allocation factor in the CSM computations to adjust for the experience (included in the Insurance Revenue under the LRC changes).", + "\nAlso the actuals Premium are shown in the Financial Performance for reference. Thus, the net effect of the Experience Adjustment on Premium in the Financial Performance must be zero to avoid double counting. It is allocated under 'Insurance Revenue' in the 'Exc. Experience Adjustment on Premiums' section." ], "metadata": {}, "execution_count": 0, @@ -1049,10 +1050,21 @@ "cell_type": "code", "source": [ "public interface ExperienceAdjustmentOnPremium: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube WrittenPremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", - "\n ", - "\n IDataCube ExperienceAdjustmentOnPremium => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n private IDataCube WrittenPremiumCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\")).Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", + "\n private IDataCube BestEstimatePremium => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\")).Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", + "\n private IDataCube WrittenPremiumToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n", + "\n IDataCube ExperienceAdjustmentOnPremiumTotal => -1 * (WrittenPremiumCashflow - BestEstimatePremium)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", + "\n", + "\n IDataCube ExperienceAdjustmentOnPremiumToCsm => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", + "\n", + "\n IDataCube ExperienceAdjustmentOnPremiumToRev => ((WrittenPremiumCashflow - WrittenPremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.APR, VariableType = \"IR6\" })", + "\n - (BestEstimatePremium - BestEstimatePremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.BEPR, VariableType = \"IR6\" }))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", "\n}" From fb3ef47ca18ec0d45821207e7118b6e533b914b3 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Mon, 22 May 2023 09:00:47 +0200 Subject: [PATCH 17/38] cosmetic --- ifrs17-template/Report/ReportEyCases.ipynb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 03d0f4a9..2ed1590b 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -199,22 +199,22 @@ "\n // Experience Adjustment On Premiums", "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => -1 * EffectiveActuals", + "\n _ => EffectiveActuals", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", "\n };", "\n", "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => -1 * GetScope(Identity).BestEstimate", + "\n _ => GetScope(Identity).BestEstimate", "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", "\n };", "\n", - "\n private IDataCube WrittenPremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumsToCsm => -1 * GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n private IDataCube WrittenPremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", "\n", "\n private IDataCube ExperienceAdjustmentOnPremiums => (", "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", @@ -241,6 +241,10 @@ "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", "\n", + "\n private IDataCube ExpectedCommissions => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", "\n // RA Release", "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", @@ -263,7 +267,7 @@ "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", "\n ", "\n // InsuranceRevenue ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + AcquistionExpensesAmortization;", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization;", "\n", "\n}", "\n", @@ -299,6 +303,10 @@ "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", "\n", + "\n private IDataCube ActualCommissions => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", + "\n", "\n // Acquistion Expenses Release (Amortization)", "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", "\n .Filter((\"VariableType\", AocTypes.AM))", @@ -324,7 +332,7 @@ "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", "\n", "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", "\n ", "\n}", "\n", From bf5de3e11e04a0b53b14af03fc27ebe46fe7743f Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Mon, 22 May 2023 10:53:37 +0200 Subject: [PATCH 18/38] dim --- ifrs17-template/Files/Dimensions.csv | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 6a3d3370..ad8160ae 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -188,7 +188,7 @@ IR5,Non-Financial LRC Changes (Exc. CSM Amortization),IR,405,,,,,,,, IR6,Exc. Experience Adjustment on Premiums,IR,406,,,,,,,, IR11,PAA Premiums,IR1,451,,,,,,,, IR12,Experience Adjustment on Premiums,IR1,452,,,,,,,, -IR13,Releases and Amortizations,IR,453,,,,,,,, +IR13,Expected Releases / Amortizations,IR,453,,,,,,,, ISE1,Reinsurance Premiums,ISE,501,,,,,,,, ISE2,Claims,ISE,502,,,,,,,, ISE3,Expenses,ISE,503,,,,,,,, @@ -201,6 +201,10 @@ ISE9,Loss Component Release,ISE,509,,,,,,,, ISE10,Non-Financial Reinsurance LRC Changes (Exc. LC/LoReCo),ISE,510,,,,,,,, ISE11,Loss Component / LoReCo Changes (Exc. Releases),ISE,511,,,,,,,, ISE12,Non Financial LIC Changes,ISE,512,,,,,,,, +ISE20,Reinsurance Revenue,ISE,520,,,,,,,, +ISE21,Experience Adjustment on Premiums,ISE20,521,,,,,,,, +ISE22,Expected Releases / Amortizations,ISE20,522,,,,,,,, +ISE23,Exc. Investment Components,ISE20,523,,,,,,,, IFIE1,Financial LRC Changes,IFIE,601,,,,,,,, IFIE2,Financial LIC Changes,IFIE,602,,,,,,,, IFIE3,FX Changes,IFIE,603,,,,,,,, From a3bcb5266b3c2cb44e7f0f2257f795d7a101f3d2 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Mon, 22 May 2023 10:54:50 +0200 Subject: [PATCH 19/38] update reports --- ifrs17-template/Report/Reports.ipynb | 115 +++++++++++++++++++++++++-- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 463ad519..63584146 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -443,7 +443,7 @@ "\nfinancialPerformance.ReportingNode = \"CH\";", "\nfinancialPerformance.ReportingPeriod = (2020, 12);", "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", - "\nfinancialPerformance.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nfinancialPerformance.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" ], "metadata": {}, @@ -453,7 +453,9 @@ { "cell_type": "code", "source": [ - "await Report.ForDataCube((ir+ise).Filter(x => x.GroupOfContract == \"DT1.1\"))", + "await Report.ForDataCube((ir+ise)", + "\n//.Filter(x => x.GroupOfContract == \"DTR1.1\")", + "\n)", "\n .WithQuerySource(Workspace)", "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", "\n .SliceColumnsBy(new [] {\"Currency\", \"GroupOfContract\"}.Concat(financialPerformance.ColumnSlices).ToArray())", @@ -553,7 +555,7 @@ "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", + "\n", "\n // InsuranceRevenue ", "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization;", "\n", @@ -572,13 +574,13 @@ "source": [ "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", "\n", "\n // Actuals cash flow out Release", "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n protected IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", "\n ", "\n private IDataCube ActualClaims => EffectiveActuals", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", @@ -619,9 +621,90 @@ "\n // .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", "\n", - "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", + "\n // Change in LIC", + "\n private IDataCube FcfDeltas => (GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N)))", + "\n .Filter((\"LiabilityType\", \"LIC\")); // TODO, extract the LIC to a dedicated scope (whole thing, actually)", "\n ", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n private IDataCube FpNonFinancialLic => -1 * NonFinancialFcfDeltas", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE12\" });", + "\n", + "\n // Reinsurance", + "\n IDataCube Reinsurance => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n", + "\n // Insurance Service Expense ", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", + "\n}", + "\n", + "\npublic interface InsuranceServiceExpenseReinsurance : InsuranceServiceExpense {", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE23\" });", + "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", + "\n", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n", + "\n private IDataCube ExpectedCommissions => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE22\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n ", + "\n // Loss Recovery Component (Amortization)", + "\n private IDataCube LoReCoAmortization => GetScope(Identity).Loreco", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube ReinsuranceActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube ReinsuranceBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (", + "\n (ReinsuranceActualPremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (ReinsuranceBestEstimatePremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE21\" });", + "\n", + "\n // Reinsurance", + "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + ExperienceAdjustmentOnPremiums;", "\n}", "\n", "\npublic interface InsuranceServiceExpenseNotApplicable : InsuranceServiceExpense {", @@ -653,6 +736,24 @@ "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 c7b1e60d2da9b98b82efb136f7134816fe972928 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Mon, 22 May 2023 17:20:54 +0200 Subject: [PATCH 20/38] Update IR --- ifrs17-template/Files/Dimensions.csv | 10 +++-- ifrs17/Constants/Consts.ipynb | 2 - ifrs17/Report/ReportScopes.ipynb | 65 +++++++++++++++++++++++----- 3 files changed, 62 insertions(+), 15 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index ad8160ae..435e90c4 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -126,8 +126,6 @@ A,Actuals,90,None,2,NotApplicable,,,,,, F,Factors,100,None,4,NotApplicable,,,,,, BEPA,Best Estimate of Present Value To Csm,110,None,4,NotApplicable,,,,,, APA,Actuals To Csm,120,None,2,NotApplicable,,,,,, -BEPR,Best Estimate of Present Value To Revenue,130,None,4,NotApplicable,,,,,, -APR,Actuals To Revenue,140,None,2,NotApplicable,,,,,, ,,,,,,,,,,, @@LiabilityType,,,,,,,,,,, SystemName,DisplayName,,,,,,,,,, @@ -185,7 +183,13 @@ IR2,Exc. Investment Components,IR,402,,,,,,,, IR3,CSM Amortization,IR,403,,,,,,,, IR4,Acquistion Expenses Amortization,IR,404,,,,,,,, IR5,Non-Financial LRC Changes (Exc. CSM Amortization),IR,405,,,,,,,, -IR6,Exc. Experience Adjustment on Premiums,IR,406,,,,,,,, +IR6,Exc. Experience Adjustments,IR,406,,,,,,,, +IR7,On Premiums,IR6,407,,,,,,,, +IR77,Total,IR7,408,,,,,,,, +IR78,To CSM,IR7,409,,,,,,,, +IR79,To Financial Performance,IR7,410,,,,,,,, +IR8,On Acquistion Expenses,IR6,411,,,,,,,, +IR9,On Investment Components,IR6,412,,,,,,,, IR11,PAA Premiums,IR1,451,,,,,,,, IR12,Experience Adjustment on Premiums,IR1,452,,,,,,,, IR13,Expected Releases / Amortizations,IR,453,,,,,,,, diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index d56dfa5b..9880c4eb 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -309,8 +309,6 @@ "\n public const string FCF = nameof(FCF); //Fulfilment Cash flows", "\n public const string BEPA = nameof(BEPA); //Experience Adjusted BE Premium to Csm", "\n public const string APA = nameof(APA); //Experience Adjusted Written Actual Premium to Csm", - "\n public const string BEPR = nameof(BEPR); //Experience Adjusted BE Premium to Revenue", - "\n public const string APR = nameof(APR); //Experience Adjusted Written Actual Premium to Revenue", "\n}" ], "metadata": {}, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 873e27d8..16866f54 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1050,23 +1050,66 @@ "cell_type": "code", "source": [ "public interface ExperienceAdjustmentOnPremium: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube WrittenPremiumCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\")).Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", - "\n private IDataCube BestEstimatePremium => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\")).Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", + "\n private IDataCube WrittenPremium => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", + "\n private IDataCube BestEstimatePremium => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", "\n private IDataCube WrittenPremiumToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", "\n private IDataCube BestEstimatePremiumToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", "\n", - "\n IDataCube ExperienceAdjustmentOnPremiumTotal => -1 * (WrittenPremiumCashflow - BestEstimatePremium)", + "\n IDataCube ExperienceAdjustmentOnPremiumTotal => -1 * (WrittenPremium - BestEstimatePremium)", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR77\" });", "\n", - "\n IDataCube ExperienceAdjustmentOnPremiumToCsm => (WrittenPremiumToCsm - BestEstimatePremiumToCsm)", + "\n IDataCube ExperienceAdjustmentOnPremiumToCsm => (WrittenPremiumToCsm.SelectToDataCube(v => v with { EstimateType = EstimateTypes.BE}) - BestEstimatePremiumToCsm.SelectToDataCube(v => v with { EstimateType = EstimateTypes.A}))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR78\" });", "\n", - "\n IDataCube ExperienceAdjustmentOnPremiumToRev => ((WrittenPremiumCashflow - WrittenPremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.APR, VariableType = \"IR6\" })", - "\n - (BestEstimatePremium - BestEstimatePremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.BEPR, VariableType = \"IR6\" }))", + "\n IDataCube ExperienceAdjustmentOnPremiumToRev => ((WrittenPremium - WrittenPremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.A })", + "\n - (BestEstimatePremium - BestEstimatePremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.BE }))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR6\" });", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR79\" });", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ExperienceAdjustmentOnAcquistionExpenses: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube WrittenAcquistionExpenses => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x =>", + "\n GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEA) ||", + "\n GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACA)).ToDataCube();", + "\n private IDataCube BestEstimateAcquistionExpenses => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x =>", + "\n GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEA) ||", + "\n GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ACA)).ToDataCube();", + "\n", + "\n IDataCube ExperienceAdjustmentOnAcquistionExpenses => (WrittenAcquistionExpenses - BestEstimateAcquistionExpenses)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR8\" });", + "\n", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface ExperienceAdjustmentOnInvestmentComponents: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n private IDataCube WrittenInvestmentComponents => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO)).ToDataCube();", + "\n private IDataCube BestEstimateInvestmentComponents => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO)).ToDataCube();", + "\n", + "\n IDataCube ExperienceAdjustmentOnInvestmentComponents => (WrittenInvestmentComponents - BestEstimateInvestmentComponents)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR9\" });", "\n}" ], "metadata": {}, @@ -1103,8 +1146,10 @@ "\n private IDataCube IncurredActuals => GetScope(Identity);", "\n private IDataCube IncurredDeferrals => GetScope(Identity);", "\n private IDataCube ExperienceAdjustmentOnPremium => GetScope(Identity);", + "\n private IDataCube ExperienceAdjustmentOnAcquistionExpenses => GetScope(Identity);", + "\n private IDataCube ExperienceAdjustmentOnInvestmentComponents => GetScope(Identity);", "\n ", - "\n IDataCube FinancialPerformance => FcfChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium;", + "\n IDataCube FinancialPerformance => FcfChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium + ExperienceAdjustmentOnAcquistionExpenses + ExperienceAdjustmentOnInvestmentComponents;", "\n}" ], "metadata": {}, From b963cf2fdd8a7ccddf6d6953dccc070649177944 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 09:43:11 +0200 Subject: [PATCH 21/38] Docu --- ifrs17-template/Report/Reports.ipynb | 5 +---- ifrs17/Import/4ImportScope-TechnicalMargin.ipynb | 3 ++- ifrs17/Report/ReportScopes.ipynb | 15 ++++++++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 63584146..35fe038a 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -706,10 +706,7 @@ "\n // Reinsurance", "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + ExperienceAdjustmentOnPremiums;", "\n}", - "\n", - "\npublic interface InsuranceServiceExpenseNotApplicable : InsuranceServiceExpense {", - "\n IDataCube InsuranceServiceExpense.InsuranceServiceExpense => Enumerable.Empty().ToArray().ToDataCube(); ", - "\n}" + "\n" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb b/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb index 76305353..2b43ffaf 100644 --- a/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb +++ b/ifrs17/Import/4ImportScope-TechnicalMargin.ipynb @@ -86,7 +86,8 @@ { "cell_type": "markdown", "source": [ - "The Experience Adjustment (EA) on Premiums weights the cash-flow (CF aocSteps) for premium amount types by the PremiumAllocationFactor input for each group of insurance contract. ", + "", + "\nThe Experience Adjustment (EA) on Premiums weights the cash-flow (CF aocSteps) for premium amount types by the PremiumAllocationFactor input for each group of insurance contract. ", "\nThe contributions of present values and actuals are computed separately.", "\n", "\n$$", diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 16866f54..ad70a0d3 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -633,7 +633,7 @@ "\nThe overall formulas for each of the sections above are as follows:", "\n$$", "\n\\begin{array}{rl}", - "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Incoming Cash flows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cash flows} - \\text{ Experience Adjustment On Premium }", + "\nIR =& -\\Delta \\text{ Gross Non-Financial LRC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Incoming Cash flows } - \\text{ Claims Investment Component } + \\text{ Amortization of the Insurance Acquisition Cash flows} - \\text{ Experience Adjustments }", "\n\\\\", "\nISE =& -\\Delta \\text{ Reinsurance Non-Financial LRC } - \\Delta \\text{ Non-Financial LIC } - \\Delta \\text{ Loss Component } - \\text{ Incurred Outgoing Cash flows } - \\text{ Amortization of the Insurance Acquisition Cash flows}", "\n\\\\", @@ -1029,7 +1029,7 @@ { "cell_type": "markdown", "source": [ - "## Experience Adjustment on Premium (allocation to CSM vs P&L recognition)" + "## Experience Adjustment on Premium (allocation to CSM vs P&L recognition), Acquistion Expenses and Investment Components" ], "metadata": {}, "execution_count": 0, @@ -1038,9 +1038,14 @@ { "cell_type": "markdown", "source": [ - "The figures disclosed in the Financial Performance as described above consider full Premiums for past, current and future services (for Best Estimate and Actuals).", - "\nWe have applied the Premium Allocation factor in the CSM computations to adjust for the experience (included in the Insurance Revenue under the LRC changes).", - "\nAlso the actuals Premium are shown in the Financial Performance for reference. Thus, the net effect of the Experience Adjustment on Premium in the Financial Performance must be zero to avoid double counting. It is allocated under 'Insurance Revenue' in the 'Exc. Experience Adjustment on Premiums' section." + "Since we have included in the CSM some contributions related to experience adjustments (see [Technial Margin](../Import/4ImportScope-TechnicalMargin#technical-margin)), we need to adjust the Insurance Revenue accordingly.", + "\n", + "\nFor Premiums, the incurred values (actuals) are explicitly shown in the Financial Performance. Since the expected values are also implicitly included in the LRC/FCF contributions, the overal experience adjustment on Premium must have a net effect of zero.", + "\nNevertheless, we add the corresponding experience adjustment position for information.", + "\nThe figures disclosed in the Financial Performance as described above consider full Premiums for past, current and future services (for Best Estimate and Actuals).", + "\nWe have applied the Premium Allocation factor in the CSM computations to adjust for the experience (included in the Insurance Revenue under the LRC changes). See [Experience Adjustment on Premium](../Import/4ImportScope-TechnicalMargin#experience-adjustment-on-premium) for more details.", + "\n", + "\nFor Acquistion Expenses and Investment Components, the incurred values (actuals) are not part of the Insurance Revenue, and since they are implicitly included in the CSM position (under LRC changes), we must have the corresponding exclusion of their experience adjustment contributions." ], "metadata": {}, "execution_count": 0, From 3c36ad8ba043c87c59de933bb41b6a1660f477e0 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 11:00:54 +0200 Subject: [PATCH 22/38] More fixes --- ifrs17-template/Files/Dimensions.csv | 1 - ifrs17-template/Report/Reports.ipynb | 8 +++---- ifrs17/Report/ReportScopes.ipynb | 34 ++++++++-------------------- 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 435e90c4..7833cce7 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -189,7 +189,6 @@ IR77,Total,IR7,408,,,,,,,, IR78,To CSM,IR7,409,,,,,,,, IR79,To Financial Performance,IR7,410,,,,,,,, IR8,On Acquistion Expenses,IR6,411,,,,,,,, -IR9,On Investment Components,IR6,412,,,,,,,, IR11,PAA Premiums,IR1,451,,,,,,,, IR12,Experience Adjustment on Premiums,IR1,452,,,,,,,, IR13,Expected Releases / Amortizations,IR,453,,,,,,,, diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 35fe038a..4f76d118 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -261,7 +261,7 @@ "source": [ "var experienceAdjustments = ifrs17.ExperienceAdjustments;", "\nexperienceAdjustments.ReportingNode = \"CH\";", - "\nexperienceAdjustments.ReportingPeriod = (2020, 12);", + "\nexperienceAdjustments.ReportingPeriod = (2021, 3);", "\nexperienceAdjustments.ColumnSlices = new string[]{\"GroupOfContract\",\"AmountType\"};//\"GroupOfContract\", \"AmountType\"", "\nexperienceAdjustments.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await experienceAdjustments.ToReportAsync)" @@ -441,7 +441,7 @@ "source": [ "var financialPerformance = ifrs17.FinancialPerformance;", "\nfinancialPerformance.ReportingNode = \"CH\";", - "\nfinancialPerformance.ReportingPeriod = (2020, 12);", + "\nfinancialPerformance.ReportingPeriod = (2021, 3);", "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", "\nfinancialPerformance.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" @@ -454,7 +454,7 @@ "cell_type": "code", "source": [ "await Report.ForDataCube((ir+ise)", - "\n//.Filter(x => x.GroupOfContract == \"DTR1.1\")", + "\n//.Filter(x => x.GroupOfContract == \"DT1.1\")", "\n)", "\n .WithQuerySource(Workspace)", "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", @@ -720,7 +720,7 @@ "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", "\n", - "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2020,12), \"CH\", null,CurrencyType.Contractual);", + "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2021,3), \"CH\", null,CurrencyType.Contractual);", "\n", "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index ad70a0d3..ca5dc616 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -941,7 +941,7 @@ "\n", "\nThese contributions are splitted by Amount Type to the following sections:", "\n- Premiums contributions are reported under 'Insurance Revenue' in 'Premiums' section or in 'Insurance Service Expense' under 'Reinsurance Premiums' for a Group of Insurance Contract and a Group of Reinsurance Contract, respectively,", - "\n- Claims Non-Investment Component contributions are reported under 'Insurance Revenue' in 'Claims' section,", + "\n- Claims (Non-Investment Component and Investment Component) contributions are reported under 'Insurance Revenue' in 'Claims' section,", "\n- Claims Investment Component contributions are reported under 'Insurance Service Expense' in 'Acquisition Expenses' section and under 'Insurance Revenue' in 'Exc. Investment Components' section with a sign change,", "\n- Expenses contributions are reported under 'Insurance Service Expense' in 'Expenses' section,", "\n- Commissions contributions are reported under 'Insurance Service Expense' in 'Commissions' section." @@ -968,8 +968,8 @@ "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = premiumsVariableType });", "\n ", - "\n IDataCube ClaimsNic => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.NIC))", + "\n IDataCube Claims => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE2\" });", "\n ", "\n private IDataCube ClaimsIco => EffectiveActuals", @@ -1029,7 +1029,7 @@ { "cell_type": "markdown", "source": [ - "## Experience Adjustment on Premium (allocation to CSM vs P&L recognition), Acquistion Expenses and Investment Components" + "## Experience Adjustment on Premium (allocation to CSM vs P&L recognition), Investment Components and Acquistion Expenses" ], "metadata": {}, "execution_count": 0, @@ -1045,7 +1045,10 @@ "\nThe figures disclosed in the Financial Performance as described above consider full Premiums for past, current and future services (for Best Estimate and Actuals).", "\nWe have applied the Premium Allocation factor in the CSM computations to adjust for the experience (included in the Insurance Revenue under the LRC changes). See [Experience Adjustment on Premium](../Import/4ImportScope-TechnicalMargin#experience-adjustment-on-premium) for more details.", "\n", - "\nFor Acquistion Expenses and Investment Components, the incurred values (actuals) are not part of the Insurance Revenue, and since they are implicitly included in the CSM position (under LRC changes), we must have the corresponding exclusion of their experience adjustment contributions." + "\nThe same would apply for the Investment Components, as we also have explicitly added the position of the incurred values (actuals) to the Insurance Revenue (exclusion of Investment Components).", + "\nHowever, we do not show the corresponding experience adjustment in the Financial Performance, as it should also have a net effect of zero and there is no factor to adjust the recognition between Financial Performance and CS like in the case of Premiums.", + "\n", + "\nFor Acquistion Expenses, the incurred values (actuals) are not part of the Insurance Revenue, and since they are implicitly included in the CSM position (under LRC changes), we must have the corresponding exclusion of their experience adjustment contributions." ], "metadata": {}, "execution_count": 0, @@ -1103,24 +1106,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "code", - "source": [ - "public interface ExperienceAdjustmentOnInvestmentComponents: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n private IDataCube WrittenInvestmentComponents => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO)).ToDataCube();", - "\n private IDataCube BestEstimateInvestmentComponents => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO)).ToDataCube();", - "\n", - "\n IDataCube ExperienceAdjustmentOnInvestmentComponents => (WrittenInvestmentComponents - BestEstimateInvestmentComponents)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR9\" });", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "source": [ @@ -1152,9 +1137,8 @@ "\n private IDataCube IncurredDeferrals => GetScope(Identity);", "\n private IDataCube ExperienceAdjustmentOnPremium => GetScope(Identity);", "\n private IDataCube ExperienceAdjustmentOnAcquistionExpenses => GetScope(Identity);", - "\n private IDataCube ExperienceAdjustmentOnInvestmentComponents => GetScope(Identity);", "\n ", - "\n IDataCube FinancialPerformance => FcfChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium + ExperienceAdjustmentOnAcquistionExpenses + ExperienceAdjustmentOnInvestmentComponents;", + "\n IDataCube FinancialPerformance => FcfChangeInEstimate + CsmChangeInEstimate + LcChangeInEstimate + LorecoChangeInEstimate + IncurredActuals + IncurredDeferrals + ExperienceAdjustmentOnPremium + ExperienceAdjustmentOnAcquistionExpenses;", "\n}" ], "metadata": {}, From a70729d4e0ee5cca946f755479b5c2ab9f72ce0a Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 14:28:20 +0200 Subject: [PATCH 23/38] Update --- ifrs17-template/Report/Reports.ipynb | 104 +++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 4 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 4f76d118..c815ee0b 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -97,11 +97,11 @@ "source": [ "var pv = ifrs17.PresentValues;", "\npv.ReportingNode = \"CH\";", - "\npv.ReportingPeriod = (2020, 12);", + "\npv.ReportingPeriod = (2021, 3);", "\npv.CurrencyType = CurrencyType.Contractual;", "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", - "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", + "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DTR1.2\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -453,7 +453,7 @@ { "cell_type": "code", "source": [ - "await Report.ForDataCube((ir+ise)", + "await Report.ForDataCube((ir+ise+ifieOci)", "\n//.Filter(x => x.GroupOfContract == \"DT1.1\")", "\n)", "\n .WithQuerySource(Workspace)", @@ -712,6 +712,101 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceFinanceIncomeExpenseOci: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n //FCF", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube CurrentFcfDeltas => GetScope(Identity).CurrentFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).CurrentFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n // Financial Fp", + "\n private string variableTypeFpFinancial => Identity.Id switch {", + "\n { LiabilityType: LiabilityTypes.LRC } => \"IFIE1\",", + "\n { LiabilityType: LiabilityTypes.LIC } => \"IFIE2\",", + "\n };", + "\n ", + "\n // OCI ", + "\n private string variableTypeOciFinancial => Identity.Id switch {", + "\n { LiabilityType: LiabilityTypes.LRC } => \"OCI1\",", + "\n { LiabilityType: LiabilityTypes.LIC } => \"OCI2\",", + "\n };", + "\n ", + "\n private IDataCube FinancialFcfDeltas => FcfDeltas.Filter((\"VariableType\", AocTypes.IA)) + ", + "\n FcfDeltas.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n FcfDeltas.Filter((\"VariableType\", AocTypes.CRU));", + "\n ", + "\n private IDataCube FpFcfFx => -1 * FcfDeltas", + "\n .Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IFIE3\"});", + "\n ", + "\n private IDataCube FpFcfFinancial => -1 * FinancialFcfDeltas", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial});", + "\n", + "\n private IDataCube OciFcfFx => (FcfDeltas - CurrentFcfDeltas)", + "\n .Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"OCI3\"});", + "\n", + "\n private IDataCube OciFcfFinancial => (FcfDeltas - CurrentFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial});", + "\n", + "\n // CSM", + "\n private IDataCube Csm => GetScope(Identity).Csm.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Csm.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube CsmFx => -1 * Csm.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube CsmFinancialChanges => -1 * (Csm.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // LC", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube LcFx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube LcFinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // LoReCo", + "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LorecoFx => -1 * Loreco.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube LorecoFinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n //Insurance Finance Income/Expense Oci", + "\n IDataCube InsuranceFinanceIncomeExpenseOci => FpFcfFx + FpFcfFinancial + OciFcfFx + OciFcfFinancial + CsmFx + CsmFinancialChanges + LcFx + LcFinancialChanges + LorecoFx + LorecoFinancialChanges;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -728,7 +823,8 @@ "\nvar universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();", "\n", "\nvar ir = universe.GetScopes(identities).Aggregate().InsuranceRevenue;", - "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;" + "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;", + "\nvar ifieOci = universe.GetScopes(identities).Aggregate().InsuranceFinanceIncomeExpenseOci;" ], "metadata": {}, "execution_count": 0, From 7d661cc6ebf271d7d26e581f5a14fb811ddd1f96 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 16:34:20 +0200 Subject: [PATCH 24/38] Remove some stuff from IR --- ifrs17-template/Report/Reports.ipynb | 36 +++++++++++++--------------- ifrs17/Report/ReportScopes.ipynb | 22 +++++++++++++++-- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index c815ee0b..05d800b6 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -101,7 +101,7 @@ "\npv.CurrencyType = CurrencyType.Contractual;", "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", - "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DTR1.2\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", + "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DTR2.1\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -314,9 +314,9 @@ "source": [ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", - "\nallocatedTechnicalMargins.ReportingPeriod = (2020, 12);", - "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EstimateType\"", - "\nallocatedTechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 3);", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"GroupOfContract\", \"EstimateType\"", + "\nallocatedTechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync)" ], "metadata": {}, @@ -414,7 +414,7 @@ "source": [ "var lic = ifrs17.Lic;", "\nlic.ReportingNode = \"CH\";", - "\nlic.ReportingPeriod = (2021, 3);", + "\nlic.ReportingPeriod = (2020, 12);", "\nlic.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nlic.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lic.ToReportAsync)" @@ -443,8 +443,8 @@ "\nfinancialPerformance.ReportingNode = \"CH\";", "\nfinancialPerformance.ReportingPeriod = (2021, 3);", "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", - "\nfinancialPerformance.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", - "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" + "\nfinancialPerformance.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 2}" ], "metadata": {}, "execution_count": 0, @@ -454,12 +454,12 @@ "cell_type": "code", "source": [ "await Report.ForDataCube((ir+ise+ifieOci)", - "\n//.Filter(x => x.GroupOfContract == \"DT1.1\")", + "\n.Filter(x => x.GroupOfContract == \"DT1.1\")", "\n)", "\n .WithQuerySource(Workspace)", "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", "\n .SliceColumnsBy(new [] {\"Currency\", \"GroupOfContract\"}.Concat(financialPerformance.ColumnSlices).ToArray())", - "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 3)", + "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 2)", "\n .ExecuteAsync()" ], "metadata": {}, @@ -522,10 +522,10 @@ "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", - "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", "\n", "\n private IDataCube ExpectedExpenses => CfOut", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", @@ -613,14 +613,6 @@ "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", "\n ", - "\n // private IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", - "\n // .AggregateOver(nameof(Novelty))", - "\n // .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", - "\n", - "\n // private IDataCube FinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) + Lc.Filter((\"VariableType\", AocTypes.YCU)) + Lc.Filter((\"VariableType\", AocTypes.CRU)) )", - "\n // .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", - "\n", "\n // Change in LIC", "\n private IDataCube FcfDeltas => (GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N)))", @@ -653,7 +645,6 @@ "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE23\" });", - "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", "\n", "\n private IDataCube ExpectedExpenses => CfOut", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", @@ -678,6 +669,11 @@ "\n private IDataCube LoReCoAmortization => GetScope(Identity).Loreco", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n ", + "\n private IDataCube LoReCoNonFinancialChanges => -1 * GetScope(Identity).Loreco", + "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", "\n", "\n // Experience Adjustment On Premiums", "\n private IDataCube ReinsuranceActualPremiums => Identity.Id switch {", @@ -704,7 +700,7 @@ "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE21\" });", "\n", "\n // Reinsurance", - "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + ExperienceAdjustmentOnPremiums;", + "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums;", "\n}", "\n" ], diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index ca5dc616..7a43ac09 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -858,7 +858,7 @@ "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", "\n", - "\n IDataCube NonFinancialChangesToIr => -1 * (Amortization + NonFinancialChanges).SelectToDataCube(v => v with { VariableType = \"IR5\" }); ", + "\n IDataCube NonFinancialChangesToIr => -1 * (Amortization + NonFinancialChanges).SelectToDataCube(v => v with { VariableType = \"IR5\" });", "\n ", "\n IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", "\n .AggregateOver(nameof(Novelty))", @@ -908,7 +908,9 @@ "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", - "\n ", + "\n", + "\n IDataCube NonFinancialChangesToIr => -1 * (Amortization + NonFinancialChanges).SelectToDataCube(v => v with { VariableType = \"ISE10\" });", + "\n", "\n IDataCube Fx => -1 * Loreco.Filter((\"VariableType\", AocTypes.FX))", "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", @@ -1058,6 +1060,9 @@ "cell_type": "code", "source": [ "public interface ExperienceAdjustmentOnPremium: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", + "\n", "\n private IDataCube WrittenPremium => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR)).ToDataCube();", "\n private IDataCube BestEstimatePremium => GetScope(Identity).BestEstimate.Filter((\"VariableType\", \"CF\"))", @@ -1077,6 +1082,12 @@ "\n - (BestEstimatePremium - BestEstimatePremiumToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(v => v with { EstimateType = EstimateTypes.BE }))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR79\" });", + "\n}", + "\n", + "\npublic interface ExperienceAdjustmentOnPremiumNotApplicable: ExperienceAdjustmentOnPremium {", + "\n IDataCube ExperienceAdjustmentOnPremium.ExperienceAdjustmentOnPremiumTotal => Enumerable.Empty().ToArray().ToDataCube();", + "\n IDataCube ExperienceAdjustmentOnPremium.ExperienceAdjustmentOnPremiumToCsm => Enumerable.Empty().ToArray().ToDataCube();", + "\n IDataCube ExperienceAdjustmentOnPremium.ExperienceAdjustmentOnPremiumToRev => Enumerable.Empty().ToArray().ToDataCube(); ", "\n}" ], "metadata": {}, @@ -1087,6 +1098,9 @@ "cell_type": "code", "source": [ "public interface ExperienceAdjustmentOnAcquistionExpenses: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", + "\n", "\n private IDataCube WrittenAcquistionExpenses => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"))", "\n .Where(x =>", "\n GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AEA) ||", @@ -1100,6 +1114,10 @@ "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR8\" });", "\n", + "\n}", + "\n", + "\npublic interface ExperienceAdjustmentOnAcquistionExpensesNotApplicable: ExperienceAdjustmentOnAcquistionExpenses {", + "\n IDataCube ExperienceAdjustmentOnAcquistionExpenses.ExperienceAdjustmentOnAcquistionExpenses=> Enumerable.Empty().ToArray().ToDataCube(); ", "\n}" ], "metadata": {}, From 84f0a85c575828a2fcd9a79e6db0dd1c809c508e Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 22:54:35 +0200 Subject: [PATCH 25/38] Added CE --- ifrs17-template/Files/Dimensions.csv | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 7833cce7..31bb2eaa 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -196,14 +196,15 @@ ISE1,Reinsurance Premiums,ISE,501,,,,,,,, ISE2,Claims,ISE,502,,,,,,,, ISE3,Expenses,ISE,503,,,,,,,, ISE4,Commissions,ISE,504,,,,,,,, -ISE5,Exc. Investment Components,ISE,505,,,,,,,, -ISE6,Acquisition Expenses,ISE,506,,,,,,,, -ISE7,Reinsurance CSM Amortization,ISE,507,,,,,,,, -ISE8,LoReCo Release,ISE,508,,,,,,,, -ISE9,Loss Component Release,ISE,509,,,,,,,, -ISE10,Non-Financial Reinsurance LRC Changes (Exc. LC/LoReCo),ISE,510,,,,,,,, -ISE11,Loss Component / LoReCo Changes (Exc. Releases),ISE,511,,,,,,,, -ISE12,Non Financial LIC Changes,ISE,512,,,,,,,, +ISE41,Claim Expenses,ISE,505,,,,,,,, +ISE5,Exc. Investment Components,ISE,506,,,,,,,, +ISE6,Acquisition Expenses,ISE,507,,,,,,,, +ISE7,Reinsurance CSM Amortization,ISE,508,,,,,,,, +ISE8,LoReCo Release,ISE,509,,,,,,,, +ISE9,Loss Component Release,ISE,510,,,,,,,, +ISE10,Non-Financial Reinsurance LRC Changes (Exc. LC/LoReCo),ISE,511,,,,,,,, +ISE11,Loss Component / LoReCo Changes (Exc. Releases),ISE,512,,,,,,,, +ISE12,Non Financial LIC Changes,ISE,513,,,,,,,, ISE20,Reinsurance Revenue,ISE,520,,,,,,,, ISE21,Experience Adjustment on Premiums,ISE20,521,,,,,,,, ISE22,Expected Releases / Amortizations,ISE20,522,,,,,,,, From 8ccc1b159319bd542ecd792696ed838578c5b753 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Tue, 23 May 2023 22:58:50 +0200 Subject: [PATCH 26/38] Fix --- ifrs17-template/Report/Reports.ipynb | 6 +++++- ifrs17/Constants/Consts.ipynb | 2 ++ ifrs17/Report/ReportScopes.ipynb | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 05d800b6..74badc99 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -597,6 +597,10 @@ "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", "\n", + "\n private IDataCube ActualClaimExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE41\" });", + "\n", "\n // Acquistion Expenses Release (Amortization)", "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", "\n .Filter((\"VariableType\", AocTypes.AM))", @@ -629,7 +633,7 @@ "\n IDataCube Reinsurance => Enumerable.Empty().ToArray().ToDataCube(); ", "\n", "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + ActualClaimExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", "\n}", "\n", "\npublic interface InsuranceServiceExpenseReinsurance : InsuranceServiceExpense {", diff --git a/ifrs17/Constants/Consts.ipynb b/ifrs17/Constants/Consts.ipynb index 9880c4eb..35d6959d 100644 --- a/ifrs17/Constants/Consts.ipynb +++ b/ifrs17/Constants/Consts.ipynb @@ -384,6 +384,8 @@ "\n public const string AEM = nameof(AEM); // Attributable Expenses Maintenance", "\n public const string AC = nameof(AC); // Attributable Commissions", "\n public const string AE = nameof(AE); // Attributable Expenses", + "\n public const string CE = nameof(CE); // Claim Expenses", + "\n public const string ALE = nameof(ALE); // Allocated Loss Adjustment Expenses", "\n public const string ULE = nameof(ULE); // Unallocated Loss Adjustment Expenses", "\n}" ], diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 7a43ac09..defd8a70 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -987,6 +987,10 @@ "\n IDataCube Commissions => EffectiveActuals", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE4\" });", + "\n", + "\n IDataCube ClaimExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CE))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE41\" });", "\n}" ], "metadata": {}, From 1762f78c3e34c15bfe759bc447e0631e307d382c Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 22:00:39 +0200 Subject: [PATCH 27/38] Seems to work now --- ifrs17-template/Files/Dimensions.csv | 2 ++ ifrs17-template/Report/Reports.ipynb | 52 +++++++++++++++++++++++----- ifrs17/Report/ReportScopes.ipynb | 2 +- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 31bb2eaa..07d38a6a 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -192,6 +192,7 @@ IR8,On Acquistion Expenses,IR6,411,,,,,,,, IR11,PAA Premiums,IR1,451,,,,,,,, IR12,Experience Adjustment on Premiums,IR1,452,,,,,,,, IR13,Expected Releases / Amortizations,IR,453,,,,,,,, +IR14,FCF Locked-In Interest Rate Correction,IR,454,,,,,,,, ISE1,Reinsurance Premiums,ISE,501,,,,,,,, ISE2,Claims,ISE,502,,,,,,,, ISE3,Expenses,ISE,503,,,,,,,, @@ -209,6 +210,7 @@ ISE20,Reinsurance Revenue,ISE,520,,,,,,,, ISE21,Experience Adjustment on Premiums,ISE20,521,,,,,,,, ISE22,Expected Releases / Amortizations,ISE20,522,,,,,,,, ISE23,Exc. Investment Components,ISE20,523,,,,,,,, +ISE24,FCF Locked-In Interest Rate Correction,ISE20,524,,,,,,,, IFIE1,Financial LRC Changes,IFIE,601,,,,,,,, IFIE2,Financial LIC Changes,IFIE,602,,,,,,,, IFIE3,FX Changes,IFIE,603,,,,,,,, diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 74badc99..92cb1cdc 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -126,9 +126,9 @@ "source": [ "var ra = ifrs17.RiskAdjustments;", "\nra.ReportingNode = \"CH\";", - "\nra.ReportingPeriod = (2020, 12);", + "\nra.ReportingPeriod = (2021, 3);", "\nra.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\", \"EconomicBasis\"", - "\nra.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DT1.2\")};", + "\nra.DataFilter = new [] {(\"GroupOfContract\", \"DT2.1\")};//new [] {(\"GroupOfContract\", \"DT1.2\")};", "\n(await ra.ToReportAsync)" ], "metadata": {}, @@ -441,9 +441,9 @@ "source": [ "var financialPerformance = ifrs17.FinancialPerformance;", "\nfinancialPerformance.ReportingNode = \"CH\";", - "\nfinancialPerformance.ReportingPeriod = (2021, 3);", + "\nfinancialPerformance.ReportingPeriod = (2020,12);", "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", - "\nfinancialPerformance.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nfinancialPerformance.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 2}" ], "metadata": {}, @@ -454,7 +454,7 @@ "cell_type": "code", "source": [ "await Report.ForDataCube((ir+ise+ifieOci)", - "\n.Filter(x => x.GroupOfContract == \"DT1.1\")", + "\n//.Filter(x => x.GroupOfContract == \"DT1.1\" || x.GroupOfContract == \"DT2.1\")", "\n)", "\n .WithQuerySource(Workspace)", "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", @@ -556,8 +556,25 @@ "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", "\n", + "\n // FCF Locked-In Interest Rate Correction", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n ", + "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n IDataCube NonFinancialFcfDeltasCorrection => -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR14\"});", + "\n", "\n // InsuranceRevenue ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization;", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization + NonFinancialFcfDeltasCorrection;", "\n", "\n}", "\n", @@ -703,8 +720,27 @@ "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE21\" });", "\n", + "\n // FCF Locked-In Interest Rate Correction", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n ", + "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n IDataCube NonFinancialFcfDeltasCorrection => (Identity.Id.LiabilityType == LiabilityTypes.LIC)", + "\n ? Enumerable.Empty().ToArray().ToDataCube()", + "\n : -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE24\"});", + "\n", "\n // Reinsurance", - "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums;", + "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums + NonFinancialFcfDeltasCorrection;", "\n}", "\n" ], @@ -815,7 +851,7 @@ "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", "\n", - "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2021,3), \"CH\", null,CurrencyType.Contractual);", + "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2020,12), \"CH\", null,CurrencyType.Contractual);", "\n", "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index defd8a70..fa4495d8 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -977,7 +977,7 @@ "\n private IDataCube ClaimsIco => EffectiveActuals", "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO)).ToDataCube();", "\n ", - "\n IDataCube ClaimsIcoToIr => ClaimsIco.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR2\" });", + "\n IDataCube ClaimsIcoToIr => ClaimsIco.SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR2\" }); //TODO, add Reinsurance case", "\n IDataCube ClaimsIcoToIse => (-1 * ClaimsIco).SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE5\" });", "\n ", "\n IDataCube Expenses => EffectiveActuals", From afb0e1e031c48a65563a3994457ff04162a361a1 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 22:23:30 +0200 Subject: [PATCH 28/38] Clean up --- ifrs17/Report/ReportMutableScopes.ipynb | 12 + ifrs17/Report/ReportScopes.ipynb | 395 +++++++++++++++++++++++- 2 files changed, 406 insertions(+), 1 deletion(-) diff --git a/ifrs17/Report/ReportMutableScopes.ipynb b/ifrs17/Report/ReportMutableScopes.ipynb index 86542ebf..53a64cd9 100644 --- a/ifrs17/Report/ReportMutableScopes.ipynb +++ b/ifrs17/Report/ReportMutableScopes.ipynb @@ -105,6 +105,7 @@ "\n .WithApplicability(x => x.Identity == nameof(ActLicReport))", "\n .WithApplicability(x => x.Identity == nameof(LicReport))", "\n .WithApplicability(x => x.Identity == nameof(FpReport))", + "\n .WithApplicability(x => x.Identity == nameof(FpAlternativeReport))", "\n );", "\n", "\n // Basic mutable properties", @@ -300,6 +301,16 @@ "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformance.Filter(dataFilter);", "\n}", "\n", + "\npublic interface FpAlternativeReport : IIfrs17Report {", + "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};", + "\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\", \"EstimateType\"};", + "\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\"};", + "\n int IIfrs17Report.headerColumnWidthValue => 500;", + "\n IDataCube IIfrs17Report.GetDataCube() => ", + "\n DataFilter == null ? GetScopes(GetIdentities()).Aggregate().FinancialPerformanceAlternative", + "\n : GetScopes(GetIdentities()).Aggregate().FinancialPerformanceAlternative.Filter(dataFilter);", + "\n}", + "\n", "\npublic interface Data : IMutableScope<((int year, int month) period, string reportingNode, string scenario, CurrencyType currencyType, ", "\n string reportType, (string filterName, object filterValue)[] dataFilter)> ", "\n{", @@ -377,6 +388,7 @@ "\n public IIfrs17Report ActuarialLic => reportUniverse.GetScope(nameof(ActLicReport));", "\n public IIfrs17Report Lic => reportUniverse.GetScope(nameof(LicReport));", "\n public IIfrs17Report FinancialPerformance => reportUniverse.GetScope(nameof(FpReport));", + "\n public IIfrs17Report FinancialPerformanceAlternative => reportUniverse.GetScope(nameof(FpAlternativeReport));", "\n}" ], "metadata": {}, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index fa4495d8..fd045367 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1177,10 +1177,403 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "We have added an alternative view of the Financial Performance for reconciliation purposes (documentation pending)" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ - "" + "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", + "\n", + "\n // PAA Premiums", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube PaaPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", + "\n _ => Enumerable.Empty().ToArray().ToDataCube()", + "\n };", + "\n", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube WrittenPremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", + "\n private IDataCube BestEstimatePremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (", + "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", + "\n", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", + "\n", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n private IDataCube ExpectedCommissions => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n ", + "\n // Loss Component Release (Amortization)", + "\n private IDataCube LossComponentAmortization => GetScope(Identity).Lc", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", + "\n", + "\n // FCF Locked-In Interest Rate Correction", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n ", + "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n private IDataCube NonFinancialFcfDeltasCorrection => -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR14\"});", + "\n", + "\n // InsuranceRevenue ", + "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization + NonFinancialFcfDeltasCorrection;", + "\n", + "\n}", + "\n", + "\npublic interface InsuranceRevenueNotApplicable : InsuranceRevenue {", + "\n IDataCube InsuranceRevenue.InsuranceRevenue => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", + "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", + "\n", + "\n // Actuals cash flow out Release", + "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", + "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", + "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", + "\n protected IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", + "\n ", + "\n private IDataCube ActualClaims => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE2\" });", + "\n private IDataCube ActualClaimsInvestmentComponent => -1 * EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE5\" });", + "\n", + "\n private IDataCube ActualExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", + "\n", + "\n private IDataCube ActualCommissions => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", + "\n", + "\n private IDataCube ActualClaimExpenses => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE41\" });", + "\n", + "\n // Acquistion Expenses Release (Amortization)", + "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE6\" });", + "\n", + "\n // Loss Component", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LcAmortization => -1 * Lc.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"ISE9\" });", + "\n ", + "\n private IDataCube LcNonFinancialChanges => -1 * Lc", + "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n ", + "\n // Change in LIC", + "\n private IDataCube FcfDeltas => (GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N)))", + "\n .Filter((\"LiabilityType\", \"LIC\")); // TODO, extract the LIC to a dedicated scope (whole thing, actually)", + "\n ", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n private IDataCube FpNonFinancialLic => -1 * NonFinancialFcfDeltas", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE12\" });", + "\n", + "\n // Reinsurance", + "\n protected IDataCube Reinsurance => Enumerable.Empty().ToArray().ToDataCube(); ", + "\n", + "\n // Insurance Service Expense ", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + ActualClaimExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", + "\n}", + "\n", + "\npublic interface InsuranceServiceExpenseReinsurance : InsuranceServiceExpense {", + "\n // Expected Best Estimate cash flow out Release", + "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", + "\n ", + "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE23\" });", + "\n", + "\n private IDataCube ExpectedExpenses => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n", + "\n private IDataCube ExpectedCommissions => CfOut", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n", + "\n // RA Release", + "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE22\" });", + "\n", + "\n // CSM Release (Amortization)", + "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n ", + "\n // Loss Recovery Component (Amortization)", + "\n private IDataCube LoReCoAmortization => GetScope(Identity).Loreco", + "\n .Filter((\"VariableType\", AocTypes.AM))", + "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", + "\n ", + "\n private IDataCube LoReCoNonFinancialChanges => -1 * GetScope(Identity).Loreco", + "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n", + "\n // Experience Adjustment On Premiums", + "\n private IDataCube ReinsuranceActualPremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => EffectiveActuals", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", + "\n };", + "\n", + "\n private IDataCube ReinsuranceBestEstimatePremiums => Identity.Id switch {", + "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", + "\n _ => GetScope(Identity).BestEstimate", + "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", + "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", + "\n };", + "\n", + "\n private IDataCube ExperienceAdjustmentOnPremiums => (", + "\n (ReinsuranceActualPremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", + "\n (ReinsuranceBestEstimatePremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", + "\n )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE21\" });", + "\n", + "\n // FCF Locked-In Interest Rate Correction", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n ", + "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", + "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", + "\n", + "\n private IDataCube NonFinancialFcfDeltasCorrection => (Identity.Id.LiabilityType == LiabilityTypes.LIC)", + "\n ? Enumerable.Empty().ToArray().ToDataCube()", + "\n : -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE24\"});", + "\n", + "\n // Reinsurance", + "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums + NonFinancialFcfDeltasCorrection;", + "\n}", + "\n" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface InsuranceFinanceIncomeExpenseOci: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n //FCF", + "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube CurrentFcfDeltas => GetScope(Identity).CurrentFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).CurrentFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n // Financial Fp", + "\n private string variableTypeFpFinancial => Identity.Id switch {", + "\n { LiabilityType: LiabilityTypes.LRC } => \"IFIE1\",", + "\n { LiabilityType: LiabilityTypes.LIC } => \"IFIE2\",", + "\n };", + "\n ", + "\n // OCI ", + "\n private string variableTypeOciFinancial => Identity.Id switch {", + "\n { LiabilityType: LiabilityTypes.LRC } => \"OCI1\",", + "\n { LiabilityType: LiabilityTypes.LIC } => \"OCI2\",", + "\n };", + "\n ", + "\n private IDataCube FinancialFcfDeltas => FcfDeltas.Filter((\"VariableType\", AocTypes.IA)) + ", + "\n FcfDeltas.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n FcfDeltas.Filter((\"VariableType\", AocTypes.CRU));", + "\n ", + "\n private IDataCube FpFcfFx => -1 * FcfDeltas", + "\n .Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IFIE3\"});", + "\n ", + "\n private IDataCube FpFcfFinancial => -1 * FinancialFcfDeltas", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial});", + "\n", + "\n private IDataCube OciFcfFx => (FcfDeltas - CurrentFcfDeltas)", + "\n .Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"OCI3\"});", + "\n", + "\n private IDataCube OciFcfFinancial => (FcfDeltas - CurrentFcfDeltas)", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial});", + "\n", + "\n // CSM", + "\n private IDataCube Csm => GetScope(Identity).Csm.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Csm.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube CsmFx => -1 * Csm.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube CsmFinancialChanges => -1 * (Csm.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Csm.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // LC", + "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube LcFx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube LcFinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n // LoReCo", + "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n ", + "\n private IDataCube LorecoFx => -1 * Loreco.Filter((\"VariableType\", AocTypes.FX))", + "\n .AggregateOver(nameof(Novelty))", + "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", + "\n", + "\n private IDataCube LorecoFinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n //Insurance Finance Income/Expense Oci", + "\n IDataCube InsuranceFinanceIncomeExpenseOci => FpFcfFx + FpFcfFinancial + OciFcfFx + OciFcfFinancial + CsmFx + CsmFinancialChanges + LcFx + LcFinancialChanges + LorecoFx + LorecoFinancialChanges;", + "\n}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public interface FinancialPerformanceAlternative: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", + "\n ", + "\n private IDataCube InsuranceRevenue => GetScope(Identity);", + "\n private IDataCube InsuranceServiceExpense => GetScope(Identity);", + "\n private IDataCube InsuranceFinanceIncomeExpenseOci => GetScope(Identity);", + "\n ", + "\n IDataCube FinancialPerformanceAlternative => InsuranceRevenue + InsuranceServiceExpense + InsuranceFinanceIncomeExpenseOci;", + "\n}" ], "metadata": {}, "execution_count": 0, From 8546fa0b0b012901eecc9c2ed763a8d3e8094cf4 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 23:06:04 +0200 Subject: [PATCH 29/38] reset --- ifrs17-template/Report/Reports.ipynb | 481 ++------------------------- 1 file changed, 28 insertions(+), 453 deletions(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 92cb1cdc..f9c55208 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -1,7 +1,7 @@ { "metadata": { "authors": [], - "id": "kE0lIOQKnkOdWh63xf3cZA", + "id": "DCgii_7-fECfGgqIf40f0w", "kernelspec": { "display_name": "Formula Framework", "language": "C#", @@ -99,9 +99,9 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (2021, 3);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{\"GroupOfContract\", \"AmountType\"};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", + "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", - "\npv.DataFilter = new [] {(\"GroupOfContract\", \"DTR2.1\")}; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", + "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" ], "metadata": {}, @@ -127,8 +127,8 @@ "var ra = ifrs17.RiskAdjustments;", "\nra.ReportingNode = \"CH\";", "\nra.ReportingPeriod = (2021, 3);", - "\nra.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\", \"EconomicBasis\"", - "\nra.DataFilter = new [] {(\"GroupOfContract\", \"DT2.1\")};//new [] {(\"GroupOfContract\", \"DT1.2\")};", + "\nra.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EconomicBasis\"", + "\nra.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.2\")};", "\n(await ra.ToReportAsync)" ], "metadata": {}, @@ -155,8 +155,8 @@ "var writtenActual = ifrs17.WrittenActuals;", "\nwrittenActual.ReportingNode = \"CH\";", "\nwrittenActual.ReportingPeriod = (2021, 3);", - "\nwrittenActual.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", - "\nwrittenActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nwrittenActual.ColumnSlices = new string[]{};//\"GroupOfContract\"", + "\nwrittenActual.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await writtenActual.ToReportAsync)" ], "metadata": {}, @@ -184,7 +184,7 @@ "\naccrualActual.ReportingNode = \"CH\";", "\naccrualActual.ReportingPeriod = (2021, 3);", "\naccrualActual.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\naccrualActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"EstimateType\", \"AA\")};", + "\naccrualActual.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};", "\n(await accrualActual.ToReportAsync)" ], "metadata": {}, @@ -207,9 +207,9 @@ "source": [ "var deferrableActual = ifrs17.DeferralActuals;", "\ndeferrableActual.ReportingNode = \"CH\";", - "\ndeferrableActual.ReportingPeriod = (2020, 12);", + "\ndeferrableActual.ReportingPeriod = (2021, 3);", "\ndeferrableActual.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\ndeferrableActual.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};//new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\ndeferrableActual.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await deferrableActual.ToReportAsync)" ], "metadata": {}, @@ -236,9 +236,9 @@ "source": [ "var fulfillmentCashflows = ifrs17.FulfillmentCashflows;", "\nfulfillmentCashflows.ReportingNode = \"CH\";", - "\nfulfillmentCashflows.ReportingPeriod = (2020, 12);", - "\nfulfillmentCashflows.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"EstimateType\"", - "\nfulfillmentCashflows.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nfulfillmentCashflows.ReportingPeriod = (2021, 3);", + "\nfulfillmentCashflows.ColumnSlices = new string[]{};//\"EstimateType\"", + "\nfulfillmentCashflows.DataFilter = null;// new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await fulfillmentCashflows.ToReportAsync)" ], "metadata": {}, @@ -262,8 +262,8 @@ "var experienceAdjustments = ifrs17.ExperienceAdjustments;", "\nexperienceAdjustments.ReportingNode = \"CH\";", "\nexperienceAdjustments.ReportingPeriod = (2021, 3);", - "\nexperienceAdjustments.ColumnSlices = new string[]{\"GroupOfContract\",\"AmountType\"};//\"GroupOfContract\", \"AmountType\"", - "\nexperienceAdjustments.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nexperienceAdjustments.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", + "\nexperienceAdjustments.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await experienceAdjustments.ToReportAsync)" ], "metadata": {}, @@ -287,9 +287,9 @@ "source": [ "var technicalMargins = ifrs17.TechnicalMargins;", "\ntechnicalMargins.ReportingNode = \"CH\";", - "\ntechnicalMargins.ReportingPeriod = (2020, 12);", - "\ntechnicalMargins.ColumnSlices = new string[]{\"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", - "\ntechnicalMargins.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\ntechnicalMargins.ReportingPeriod = (2021, 3);", + "\ntechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", + "\ntechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await technicalMargins.ToReportAsync)" ], "metadata": {}, @@ -315,7 +315,7 @@ "var allocatedTechnicalMargins = ifrs17.AllocatedTechnicalMargins;", "\nallocatedTechnicalMargins.ReportingNode = \"CH\";", "\nallocatedTechnicalMargins.ReportingPeriod = (2021, 3);", - "\nallocatedTechnicalMargins.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"GroupOfContract\", \"EstimateType\"", + "\nallocatedTechnicalMargins.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EstimateType\"", "\nallocatedTechnicalMargins.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await allocatedTechnicalMargins.ToReportAsync)" ], @@ -339,9 +339,9 @@ "source": [ "var actuarialLrc = ifrs17.ActuarialLrc;", "\nactuarialLrc.ReportingNode = \"CH\";", - "\nactuarialLrc.ReportingPeriod = (2020, 12);", + "\nactuarialLrc.ReportingPeriod = (2021, 3);", "\nactuarialLrc.ColumnSlices = new string[]{};//\"GroupOfContract\"", - "\nactuarialLrc.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nactuarialLrc.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await actuarialLrc.ToReportAsync)" ], "metadata": {}, @@ -364,9 +364,9 @@ "source": [ "var lrc = ifrs17.Lrc;", "\nlrc.ReportingNode = \"CH\";", - "\nlrc.ReportingPeriod = (2020, 12);", + "\nlrc.ReportingPeriod = (2021, 3);", "\nlrc.ColumnSlices = new string[]{};//\"GroupOfContract\",", - "\nlrc.DataFilter = new [] {(\"GroupOfContract\", \"DT1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\nlrc.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lrc.ToReportAsync)" ], "metadata": {}, @@ -414,7 +414,7 @@ "source": [ "var lic = ifrs17.Lic;", "\nlic.ReportingNode = \"CH\";", - "\nlic.ReportingPeriod = (2020, 12);", + "\nlic.ReportingPeriod = (2021, 3);", "\nlic.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nlic.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lic.ToReportAsync)" @@ -441,435 +441,10 @@ "source": [ "var financialPerformance = ifrs17.FinancialPerformance;", "\nfinancialPerformance.ReportingNode = \"CH\";", - "\nfinancialPerformance.ReportingPeriod = (2020,12);", - "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};//\"GroupOfContract\"", - "\nfinancialPerformance.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", - "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 2}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await Report.ForDataCube((ir+ise+ifieOci)", - "\n//.Filter(x => x.GroupOfContract == \"DT1.1\" || x.GroupOfContract == \"DT2.1\")", - "\n)", - "\n .WithQuerySource(Workspace)", - "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", - "\n .SliceColumnsBy(new [] {\"Currency\", \"GroupOfContract\"}.Concat(financialPerformance.ColumnSlices).ToArray())", - "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 2)", - "\n .ExecuteAsync()" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", - "\n", - "\n // PAA Premiums", - "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", - "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", - "\n ", - "\n private IDataCube PaaPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", - "\n _ => Enumerable.Empty().ToArray().ToDataCube()", - "\n };", - "\n", - "\n // Experience Adjustment On Premiums", - "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", - "\n };", - "\n", - "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", - "\n };", - "\n", - "\n private IDataCube WrittenPremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", - "\n", - "\n private IDataCube ExperienceAdjustmentOnPremiums => (", - "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", - "\n (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", - "\n )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", - "\n", - "\n // Expected Best Estimate cash flow out Release", - "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", - "\n ", - "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", - "\n", - "\n private IDataCube ExpectedExpenses => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n private IDataCube ExpectedCommissions => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // RA Release", - "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", - "\n", - "\n // CSM Release (Amortization)", - "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n // Loss Component Release (Amortization)", - "\n private IDataCube LossComponentAmortization => GetScope(Identity).Lc", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // Acquistion Expenses Release (Amortization)", - "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // FCF Locked-In Interest Rate Correction", - "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", - "\n ", - "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", - "\n", - "\n IDataCube NonFinancialFcfDeltasCorrection => -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR14\"});", - "\n", - "\n // InsuranceRevenue ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization + NonFinancialFcfDeltasCorrection;", - "\n", - "\n}", - "\n", - "\npublic interface InsuranceRevenueNotApplicable : InsuranceRevenue {", - "\n IDataCube InsuranceRevenue.InsuranceRevenue => Enumerable.Empty().ToArray().ToDataCube(); ", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", - "\n", - "\n // Actuals cash flow out Release", - "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", - "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n protected IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", - "\n ", - "\n private IDataCube ActualClaims => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE2\" });", - "\n private IDataCube ActualClaimsInvestmentComponent => -1 * EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE5\" });", - "\n", - "\n private IDataCube ActualExpenses => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", - "\n", - "\n private IDataCube ActualCommissions => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", - "\n", - "\n private IDataCube ActualClaimExpenses => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CE))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE41\" });", - "\n", - "\n // Acquistion Expenses Release (Amortization)", - "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE6\" });", - "\n", - "\n // Loss Component", - "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube LcAmortization => -1 * Lc.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"ISE9\" });", - "\n ", - "\n private IDataCube LcNonFinancialChanges => -1 * Lc", - "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", - "\n ", - "\n // Change in LIC", - "\n private IDataCube FcfDeltas => (GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N)))", - "\n .Filter((\"LiabilityType\", \"LIC\")); // TODO, extract the LIC to a dedicated scope (whole thing, actually)", - "\n ", - "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", - "\n", - "\n private IDataCube FpNonFinancialLic => -1 * NonFinancialFcfDeltas", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE12\" });", - "\n", - "\n // Reinsurance", - "\n IDataCube Reinsurance => Enumerable.Empty().ToArray().ToDataCube(); ", - "\n", - "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + ActualClaimExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", - "\n}", - "\n", - "\npublic interface InsuranceServiceExpenseReinsurance : InsuranceServiceExpense {", - "\n // Expected Best Estimate cash flow out Release", - "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", - "\n ", - "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", - "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE23\" });", - "\n", - "\n private IDataCube ExpectedExpenses => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", - "\n", - "\n private IDataCube ExpectedCommissions => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", - "\n", - "\n // RA Release", - "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE22\" });", - "\n", - "\n // CSM Release (Amortization)", - "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", - "\n ", - "\n // Loss Recovery Component (Amortization)", - "\n private IDataCube LoReCoAmortization => GetScope(Identity).Loreco", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", - "\n ", - "\n private IDataCube LoReCoNonFinancialChanges => -1 * GetScope(Identity).Loreco", - "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", - "\n", - "\n // Experience Adjustment On Premiums", - "\n private IDataCube ReinsuranceActualPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", - "\n };", - "\n", - "\n private IDataCube ReinsuranceBestEstimatePremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", - "\n };", - "\n", - "\n private IDataCube ExperienceAdjustmentOnPremiums => (", - "\n (ReinsuranceActualPremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", - "\n (ReinsuranceBestEstimatePremiums).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", - "\n )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE21\" });", - "\n", - "\n // FCF Locked-In Interest Rate Correction", - "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube LockedFcfDeltas => GetScope(Identity).LockedFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).LockedFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private IDataCube NonFinancialFcfDeltas => FcfDeltas", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", - "\n ", - "\n private IDataCube NonFinancialLockedFcfDeltas => LockedFcfDeltas", - "\n .Filter((\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"));", - "\n", - "\n IDataCube NonFinancialFcfDeltasCorrection => (Identity.Id.LiabilityType == LiabilityTypes.LIC)", - "\n ? Enumerable.Empty().ToArray().ToDataCube()", - "\n : -1 * (NonFinancialFcfDeltas - NonFinancialLockedFcfDeltas)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE24\"});", - "\n", - "\n // Reinsurance", - "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums + NonFinancialFcfDeltasCorrection;", - "\n}", - "\n" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface InsuranceFinanceIncomeExpenseOci: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n //FCF", - "\n private IDataCube FcfDeltas => GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube CurrentFcfDeltas => GetScope(Identity).CurrentFcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).CurrentFcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n // Financial Fp", - "\n private string variableTypeFpFinancial => Identity.Id switch {", - "\n { LiabilityType: LiabilityTypes.LRC } => \"IFIE1\",", - "\n { LiabilityType: LiabilityTypes.LIC } => \"IFIE2\",", - "\n };", - "\n ", - "\n // OCI ", - "\n private string variableTypeOciFinancial => Identity.Id switch {", - "\n { LiabilityType: LiabilityTypes.LRC } => \"OCI1\",", - "\n { LiabilityType: LiabilityTypes.LIC } => \"OCI2\",", - "\n };", - "\n ", - "\n private IDataCube FinancialFcfDeltas => FcfDeltas.Filter((\"VariableType\", AocTypes.IA)) + ", - "\n FcfDeltas.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n FcfDeltas.Filter((\"VariableType\", AocTypes.CRU));", - "\n ", - "\n private IDataCube FpFcfFx => -1 * FcfDeltas", - "\n .Filter((\"VariableType\", AocTypes.FX))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IFIE3\"});", - "\n ", - "\n private IDataCube FpFcfFinancial => -1 * FinancialFcfDeltas", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeFpFinancial});", - "\n", - "\n private IDataCube OciFcfFx => (FcfDeltas - CurrentFcfDeltas)", - "\n .Filter((\"VariableType\", AocTypes.FX))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"OCI3\"});", - "\n", - "\n private IDataCube OciFcfFinancial => (FcfDeltas - CurrentFcfDeltas)", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = variableTypeOciFinancial});", - "\n", - "\n // CSM", - "\n private IDataCube Csm => GetScope(Identity).Csm.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Csm.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private IDataCube CsmFx => -1 * Csm.Filter((\"VariableType\", AocTypes.FX))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE3\" });", - "\n", - "\n private IDataCube CsmFinancialChanges => -1 * (Csm.Filter((\"VariableType\", AocTypes.IA)) +", - "\n Csm.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n Csm.Filter((\"VariableType\", AocTypes.CRU)) )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", - "\n", - "\n // LC", - "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n", - "\n private IDataCube LcFx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", - "\n", - "\n private IDataCube LcFinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", - "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", - "\n", - "\n // LoReCo", - "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube LorecoFx => -1 * Loreco.Filter((\"VariableType\", AocTypes.FX))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", - "\n", - "\n private IDataCube LorecoFinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", - "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", - "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", - "\n", - "\n //Insurance Finance Income/Expense Oci", - "\n IDataCube InsuranceFinanceIncomeExpenseOci => FpFcfFx + FpFcfFinancial + OciFcfFx + OciFcfFinancial + CsmFx + CsmFinancialChanges + LcFx + LcFinancialChanges + LorecoFx + LorecoFinancialChanges;", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var reportStorage = new ReportStorage(Workspace, Report, Export);", - "\nawait reportStorage.InitializeReportIndependentCacheAsync();", - "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", - "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", - "\n", - "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = ((2020,12), \"CH\", null,CurrencyType.Contractual);", - "\n", - "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", - "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", - "\n", - "\nvar universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();", - "\n", - "\nvar ir = universe.GetScopes(identities).Aggregate().InsuranceRevenue;", - "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;", - "\nvar ifieOci = universe.GetScopes(identities).Aggregate().InsuranceFinanceIncomeExpenseOci;" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "" + "\nfinancialPerformance.ReportingPeriod = (2021, 3);", + "\nfinancialPerformance.ColumnSlices = new string[]{};//\"GroupOfContract\"", + "\nfinancialPerformance.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" ], "metadata": {}, "execution_count": 0, From 8614b36be0791e9cfe853b192228e5c3538ae765 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 23:06:15 +0200 Subject: [PATCH 30/38] Fix premium --- ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv index da9a388e..1a4ffbd1 100644 --- a/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv +++ b/ifrs17-template/Files/TransactionalData/Actuals_FR_2020_12.csv @@ -19,4 +19,4 @@ EY58G.2,CF,PR,A,,210 EY58G.2,CF,NIC,A,,-300 EY58R.1,CF,PR,A,,-315 EY58R.1,CF,NIC,A,,270 -EY63G.1,CF,PR,A,,-55 +EY63R.1,CF,PR,A,,-55 From ffef26c51bef2e400ab4ab43e462262f49505e1f Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 23:17:44 +0200 Subject: [PATCH 31/38] WIP --- ifrs17-template/Report/ReportEyCases.ipynb | 296 ++++----------------- ifrs17-template/Report/Reports.ipynb | 27 +- ifrs17/Report/ReportScopes.ipynb | 7 +- 3 files changed, 89 insertions(+), 241 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 2ed1590b..587fe54f 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -167,247 +167,13 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "# New P&L" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface InsuranceRevenue: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance || x.Identity.Id.LiabilityType == LiabilityTypes.LIC));", - "\n", - "\n // PAA Premiums", - "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", - "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", - "\n ", - "\n private IDataCube PaaPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR11\" }),", - "\n _ => Enumerable.Empty().ToArray().ToDataCube()", - "\n };", - "\n", - "\n // Experience Adjustment On Premiums", - "\n private IDataCube NotPaaActualPremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C }) ", - "\n };", - "\n", - "\n private IDataCube NotPaaBestEstimatePremiums => Identity.Id switch {", - "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", - "\n _ => GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.PR))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C })", - "\n };", - "\n", - "\n private IDataCube WrittenPremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.APA)).FxData;", - "\n private IDataCube BestEstimatePremiumsToCsm => GetScope((Identity.Id, Identity.CurrencyType, EstimateTypes.BEPA)).FxData;", - "\n", - "\n private IDataCube ExperienceAdjustmentOnPremiums => (", - "\n (NotPaaActualPremiums - WrittenPremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.A }) -", - "\n (NotPaaBestEstimatePremiums - BestEstimatePremiumsToCsm).AggregateOver(nameof(EstimateType)).SelectToDataCube(rv => rv with { EstimateType = EstimateTypes.BE })", - "\n )", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IR12\" }); ", - "\n", - "\n // Expected Best Estimate cash flow out Release", - "\n private IDataCube CfOut => -1 * GetScope(Identity).BestEstimate", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C });", - "\n ", - "\n private IDataCube ExpectedClaims => CfOut // --> Exclude NA Expenses", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n private IDataCube ExpectedClaimsInvestmentComponent => -1 * CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR2\" });", - "\n //private IDataCube ExpectedClaimsInvestmentComponentIse => -1 * ExpectedClaimsInvestmentComponentToIr;", - "\n", - "\n private IDataCube ExpectedExpenses => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n private IDataCube ExpectedCommissions => CfOut", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // RA Release", - "\n private IDataCube RaRelease => -1 * GetScope(Identity).RiskAdjustment", - "\n .Filter((\"VariableType\", \"CF\"), (\"LiabilityType\", \"LRC\"))", - "\n .AggregateOver(nameof(Novelty))", - "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"IR13\" });", - "\n", - "\n // CSM Release (Amortization)", - "\n private IDataCube CsmAmortization => -1 * GetScope(Identity).Csm", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n // Loss Component Release (Amortization)", - "\n private IDataCube LossComponentAmortization => GetScope(Identity).Lc", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n", - "\n // Acquistion Expenses Release (Amortization)", - "\n private IDataCube AcquistionExpensesAmortization => GetScope(Identity)", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"IR13\" });", - "\n ", - "\n // InsuranceRevenue ", - "\n IDataCube InsuranceRevenue => PaaPremiums + ExperienceAdjustmentOnPremiums + RaRelease + CsmAmortization + LossComponentAmortization + ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + AcquistionExpensesAmortization;", - "\n", - "\n}", - "\n", - "\npublic interface InsuranceRevenueNotApplicable : InsuranceRevenue {", - "\n IDataCube InsuranceRevenue.InsuranceRevenue => Enumerable.Empty().ToArray().ToDataCube(); ", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public interface InsuranceServiceExpense: IScope<(ReportIdentity Id, CurrencyType CurrencyType), ReportStorage>, IDataCube {", - "\n static ApplicabilityBuilder ScopeApplicabilityBuilder(ApplicabilityBuilder builder) =>", - "\n builder.ForScope(s => s.WithApplicability(x => x.Identity.Id.IsReinsurance));", - "\n", - "\n // Actuals cash flow out Release", - "\n private IDataCube WrittenCashflow => GetScope(Identity).Written.Filter((\"VariableType\", \"CF\"));", - "\n private IDataCube AdvanceWriteOff => GetScope(Identity).Advance.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube OverdueWriteOff => GetScope(Identity).Overdue.Filter((\"VariableType\", \"WO\"));", - "\n private IDataCube EffectiveActuals => WrittenCashflow -1 * (AdvanceWriteOff + OverdueWriteOff); ", - "\n ", - "\n private IDataCube ActualClaims => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.CL))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE2\" });", - "\n private IDataCube ActualClaimsInvestmentComponent => -1 * EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.ICO))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE5\" });", - "\n", - "\n private IDataCube ActualExpenses => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AE))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE3\" });", - "\n", - "\n private IDataCube ActualCommissions => EffectiveActuals", - "\n .Where(x => GetStorage().GetHierarchy().Ancestors(x.AmountType, includeSelf: true).Any(x => x.SystemName == AmountTypes.AC))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE4\" });", - "\n", - "\n // Acquistion Expenses Release (Amortization)", - "\n private IDataCube AcquistionExpensesAmortization => -1 * GetScope(Identity)", - "\n .Filter((\"VariableType\", AocTypes.AM))", - "\n .SelectToDataCube(v => v with { VariableType = \"ISE6\" });", - "\n", - "\n // Loss Component", - "\n private IDataCube Lc => GetScope(Identity).Lc.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n GetScope(Identity).Lc.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", - "\n ", - "\n private IDataCube LcAmortization => -1 * Lc.Filter((\"VariableType\", AocTypes.AM)).SelectToDataCube(v => v with { VariableType = \"ISE9\" });", - "\n ", - "\n private IDataCube LcNonFinancialChanges => -1 * Lc", - "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", - "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", - "\n ", - "\n // private IDataCube Fx => -1 * Lc.Filter((\"VariableType\", AocTypes.FX))", - "\n // .AggregateOver(nameof(Novelty))", - "\n // .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", - "\n", - "\n // private IDataCube FinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) + Lc.Filter((\"VariableType\", AocTypes.YCU)) + Lc.Filter((\"VariableType\", AocTypes.CRU)) )", - "\n // .AggregateOver(nameof(Novelty), nameof(VariableType))", - "\n // .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", - "\n", - "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges;", - "\n ", - "\n}", - "\n", - "\npublic interface InsuranceServiceExpenseNotApplicable : InsuranceServiceExpense {", - "\n IDataCube InsuranceServiceExpense.InsuranceServiceExpense => Enumerable.Empty().ToArray().ToDataCube(); ", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var reportStorage = new ReportStorage(Workspace, Report, Export);", - "\nawait reportStorage.InitializeReportIndependentCacheAsync();", - "\nvar mostRecentPartition = (await Workspace.Query().Where(x => x.Scenario == null).OrderBy(x => x.Year).ThenBy(x => x.Month).ToArrayAsync()).Last();", - "\nvar reportingNodeRoot = (await Workspace.Query().Where(x => x.Parent == null).ToArrayAsync()).First().SystemName;", - "\n", - "\n((int Year, int Month) Period, string ReportingNode, string Scenario, CurrencyType CurrencyType) Args = (reportingPeriod, reportingNode, null,CurrencyType.Contractual);", - "\n", - "\nawait reportStorage.InitializeAsync(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);", - "\nvar identities = reportStorage.GetIdentities(Args.Period, Args.ReportingNode, Args.Scenario, Args.CurrencyType);" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ - "var universe = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "var ir = universe.GetScopes(identities).Aggregate().InsuranceRevenue;", - "\nvar ise = universe.GetScopes(identities).Aggregate().InsuranceServiceExpense;" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "//fp//.Where(x => !x.IsReinsurance).ToDataCube().Where(x => x.EstimateType == null)" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "financialPerformance.DataFilter = new [] {(\"Portfolio\", \"!EY57R\"), (\"Portfolio\", \"!EY58R\"), (\"Portfolio\", \"!EY59R\"), (\"Portfolio\", \"!EY63R\")};", - "\n(await financialPerformance.ToReportAsync) with {GroupDefaultExpanded = 3}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "await Report.ForDataCube(ir+ise)", - "\n .WithQuerySource(Workspace)", - "\n .SliceRowsBy(new [] {\"VariableType\", \"EstimateType\"})", - "\n .SliceColumnsBy(new [] {\"Currency\"}.Concat(financialPerformance.ColumnSlices).ToArray())", - "\n .ReportGridOptions(headerColumnWidth: 500, groupDefaultExpanded: 7)", - "\n .ExecuteAsync()" + "var financialPerformanceAlternative = ifrs17.FinancialPerformanceAlternative;", + "\nfinancialPerformanceAlternative.ReportingNode = reportingNode;", + "\nfinancialPerformanceAlternative.ReportingPeriod = reportingPeriod;", + "\nfinancialPerformanceAlternative.ColumnSlices = new string[]{\"GroupOfContract\"};" ], "metadata": {}, "execution_count": 0, @@ -548,6 +314,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "financialPerformanceAlternative.DataFilter = dataFilter; (await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -708,6 +483,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "financialPerformanceAlternative.DataFilter = dataFilter; (await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -859,6 +643,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "financialPerformanceAlternative.DataFilter = dataFilter; (await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -979,6 +772,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "code", + "source": [ + "financialPerformanceAlternative.DataFilter = dataFilter; (await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -1095,6 +897,24 @@ "metadata": {}, "execution_count": 0, "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "financialPerformanceAlternative.DataFilter = dataFilter; (await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] } ] } \ No newline at end of file diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index f9c55208..ec6492d7 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -99,7 +99,7 @@ "\npv.ReportingNode = \"CH\";", "\npv.ReportingPeriod = (2021, 3);", "\npv.CurrencyType = CurrencyType.Contractual;", - "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", + "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\", \"Scenario\", \"ServicePeriod\"", "\npv.Scenario = null; //\"All\";", "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync)" @@ -450,6 +450,31 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Financial Performance Alternative", + "\n", + "\nThis is an alternative Financial Performance that can be used for reconciliation purposes." + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var financialPerformanceAlternative = ifrs17.FinancialPerformanceAlternative;", + "\nfinancialPerformanceAlternative.ReportingNode = \"CH\";", + "\nfinancialPerformanceAlternative.ReportingPeriod = (2021,3);", + "\nfinancialPerformanceAlternative.ColumnSlices = new string[]{};//\"GroupOfContract\"", + "\nfinancialPerformanceAlternative.DataFilter = null;//new [] {(\"GroupOfContract\", \"DTR1.1\")}; //new [] {(\"GroupOfContract\", \"DT1.1\")};", + "\n(await financialPerformanceAlternative.ToReportAsync) with {GroupDefaultExpanded = 3}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index fd045367..4a3b9d25 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1407,11 +1407,14 @@ "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", "\n ", "\n // Loss Recovery Component (Amortization)", - "\n private IDataCube LoReCoAmortization => GetScope(Identity).Loreco", + "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", + "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", + "\n", + "\n private IDataCube LoReCoAmortization => Loreco", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", "\n ", - "\n private IDataCube LoReCoNonFinancialChanges => -1 * GetScope(Identity).Loreco", + "\n private IDataCube LoReCoNonFinancialChanges => -1 * Loreco", "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", From ab3fe31fa82eef3ad7403658dd5c639e234d4f23 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Wed, 24 May 2023 23:24:19 +0200 Subject: [PATCH 32/38] Sign --- ifrs17/Report/ReportScopes.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 4a3b9d25..14047b9c 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1410,7 +1410,7 @@ "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", "\n", - "\n private IDataCube LoReCoAmortization => Loreco", + "\n private IDataCube LoReCoAmortization => -1 * Loreco", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", "\n ", From 9dc2005a7b8340d78cc9b7796e5826ecb99e3814 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 25 May 2023 14:42:50 +0200 Subject: [PATCH 33/38] Name --- ifrs17-template/Files/Dimensions.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Files/Dimensions.csv b/ifrs17-template/Files/Dimensions.csv index 07d38a6a..3a16f711 100644 --- a/ifrs17-template/Files/Dimensions.csv +++ b/ifrs17-template/Files/Dimensions.csv @@ -182,7 +182,7 @@ IR1,Premiums,IR,401,,,,,,,, IR2,Exc. Investment Components,IR,402,,,,,,,, IR3,CSM Amortization,IR,403,,,,,,,, IR4,Acquistion Expenses Amortization,IR,404,,,,,,,, -IR5,Non-Financial LRC Changes (Exc. CSM Amortization),IR,405,,,,,,,, +IR5,Non-Financial LRC/LC Changes (Exc. CSM Amortization),IR,405,,,,,,,, IR6,Exc. Experience Adjustments,IR,406,,,,,,,, IR7,On Premiums,IR6,407,,,,,,,, IR77,Total,IR7,408,,,,,,,, @@ -211,7 +211,7 @@ ISE21,Experience Adjustment on Premiums,ISE20,521,,,,,,,, ISE22,Expected Releases / Amortizations,ISE20,522,,,,,,,, ISE23,Exc. Investment Components,ISE20,523,,,,,,,, ISE24,FCF Locked-In Interest Rate Correction,ISE20,524,,,,,,,, -IFIE1,Financial LRC Changes,IFIE,601,,,,,,,, +IFIE1,Financial LRC/LC Changes,IFIE,601,,,,,,,, IFIE2,Financial LIC Changes,IFIE,602,,,,,,,, IFIE3,FX Changes,IFIE,603,,,,,,,, OCI1,Financial LRC Changes,OCI,201,,,,,,,, From 02a6c20d9e6d617a0514080cb3513416c9579492 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 25 May 2023 14:45:59 +0200 Subject: [PATCH 34/38] Fix --- .../CsmSwitchReports.ipynb | 24 +++++++++---- ifrs17/Report/ReportScopes.ipynb | 34 ++++++++++++++----- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb index 976270bc..b0b14065 100644 --- a/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb +++ b/ifrs17-template/PracticalUseCases/SingleVsMultipleCsmSwitch/CsmSwitchReports.ipynb @@ -293,13 +293,9 @@ "\n
One observes differences in the *Insurance Sevice Result* (ISE) and *Insurance Finance income/Expense* (IFIE) sections. These differences cancel out to produce the same value for *Profit and Loss*. The *Other Comprehensive Income* section reports the same figure in both scenarios. ", "\n", "\nDrilling down into the data granularity one can realize the source of the above mentioned differences. ", - "\n
Let's start from the IFIE contribution (Financial contributions): ", - "\n- MZ 1.1 explicitly recognizes a contribution to Loss Component: this is the interest accretion on the Liability side of the Techinical Margin. Contrarily, MZ 1.2 does not recognizes any Loss Component. ", - "\n- MZ 1.1 reports a bigger figure for CSM than MZ 1.2: this is because in MZ 1.2 the interest on the Asset and on the Liability are both allocated to CSM and reported here as summed up (they carry opposite sign - check the CSM/LC report above).", "\n", - "\nContinuing with the ISE contribution, one sees that both *Insurance Revenue* and *Insurance service Expense* carries a difference between the two scenarios. ", - "\n- The difference in *Insurance service Expense* is due to having explicitly allocated the New Business of the Techinical Margin to Loss Component. In this item the financial step (such as Interest Accretion (IA)) is excluded. Thus, because overall the Loss amounts to 0, the net effect of summing all the movements except IA result in $-$IA. This term cancels out the LC contribution reported in the Financial section. ", - "\n- The difference in *Insurance Revenue* is produced by the CSM contribution to the *Non Financial LRC changes*. The MZ 1.1 GIC includes here the Combined Liability AoC Step which takes into account the contribution of the IA computed on the New Business (Liability-like).", + "\n- MZ 1.1 explicitly recognizes a contribution to Loss Component. ", + "\n- MZ 1.1 reports a bigger figure for CSM changes (financial and non-financial) than MZ 1.2.", "\n", "\nIt is worth to mention that our choice of splitting between financial and non-financial contributions for all figures reported in the Financial Performance creates additional items (rows) that cancel out when aggregated. While for some it might be confusing and counter intuitive, for others this adds transparency. ", "\nWe acknowledge that without this split for the Loss Component part, the Financial Performance would not report such items, producing the same final figures without explicit showing any Loss Component contribution.", @@ -318,7 +314,21 @@ "\nfinancialPerformance.ReportingPeriod = (reportingYear, reportingMonth);", "\nfinancialPerformance.ColumnSlices = new string[]{\"GroupOfContract\"};", "\nfinancialPerformance.DataFilter = null;", - "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}" + "\n(await financialPerformance.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 4}" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "var financialPerformancealternative = ifrs17.FinancialPerformanceAlternative;", + "\nfinancialPerformancealternative.ReportingNode = \"CH\";", + "\nfinancialPerformancealternative.ReportingPeriod = (reportingYear, reportingMonth);", + "\nfinancialPerformancealternative.ColumnSlices = new string[]{\"GroupOfContract\"};", + "\nfinancialPerformancealternative.DataFilter = null;", + "\n(await financialPerformancealternative.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 4}" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 14047b9c..3198089a 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -864,11 +864,13 @@ "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", "\n", - "\n IDataCube FinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", + "\n IDataCube FinancialChanges => 1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n IDataCube FinancialChangesToIse => -1 * FinancialChanges.SelectToDataCube(v => v with { VariableType = \"ISE11\" });", "\n}" ], "metadata": {}, @@ -915,11 +917,13 @@ "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", "\n", - "\n IDataCube FinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", + "\n IDataCube FinancialChanges => 1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"IFIE1\" });", + "\n", + "\n IDataCube FinancialChangesToIse => -1 * FinancialChanges.SelectToDataCube(v => v with { VariableType = \"ISE11\" });", "\n}" ], "metadata": {}, @@ -1353,7 +1357,13 @@ "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", - "\n ", + "\n", + "\n private IDataCube LcFinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n", "\n // Change in LIC", "\n private IDataCube FcfDeltas => (GetScope(Identity).Fcf.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", "\n GetScope(Identity).Fcf.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N)))", @@ -1370,7 +1380,7 @@ "\n protected IDataCube Reinsurance => Enumerable.Empty().ToArray().ToDataCube(); ", "\n", "\n // Insurance Service Expense ", - "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + ActualClaimExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + FpNonFinancialLic + Reinsurance;", + "\n IDataCube InsuranceServiceExpense => ActualClaims + ActualClaimsInvestmentComponent + ActualExpenses + ActualCommissions + ActualClaimExpenses + AcquistionExpensesAmortization + LcAmortization + LcNonFinancialChanges + LcFinancialChanges + FpNonFinancialLic + Reinsurance;", "\n}", "\n", "\npublic interface InsuranceServiceExpenseReinsurance : InsuranceServiceExpense {", @@ -1410,15 +1420,21 @@ "\n private IDataCube Loreco => GetScope(Identity).Loreco.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", "\n GetScope(Identity).Loreco.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));", "\n", - "\n private IDataCube LoReCoAmortization => -1 * Loreco", + "\n private IDataCube LorecoAmortization => -1 * Loreco", "\n .Filter((\"VariableType\", AocTypes.AM))", "\n .SelectToDataCube(v => v with { VariableType = \"ISE22\" });", "\n ", - "\n private IDataCube LoReCoNonFinancialChanges => -1 * Loreco", + "\n private IDataCube LorecoNonFinancialChanges => -1 * Loreco", "\n .Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\"))", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", "\n", + "\n private IDataCube LorecoFinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", + "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", + "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", + "\n .SelectToDataCube(v => v with { Novelty = Novelties.C, VariableType = \"ISE11\" });", + "\n", "\n // Experience Adjustment On Premiums", "\n private IDataCube ReinsuranceActualPremiums => Identity.Id switch {", "\n { ValuationApproach: ValuationApproaches.PAA } => Enumerable.Empty().ToArray().ToDataCube(),", @@ -1463,7 +1479,7 @@ "\n .SelectToDataCube(rv => rv with { Novelty = Novelties.C, VariableType = \"ISE24\"});", "\n", "\n // Reinsurance", - "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LoReCoAmortization + LoReCoNonFinancialChanges + ExperienceAdjustmentOnPremiums + NonFinancialFcfDeltasCorrection;", + "\n IDataCube InsuranceServiceExpense.Reinsurance => ExpectedClaims + ExpectedClaimsInvestmentComponent + ExpectedExpenses + ExpectedCommissions + RaRelease + CsmAmortization + LorecoAmortization + LorecoNonFinancialChanges + LorecoFinancialChanges + ExperienceAdjustmentOnPremiums + NonFinancialFcfDeltasCorrection;", "\n}", "\n" ], @@ -1538,7 +1554,7 @@ "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", "\n", - "\n private IDataCube LcFinancialChanges => -1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", + "\n private IDataCube LcFinancialChanges => 1 * (Lc.Filter((\"VariableType\", AocTypes.IA)) +", "\n Lc.Filter((\"VariableType\", AocTypes.YCU)) +", "\n Lc.Filter((\"VariableType\", AocTypes.CRU)) )", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", @@ -1552,7 +1568,7 @@ "\n .AggregateOver(nameof(Novelty))", "\n .SelectToDataCube(v => v with { VariableType = \"IFIE3\" });", "\n", - "\n private IDataCube LorecoFinancialChanges => -1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", + "\n private IDataCube LorecoFinancialChanges => 1 * (Loreco.Filter((\"VariableType\", AocTypes.IA)) +", "\n Loreco.Filter((\"VariableType\", AocTypes.YCU)) +", "\n Loreco.Filter((\"VariableType\", AocTypes.CRU)) )", "\n .AggregateOver(nameof(Novelty), nameof(VariableType))", From 5df70d7232fbfe27a0f9b21042f0ae083c8f03cf Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 25 May 2023 14:59:38 +0200 Subject: [PATCH 35/38] Fixed 1 test --- ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb b/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb index 1dd309db..9343b377 100644 --- a/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb +++ b/ifrs17-template/Test/PracticalCase-CSMSwitchTest.ipynb @@ -235,8 +235,8 @@ { "cell_type": "code", "source": [ - "mz11.Single(x => x.VariableType == \"ISE11\").Value.Should().BeApproximately(lcIa,Precision);", - "\nmz12.SingleOrDefault(x => x.VariableType == \"ISE11\")?.Value.Should().BeApproximately(0,Precision);" + "mz11.Where(x => x.VariableType == \"ISE11\").Aggregate().Value.Should().BeApproximately(0,Precision);", + "\nmz12.Where(x => x.VariableType == \"ISE11\").Aggregate()?.Value.Should().BeApproximately(0,Precision);" ], "metadata": {}, "execution_count": 0, @@ -258,7 +258,7 @@ { "cell_type": "code", "source": [ - "mz11.Single(x => x.VariableType == \"IFIE1\" && x.EstimateType == \"L\").Value.Should().BeApproximately(-lcIa,Precision);", + "mz11.Single(x => x.VariableType == \"IFIE1\" && x.EstimateType == \"L\").Value.Should().BeApproximately(lcIa,Precision);", "\nmz12.SingleOrDefault(x => x.VariableType == \"IFIE1\" && x.EstimateType == \"L\")?.Value.Should().BeApproximately(0,Precision);" ], "metadata": {}, From 2d2776f7923efbdca76234e8ed086de9d1b19837 Mon Sep 17 00:00:00 2001 From: Daniel Trzesniak Date: Thu, 25 May 2023 23:45:03 +0200 Subject: [PATCH 36/38] add comments --- ifrs17-template/Report/ReportEyCases.ipynb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ifrs17-template/Report/ReportEyCases.ipynb b/ifrs17-template/Report/ReportEyCases.ipynb index 587fe54f..b6e753ab 100644 --- a/ifrs17-template/Report/ReportEyCases.ipynb +++ b/ifrs17-template/Report/ReportEyCases.ipynb @@ -592,7 +592,7 @@ { "cell_type": "markdown", "source": [ - "**TODO** Fix Loreco" + "**TODO** Example is wrong, as the Loreco is not properly calculated --> Fix Loreco" ], "metadata": {}, "execution_count": 0, @@ -683,7 +683,7 @@ { "cell_type": "markdown", "source": [ - "**TODO** Check this example" + "**TODO** Example is wrong, as the Loreco is not properly calculated --> Fix Loreco" ], "metadata": {}, "execution_count": 0, @@ -797,6 +797,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "**TODO** Example seems wrong, as I think CSM should be be calculated in this case (unlinked), as the underlying is LIC. The " + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "code", "source": [ From 5e04e0aa2b39315a40b8a7618135010a0ee809e3 Mon Sep 17 00:00:00 2001 From: Slavomir Batka Date: Fri, 26 May 2023 17:07:17 +0200 Subject: [PATCH 37/38] update benchmarks --- ...marks_2020_12_CH_MTUP10pct_Contractual.csv | 81 ++++++++--- ...ableBenchmarks_2020_12_CH__Contractual.csv | 81 ++++++++--- ...iableBenchmarks_2021_3_CH__Contractual.csv | 128 +++++++++++++----- 3 files changed, 224 insertions(+), 66 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 72718de6..5e94fe1e 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 @@ -124,14 +124,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,C,,PT1,DTR2,P11,CH,MTUP10pct,CurrentService,BBA,-14.98378,EOP 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,P11,CH,MTUP10pct,CurrentService,BBA,-0.04613,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-310,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-310,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,658.62824,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-330,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,329.6431,EOP @@ -155,8 +160,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-42.67021,AM 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,80.0332,BOP 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -183,14 +189,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-310,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-310,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,0,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -214,8 +225,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,0,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR6 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -242,18 +254,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,EOP 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,15,CF 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,15,EOP -0,PR,2020,USD,USD,,APA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -277,8 +294,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -309,14 +327,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -340,8 +363,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -370,14 +394,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-310,CF 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-310,ISE2 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -391,6 +420,8 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR79 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,0,OCI1 0,NIC,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF @@ -400,7 +431,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,EOP 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA -0,PR,2020,USD,USD,L,BEPA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 +0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR79 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -426,16 +457,21 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,EOP 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,MTUP10pct,NotApplicable,BBA,0.09226,IA 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-1.5,BOP 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-1.5,EOP -0,PR,2020,USD,USD,,APA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -459,8 +495,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-129.49727,AM 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,72.2,BOP 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP @@ -491,14 +528,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -522,8 +564,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA @@ -550,14 +593,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,MTUP10pct,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,299.67555,EOP @@ -581,8 +629,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,MTUP10pct,NotApplicable,BBA,-15,EA diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv index 22a45b48..016da595 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2020_12_CH__Contractual.csv @@ -124,14 +124,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,C,,PT1,DTR2,P11,CH,,CurrentService,BBA,-14.98378,EOP 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,P11,CH,,CurrentService,BBA,-0.04613,IA 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -155,8 +160,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-15,EA @@ -183,14 +189,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,0,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -214,8 +225,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,0,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR6 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-15,EA @@ -242,18 +254,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR78 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,CF 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,EOP 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,15,CF 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,15,EOP -0,PR,2020,USD,USD,,APA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -277,8 +294,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-15,EA @@ -309,14 +327,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -340,8 +363,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-15,EA @@ -370,14 +394,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -391,6 +420,8 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-400,IR79 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,0,OCI1 0,NIC,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,-300,CF @@ -400,7 +431,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-399.63393,EOP 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,-1.0972,IA -0,PR,2020,USD,USD,L,BEPA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,320,IR6 +0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,320,IR79 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,-15,EA @@ -426,16 +457,21 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P11,CH,,NotApplicable,BBA,29.96755,EOP 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P11,CH,,NotApplicable,BBA,0.09226,IA 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,400,IR1 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-320,IR78 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P11,CH,,NotApplicable,BBA,-1.5,BOP 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-1.5,EOP -0,PR,2020,USD,USD,,APA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -459,8 +495,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-129.49727,AM 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P11,CH,,NotApplicable,BBA,72.2,BOP 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P11,CH,,NotApplicable,BBA,139.90849,BOP @@ -491,14 +528,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -522,8 +564,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-15,EA @@ -550,14 +593,19 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,-29.87529,IR5 0,,2020,USD,USD,L,RA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P11,CH,,NotApplicable,BBA,29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-5,ISE3 0,NIC,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-280,CF 0,NIC,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-280,ISE2 0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,400,CF 0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,400,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-320,IR6 +0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-400,IR77 +0,PR,2020,USD,USD,,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,80,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-320,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,320,IR78 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,,NotApplicable,BBA,598.75294,BOP 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,,NotApplicable,BBA,-300,CF 0,NIC,2020,USD,USD,C,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,299.67555,EOP @@ -581,8 +629,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,,NotApplicable,BBA,-1.0972,IA 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,1.0972,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,398.53673,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,400,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-80,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,320,IR6 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-82.02271,AM 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,N,Default,,DT5,P11,CH,,NotApplicable,BBA,139.90849,BOP 0,,2020,USD,USD,,C,CHF,DT5.1,P,False,LRC,ANN,C,Default,,DT5,P11,CH,,NotApplicable,BBA,-15,EA diff --git a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv index 918636df..112c7918 100644 --- a/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv +++ b/ifrs17-template/Test/Data/ReportVariableBenchmarks/ReportVariableBenchmarks_2021_3_CH__Contractual.csv @@ -232,17 +232,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,N,,PT1,DTR2,P2,CH,,PastService,BBA,-0.00274,IA 2020,,2020,USD,USD,L,RA,CHF,DTR2.2,P,True,LIC,ANN,I,,PT1,DTR2,P2,CH,,PastService,BBA,2.99676,MC 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-96,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -299,9 +305,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.01664,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.19963,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-55.06323,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-24,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,54.86359,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,96,IR6 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6.28963,AM 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-87.43136,CL @@ -323,8 +330,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0,ISE11 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,29.96755,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF @@ -349,17 +357,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,,2020,USD,USD,L,RA,CHF,DT1.1,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-7.48628,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-90,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-120,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -416,9 +430,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.01664,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.19963,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-55.06323,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,54.86359,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,120,IR6 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-4.35467,AM 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-87.43136,CL @@ -440,8 +455,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,ISE11 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,29.96755,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,,2020,USD,USD,C,RA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF @@ -466,16 +482,22 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,,2020,USD,USD,L,RA,CHF,DT1.3,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-7.48628,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,IR1 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-96,IR78 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,BOP 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,NIC,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,ISE2 @@ -483,7 +505,7 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,15,BOP 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,5,CF 0,PR,2020,USD,USD,,AA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,20,EOP -0,PR,2020,USD,USD,,APA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -540,9 +562,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.01664,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.19963,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-55.06323,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-24,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,54.86359,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,96,IR6 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6.28963,AM 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-87.43136,CL @@ -564,8 +587,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0,ISE11 0,NIC,2020,USD,USD,,OA,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,8,BOP 0,NIC,2020,USD,USD,,OA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-8,CF 0,NIC,2020,USD,USD,,OA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP @@ -598,17 +622,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,,2020,USD,USD,L,RA,CHF,DT1.4,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-7.48628,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,90,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-96,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -665,9 +695,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.01664,IA 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.19963,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-55.06323,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-24,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,54.86359,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,96,IR6 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-6.28963,AM 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-87.43136,CL @@ -689,8 +720,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,N,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,ISE11 +0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-0,ISE11 0,PR,2020,USD,USD,,OA,CHF,DT1.5,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,BOP 0,PR,2020,USD,USD,,OA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,0,EOP 0,PR,2020,USD,USD,,OA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-10,IR1 @@ -719,17 +751,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,I,Default,,DT1,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,,2020,USD,USD,L,RA,CHF,DT1.5,P,False,LRC,ANN,C,Default,,DT1,P2,CH,,NotApplicable,BBA,-7.48628,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,90,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-96,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -760,6 +798,8 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,-0.04148,IA 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-0.10385,IFIE1 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-55.10299,IR5 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-120,IR79 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,0,OCI1 0,PR,2020,USD,USD,C,BE,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,0.32832,YCU @@ -784,8 +824,8 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,14.99001,EV 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,-0.183,IA 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,-0.01664,IA +0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,96,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,-39.96339,MC -0,PR,2020,USD,USD,L,BEPA,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,96,IR6 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-6.28963,AM 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-87.43136,CL @@ -807,8 +847,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,0.0163,ISE11 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT2.1,P,False,LRC,ANN,C,,,DT2,P2,CH,,NotApplicable,BBA,-0,ISE11 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,29.96755,BOP 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,,2020,USD,USD,C,RA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,-6,CF @@ -832,19 +873,25 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,N,,,DT2,P2,CH,,NotApplicable,BBA,0.00549,IA 0,,2020,USD,USD,L,RA,CHF,DT2.1,P,False,LRC,ANN,I,,,DT2,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,90,IR1 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-96,IR78 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P2,CH,,NotApplicable,BBA,-1.5,BOP 0,PR,2020,USD,USD,,AA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-1.5,EOP -0,PR,2020,USD,USD,,APA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-8.98132,CL @@ -907,9 +954,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P2,CH,,NotApplicable,BBA,-0.01664,IA 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,0.19963,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-399.83356,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,120,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-24,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,399.63393,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,96,IR6 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P2,CH,,NotApplicable,BBA,67.83796,BOP 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-139.94507,CL 0,,2020,USD,USD,,C,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-33.8717,EA @@ -931,8 +979,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P2,CH,,NotApplicable,BBA,55.45632,EV 0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,N,Default,,DT3,P2,CH,,NotApplicable,BBA,0.0163,IA -0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-0.0163,IFIE1 -0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-8.112,ISE11 +0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,0.0163,IFIE1 +0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-0.0163,IR5 +0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-8.1283,ISE11 0,,2020,USD,USD,,L,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,8.1283,ISE9 0,PR,2020,USD,USD,,OA,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P2,CH,,NotApplicable,BBA,1.5,BOP 0,PR,2020,USD,USD,,OA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,1.5,EOP @@ -962,17 +1011,23 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,I,Default,,DT3,P2,CH,,NotApplicable,BBA,-5.99351,MC 0,,2020,USD,USD,L,RA,CHF,DT3.1,P,False,LRC,ANN,C,Default,,DT3,P2,CH,,NotApplicable,BBA,-29.96755,OCI1 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-10,CF +0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-10,IR8 0,ACA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-10,ISE4 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-5,CF +0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-5,IR8 0,AEA,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-5,ISE3 0,ICO,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-6,CF 0,ICO,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-6,IR2 +0,ICO,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-6,ISE2 0,ICO,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,6,ISE5 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-70,CF 0,NIC,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-70,ISE2 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,90,CF 0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,90,IR1 -0,PR,2020,USD,USD,,APA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-72,IR6 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-90,IR77 +0,PR,2020,USD,USD,,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,18,IR79 +0,PR,2020,USD,USD,L,A,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-104,IR78 +0,PR,2020,USD,USD,,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,72,IR78 0,ICO,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P2,CH,,NotApplicable,BBA,11.96764,BOP 0,ICO,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P2,CH,,NotApplicable,BBA,-3,CF 0,ICO,2020,USD,USD,C,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,8.98132,EOP @@ -1029,9 +1084,10 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P2,CH,,NotApplicable,BBA,-0.03327,IA 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,0.21627,IFIE1 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,28.86422,IR5 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,130,IR77 +0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-26,IR79 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,I,Default,,DT4,P2,CH,,NotApplicable,BBA,-39.96339,MC 0,PR,2020,USD,USD,L,BE,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-29.08049,OCI1 -0,PR,2020,USD,USD,L,BEPA,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,104,IR6 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,C,Default,,DT4,P2,CH,,NotApplicable,BBA,-34.00598,AM 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,I,Default,,DT4,P2,CH,,NotApplicable,BBA,42.96811,BOP 0,,2020,USD,USD,,C,CHF,DT4.1,P,False,LRC,ANN,N,Default,,DT4,P2,CH,,NotApplicable,BBA,8.00465,BOP @@ -1160,8 +1216,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-27.7147,EV 0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,ISE10 +0,,2020,USD,USD,,LR,CHF,DTR1.1,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,ISE11 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-14.98378,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-5.98382,BOP 0,,2020,USD,USD,C,RA,CHF,DTR1.1,P,True,LRC,ANN,I,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,3,CF @@ -1280,8 +1337,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-27.7147,EV 0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,ISE10 +0,,2020,USD,USD,,LR,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,ISE11 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,True,LRC,ANN,I,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-2.5,BOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,EOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.3,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-2.5,ISE2 @@ -1399,8 +1457,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-27.7147,EV 0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,N,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-0.00813,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0.00813,ISE10 +0,,2020,USD,USD,,LR,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,ISE11 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,True,LRC,ANN,I,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-10,BOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,0,EOP 0,NIC,2020,USD,USD,,OA,CHF,DTR1.4,P,True,LRC,ANN,C,Default,PT1,DTR1,P2,CH,,NotApplicable,BBA,-10,ISE2 @@ -1512,8 +1571,9 @@ AccidentYear,AmountType,AnnualCohort,ContractualCurrency,Currency,EconomicBasis, 0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,0,EOP 0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-27.7147,EV 0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-0.00813,IA -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,0.00813,IFIE1 -0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-0.00813,ISE11 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-0.00813,IFIE1 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,0.00813,ISE10 +0,,2020,USD,USD,,LR,CHF,DTR2.1,P,True,LRC,ANN,C,,PT1,DTR2,P2,CH,,NotApplicable,BBA,0,ISE11 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-14.98378,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,N,,PT1,DTR2,P2,CH,,NotApplicable,BBA,-5.98382,BOP 0,,2020,USD,USD,C,RA,CHF,DTR2.1,P,True,LRC,ANN,I,,PT1,DTR2,P2,CH,,NotApplicable,BBA,3,CF From 210bf800a6d70637aa887ad5ace2175f3932b936 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 26 May 2023 18:10:05 +0200 Subject: [PATCH 38/38] pr comments --- ifrs17-template/Constants/CalculationEngine.ipynb | 3 +-- ifrs17/Report/ReportScopes.ipynb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ifrs17-template/Constants/CalculationEngine.ipynb b/ifrs17-template/Constants/CalculationEngine.ipynb index b7e7b0cf..721e117b 100644 --- a/ifrs17-template/Constants/CalculationEngine.ipynb +++ b/ifrs17-template/Constants/CalculationEngine.ipynb @@ -22,8 +22,7 @@ "var projectName = \"ifrs17\";", "\nvar environmentName = \"v1.3.0\";", "\nvar notebookName = \"CalculationEngine\";", - "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";", - "\ncalculationEngine = $\"#!import \\\"../../ifrs17/CalculationEngine\\\"\";" + "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ], "metadata": {}, "execution_count": 0, diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index 3198089a..b52a303f 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -1056,7 +1056,7 @@ "\nWe have applied the Premium Allocation factor in the CSM computations to adjust for the experience (included in the Insurance Revenue under the LRC changes). See [Experience Adjustment on Premium](../Import/4ImportScope-TechnicalMargin#experience-adjustment-on-premium) for more details.", "\n", "\nThe same would apply for the Investment Components, as we also have explicitly added the position of the incurred values (actuals) to the Insurance Revenue (exclusion of Investment Components).", - "\nHowever, we do not show the corresponding experience adjustment in the Financial Performance, as it should also have a net effect of zero and there is no factor to adjust the recognition between Financial Performance and CS like in the case of Premiums.", + "\nHowever, we do not show the corresponding experience adjustment in the Financial Performance, as it should also have a net effect of zero and there is no factor to adjust the recognition between Financial Performance and CSM like in the case of Premiums.", "\n", "\nFor Acquistion Expenses, the incurred values (actuals) are not part of the Insurance Revenue, and since they are implicitly included in the CSM position (under LRC changes), we must have the corresponding exclusion of their experience adjustment contributions." ],