From 2b614aa44e95d2d0a66eb50f32599db4735d8a08 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 09:37:20 +0100 Subject: [PATCH 01/18] remove spec tests --- full-ifrs17-template/Constants/Consts.ipynb | 2 +- .../SpecificationsFinancialPerformance.ipynb | 1461 ------------ .../Test/SpecificationsImportActuals.ipynb | 507 ----- .../Test/SpecificationsImportCashflows.ipynb | 1996 ----------------- .../Test/SpecificationsSetup.ipynb | 125 -- .../Test/SpecificationsTechnicalMargin.ipynb | 1768 --------------- full-ifrs17-template/Test/Tests.ipynb | 30 - 7 files changed, 1 insertion(+), 5888 deletions(-) delete mode 100644 full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb delete mode 100644 full-ifrs17-template/Test/SpecificationsImportActuals.ipynb delete mode 100644 full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb delete mode 100644 full-ifrs17-template/Test/SpecificationsSetup.ipynb delete mode 100644 full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb diff --git a/full-ifrs17-template/Constants/Consts.ipynb b/full-ifrs17-template/Constants/Consts.ipynb index 1ef5ee81..f39ab144 100644 --- a/full-ifrs17-template/Constants/Consts.ipynb +++ b/full-ifrs17-template/Constants/Consts.ipynb @@ -25,4 +25,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb b/full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb deleted file mode 100644 index 7016fa12..00000000 --- a/full-ifrs17-template/Test/SpecificationsFinancialPerformance.ipynb +++ /dev/null @@ -1,1461 +0,0 @@ -{ - "metadata": { - "authors": [], - "kernelspec": { - "display_name": "Formula Framework", - "language": "C#", - "name": "C#" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/plain", - "name": "C#" - }, - "toc-autonumbering": "True", - "toc-showcode": "False" - }, - "nbformat": 4, - "nbformat_minor": 5, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "

Financial Performance Specifications

" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The aim of this notebook is to document the Financial Performance reporting system. The process is pictorially explained in the following flowchart. ", - "\n", - "\n", - "\n
", - "\n", - "\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively." - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following the Dimensions, Parameters, Nominal Cashflows, and Actuals are imported from the corresponding csv files in Initialization/Systemorph/" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Process Data" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Current Period, Reporting Node and Currency Type" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select the target period (i.e. year and month) and Reporting Node based on the imported data:" - ] - }, - { - "cell_type": "code", - "source": [ - "var year = 2021 ;", - "\nvar month = 3 ;", - "\nvar reportingNode = \"CH\" ;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "and the type of Currency among Contractual, Functional, and Group" - ] - }, - { - "cell_type": "code", - "source": [ - "var currencyType = CurrencyType.Functional ;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Import the Report definitions, initialize the Workspace and the Test Suite:" - ] - }, - { - "cell_type": "code", - "source": [ - "Workspace.InitializeFrom(DataSource);" - ] - }, - { - "cell_type": "code", - "source": [ - "var period = (year, month) ;", - "\nvar reportStorage = new ReportStorage(Workspace, Report) ;", - "\nvar Test = Scopes.ForSingleton().WithStorage(reportStorage).ToScope();" - ] - }, - { - "cell_type": "code", - "source": [ - "await reportStorage.InitializeReportIndependentCacheAsync();", - "\nawait reportStorage.InitializeAsync(period, reportingNode, null, currencyType);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## View list of Identities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Based on the Cashflows imported, the list of all possible identities, i.e. combinations of valid Contractual and Functional Currencies, Liability Types, (Re)Insurance and Oci, is contructed and reported here below:" - ] - }, - { - "cell_type": "code", - "source": [ - "var identities = reportStorage.GetIdentities(period, reportingNode, null, currencyType);", - "\nidentities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Report" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select here below the target Data Node for executing the tests below:" - ] - }, - { - "cell_type": "code", - "source": [ - "var dataNode = \"DT1.1\";" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Group of Contract selected is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var groupOfContract = (await Workspace.Query().Where(x => x.SystemName == dataNode).ToArrayAsync()).FirstOrDefault();", - "\ngroupOfContract" - ] - }, - { - "cell_type": "markdown", - "source": [ - "where ", - "\n- the **OciType** can be Default for contracts with non-zero OCI, and null otherwise, ", - "\n- the **Liability Type** can be LRC for Liability for Remaining Coverage, and LIC for Liability of Incurred Claims,", - "\n- the **Partner** can be null for Insurance contracts, or equal to the Partner System Name for Reinsurance contracts." - ] - }, - { - "cell_type": "markdown", - "source": [ - "The summary of the Financial Performance report is shown below" - ] - }, - { - "cell_type": "code", - "source": [ - "Report.ForDataCube( Test.GetScopes(identities).Aggregate().FinancialPerformance.Filter((\"GroupOfContract\", dataNode)) )", - "\n .WithQuerySource(DataSource)", - "\n .SliceRowsBy(\"VariableType\", \"EstimateType\")", - "\n .SliceColumnsBy(CurrencyGrouper(currencyType), \"LiabilityType\",\"GroupOfContract\")", - "\n .WithGridOptions( o => o.WithDefaultColumn( c => c.WithWidth(260) ) with {GroupDefaultExpanded = 3, Height = 900, OnGridReady = null} )", - "\n .ToReport()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Inspection" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Fulfillment Cashflows" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Fulfillment Cashflow (FCF) corresponds to the sum of the Best Estimate [Present Value](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#current-and-locked) (PV) and the [Risk Adjustment](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#risk-adjustment) (RA), both summed over Amounty Types, and both discounted with the Locked-In curve in the BBA valuation approach:", - "\n", - "\n$$", - "\n\\text{FCF}(\\text{AoC}) = \\text{PV Locked}(\\text{AoC})", - "\n\\bigg|_{\\substack{\\text{Non Attributable} \\\\ \\text{Amount Types} \\\\ \\text{excluded}}} ", - "\n+ \\text{RA Locked}(\\text{AoC}) ~.", - "\n$$" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Non Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the non financial contribution to the FCF is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaFCF_nonFinancial = Test.GetScopes(identities).Aggregate()", - "\n .FpNonFinancial.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaFCF_nonFinancial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the full list of FCFs" - ] - }, - { - "cell_type": "code", - "source": [ - "var FCFs = Test.GetScopes(identities).Aggregate().Fcf.Filter((\"GroupOfContract\", dataNode));" - ] - }, - { - "cell_type": "code", - "source": [ - "var deltaFCF = FCFs.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n FCFs.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));" - ] - }, - { - "cell_type": "code", - "source": [ - "deltaFCF.Aggregate().Value" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaFCF_nonFinancial = deltaFCF.Filter((\"VariableType\", \"!IA\"), ", - "\n (\"VariableType\", \"!YCU\"), ", - "\n (\"VariableType\", \"!CRU\"), ", - "\n (\"VariableType\", \"!FX\") ).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_nonFinancial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "For consistency, this term is taken with the minus sign" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_nonFinancial.CheckEquality( -computedDeltaFCF_nonFinancial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely, the computed value for the financial contribution to the Fulfillment Cashflows (FCF) is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaFCF_Financial = Test.GetScopes(identities).Aggregate()", - "\n .FpFinancial.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaFCF_Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The independent recalculation of this value reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaFCF_Financial = (deltaFCF.Filter((\"VariableType\", \"IA\")) +", - "\n deltaFCF.Filter((\"VariableType\", \"YCU\")) +", - "\n deltaFCF.Filter((\"VariableType\", \"CRU\")) ).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "taking the minus sign into account" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_Financial.CheckEquality( -computedDeltaFCF_Financial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### FX" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the FX contribution to the Fulfillment Cashflows (FCF) is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaFCF_Fx = Test.GetScopes(identities).Aggregate()", - "\n .FpFx.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaFCF_Fx" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The independent recalculation of this value reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaFCF_Fx = deltaFCF.Filter((\"VariableType\", \"FX\")).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_Fx" - ] - }, - { - "cell_type": "markdown", - "source": [ - "taking the minus sign into account" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_Fx.CheckEquality( -computedDeltaFCF_Fx ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n### Other Comprehensive Income" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Other Comprehensive Income (OCI) term is by definition the sum of the financial contributions not related to the insurance sector.", - "\n", - "\nThe Default method to compute the OCI term is by subtracting the FCF computed with the *Locked-In* rates and the FCF computed with the *Current* rates. In this way the non insurance financial volatiliy of the economic input is relegated to the OCI. " - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaFCF_OCI = Test.GetScopes(identities).Aggregate()", - "\n .OciFinancial.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaFCF_OCI" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The OCI contribution is zero when the OCI option is disabled for the [target Group of Contract](#report).", - "\n", - "\nHere below we follow the steps to calculate independently the OCI contribution " - ] - }, - { - "cell_type": "code", - "source": [ - "var DeltaFCF_Locked = deltaFCF.Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "var FCFs_current = Test.GetScopes(identities).Aggregate().CurrentFcf.Filter((\"GroupOfContract\", dataNode));" - ] - }, - { - "cell_type": "code", - "source": [ - "var DeltaFCF_Current = FCFs_current.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n FCFs_current.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaFCF_OCI = DeltaFCF_Locked - DeltaFCF_Current.Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "DeltaFCF_Locked" - ] - }, - { - "cell_type": "code", - "source": [ - "DeltaFCF_Current.Aggregate().Value" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_OCI" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaFCF_OCI.CheckEquality( computedDeltaFCF_OCI ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### FX Other Comprehensive Income" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The FX impact on the Other Comprehensive Income is calculated using the same formulas defined [above](#oci) but is presented separately in the Financial Performance.", - "\n", - "\nThe computed value for the FX contribution to the Other Comprehensive Income (OCI) is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedFxFCF_OCI = Test.GetScopes(identities).Aggregate()", - "\n .OciFx.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedFxFCF_OCI" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The OCI contribution is zero when the OCI option is disabled for the [target Group of Contract](#report).", - "\n", - "\nHere below we follow the steps to calculate independently the FX OCI contribution " - ] - }, - { - "cell_type": "code", - "source": [ - "var FxFCF_Locked = deltaFCF.Filter((\"VariableType\", AocTypes.FX)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "var FxFCF_Current = FCFs_current.Filter((\"VariableType\", AocTypes.FX)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedFxFCF_OCI = FxFCF_Locked - FxFCF_Current;" - ] - }, - { - "cell_type": "code", - "source": [ - "FxFCF_Locked" - ] - }, - { - "cell_type": "code", - "source": [ - "FxFCF_Current" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedFxFCF_OCI" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedFxFCF_OCI.CheckEquality( computedFxFCF_OCI ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Contractual Service Margin" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Non Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the non financial change of the CSM is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaCSM_nonFinancial = Test.GetScopes(identities).Aggregate()", - "\n .NonFinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaCSM_nonFinancial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the full CSM data from which the delta can be computed:" - ] - }, - { - "cell_type": "code", - "source": [ - "var CSM = Test.GetScopes(identities).Aggregate().Csm.Filter((\"GroupOfContract\", dataNode));" - ] - }, - { - "cell_type": "code", - "source": [ - "var deltaCSM = CSM.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n CSM.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));" - ] - }, - { - "cell_type": "code", - "source": [ - "deltaCSM.Aggregate().Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The non Financial contribution is calculated subtracting the Amortization and the Interest Accretion terms:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaCSM_nonFinancial = deltaCSM.Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\")).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_nonFinancial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_nonFinancial.CheckEquality( -computedDeltaCSM_nonFinancial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely, the computed value for the financial change of the CSM is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaCSM_Financial = Test.GetScopes(identities).Aggregate()", - "\n .FinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaCSM_Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{CSM}$, and considering only Interest Accretion, Yield Curve Update and Credit Risk Update terms" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaCSM_Financial = ( deltaCSM.Filter((\"VariableType\", \"IA\")) +", - "\n deltaCSM.Filter((\"VariableType\", \"YCU\")) +", - "\n deltaCSM.Filter((\"VariableType\", \"CRU\")) )", - "\n .Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_Financial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_Financial.CheckEquality( -computedDeltaCSM_Financial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### FX" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the FX change of the CSM is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaCSM_Fx = Test.GetScopes(identities).Aggregate()", - "\n .Fx.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaCSM_Fx" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{CSM}$, and considering only the FX term" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaCSM_Fx = deltaCSM.Filter((\"VariableType\", AocTypes.FX)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_Fx" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaCSM_Fx.CheckEquality( -computedDeltaCSM_Fx ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Loss Component" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Non Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the non financial change of the LC is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLC_nonFinancial = Test.GetScopes(identities).Aggregate()", - "\n .NonFinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLC_nonFinancial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the full CSM data from which the delta can be computed:" - ] - }, - { - "cell_type": "code", - "source": [ - "var LC = Test.GetScopes(identities).Aggregate().Lc.Filter((\"GroupOfContract\", dataNode));" - ] - }, - { - "cell_type": "code", - "source": [ - "var deltaLC = LC.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n LC.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));" - ] - }, - { - "cell_type": "code", - "source": [ - "deltaLC.Aggregate().Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The non Financial contribution is calculated subtracting the Amortization, Interest Accretion, Yield Curve Update, Credit Risk Update, Fx terms:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLC_nonFinancial = deltaLC.Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\")).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_nonFinancial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_nonFinancial.CheckEquality( -computedDeltaLC_nonFinancial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely, the computed value for the financial change of the LC is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLC_Financial = Test.GetScopes(identities).Aggregate()", - "\n .FinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLC_Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{LC}$, and considering only the Interest Accretion, Yield Curve Update, Credit Risk Update terms" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLC_Financial = ( deltaLC.Filter((\"VariableType\", \"IA\")) +", - "\n deltaLC.Filter((\"VariableType\", \"YCU\")) +", - "\n deltaLC.Filter((\"VariableType\", \"CRU\")) )", - "\n .Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_Financial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_Financial.CheckEquality( -computedDeltaLC_Financial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### FX" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the FX change of the LC is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLC_Fx = Test.GetScopes(identities).Aggregate()", - "\n .Fx.Filter((\"GroupOfContract\", dataNode)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLC_Fx" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{LC}$, and considering only the FX term" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLC_Fx = deltaLC.Filter((\"VariableType\", AocTypes.FX)).Aggregate().Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_Fx" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLC_Fx.CheckEquality( -computedDeltaLC_Fx ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Loss Recovery Component" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Non Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "If the [target Group of Contract](#report) is not of type Re-Insurance, the result of the following will return null.", - "\n", - "\nThe computed value for the non financial change of the LoReCo is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLORECO_nonFinancial = Test.GetScopes(identities).Aggregate()", - "\n .NonFinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLORECO_nonFinancial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the full LoReCo data from which the delta can be computed:" - ] - }, - { - "cell_type": "code", - "source": [ - "var LORECO = Test.GetScopes(identities).Aggregate().Loreco.Filter((\"GroupOfContract\", dataNode));" - ] - }, - { - "cell_type": "code", - "source": [ - "var deltaLORECO = LORECO.Filter((\"VariableType\", \"!BOP\"),(\"VariableType\", \"!EOP\")) +", - "\n LORECO.Filter((\"VariableType\", AocTypes.BOP),(\"Novelty\", Novelties.N));" - ] - }, - { - "cell_type": "code", - "source": [ - "deltaLORECO.Aggregate()?.Value?? 0" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The non Financial contribution is calculated subtracting the Amortization and the Interest Accretion terms:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLORECO_nonFinancial = deltaLORECO.Filter((\"VariableType\", \"!AM\"), (\"VariableType\", \"!IA\"), (\"VariableType\", \"!YCU\"), (\"VariableType\", \"!CRU\"), (\"VariableType\", \"!FX\")).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_nonFinancial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_nonFinancial.CheckEquality( -computedDeltaLORECO_nonFinancial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely, the computed value for the financial change of the LoReCo is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLORECO_Financial = Test.GetScopes(identities).Aggregate()", - "\n .FinancialChanges.Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLORECO_Financial" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{LoReCo}$, and considering only the Interest Accretion, Yield Curve Update, Credit Risk Update terms" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLORECO_Financial = ( deltaLORECO.Filter((\"VariableType\", \"IA\")) +", - "\n deltaLORECO.Filter((\"VariableType\", \"YCU\")) +", - "\n deltaLORECO.Filter((\"VariableType\", \"CRU\")) )", - "\n .Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_Financial" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_Financial.CheckEquality( -computedDeltaLORECO_Financial ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### FX" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value for the FX change of the LoReCo is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeltaLORECO_Fx = Test.GetScopes(identities).Aggregate()", - "\n .Fx.Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeltaLORECO_Fx" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This value can be independently computed starting from the $\\Delta\\text{LoReCo}$, and considering only the FX term" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLORECO_Fx = deltaLORECO.Filter((\"VariableType\", AocTypes.FX)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_Fx" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDeltaLORECO_Fx.CheckEquality( -computedDeltaLORECO_Fx ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Reconciliation" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Based on the results calculated in Section 3, we check here the consistency of the [Financial Performance Report](#report). ", - "\n", - "\nFiner granular reconciliations can be performed by following the datails of how each report contributes to the Financial Performance Report. Please, refer to the [Report documentation](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#financial-performance) for all the details. " - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Insurance Revenue" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Insurance Revenue (IR) contributions vary from Insurance to Re-Insurance and depend on the Liability Type of the [target Group of Contract](#report). This can be summarized by the formulas below", - "\n", - "\n$$", - "\n\\text{IR} = \\left\\{ ", - "\n\\begin{array}{ll}", - "\n\\Delta\\text{FCF Gross Non Financial} + \\Delta\\text{CSM Non Financial} + \\Delta\\text{CSM Release} \\\\", - "\n+ \\text{Incurred Incoming Cashflows} + \\text{Claims ICO} + \\text{Incurred Deferrals} \\\\", - "\n+ \\text{Exc. Experience Adjustment on Premiums} ~~,", - "\n& \\text{for LRC Insurance contracts} \\\\[0.2cm]", - "\n\\Delta\\text{CSM Non Financial} + \\Delta\\text{CSM Release} \\\\", - "\n+ \\text{Incurred Incoming Cashflows} + \\text{Claims ICO} + \\text{Incurred Deferrals} ~~,", - "\n& \\text{for LIC Insurance contracts} \\\\[0.2cm]", - "\n\\text{Claims ICO} + \\text{Incurred Deferrals} ~~,", - "\n& \\text{for Re-Insurance contracts}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nHere below we recompute the IR term:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaCSM_release = deltaCSM.Filter((\"VariableType\", \"AM\")).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredIncomingCashflows = Test.GetScopes(identities).Aggregate().Premiums", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredDeferralsIr = Test.GetScopes(identities).Aggregate().AmortizationToIr", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedClaimsICO = Test.GetScopes(identities).Aggregate().ClaimsIcoToIr", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedExcExperienceAdjPremiums = Test.GetScopes(identities).Aggregate().ExperienceAdjustmentOnPremium", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "double IR = 0;", - "\nif(groupOfContract.Partner == null && groupOfContract.LiabilityType == \"LRC\")", - "\n IR = - expectedDeltaFCF_nonFinancial ", - "\n - expectedDeltaCSM_nonFinancial ", - "\n - expectedDeltaCSM_release ", - "\n + expectedIncurredIncomingCashflows", - "\n + expectedClaimsICO", - "\n + expectedIncurredDeferralsIr", - "\n + expectedExcExperienceAdjPremiums;", - "\nelse if(groupOfContract.Partner == null && groupOfContract.LiabilityType == \"LIC\")", - "\n IR = - expectedDeltaCSM_nonFinancial", - "\n - expectedDeltaCSM_release", - "\n + expectedIncurredIncomingCashflows", - "\n + expectedClaimsICO", - "\n + expectedIncurredDeferralsIr ", - "\n + expectedExcExperienceAdjPremiums;", - "\nelse if(groupOfContract.Partner != null)", - "\n IR = + expectedClaimsICO", - "\n + expectedIncurredDeferralsIr", - "\n + expectedExcExperienceAdjPremiums;" - ] - }, - { - "cell_type": "code", - "source": [ - "IR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Insurance Service Expenses" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Analogously, the Insurance Service Expenses (ISE) read", - "\n", - "\n$$", - "\n\\text{ISE} = \\left\\{ ", - "\n\\begin{array}{ll}", - "\n\\Delta\\text{LC Non Financial}", - "\n+ \\Delta\\text{LC Release}", - "\n+ \\text{Incurred ClaimsNIC} \\\\", - "\n+ \\text{Incurred Expenses}", - "\n+ \\text{Incurred Commissions}", - "\n+ \\text{Incurred Deferrals}", - "\n& \\text{for LRC Insurance contracts} \\\\[0.2cm]", - "\n\\Delta\\text{FCF Reinsurance Non Financial}", - "\n+ \\Delta\\text{LC Non Financial}", - "\n+ \\Delta\\text{LC Release}", - "\n+ \\text{Incurred ClaimsNIC} \\\\", - "\n+ \\text{Incurred Expenses} ", - "\n+ \\text{Incurred Commissions}", - "\n+ \\text{Incurred Deferrals}", - "\n& \\text{for LIC Insurance contracts} \\\\[0.2cm]", - "\n\\Delta\\text{FCF Reinsurance Non Financial} ", - "\n+ \\Delta\\text{CSM Non Financial} ", - "\n+ \\Delta\\text{CSM Release} \\\\", - "\n+ \\Delta\\text{LC Non Financial} ", - "\n+ \\Delta\\text{LC Release} ", - "\n+ \\Delta\\text{LoReCo Non Financial} \\\\", - "\n+ \\text{Incurred Incoming Cashflows} ", - "\n+ \\text{Incurred ClaimsNIC} ", - "\n+ \\text{Incurred Expenses} \\\\", - "\n+ \\text{Incurred Commissions}", - "\n+ \\text{Incurred Deferrals}", - "\n& \\text{for Re-Insurance contracts}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nHere below we recompute the ISE term:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLC_release = deltaLC.Filter((\"VariableType\", \"AM\")).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeltaLoReCo_release = deltaLORECO.Filter((\"VariableType\", \"AM\")).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredClaimsNIC = Test.GetScopes(identities).Aggregate().ClaimsNic", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredExpenses = Test.GetScopes(identities).Aggregate().Expenses", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredCommissions = Test.GetScopes(identities).Aggregate().Commissions", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredClaimsICO = Test.GetScopes(identities).Aggregate().ClaimsIcoToIse", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedIncurredDeferralsIse = Test.GetScopes(identities).Aggregate().AmortizationToIse", - "\n .Filter((\"GroupOfContract\", dataNode)).Aggregate()?.Value?? 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "double ISE = 0;", - "\nif(groupOfContract.Partner == null && groupOfContract.LiabilityType == \"LRC\")", - "\n ISE = - expectedDeltaLC_nonFinancial ", - "\n - expectedDeltaLC_release", - "\n + expectedIncurredClaimsNIC ", - "\n + expectedIncurredExpenses ", - "\n + expectedIncurredClaimsICO", - "\n + expectedIncurredCommissions", - "\n + expectedIncurredDeferralsIse;", - "\nelse if(groupOfContract.Partner == null && groupOfContract.LiabilityType == \"LIC\")", - "\n ISE = - expectedDeltaFCF_nonFinancial", - "\n - expectedDeltaLC_nonFinancial ", - "\n - expectedDeltaLC_release", - "\n + expectedIncurredClaimsNIC ", - "\n + expectedIncurredExpenses ", - "\n + expectedIncurredClaimsICO", - "\n + expectedIncurredCommissions", - "\n + expectedIncurredDeferralsIse;", - "\nelse if(groupOfContract.Partner != null)", - "\n ISE = - expectedDeltaFCF_nonFinancial", - "\n - expectedDeltaCSM_nonFinancial", - "\n - expectedDeltaCSM_release", - "\n - expectedDeltaLC_nonFinancial ", - "\n - expectedDeltaLC_release", - "\n - expectedDeltaLoReCo_release", - "\n + expectedIncurredIncomingCashflows", - "\n + expectedIncurredClaimsNIC ", - "\n + expectedIncurredExpenses ", - "\n + expectedIncurredClaimsICO", - "\n + expectedIncurredCommissions", - "\n + expectedIncurredDeferralsIse;" - ] - }, - { - "cell_type": "code", - "source": [ - "ISE" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Insurance Finance Income/Expenses" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Financial part associated to the Insurance business encompassing both the Income and Expenses is denoted IFIE from the initials marked in capital letters. The ", - "\n", - "\n$$", - "\n\\text{IFIE} = \\left\\{", - "\n\\begin{array}{ll}", - "\n\\Delta\\text{FCF Financial} + \\Delta\\text{CSM Financial} + \\Delta\\text{LC Financial} + \\Delta\\text{FCF FX} + \\Delta\\text{CSM FX} + \\Delta\\text{LC FX} ~~,", - "\n& \\text{for Insurance contracts} \\\\[0.2cm]", - "\n\\Delta\\text{FCF Financial} + \\Delta\\text{CSM Financial} + \\Delta\\text{LC Financial} ", - "\n+ \\Delta\\text{LoReCo Financial} + \\Delta\\text{FCF FX} + \\Delta\\text{CSM FX} + \\Delta\\text{LC FX} ", - "\n+ \\Delta\\text{LoReCo FX} ~~, ", - "\n& \\text{for Re-Insurance contracts}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nHere below we recompute the IFIE term:" - ] - }, - { - "cell_type": "code", - "source": [ - "double IFIE = 0;", - "\nif(groupOfContract.Partner == null) ", - "\n IFIE = - expectedDeltaFCF_Financial ", - "\n - expectedDeltaCSM_Financial", - "\n - expectedDeltaLC_Financial", - "\n - expectedDeltaFCF_Fx ", - "\n - expectedDeltaCSM_Fx", - "\n - expectedDeltaLC_Fx;", - "\nelse", - "\n IFIE = - expectedDeltaFCF_Financial ", - "\n - expectedDeltaCSM_Financial", - "\n - expectedDeltaLC_Financial", - "\n - expectedDeltaLORECO_Financial", - "\n - expectedDeltaFCF_Fx ", - "\n - expectedDeltaCSM_Fx", - "\n - expectedDeltaLC_Fx", - "\n - expectedDeltaLORECO_Fx;" - ] - }, - { - "cell_type": "code", - "source": [ - "IFIE" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Other Comprehensive Income" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Other Comprehensive Income (OCI) can be non-zero only when the OCI is enabled for [target Group of Contract](#report), that is, Oci Type = Default.", - "\n", - "\n$$", - "\n\\text{OCI} = \\Delta\\text{FCF} \\big|_{\\text{Locked-in}} - \\Delta\\text{FCF} \\big|_{\\text{Current}} ~~.", - "\n$$", - "\n", - "\nHere below we recompute the OCI term:" - ] - }, - { - "cell_type": "code", - "source": [ - "var OCI = expectedDeltaFCF_OCI + expectedFxFCF_OCI;" - ] - }, - { - "cell_type": "code", - "source": [ - "OCI" - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - } - ] -} \ No newline at end of file diff --git a/full-ifrs17-template/Test/SpecificationsImportActuals.ipynb b/full-ifrs17-template/Test/SpecificationsImportActuals.ipynb deleted file mode 100644 index 8993aa5c..00000000 --- a/full-ifrs17-template/Test/SpecificationsImportActuals.ipynb +++ /dev/null @@ -1,507 +0,0 @@ -{ - "metadata": { - "authors": [], - "kernelspec": { - "display_name": "Formula Framework", - "language": "C#", - "name": "C#" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/plain", - "name": "C#" - }, - "toc-autonumbering": "True", - "toc-showcode": "False" - }, - "nbformat": 4, - "nbformat_minor": 5, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "

Import Actuals Specifications

" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The aim of this notebook is to document the calculations taking place when importing the Actuals. For this documentation notebook the Data is imported from the corresponding csv files located in the following path Initialization/Systemorph/. The process is pictorially explained in the following flowchart. ", - "\n", - "\n", - "\n
", - "\n", - "\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively." - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Import Data" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Current Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select the target period (i.e. year and month), Reporting Node, Economic Basis, and Data Node based on the imported data:" - ] - }, - { - "cell_type": "code", - "source": [ - "var year = 2021 ;", - "\nvar month = 3 ;", - "\nvar reportingNode = \"CH\" ;", - "\nvar economicBasis = \"L\" ;", - "\nvar dataNode = \"DT1.1\";" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Import the Dimensions, Yield Curves and Nominal Cashflows from the corresponding csv files in Initialization/Systemorph/" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "[Setup IFRS17 Calculation Engine](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation):" - ] - }, - { - "cell_type": "code", - "source": [ - "#!import \"SpecificationsSetup\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Initialization of the Test Suite: the data loaded from csv files are ready to be used by the Scopes for the calculations" - ] - }, - { - "cell_type": "code", - "source": [ - "var Test = await StartCalculatorAsync(reportingNode, year, month, economicBasis, Periodicity.Quarterly, ImportFormats.Actual);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## View imported Actuals" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here the imported Actuals from csv are visualized " - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetIfrsVariables(dataNode)", - "\n .Where(x => new string[] {EstimateTypes.A, EstimateTypes.AA, EstimateTypes.OA}.Contains(x.EstimateType))", - "\n .Where(x => x.AocType != \"EOP\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "where the filter is selecting only those *estimate types* associated to the imported Actuals, hence excluding the IFRS variables calculated when [importing the cashflows](SpecificationsImportCashflows)." - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Base Actuals" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The following simplified AoC Chain applies for Advance and Overdue Actuals:", - "\n1. Beginning of Period (BOP)", - "\n2. Cash flow (CF)", - "\n3. Amortization (AM) ", - "\n4. End of Period (EOP) ", - "\n", - "\nWe consider 4 types of Actual values, which are distinguished through their [Estimate Type](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#estimate-type):", - "\n- Actuals (A)", - "\n- Advance Actuals (AA)", - "\n- Overdue Actuals (OA)", - "\n- Deferrable Actuals (DA)", - "\n", - "\nwith the Estimate Type's system name shown between parenthesis above.", - "\nThey are computed by the so-called Actual Base **Scope**", - "\n", - "\n$$", - "\n\\text{Actual Base} (\\text{AoC}) = \\left\\{", - "\n\\begin{array}{cl}", - "\n0 & \\text{if AoC step is AM,} \\\\", - "\n\\text{Actual Base}(\\rm{BOP}) + \\text{Actual Base}(\\rm{CF}) + \\text{Actual Base}(\\rm{WO}) & \\text{if AoC step is EOP and Estimate Type is not A,} \\\\", - "\n\\text{Imported Actual} & \\text{otherwise.}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nWe start by selecting one of the [imported Actual](#view-imported-actuals) and we pick up an available data node, novelty, and amount type. Then, we can retrieve the corresponding actual (if any) with AoC type BOP, R, and WO. ", - "\n", - "\nNote that the **Identity** for Actual Base contains information about the target data node, AoC type, novelty, amount type and estimate type." - ] - }, - { - "cell_type": "markdown", - "source": [ - "## End of Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The imported actuals for the AoC steps BOP, CF, and WO are:" - ] - }, - { - "cell_type": "code", - "source": [ - "var actualBaseBOP = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"BOP\", Novelty = \"I\" }, \"PR\", \"AA\", (int?)null) ); ", - "\nactualBaseBOP" - ] - }, - { - "cell_type": "code", - "source": [ - "var actualBaseCF = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"CF\", Novelty = \"C\" }, \"PR\", \"AA\", (int?)null) );", - "\nactualBaseCF" - ] - }, - { - "cell_type": "code", - "source": [ - "var actualBaseWO = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"WO\", Novelty = \"C\" }, \"PR\", \"AA\", (int?)null) ); ", - "\nactualBaseWO" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Based on the imported actuals and according to the [formula above](#base-actual), the computed actual for AoC step EOP reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedActualBaseEOP = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"EOP\", Novelty = \"C\" }, \"PR\", \"AA\", (int?)null) ); ", - "\ncomputedActualBaseEOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed value can be compared with the expected value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedActualBaseEOP.Value == actualBaseBOP.Value + actualBaseCF.Value + actualBaseWO.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedActualBaseEOP.Value.Should().Be( actualBaseBOP.Value + actualBaseCF.Value + actualBaseWO.Value );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Deferrable Actuals" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Deferrable Actuals (DA) are computed as follows", - "\n", - "\n$$", - "\n\\text{Deferrable Actual} (\\text{AoC}) = \\left\\{", - "\n\\begin{array}{cl}", - "\n\\text{Actual Base}_{\\substack{\\text{Estimate Type}=\\text{A} \\\\ \\text{Amount Type}=\\text{ACA}}} (\\text{CF})", - "\n +\\text{Actual Base}_{\\substack{\\text{Estimate Type}=\\text{A} \\\\ \\text{Amount Type}=\\text{AEA}}} (\\text{CF}) & \\text{if AoC step is CF } \\\\", - "\n-\\text{AMF} \\cdot \\big( \\text{Deferrable Actual}(\\rm{BOP}) + \\text{Deferrable Actual}(\\rm{CF}) \\big) & \\text{if AoC step is AM } \\\\", - "\n\\text{Deferrable Actual}(\\rm{BOP}) + \\text{Deferrable Actual}(\\rm{CF}) + \\text{Deferrable Actual}(\\rm{AM}) & \\text{if AoC step is EOP } \\\\", - "\n\\text{Input Actual}_{\\text{Estimate Type}=\\text{DA}} (\\text{BOP}) & \\text{if AoC step is BOP } \\\\", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nwhere ACA and AEA are *Aquisition* Amount Types from *Attributable Commission* and *Attributable Expenses*, respectively.", - "\n", - "\nNote that the **Identity** of Deferrable Actual is encompassing solely data node, Aoc type, and novelty." - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Beginning of Period" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeferrableActualBOP = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"BOP\", Novelty = \"I\" } );", - "\ncomputedDeferrableActualBOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The deferrable Actual for the AoC step being BOP is simply the EOP Actual of the previous period. In fact, if the latter exists among the [imported Actuals](#view-imported-actuals), it is reported here below as the BOP of the current period:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeferrableActualBOP = Test.GetStorage().GetValue(new ImportIdentity {DataNode = \"DT1.1\", AocType = \"BOP\", Novelty = \"I\" }, (string)null, EstimateTypes.DA, (int?)null);", - "\nexpectedDeferrableActualBOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected value is compared with the computed result: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualBOP.Value == expectedDeferrableActualBOP" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualBOP.Value.Should().Be(expectedDeferrableActualBOP);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Cash flow" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeferrableActualCF = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"CF\", Novelty = \"C\" } );", - "\ncomputedDeferrableActualCF" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The deferrable Actual for the AoC step being CF is the sum of the base Actuals with Amount Type ACA and AEA:" - ] - }, - { - "cell_type": "code", - "source": [ - "var actualBaseAEA = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"CF\", Novelty = \"C\" }, \"AEA\", \"A\", (int?)null) );", - "\nactualBaseAEA" - ] - }, - { - "cell_type": "code", - "source": [ - "var actualBaseACA = Test.GetScope( (new ImportIdentity {DataNode = \"DT1.1\", AocType = \"CF\", Novelty = \"C\" }, \"ACA\", \"A\", (int?)null) );", - "\nactualBaseACA" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeferrableActualCF = actualBaseAEA.Value + actualBaseACA.Value;", - "\nexpectedDeferrableActualCF" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected value is compared with the computed result: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualCF.Value == expectedDeferrableActualCF" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualCF.Value.Should().Be(expectedDeferrableActualCF);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Amortization" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeferrableActualAM = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"AM\", Novelty = \"C\" } );", - "\ncomputedDeferrableActualAM" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The deferrable Actual for the AoC step being AM is the sum of the deferrable Actuals for AoC step BOP and CF multiplied by the current period amortization factor:" - ] - }, - { - "cell_type": "code", - "source": [ - "var currentPeriodAmortizationFactor = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"AM\", Novelty = \"C\" } );", - "\ncurrentPeriodAmortizationFactor" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetValue(new ImportIdentity {DataNode = \"DT1.1\", AocType = \"AM\", Novelty = \"C\" }, (string)null, \"F\", \"L\", (int?)null)" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeferrableActualAM = -currentPeriodAmortizationFactor.Value * (expectedDeferrableActualBOP + expectedDeferrableActualCF);", - "\nexpectedDeferrableActualAM" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected value is compared with the computed result: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualAM.Value == expectedDeferrableActualAM" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualAM.Value.Should().Be( expectedDeferrableActualAM );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## End of Period" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDeferrableActualEOP = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"EOP\", Novelty = \"C\" } );", - "\ncomputedDeferrableActualEOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The deferrable Actual for the AoC step being EOP is the sum of the deferrable Actuals for AoC step BOP, CF, and AM:" - ] - }, - { - "cell_type": "code", - "source": [ - "var deferrableActualBOP = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"BOP\", Novelty = \"I\" } );", - "\ndeferrableActualBOP" - ] - }, - { - "cell_type": "code", - "source": [ - "var deferrableActualCF = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"CF\", Novelty = \"C\" } );", - "\ndeferrableActualCF" - ] - }, - { - "cell_type": "code", - "source": [ - "var deferrableActualAM = Test.GetScope( new ImportIdentity {DataNode = \"DT1.1\", AocType = \"AM\", Novelty = \"C\" } );", - "\ndeferrableActualAM" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDeferrableActualEOP = deferrableActualBOP.Value + deferrableActualCF.Value + deferrableActualAM.Value;", - "\nexpectedDeferrableActualEOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected value is compared with the computed result: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualEOP.Value == expectedDeferrableActualEOP" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDeferrableActualEOP.Value.Should().Be(expectedDeferrableActualEOP);" - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - } - ] -} \ No newline at end of file diff --git a/full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb b/full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb deleted file mode 100644 index d75b5206..00000000 --- a/full-ifrs17-template/Test/SpecificationsImportCashflows.ipynb +++ /dev/null @@ -1,1996 +0,0 @@ -{ - "metadata": { - "authors": [], - "kernelspec": { - "display_name": "Formula Framework", - "language": "C#", - "name": "C#" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/plain", - "name": "C#" - }, - "toc-autonumbering": "True", - "toc-showcode": "False", - "toc-showmarkdowntxt": "False", - "toc-showtags": "False" - }, - "nbformat": 4, - "nbformat_minor": 5, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "

Import Cashflows Specifications

" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The aim of this notebook is to document the calculation of the Present Values and Amortization Factors starting from the nominal Cashflows and the Yearly Yield Curve. These starting data is imported from the corresponding csv files located in the following path Initialization/Systemorph/. The process is pictorially explained in the following flowchart. ", - "\n", - "\n", - "\n
", - "\n", - "\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively." - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Import Data" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Current Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select the target period (i.e. year and month), Reporting Node, Economic Basis, and Data Node based on the imported data:" - ] - }, - { - "cell_type": "code", - "source": [ - "var year = 2021 ;", - "\nvar month = 3 ;", - "\nvar reportingNode = \"CH\" ;", - "\nvar economicBasis = \"C\" ;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Import the Dimensions, Yield Curves and Nominal Cashflows from the corresponding csv files in Initialization/Systemorph/" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"" - ] - }, - { - "cell_type": "code", - "source": [ - "Workspace.InitializeFrom(DataSource);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "[Setup IFRS17 Calculation Engine](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation):" - ] - }, - { - "cell_type": "code", - "source": [ - "#!import \"SpecificationsSetup\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "At this point reference data are loaded. Import now a cashfow file with a 720 elements." - ] - }, - { - "cell_type": "code", - "source": [ - "var groupOfContract = \"GricComplex\";", - "\nawait Import.FromFile(\"Data/CashflowComplex.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Initialization of the Test suite: the data loaded from csv files are ready to be used by the Scopes for the calculations" - ] - }, - { - "cell_type": "code", - "source": [ - "var Test = await StartCalculatorAsync(reportingNode, year, month, economicBasis, Periodicity.Quarterly, ImportFormats.Cashflow);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## View loaded Data Nodes" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The imported active Data Nodes from Initialization/Systemorph/DataNodes.csv are " - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().DataNodeDataBySystemName" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## View loaded Yearly Yield Curve" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here the correct Yield Curve is chosen among those imported from Initialization/Systemorph/Data.csv according to the [current period](#year-and-period) and the Aoc Step according the [Aoc Configuration](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#aoc-configuration). In the following we retrieve the desired identity." - ] - }, - { - "cell_type": "code", - "source": [ - "var aocType = \"CL\";", - "\nvar novelty = \"C\";" - ] - }, - { - "cell_type": "code", - "source": [ - "var id = Test.GetIdentity(groupOfContract, aocType, novelty);" - ] - }, - { - "cell_type": "code", - "source": [ - "var yearlyYieldCurve = Test.GetStorage().GetYearlyYieldCurve(id, economicBasis);" - ] - }, - { - "cell_type": "code", - "source": [ - "yearlyYieldCurve" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## View loaded Nominal Cashflows" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The nominal Cashflows for the current period are loaded together with last period Cashflows for Group of Contract that were already existent. ", - "\n", - "\nThe relative files are located in: Files/.", - "\n", - "\nThe result is showed in the following list to be compared with the entries of the csv files" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetRawVariables(groupOfContract)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Interest and Discount Rates" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Yield Curve ${\\text{YC}_i}$ associated to the the [selected period](#year-and-period) and target currency of the Group of Contract Reporting Node is [displayed above](#view-loaded-yearly-yield-curve) and used in this section to calculate the Interest and Discount factors", - "\n", - "\n$$", - "\n\\text{Interest}_i = \\big( 1 + \\text{YC}_i \\big) ^{\\frac{1}{12}} ~,", - "\n$$", - "\n", - "\nand", - "\n", - "\n\\begin{align}", - "\n\\text{Discount}_i = \\big( 1 + \\text{YC}_i \\big) ^{-\\frac{1}{12}} ~.", - "\n\\end{align}" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the Scope named *MonthlyRate* the Interest and Discount factors are computed" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedMonthlyRates = Test.GetScope( id );" - ] - }, - { - "cell_type": "code", - "source": [ - "computedMonthlyRates" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Interest" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following, the Interest factors computed by the application are recalculated independently according to the formula above in two different ways" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedInterest = yearlyYieldCurve.Select( yc => Math.Pow(1 + yc, 1.0 / 12.0) );", - "\nexpectedInterest" - ] - }, - { - "cell_type": "code", - "source": [ - "from yc in yearlyYieldCurve select Math.Pow(1 + yc, 1.0 / 12.0)" - ] - }, - { - "cell_type": "code", - "source": [ - "computedMonthlyRates.Interest.CheckEquality( expectedInterest ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Discount" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The following recalculates the Discount factors to be compared with the computed values" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDiscount = yearlyYieldCurve.Select( yc => Math.Pow(1 + yc, -1.0 / 12.0) );", - "\nexpectedDiscount" - ] - }, - { - "cell_type": "code", - "source": [ - "computedMonthlyRates.Discount.CheckEquality( expectedDiscount ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Test method: Get Valid Element" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Given the present Yield Curve array has finite *length*, the extrapolation implemented is taking the last element for all successive years. This behavior is given by the function *GetValidElement*. The test in this section assures that constant extrapolation is taken for *index* > *length*" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDiscount.GetValidElement( 120 )" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDiscount.GetValidElement( 120 ).Should().Be( expectedDiscount.Last() );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n# Cashflows" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This section deals with the calculation of the *Cumulated Discounted Cashflows* (CDC) starting from the nominal Cashflows. " - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Choose identity" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Each loaded nominal Cashflows is assigned to a so-called *Identity* which uniquely identifies it based on the *Data Node*, *Aoc Type*, and *Novelty*. In the following cells we retrieve the desired Identity:" - ] - }, - { - "cell_type": "code", - "source": [ - "var aocType = \"CL\";", - "\nvar novelty = \"C\";" - ] - }, - { - "cell_type": "code", - "source": [ - "var id = Test.GetIdentity(groupOfContract, aocType, novelty);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Nominal Cashflow" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Consider the two Amount Type *PR* and *NIC*, with Transaction Period being *Beginning of Period* (BOP) and *End of Period* (EOP), respectively. The corresponding nominal Cashflows are deposited in the Scopes named *NominalCashflow* with the Identity provided above, Calculation Type *BE*, and the aforementioned Amount Types. These nominal Cashflows correspond with those [loaded from the csv files](#view-loaded-nominal-cashflows). " - ] - }, - { - "cell_type": "code", - "source": [ - "var amountTypePR = \"PR\";", - "\nvar amountTypeNIC = \"NIC\";", - "\nvar estimateType = \"BE\";", - "\nvar accidentYear = (int?)null;" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalPR = Test.GetScope((id, amountTypePR, estimateType, accidentYear));" - ] - }, - { - "cell_type": "code", - "source": [ - "nominalPR" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalNIC = Test.GetScope((id, amountTypeNIC, estimateType, accidentYear));" - ] - }, - { - "cell_type": "code", - "source": [ - "nominalNIC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Cumulated Discounted Cashflow" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CDC is defined by the following recursive formulas", - "\n", - "\n$$", - "\n\\text{CDC}_t = \\left\\{", - "\n\\begin{array}{cl}", - "\n\\text{Nominal}_t + \\text{CDC}_{t+1} \\cdot {\\text{Valid Discount}_{\\frac{t}{12}}} ~, & \\text{if Transaction Period is Beginning of Period} \\\\", - "\n\\big( \\text{Nominal}_t + \\text{CDC}_{t+1} \\big) \\cdot {\\text{Valid Discount}_{\\frac{t}{12}}} ~, & \\text{if Transaction Period is End of Period}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nwhere the Transaction Period depends on the given cashflow Amount Type. " - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Beginning of Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Amount Type **Premiums** (PR) has Transaction Period **Beginning of Period** (BOP). The corresponding CDC calculated by the application is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDiscountedPR = Test.GetScope((id, amountTypePR, estimateType, accidentYear));" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedPR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following cell we independently evaluate the expected discounted cashflow according to the formula above:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDiscountedPR = new double[nominalPR.Values.Length];", - "\n", - "\nEnumerable.Range(0, nominalPR.Values.Length).Reverse()", - "\n .ForEach( i => expectedDiscountedPR[i] = nominalPR.Values[i] + expectedDiscountedPR.GetValidElement(i+1) * expectedDiscount.GetValidElement(i/12) );" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDiscountedPR" - ] - }, - { - "cell_type": "code", - "source": [ - "(nominalPR.Values, nominalPR.Values.Length)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected cumulated discount is compared with the computed values" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedPR.Values.CheckEquality( expectedDiscountedPR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedPR.Values.CheckEquality( expectedDiscountedPR ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### End Of Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Amount Type **Non Investment Component** (NIC) has Transaction Period **End of Period** (EOP). The corresponding CDC calculated by the application is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDiscountedNIC = Test.GetScope((id, amountTypeNIC, estimateType, accidentYear));" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedNIC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following cell we independently evaluate the expected discounted cashflow according to the formula above:" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDiscountedNIC = new double[nominalNIC.Values.Length];", - "\n", - "\nEnumerable.Range(0, nominalNIC.Values.Length).Reverse()", - "\n .ForEach( i => expectedDiscountedNIC[i] = ( nominalNIC.Values[i] + expectedDiscountedNIC.GetValidElement(i+1) ) * expectedDiscount.GetValidElement(i/12) );" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedDiscountedNIC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected cumulated discount is compared with the computed values" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedNIC.Values.CheckEquality( expectedDiscountedNIC )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedNIC.Values.CheckEquality( expectedDiscountedNIC ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Non Performance Risk Adjustment" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In this section we treat the determination of the non-performance risk adjustment, an element offsetting partially future", - "\nclaims according to the risk that the reinsurance company cannot fulfil the full extent of its obligations.", - "\n", - "\nFirstly, the discounting recursive relation can be written explicitly as", - "\n", - "\n$$", - "\n\\begin{array}{l}", - "\n\\text{CDC}_t = \\big( \\text{Nominal}_t + \\text{CDC}_{t+1} \\big) \\cdot {\\text{Valid Discount}_{\\frac{t}{12}}} \\\\", - "\n\\Rightarrow \\text{CDC}_t = \\sum_{\\tau=t} \\big( \\text{Valid Discount}_{\\frac{t}{12}} \\big)^{\\tau-t+1} \\cdot \\text{Nominal}_\\tau ", - "\n\\end{array}", - "\n$$", - "\n", - "\nFor nominal Cashflows with Amount Type being *Claims*, the risk-adjusted Cumulated Discounted Cashflow ", - "\nis assigned the Amount Type **Credit Default Risk** (CDR), ", - "\nand is obtained by multiplying the right hand side of the latter formula by the corresponding risk factor", - "\n", - "\n$$", - "\n\\text{CDC}_t^{\\text{Amount Type}=\\text{CDR}} = \\sum_{\\tau=t} \\big( \\text{Valid Discount}_{\\frac{t}{12}} \\big)^{\\tau-t+1} \\cdot \\text{Nominal}_\\tau^{\\text{Claim}} \\cdot \\big( e^{-\\gamma(\\tau-t)} -1 \\big)", - "\n$$", - "\n", - "\nwhere $\\gamma$ is the assumed non-performance probability of the reinsurer to be provided as an [input parameter](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#credit-default-rate).", - "\n", - "\nThis rate is constant for the whole projection period, that is, $\\gamma$ is not a function of $t$. ", - "\nIt effectively amounts to a constant increase in the continuous discount rate by $\\gamma$. " - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Explicit vs recursive formula" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The explicit formula is tested versus the expected result obtained with the recursive formula" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDiscountedNICbis = new double[nominalNIC.Values.Length];", - "\n", - "\n//for(int t = 0; t < 12; t++)", - "\n// for(int tau = t; tau < 12; tau++)", - "\n// expectedDiscountedNICbis[t] += nominalNIC.Values[tau] * Math.Pow(expectedDiscount.GetValidElement(t/12), tau-t+1);", - "\n", - "\nEnumerable.Range(0, nominalNIC.Values.Length)", - "\n .ForEach( i => expectedDiscountedNICbis[i] = ", - "\n Enumerable.Range(i, nominalNIC.Values.Length-i).Select( tau => nominalNIC.Values[tau] * Math.Pow(expectedDiscount.GetValidElement(i/12), tau-i+1) ).Sum() );", - "\n ", - "\nexpectedDiscountedNIC.CheckEquality( expectedDiscountedNICbis )" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Risk Adjusted Claims " - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed CDC with Amount Type being CDR reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedDiscountedCRD = Test.GetScope((id, \"CDR\", estimateType, accidentYear));" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedCRD" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The starting point for the non performance risk adjustment is the computation of the sum of nominal Cashflows with Amount Type **Claims** listed below" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetClaims()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "with the corresponding nominal Cashflows being" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalNIC = Test.GetScope((id, \"NIC\", estimateType, accidentYear));", - "\nnominalNIC" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalICO = Test.GetScope((id, \"ICO\", estimateType, accidentYear));", - "\nnominalICO" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalALE = Test.GetScope((id, \"ALE\", estimateType, accidentYear));", - "\nnominalNIC" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalULE = Test.GetScope((id, \"ULE\", estimateType, accidentYear));", - "\nnominalNIC" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalClaims = Sum( Sum(nominalICO.Values, nominalNIC.Values), Sum(nominalALE.Values, nominalULE.Values) );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Secondly, the correct credit risk rate (parameter $\\gamma$ in the [formula above](#non-performance-risk-adjustment)) is retrieved from the list of imported [Partner Rating](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure) and [Credit Default Rates](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure) relative to the target [Data Node](#year-and-period)'s Partner" - ] - }, - { - "cell_type": "code", - "source": [ - "groupOfContract" - ] - }, - { - "cell_type": "code", - "source": [ - "var creditDefaultRate = Test.GetStorage().GetNonPerformanceRiskRate( id );", - "\ncreditDefaultRate" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Lastly, using the [formula above](#non-performance-risk-adjustment), the expected CDR discounted Cashflow can be computed" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedDiscountedCDR = new double[nominalNIC.Values.Length];", - "\n", - "\nEnumerable.Range(0, nominalClaims.Length).ForEach( t => ", - "\n expectedDiscountedCDR[t] = Enumerable.Range(t, nominalClaims.Length-t).Select( tau => ", - "\n nominalClaims[tau] * Math.Pow(expectedDiscount.GetValidElement(t/12), tau-t+1) * (Math.Exp(-creditDefaultRate*(tau-t)) - 1)", - "\n ).Sum() );", - "\n", - "\nexpectedDiscountedCDR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Finally, the expected cumulated discount is compared with the computed values" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedCRD.Values.CheckEquality( expectedDiscountedCDR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedDiscountedCRD.Values.CheckEquality( expectedDiscountedCDR ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Present Values" - ] - }, - { - "cell_type": "markdown", - "source": [ - "For an implementation of these formulas refer to the [ImportScopeCalculation notebook](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation). " - ] - }, - { - "cell_type": "markdown", - "source": [ - "The company portfolio value in one period is given by the following Analysis of Change AoC steps:", - "\n1. Beginning of Period (BoP): starting value of the portfolio as of December last year (in the Year to Date view), ", - "\n2. Model Corrections (MC): change of the portfolio value based on the model change,", - "\n3. Cash Flow (CF):", - "\n4. Interest Accretion (IA): ", - "\n5. Assumption Update (AU): ", - "\n6. Yield Curve Update (YCU): impact of yield curve update occured during the reporting period,", - "\n7. Credit Risk Update (CRU): impact of credit default rate update occured during the reporting period,", - "\n8. Experience Variance (EV): value adjustments following insurance related events which took place (e.g. mortality),", - "\n9. Combined Liabilities (CL):", - "\n10. End of Period (EOP): portfolio value at the end of the current period.", - "\n", - "\nNote: the AoC steps WO, EA and AM are not included in the Present Value calculation, hence their values if inquired is zero." - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Present Value Base (PVB) values are valid for all [Economic Basis](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#economic-basis) and depends on the corresponding [AoCType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#aoc-type):", - "\n", - "\n$$", - "\n\\text{PVB}_t \\big(\\text{AoC}\\big) = ", - "\n\\left\\{", - "\n\\begin{array}{cl}", - "\n\\text{CDC}_t & \\text{if AoC is Beginning of Period (BOP) } \\\\", - "\n-\\text{Nominal}_t(\\text{Parent AoC}) & \\text{if AoC is Expected Cashflow (CF) } \\\\", - "\n\\text{InterestAccretion}_t & \\text{if AoC is Interest Accretion (IA) } \\\\", - "\n\\text{CDC}_t(\\text{Parent AoC}) & \\text{if AoC is End of Period (EOP) } \\\\", - "\n\\text{CDC}_{t}(\\text{current AoC}) - \\text{CDC}_{t}(\\text{parent AoC}) & \\text{otherwise}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nand the Projected Present Value (PPV) reads", - "\n", - "\n$$", - "\n\\text{PPV} \\big(\\text{AoC},\\text{TS},\\text{S}\\big) = \\left\\{", - "\n\\begin{array}{cll}", - "\n\\text{PVB}_{S} & \\text{if AoC Valuation Period is Beginning of Period } & \\text{ (e.g. BOP, MC) } \\\\", - "\n\\text{PVB}_{S+TS/2 -1} & \\text{if AoC Valuation Period is Mid of Period } & \\text{ (no examples in current data model) } \\\\", - "\n\\sum_{i=S}^{S + TS -1}\\text{PVB}_{i} & \\text{if AoC Valuation Period is Delta } & \\text{ (e.g. CF, IA) } \\\\", - "\n\\text{PVB}_{S + TS} & \\text{if AoC Valuation Period is End of Period } & \\text{ (e.g. YCU, CRU, EV, CL, EOP) } \\\\", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nwhere the Shift (S) and Time Step (TS) are derived from the current [Year and Period](#year-and-period)" - ] - }, - { - "cell_type": "code", - "source": [ - "var projectionPeriod = 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetShift(projectionPeriod)" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetTimeStep(projectionPeriod)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Load Cashflow Data" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" - ] - }, - { - "cell_type": "code", - "source": [ - "Workspace.InitializeFrom(DataSource);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "At this point standard Cashflows are loaded." - ] - }, - { - "cell_type": "markdown", - "source": [ - "Initialization of the Test suite: the data loaded from csv files are ready to be used by the Scopes for the calculations" - ] - }, - { - "cell_type": "code", - "source": [ - "var Test = await StartCalculatorAsync(reportingNode, year, month, economicBasis, Periodicity.Quarterly, ImportFormats.Cashflow);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Select Group of Contract", - "\n", - "\nHere, it is possible to select the Group of Contract used to run the next section of this Notebook." - ] - }, - { - "cell_type": "code", - "source": [ - "groupOfContract = \"DTR1.1\" ;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Beginning of Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Beginning of Period is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idBoP = Test.GetIdentity(groupOfContract, \"BOP\", \"I\");", - "\nidBoP" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueBoP_PR = Test.GetScope((idBoP, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueBoP_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#present-values) above, the expected BOP AoCType for PVB is defined to be equal to the discounted cashflows with the same Identity, Amount Type, and Calculation Type, whereas the PPV is the S-th element of the PVB." - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedBoP_PR = Test.GetScope((idBoP, \"PR\", \"BE\", (int?)null));", - "\ndiscountedBoP_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueBoP_PR = discountedBoP_PR.Values;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following cell we check whether the expected values match the computed values" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueBoP_PR.Values.CheckEquality( expectedPresentValueBoP_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueBoP_PR.Values.CheckEquality( expectedPresentValueBoP_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Model Corrections" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Model Corrections is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idMC = Test.GetIdentity(groupOfContract, \"MC\", \"I\");", - "\nidMC" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueMC_PR = Test.GetScope((idMC, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueMC_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#present-values) above, for MC AoCType, the PVB is equal to the difference between the CDC of the current AoCType and the CDC of its parent. Additionally, the PPV is the S-th element of the PVB." - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetScope((idMC, \"PR\")).Values" - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedMC_PR = Test.GetScope((idMC, \"PR\", \"BE\", (int?)null));", - "\ndiscountedMC_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueMC_PR = Subtract(discountedMC_PR.Values, discountedBoP_PR.Values);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueMC_PR.Values.CheckEquality( expectedPresentValueMC_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueMC_PR.Value == expectedPresentValueMC_PR[0]" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueMC_PR.Values.CheckEquality( expectedPresentValueMC_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueMC_PR.Value.Should().Be( expectedPresentValueMC_PR[0] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Cashflow" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Cashflow is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idCF = Test.GetIdentity(groupOfContract, \"CF\", \"I\");", - "\nidCF" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueCF_PR = Test.GetScope((idCF, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueCF_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#present-values) above, for CF AoCType, the PVB is equal to the nominal cashflow of its parent AoC step with opposite sign. The PPV is given by the sum of the first 3 elements." - ] - }, - { - "cell_type": "code", - "source": [ - "var cfReferenceAocStep = Test.GetScope(idCF).Value;", - "\ncfReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var cfNominalReference_PR = Test.GetScope((idCF with {AocType = cfReferenceAocStep.AocType}, \"PR\", \"BE\", (int?)null));", - "\ncfNominalReference_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueCF_PR = Multiply(-1.0, cfNominalReference_PR.Values);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCF_PR.Values.CheckEquality( expectedPresentValueCF_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCF_PR.Values[0] + computedPresentValueCF_PR.Values[1] + computedPresentValueCF_PR.Values[2] == computedPresentValueCF_PR.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCF_PR.Values.CheckEquality( expectedPresentValueCF_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCF_PR.Value.Should().Be( computedPresentValueCF_PR.Values[0] + computedPresentValueCF_PR.Values[1] + computedPresentValueCF_PR.Values[2] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Interest Accretion" - ] - }, - { - "cell_type": "markdown", - "source": [ - "For IA AoCType, the PVB is given by the following relation ", - "\n", - "\n$$", - "\n\\text{InterestAccretion}_i = \\left\\{", - "\n\\begin{array}{cl}", - "\n\\big(\\text{CDC}_i(\\text{Parent AoC}) - \\text{Nominal}_i(\\text{parent AoC}) \\big) \\cdot \\big({\\text{Valid Interest}_{\\frac{i}{12}}} - 1 \\big)~, ", - "\n & \\text{if AmountType Transaction Period is Beginning of Period} \\\\", - "\n\\text{CDC}_i(\\text{parent AoC}) \\cdot \\big({\\text{Valid Interest}_{\\frac{i}{12}}} - 1 \\big)~, ", - "\n & \\text{otherwise}", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nwhile the PPV is given by the sum of the first S elements.", - "\n", - "\nWhen selecting the Identity, note that the Novelty *C* is not contemplated for Interest Accretion." - ] - }, - { - "cell_type": "code", - "source": [ - "var idIA = Test.GetIdentity(groupOfContract, \"IA\", \"I\");", - "\nidIA" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Amount Type BOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Amount Type **Premiums** (PR) with Transaction Period **Beginning of Period** (BOP) is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueIA_PR = Test.GetScope((idIA, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueIA_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Present Value can be recomputed independently following the aforementioned [equation](#interest-accretion) starting from the interest factors, the nominal and discounted Cashflow of the parent Aoc Step" - ] - }, - { - "cell_type": "code", - "source": [ - "var iaComputedMonthlyRates = Test.GetScope( idIA );", - "\niaComputedMonthlyRates" - ] - }, - { - "cell_type": "code", - "source": [ - "var iaReferenceAocStep = Test.GetScope(idIA).Value;", - "\niaReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalIaReference_PR = Test.GetScope((idIA with {AocType = iaReferenceAocStep.AocType}, \"PR\", \"BE\", (int?)null));", - "\nnominalIaReference_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedIaReference_PR = Test.GetScope((idIA with {AocType = iaReferenceAocStep.AocType}, \"PR\", \"BE\", (int?)null));", - "\ndiscountedIaReference_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueIA_PR = discountedIaReference_PR.Values.Select((val, index) => ( val - nominalIaReference_PR.Values[index]) * ( iaComputedMonthlyRates.Interest.GetValidElement(index/12) -1));" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_PR.Values.CheckEquality( expectedPresentValueIA_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_PR.Values[0] + computedPresentValueIA_PR.Values[1] + computedPresentValueIA_PR.Values[2] == computedPresentValueIA_PR.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_PR.Values.CheckEquality( expectedPresentValueIA_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_PR.Value.Should().Be( computedPresentValueIA_PR.Values[0] + computedPresentValueIA_PR.Values[1] + computedPresentValueIA_PR.Values[2] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Amount Type EOP" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Amount Type **Non Investment Component** (NIC) with Transaction Period **End of Period** (EOP) is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueIA_NIC = Test.GetScope((idIA, \"NIC\", \"BE\", (int?)null));", - "\ncomputedPresentValueIA_NIC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Present Value can be recomputed independently following the aforementioned [equation](#interest-accretion) starting from the interest monthly rates, the discounted Cashflow of the parent Aoc Step" - ] - }, - { - "cell_type": "code", - "source": [ - "var iaReferenceAocStep = Test.GetScope(idIA).Value;", - "\niaReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedIaReference_NIC = Test.GetScope((idIA with {AocType = iaReferenceAocStep.AocType}, \"NIC\", \"BE\", (int?)null));", - "\ndiscountedIaReference_NIC" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueIA_NIC = discountedIaReference_NIC.Values.Select((val, index) => val * ( iaComputedMonthlyRates.Interest.GetValidElement(index/12) -1));" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_NIC.Values.CheckEquality( expectedPresentValueIA_NIC )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_NIC.Values[0] + computedPresentValueIA_NIC.Values[1] + computedPresentValueIA_NIC.Values[2] == computedPresentValueIA_NIC.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_NIC.Values.CheckEquality( expectedPresentValueIA_NIC ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueIA_NIC.Value.Should().Be( computedPresentValueIA_NIC.Values[0] + computedPresentValueIA_NIC.Values[1] + computedPresentValueIA_NIC.Values[2] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Yield Curve Update" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Yield Curve Update is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idYcu = Test.GetIdentity(groupOfContract, \"YCU\", \"I\");", - "\nidYcu" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueYCU_PR = Test.GetScope((idYcu, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueYCU_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Present Value can be recomputed independently following the aforementioned [equation](#interest-accretion) starting from the discount factors for beginning of period and for end of period applied to the reference Aoc step, followed by the difference between the CDC obtained with end of period discount factor and the CDC obtained with beginning of period discount factor. " - ] - }, - { - "cell_type": "code", - "source": [ - "var ycReferenceAocStep = Test.GetScope(idYcu).Value;", - "\nycReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var ycParentAocStep = Test.GetScope((idYcu, \"PR\")).Values.Single();", - "\nycParentAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var ycParentId = idYcu with {AocType = ycParentAocStep.AocType, Novelty = ycParentAocStep.Novelty};", - "\nycParentId" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here is the parent AocStep discounted with the beginning of period discount factor." - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedYcParent = Test.GetScope((ycParentId, \"PR\", \"BE\", (int?)null));", - "\ndiscountedYcParent" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here we independently compute the CDC of the parent AocStep discounted with end of period discount factor." - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalYcParent = Test.GetScope((ycParentId, \"PR\", \"BE\", (int?)null));", - "\nnominalYcParent" - ] - }, - { - "cell_type": "code", - "source": [ - "var ycComputedMonthlyRates = Test.GetScope( idYcu );", - "\nycComputedMonthlyRates" - ] - }, - { - "cell_type": "code", - "source": [ - "var ycReferenceDiscountedEop = new double[nominalYcParent.Values.Length];", - "\n", - "\nEnumerable.Range(0, nominalYcParent.Values.Length).Reverse()", - "\n .ForEach( i => ycReferenceDiscountedEop[i] = nominalYcParent.Values[i] + ycReferenceDiscountedEop.GetValidElement(i+1) * ycComputedMonthlyRates.Discount.GetValidElement(i/12) );", - "\nycReferenceDiscountedEop" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueYCU_PR = Subtract(ycReferenceDiscountedEop, discountedYcParent.Values);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueYCU_PR.Values.CheckEquality( expectedPresentValueYCU_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueYCU_PR.Value == expectedPresentValueYCU_PR[3]" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueYCU_PR.Values.CheckEquality( expectedPresentValueYCU_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueYCU_PR.Value.Should().Be( expectedPresentValueYCU_PR[3] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Credit Risk Update" - ] - }, - { - "cell_type": "markdown", - "source": [ - "This Aoc Step is relevant only in the case of a Group of Reinsurance Contract." - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Credit Risk Update is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idCru = Test.GetIdentity(groupOfContract, \"CRU\", \"I\");", - "\nidCru" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueCRU = Test.GetScope((idCru, \"CDR\", \"BE\", (int?)null));", - "\ncomputedPresentValueCRU" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Present Value can be recomputed independently starting as the difference between the CDC obtained with end of period credit default risk rate and the CDC obtained with beginning of period credit default risk rate, both computed using the Nominal cashflow of the reference Aoc Step and the End Of Period discounting factors. " - ] - }, - { - "cell_type": "code", - "source": [ - "var cruReferenceAocStep = Test.GetScope(idCru).Value;", - "\ncruReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var cruReferenceId = idCru with {AocType = cruReferenceAocStep.AocType, Novelty = cruReferenceAocStep.Novelty};", - "\ncruReferenceId" - ] - }, - { - "cell_type": "code", - "source": [ - "var cruParentAocStep = Test.GetScope((idCru, \"CDR\")).Values.Single();", - "\ncruParentAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var cruParentId = idCru with {AocType = cruParentAocStep.AocType, Novelty = cruParentAocStep.Novelty};", - "\ncruParentId" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here is the parent AocStep discounted with beginning of period credit default risk rate." - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedCruParent = Test.GetScope((cruParentId, \"CDR\", \"BE\", (int?)null));", - "\ndiscountedCruParent" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalCruReference = Test.GetScope((cruReferenceId, \"CDR\", \"BE\", (int?)null)).Values;", - "\nnominalCruReference" - ] - }, - { - "cell_type": "code", - "source": [ - "var creditDefaultRate = Test.GetStorage().GetNonPerformanceRiskRate( idCru );", - "\ncreditDefaultRate" - ] - }, - { - "cell_type": "code", - "source": [ - "var cruComputedMonthlyRates = Test.GetScope( idCru );", - "\ncruComputedMonthlyRates" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Lastly, using the [formula above](#non-performance-risk-adjustment), the expected CDR discounted Cashflow can be computed" - ] - }, - { - "cell_type": "code", - "source": [ - "var cruExpectedDiscountedCDR = new double[nominalCruReference.Length];", - "\n", - "\nEnumerable.Range(0, nominalCruReference.Length).ForEach( t => ", - "\n cruExpectedDiscountedCDR[t] = Enumerable.Range(t, nominalCruReference.Length-t).Select( tau => ", - "\n nominalCruReference[tau] * ", - "\n Math.Pow(cruComputedMonthlyRates.Discount.GetValidElement(t/12), tau-t+1) * ", - "\n (Math.Exp(-creditDefaultRate*(tau-t)) - 1)", - "\n ).Sum() );", - "\n", - "\ncruExpectedDiscountedCDR" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueCRU = Subtract(cruExpectedDiscountedCDR, discountedCruParent.Values);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCRU.Values.CheckEquality( expectedPresentValueCRU )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCRU.Value == expectedPresentValueCRU[3]" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCRU.Values.CheckEquality( expectedPresentValueCRU ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCRU.Value.Should().Be( expectedPresentValueCRU[3] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Combined Liabilities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type Combined Liabilities and Amount Type PR is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idCL = Test.GetIdentity(groupOfContract, \"CL\", \"C\");", - "\nidCL" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueCL_PR = Test.GetScope((idCL, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueCL_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#present-values) above, for CL AoCType, the PVB is equal to the difference between the CDC of the current AoCType and the CDC of its parent(s). Additionally, the PPV is the $(\\text{S}+\\text{TS})$-th element of the PVB." - ] - }, - { - "cell_type": "code", - "source": [ - "var clParents = Test.GetScope((idCL,\"PR\")).Values;", - "\nclParents" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueCL_PR = Subtract(Test.GetScope((idCL, \"PR\", \"BE\", (int?)null)).Values,", - "\n clParents.Select(aocStep => Test.GetScope((idCL with {AocType = aocStep.AocType, Novelty = aocStep.Novelty}, \"PR\", \"BE\", (int?)null)).Values).Aggregate());" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCL_PR.Values.CheckEquality( expectedPresentValueCL_PR )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCL_PR.Value == expectedPresentValueCL_PR[3]" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCL_PR.Values.CheckEquality( expectedPresentValueCL_PR ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueCL_PR.Value.Should().Be( expectedPresentValueCL_PR[3] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## End of Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed Present Value for Aoc type End of Period is:" - ] - }, - { - "cell_type": "code", - "source": [ - "var idEOP = Test.GetIdentity(groupOfContract, \"EOP\", \"C\");", - "\nidEOP" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueEOP_NIC = Test.GetScope((idEOP, \"NIC\", \"BE\", (int?)null));", - "\ncomputedPresentValueEOP_NIC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#present-values) above, for EOP AoCType, the PVB is equal to the CDC of the parent AoC step, while the PPV is the $(\\text{S}+\\text{TS})$-th element of the PVB." - ] - }, - { - "cell_type": "code", - "source": [ - "var eopReferenceAocStep = Test.GetScope(idEOP).Value;", - "\neopReferenceAocStep" - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedCL_NIC = Test.GetScope((idEOP with {AocType = eopReferenceAocStep.AocType, Novelty = eopReferenceAocStep.Novelty}, \"NIC\", \"BE\", (int?)null));", - "\ndiscountedCL_NIC" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedPresentValueEOP_NIC = discountedCL_NIC.Values;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The expected PVB and PPV are compared with the computed results in the following two cells: " - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueEOP_NIC.Values.CheckEquality( expectedPresentValueEOP_NIC )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueEOP_NIC.Value == expectedPresentValueEOP_NIC[3]" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueEOP_NIC.Values.CheckEquality( expectedPresentValueEOP_NIC ).Should().Be(true);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedPresentValueEOP_NIC.Value.Should().Be( expectedPresentValueEOP_NIC[3] );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Check for zero PVB values" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Amortization" - ] - }, - { - "cell_type": "markdown", - "source": [ - "For AM AoCType, the PVB values are zero, i.e. Amortization is not part of the Present Value computation. In this subsection we check whether the corresponding values are zero accordingly. " - ] - }, - { - "cell_type": "code", - "source": [ - "var idAM = Test.GetIdentity(groupOfContract, \"AM\", \"C\");", - "\nidAM" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueAM_PR = Test.GetScope((idAM, \"PR\", \"BE\", (int?)null));", - "\ncomputedPresentValueAM_PR" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedPresentValueAM_PR = Test.GetScope((idAM, \"NIC\", \"BE\", (int?)null));", - "\ncomputedPresentValueAM_PR" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Amortization Factors" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The amortization factors (AMF) are calculated from the corresponding Nominal and Discounted Cashflows with Calculation Type being *Coverage Units* (CU). ", - "\nThe monthly AMF is", - "\n", - "\n$$", - "\n\\text{AMF}^{\\text{Monthly}}_t = 1 - \\frac{ \\text{Nominal}^{\\text{Coverage Units}}_t } { \\text{CDC}^{\\text{Coverage Units}}_t } ~,", - "\n$$", - "\n", - "\nwhile the AMF related to the current period is", - "\n", - "\n$$", - "\n\\text{AMF} = 1 - \\prod _{t = \\text{S}}^{\\text{S}+\\text{TS}-1} \\text{AMF}^{\\text{Monthly}}_t ~.", - "\n$$", - "\n", - "\nwhere the shift S and Time Step TS for the [current period](#year-and-period) are" - ] - }, - { - "cell_type": "code", - "source": [ - "var projectionPeriod = 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var shift = Test.GetStorage().GetShift(projectionPeriod);", - "\nshift" - ] - }, - { - "cell_type": "code", - "source": [ - "var timeStep = Test.GetStorage().GetTimeStep(projectionPeriod);", - "\ntimeStep" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Monthly Amortization" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed monthly and current period Amortization Factors derived from a non-zero [imported](#year-and-period) nominal cashflows and its corresponding discounted are shown in the following" - ] - }, - { - "cell_type": "code", - "source": [ - "var idAM = Test.GetIdentity(groupOfContract, \"CL\", \"C\");", - "\nidAM" - ] - }, - { - "cell_type": "code", - "source": [ - "var nominalCashflowAmortizationFactorTest = Test.GetScope( (idAM, default(string), \"CU\", (int?)null) );", - "\nnominalCashflowAmortizationFactorTest" - ] - }, - { - "cell_type": "code", - "source": [ - "var discountedCashflowAmortizationFactorTest = Test.GetScope(idAM);", - "\ndiscountedCashflowAmortizationFactorTest" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedMonthlyAmortizationFactor = Test.GetScope(idAM with {AocType = \"AM\"});", - "\ncomputedMonthlyAmortizationFactor" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the following cell we independently evaluate the expected monthly amortization factor according to the [formula above](#amortization-factor) and we check whether expected vs computed match" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedMonthlyAmortizationFactor = nominalCashflowAmortizationFactorTest.Values.Zip(discountedCashflowAmortizationFactorTest.Values, ", - "\n (nominal, discountedCumulated) => 1 - nominal / discountedCumulated ).ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedMonthlyAmortizationFactor.RepeatOnce()" - ] - }, - { - "cell_type": "code", - "source": [ - "computedMonthlyAmortizationFactor.MonthlyAmortizationFactors.CheckEquality( expectedMonthlyAmortizationFactor )" - ] - }, - { - "cell_type": "code", - "source": [ - "computedMonthlyAmortizationFactor.MonthlyAmortizationFactors.CheckEquality( expectedMonthlyAmortizationFactor ).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Current Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The computed current period amortization factor is" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedCurrentPeriodAmortizationFactor = Test.GetScope(idAM with {AocType = \"AM\"});", - "\ncomputedCurrentPeriodAmortizationFactor" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely, the current period Amortization factor can be independently computed using the [formula above](#amortization-factor) as" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedCurrentPeriodAmortizationFactor = 1d - expectedMonthlyAmortizationFactor.Skip(shift).Take(timeStep).Aggregate(1d, (x, y) => x * y);" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedCurrentPeriodAmortizationFactor" - ] - }, - { - "cell_type": "code", - "source": [ - "computedCurrentPeriodAmortizationFactor.Value == expectedCurrentPeriodAmortizationFactor" - ] - }, - { - "cell_type": "code", - "source": [ - "computedCurrentPeriodAmortizationFactor.Value.Should().Be( expectedCurrentPeriodAmortizationFactor );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Results persisted" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The last step during the Cashflow import is to save, namely *persist* the Present Values computed with *locked* (L) and *current* (C) economic basis, and calculation type being *Best Estimate* (BE). ", - "\n", - "\nThese data is the starting point of the [Contractual Service Margin calculation](\"SpecificationsCSM\")." - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - } - ] -} \ No newline at end of file diff --git a/full-ifrs17-template/Test/SpecificationsSetup.ipynb b/full-ifrs17-template/Test/SpecificationsSetup.ipynb deleted file mode 100644 index b9f1e2f4..00000000 --- a/full-ifrs17-template/Test/SpecificationsSetup.ipynb +++ /dev/null @@ -1,125 +0,0 @@ -{ - "metadata": { - "authors": [], - "kernelspec": { - "display_name": "Formula Framework", - "language": "C#", - "name": "C#" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/plain", - "name": "C#" - }, - "toc-autonumbering": "True", - "toc-showcode": "False" - }, - "nbformat": 4, - "nbformat_minor": 5, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "

Specifications Setup

" - ] - }, - { - "cell_type": "code", - "source": [ - "public interface Universe : IMutableScopeWithStorage{}", - "\n", - "\npublic async Task StartCalculatorAsync(string reportingNode, int year, int month, string economicBasis, Periodicity period, string format) ", - "\n{", - "\n ", - "\n var importArgs = new ImportArgs(reportingNode, year, month, period, null, format);", - "\n Workspace.Reset();", - "\n Workspace.Initialize(x => x.FromSource(DataSource)", - "\n .DisableInitialization()", - "\n .DisableInitialization());", - "\n", - "\n var partition = (await DataSource.Query().Where(p => p.ReportingNode == importArgs.ReportingNode &&", - "\n p.Year == importArgs.Year &&", - "\n p.Month == importArgs.Month &&", - "\n p.Scenario == importArgs.Scenario", - "\n ).ToArrayAsync()).Single().Id;", - "\n await DataSource.Partition.SetAsync(partition);", - "\n", - "\n //Set Workspace as when the parsing is completed.", - "\n if(importArgs.ImportFormat == ImportFormats.Actual)", - "\n { ", - "\n await Workspace.UpdateAsync(await DataSource.Query()", - "\n .Where(x => x.Partition == partition && ", - "\n new string[]{EstimateTypes.A, EstimateTypes.AA, EstimateTypes.OA}.Contains(x.EstimateType) && ", - "\n new string[]{AocTypes.CF, AocTypes.WO}.Contains(x.AocType))", - "\n .ToArrayAsync());", - "\n }", - "\n else if(importArgs.ImportFormat == ImportFormats.Opening)", - "\n { ", - "\n await Workspace.UpdateAsync(await DataSource.Query()", - "\n .Where(x => x.Partition == partition && ", - "\n new string[]{ EstimateTypes.C, EstimateTypes.L, EstimateTypes.LR, EstimateTypes.AA, EstimateTypes.OA, EstimateTypes.DA}.Contains(x.EstimateType) && ", - "\n x.AocType == AocTypes.BOP && x.Novelty == Novelties.I)", - "\n .ToArrayAsync());", - "\n }", - "\n else", - "\n {", - "\n await Workspace.UpdateAsync(await DataSource.Query().Where(x => x.Partition == partition).ToArrayAsync());", - "\n }", - "\n var storage = new ImportStorage(importArgs, DataSource, Workspace);", - "\n await storage.InitializeAsync();", - "\n return Scopes.ForStorage(storage).WithContext(economicBasis).ToScope();", - "\n}", - "\n", - "\npublic static ImportIdentity GetIdentity (this Universe universe, string dataNode, string aocType, string novelty) ", - "\n => universe.GetScope(dataNode).Identities.Single( x => x.AocType == aocType && x.Novelty == novelty );", - "\n", - "\nstatic T GetValidElement(this IList array, int index) => GetElementOrDefault(array, index);", - "\n", - "\nstatic T GetValidElement(this IEnumerable array, int index) => GetElementOrDefault(array.ToArray(), index);", - "\n", - "\nstatic void ForEach(this IEnumerable self, Action action) => self.ToList().ForEach(action);", - "\n", - "\npublic static IfrsVariable FromPvToIfrsVariable(this PresentValue scope)", - "\n => new IfrsVariable{ EconomicBasis = scope.EconomicBasis, ", - "\n EstimateType = scope.Identity.EstimateType, ", - "\n DataNode = scope.Identity.Id.DataNode, ", - "\n AocType = scope.Identity.Id.AocType, ", - "\n Novelty = scope.Identity.Id.Novelty, ", - "\n AccidentYear = scope.Identity.AccidentYear,", - "\n AmountType = scope.Identity.AmountType,", - "\n Value = scope.Value,", - "\n Partition = scope.GetStorage().TargetPartition };", - "\n", - "\npublic static IfrsVariable FromCsmToIfrsVariable(this ContractualServiceMargin scope)", - "\n => new IfrsVariable{ EstimateType = scope.EstimateType, ", - "\n DataNode = scope.Identity.DataNode, ", - "\n AocType = scope.Identity.AocType, ", - "\n Novelty = scope.Identity.Novelty, ", - "\n Value = scope.Value,", - "\n Partition = scope.GetStorage().TargetPartition };", - "\n", - "\npublic static IfrsVariable FromLcToIfrsVariable(this LossComponent scope)", - "\n => new IfrsVariable{ EstimateType = scope.EstimateType, ", - "\n DataNode = scope.Identity.DataNode, ", - "\n AocType = scope.Identity.AocType, ", - "\n Novelty = scope.Identity.Novelty, ", - "\n Value = scope.Value,", - "\n Partition = scope.GetStorage().TargetPartition };", - "\n", - "\npublic static IfrsVariable FromLoReCoToIfrsVariable(this LossRecoveryComponent scope)", - "\n => new IfrsVariable{ EstimateType = scope.EstimateType, ", - "\n DataNode = scope.Identity.DataNode, ", - "\n AocType = scope.Identity.AocType, ", - "\n Novelty = scope.Identity.Novelty, ", - "\n Value = scope.Value,", - "\n Partition = scope.GetStorage().TargetPartition };" - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - } - ] -} \ No newline at end of file diff --git a/full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb b/full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb deleted file mode 100644 index f8cc0f73..00000000 --- a/full-ifrs17-template/Test/SpecificationsTechnicalMargin.ipynb +++ /dev/null @@ -1,1768 +0,0 @@ -{ - "metadata": { - "authors": [], - "kernelspec": { - "display_name": "Formula Framework", - "language": "C#", - "name": "C#" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/plain", - "name": "C#" - }, - "toc-autonumbering": "True", - "toc-showcode": "False" - }, - "nbformat": 4, - "nbformat_minor": 5, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "

Technical Margin Specifications

" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The aim of this notebook is to document the Technical Margin (TM) and its allocation to the Contractual Service Margin (CSM), Loss Component (LC), or Loss Recovery Component (LoReCo). The process is pictorially explained in the following flowchart. ", - "\n", - "\n", - "\n
", - "\n", - "\nThroughout this notebook we adopt the following variable notation: we use the words *computed* vs. *expected* to differentiate the results provided by the application vs. this test notebook, respectively." - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Import Data" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Current Period" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select the target period (i.e. year and month) and Reporting Node based on the imported data:" - ] - }, - { - "cell_type": "code", - "source": [ - "var year = 2021 ;", - "\nvar month = 3 ;", - "\nvar reportingNode = \"CH\" ;", - "\nvar economicBasis = \"L\" ;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Import the Dimensions, Parameters, Nominal Cashflows, and Actuals from the corresponding csv files in Initialization/Systemorph/" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "[Setup IFRS17 Calculation Engine](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation):" - ] - }, - { - "cell_type": "code", - "source": [ - "#!import \"SpecificationsSetup\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Initialization of the Test Suite: the data loaded from csv files are ready to be used by the Scopes for the calculations" - ] - }, - { - "cell_type": "code", - "source": [ - "var Test = await StartCalculatorAsync(reportingNode, year, month, economicBasis, Periodicity.Quarterly, ImportFormats.Cashflow);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## View loaded Data Nodes" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The imported active Data Nodes from Initialization/Systemorph/DataNodes.csv are " - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().DataNodeDataBySystemName" - ] - }, - { - "cell_type": "markdown", - "source": [ - "whereas the Data Nodes of your imported Cashflows are" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().DataNodesByImportScope[ImportScope.Primary]" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Please select here below the target Data Node for executing the tests below:" - ] - }, - { - "cell_type": "code", - "source": [ - "var dataNode = \"DT1.1\";" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## View list of Identities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Based on the Cashflows imported, the list of all possible identities, i.e. combinations of valid Data Nodes, Aoc steps, and Novelties, is contructed and reported here below:" - ] - }, - { - "cell_type": "code", - "source": [ - "var allIdentities = Test.GetScopes(Test.GetStorage().DataNodesByImportScope[ImportScope.Primary]).SelectMany(s => s.Identities).ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "allIdentities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Present Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Projected Present Values (PPVs) are calculated for each Amount Type (AT) either with the *locked-in* (L) and with the *current* (C) Yield Curves. While the former is the latest available as per end of the DataNode's inception year, the latter is the latest available as per the current period. ", - "\nPPVs for both Economic Basis L and C have been defined [here](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#present-value) and tested [here](SpecificationsImportCashflows#present-values). ", - "\n", - "\nAccording to the BBA methodology, the CSM calculation uses the PV with locked-in Yield Curve simply defined as", - "\n", - "\n$$", - "\n\\text{PV Locked}(\\text{AoC}, \\text{AT}) = \\text{PPV}(\\text{AoC}, \\text{AT}) \\big|_{\\substack{ \\text{Calculation Type = BE} \\\\ \\text{Economic Base = L} } }", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "var pvsLocked = allIdentities.SelectMany(id => Test.GetScope(id).PresentValues", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", - "\n .Select(x => x.FromPvToIfrsVariable())).ToArray();" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Below a view of the computed locked-in PV " - ] - }, - { - "cell_type": "code", - "source": [ - "Report.ForObjects(pvsLocked)", - "\n .WithQuerySource(Workspace)", - "\n .GroupColumnsBy(x => x.EconomicBasis)", - "\n .GroupColumnsBy(x => x.AmountType)", - "\n .GroupRowsBy(x => x.Novelty)", - "\n .GroupRowsBy(x => x.AocType)", - "\n .WithGridOptionsForIfrsVariable()", - "\n .ToReport()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Aggregated values are also available as the sum over all [Amount Types](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#amount-type):", - "\n", - "\n$$", - "\n\\text{PV Locked Value}(\\text{AoC}) = \\sum_{\\text{AT}} \\text{PV Locked}(\\text{AoC}, \\text{AT})", - "\n$$" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here below an example" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_BoP_I = Test.GetIdentity(dataNode, \"BOP\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_BoP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetScope( id_BoP_I ).Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Risk Adjustment" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CSM calculation also uses locked-in Risk Adjustment (RA Locked) which is retrieved from the corresponding Present Value with [Calculation Type](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#calculation-type) being RA defined [here](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#present-value) and tested [here](SpecificationsImportCashflows#present-values). ", - "\n", - "\nRisk Adjustment values can be written as", - "\n", - "\n$$", - "\n\\text{RA Locked Value}(\\text{AoC}) = \\text{PV}(\\text{AoC})|_{\\substack{ \\text{Calculation Type = RA} \\\\ \\text{Economic Base = L} }}", - "\n$$", - "\n", - "\nwhere the imported Cashflows for the RA Calculation Type are already aggregated over all [Amount Types](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#amount-type)." - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here below an example" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_BoP_I = Test.GetIdentity(dataNode, \"BOP\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_BoP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetScope( id_BoP_I ).Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The RA Locked per Data Node imported are" - ] - }, - { - "cell_type": "code", - "source": [ - "var rasLocked = allIdentities.SelectMany(id => Test.GetScope(id).PresentValues", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", - "\n .Select(x => x.FromPvToIfrsVariable())).ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "Report.ForObjects(rasLocked)", - "\n .WithQuerySource(Workspace)", - "\n .GroupColumnsBy(x => x.EconomicBasis)", - "\n .GroupColumnsBy(x => x.DataNode)", - "\n .GroupRowsBy(x => x.Novelty)", - "\n .GroupRowsBy(x => x.AocType)", - "\n .WithGridOptionsForIfrsVariable()", - "\n .ToReport()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Technical Margin" - ] - }, - { - "cell_type": "markdown", - "source": [ - "For the computation of the CSM or LC components for each AoC step, it is convenient to introduce the notion of technical margin (TM).", - "\n", - "\nFirstly, it is useful to define the so-called Aggregated Technical Margin (ATM)", - "\n", - "\n$$", - "\n\\text{ATM} (\\text{AoC}) = \\sum_{s\\in\\text{previous AoC steps}} \\text{TM}(s) ~,", - "\n$$", - "\n", - "\nand the Interest Accretion Factor (IAF) ", - "\n", - "\n$$", - "\n\\text{IAF} = \\prod_{i=1}^{\\text{TS}} (1 + \\text{YC}_i) - 1 ~.", - "\n$$", - "\n", - "\nThe TM is defined as", - "\n", - "\n$$", - "\n\\text{TM}(\\text{AoC}) = \\left\\{", - "\n\\begin{array}{rl}", - "\n\\text{TM}(\\rm{EOP}) \\text{ of the previous period} ~ & \\text{if }s = \\text{BOP and Novelty is In-Force}. \\\\", - "\n0 ~ & \\text{if }s = \\text{CF}. \\\\", - "\n\\text{IAF} \\cdot ~ \\text{ATM}(\\text{AoC}) ~ & \\text{if }s = \\text{IA}. \\\\", - "\n\\rm{Premiums} + \\text{Attributable Expense and Commissions} + \\text{Investment Claims} ~ & \\text{if }s = \\text{EA}. \\\\", - "\n-\\text{AMF} \\cdot ~ \\text{ATM}(\\text{AoC}) ~ & \\text{if }s = \\text{AM}. \\\\", - "\n\\text{PV Locked Value}(\\text{AoC}) ", - "\n\\bigg|_{\\substack{\\text{Non Attributable} \\\\ ", - "\n \\text{Amount Types} \\\\ ", - "\n \\text{excluded}}} ", - "\n+ \\text{RA Locked Value}(\\text{AoC}) ~ & \\text{otherwise} ", - "\n\\end{array}", - "\n\\right.", - "\n$$", - "\n", - "\nwhere AMF is the Amortization Factor that is defined [here](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#amortization-factor) and tested [here](SpecificationsImportCashflows#amortization-factor), with YC being the [Yield Curve](#yield-curves) and TS is the Time-Step, ", - "\nand the Premiums, Attributable Expense and Commissions and Investment Claims terms are given by:", - "\n", - "\n$$", - "\n\\begin{array}{lcl}", - "\n\\rm{Premiums} &=& \\text{Premium Allocation Factor} \\cdot \\sum_{\\text{Amount Type}\\in\\{\\text{PR and its children}\\}}", - "\n \\big(\\text{PV}_{\\text{Novelty = I}} + \\text{PV}_{\\text{Novelty = N}} \\big) - ", - "\n \\big(\\text{Actual}_{\\text{Novelty=C}} + \\text{Advance Actual}_{\\text{Novelty=C}} + \\text{Overdue Actual}_{\\text{Novelty=C}} \\big) ~, \\\\", - "\n\\text{Attributable Expense and Commissions} &=& \\sum_{\\text{Amount Type}\\in\\{\\rm{ACA}, \\rm{AEA}\\}}", - "\n \\big(\\text{PV}_{\\text{Novelty = I}} + \\text{PV}_{\\text{Novelty = N}} \\big) - \\text{Actual}_{\\text{Novelty=C}} ~, \\\\", - "\n\\text{Investment Claims } &=& \\sum_{\\text{Amount Type}\\in\\{\\text{ICO and its children}\\}}", - "\n \\big(\\text{PV}_{\\text{Novelty = I}} + \\text{PV}_{\\text{Novelty = N}} \\big) - ", - "\n \\big( \\text{Actual}_{\\text{Novelty=C}} + \\text{Advance Actual}_{\\text{Novelty=C}} + \\text{Overdue Actual}_{\\text{Novelty=C}} \\big) ~.", - "\n\\end{array}", - "\n$$", - "\n", - "\nThe AoC Type **CF** is implicit for all formulas, PV is the [present value](#present-value) with Calculation Type **BE**, and Actuals have Estimate Types **A**, **OA** and **AA** (see details [here](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/Import/ImportScopeCalculation#actual-base))." - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Beginning of Period" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_BoP_I = Test.GetIdentity(dataNode, \"BOP\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_BoP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_BoP_I = Test.GetScope(id_BoP_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_BoP_I.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The TM for BOP is equal to the TM for EOP of the previous period, that is, the sum of Csm, Loss Component and LoReCo as of at the end of last period (see the corresponding [formula](#technical-margins)). ", - "\n", - "\nThe corresponding **IFRS Variables** can be loaded directly from the *Storage*" - ] - }, - { - "cell_type": "code", - "source": [ - "var valueCsm = Test.GetStorage().GetValue(id_BoP_I, null, EstimateTypes.C, null);", - "\nvalueCsm" - ] - }, - { - "cell_type": "code", - "source": [ - "var valueLc = Test.GetStorage().GetValue(id_BoP_I, null, EstimateTypes.L, null);", - "\nvalueLc" - ] - }, - { - "cell_type": "code", - "source": [ - "var valueLr = Test.GetStorage().GetValue(id_BoP_I, null, EstimateTypes.LR, null);", - "\nvalueLr" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_BoP_I = -valueCsm + valueLc + valueLr;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_BoP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_BoP_I.Value.Should().BeApproximately( expectedTM_BoP_I, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Model Corrections" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_MC_I = Test.GetIdentity(dataNode, \"MC\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_MC_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_MC_I = Test.GetScope(id_MC_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_MC_I.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The TM for MC is given by the default [formula](#technical-margins), i.e. it is equal to the sum of PV and RA Locked, where the former does not encompass the *NonAttributable* Amount Types" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_MC_I = Test.GetScope(id_MC_I).Value + Test.GetScope( id_MC_I ).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_MC_I" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_MC_I.Value.Should().BeApproximately( expectedTM_MC_I, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Cash Flow" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_CF_I = Test.GetIdentity(dataNode, \"CF\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_CF_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_CF_I = Test.GetScope(id_CF_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_CF_I.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#technical-margins) above, the tecnical margin is 0 for the Cash Flow AoC step " - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_CF_I.Value.Should().BeApproximately( 0, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Interest Accretion" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_IA_I = Test.GetIdentity(dataNode, \"IA\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_IA_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_IA_I = Test.GetScope(id_IA_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_IA_I.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#technical-margins) above, for the AoC step IA, the TM is equal to sum of the TMs of its previous AoC step multiplied by the IAF. " - ] - }, - { - "cell_type": "markdown", - "source": [ - "The IAF associated to the current period (i.e. shift and time step) can be calculated from the shift, the time Step, and the Interest Rates" - ] - }, - { - "cell_type": "code", - "source": [ - "var projectionPeriod = 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "var shift = Test.GetStorage().GetShift(projectionPeriod);" - ] - }, - { - "cell_type": "code", - "source": [ - "var timeStep = Test.GetStorage().GetTimeStep(projectionPeriod);" - ] - }, - { - "cell_type": "code", - "source": [ - "(shift, timeStep)" - ] - }, - { - "cell_type": "code", - "source": [ - "var monthlyRates = Test.GetScope(id_IA_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "monthlyRates" - ] - }, - { - "cell_type": "code", - "source": [ - "var IAF = Enumerable.Range(shift,timeStep).Select(i => monthlyRates.Interest.GetValidElement(i/12)).Aggregate(1.0d, (x, y) => x * y ) - 1.0d;" - ] - }, - { - "cell_type": "code", - "source": [ - "IAF" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Since the previous AoC steps are" - ] - }, - { - "cell_type": "code", - "source": [ - "var previousAocStep = Test.GetScope((id_IA_I, InputSource.Cashflow)).Values;", - "\npreviousAocStep" - ] - }, - { - "cell_type": "markdown", - "source": [ - "the expected TM for the Amortization step reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_IA_I = IAF * previousAocStep.Sum(aoc => Test.GetScope(id_IA_I with {AocType = aoc.AocType, Novelty = aoc.Novelty}).Value);" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_IA_I" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_IA_I.Value.Should().BeApproximately( expectedTM_IA_I, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Combined Liabilities" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_CL_C = Test.GetIdentity(dataNode, \"CL\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_CL_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_CL_C = Test.GetScope(id_CL_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_CL_C.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the default TM [formula](#technical-margins), for the CL step the TM is equal to the sum of PV and RA Locked, where the former does not encompass the *NonAttributable* Amount Types" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_CL_C = Test.GetScope(id_CL_C).Value + Test.GetScope( id_CL_C ).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_CL_C" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_CL_C.Value.Should().BeApproximately( expectedTM_CL_C, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Experience Adjustment" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_EA_C = Test.GetIdentity(dataNode, \"EA\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_EA_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_EA_C = Test.GetScope(id_EA_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_EA_C.Value" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#technical-margins) above, for the AoC step EA, the TM is equal to sum of the Premiums, Attributable Expense and Commissions, and Investment Claims. Here below we calculate these terms individually." - ] - }, - { - "cell_type": "markdown", - "source": [ - "The Premiums, Attributable Expense and Commissions and Investment Claims Present Values and Actuals are calculated using the CF AoC step. Therefore, as first step we define the relevant AoC step and Novelties:" - ] - }, - { - "cell_type": "code", - "source": [ - "var referenceAoCType = Test.GetScope(id_EA_C).Value.AocType;", - "\nvar referenceAoC = Test.GetStorage().GetNovelties().Select(n => new AocStep(referenceAoCType, n));" - ] - }, - { - "cell_type": "code", - "source": [ - "referenceAoC" - ] - }, - { - "cell_type": "markdown", - "source": [ - "**Premiums**" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The list of Premiums Amount Type defined in the imported dimensions and the Premium Allocation Factor can be retrieved" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetStorage().GetPremiums()" - ] - }, - { - "cell_type": "code", - "source": [ - "var premiumAllocationFactor = Test.GetStorage().GetPremiumAllocationFactor(id_EA_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "premiumAllocationFactor" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Lastly, the Premiums term is" - ] - }, - { - "cell_type": "code", - "source": [ - "var premiums = premiumAllocationFactor * Test.GetStorage().GetPremiums()", - "\n .Sum(p => referenceAoC.Sum(aoc => Test.GetScope((Test.GetIdentity(dataNode, aoc.AocType, aoc.Novelty), p, EstimateTypes.BE, (int?)null), o => o.WithContext(economicBasis)).Value)", - "\n -referenceAoC.Sum(aoc => Test.GetScope((Test.GetIdentity(dataNode, aoc.AocType, aoc.Novelty), p, EstimateTypes.A, (int?)null)).Value)", - "\n -referenceAoC.Sum(aoc => Test.GetScope((Test.GetIdentity(dataNode, aoc.AocType, aoc.Novelty), p, EstimateTypes.AA, (int?)null)).Value)", - "\n -referenceAoC.Sum(aoc => Test.GetScope((Test.GetIdentity(dataNode, aoc.AocType, aoc.Novelty), p, EstimateTypes.OA, (int?)null)).Value)", - "\n );" - ] - }, - { - "cell_type": "code", - "source": [ - "premiums" - ] - }, - { - "cell_type": "markdown", - "source": [ - "**Attributable Expense and Commissions**" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Analogously, the Attributable Expense and Commissions term can be computed" - ] - }, - { - "cell_type": "code", - "source": [ - "var attributableExpenseAndCommissions = new string[] {AmountTypes.ACA, AmountTypes.AEA}", - "\n .Sum(d => referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), d, EstimateTypes.BE, (int?)null), o => o.WithContext(economicBasis)).Value)", - "\n -referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), d, EstimateTypes.A, (int?)null)).Value));" - ] - }, - { - "cell_type": "code", - "source": [ - "attributableExpenseAndCommissions" - ] - }, - { - "cell_type": "markdown", - "source": [ - "**Investment Claims**" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Finally the Investment Claims term reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var investmentClaims = Test.GetStorage().GetInvestmentClaims()", - "\n .Sum(ic => referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), ic, EstimateTypes.BE, (int?)null), o => o.WithContext(economicBasis)).Value)", - "\n -referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), ic, EstimateTypes.A, (int?)null)).Value)", - "\n -referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), ic, EstimateTypes.AA, (int?)null)).Value)", - "\n -referenceAoC.Sum(s => Test.GetScope((Test.GetIdentity(dataNode, s.AocType, s.Novelty), ic, EstimateTypes.OA, (int?)null)).Value)", - "\n );" - ] - }, - { - "cell_type": "code", - "source": [ - "investmentClaims" - ] - }, - { - "cell_type": "markdown", - "source": [ - "**Expected TM**" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_EA_C = premiums + attributableExpenseAndCommissions + investmentClaims;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_EA_C" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_EA_C.Value.Should().BeApproximately( expectedTM_EA_C, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Amortization" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_AM_C = Test.GetIdentity(dataNode, \"AM\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_AM_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_AM_C = Test.GetScope(id_AM_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_AM_C.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_AM_C" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#technical-margins) above, for the AoC step AM, the TM is equal to sum of the TMs of its previous AoC step multiplied by the amortization factor with opposite sign. ", - "\n", - "\nThe AoC step previous to Amortization are" - ] - }, - { - "cell_type": "code", - "source": [ - "var previousAocStep = Test.GetScope((id_AM_C, InputSource.Cashflow)).Values;", - "\npreviousAocStep" - ] - }, - { - "cell_type": "markdown", - "source": [ - "while the Amortization Factor can be retrieved in the following" - ] - }, - { - "cell_type": "code", - "source": [ - "Test.GetScope(id_AM_C)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Therefore, the expected TM for the Amortization step reads" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_AM_C = -Test.GetScope(id_AM_C).Value * ", - "\n previousAocStep.Sum(aoc => Test.GetScope(id_AM_C with {AocType = aoc.AocType, Novelty = aoc.Novelty}).Value);" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_AM_C" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_AM_C.Value.Should().BeApproximately( expectedTM_AM_C, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## End of Period" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_EoP_C = Test.GetIdentity(dataNode, \"EOP\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_EoP_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedTM_EoP_C = Test.GetScope(id_EoP_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_EoP_C.Value" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedTM_EoP_C = Test.GetScope( id_EoP_C ).Value + Test.GetScope( id_EoP_C ).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedTM_EoP_C" - ] - }, - { - "cell_type": "code", - "source": [ - "computedTM_EoP_C.Value.Should().BeApproximately( expectedTM_EoP_C, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Switch Logic " - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CSM and LC figures are allocated for each AoC step based on the sign of the ATM. Specifically, for positive (negative) ATM, the TM of the current step is allocated to the LC (CSM), unless the TM flips the sign of the ATM. This special circumstance is named **switch**. It can happen at any AoC step with the only exception of Amortization where there is no switch from the previous step.", - "\nWhen a switch occurs the total contribution to the CSM (LC) prior the switching step is brought to 0 and the remaing amount is allocated to LC (CSM).", - "\n", - "\nIn the following the AoC chain is investigated." - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Beginning of Period", - "\n", - "\nFor the BOP, the last period is considered, which dictates that the corresponding EOP figures considered have necessarily Novelty of type *In-Force*.", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{BOP}) &=& \\text{CSM}(\\text{EOP}) \\text{ of the previous period, for Novelty In-Force} \\\\", - "\n\\text{LC}(\\text{BOP}) &=& \\text{LC}(\\text{EOP}) \\text{ of the previous period, for Novelty In-Force}", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_BoP_I = Test.GetIdentity(dataNode, \"BOP\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_BoP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedCSM_BoP_I = Test.GetScope(id_BoP_I).Value;", - "\nvar computedLC_BoP_I = Test.GetScope(id_BoP_I).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "(computedCSM_BoP_I, computedLC_BoP_I)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "To understand where the BOP is allocated, we retrieve the corresponding TM and, based on its sign, we expect the CSM or the LC to be non-zero according to the [formula](#switch-logic) above" - ] - }, - { - "cell_type": "code", - "source": [ - "var TM_BOP_I = Test.GetScope(id_BoP_I).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "TM_BOP_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedCSM_BoP_I = TM_BOP_I < 0 ? -TM_BOP_I : 0;", - "\nvar expectedLC_BoP_I = TM_BOP_I > 0 ? +TM_BOP_I : 0;" - ] - }, - { - "cell_type": "code", - "source": [ - "(expectedCSM_BoP_I, expectedLC_BoP_I)" - ] - }, - { - "cell_type": "code", - "source": [ - "computedCSM_BoP_I.CheckEquality(computedCSM_BoP_I).Should().Be(true);", - "\nexpectedLC_BoP_I.CheckEquality(computedLC_BoP_I).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Following AoC steps" - ] - }, - { - "cell_type": "markdown", - "source": [ - "From the BOP up to the CL step, the switch logic is applied separately to the In-Force and New Business novelties." - ] - }, - { - "cell_type": "code", - "source": [ - "var id_MC_I = Test.GetIdentity(dataNode, \"MC\", \"I\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_MC_I" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedCSM_MC_I = Test.GetScope(id_MC_I).Value;", - "\nvar computedLC_MC_I = Test.GetScope(id_MC_I).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "(computedCSM_MC_I, computedLC_MC_I)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formula](#switch-logic) above this AoC step is allocated either to CSM or to LC based on the sign of ATM + TM. Both these two terms can be retrieved from the **TechnicalMargin** Scope." - ] - }, - { - "cell_type": "code", - "source": [ - "var TM_MC_I = Test.GetScope(id_MC_I);" - ] - }, - { - "cell_type": "code", - "source": [ - "TM_MC_I" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The correctness of the ATM can be checked by firstly withdrawing the previous AoC steps" - ] - }, - { - "cell_type": "code", - "source": [ - "var previousAocStep = Test.GetScope((id_MC_I, InputSource.Cashflow)).Values;" - ] - }, - { - "cell_type": "code", - "source": [ - "previousAocStep" - ] - }, - { - "cell_type": "markdown", - "source": [ - "and then evaluating the sum of the corresponding TMs" - ] - }, - { - "cell_type": "code", - "source": [ - "var expectedATM = previousAocStep.Sum(aoc => Test.GetScope(id_MC_I with {AocType = aoc.AocType, Novelty = aoc.Novelty}).Value);" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedATM" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Therefore, the following condition for ATM calculated by the **TechnicalMargin** Scope needs to be fullfilled" - ] - }, - { - "cell_type": "code", - "source": [ - "TM_MC_I.AggregatedValue.Should().BeApproximately( expectedATM, Precision );" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CSM and LC can be allocated according to the [Switch Logic](#switch-logic)." - ] - }, - { - "cell_type": "code", - "source": [ - "double expectedCSM_MC_I; ", - "\ndouble expectedLC_MC_I; " - ] - }, - { - "cell_type": "code", - "source": [ - "var aggregated = TM_MC_I.Value + TM_MC_I.AggregatedValue;" - ] - }, - { - "cell_type": "markdown", - "source": [ - "If there is no switch from LC, i.e. $\\text{ATM} (\\text{AoC}) > 0$ and $\\text{ATM} (\\text{AoC}) + \\text{TM}(\\text{AoC}) \\ge 0 $, then:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& 0 ~, \\\\", - "\n\\text{LC}(\\text{AoC}) &=& \\text{TM}(\\text{AoC}) ~.", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "if(TM_MC_I.AggregatedValue > 0 && aggregated >= 0) {", - "\n expectedCSM_MC_I = 0 ;", - "\n expectedLC_MC_I = TM_MC_I.Value ;", - "\n} " - ] - }, - { - "cell_type": "markdown", - "source": [ - "If there is no switch from CSM, i.e. $\\text{ATM} (\\text{AoC}) \\le 0$ and $\\text{ATM} (\\text{AoC}) + \\text{TM}(\\text{AoC}) \\le 0 $, then:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& -\\text{TM}(\\text{AoC}) ~, \\\\", - "\n\\text{LC}(\\text{AoC}) &=& 0 ~.", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "if(TM_MC_I.AggregatedValue < 0 && aggregated <= 0) {", - "\n expectedCSM_MC_I = -TM_MC_I.Value ;", - "\n expectedLC_MC_I = 0 ;", - "\n}" - ] - }, - { - "cell_type": "markdown", - "source": [ - "If $\\text{ATM} (\\text{AoC}) > 0$ and $\\text{ATM} (\\text{AoC}) + \\text{TM}(\\text{AoC}) \\le 0$, then there is a switch to CSM:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& -\\text{TM}(\\text{AoC}) -\\text{ATM} (\\text{AoC}) ~, \\\\", - "\n\\text{LC}(\\text{AoC}) &=& -\\text{ATM} (\\text{AoC}) ~.", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "if(TM_MC_I.AggregatedValue > 0 && aggregated <= 0) {", - "\n expectedCSM_MC_I = -aggregated;", - "\n expectedLC_MC_I = -TM_MC_I.AggregatedValue ;", - "\n}" - ] - }, - { - "cell_type": "markdown", - "source": [ - "On the other hand, if $\\text{ATM} (\\text{AoC}) \\le 0$ and $\\text{ATM} (\\text{AoC}) + \\text{TM}(\\text{AoC}) > 0$, ", - "\nthen the switch is to LC:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& \\text{ATM} (\\text{AoC}) ~, \\\\", - "\n\\text{LC}(\\text{AoC}) &=& \\text{TM}(\\text{AoC}) + \\text{ATM} (\\text{AoC}) ~.", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "if(TM_MC_I.AggregatedValue <= 0 && aggregated > 0) {", - "\n expectedCSM_MC_I = TM_MC_I.AggregatedValue ;", - "\n expectedLC_MC_I = aggregated ;", - "\n}" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Therefore, the expected CSM and LC for this step are" - ] - }, - { - "cell_type": "code", - "source": [ - "(expectedCSM_MC_I, expectedLC_MC_I)" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedCSM_MC_I.CheckEquality(computedCSM_MC_I).Should().Be(true);", - "\nexpectedLC_MC_I.CheckEquality(computedLC_MC_I).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "", - "\n## Combined Liabilities" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CL Aoc Step brings both contributions to CSM and LC together as the novelities are summed.", - "\n", - "\nFor the CL step, the logic is similar to the one above, except that a switch from LC to CSM can happen **because of New Business and despite of In-Force**, in which case we have:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& -\\text{TM}(\\text{AoC}) - \\text{ATM}(\\text{Last In-Force AoC step}) - \\text{TM}(\\text{Last In-Force AoC step}) \\\\", - "\n\\text{LC}(\\text{AoC}) &=& -\\text{ATM}(\\text{Last In-Force AoC step}) - \\text{TM}(\\text{Last In-Force AoC step})", - "\n\\end{array}", - "\n$$", - "\n", - "\nIf, on the other hand, the switch from LC to CSM happens **because of In-Force and despite of New Business**, then we have:", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{AoC}) &=& - \\text{TM}(\\text{AoC}) - \\text{ATM}(\\text{Last NB AoC step}) - \\text{TM}(\\text{Last NB AoC step}) \\\\", - "\n\\text{LC}(\\text{AoC}) &=& - \\text{ATM}(\\text{Last NB AoC step}) - \\text{TM}(\\text{Last NB AoC step})", - "\n\\end{array}", - "\n$$", - "\n", - "\nFor the switch in the other direction, i.e. from CSM to LC the formulas are similar except that LC and CSM are swapped." - ] - }, - { - "cell_type": "code", - "source": [ - "var id_CL_C = Test.GetIdentity(dataNode, \"CL\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_CL_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedCSM_CL_C = Test.GetScope(id_CL_C).Value;", - "\nvar computedLC_CL_C = Test.GetScope(id_CL_C).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "(computedCSM_CL_C, computedLC_CL_C)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "The CL step considers the last step of both the New Business and the In Force Novelties to decide what to allocate to CSM or LC. " - ] - }, - { - "cell_type": "code", - "source": [ - "var lastAocSteps = Test.GetScope((id_CL_C, InputSource.Cashflow)).Values.GroupBy(x => x.Novelty).Select(g => g.Last());" - ] - }, - { - "cell_type": "code", - "source": [ - "lastAocSteps" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Selecting the corresponding AocTypes:" - ] - }, - { - "cell_type": "code", - "source": [ - "var lastAocTypeNb = lastAocSteps.Single(x => x.Novelty == Novelties.N).AocType;", - "\nvar lastAocTypeI = lastAocSteps.Single(x => x.Novelty == Novelties.I).AocType;", - "\n(lastAocTypeI, lastAocTypeNb)" - ] - }, - { - "cell_type": "code", - "source": [ - "var lastTM_NewBusiness = Test.GetScope(id_CL_C with {AocType = lastAocTypeNb, Novelty = Novelties.N});" - ] - }, - { - "cell_type": "code", - "source": [ - "lastTM_NewBusiness" - ] - }, - { - "cell_type": "code", - "source": [ - "var lastTM_InForce = Test.GetScope(id_CL_C with {AocType = lastAocTypeI, Novelty = Novelties.I});" - ] - }, - { - "cell_type": "code", - "source": [ - "lastTM_InForce" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Conversely the TM and ATM for the CL step is" - ] - }, - { - "cell_type": "code", - "source": [ - "var TM_Combined = Test.GetScope(id_CL_C);" - ] - }, - { - "cell_type": "code", - "source": [ - "TM_Combined" - ] - }, - { - "cell_type": "markdown", - "source": [ - "where the ATM of CL is given by the sum of the ATMs of the New Business and In Force Novelties" - ] - }, - { - "cell_type": "code", - "source": [ - "var aggregatedNewBusiness = lastTM_NewBusiness.Value + lastTM_NewBusiness.AggregatedValue;", - "\nvar aggregatedInForce = lastTM_InForce.Value + lastTM_InForce.AggregatedValue;", - "\nvar sum = aggregatedNewBusiness + aggregatedInForce;", - "\nsum" - ] - }, - { - "cell_type": "code", - "source": [ - "( (sum - TM_Combined.AggregatedValue)/sum < 1.0e-12).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "In order to decide where the TM of the CL step is allocated, one has to check the sign of the ATM + TM for both the New Business and the In Force" - ] - }, - { - "cell_type": "code", - "source": [ - "var aggregatedCombined = TM_Combined.Value + TM_Combined.AggregatedValue;", - "\naggregatedCombined" - ] - }, - { - "cell_type": "markdown", - "source": [ - "According to the [formulas above](#combined-liabilities), for a positive (negative) aggregated CL value, the CL TM has to be allocated to LC (CSM). ", - "\n
In case the one of last Aoc step of the novelties (I, NB) has the sign of the CL ATM opposite to the CL ATM, the CL AocStep is used to introduce a balancing item to bring the ATM of the novelty with opposite sign to 0. ", - "\n
This is equivalent to execute the switch logic with a balancing item = ATM of the last AocStep having opposite sign to CL ATM. ", - "\n
Note that if CL TM is zero this results in allocating the same amount with opposite sign to CSM(note that the sign of the CSM componet is flipped) and LC." - ] - }, - { - "cell_type": "code", - "source": [ - "double expectedCSM_CL_C; ", - "\ndouble expectedLC_CL_C; " - ] - }, - { - "cell_type": "code", - "source": [ - "var balancingItem = aggregatedCombined < 0 ? aggregatedNewBusiness : aggregatedInForce;", - "\nbalancingItem" - ] - }, - { - "cell_type": "code", - "source": [ - "", - "\nif(aggregatedCombined > 0) {", - "\n expectedCSM_CL_C = balancingItem ;", - "\n expectedLC_CL_C = TM_Combined.Value + balancingItem;", - "\n} else {", - "\n expectedLC_CL_C = - balancingItem ;", - "\n expectedCSM_CL_C = TM_Combined.Value - balancingItem ;", - "\n}" - ] - }, - { - "cell_type": "code", - "source": [ - "(expectedCSM_CL_C, expectedLC_CL_C)" - ] - }, - { - "cell_type": "code", - "source": [ - "expectedCSM_CL_C.CheckEquality(computedCSM_CL_C).Should().Be(true);", - "\nexpectedLC_CL_C.CheckEquality(computedLC_CL_C).Should().Be(true);" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## End Of Period", - "\n", - "\nFor the last AoC step, the EOP is the sum of all previous steps", - "\n", - "\n$$", - "\n\\begin{array}{rcl}", - "\n\\text{CSM}(\\text{EOP}) &=& \\sum_{s~\\in~\\text{previous AoC steps}} \\text{CSM}(s) ~, \\\\", - "\n\\text{LC}(\\text{EOP}) &=& \\sum_{s~\\in~\\text{previous AoC steps}} \\text{LC}(s) ~.", - "\n\\end{array}", - "\n$$" - ] - }, - { - "cell_type": "code", - "source": [ - "var id_EoP_C = Test.GetIdentity(dataNode, \"EOP\", \"C\");" - ] - }, - { - "cell_type": "code", - "source": [ - "id_EoP_C" - ] - }, - { - "cell_type": "code", - "source": [ - "var computedCSM_EoP_C = Test.GetScope(id_EoP_C).Value;", - "\nvar computedLC_EoP_C = Test.GetScope(id_EoP_C).Value;" - ] - }, - { - "cell_type": "code", - "source": [ - "(computedCSM_EoP_C, computedLC_EoP_C)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n
", - "\nFor the reinsurance case, the switch logic is identical to the one described above, except that it uses the corresponding gross case TM to allocate the figure either to CSM or to LoReCo. The reinsurance gross TM multiplied by the weights coming from the Reinsurance Coverage Parameter (Data Node Parameters). In case a GRIC has multiple GICs, then these weighted TMs are aggregated.", - "\n
" - ] - }, - { - "cell_type": "markdown", - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "source": [ - "

", - "\n", - "\n# Contractual Service Margin and Loss Component" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Here below a view of the CSM and Loss Component results are shown. ", - "\n", - "\nNote: the Data Nodes with LiabilityType being *LIC* are excluded." - ] - }, - { - "cell_type": "code", - "source": [ - "var allIdentitiesWoLic = allIdentities.Where(id => Test.GetStorage().DataNodeDataBySystemName[id.DataNode].LiabilityType != \"LIC\").ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "var csm = allIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", - "\n .Select(x => x.FromCsmToIfrsVariable())).ToArray();" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Gross case" - ] - }, - { - "cell_type": "code", - "source": [ - "var allInsuranceIdentitiesWoLic = allIdentitiesWoLic.Where(id => !id.IsReinsurance).ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "var lc = allInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", - "\n .Select(x => x.FromLcToIfrsVariable())).ToArray();" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Re-Insurance case (LoReCo)" - ] - }, - { - "cell_type": "code", - "source": [ - "var allReInsuranceIdentitiesWoLic = allIdentitiesWoLic.Where(id => id.IsReinsurance).ToArray();" - ] - }, - { - "cell_type": "code", - "source": [ - "var loreco = allReInsuranceIdentitiesWoLic.SelectMany(id => Test.GetScope(id).RepeatOnce()", - "\n .Where(x => Math.Abs(x.Value) >= Precision)", - "\n .Select(x => x.FromLoReCoToIfrsVariable())).ToArray();" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Summary" - ] - }, - { - "cell_type": "code", - "source": [ - "Report.ForObjects( csm.Concat(lc).Concat(loreco) )", - "\n .WithQuerySource(Workspace)", - "\n .GroupColumnsBy(x => x.DataNode)", - "\n .GroupColumnsBy(x => x.EstimateType)", - "\n .GroupRowsBy(x => x.Novelty)", - "\n .GroupRowsBy(x => x.AocType)", - "\n .WithGridOptionsForIfrsVariable()", - "\n .ToReport()" - ] - }, - { - "cell_type": "code", - "source": [ - "" - ] - } - ] -} \ No newline at end of file diff --git a/full-ifrs17-template/Test/Tests.ipynb b/full-ifrs17-template/Test/Tests.ipynb index 47f5ea85..06b5b7d7 100644 --- a/full-ifrs17-template/Test/Tests.ipynb +++ b/full-ifrs17-template/Test/Tests.ipynb @@ -59,36 +59,6 @@ "---" ] }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"SpecificationsImportCashflows\"" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"SpecificationsImportActuals\"" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"SpecificationsTechnicalMargin\"" - ] - }, - { - "cell_type": "code", - "source": [ - "#!eval-notebook \"SpecificationsFinancialPerformance\"" - ] - }, - { - "cell_type": "markdown", - "source": [ - "---" - ] - }, { "cell_type": "code", "source": [ From 452e68394c920a7de1857a7d3828caa24047f4e8 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 10:30:11 +0100 Subject: [PATCH 02/18] read me and big picture --- ifrs17/Images/BigPicture.PNG | Bin 38530 -> 42091 bytes ifrs17/README.md | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ifrs17/Images/BigPicture.PNG b/ifrs17/Images/BigPicture.PNG index 9e7bfe681aa1819381f918930245e7053bb9f9e7..d4a6699180f8c29f87014e1eafa71e6a001fa215 100644 GIT binary patch literal 42091 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 SK+msRX97EO`l-Q%oBs +Systemorph logo +

- -**IFRS17 Calculation Engine** +

IFRS 17 Calculation Engine

Systemorph's IFRS 17 Calculation Engine is a tool to conduct all the essential IFRS 17 calculations given some key figures, future cashflows and actual amounts, for groups of insurance contracts and other basic information. The result is a set of reports needed for IFRS 17 accounting and management information. @@ -9,21 +10,20 @@ Systemorph's IFRS 17 Calculation Engine is a tool to conduct all the essential I Systemorph portal allows Users to create their own projects powered by the Vertex 10 technology. -## Overview +# Overview -![BigPicture.png](https://portal.systemorph.cloud/api/project/ifrs17ce/env/dev/file/download?path=Images/BigPicture.png) +

+IFRS 17 Solution Overview +

If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine). You will be introduced to - [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed - [Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material -- [Reports](./Report/ReportScopes) for data analysis and drill down to the lowest data granularity. With links to discover the calculation of the [Financial Performance](./Report/ReportScopes#ifrs-17-financial-performance) - -## Got Questions +# Got Questions For support around the IFRS 17 CalculationEngine get in contact with our Community: -- [Community]() -link to the community page- -- [Evangelists]() -link to Evangelists page- \ No newline at end of file +- [Community]() -link to the community page(IFRS17 landing page)- \ No newline at end of file From 9e534e627d0c80a984b14cacd795f2d6da32f604 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 10:42:38 +0100 Subject: [PATCH 03/18] help review --- ifrs17/README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ifrs17/README.md b/ifrs17/README.md index b28c519d..f0b3a7d7 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -17,13 +17,11 @@ Systemorph portal allows Users to create their own projects powered by the Verte

-If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine). +If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine) (*OverviewCalculationEngine*). You will be introduced to -- [DataModel](./DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed -- [Calculation](./Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material +- [DataModel](./DataModel/DataStructure) (*./DataModel/DataStructure*) with links to detailed description of individual data types, dimensions and partitions employed +- [Calculation](./Import/ImportScopeCalculation) (*./Import/ImportScopeCalculation*) with in detail description using mathematical formulas and links to supporting material # Got Questions -For support around the IFRS 17 CalculationEngine get in contact with our Community: - -- [Community]() -link to the community page(IFRS17 landing page)- \ No newline at end of file +For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -link to the community page(IFRS17 landing page)- \ No newline at end of file From 9643a51d55d2255a5828572b74969ea236d2cfc2 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 15:00:07 +0100 Subject: [PATCH 04/18] code of conduct. Readme. Remove Spec tests --- full-ifrs17-template/CODE_OF_CONDUCT.md | 133 ++++++++++++++++++ full-ifrs17-template/Export/MapTemplate.ipynb | 55 +++++--- .../Images/SpecificationsCSM.PNG | Bin 40913 -> 0 bytes .../Images/SpecificationsImportActuals.PNG | Bin 12211 -> 0 bytes .../Images/SpecificationsImportCashflows.PNG | Bin 38471 -> 0 bytes .../Images/SpecificationsPL.PNG | Bin 79272 -> 0 bytes full-ifrs17-template/Images/video1.png | Bin 0 -> 283562 bytes full-ifrs17-template/README.md | 35 +++-- ifrs17/CODE_OF_CONDUCT.md | 133 ++++++++++++++++++ ifrs17/DataModel/DataStructure.ipynb | 4 +- ifrs17/README.md | 8 +- 11 files changed, 327 insertions(+), 41 deletions(-) create mode 100644 full-ifrs17-template/CODE_OF_CONDUCT.md delete mode 100644 full-ifrs17-template/Images/SpecificationsCSM.PNG delete mode 100644 full-ifrs17-template/Images/SpecificationsImportActuals.PNG delete mode 100644 full-ifrs17-template/Images/SpecificationsImportCashflows.PNG delete mode 100644 full-ifrs17-template/Images/SpecificationsPL.PNG create mode 100644 full-ifrs17-template/Images/video1.png create mode 100644 ifrs17/CODE_OF_CONDUCT.md diff --git a/full-ifrs17-template/CODE_OF_CONDUCT.md b/full-ifrs17-template/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..09980a35 --- /dev/null +++ b/full-ifrs17-template/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[vanessas@systemorph.cloud.com](mailto:vanessas@systemorph.cloud.com). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb index af901570..d2c660e7 100644 --- a/full-ifrs17-template/Export/MapTemplate.ipynb +++ b/full-ifrs17-template/Export/MapTemplate.ipynb @@ -26,7 +26,9 @@ { "cell_type": "markdown", "source": [ - "This Notebook exports the Data nodes, states, and parameters for the target partition to a spreadsheet file which can be read, modified, and is ready to be re-imported." + "This notebook exports the data nodes, data node states, and data node parameters belonging to a specific data partition (set of reporting node, year and month) into am excel file. ", + "\n
This file contains reference data used to prepopulate dropdows and validations to facilitate editing.", + "\n
This can be modified and imported in the calculation engine to create and modify data." ] }, { @@ -77,7 +79,9 @@ { "cell_type": "markdown", "source": [ - "# Map Template: Data Node" + "# Map Template: Data Node", + "\n", + "\n[DataNodes](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node) defines the properties of [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#group-of-contracts)." ] }, { @@ -89,13 +93,8 @@ { "cell_type": "code", "source": [ - "static var partition = new PartitionByReportingNode() { ReportingNode = \"CH\" };" - ] - }, - { - "cell_type": "code", - "source": [ - "await Workspace.Partition.SetAsync( partition );" + "static var partition = new PartitionByReportingNode() { ReportingNode = \"CH\" };", + "\nawait Workspace.Partition.SetAsync( partition );" ] }, { @@ -120,7 +119,9 @@ { "cell_type": "markdown", "source": [ - "# Map Template: Data Node State" + "# Map Template: Data Node State", + "\n", + "\n[Data Node State](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node-state) defines whether the instance is active (used in import/output) or inactive (present in the DataSource but not used in input/output operations)." ] }, { @@ -132,19 +133,20 @@ { "cell_type": "code", "source": [ - "static var partition = new PartitionByReportingNodeAndPeriod() { ReportingNode = \"CH\", Year = 2020, Month = 12 };" + "static var partition = new PartitionByReportingNodeAndPeriod() { ReportingNode = \"CH\", Year = 2020, Month = 12 };", + "\nawait Workspace.Partition.SetAsync( new PartitionByReportingNode() { ReportingNode = partition.ReportingNode } );" ] }, { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "await Workspace.Partition.SetAsync( new PartitionByReportingNode() { ReportingNode = partition.ReportingNode } );" + "## Export" ] }, { "cell_type": "markdown", "source": [ - "## Export" + "The data is retrieved for the Workspace and prepared for export." ] }, { @@ -158,6 +160,12 @@ "\n .ToArray();" ] }, + { + "cell_type": "markdown", + "source": [ + "Export is performed." + ] + }, { "cell_type": "code", "source": [ @@ -172,7 +180,9 @@ { "cell_type": "markdown", "source": [ - "# Map Template: Data Node Parameter" + "# Map Template: Data Node Parameter", + "\n", + "\n[Data Node Parameters](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node-parameters) are defined at the Group of Contract level and are used during the import calculation. " ] }, { @@ -184,19 +194,20 @@ { "cell_type": "code", "source": [ - "static var partition = new PartitionByReportingNodeAndPeriod() { ReportingNode = \"CH\", Year = 2020, Month = 12 };" + "static var partition = new PartitionByReportingNodeAndPeriod() { ReportingNode = \"CH\", Year = 2020, Month = 12 };", + "\nawait Workspace.Partition.SetAsync( new PartitionByReportingNode() { ReportingNode = partition.ReportingNode } );" ] }, { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "await Workspace.Partition.SetAsync( new PartitionByReportingNode() { ReportingNode = partition.ReportingNode } );" + "## Export" ] }, { "cell_type": "markdown", "source": [ - "## Export" + "The data is retrieved for the Workspace and prepared for export." ] }, { @@ -212,6 +223,12 @@ "\n .ToArray() );" ] }, + { + "cell_type": "markdown", + "source": [ + "Export is performed." + ] + }, { "cell_type": "code", "source": [ diff --git a/full-ifrs17-template/Images/SpecificationsCSM.PNG b/full-ifrs17-template/Images/SpecificationsCSM.PNG deleted file mode 100644 index a04d351d21e730028ab328c8311e70b0f77f19fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40913 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 diff --git a/full-ifrs17-template/Images/SpecificationsImportActuals.PNG b/full-ifrs17-template/Images/SpecificationsImportActuals.PNG deleted file mode 100644 index 7f3d5d05a460fba884f58baaeeb41c84a4617c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12211 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 z zGk``Oerpa(iPi<=r!C%E(Bbz8?*40 zeoXb7UBBkFJOmZ7Sr7aXI8pmYHhAhV-?@TD7n_EOm#&vg17*k=pqc|P4L49fAuLnJ zj;Vh4IM%R8F8Dd=3akpkoM~0Fxa1r6R}r}6LY+dm!+e3Dr7%;A?Y4=)x3HVQrv`M4 zf%qeXzRp_J3YdH2el00r&Z&calkacOWznvJDX@m}FfEHSP8A4lC+nE z5dGFOdbH}wALTKgsp1+Cvg>Y(IS^OP2?BKgziM*W(*=$t?zGIcX+fRTY4Fmk3XXR&Xt!;o&W|MH&CB0u&P zXb7(@QTJ7`-FKL*FDE<+JrS;mEjYCM3a`|U8R-C>_~}ng#C0;#)epZjDcwE6fbE*# zAa+jVuLJiSrEskmTFO-?!Uq>27J(tl*yO!qbq$V80J7)MIY+}Y)Gd!rBkfA$EfLgDvDy*dt5{PSOeV~~r2T*aW%fiou`tzM>_ ox%0PE;r~}h%K!V16_2fjnV)nRz3RMsoja$#4qUrL^XL2j3jj;*0{{R3 diff --git a/full-ifrs17-template/Images/SpecificationsImportCashflows.PNG b/full-ifrs17-template/Images/SpecificationsImportCashflows.PNG deleted file mode 100644 index bcb093c83f1aeed76336d9853ce6074735e120e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38471 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

GkJ}&o=@#D>_ov@=)8CG67#8 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 literal 0 HcmV?d00001 diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 682bf0c1..880b53a3 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -1,36 +1,35 @@ -![Systemorph_logo.png](https://portal.systemorph.cloud/api/project/full-ifrs17-template1/env/dev/file/download?path=Images/Systemorph_logo.png) +

+Systemorph logo +

-**Full IFRS 17 Template** +

Full IFRS 17 Template

-Systemorph's IFRS 17 [Calculation Engine](https://portal.systemorph.cloud/api/project/ifrs17ce/env/dev/) is a tool to conduct all the essential IFRS 17 calculations given some key figures. +[**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17ce/env/dev/) is a tool to conduct all the essential IFRS 17 calculations given some key figures. -Systemorph's *Full IFRS 17 Template* uses our IFRS 17 Calculation Engine to import several use-cases and show the results. +**Full IFRS 17 Template** uses our IFRS 17 Calculation Engine to import several use-cases and show the results. # Get Started -Interact with this *Full IFRS 17 Template* after having cloned the project +Clone this project to start interacting with it. # Supporting Material -Check out the [video]() (this is a youtube link or the video is embedded) +Check out our video series. You can get started here: +[](https://www.youtube.com/watch?v=M1B5AyYvXT8) -Check out our IFRS 17 initiative [here](landing page) +For more information on our IFRS 17 initiative check out our [IFRS 17 page](*landing page*). # Report -Check out the IFRS 17 reports computed for our use-cases [here](./Report/Reports) +Check out the IFRS 17 reports computed for our mock use-cases [here](./Report/Reports). (*./Report/Reports*) +Check out the our mock data set by exporting excel MapTemplates [here](./Export/MapTemplate). (*./Export/MapTemplate*) -# Testing +# Got Questions -If you want a step by step guide into the calculation logic, please go to the "Specification" notebook you are interested in: -- [Cashflow Calculation](./Test/SpecificationsImportCashflows) -- [Actuals Calculation](./Test/SpecificationsImportActuals) -- [Technical Margin Calculation](./Test/SpecificationsTechnicalMargin) -- [Financial Performance Calculation](./Test/SpecificationsFinancialPerformance) +For support around the IFRS 17 CalculationEngine get in contact with our [Community](). (*-link to the community page(IFRS17 landing page)*)- -# Got Questions +# Contributing -For support around the IFRS 17 CalculationEngine get in contact with our Community: +All work on the **Full IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). -- [Community]() -link to the community page- -- [Evangelists]() -link to Evangelists page- \ No newline at end of file +This project adheres to the Contributor Covenant [code of conduct](https://github.com/Systemorph/IFRS17CalculationEngine/blob/main/full-ifrs17-template/CODE_OF_CONDUCT.md). \ No newline at end of file diff --git a/ifrs17/CODE_OF_CONDUCT.md b/ifrs17/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..09980a35 --- /dev/null +++ b/ifrs17/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[vanessas@systemorph.cloud.com](mailto:vanessas@systemorph.cloud.com). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 2c3fac39..47f94ce0 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -1067,13 +1067,11 @@ "\n ", "\n [NotVisible] ", "\n [Dimension(typeof(Currency))]", - "\n //[Required] // TODO: check", - "\n //[Immutable] // TODO: Not available yet", + "\n //[Immutable]", "\n public string ContractualCurrency { get; init; }", "\n ", "\n [NotVisible] ", "\n [Dimension(typeof(Currency))]", - "\n //[Required] // TODO: check", "\n //[Immutable]", "\n public string FunctionalCurrency { get; init; }", "\n ", diff --git a/ifrs17/README.md b/ifrs17/README.md index f0b3a7d7..4eb50128 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -24,4 +24,10 @@ You will be introduced to # Got Questions -For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -link to the community page(IFRS17 landing page)- \ No newline at end of file +For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -link to the community page(IFRS17 landing page)- + +# Contributing + +All work on the **Full IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). + +This project adheres to the Contributor Covenant [code of conduct](https://github.com/Systemorph/IFRS17CalculationEngine/blob/main/full-ifrs17-template/CODE_OF_CONDUCT.md). \ No newline at end of file From 9f25ef3c1a23ef529cd9335dbfd32812fde580c9 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 15:51:33 +0100 Subject: [PATCH 05/18] env for go live --- full-ifrs17-template/Export/MapTemplate.ipynb | 6 ++-- .../InputFormatDescription.ipynb | 28 +++++++++---------- full-ifrs17-template/README.md | 10 +++---- full-ifrs17-template/Report/Reports.ipynb | 20 ++++++------- ifrs17/README.md | 8 +++--- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb index d2c660e7..6b577a4d 100644 --- a/full-ifrs17-template/Export/MapTemplate.ipynb +++ b/full-ifrs17-template/Export/MapTemplate.ipynb @@ -81,7 +81,7 @@ "source": [ "# Map Template: Data Node", "\n", - "\n[DataNodes](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node) defines the properties of [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#group-of-contracts)." + "\n[DataNodes](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#data-node) defines the properties of [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#group-of-contracts)." ] }, { @@ -121,7 +121,7 @@ "source": [ "# Map Template: Data Node State", "\n", - "\n[Data Node State](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node-state) defines whether the instance is active (used in import/output) or inactive (present in the DataSource but not used in input/output operations)." + "\n[Data Node State](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#data-node-state) defines whether the instance is active (used in import/output) or inactive (present in the DataSource but not used in input/output operations)." ] }, { @@ -182,7 +182,7 @@ "source": [ "# Map Template: Data Node Parameter", "\n", - "\n[Data Node Parameters](https://portal.systemorph.cloud/project/ifrs17/env/dev/DataModel/DataStructure#data-node-parameters) are defined at the Group of Contract level and are used during the import calculation. " + "\n[Data Node Parameters](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#data-node-parameters) are defined at the Group of Contract level and are used during the import calculation. " ] }, { diff --git a/full-ifrs17-template/InputFormatDescription.ipynb b/full-ifrs17-template/InputFormatDescription.ipynb index 9dd70de5..2b083f04 100644 --- a/full-ifrs17-template/InputFormatDescription.ipynb +++ b/full-ifrs17-template/InputFormatDescription.ipynb @@ -36,16 +36,16 @@ "source": [ "A cashflow file is named **NominalCashflows** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Cashflow**.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month and Scenario for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#partitions) to which the data belongs.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month and Scenario for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#partitions) to which the data belongs.", "\n", "\nThe **Cashflow** section contains the cash flow data. Several pieces of information are required to characterize a cash flow correctly:", - "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [AmountType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#amount-type) : entered with its SystemName,", - "\n- [AocType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#aoc-type) : entered with its SystemName,", - "\n- [Novelty](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#novelty) : entered with its SystemName,", + "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [AmountType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#amount-type) : entered with its SystemName,", + "\n- [AocType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#aoc-type) : entered with its SystemName,", + "\n- [Novelty](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#novelty) : entered with its SystemName,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims.", "\n", - "\nAll valid combinations of AocType and Novelty can be found in [AocConfiguration](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#aoc-configuration) with DataType Optional or Mandatory.", + "\nAll valid combinations of AocType and Novelty can be found in [AocConfiguration](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#aoc-configuration) with DataType Optional or Mandatory.", "\n
The cash flow is entered in the columns named ValuesN where N goes from 0 to the lenght of cash flow. The Value0 corresponds to January of the Year entered in the **Main** section for every combination of AocType and Novelty. " ] }, @@ -64,12 +64,12 @@ "source": [ "An Actuals file is named **Actuals** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Actual**.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#partition) to which the data belong.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#partition) to which the data belong.", "\n", "\nThe **Actual** section contains the actuals data. Several pieces of information are required to to characterize an Actuals amount correctly:", - "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [AocType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#aoc-type) : entered with its SystemName,", - "\n- [ValueType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#amount-type) : corresponds to AmountType SystemName extended with the ExternalId,", + "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [AocType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#aoc-type) : entered with its SystemName,", + "\n- [ValueType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#amount-type) : corresponds to AmountType SystemName extended with the ExternalId,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims." ] }, @@ -88,12 +88,12 @@ "source": [ "An Openings file is named **Openings** *\\_* *\\_* *\\_* and is composed of two sections: **Main** and **Opening**. In an AoC for one period, we only need one file with the year/month combination of the beginning of the period. Some GICs do not need any entries in Openings.", "\n", - "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#partition) to which the data belong.", + "\nThe **Main** section contains information such as: Reporting Node, Year, Month for which the data is being imported. This information is used to define the [partition](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#partition) to which the data belong.", "\n", "\nThe **Opening** section contains values at opening of an analysis. Several pieces of information are required to to characterize an Opening amount correctly:", - "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", - "\n- [EstimateType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#estimate-type) : entered with its SystemName,", - "\n- [AmountType](https://portal.stage.systemorph.cloud/project/ifrs17ce/env/dev/DataModel/DataStructure#amount-type) : entered with its SystemName,", + "\n- [DataNode](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#group-of-contracts) : lowest granularity of the Data Node, it is entered with its SystemName,", + "\n- [EstimateType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#estimate-type) : entered with its SystemName,", + "\n- [AmountType](https://portal.stage.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#amount-type) : entered with its SystemName,", "\n- AccidentYear : relevant for Data Node with Liability Type: Liability for Incurred Claims." ] } diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 880b53a3..1bdb81b8 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -1,10 +1,10 @@

-Systemorph logo +Systemorph logo

Full IFRS 17 Template

-[**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17ce/env/dev/) is a tool to conduct all the essential IFRS 17 calculations given some key figures. +[**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/) is a tool to conduct all the essential IFRS 17 calculations given some key figures. **Full IFRS 17 Template** uses our IFRS 17 Calculation Engine to import several use-cases and show the results. @@ -15,14 +15,14 @@ Clone this project to start interacting with it. # Supporting Material Check out our video series. You can get started here: -[](https://www.youtube.com/watch?v=M1B5AyYvXT8) +[](https://www.youtube.com/watch?v=M1B5AyYvXT8) For more information on our IFRS 17 initiative check out our [IFRS 17 page](*landing page*). # Report -Check out the IFRS 17 reports computed for our mock use-cases [here](./Report/Reports). (*./Report/Reports*) -Check out the our mock data set by exporting excel MapTemplates [here](./Export/MapTemplate). (*./Export/MapTemplate*) +Check out the IFRS 17 reports computed for our mock use-cases [here](https://portal.systemorph.cloud/api/project/full-ifrs-17-template/env/v1.0.0/Report/Reports). +Check out the our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/api/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate). # Got Questions diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb index 23a3804b..147e6b7b 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/full-ifrs17-template/Report/Reports.ipynb @@ -60,7 +60,7 @@ "source": [ "# Best Estimate", "\n", - "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#best-estimate) future cashflows are shown here in an Analysis of Change report.", + "\nPresent values of the [best-estimate](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#best-estimate) future cashflows are shown here in an Analysis of Change report.", "\n", "\nThe granularity of the reported figures can be modified by changing the Column Slices options.", "\nFor example one can add \"GroupOfContract\" to separate the contributions of the individual Group of Contracts.", @@ -85,7 +85,7 @@ "source": [ "# Risk Adjustment", "\n", - "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#risk-adjustment) future cashflows are shown here.", + "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#risk-adjustment) future cashflows are shown here.", "\n", "\nFilters can be applied to report to isolate a sub-set of the data. They can be used in conjuction to the Slice options. For example, filtering **EconomicBasis** Locked-in together with a slice on the **GroupOfContract** allows to analyse the risk adjustment figures computed with the yield curve at inception for all Group of Contracts." ] @@ -104,7 +104,7 @@ "source": [ "# Written Actuals", "\n", - "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#written-accrual-deferral) are shown here. ", + "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here. ", "\n", "\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. " ] @@ -123,8 +123,8 @@ "source": [ "## Advance, Overdue Actuals", "\n", - "\nActuals payed in [Advance](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#written-accrual-deferral)", - "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. " + "\nActuals payed in [Advance](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral)", + "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. " ] }, { @@ -141,7 +141,7 @@ "source": [ "## Deferrable Actuals", "\n", - "\n[Deferrable Actuals](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#written-accrual-deferral) are shown here. Amortization of the deferrable amount is computed using the Coverage Unit pattern. " + "\n[Deferrable Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here. Amortization of the deferrable amount is computed using the Coverage Unit pattern. " ] }, { @@ -158,7 +158,7 @@ "source": [ "# Fulfilment Cashflow", "\n", - "\nPresent Value of the [Fulfilment Cashflow](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#fulfillment-cashflows) are shown here. ", + "\nPresent Value of the [Fulfilment Cashflow](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#fulfillment-cashflows) are shown here. ", "\n
The individual contributions from Best Estimate and Risk Adjustment can be visualized slicing by **EstimateType**" ] }, @@ -176,7 +176,7 @@ "source": [ "# Actuarial Experience Adjustment", "\n", - "\nA comparison between [Written Actual](#written-actual) and the Releases of the [Best Estimate](#present-value) is reported in the [Actuarial Experience Adjustment](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#experience-adjustment)." + "\nA comparison between [Written Actual](#written-actual) and the Releases of the [Best Estimate](#present-value) is reported in the [Actuarial Experience Adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#experience-adjustment)." ] }, { @@ -193,7 +193,7 @@ "source": [ "# LRC Technical Margin", "\n", - "\nIn the [Technical Margin](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#technical-margin) report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", + "\nIn the [Technical Margin](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#technical-margin) report we present a unified view on the figures that are allocated to either Contractual Service Margin or to Loss Component. ", "\n
The Analysis of Change is expanded with few more steps such as **Experience Adjustment** and **Amortization**." ] }, @@ -211,7 +211,7 @@ "source": [ "# Contractual Service Margin / Loss Component / Loss Recovery Component", "\n", - "\nThe Contractual Service Margin (CSM) / Loss Component (LC) / Loss Recovery Component (LR) [report](https://portal.systemorph.cloud/project/ifrs17ce/env/dev/Report/ReportScopes#technical-margin) are here shown side by side as the allocation to profit or loss is done at each step of the Analysis of Change. ", + "\nThe Contractual Service Margin (CSM) / Loss Component (LC) / Loss Recovery Component (LR) [report](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#technical-margin) are here shown side by side as the allocation to profit or loss is done at each step of the Analysis of Change. ", "\n", "\nA default slice by EstimateType - which distinguish between CSM, LC and LR contributions - is automatically enforced. " ] diff --git a/ifrs17/README.md b/ifrs17/README.md index 4eb50128..85858685 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -1,5 +1,5 @@

-Systemorph logo +Systemorph logo

IFRS 17 Calculation Engine

@@ -13,14 +13,14 @@ Systemorph portal allows Users to create their own projects powered by the Verte # Overview

-IFRS 17 Solution Overview +IFRS 17 Solution Overview

If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine) (*OverviewCalculationEngine*). You will be introduced to -- [DataModel](./DataModel/DataStructure) (*./DataModel/DataStructure*) with links to detailed description of individual data types, dimensions and partitions employed -- [Calculation](./Import/ImportScopeCalculation) (*./Import/ImportScopeCalculation*) with in detail description using mathematical formulas and links to supporting material +- [DataModel](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed +- [Calculation](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material # Got Questions From 0a631c726e838ec213e6f6429f1cef360a5ac7ab Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 15:52:03 +0100 Subject: [PATCH 06/18] rename of directories in file --- .../DataNodeParameters_CH_2020_12.csv | 0 .../DataNodeStates_CH_2020_12.csv | 0 .../DataNodes_CH.csv | 0 .../CreditDefaultRate.csv | 0 .../ExchangeRate.csv | 0 .../PartnerRating.csv | 0 .../YieldCurve.csv | 0 .../ReportingNodes.csv | 0 .../Actuals_CH_2020_12.csv | 0 .../Actuals_CH_2021_3.csv | 0 .../NominalCashflows_CH_2020_12.csv | 0 .../NominalCashflows_CH_2021_3.csv | 0 .../Openings_CH_2020_12.csv | 0 .../SimpleValue_CH_2020_12.csv | 0 .../InitSystemorphBaseToMemory.ipynb | 16 ++++++------ .../InitSystemorphToDatabase.ipynb | 26 +++++++++---------- .../InitSystemorphToMemory.ipynb | 12 ++++----- .../OverviewIFRS17Template.ipynb | 8 +++--- 18 files changed, 31 insertions(+), 31 deletions(-) rename full-ifrs17-template/Files/{700.DataNodes => DataNodes}/DataNodeParameters_CH_2020_12.csv (100%) rename full-ifrs17-template/Files/{700.DataNodes => DataNodes}/DataNodeStates_CH_2020_12.csv (100%) rename full-ifrs17-template/Files/{700.DataNodes => DataNodes}/DataNodes_CH.csv (100%) rename full-ifrs17-template/Files/{800.Parameters => Parameters}/CreditDefaultRate.csv (100%) rename full-ifrs17-template/Files/{800.Parameters => Parameters}/ExchangeRate.csv (100%) rename full-ifrs17-template/Files/{800.Parameters => Parameters}/PartnerRating.csv (100%) rename full-ifrs17-template/Files/{800.Parameters => Parameters}/YieldCurve.csv (100%) rename full-ifrs17-template/Files/{300.ReportingNodes => ReportingNodes}/ReportingNodes.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/Actuals_CH_2020_12.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/Actuals_CH_2021_3.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/NominalCashflows_CH_2020_12.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/NominalCashflows_CH_2021_3.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/Openings_CH_2020_12.csv (100%) rename full-ifrs17-template/Files/{900.TransactionalData => TransactionalData}/SimpleValue_CH_2020_12.csv (100%) diff --git a/full-ifrs17-template/Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv b/full-ifrs17-template/Files/DataNodes/DataNodeParameters_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv rename to full-ifrs17-template/Files/DataNodes/DataNodeParameters_CH_2020_12.csv diff --git a/full-ifrs17-template/Files/700.DataNodes/DataNodeStates_CH_2020_12.csv b/full-ifrs17-template/Files/DataNodes/DataNodeStates_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/700.DataNodes/DataNodeStates_CH_2020_12.csv rename to full-ifrs17-template/Files/DataNodes/DataNodeStates_CH_2020_12.csv diff --git a/full-ifrs17-template/Files/700.DataNodes/DataNodes_CH.csv b/full-ifrs17-template/Files/DataNodes/DataNodes_CH.csv similarity index 100% rename from full-ifrs17-template/Files/700.DataNodes/DataNodes_CH.csv rename to full-ifrs17-template/Files/DataNodes/DataNodes_CH.csv diff --git a/full-ifrs17-template/Files/800.Parameters/CreditDefaultRate.csv b/full-ifrs17-template/Files/Parameters/CreditDefaultRate.csv similarity index 100% rename from full-ifrs17-template/Files/800.Parameters/CreditDefaultRate.csv rename to full-ifrs17-template/Files/Parameters/CreditDefaultRate.csv diff --git a/full-ifrs17-template/Files/800.Parameters/ExchangeRate.csv b/full-ifrs17-template/Files/Parameters/ExchangeRate.csv similarity index 100% rename from full-ifrs17-template/Files/800.Parameters/ExchangeRate.csv rename to full-ifrs17-template/Files/Parameters/ExchangeRate.csv diff --git a/full-ifrs17-template/Files/800.Parameters/PartnerRating.csv b/full-ifrs17-template/Files/Parameters/PartnerRating.csv similarity index 100% rename from full-ifrs17-template/Files/800.Parameters/PartnerRating.csv rename to full-ifrs17-template/Files/Parameters/PartnerRating.csv diff --git a/full-ifrs17-template/Files/800.Parameters/YieldCurve.csv b/full-ifrs17-template/Files/Parameters/YieldCurve.csv similarity index 100% rename from full-ifrs17-template/Files/800.Parameters/YieldCurve.csv rename to full-ifrs17-template/Files/Parameters/YieldCurve.csv diff --git a/full-ifrs17-template/Files/300.ReportingNodes/ReportingNodes.csv b/full-ifrs17-template/Files/ReportingNodes/ReportingNodes.csv similarity index 100% rename from full-ifrs17-template/Files/300.ReportingNodes/ReportingNodes.csv rename to full-ifrs17-template/Files/ReportingNodes/ReportingNodes.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2020_12.csv b/full-ifrs17-template/Files/TransactionalData/Actuals_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2020_12.csv rename to full-ifrs17-template/Files/TransactionalData/Actuals_CH_2020_12.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2021_3.csv b/full-ifrs17-template/Files/TransactionalData/Actuals_CH_2021_3.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/Actuals_CH_2021_3.csv rename to full-ifrs17-template/Files/TransactionalData/Actuals_CH_2021_3.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv b/full-ifrs17-template/Files/TransactionalData/NominalCashflows_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv rename to full-ifrs17-template/Files/TransactionalData/NominalCashflows_CH_2020_12.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv b/full-ifrs17-template/Files/TransactionalData/NominalCashflows_CH_2021_3.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv rename to full-ifrs17-template/Files/TransactionalData/NominalCashflows_CH_2021_3.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/Openings_CH_2020_12.csv b/full-ifrs17-template/Files/TransactionalData/Openings_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/Openings_CH_2020_12.csv rename to full-ifrs17-template/Files/TransactionalData/Openings_CH_2020_12.csv diff --git a/full-ifrs17-template/Files/900.TransactionalData/SimpleValue_CH_2020_12.csv b/full-ifrs17-template/Files/TransactionalData/SimpleValue_CH_2020_12.csv similarity index 100% rename from full-ifrs17-template/Files/900.TransactionalData/SimpleValue_CH_2020_12.csv rename to full-ifrs17-template/Files/TransactionalData/SimpleValue_CH_2020_12.csv diff --git a/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb index e910c089..d6b5464f 100644 --- a/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb +++ b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb @@ -106,7 +106,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/300.ReportingNodes/ReportingNodes.csv\").WithType().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/ReportingNodes/ReportingNodes.csv\").WithType().WithTarget(DataSource).ExecuteAsync()" ] }, { @@ -128,25 +128,25 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/YieldCurve.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/YieldCurve.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/ExchangeRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/ExchangeRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/PartnerRating.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/PartnerRating.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/CreditDefaultRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/CreditDefaultRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { @@ -158,19 +158,19 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodes_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodes_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodeStates_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodeStates_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodeParameters_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()" ] }, { diff --git a/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb b/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb index cc45633d..104f646d 100644 --- a/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb +++ b/full-ifrs17-template/Initialization/InitSystemorphToDatabase.ipynb @@ -84,7 +84,7 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/300.ReportingNodes/ReportingNodes.csv\").WithType().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/ReportingNodes/ReportingNodes.csv\").WithType().WithTarget(DataSource).ExecuteAsync()" ] }, { @@ -106,25 +106,25 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/YieldCurve.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/YieldCurve.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/ExchangeRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/ExchangeRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/PartnerRating.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/PartnerRating.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/800.Parameters/CreditDefaultRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/Parameters/CreditDefaultRate.csv\").WithType().SnapshotMode().WithTarget(DataSource).ExecuteAsync()" ] }, { @@ -136,19 +136,19 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodes_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodes_CH.csv\").WithFormat(ImportFormats.DataNode).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodeStates_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodeStates_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeState).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/700.DataNodes/DataNodeParameters_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/DataNodes/DataNodeParameters_CH_2020_12.csv\").WithFormat(ImportFormats.DataNodeParameter).WithTarget(DataSource).ExecuteAsync()" ] }, { @@ -160,31 +160,31 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Openings_CH_2020_12.csv\").WithFormat(ImportFormats.Opening).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Openings_CH_2020_12.csv\").WithFormat(ImportFormats.Opening).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2021_3.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Actuals_CH_2021_3.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2021_3.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ] }, { diff --git a/full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb b/full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb index 057f5088..a96f6a66 100644 --- a/full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb +++ b/full-ifrs17-template/Initialization/InitSystemorphToMemory.ipynb @@ -52,37 +52,37 @@ { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Openings_CH_2020_12.csv\").WithFormat(ImportFormats.Opening).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Openings_CH_2020_12.csv\").WithFormat(ImportFormats.Opening).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2020_12.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2020_12.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/NominalCashflows_CH_2021_3.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/NominalCashflows_CH_2021_3.csv\").WithFormat(ImportFormats.Cashflow).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/Actuals_CH_2021_3.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/Actuals_CH_2021_3.csv\").WithFormat(ImportFormats.Actual).WithTarget(DataSource).ExecuteAsync()" ] }, { "cell_type": "code", "source": [ - "await Import.FromFile(\"../Files/900.TransactionalData/SimpleValue_CH_2020_12.csv\").WithFormat(ImportFormats.SimpleValue ).WithTarget(DataSource).ExecuteAsync()" + "await Import.FromFile(\"../Files/TransactionalData/SimpleValue_CH_2020_12.csv\").WithFormat(ImportFormats.SimpleValue ).WithTarget(DataSource).ExecuteAsync()" ] }, { diff --git a/full-ifrs17-template/OverviewIFRS17Template.ipynb b/full-ifrs17-template/OverviewIFRS17Template.ipynb index 026e24e4..a45815f8 100644 --- a/full-ifrs17-template/OverviewIFRS17Template.ipynb +++ b/full-ifrs17-template/OverviewIFRS17Template.ipynb @@ -79,7 +79,7 @@ "", "\n## Data input: Reporting nodes, dimensions and partitions", "\n", - "\nSee folders *Files* (DimensionsAndPartitions) and *Files/300.ReportingNodes* (ReportingNodes).", + "\nSee folders *Files* (DimensionsAndPartitions) and *Files/ReportingNodes* (ReportingNodes).", "\n- **ReportingNodes**: List of business units, often per country, with system name and display name, currency and \"G\" for the whole group", "\n- **DimensionsAndPartitions**: The many dimensions (21) required to characterize all of the data and results, with system names and display names. This information is quite stable, but some information related to partitions refers to the reporting nodes " ] @@ -90,7 +90,7 @@ "", "\n## Data input: Groups of insurance and reinsurance contracts", "\n", - "\nSee folder Files/700.DataNodes. The information is about data nodes, that is Groups of Insurance Contracts (GICs) and Groups of Reinsurance Contracts (GRICs) and portfolios of these.", + "\nSee folder Files/DataNodes. The information is about data nodes, that is Groups of Insurance Contracts (GICs) and Groups of Reinsurance Contracts (GRICs) and portfolios of these.", "\n- **DataNodes**: List of all GICs and GRICs, each with several attributes and the portfolios to which they belong; an additional attribute of GRICs being the reinsurance partner", "\n- **DataNodeParameters** *\\_* *\\_* *\\_*: List of those GICs and GRICs that are actually used for the given reporting node/year/month combination with few attributes; if needed, more such files may be added for other reporting node/year/month combinations", "\n- **DataNodeStates** *\\_* *\\_* *\\_*: Switching data nodes on and off, the normal state is (\"Active\") for all the GICs and GRICs of the reporting node/year/month combination; if needed, more such files may be added for other reporting node/year/month combinations" @@ -102,7 +102,7 @@ "", "\n## Data input: Parameters from financial markets", "\n", - "\nSee folder Files/800.Parameters.", + "\nSee folder Files/Parameters.", "\n- **YieldCurve**: List of all yield curves to be used, for different currencies and as-of dates (year/month), using a yearly grid of interest rate maturities extending as far as needed", "\n- **ExchangeRate**: List of exchange rates to be used, for different currencies and as-of dates (year/month), with a type (Spot/Average); defined as the value of 1 foreign unit expressed in the group currency of the insurance company ", "\n- **CreditDefaultRate**: For relevant year/month combinations, each with a full list of all credit ratings in S&P notation with their default rate (= probabilty of default within 1 year)", @@ -115,7 +115,7 @@ "", "\n## Data input: Groups of insurance and reinsurance contracts", "\n", - "\nSee folder Files/900.TransactionalData.", + "\nSee folder Files/TransactionalData.", "\n- **Actuals** *\\_* *\\_* *\\_*: List of all actual amounts for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types and other attributes; we need at least two such files for the two dates of the Analysis of Change", "\n- **Openings** *\\_* *\\_* *\\_*: List of the opening amounts for some GICs that are used by the given reporting node. The year/month combination corresponds to the beginning of the planned Analysis of Change period, so only one such file is required. The entries are by EstimateType and AmountType.", "\n- **NominalCashflows** *\\_* *\\_* *\\_*: List of all projected cash flows for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types, novelty types and other attributes, where the cash flow amounts are given in a regular sequence extending as far as needed; we need at least two such files for the two dates of the Analysis of Change", From 56053c3a7434f1ab656b9a39b56ed52ea174c0c4 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 18:48:00 +0100 Subject: [PATCH 07/18] overview template --- .../Database/PersonalConnectionExample.ipynb | 25 +++++++++ .../OverviewIFRS17Template.ipynb | 54 +++++++++++++++---- 2 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 full-ifrs17-template/Database/PersonalConnectionExample.ipynb diff --git a/full-ifrs17-template/Database/PersonalConnectionExample.ipynb b/full-ifrs17-template/Database/PersonalConnectionExample.ipynb new file mode 100644 index 00000000..0bcdbdd5 --- /dev/null +++ b/full-ifrs17-template/Database/PersonalConnectionExample.ipynb @@ -0,0 +1,25 @@ +{ + "metadata": { + "authors": [], + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "code", + "source": [ + "var connectionStringMsSql = \"here enter your connection string\";" + ] + } + ] +} \ No newline at end of file diff --git a/full-ifrs17-template/OverviewIFRS17Template.ipynb b/full-ifrs17-template/OverviewIFRS17Template.ipynb index a45815f8..2475dbde 100644 --- a/full-ifrs17-template/OverviewIFRS17Template.ipynb +++ b/full-ifrs17-template/OverviewIFRS17Template.ipynb @@ -28,7 +28,7 @@ "source": [ "# Introduction", "\n", - "\nSystemorph's IFRS 17 Calculation Engine is a tool and a solution to conduct all the essential IFRS 17 calculations based on some key input: modeled future **cashflows** and actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). The output is a set of calculated results (CSM, Loss Component, Financial Performance, etc...) that are needed for IFRS 17 reporting, analysis, accounting, steering and other management information.", + "\nSystemorph's IFRS 17 Calculation Engine is a tool and a solution to conduct all the essential IFRS 17 calculations based on some key input: modeled future **cashflows** and actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). The output is a set of calculated results (Contractual Service Margin, Loss Component, Financial Performance, etc...) that are needed for IFRS 17 reporting, analysis, accounting, steering and other management information.", "\n", "\nSystemorph's Full IFRS 17 Template provides a complete example of input data and uses the Calculation Engine for the production of IFRS 17 results. Users can adapt this template to their own needs by changing the input data and calculating their own results.", "\n", @@ -43,7 +43,7 @@ "\n", "\nIFRS 17 is a new accounting standard for insurance contracts. The previous standard IFRS 4, which is based on nominal accounting, is replaced by the economic accounting standard IFRS 17.", "\n", - "\nExplanatory **videos** on **IFRS 17** and a **demo application** can be found on Systemorph's website. Some key points are repeated here briefly.", + "\nSome key points are repeated here briefly.", "\n", "\nIFRS 17 deals with insurance contracts which are on the liability side of the balance sheet. Other accounting standards deal with other parts of the business, primarily IFRS 9 for invested assets.", "\n", @@ -70,18 +70,22 @@ { "cell_type": "markdown", "source": [ - "# Data input" + "# Data input", + "\n", + "\n" ] }, { "cell_type": "markdown", "source": [ "", - "\n## Data input: Reporting nodes, dimensions and partitions", + "\n## Data input: Reporting nodes, dimensions", "\n", - "\nSee folders *Files* (DimensionsAndPartitions) and *Files/ReportingNodes* (ReportingNodes).", + "\nSee folders *Files* (Dimensions) and *Files/ReportingNodes* (ReportingNodes).", "\n- **ReportingNodes**: List of business units, often per country, with system name and display name, currency and \"G\" for the whole group", - "\n- **DimensionsAndPartitions**: The many dimensions (21) required to characterize all of the data and results, with system names and display names. This information is quite stable, but some information related to partitions refers to the reporting nodes " + "\n$$", + "\n$$", + "\n- **Dimensions**: The many dimensions required to characterize all of the data and results, with system names and display names. This information is quite stable." ] }, { @@ -92,7 +96,11 @@ "\n", "\nSee folder Files/DataNodes. The information is about data nodes, that is Groups of Insurance Contracts (GICs) and Groups of Reinsurance Contracts (GRICs) and portfolios of these.", "\n- **DataNodes**: List of all GICs and GRICs, each with several attributes and the portfolios to which they belong; an additional attribute of GRICs being the reinsurance partner", + "\n$$", + "\n$$", "\n- **DataNodeParameters** *\\_* *\\_* *\\_*: List of those GICs and GRICs that are actually used for the given reporting node/year/month combination with few attributes; if needed, more such files may be added for other reporting node/year/month combinations", + "\n$$", + "\n$$", "\n- **DataNodeStates** *\\_* *\\_* *\\_*: Switching data nodes on and off, the normal state is (\"Active\") for all the GICs and GRICs of the reporting node/year/month combination; if needed, more such files may be added for other reporting node/year/month combinations" ] }, @@ -104,8 +112,14 @@ "\n", "\nSee folder Files/Parameters.", "\n- **YieldCurve**: List of all yield curves to be used, for different currencies and as-of dates (year/month), using a yearly grid of interest rate maturities extending as far as needed", + "\n$$", + "\n$$", "\n- **ExchangeRate**: List of exchange rates to be used, for different currencies and as-of dates (year/month), with a type (Spot/Average); defined as the value of 1 foreign unit expressed in the group currency of the insurance company ", + "\n$$", + "\n$$", "\n- **CreditDefaultRate**: For relevant year/month combinations, each with a full list of all credit ratings in S&P notation with their default rate (= probabilty of default within 1 year)", + "\n$$", + "\n$$", "\n- **PartnerRating**: For each reinsurance partner of a relevant GRIC, the rating in S&P notation with the as-of date (year/month)" ] }, @@ -117,7 +131,11 @@ "\n", "\nSee folder Files/TransactionalData.", "\n- **Actuals** *\\_* *\\_* *\\_*: List of all actual amounts for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types and other attributes; we need at least two such files for the two dates of the Analysis of Change", + "\n$$", + "\n$$", "\n- **Openings** *\\_* *\\_* *\\_*: List of the opening amounts for some GICs that are used by the given reporting node. The year/month combination corresponds to the beginning of the planned Analysis of Change period, so only one such file is required. The entries are by EstimateType and AmountType.", + "\n$$", + "\n$$", "\n- **NominalCashflows** *\\_* *\\_* *\\_*: List of all projected cash flows for those GICs and GRICs that are used by the given reporting node/year/month combination, for different amount types, AoC types, novelty types and other attributes, where the cash flow amounts are given in a regular sequence extending as far as needed; we need at least two such files for the two dates of the Analysis of Change", "\n", "\nThe structure of the [Actuals](./InputFormatDescription#actual), [Openings](./InputFormatDescription#opening) and [NominalCashflows](./InputFormatDescription#cashflow) files is explained in a special [notebook](./InputFormatDescription).", @@ -128,10 +146,19 @@ { "cell_type": "markdown", "source": [ - "", - "\n# Reports", + "# Initialization", + "\n", + "\nWith **Initialization** we refer to an automatic import of data.", + "\nImport of dimensions is a necessary step which occurs only once in a production application. ", + "\nIn the context of the present **Full IFRS 17 Template** project other data, such as data nodes and transactional data, are imported through one of the following notebooks:", "\n", - "\nAll the reports are produced by running a notebook such as **[Reports](./Report/Reports#report-production)**. Some information on the reporting functionality can also be found there and in the final Reports section of [OverviewIFRS17](../IFRS17/OverviewIFRS17#reports)." + "\n- [InitSystemorphToDatabase](./Initialization/InitSystemorphToDatabase): where a physical database is used as target data store (database)", + "\n$$", + "\n$$", + "\n- [InitSystemorphToMemory](./Initialization/InitSystemorphToMemory): where memory of the server hosting the application is used as target data store (in-memory). Note that, this memory is lost when connection to the server is interrupted. ", + "\n", + "\nIn the **Full IFRS 17 Template** project we always rely on the in-memory set up in order to be independet from a physical database which might not be available to every user. ", + "\n" ] }, { @@ -139,6 +166,15 @@ "source": [ "" ] + }, + { + "cell_type": "markdown", + "source": [ + "", + "\n# Reports", + "\n", + "\nAll the reports are produced by running a notebook such as **[Reports](./Report/Reports#report-production)**." + ] } ] } \ No newline at end of file From b0ca63e51b46ec9ea52291f4457fc5b2fa9ba83f Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 18:57:06 +0100 Subject: [PATCH 08/18] improve template readme --- full-ifrs17-template/README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 1bdb81b8..1c84842e 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -4,9 +4,9 @@

Full IFRS 17 Template

-[**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/) is a tool to conduct all the essential IFRS 17 calculations given some key figures. +**Full IFRS 17 Template** uses our **IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/) to import several use-cases and show the results. -**Full IFRS 17 Template** uses our IFRS 17 Calculation Engine to import several use-cases and show the results. +**IFRS 17 Calculation Engine** is a tool to conduct all the essential IFRS 17 calculations given some key figures. # Get Started @@ -19,14 +19,17 @@ Check out our video series. You can get started here: For more information on our IFRS 17 initiative check out our [IFRS 17 page](*landing page*). +For an overview of the **Full IFRS 17 Template** project refer to the [OverviewIFRS17Template](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/OverviewIFRS17Template) + # Report -Check out the IFRS 17 reports computed for our mock use-cases [here](https://portal.systemorph.cloud/api/project/full-ifrs-17-template/env/v1.0.0/Report/Reports). -Check out the our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/api/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate). +Check out the IFRS 17 reports computed for our mock use-cases [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Report/Reports). + +Check out the our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate). # Got Questions -For support around the IFRS 17 CalculationEngine get in contact with our [Community](). (*-link to the community page(IFRS17 landing page)*)- +For support around the IFRS 17 CalculationEngine get in contact with our [Community](). (*TODO -link to the community page(IFRS17 landing page)*)- # Contributing From 4c67d57c4c72270e050930ebc6a2b10ab2b63244 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 19:25:20 +0100 Subject: [PATCH 09/18] calculation engine and reports in template --- .../{Consts.ipynb => CalculationEngine.ipynb} | 4 ++-- full-ifrs17-template/Database/Configure.ipynb | 2 +- .../InitSystemorphBaseToMemory.ipynb | 2 +- full-ifrs17-template/Report/Reports.ipynb | 18 ++++++++++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) rename full-ifrs17-template/Constants/{Consts.ipynb => CalculationEngine.ipynb} (86%) diff --git a/full-ifrs17-template/Constants/Consts.ipynb b/full-ifrs17-template/Constants/CalculationEngine.ipynb similarity index 86% rename from full-ifrs17-template/Constants/Consts.ipynb rename to full-ifrs17-template/Constants/CalculationEngine.ipynb index f39ab144..cf36e68d 100644 --- a/full-ifrs17-template/Constants/Consts.ipynb +++ b/full-ifrs17-template/Constants/CalculationEngine.ipynb @@ -18,8 +18,8 @@ { "cell_type": "code", "source": [ - "var projectName = \"ifrs17ce\";", - "\nvar environmentName = \"dev\";", + "var projectName = \"ifrs17\";", + "\nvar environmentName = \"v1.0.0\";", "\nvar notebookName = \"CalculationEngine\";", "\nvar calculationEngine = $\"#!import \\\"//{projectName}/{environmentName}/{notebookName}\\\"\";" ] diff --git a/full-ifrs17-template/Database/Configure.ipynb b/full-ifrs17-template/Database/Configure.ipynb index cbe56388..44886de4 100644 --- a/full-ifrs17-template/Database/Configure.ipynb +++ b/full-ifrs17-template/Database/Configure.ipynb @@ -27,7 +27,7 @@ { "cell_type": "code", "source": [ - "#!import \"../Constants/Consts\"", + "#!import \"../Constants/CalculationEngine\"", "\n#!eval calculationEngine" ] }, diff --git a/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb index d6b5464f..46ba277c 100644 --- a/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb +++ b/full-ifrs17-template/Initialization/InitSystemorphBaseToMemory.ipynb @@ -29,7 +29,7 @@ { "cell_type": "code", "source": [ - "#!import \"../Constants/Consts\"", + "#!import \"../Constants/CalculationEngine\"", "\n#!eval calculationEngine" ] }, diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb index 147e6b7b..a7fd62d4 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/full-ifrs17-template/Report/Reports.ipynb @@ -228,7 +228,9 @@ { "cell_type": "markdown", "source": [ - "# LRC Actuarial" + "# LRC Actuarial", + "\n", + "\nThe [Actuarial Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-actuarial-actuarial-liability-for-remaining-coverage) report shows figures from Fulfilment Cashflow discounted with current yield curve, and the allocated techinical margin. " ] }, { @@ -243,7 +245,9 @@ { "cell_type": "markdown", "source": [ - "# LRC" + "# LRC", + "\n", + "\nThe [Liability for Remaining Coverage](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lrc-liability-for-remaining-coverage) report adds to the [Actuarial Liability for Remaining Coverage](#lrc-actuarial) the contribution of and accrual actuals. A simplified Aoc Chain is used to allow comparison of the balance change between Actuals and Present Values. " ] }, { @@ -258,7 +262,9 @@ { "cell_type": "markdown", "source": [ - "# LIC Actuarial" + "# LIC Actuarial", + "\n", + "\nThe [Actuarial Liability of Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lic-actuarial-actuarial-liability-for-incurred-claims) report shows figures from Fulfilment Cashflow discounted with current yield curve. " ] }, { @@ -273,7 +279,9 @@ { "cell_type": "markdown", "source": [ - "# LIC" + "# LIC", + "\n", + "\nThe [Liability for Incurred Claims](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#lic-liability-for-incurred-claims) adds to the [Actuarial Liability for Incurred Claims](#lic-actuarial) the contribution of and accrual actuals." ] }, { @@ -290,6 +298,8 @@ "source": [ "# Financial Performance", "\n", + "\nThe [Financial Performance](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#ifrs-17-financial-performance) report discloses the Change in Estimate of the IFRS 17 balance sheet items ([LRC](#lrc) and [LIC](#lic)) and the relevant incurred cashflows (Premiums, Claims, Expenses, etc...) for the given period.", + "\n", "\nUse the expand and collapse buttons in the report rows to change the granularity of the figures displayed." ] }, From bf9a703ef68e6b9dc5677923ca0f68c206534fca Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 23:02:24 +0100 Subject: [PATCH 10/18] more on ifrs17ce --- ifrs17/Import/ImportScopeCalculation.ipynb | 20 +++----- ifrs17/Import/Importers.ipynb | 58 +++++++++++++++++----- ifrs17/OverviewCalculationEngine.ipynb | 43 +++++++++------- ifrs17/Report/ReportScopes.ipynb | 8 +-- 4 files changed, 82 insertions(+), 47 deletions(-) diff --git a/ifrs17/Import/ImportScopeCalculation.ipynb b/ifrs17/Import/ImportScopeCalculation.ipynb index 6a5269f3..f930054f 100644 --- a/ifrs17/Import/ImportScopeCalculation.ipynb +++ b/ifrs17/Import/ImportScopeCalculation.ipynb @@ -571,9 +571,9 @@ "\n### Telescoping Difference", "\n", "\n", - "\nPresent Value figures for a specific period are typically reported through an analysis of change, where for each [AocStep](#aoc-steps-structure) the variation with respect to the preceding AocStep is shown.", + "\nPresent Value figures for a specific period are typically reported through an analysis of change, where for each [AocStep](#aoc-step-structure) the variation with respect to the preceding AocStep is shown.", "\n", - "\nThe Telescoping Difference is basically the delta between two adjacent AoC steps, whereby the [ParentAocStep](#aoc-steps-structure) is used to determine the AoC step. ", + "\nThe Telescoping Difference is basically the delta between two adjacent AoC steps, whereby the [ParentAocStep](#aoc-step-structure) is used to determine the AoC step. ", "\n", "\nIt is defined as follows:", "\n", @@ -1061,10 +1061,10 @@ "\n## Actual Values", "\n", "\nWe consider 4 types of Actual values, which are distinguished through their [Estimate Type](../DataModel/DataStructure#estimate-type):", - "\n- Actuals (A)", - "\n- Advance Actuals (AA)", - "\n- Overdue Actuals (OA)", - "\n- Deferrable Actuals (DA)", + "\n- [Actuals](#actuals) (A)", + "\n- [Advance Actuals](#advance-actuals) (AA)", + "\n- [Overdue Actuals](#overdue-actuals) (OA)", + "\n- [Deferrable Actuals](#deferrable-actuals) (DA)", "\n", "\nwith the Estimate Type's system name shown between parenthesis above.", "\n", @@ -1778,7 +1778,7 @@ { "cell_type": "markdown", "source": [ - "The scopes below are simply used to set the appropriate Estimate Type (C for $CSM$, L for $LC$ and LR for $LCR$), as well as to set $CSM$ values to be positive:" + "The scopes below are simply used to set the appropriate Estimate Type (C for $CSM$, L for $LC$ and LR for $LoReCo$), as well as to set $CSM$ values to be positive:" ] }, { @@ -1982,11 +1982,7 @@ "\n Value = x.Value,", "\n Partition = GetStorage().TargetPartition", "\n });", - "\n", - "\n /*private double validateSingleEoP => Math.Abs(ValueCsm) > Precision && Math.Abs(ValueLc) > Precision ", - "\n ? (double)ApplicationMessage.Log(Error.MultipleEoP)", - "\n : default;", - "\n */", + "\n ", "\n IEnumerable CalculatedIfrsVariables => GetStorage().ImportFormat switch {", "\n ImportFormats.Actual => Actual.Concat(AdvanceActual).Concat(OverdueActual).Concat(ActEAForPremium)", "\n .Concat(DeferrableActual).Concat(Csms).Concat(Loss),", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 7aeb86d5..31bd1255 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -35,7 +35,10 @@ { "cell_type": "markdown", "source": [ - "# Parsing Storage" + "# Parsing Storage", + "\n", + "\nThe Parsing storage collects data required for the import of a file. ", + "\nSuch storage is then passed to parsing format definitions to map the content of the file into variables." ] }, { @@ -210,7 +213,9 @@ { "cell_type": "markdown", "source": [ - "# Basics" + "# Basics", + "\n", + "\nBasic methods to delete variable and update variables to the data source are defined." ] }, { @@ -308,15 +313,16 @@ { "cell_type": "markdown", "source": [ - "The Analysis of Change configuration is parsed from the input file and complemented with defaults to allow for an easy insertion of new AOC steps. ", + "The [Analysis of Change configuration](../DataModel/DataStructure#aoc-step-configuration) is parsed from the input file and complemented with defaults to allow for an easy insertion of new Aoc steps. ", "\n", - "\nAfter having checked that the AocTypes loaded in the target DataSource are including all the compulsory ones, default configurations are generated on the basis of the AocTypes ordering. ", + "\nAfter having checked that the [AocTypes](../DataModel/DataStructure#aoc-variable-type) loaded in the target DataSource are including all the compulsory ones, default configurations are generated on the basis of the AocTypes ordering. ", "\n", - "\nThe following categories have been identified based on the *Order* of the novel AOC step:", + "\nThe following categories have been identified based on the *Order* of the novel Aoc step:", "\n", - "\n| Category | Default added with same configuration of |", - "\n| --------------------- | ----------------------------------------------------- |", - "\n| Order < RCU | MC with Novelty I |", + "\n**Category** $$\\hspace{2.8cm}$$ **Default added with same configuration of**", + "\n| | |", + "\n|-----------------------|-------------------------------------------------------|", + "\n| Order < RCU $$\\phantom{.......................}$$ | MC with Novelty I |", "\n| RCU < Order < CF | RCU with Novelty I |", "\n| IA < Order < YCU | AU with both Novelty I and N |", "\n| CRU < Order < WO | EV with Novelty I and N |", @@ -325,6 +331,18 @@ "\nThe new Aoc Configurations are created with the same order of the Aoc Types. " ] }, + { + "cell_type": "code", + "source": [ + "" + ] + }, + { + "cell_type": "code", + "source": [ + "" + ] + }, { "cell_type": "code", "source": [ @@ -405,7 +423,9 @@ { "cell_type": "markdown", "source": [ - "## Parse Main Tab and return Args" + "## Parse Main Tab and return Args", + "\n", + "\nThe main table of our custom import formats contains the information which are required to identify the data partition. These information are temporarily stored in [Args](../DataModel/DataStructure#args) and used in the next methods. " ] }, { @@ -450,7 +470,9 @@ { "cell_type": "markdown", "source": [ - "## Parse and Upload: Data Nodes" + "## Parse and Upload: Data Nodes", + "\n", + "\n[Portfolios](../DataModel/DataStructure#portfolios) and [Group of Contracts](../DataModel/DataStructure#group-of-contracts) are imported in the same file. " ] }, { @@ -760,7 +782,14 @@ { "cell_type": "markdown", "source": [ - "## Parse and Upload: Variables" + "## Parse and Upload: Variables", + "\n", + "\nVariables are created upon import of Cash flow and Actual file.", + "\n
Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables-cashflows). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", + "\n
Actuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable). ", + "\n", + "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import. ", + "\n
In order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic. " ] }, { @@ -990,7 +1019,12 @@ { "cell_type": "markdown", "source": [ - "# Simple Value Import" + "# Simple Value Import", + "\n", + "\nSimple Value import is a special import that imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", + "\n
It can be used in two very different scenarios: ", + "\n- Simple Value : to import final figures as computed by an independent tool. In this case our IFRS 17 calculation is not applied and variable are stored in the Database for being consumed in reports with our powerful reporting tooling. ", + "\n- Opening value : in the **fair value approach** this importer allows the import of in force opening values (Aoc step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA." ] }, { diff --git a/ifrs17/OverviewCalculationEngine.ipynb b/ifrs17/OverviewCalculationEngine.ipynb index 866c5502..651ab74b 100644 --- a/ifrs17/OverviewCalculationEngine.ipynb +++ b/ifrs17/OverviewCalculationEngine.ipynb @@ -28,11 +28,11 @@ "source": [ "# Introduction", "\n", - "\nSystemorph's IFRS 17 Calculation Engine is a tool and a solution to conduct all the essential IFRS 17 calculations based on some key input: modeled future **cashflows** and actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). The output is a set of calculated results (CSM, Loss Component, Financial Performance, etc...) that are needed for IFRS 17 reporting, analysis, accounting, steering and other management information.", + "\nSystemorph's IFRS 17 Calculation Engine is a tool and a solution to conduct all the essential IFRS 17 calculations based on some key input: modeled future **cashflows** and actual amounts for **groups of insurance contracts** and other relevant parameters (Yield Curve, FX rates, etc...). The output is a set of calculated results (Contractual Service Margin, Loss Component, Financial Performance, etc...) that are needed for IFRS 17 reporting, analysis, accounting, steering and other management information.", "\n", "\nThis notebook provides an **overview** of Systemorph's IFRS 17 Calculation Engine with brief introductions to all the main steps.", "\n", - "\nThere are numerous **links** to several notebooks of the Calculation Engine. These notebooks contain specifications, code and also some detailed explanations with formulas in markdown blocks. The most important ones in this respect are [DataModel/DataStructure](./DataModel/DataStructure#data-structure), [ImportScopes](./Import/ImportScopeCalculation#import-scope-calculation) and [ReportScopes](./Report/ReportScopes#report-scopes)." + "\nThere are numerous **links** to several notebooks of the Calculation Engine. These notebooks contain specifications, code and also some detailed explanations with formulas in markdown blocks. The most important ones in this respect are [DataStructure](./DataModel/DataStructure#data-structure), [ImportScopes](./Import/ImportScopeCalculation#import-scope-calculation) and [ReportScopes](./Report/ReportScopes#report-scopes)." ] }, { @@ -43,7 +43,7 @@ "\n", "\nIFRS 17 is a new accounting standard for insurance contracts. The previous standard IFRS 4, which is based on nominal accounting, is replaced by the economic accounting standard IFRS 17.", "\n", - "\nExplanatory **videos** on **IFRS 17** and a **demo application** can be found on Systemorph's website. Some key points are repeated here briefly.", + "\nSome key points are repeated here briefly.", "\n", "\nIFRS 17 deals with insurance contracts which are on the liability side of the balance sheet. Other accounting standards deal with other parts of the business, primarily IFRS 9 for invested assets.", "\n", @@ -74,7 +74,7 @@ "", "\n# Data Model, Data Import", "\n", - "\nThe IFRS 17 calculations are based on a well-defined **data model**. The data input files are set up according to the data model, and the data import and all the ensuing calculations up to the final report generation respect the data model.", + "\nThe IFRS 17 calculations are based on a well-defined [DataModel](./DataModel/DataStructure#data-structure). The data input files are set up according to the data model, and the data import and all the ensuing calculations up to the final report generation respect the data model.", "\n", "\nThe IFRS 17 calculations start by importing data input files, and the more complex IFRS 17 Business Logic is defined in the [ImportScopes](./Import/ImportScopeCalculation#import-scope-calculation) notebook. This basis will later be used to calculate and generate different reports." ] @@ -87,9 +87,9 @@ "\n", "\nThe data model includes the definition of reporting nodes and dimensions to be used, including identities, amount types, group of insurance contracts and many more.", "\n", - "\nThe notebook [DataModel/DataStructure](./DataModel/DataStructure#data-structure) defines the data records, dimensions and interfaces of the data model. There is a long section on the many [dimensions](./DataModel/DataStructure#dimensions) used to characterize the business and its IFRS 17 model.", + "\nThe notebook [DataStructure](./DataModel/DataStructure#data-structure) defines the data records, dimensions and interfaces of the data model. There is a long section on the many [dimensions](./DataModel/DataStructure#dimensions) used to characterize the business and its IFRS 17 model.", "\n", - "\nThe [input files](#data-input-dim-nodes) ReportingNodes and especially DimensionsAndPartitions provide an overview of data structures actually used. Some dimensions are hierarchical, so some entries have parent entries.", + "\nThe [input files](#data-input-dim-nodes) for ReportingNodes and especially Dimensions provide an overview of data structures actually used. Some dimensions are hierarchical, so some entries have parent entries.", "\n", "\nMany abbreviations and acronyms used later in the documentation and the code are the **system names**, where the corresponding display names can be found in the corresponding input files together with the attributes." ] @@ -100,13 +100,11 @@ "", "\n## Data import and related calculations", "\n", - "\nSeveral notebooks organize the data import. Methods for importing and accessing data are in the class [ImportStorage](./Import/ImportStorage#import-storage). Methods for further calculations to be done upon import are in [ImportScopeCalculation](./Import/ImportScopeCalculation#import-scope-calculation).", + "\nSeveral notebooks organize the data import. Methods for importing and accessing data are in the [Importers](./Import/Importers) notebook. The [ImportStorage](./Import/ImportStorage#import-storage) prepare the data to perfom the calculation required. Finally, methods for the calculations are in [ImportScopeCalculation](./Import/ImportScopeCalculation#import-scope-calculation).", "\n", - "\nHowever, the import as such is conducted by other notebooks which use the methods of ImportStorage and ImportScopeCalculation in a chain of notebook imports:", + "\nHowever, the import as such is conducted by other notebooks which use the methods of Importers, ImportStorage and ImportScopeCalculation in a chain of notebook imports:", "\n", - "\nImportStorage --> ImportScopeCalculation --> [Importers](./Import/Importers#importers) --> [InitSystemorphBaseToMemory](./Initialization/InitSystemorphBaseToMemory#init-base-to-memory) --> [InitSystemorphToMemory](./Initialization/InitSystemorphToMemory#init-base-to-memory).", - "\n", - "\nThe latter two notebooks initialize and store the imported and derived data in memory for further usage. To store the data in a physical database, [InitSystemorphToDatabase](./Initialization/InitSystemorphToDatabase#init-to-database) can be employed.", + "\nImportStorage --> ImportScopeCalculation --> Importers", "\n", "\nThe calculations of ImportScopeCalculation cover a large part of the IFRS 17 methodology and are explained in the section below." ] @@ -121,20 +119,33 @@ "\n", "\nThe main concepts and parts of ImportScopeCalculation are listed here, with links.", "\n- Structure and sequence of the **[Analysis of Change (AoC)](./Import/ImportScopeCalculation#aoc-step-structure)** steps for the given period", + "\n$$", + "\n$$", "\n- **[Discounting](./Import/ImportScopeCalculation#discounting-calculation)** projected cash flows using [yield curves](#data-input-parameters) (current or locked in)", + "\n$$", + "\n$$", "\n- **[Nominal](./Import/ImportScopeCalculation#nominal-values)** cash flow amounts per AoC step", + "\n$$", + "\n$$", "\n- **[Present Values (PV)](./Import/ImportScopeCalculation#present-values)** of cash flow amounts for all AoC steps:", "\n - [Cumulated discounted](./Import/ImportScopeCalculation#cumulated-discounted-cashflows) cash flow amounts for all AoC steps", "\n - [Telescoping difference](./Import/ImportScopeCalculation#telescopic-difference) calculation of cumulated discounted cashflows per AoC step, where the total PV change over the period is the telescoping sum of all these differences", - "\n - [Present Value calculation](./Import/ImportScopeCalculation#present-value) at the beginning and end of the period, with its underlying [PV base](./Import/ImportScopeCalculation#present-value-base) calculations for different AoC types and for [current and locked-in](./Import/ImportScopeCalculation#current-and-locked) yield curves", + "\n - [Present Value calculation](./Import/ImportScopeCalculation#present-value) at the beginning and end of the period, with its underlying [Present value base](./Import/ImportScopeCalculation#present-value-base) calculations for different AoC types and for [current and locked-in](./Import/ImportScopeCalculation#current-and-locked) yield curves", "\n - [Interest accretion](./Import/ImportScopeCalculation#interest-accretion) cash flow calculation (one of the AoC steps)", "\n- **[Risk Adjustment (RA)](./Import/ImportScopeCalculation#risk-adjustment)** calculation, a requirement of the IFRS 17 standard", + "\n$$", + "\n$$", "\n- **[Amortization](./Import/ImportScopeCalculation#amortization)**, the AoC step dealing with the reduction of the remaining exposure over the period:", "\n - [Coverage Unit (CU)](./Import/ImportScopeCalculation#coverage-units), the quantity of services provided by a given GIC, considering one period (reflecting the run-off pattern of the GIC)", "\n - [Amortization factor](./Import/ImportScopeCalculation#amortization-factor), the relative size of the amortization of a GIC, monthly and for a longer time interval", + "\n$$", + "\n$$", "\n- **[Actuals](./Import/ImportScopeCalculation#actual-values)**, treatment of actual values per GIC or GRIC, distinguished according to by their Estimate Type: Ordinary Actuals, Advance Actuals, Overdue Actuals and Deferrable Actuals", "\n - Calculation of [Actuals Base](./Import/ImportScopeCalculation#actual-base) values for a given GIC and per Estimate Type and Amount Type", "\n - Different Estimate Types of Actuals and their calculations: Ordinary [Actuals](./Import/ImportScopeCalculation#actuals), [Advance Actuals](./Import/ImportScopeCalculation#advance-actuals) paid before the due date which is inside the AoC period, [Overdue Actuals](./Import/ImportScopeCalculation#overdue-actuals) paid after the AoC period, [Deferrable Actuals](./Import/ImportScopeCalculation#overdue-actuals) whose recognition is deferred (typically used for expenses of different kinds)", + "\n", + "\n$$", + "\n$$", "\n- **[Contractual Service Margin (CSM), Loss Component LC) and Loss Recovery Component (LRC)](./Import/ImportScopeCalculation#csm)**, modeling the treatment of unearned profits (CSM) and losses (LC, LRC) as required by the IFRS 17 standard, per GIC or GRIC:", "\n - [Fulfillment Cashflow (FCF)](./Import/ImportScopeCalculation#fulfillment-cashflow), same as the aforementioned cumulated discounted cashflow, now adding the risk adjustment component as a basis for CSM and LC calculations", "\n - [Technical Margin](./Import/ImportScopeCalculation#technical-margin), which is the FCF with special rules for different AoC steps including the Amortization step, also using and calculating the Interest Accretion Factor, Premiums, Deferrals and Investment Claims", @@ -153,13 +164,7 @@ "\n", "\nSome reports of ReportScopes just present existing data from the database, namely the imported data and the results already calculated using the methods of [ImportScopes](#model-calc).", "\n", - "\nSome other reports related to **[Financial Performance](./Report/ReportScopes#financial-performance)** (profit & loss) require further calculations provided by ReportScopes. An IFRS 17 financial performance report has at least four sections: Insurance Revenue, Insurance Service Expense, Insurance Finance Income/Expense and Other Comprehensive Income. Formulas are provided [here](./Report/ReportScopes#financial-performance)." - ] - }, - { - "cell_type": "code", - "source": [ - "" + "\nSome other reports related to **[Financial Performance](./Report/ReportScopes#ifrs-17-financial-performance)** (profit & loss) require further calculations provided by ReportScopes. An IFRS 17 financial performance report has at least four sections: Insurance Revenue, Insurance Service Expense, Insurance Finance Income/Expense and Other Comprehensive Income. Formulas are provided [here](./Report/ReportScopes#ifrs-17-financial-performance)." ] } ] diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb index b6fd584d..28694e1d 100644 --- a/ifrs17/Report/ReportScopes.ipynb +++ b/ifrs17/Report/ReportScopes.ipynb @@ -177,7 +177,7 @@ "", "\n### Best Estimate", "\n", - "\nBest Estimate of Present Value (PV) report includes contributions from the [Present Value](../Import/ImportScopeCalculation#current-and-locked) calculation. The result of the Locked-in calculation is used when the Valuation Approach is BBA and the flag for Oci is active." + "\nBest Estimate of Present Value (PV) report includes contributions from the [Present Value](../Import/ImportScopeCalculation#present-values) calculation. The result of the Locked-in calculation is used when the Valuation Approach is BBA and the flag for Oci is active." ] }, { @@ -365,7 +365,7 @@ "", "\n## LIC Actuarial (Actuarial Liability for Incurred Claims)", "\n", - "\nLiability of Incurred Claims (LIC Actuarial) report includes the contributions from [Fulfillment cashflow](#fulfillment-cashflows)." + "\nActuarial Liability of Incurred Claims (LIC Actuarial) report includes the contributions from [Fulfillment cashflow](#fulfillment-cashflows)." ] }, { @@ -410,7 +410,7 @@ "", "\n## LRC Actuarial (Actuarial Liability for Remaining Coverage)", "\n", - "\nLiability for Remaining Coverage (LRC) report includes all the contributions from [Fulfillment cashflow](#fulfillment-cashflows), [Contructual Sevice Margin](#technical-margin), [Loss Component](#technical-margin), and [Loss Recovery Component](#technical-margin)." + "\nActuarial Liability for Remaining Coverage (LRC) report includes all the contributions from [Fulfillment cashflow](#fulfillment-cashflows), [Contructual Sevice Margin](#technical-margin), [Loss Component](#technical-margin), and [Loss Recovery Component](#technical-margin)." ] }, { @@ -456,7 +456,7 @@ { "cell_type": "markdown", "source": [ - "", + "", "\n# IFRS 17 Financial Performance" ] }, From 07989574efc314cacb5a29e9e58a2fa674c8d49a Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 23:18:35 +0100 Subject: [PATCH 11/18] NB titles --- ifrs17/Export/ExportConfiguration.ipynb | 6 ++++++ ifrs17/Utils/Extensions.ipynb | 6 ++++++ ifrs17/Utils/ImportCalculationMethods.ipynb | 6 ++++++ ifrs17/Utils/Queries.ipynb | 6 ++++++ ifrs17/Utils/TestHelper.ipynb | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/ifrs17/Export/ExportConfiguration.ipynb b/ifrs17/Export/ExportConfiguration.ipynb index e3fa8ad4..6ce27a87 100644 --- a/ifrs17/Export/ExportConfiguration.ipynb +++ b/ifrs17/Export/ExportConfiguration.ipynb @@ -17,6 +17,12 @@ "nbformat": 4, "nbformat_minor": 5, "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Export Configuration

" + ] + }, { "cell_type": "code", "source": [ diff --git a/ifrs17/Utils/Extensions.ipynb b/ifrs17/Utils/Extensions.ipynb index 0eb9c443..e006c87e 100644 --- a/ifrs17/Utils/Extensions.ipynb +++ b/ifrs17/Utils/Extensions.ipynb @@ -17,6 +17,12 @@ "nbformat": 4, "nbformat_minor": 5, "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Extention Methods Import Calculation Methods Queries Test Helper Methods Date: Fri, 4 Nov 2022 23:18:54 +0100 Subject: [PATCH 12/18] clean up display order --- ifrs17/DataModel/DataStructure.ipynb | 3 --- 1 file changed, 3 deletions(-) diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb index 47f94ce0..4094c958 100644 --- a/ifrs17/DataModel/DataStructure.ipynb +++ b/ifrs17/DataModel/DataStructure.ipynb @@ -149,13 +149,10 @@ "source": [ "public interface IHierarchy", "\n{", - "\n [Display(Order = 10)]", "\n public string Name { get; init; }", "\n ", - "\n [Display(Order = 20)]", "\n public string Parent { get; init; }", "\n ", - "\n [Display(Order = 30)]", "\n public string Child { get; init; }", "\n}" ] From 1e7789328cd5d096bab7dc0b24d41faf800fc7ef Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Fri, 4 Nov 2022 23:19:10 +0100 Subject: [PATCH 13/18] improve validation --- ifrs17/Constants/Validations.ipynb | 2 +- ifrs17/Import/Importers.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ifrs17/Constants/Validations.ipynb b/ifrs17/Constants/Validations.ipynb index afd2e82e..3ee38f17 100644 --- a/ifrs17/Constants/Validations.ipynb +++ b/ifrs17/Constants/Validations.ipynb @@ -156,7 +156,7 @@ "source": [ "public static string Get (Warning w, params string[] s) => (w, s.Length) switch {", "\n // Import", - "\n (Warning.ActiveDataNodeWithCashflowBOPI , _) => $\"Cashflows for active DataNode has been parsed with AocType {AocTypes.BOP} and Novelty {Novelties.I} \",", + "\n (Warning.ActiveDataNodeWithCashflowBOPI , 1) => $\"Cash flow with AocType: {AocTypes.BOP} and Novelty: {Novelties.I} for Group of Contract {s[0]} is not allowed because previous period data are available.\",", "\n // Default", "\n (Warning.Generic , _) => $\"{s[0]}\",", "\n (_ , _) => $\"Warning not found.\"", diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 31bd1255..c8659d4f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -849,7 +849,7 @@ "\n ", "\n // Filter out cashflows for DataNode that were created in the past and are still active and come with AocType = BOPI", "\n if(dataNodeData.Year < args.Year && aocType == AocTypes.BOP && novelty == Novelties.I) {", - "\n ApplicationMessage.Log(Warning.ActiveDataNodeWithCashflowBOPI);", + "\n ApplicationMessage.Log(Warning.ActiveDataNodeWithCashflowBOPI, dataNode);", "\n return null;", "\n }", "\n ", From b6814a39ef7014472c8fe3470b5a69d640ee29dd Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Sat, 5 Nov 2022 15:14:49 +0100 Subject: [PATCH 14/18] fix links --- ifrs17/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ifrs17/README.md b/ifrs17/README.md index 85858685..5ced3989 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -17,14 +17,14 @@ Systemorph portal allows Users to create their own projects powered by the Verte

-If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](OverviewCalculationEngine) (*OverviewCalculationEngine*). +If you want to know more about the Calculation Engine than just its standard technical use, you are recommended to look at [OverviewCalculationEngine](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/OverviewCalculationEngine). You will be introduced to -- [DataModel](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed -- [Calculation](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material +- [DataModel](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure) with links to detailed description of individual data types, dimensions and partitions employed +- [Calculation](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Import/ImportScopeCalculation) with in detail description using mathematical formulas and links to supporting material # Got Questions -For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -link to the community page(IFRS17 landing page)- +For support around the IFRS 17 CalculationEngine get in contact with our [Community](). -TODO link to the community page(IFRS17 landing page)- # Contributing From 59ce1c41acad28be1764870c011905e5b44b357d Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Sat, 5 Nov 2022 15:46:20 +0100 Subject: [PATCH 15/18] fix link --- full-ifrs17-template/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 1c84842e..89aea51c 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -4,7 +4,7 @@

Full IFRS 17 Template

-**Full IFRS 17 Template** uses our **IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/) to import several use-cases and show the results. +**Full IFRS 17 Template** uses our [**IFRS 17 Calculation Engine**](https://portal.systemorph.cloud/api/project/ifrs17/env/v1.0.0/) to import several use-cases and show the results. **IFRS 17 Calculation Engine** is a tool to conduct all the essential IFRS 17 calculations given some key figures. From 7ecf89503a1dac2a10ad0aa5f29a15396b1c2ab1 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Sat, 5 Nov 2022 17:44:24 +0100 Subject: [PATCH 16/18] Close import template --- full-ifrs17-template/Export/MapTemplate.ipynb | 8 +- .../Import/CloseImportTemplate.ipynb | 125 ++++++++++++++++++ full-ifrs17-template/Report/Reports.ipynb | 33 ++++- 3 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 full-ifrs17-template/Import/CloseImportTemplate.ipynb diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb index 6b577a4d..e572b451 100644 --- a/full-ifrs17-template/Export/MapTemplate.ipynb +++ b/full-ifrs17-template/Export/MapTemplate.ipynb @@ -34,7 +34,9 @@ { "cell_type": "markdown", "source": [ - "After setting the desired target Partition, the Data present in the workspace is ready to be exported. " + "After setting the desired target Partition, the Data present in the workspace is ready to be exported. ", + "\n", + "\nThe default location of the exported files is the project file storage. A **download** link is generated and available for as long as the session is active. " ] }, { @@ -54,8 +56,8 @@ "source": [ "/* The DataSource is configured and connected to real database */", "\n//#!eval-notebook \"../Database/Configure\"", - "\n/* The Systemorph set of dimensions + mockdata are dispatched to the unconfigured in-memory DataSource */", - "\n#!eval-notebook \"../Initialization/InitSystemorphBaseToMemory\"" + "\n/* The Systemorph set of dimensions + mockdata (+ those added in the CloseImportTemplate) are dispatched to the unconfigured in-memory DataSource */", + "\n#!eval-notebook \"../Import/CloseImportTemplate\"" ] }, { diff --git a/full-ifrs17-template/Import/CloseImportTemplate.ipynb b/full-ifrs17-template/Import/CloseImportTemplate.ipynb new file mode 100644 index 00000000..eae574bf --- /dev/null +++ b/full-ifrs17-template/Import/CloseImportTemplate.ipynb @@ -0,0 +1,125 @@ +{ + "metadata": { + "authors": [], + "kernelspec": { + "display_name": "Formula Framework", + "language": "C#", + "name": "C#" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/plain", + "name": "C#" + } + }, + "nbformat": 4, + "nbformat_minor": 5, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "

Close Imports Template

" + ] + }, + { + "cell_type": "markdown", + "source": [ + "All imports are triggered via the Import command. Several options can be fluently appended to customize the import action:", + "\n- FromFile() : accepts a string as input (eg. \"../Files/TransactionalData/Openings_CH_2020_12.csv\"). It corresponds the file to be imported complete with the path", + "\n- WithFormat() : accepts a string as input (eg. \"Cashflow\" or \"Actual\"). It is used to trigger the desired import logic for the current file. Full list of avalaible ImportFormat can be found [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Constants/Consts#import-formats)", + "\n- WithFileStorage() : defined the drive from where the input files is retrieved. In this example we use the project file storage (new files have to be uploaded into the project), other options are SharePoint and OneDrive. ", + "\n- WithTarget() : target drive where the results are stored. In this example we use our in-memory set up", + "\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Set up data and configuration", + "\n", + "\nThe data source is initialized and the whole IFRS 17 Calculation Engine code is compiled. " + ] + }, + { + "cell_type": "code", + "source": [ + "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# DataNode and Parameters", + "\n", + "\nNew Data Nodes and Parameters are imported here.", + "\n
To easily generate these files, please refer to the **Map Template** files exported [here](../Export/MapTemplate). Edit them at your wish and import them back into the solution through the following cells. ", + "\n
For the **ImportFormat**, the following options are expected:", + "\n- ImportFormats.DataNode : [Portfolios](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#portfolios) and [Group of Contracts](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#group-of-contracts)", + "\n- ImportFormats.DataNodeState : the [state of a data node](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#data-node-state) can be either active or inactive.", + "\n- ImportFormats.DataNodeParameter : parameters are described [here](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/DataModel/DataStructure#data-node-parameters). For **Group of Insurance Contracts** a default [Premium Allocation factor](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Import/ImportScopeCalculation#experience-adjustment-on-premium) of 1 is applied if the parameter is not imported.", + "\n" + ] + }, + { + "cell_type": "code", + "source": [ + "var pathToFile = \"../Files/DataNodes/DataNodes_CH.csv\";" + ] + }, + { + "cell_type": "code", + "source": [ + "var format = ImportFormats.DataNode;" + ] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(pathToFile).WithFormat(format).WithTarget(DataSource).ExecuteAsync()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Transactional Data", + "\n", + "\nTransactional data are imported here. ", + "\n
For the **ImportFormat**, the following options are expected:", + "\n- ImportFormats.Opening : for opening values in a Fair Value Approach", + "\n- ImportFormats.Cashflow : nominal cash flows", + "\n- ImportFormats.Actual : written actuals, payable and receivables. ", + "\n- ImportFormats.SimpleValue : direct import of pre-calculated Present Value and Actual values for all reports - no calculation is triggered -" + ] + }, + { + "cell_type": "code", + "source": [ + "var pathToFile = \"../Files/TransactionalData/Openings_CH_2020_12.csv\";" + ] + }, + { + "cell_type": "code", + "source": [ + "var format = ImportFormats.Opening;" + ] + }, + { + "cell_type": "code", + "source": [ + "await Import.FromFile(pathToFile).WithFormat(format).WithTarget(DataSource).ExecuteAsync()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Workspace reset" + ] + }, + { + "cell_type": "code", + "source": [ + "Workspace.Reset(x => x.ResetInitializationRules().ResetCurrentPartitions());" + ] + } + ] +} \ No newline at end of file diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb index a7fd62d4..326c7609 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/full-ifrs17-template/Report/Reports.ipynb @@ -20,9 +20,8 @@ { "cell_type": "markdown", "source": [ - "

Reports

", - "\n", - "\n" + "", + "\n

Reports

" ] }, { @@ -45,7 +44,7 @@ { "cell_type": "code", "source": [ - "#!eval-notebook \"../Initialization/InitSystemorphToMemory\"" + "#!eval-notebook \"../Import/CloseImportTemplate\"" ] }, { @@ -94,6 +93,8 @@ "cell_type": "code", "source": [ "var raReport = ifrs17Report.RiskAdjustments;", + "\nraReport.ReportingNode = \"CH\";", + "\nraReport.ReportingPeriod = (2021, 3);", "\nraReport.ColumnSlices = new string[]{};//\"GroupOfContract\"", "\nraReport.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.2\")};", "\n(await raReport.ToReportAsync) with {Height = 800}" @@ -113,6 +114,8 @@ "cell_type": "code", "source": [ "var writtenActualReport = ifrs17Report.WrittenActuals;", + "\nwrittenActualReport.ReportingNode = \"CH\";", + "\nwrittenActualReport.ReportingPeriod = (2021, 3);", "\nwrittenActualReport.ColumnSlices = new string[]{};//\"GroupOfContract\"", "\nwrittenActualReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await writtenActualReport.ToReportAsync) with {Height = 400}" @@ -131,6 +134,8 @@ "cell_type": "code", "source": [ "var accrualActualReport = ifrs17Report.AccrualActuals;", + "\naccrualActualReport.ReportingNode = \"CH\";", + "\naccrualActualReport.ReportingPeriod = (2021, 3);", "\naccrualActualReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\naccrualActualReport.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT2.1\")};", "\n(await accrualActualReport.ToReportAsync) with {Height = 400}" @@ -148,6 +153,8 @@ "cell_type": "code", "source": [ "var deferrableActualReport = ifrs17Report.DeferralActuals;", + "\ndeferrableActualReport.ReportingNode = \"CH\";", + "\ndeferrableActualReport.ReportingPeriod = (2021, 3);", "\ndeferrableActualReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\ndeferrableActualReport.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await deferrableActualReport.ToReportAsync) with {Height = 400}" @@ -166,6 +173,8 @@ "cell_type": "code", "source": [ "var fulfillmentCashflowsReport = ifrs17Report.FulfillmentCashflows;", + "\nfulfillmentCashflowsReport.ReportingNode = \"CH\";", + "\nfulfillmentCashflowsReport.ReportingPeriod = (2021, 3);", "\nfulfillmentCashflowsReport.ColumnSlices = new string[]{};//\"EstimateType\"", "\nfulfillmentCashflowsReport.DataFilter = null;// new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await fulfillmentCashflowsReport.ToReportAsync) with {Height = 750}" @@ -183,6 +192,8 @@ "cell_type": "code", "source": [ "var experienceAdjustmentsReport = ifrs17Report.ExperienceAdjustments;", + "\nexperienceAdjustmentsReport.ReportingNode = \"CH\";", + "\nexperienceAdjustmentsReport.ReportingPeriod = (2021, 3);", "\nexperienceAdjustmentsReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nexperienceAdjustmentsReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await experienceAdjustmentsReport.ToReportAsync) with {Height = 300}" @@ -201,6 +212,8 @@ "cell_type": "code", "source": [ "var technicalMarginsReport = ifrs17Report.TechnicalMargins;", + "\ntechnicalMarginsReport.ReportingNode = \"CH\";", + "\ntechnicalMarginsReport.ReportingPeriod = (2021, 3);", "\ntechnicalMarginsReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\ntechnicalMarginsReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await technicalMarginsReport.ToReportAsync) with {Height = 600}" @@ -220,6 +233,8 @@ "cell_type": "code", "source": [ "var allocatedTechnicalMarginsReport = ifrs17Report.AllocatedTechnicalMargins;", + "\nallocatedTechnicalMarginsReport.ReportingNode = \"CH\";", + "\nallocatedTechnicalMarginsReport.ReportingPeriod = (2021, 3);", "\nallocatedTechnicalMarginsReport.ColumnSlices = new string[]{\"GroupOfContract\", \"EstimateType\"};//\"GroupOfContract\", \"AmountType\"", "\nallocatedTechnicalMarginsReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await allocatedTechnicalMarginsReport.ToReportAsync) with {Height = 700}" @@ -237,6 +252,8 @@ "cell_type": "code", "source": [ "var actuarialLrcReport = ifrs17Report.ActuarialLrc;", + "\nactuarialLrcReport.ReportingNode = \"CH\";", + "\nactuarialLrcReport.ReportingPeriod = (2021, 3);", "\nactuarialLrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nactuarialLrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await actuarialLrcReport.ToReportAsync) with {Height = 750}" @@ -254,6 +271,8 @@ "cell_type": "code", "source": [ "var lrcReport = ifrs17Report.Lrc;", + "\nlrcReport.ReportingNode = \"CH\";", + "\nlrcReport.ReportingPeriod = (2021, 3);", "\nlrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nlrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await lrcReport.ToReportAsync) with {Height = 250}" @@ -271,6 +290,8 @@ "cell_type": "code", "source": [ "var actuarialLicReport = ifrs17Report.ActuarialLic;", + "\nactuarialLicReport.ReportingNode = \"CH\";", + "\nactuarialLicReport.ReportingPeriod = (2021, 3);", "\nactuarialLicReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nactuarialLicReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await actuarialLicReport.ToReportAsync) with {Height = 750}" @@ -288,6 +309,8 @@ "cell_type": "code", "source": [ "var licReport = ifrs17Report.Lic;", + "\nlicReport.ReportingNode = \"CH\";", + "\nlicReport.ReportingPeriod = (2021, 3);", "\nlicReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", "\nlicReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await licReport.ToReportAsync) with {Height = 250}" @@ -307,6 +330,8 @@ "cell_type": "code", "source": [ "var financialPerformanceReport = ifrs17Report.FinancialPerformance;", + "\nfinancialPerformanceReport.ReportingNode = \"CH\";", + "\nfinancialPerformanceReport.ReportingPeriod = (2021, 3);", "\nfinancialPerformanceReport.ColumnSlices = new string[]{};//\"GroupOfContract\"", "\nfinancialPerformanceReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};", "\n(await financialPerformanceReport.ToReportAsync) with { Height = 900, GroupDefaultExpanded = 3}" From d74b7691f805478eb1335f9722a247a683563c5c Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Sat, 5 Nov 2022 18:21:41 +0100 Subject: [PATCH 17/18] additions to report guide --- full-ifrs17-template/Report/Reports.ipynb | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb index 326c7609..aa6956f1 100644 --- a/full-ifrs17-template/Report/Reports.ipynb +++ b/full-ifrs17-template/Report/Reports.ipynb @@ -29,7 +29,7 @@ "source": [ "For demonstration purposes we import here data for 7 *Group of Insurance Contract* (GIC) and 4 *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).", "\n
The imported data set consists of cashflows, actuals, and parameters for two consecutive periods (Year 2020-Quarter 4 and Year 2021-Quarter 1)", - "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own. ", + "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or to add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ", "\n
For simplicity, we import the same transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.", "\n", "\nFollow the instructions below for a guided interaction with the reports." @@ -63,7 +63,6 @@ "\n", "\nThe granularity of the reported figures can be modified by changing the Column Slices options.", "\nFor example one can add \"GroupOfContract\" to separate the contributions of the individual Group of Contracts.", - "\n
We suggest to add this slice between the \"LiabilityType\" and the \"EconomicBasis\" as the order of the inputs corresponds to the order of the columns shown in the report to expand the data.", "\n", "\nAggregated values are displayed when the data has a finer granularity than the one selected by the report slice options." ] @@ -86,7 +85,7 @@ "\n", "\nPresent values of the [risk adjustment](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#risk-adjustment) future cashflows are shown here.", "\n", - "\nFilters can be applied to report to isolate a sub-set of the data. They can be used in conjuction to the Slice options. For example, filtering **EconomicBasis** Locked-in together with a slice on the **GroupOfContract** allows to analyse the risk adjustment figures computed with the yield curve at inception for all Group of Contracts." + "\nThe additional ColumnSlices are added to the view as the inner column. This can dicrease the readability of the report. For example, adding the slice by \"GroupOfContract\" leaves the lock-in and current rate contributions far apart and difficult to compare. The re-order of default slices with custom slices is achieved by esplicitly add the default slice among the custom slices. In our case, you can try entering both \"GroupOfContract\" and \"EconomicBasis\" separated by a comma in the ColumnSlices." ] }, { @@ -95,7 +94,7 @@ "var raReport = ifrs17Report.RiskAdjustments;", "\nraReport.ReportingNode = \"CH\";", "\nraReport.ReportingPeriod = (2021, 3);", - "\nraReport.ColumnSlices = new string[]{};//\"GroupOfContract\"", + "\nraReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"EconomicBasis\"", "\nraReport.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT1.2\")};", "\n(await raReport.ToReportAsync) with {Height = 800}" ] @@ -107,7 +106,8 @@ "\n", "\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here. ", "\n", - "\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. " + "\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. ", + "\nFilters can be applied to report to isolate a sub-set of the data, by selecting the dimension to filter and the system value desired. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}." ] }, { @@ -127,7 +127,9 @@ "## Advance, Overdue Actuals", "\n", "\nActuals payed in [Advance](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral)", - "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. " + "\nor [Overdue](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here together in a simplified Analysis of Change. ", + "\n", + "\nCombining Filters and ColumnSlices facilitate the report analysis. For example, you can select \"GroupOfContract\" as column slices with a Filter on EstimateType \"AA\" to analyse the Advance Actuals for all Group of Contract. " ] }, { @@ -137,7 +139,7 @@ "\naccrualActualReport.ReportingNode = \"CH\";", "\naccrualActualReport.ReportingPeriod = (2021, 3);", "\naccrualActualReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\naccrualActualReport.DataFilter = null;//new [] {(\"GroupOfContract\", \"DT2.1\")};", + "\naccrualActualReport.DataFilter = null; //new [] {(\"EstimateType\", \"AA\")};", "\n(await accrualActualReport.ToReportAsync) with {Height = 400}" ] }, @@ -166,7 +168,10 @@ "# Fulfilment Cashflow", "\n", "\nPresent Value of the [Fulfilment Cashflow](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#fulfillment-cashflows) are shown here. ", - "\n
The individual contributions from Best Estimate and Risk Adjustment can be visualized slicing by **EstimateType**" + "\n
The individual contributions from Best Estimate and Risk Adjustment can be visualized slicing by **EstimateType**.", + "\n", + "\nFilters can be applied to report to isolate a sub-set of the data. For example you can Filter by a specific Group of Contract using its system name using : new [] {(\"GroupOfContract\", \"DT1.1\")}.", + "\n" ] }, { From e5ba9036c4efaadb2d8550df3af36133aeb4eb11 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Mon, 7 Nov 2022 09:32:41 +0100 Subject: [PATCH 18/18] solve conflicts --- full-ifrs17-template/CODE_OF_CONDUCT.md | 133 ------------------ full-ifrs17-template/Export/MapTemplate.ipynb | 2 +- full-ifrs17-template/README.md | 2 +- ifrs17/CODE_OF_CONDUCT.md | 133 ------------------ ifrs17/README.md | 2 +- 5 files changed, 3 insertions(+), 269 deletions(-) delete mode 100644 full-ifrs17-template/CODE_OF_CONDUCT.md delete mode 100644 ifrs17/CODE_OF_CONDUCT.md diff --git a/full-ifrs17-template/CODE_OF_CONDUCT.md b/full-ifrs17-template/CODE_OF_CONDUCT.md deleted file mode 100644 index 09980a35..00000000 --- a/full-ifrs17-template/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -[vanessas@systemorph.cloud.com](mailto:vanessas@systemorph.cloud.com). -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb index e572b451..0b4a1094 100644 --- a/full-ifrs17-template/Export/MapTemplate.ipynb +++ b/full-ifrs17-template/Export/MapTemplate.ipynb @@ -26,7 +26,7 @@ { "cell_type": "markdown", "source": [ - "This notebook exports the data nodes, data node states, and data node parameters belonging to a specific data partition (set of reporting node, year and month) into am excel file. ", + "This notebook exports the data nodes, data node states, and data node parameters belonging to a specific data partition into an excel file.", "\n
This file contains reference data used to prepopulate dropdows and validations to facilitate editing.", "\n
This can be modified and imported in the calculation engine to create and modify data." ] diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md index 89aea51c..3a4c25fc 100644 --- a/full-ifrs17-template/README.md +++ b/full-ifrs17-template/README.md @@ -35,4 +35,4 @@ For support around the IFRS 17 CalculationEngine get in contact with our [Commun All work on the **Full IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). -This project adheres to the Contributor Covenant [code of conduct](https://github.com/Systemorph/IFRS17CalculationEngine/blob/main/full-ifrs17-template/CODE_OF_CONDUCT.md). \ No newline at end of file +This project adheres to overall [General Terms & Conditions for Systemorph Cloud]() TODO link to terms and conditions file. \ No newline at end of file diff --git a/ifrs17/CODE_OF_CONDUCT.md b/ifrs17/CODE_OF_CONDUCT.md deleted file mode 100644 index 09980a35..00000000 --- a/ifrs17/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -[vanessas@systemorph.cloud.com](mailto:vanessas@systemorph.cloud.com). -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/ifrs17/README.md b/ifrs17/README.md index 5ced3989..10015d5e 100644 --- a/ifrs17/README.md +++ b/ifrs17/README.md @@ -30,4 +30,4 @@ For support around the IFRS 17 CalculationEngine get in contact with our [Commun All work on the **Full IFRS 17 Template** happens directly on [GitHub](https://github.com/Systemorph/IFRS17CalculationEngine). -This project adheres to the Contributor Covenant [code of conduct](https://github.com/Systemorph/IFRS17CalculationEngine/blob/main/full-ifrs17-template/CODE_OF_CONDUCT.md). \ No newline at end of file +This project adheres to overall [General Terms & Conditions for Systemorph Cloud]() TODO link to terms and conditions file. \ No newline at end of file