OpenChainGraph Chain · Cluster ⑰ · Insurance, Actuarial & Prudential

IFRS 17 Measurement Conformance

Three-node chain validating IFRS 17 insurance contract measurement from model classification through CSM roll-forward to risk adjustment disclosure. Each stage produces a SHA-256 execution hash, forming a tamper-evident audit trail. Terminal node exports a W3C Verifiable Credential.

IFRS 17 GMM / VFA / PAA CSM Risk Adjustment 3 nodes W3C VC §13.11 v0.5.0
Chain summary
IFRS 17 Insurance Contracts (mandatory from 1 Jan 2023) requires insurers to measure groups of insurance contracts using one of three models: the General Measurement Model (GMM/BBA, default), the Variable Fee Approach (VFA, for direct-participating contracts), or the Premium Allocation Approach (PAA, for short-duration coverage ≤12 months). This chain classifies the applicable model, validates the CSM roll-forward arithmetic and detects onerous contracts, and checks risk adjustment technique and disclosure compliance. Nodes: ART-177ART-178ART-179.
ART-177 Measurement Model Classifier ART-178 CSM Roll-Forward Validator ART-179 Risk Adjustment Checker ★
★ terminal node · teal border = active · gold border = export
Stage 1 — Measurement Model Classification
1
classify_ifrs17_measurement_model · ART-177
Classify insurance contracts to GMM/BBA (default), VFA (direct-participating, not reinsurance), or PAA (coverage ≤12 months or elected). Returns measurement_model, eligible_models[], paa_eligible, vfa_eligible, and a SHA-256 execution hash.
→ Open tool
MCP tool: classify_ifrs17_measurement_model
{
  "tool": "classify_ifrs17_measurement_model",
  "arguments": {
    "contract": {
      "coverage_period_months": 12,
      "direct_participating_features": false,
      "is_reinsurance": false,
      "premium_allocation_approach_election": false,
      "vfa_election": false
    }
  }
}
Stage 2 — CSM Roll-Forward Validation
2
validate_ifrs17_csm_rollforward · ART-178
Validate the Contractual Service Margin roll-forward (IFRS 17 para 44–50): computes closing CSM from six movement items, detects onerous contracts (negative closing → loss component), and release excess. Receives execution hash from stage 1 as parent_hash.
→ Open tool
MCP tool: validate_ifrs17_csm_rollforward
{
  "tool": "validate_ifrs17_csm_rollforward",
  "arguments": {
    "rollforward": {
      "opening_csm": 1000,
      "new_business_csm": 200,
      "interest_accretion": 50,
      "experience_adjustments": -30,
      "release_to_profit": 120,
      "fx_adjustments": 10
    }
  }
}
Stage 3 — Risk Adjustment Check (terminal)
3
check_ifrs17_risk_adjustment · ART-179
Validate IFRS 17 risk adjustment for non-financial risk (para 56–57, 119): technique (VaR/CTE/CoC/other), confidence level disclosure, RA amount, and onerous contract loss component. Returns ra_compliant boolean and gaps[] list. Final stage — artifact exportable as Policy Mandate JSON or W3C VC.
→ Open tool
MCP tool: check_ifrs17_risk_adjustment
{
  "tool": "check_ifrs17_risk_adjustment",
  "arguments": {
    "risk_adjustment": {
      "ra_amount": 500,
      "technique": "CoC",
      "confidence_level_pct": 0,
      "disclosed": true,
      "onerous_contracts_identified": false,
      "loss_component_recognized": false
    }
  }
}
Full Chain MCP Sequence

Run all three tools in order. Each result's execution_hash feeds as parent_hash to the next call, creating the linked audit chain.

Full chain — 3 MCP calls
// Step 1: classify measurement model
const step1 = await mcp.call("classify_ifrs17_measurement_model", {
  contract: {
    coverage_period_months: 12,
    direct_participating_features: false,
    is_reinsurance: false,
    premium_allocation_approach_election: false,
    vfa_election: false
  }
});

// Step 2: validate CSM roll-forward (chain from step 1)
const step2 = await mcp.call("validate_ifrs17_csm_rollforward", {
  rollforward: {
    opening_csm: 1000,
    new_business_csm: 200,
    interest_accretion: 50,
    experience_adjustments: -30,
    release_to_profit: 120,
    fx_adjustments: 10
  }
});

// Step 3: check risk adjustment — final stage
const step3 = await mcp.call("check_ifrs17_risk_adjustment", {
  risk_adjustment: {
    ra_amount: 500,
    technique: "CoC",
    confidence_level_pct: 0,
    disclosed: true,
    onerous_contracts_identified: false,
    loss_component_recognized: false
  }
});

// Terminal artifact — export as W3C VC or Policy Mandate JSON
console.log("ra_compliant:", step3.ra_compliant);
console.log("gaps:", step3.gaps);
Chain Metadata
Chain slugifrs17-measurement-conformance
Nodesart-177 → art-178 → art-179
Cluster⑰ Insurance, Actuarial & Prudential
RegulationIFRS 17 Insurance Contracts (2023)
Spec version0.5.0
Terminal exportPolicy Mandate JSON · W3C VC (§13.11)
Hash schemeSHA-256 over JCS-canonical {policy_parameters, output_payload}