Products Insurance and reinsurance

Solvency II

Standard formula and internal model validation

SCR from the standard formula, with diversification attributed to each module.

Solvency II ties insurer capital to a one-year value at risk at the ninety-nine and a half percent level. GraphAtlas computes the standard formula SCR, shows the diversification benefit and who earns it, and produces the quantitative reporting templates from the same run.

Try the calculation Request a walkthrough

Regime
Directive 2009/138/EC and Delegated Regulation (EU) 2015/35
Set by
  • European Commission and the European Supervisory Authorities
  • European Insurance and Occupational Pensions Authority
Built for
  • Insurance risk and actuarial function
  • Finance and reporting
  • Internal model validation
Version
6.0
The solvency capital requirement of an example insurer, built up from its risk modules to the requirementThe five risk modules of the example insurer add up to 945 million euros. The correlation between them takes 308 off, which leaves a basic capital requirement of 637. Operational risk adds 75 and the adjustment takes 95 off, which gives a solvency capital requirement of 617. The own funds of 1,150 are 186 per cent of it. A tag says that the parameters are prescribed.STANDARD FORMULAOWN FUNDS 1,150186 %410MARKET85DEFAULT120LIFE70HEALTH260NON-LIFE-307.6DIVERSIFICATION637.4BSCR75OPERATIONAL-95ADJUSTMENT617.4SCRPRESCRIBEDENGINESOLVENCY II V6.0SET BYEU, EIOPADATASAMPLERECEIPT8a7efb34 The solvency capital requirement of an example insurer, built up from its risk modules to the requirementThe five risk modules of the example insurer add up to 945 million euros. The correlation between them takes 308 off, which leaves a basic capital requirement of 637. Operational risk adds 75 and the adjustment takes 95 off, which gives a solvency capital requirement of 617. The own funds of 1,150 are 186 per cent of it. A tag says that the parameters are prescribed.STANDARD FORMULAOWN FUNDS 1,150186 %410MARKET85DEFAULT120LIFE70HEALTH260NON-LIFE-308DIVERSIFICATION637BSCR75OPERATIONAL-95ADJUSTMENT617SCRPRESCRIBEDENGINEV6.0DATASAMPLERECEIPT8a7efb34

Try it

Run it on sample data

Five module charges go in and one requirement comes out. Change a charge and see where the diversification comes from.

Fig. 1 Solvency capital requirement for an illustrative composite insurer, EUR million

Verifying receipt

Risk module charges

EUR m
EUR m
EUR m
EUR m
EUR m

Added and taken off

EUR m
EUR m

Own funds

EUR m

Solvency capital requirement, EUR million

617.4 million euros

Own funds cover it 1.86 times, a solvency ratio of 186%. Above the 100% line.

Build-up from the module charges to the SCR, in million euros
StepEUR mDrawn to scale
Sum of the module charges945.0
Diversification−307.6
Basic SCR637.4
Operational risk+75.0
Loss-absorbing capacity−95.0
Solvency capital requirement617.4
Share of the basic SCR by risk module, in million euros
ModuleAloneShareDiversified awayShare, drawn to scale
410.0349.760.3
85.048.736.3
120.049.270.8
70.024.645.4
260.0165.294.8
Basic SCR945.0637.4307.6Shares sum exactly

Correlation matrix, Article 104(1) and Annex IV, point 1

Correlation between the five risk modules
MarketDefaultLifeHealthNon-life
Market100%25%25%25%25%
Default25%100%25%25%50%
Life25%25%100%25%0%
Health25%25%25%100%0%
Non-life25%50%0%0%100%

The matrix is typed once, as decimal text. The check factors it as L · D · LT in exact fractions and rebuilds it, entry by entry.

Receipt8a7efb34 d2e7d983 … 24146f99

Edit any figure. The engine runs in this page and nothing leaves it.

Inputs and outputs

What goes in. What comes out

The plate runs a slice of the engine. This is the whole shape of it.

What goes in

Risk module charges
The standalone capital for market, counterparty default, life, health and non-life underwriting risk, in your reporting currency.
Operational risk
The capital requirement for operational risk, Article 107.
Loss-absorbing capacity
The adjustment for technical provisions and deferred taxes, Article 108.
Own funds
Eligible own funds, so the page can show the solvency ratio.

What comes out

Basic SCR
The square root of the correlation-weighted charges, with the diversification benefit against the plain sum.
Attribution
The part of the basic SCR that belongs to each module. The parts add up to the whole.
SCR and ratio
The requirement after operational risk and loss absorption, and how many times own funds cover it.
Derivation
Every figure as a tree of steps, each with the rule it applies.
Receipt
A hash of the inputs, the rule parameters and the result. Anyone can recompute it.

What the plate covers

In the plate above

  • The top of the standard formula, from the five module charges to the SCR.
  • The exact part of the basic SCR that belongs to each module.
  • The correlation matrix, with a certificate that it is positive definite.

In the licensed engine, not the plate

  • The sub-module calculations inside each risk module, which the licensed engine runs on your positions.
  • The reporting templates and the internal model validation workflow.
  • Amendments made after the Directive as made.

Clause map

Every rule has an address

Each row names the clause, the function that carries it and the statements that check it. A test opens each file and confirms the function exists.

Rules of the regulation, the code that carries each one and the statements that check it
Reference Rule Carried by Checked by
Article 103 The SCR is the basic SCR plus operational risk, less the adjustment for loss-absorbing capacity. solvencyCapital src/kernel/solvency.ts Tested SI-05
Article 104(1) and Annex IV, point 1 The basic SCR aggregates the module charges with the prescribed correlation matrix. aggregate src/kernel/aggregate.ts Proved SI-01 Tested SI-03 Tested SI-04
Annex IV, point 1 The correlation matrix, as written in the Directive. BSCR_CORRELATION_TEXT src/kernel/solvency.ts Certified SI-02
Article 107 The capital requirement for operational risk is added to the basic SCR. solvencyCapital src/kernel/solvency.ts Tested SI-05
Article 108 The adjustment for loss-absorbing capacity is taken off, and it cannot take the SCR below zero. solvencyCapital src/kernel/solvency.ts Tested SI-05

Verification

What we claim, and how it is checked

Every statement is registered, and each says which level of assurance it has earned. The ladder is explained on the verification page.

Proved

True for every input.

  • SI-01

    For any non-negative module charges, the basic SCR is never above the plain sum of the charges and never below the largest single charge.

    6 checks, decided by Z3 5.3.3.0 (WebAssembly) and rerun from the emitted file by Z3 5.3.3 (native) and cvc5 1.4.2 (native, nl-cov). 2 broken variants are refuted. proofs/smt2/SI-01.smt2

Certified

True for the case in hand, with evidence anyone can recheck.

  • SI-02

    The prescribed basic SCR correlation matrix is positive definite, shown by an exact factorisation into a lower triangle, a diagonal and the transpose of the triangle, which a separate checker accepts.

    tests/kernel/exact.test.tssrc/kernel/certify.ts

Tested

True on every input we tried.

  • SI-03

    At every level of the Solvency II trace, the shares of the parts add up to the share of the whole.

    tests/kernel/solvency.test.ts

  • SI-04

    Every module’s share of the basic SCR is at least zero and at most the module’s own charge.

    tests/kernel/solvency.test.ts

  • SI-05

    The SCR is the basic SCR plus operational risk less the loss-absorbing adjustment, which is limited so the SCR cannot go below zero.

    tests/kernel/solvency.test.ts

Read the verification statement

Use it

The same call, anywhere

This sample is written from the input the plate starts with, so the code and the numbers cannot drift apart.

Call
import {
  solvencyCapital,
  solvencyRatio,
  solvencyReceiptPayload,
} from '@graphatlas/kernel/solvency-ii';
import { receipt } from '@graphatlas/kernel/receipt';

const input = {
  modules: { market: 410, default: 85, life: 120, health: 70, nonlife: 260 },
  operational: 75,
  adjustment: 95,
};

const result = solvencyCapital(input);
const ratio = solvencyRatio(1150, result.scr);
const hash = await receipt(solvencyReceiptPayload(input, result));
Returns
const out = {
  scr: 617.3971,
  basicScr: 637.3971,
  diversification: 307.6029,
  moduleShares: [349.7624, 48.6745, 49.1844, 24.5726, 165.2031],
  ratio: 1.8627,
  receipt: '8a7efb34d2e7d9836863d968c1dc70bf02bd3cdca00f7c630cd8f0e024146f99',
};

The call and the numbers come from the engine that built this page, run on the same input as the plate above. Values are rounded to four places for display. The receipt hashes the unrounded numbers.

Runs on

  • Browser
  • Edge
  • Node.js
  • Python
  • JVM
  • .NET
  • Excel
  • Command line
  • Container

Green surfaces are measured on every build of this site. Each must return the same receipt, bit for bit. The others are packaged targets that the build does not measure. How the platform works

Changes

When the rule moves, so does the engine

Publications that touch this regime, and the release that answered each.

  1. EIOPA Consultation

    Updated quantitative reporting templates for the standard formula

    Tracking. No release yet

  2. EIOPA Final text Reserving and ESG

    Updated methodology for the risk-free interest rate term structure

    Shipped as Reserving 3.8, 9 days later

  3. EU Takes effect Reserving and ESG

    Amended Solvency II framework applies from 30 January 2027

    Shipped as Solvency II 6.0, 14 days later

Open the full feed

The next step

Bring us
one book

A scoping call, a sample book and a parallel run on your data. Most teams have the first reconciled number inside two weeks, and a receipt for it on the day.

Book a demo Work out a price