Products Investor disclosure

PRIIPs

Packaged retail and insurance-based investment products

Key information documents with the risk class computed in the open.

PRIIPs requires a key information document with a summary risk indicator, performance scenarios and costs. GraphAtlas computes the market risk measure from the Cornish-Fisher value at risk, runs the performance scenarios, and shows the arithmetic behind every cell of the document.

Try the calculation Request a walkthrough

Regime
Regulation (EU) No 1286/2014 and Delegated Regulation (EU) 2017/653
Set by
  • European Commission and the European Supervisory Authorities
Built for
  • Product governance
  • Asset managers and insurers
  • Distributors
Version
3.2
The daily returns of an example fund over five years, and the class of the summary risk indicator that they place it inThe summary risk indicator has seven classes, with limits of 0.5, 5, 12, 20, 30 and 80 per cent of volatility. The example fund has a value at risk equivalent volatility of 19.31 %, which places it in class 4. Under the scale are its 1280 daily returns over five years, with the size of an ordinary day marked by two dashed lines and 3 days that fell by more than five times that ringed. A tag says that the parameters are prescribed.SUMMARY RISK INDICATOR10.5253124205306807%VEV 19.31 %FIVE YEARS OF DAILY RETURNS1,280 DAYSPRESCRIBEDENGINEPRIIPS V3.2SET BYEUDATASAMPLERECEIPT19f62c76 The daily returns of an example fund over five years, and the class of the summary risk indicator that they place it inThe summary risk indicator has seven classes, with limits of 0.5, 5, 12, 20, 30 and 80 per cent of volatility. The example fund has a value at risk equivalent volatility of 19.31 %, which places it in class 4. Under the scale are its 1280 daily returns over five years, with the size of an ordinary day marked by two dashed lines and 3 days that fell by more than five times that ringed. A tag says that the parameters are prescribed.RISK INDICATOR10.5253124205306807%VEV 19.31 %DAILY RETURNS1,280 DAYSPRESCRIBEDENGINEV3.2DATASAMPLERECEIPT19f62c76

Try it

Run it on sample data

Make the fund more volatile, or add a few bad days. Watch the class, the build-up of the VEV and how close the fund sits to the next class.

Fig. 1 Market risk class for an illustrative fund, from five years of daily returns

Verifying receipt

The fund

% a year
days in five years
A large fall is a day when the fund lost five to eight times the move of an ordinary day.

The holding period

years

The history is 1,280 daily returns made for this page. Each large fall replaces one ordinary day, and the same days fall every time, so adding one fall changes one day.

Summary risk indicator

  1. 1under 0.5%
  2. 20.5 to 5%
  3. 35 to 12%
  4. 412 to 20%
  5. 520 to 30%
  6. 630 to 80%
  7. 7over 80%

Class 4 of 7The VEV is 19.31%. That is 0.69 points under the limit of class 5. It is 7.31 points over the limit of class 3.

0110100−8σ−6σ−4σ−2σ0+2σ+4σ+6σ+8σ
Days per bin, on a log scale. The line is the normal curve for the same volatility. Days a normal curve would not expect
Volatility
19.3% a year
Skew, s
−0.37
Excess kurtosis, k
1.77
Periods, N
1,280
How the VEV is built from the measured moments
StepRuleValue
A normal returnσ √N × −1.96σ √N × −1.96−84.451%
Skewσ √N × 0.474 s ÷ √Nσ √N × 0.474 s ÷ √N−0.209%
Fat tailsσ √N × −0.0687 k ÷ Nσ √N × −0.0687 k ÷ N−0.004%
Skew squaredσ √N × 0.146 s² ÷ Nσ √N × 0.146 s² ÷ N0.001%
Drift of a log return−½ σ² N−½ σ² N−9.283%
Value at risk, VaRthe five parts addedthe five parts added−93.946%
Under the root3.842 − 2 × VaR3.842 − 2 × VaR5.7209
Root less 1.96√(under the root) − 1.96√(under the root) − 1.960.4318
VEV(root less 1.96) ÷ √T, T = 5 years(root less 1.96) ÷ √T, T = 5 years19.31%

The same returns over other holding periods

  1. 1 yearclass 419.4%
  2. 2 yearsclass 419.3%
  3. 3 yearsclass 419.3%
  4. 4 yearsclass 419.3%
  5. 5 yearsclass 419.3%
  6. 6 yearsclass 419.3%
  7. 7 yearsclass 419.3%
  8. 8 yearsclass 419.3%
  9. 9 yearsclass 419.3%
  10. 10 yearsclass 419.3%

Receipt19f62c76 a8054c2f … 3d9c801b

Change the fund. 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

Price history
The closing prices of the product over at least five years, or the log returns already taken from them.
Recommended holding period
In years. It sets the number of periods in the value at risk and the length in the VEV.
Periods in a year
How many observations make a year, which depends on how often you observe. The default is 256 trading days.

What comes out

Moments
The volatility, skew and excess kurtosis measured from the returns, as point 12 defines them.
VaR and VEV
The Cornish-Fisher value at risk and the VEV, with every term of the expansion shown on its own line.
Market risk class
A class from 1 to 7, and how far the VEV sits from the limits on either side.
Derivation
Every figure as a step, each with the point of the regulation it applies.
Receipt
A hash of the coefficients, the class table, the inputs and the result. Anyone can recompute it.

What the plate covers

In the plate above

  • The market risk measure of a product with a return history, from the returns to the class.
  • Each term of the Cornish-Fisher expansion, so the effect of skew and fat tails can be read off.
  • The class the same returns would get over any holding period from one to ten years.

In the licensed engine, not the plate

  • Products that are not in the category the plate covers, such as those whose returns are simulated.
  • The credit risk measure, and the summary risk indicator that combines it with the market risk class.
  • The performance scenarios, the costs and the layout of the key information document.
  • Amendments after the text 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
Annex II, Part 1, point 11 The return of a period is the natural logarithm of the closing price over the closing price before it. logReturns src/kernel/priips.ts Tested PR-03
Annex II, Part 1, point 12 The volatility, skew and excess kurtosis come from the moments of the returns. sampleMoments src/kernel/priips.ts Tested PR-02
Annex II, Part 1, point 12 The value at risk is the Cornish-Fisher expansion over the periods in the holding period. cornishFisherTerms src/kernel/priips.ts Tested PR-03 Tested PR-02
Annex II, Part 1, point 13 The VEV is taken from the value at risk and the length of the holding period in years. vev src/kernel/priips.ts Tested PR-02
Annex II, Part 1, point 2 The VEV falls in one of seven classes. The text gives two classes to a value on an inner limit, and the engine takes the higher. mrmClass src/kernel/priips.ts Proved PR-01

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.

  • PR-01

    The MRM class is defined for every VEV, is between 1 and 7, never decreases as the VEV rises, and changes class exactly at the limits in the table.

    8 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/PR-01.smt2

Tested

True on every input we tried.

  • PR-02

    The VEV matches a case worked by hand, rises with negative skew and with fat tails, and tracks annualised volatility for normal returns.

    tests/kernel/priips.test.ts

  • PR-03

    The parts of the Cornish-Fisher value at risk add up to the whole, and for a normal return they reduce to the normal value at risk less the drift. Returns are the logarithms of price ratios and add up to the logarithm of the whole move.

    tests/kernel/priips.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 {
  marketRiskFromMoments,
  priipsReceiptPayload,
} from '@graphatlas/kernel/priips';
import { receipt } from '@graphatlas/kernel/receipt';

// Measured from 1280 daily log returns. marketRisk(returns, 5) reads them directly.
const moments = {
  sigma: 0.012043264269511359,
  skew: -0.3667442582418112,
  exKurt: 1.7665637458599814,
};

const result = marketRiskFromMoments(moments, 5);
const input = { moments, rhpYears: 5, periodsPerYear: 256 };
const hash = await receipt(priipsReceiptPayload(input, result));
Returns
const out = {
  mrm: 4,
  vev: 0.1931,
  var: -0.9395,
  tradingDays: 1280,
  receipt: '19f62c76a8054c2f6d5e0c553be3baa44945186032c2889060f0fae63d9c801b',
};

The call and the numbers come from the engine that built this page, run on the same input as the plate above. The VEV is a fraction, so 0.1946 is 19.46 per cent. 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. EU Final text

    Amendments to the presentation of performance scenarios in the key information document

    Shipped as PRIIPs 3.2, 8 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