Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ifrs17-template/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Follow step by step our [Get Started](https://youtu.be/WQFn58gFhaM) video and ex

</div>

For more information on our IFRS 17 initiative check out our [IFRS 17 page]().
For more information on our IFRS 17 initiative check out our [IFRS 17 page](https://systemorph.com/).

<hr style="border-bottom: 0; border-top: 1px solid rgba(0,0,0,0.15); height: 0; margin-top: 40px;" />

Expand Down
2 changes: 1 addition & 1 deletion ifrs17-template/Report/Reports.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"\npv.ReportingPeriod = (2021, 3);",
"\npv.CurrencyType = CurrencyType.Contractual;",
"\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"",
"\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") }",
"\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };",
"\n(await pv.ToReportAsync) with {Height = 720}"
],
"metadata": {},
Expand Down
6 changes: 3 additions & 3 deletions ifrs17-template/Test/MapTemplateAndImportTest.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,8 @@
"\n",
"\n// Test Validation",
"\nActivity.Start();",
"\nawait ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);",
"\n",
"\nawait Workspace.ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);",
"\nActivity.HasErrors().Should().Be(true);",
"\nvar log = Activity.Finish().Errors.First().ToString().Substring(40);",
"\n(log.Substring(0,log.Length-2) == Get(Error.ChangeDataNodeState, \"GIC1\")).Should().Be(true);"
Expand Down Expand Up @@ -505,8 +506,7 @@
"\n// Reimport Data Node State for GIC1 with State unchanged",
"\nawait Workspace.DeleteAsync(Workspace.Query<DataNodeState>().ToArray());",
"\nawait Workspace.UpdateAsync(itemImport);",
"\n",
"\nawait ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);",
"\nawait Workspace.ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);",
"\n",
"\n// Check that the new redundant State is removed from the Workspace",
"\nWorkspace.Query<DataNodeState>().ToArray().Should().BeEmpty();"
Expand Down
125 changes: 48 additions & 77 deletions ifrs17/Import/Importers.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,15 @@
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Import helpers"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
Expand Down Expand Up @@ -413,7 +422,21 @@
{
"cell_type": "markdown",
"source": [
"# Importers"
"## Validation for Active Data Node States"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"source": [
"public async Task ValidateForDataNodeStateActiveAsync<T>(IWorkspace workspace, Dictionary<string, DataNodeData> dataNodes) where T : BaseDataRecord",
"\n{",
"\n foreach(var item in (await workspace.Query<T>().ToArrayAsync()).GroupBy(x => x.DataNode))",
"\n if(!dataNodes.ContainsKey(item.First().DataNode))",
"\n ApplicationMessage.Log(Error.InactiveDataNodeState, item.First().DataNode);",
"\n}"
],
"metadata": {},
"execution_count": 0,
Expand All @@ -422,7 +445,7 @@
{
"cell_type": "markdown",
"source": [
"## Analysis of Change Configuration"
"# Analysis of Change Configuration"
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -535,23 +558,14 @@
{
"cell_type": "markdown",
"source": [
"## Parse and Upload: Data Nodes",
"# Data Nodes",
"\n",
"\n[Portfolios](../DataModel/DataStructure#portfolios) and [Group of Contracts](../DataModel/DataStructure#group-of-contracts) are imported in the same file. "
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"### Portfolio and Group of contract"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"source": [
Expand Down Expand Up @@ -679,7 +693,7 @@
{
"cell_type": "markdown",
"source": [
"### Data Node State"
"# Data Node State"
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -763,7 +777,7 @@
{
"cell_type": "markdown",
"source": [
"### DataNode Parameters"
"# Data Node Parameters"
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -877,46 +891,13 @@
{
"cell_type": "markdown",
"source": [
"## Parse and Upload: Variables",
"# Cashflows",
"\n",
"\nVariables are created upon import of Cash flow and Actual file.",
"\n<br> Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).",
"\n<br> Actuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable). ",
"\nVariables are created upon import of Cash flow file.",
"\nCash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the calculation of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).",
"\n",
"\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import. ",
"\n<br> 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. "
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"### Validation for Active Data Node States"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"source": [
"public async Task ValidateForDataNodeStateActiveAsync<T>(IWorkspace workspace, Dictionary<string, DataNodeData> dataNodes) where T : BaseDataRecord",
"\n{",
"\n foreach(var item in (await workspace.Query<T>().ToArrayAsync()).GroupBy(x => x.DataNode))",
"\n if(!dataNodes.ContainsKey(item.First().DataNode))",
"\n ApplicationMessage.Log(Error.InactiveDataNodeState, item.First().DataNode);",
"\n}"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"### Cash flow as Raw Variable and Ifrs Variable"
"\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import.",
"\nIn 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."
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -1035,7 +1016,15 @@
{
"cell_type": "markdown",
"source": [
"### Actuals as Ifrs Variable"
"# Actuals",
"\n",
"\nVariables are created upon import of Actual file.",
"\nActuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable).",
"\n",
"\n",
"\n",
"\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import.",
"\nIn 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."
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -1145,21 +1134,10 @@
{
"cell_type": "markdown",
"source": [
"# Simple Value Import",
"# Simple Value",
"\n",
"\nSimple Value import is a special import that imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable).",
"\n<br> 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."
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Simple Value to Workspace"
"\nSimple Value format imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable) computed by an independent tool.",
"\nIn this case our IFRS 17 calculation is not applied and variables are stored in the Database for being consumed in reports with our powerful reporting tooling."
],
"metadata": {},
"execution_count": 0,
Expand Down Expand Up @@ -1232,15 +1210,6 @@
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Simple Value as IfrsVariable"
],
"metadata": {},
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"source": [
Expand Down Expand Up @@ -1272,7 +1241,9 @@
{
"cell_type": "markdown",
"source": [
"## Openings as IfrsVariable"
"# Opening",
"\n",
"\nOpening format imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable) for the first period transition. It allows to import in force opening values (AoC Step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA."
],
"metadata": {},
"execution_count": 0,
Expand Down