Ported from the open-source IFRS 17 Calculation Engine —
ifrs17-template/OverviewIFRS17Template.ipynb
and
ifrs17-template/InputFormatDescription.ipynb —
originally written for Systemorph Cloud.
Input data
The open-source engine ships with a template: a complete example of input data that runs through the engine and produces IFRS 17 results. Users adapt it by replacing the inputs with their own. On Systemorph Cloud the inputs are CSV files; the template's initialization notebooks import them into a database or into memory.
How inputs reach the MeshWeaver port. There are no input files and no initialization step. Every input is a node of one of the module's NodeTypes: dimensions are nodes under
Ifrs17/<Dimension>/, a group's cash flows are RawVariable nodes, and so on. The engine reads them with mesh queries (Ifrs17/Engine/Source/Ifrs17DataSource.cs). The dimensions ship with the module; the demo book of the Reinsurance suite is generated intoReinsuranceDemo/Ifrs17/(see The IFRS 17 formulas for where its data come from).
The inputs fall into four groups. Each group lists the original's files, then the port's types.
Reporting nodes and dimensions
- Reporting nodes — the business units, often one per country, with system name, display name and currency, and a group node above them. Port: ReportingNode.
- Dimensions — the many dimensions that characterize the data and the results, each with system and display names. This information is stable; in production it is imported once. Port: the dimension NodeTypes listed on The data model, seeded with the module.
Groups of contracts
- Data nodes — every GIC and GRIC with its attributes and its portfolio, plus the partner of a GRIC. Port: Portfolio and GroupOfContract.
- Data node parameters, per reporting node, year and month — the groups in use for that combination, with their parameters. Port: DataNodeParameter.
- Data node states, per reporting node, year and month — switch groups on and off; normally every group is active. Port: DataNodeState.
Parameters from financial markets
- Yield curves — for each currency and as-of date (year and month), on a yearly grid of maturities extending as far as needed. Port: YieldCurve.
- Exchange rates — for each currency and as-of date, with a type (spot or average), as the value of one foreign unit in the group currency. Port: ExchangeRate.
- Credit default rates — for the relevant dates, every credit rating (S&P notation) with its default rate, the probability of default within one year. Port: CreditDefaultRate.
- Partner ratings — the rating of each reinsurance partner with its as-of date. Port: PartnerRating.
Transactional data
These come per reporting node, year and month. An analysis of change needs the data of two dates — the opening and the closing of the period.
Nominal cash flows
The projected cash flows of every group in use, by amount type, AoC type, novelty and the other attributes, as a regular sequence of amounts extending as far as needed.
In the original a cash-flow file has a Main section — reporting node, year, month and scenario, which together name the partition the data belong to — and a Cashflow section with one row per cash flow:
| Column | Meaning |
|---|---|
DataNode |
the group of contracts, by system name |
AmountType |
by system name |
EstimateType |
by system name |
AocType |
by system name |
Novelty |
by system name |
AccidentYear |
for groups with liability type LIC |
Values0, Values1, … |
the cash flow; Values0 is January of the year in the Main section |
The valid combinations of AoC type and novelty are the AocConfiguration
rows with data type Optional or Mandatory.
Port: one RawVariable node per row, with the same identity columns
(DataNode, AocType, Novelty, EstimateType, AmountType, AccidentYear) and the monthly
array in Values.
The original also accepts discounted rather than nominal cash flows. The port has no import format for them: its formats
are Cashflow, Actual, Opening and SimpleValue (ImportFormats.cs), and a non-cash-flow run
reads stored IfrsVariable values back instead of computing them
(ComputePresentValueWithIfrsVariable).
Actuals
The actual amounts of every group in use, by amount type, AoC type and the other attributes. In the
original an actuals file has a Main section (reporting node, year, month) and an Actual
section with DataNode, AocType, AmountType, EstimateType and, for LIC groups,
AccidentYear, plus the amount.
Port: the import format Actual exists (Ifrs17/Engine/Source/ImportFormats.cs), but no scope
computes from actuals. See Actuals and deferrals.
Openings
The values at the opening of an analysis, for the groups that need them, by estimate type and
amount type. Only one file is needed, dated at the beginning of the period. Its Opening section
has DataNode, AmountType, EstimateType and, for LIC groups, AccidentYear.
Port: opening values are read back as IfrsVariable — the in-force
opening of the technical margin, for example, is the stored CSM and loss component
(TechnicalMarginForOpeningBalance in Ifrs17/Engine/Source/TechnicalMargin.cs).
Dropped from the original
- The initialization notebooks (to a database or to memory) and the database configuration.
- The screenshots of the CSV layouts. The tables above carry the same columns.
- The parameter reports notebook, which renders the inputs for review. On the mesh every input is a node with its own page.