Repository navigation
Potential Future Exposure
๐ Guide, not policy. docs/methodology/README.md (supervisory parameters, support matrix and traceability) is the project's governing implementation specification. Applicable law and official regulatory texts prevail over the repository and this guide; input responsibilities and implementation limits are identified below.
The potential future exposure (PFE) is the add-on part of the EAD: a supervisory measure of potential exposure over the applicable horizon. It is not a forecast of a particular realised path or a separately calculated capital requirement. This page follows it from the multiplier down to each trade, then back up through buckets, hedging sets and asset classes, with every supervisory parameter the engine uses.
Status at v1.0.2: version 1.0.2, released on 2026-10-23
(GitHub Release).
The add-on rules and parameters are unchanged from 1.0.1; 1.0.2 changes the
maturity factor of settled-to-market trades and of trades in a CCP netting
set whose CCP retains VM (Margining and MPOR).
Parameter values as checked on 2026-10-09 and built into the parameter set
CRE52-CRR-2026-10-09.
| Point | Rule |
|---|---|
| Floor F | 5% (MultiplierFloor; CRE52.23; CRR Art. 278(3)) |
| V โ C โฅ 0 | multiplier = 1 |
| Aggregate add-on of 0 | Engine convention: multiplier = 1 to avoid division by zero; PFE = 0 |
| C | VM + NICA, the same C as the RC; on the cap basis NICA only. The CRR prints z = CMV โ NICA (Art. 275(1) netting sets) and CMV โ VM โ NICA (Art. 275(2)) |
| Aggregation | The asset-class add-ons are added with no diversification across classes (CRE52.25; CRR Art. 278(1), which counts the risk categories to which at least one trade is mapped) |
The exponential formula assumes a strictly positive aggregate add-on. For that case the multiplier is bounded by 5% and 1 and approaches 5% as V โ C becomes very negative. The 5% floor is on the multiplier, not on EAD; it implies PFE โฅ 5% of the aggregate add-on, not a positive absolute minimum when the add-on itself is zero. V is gross of collateral, and C uses recognised collateral after the applicable adjustments. All amounts must be in the same reporting currency.
For a margined netting set, the engine also recalculates the unmargined cap
basis, including its add-on and multiplier, using C = NICA. When the EAD cap
binds, the ordinary Results columns for add-on, multiplier and PFE continue
to show the margined calculation. Final EAD can therefore be below
Alpha ร (RC + PFE) from those columns; reconcile it with EAD margined
and EAD cap (unmargined). See Replacement Cost and Collateral.
Published checks: Example 2, V โ C = โ20 thousand, multiplier 0.965 (T05); Example 5, V โ C = โ120 thousand, multiplier 0.958 (T13); Example 4, aggregate add-on 629 thousand (T09); Example 5, 1,401 thousand (T12).
The illustration shows the add-on hierarchy and multiplier curve. Its exposure path is schematic: regulatory PFE comes from the formula above, not from measuring the realised rise along that path. The replacement cost on the left is explained on Replacement Cost and Collateral (select it to open the full-size version):
Each trade contributes its effective notional (CRR: risk position, Art. 279):
with ฮด the supervisory delta, d the adjusted notional and MF the maturity factor. TradeCalc shows all three and the effective notional on both bases. Its stand-alone add-on column is specifically effective SF ร |D unmargined|, including any basis/volatility factor adjustment. It remains on the unmargined basis even for a margined trade. It is a diagnostic amount, not the trade's allocated contribution to portfolio PFE; summing these amounts does not reproduce aggregation with offsets, correlations and the netting-set multiplier.
| Asset class | d | Locator |
|---|---|---|
| Interest rate, credit | Notional ร supervisory duration SD | CRE52.34; CRR Art. 279b(1)(a) |
| Foreign exchange | Notional of one leg, converted to the reporting currency: the foreign-currency leg, or the larger leg when both are foreign. The user chooses the leg; the engine checks that its currency is one of the pair's | CRE52.35; CRR Art. 279b(1)(b) |
| Equity, commodity | Engine uses the entered amount, converted to reporting currency. Prepare it under the applicable regime: Basel uses current unit price ร quantity; CRR also specifies treatment for contracts expressed as a notional amount. See below | CRE52.36 and FAQ1; CRR Art. 279b(1)(c) |
| Other risks (CRR) | Engine uses the entered amount, converted to reporting currency. The institution must choose the most appropriate method among Art. 279b(1)(a)โ(c) and supply the resulting adjusted amount | CRR Art. 279b(1)(d) |
S and E are the start and end of the period the trade references, in years from
the reporting date (S = 0 once the trade has started). For an option on an
interest-rate or credit instrument, S and E are those of the underlying: a
swaption's S is its exercise date (the earliest for a Bermudan), and such an
option without a start date is rejected rather than read as S = 0
(#40). R = 5% and
the 10-business-day floor (SDFloorBD) are the CRR and Basel values. Published
check: Example 1's 10-year swap, d = 78,694 thousand USD (T01).
Preparing the entered amount. The workbook reads one notional per row; it does not derive quantity ร price or read an amortisation schedule.
- For ordinary equity and commodity trades, Basel CRE52.36 uses current unit price ร referenced quantity. CRR Art. 279b(1)(c) also addresses trades contractually expressed as a notional amount; this is a specific rule, not a free choice between current market value and historic notional.
- For equity and commodity volatility transactions, CRE52.36 FAQ1 replaces
unit price with the referenced volatility or variance and quantity with
contractual notional. Merely selecting
Volatilitydoes not prepare this input: the engine applies the SF multiplier but uses the supplied amount. - For amortising or accreting IR/credit trades, enter the time-weighted average remaining notional under CRE52.37(2). CRR Art. 279b(2) also specifies rules for variable notionals or quantities; apply the relevant rule before entry. The engine cannot establish compliance from one scalar input.
- Scale a leveraged swap to its equivalent unleveraged notional. For multiple exchanges/payments, apply the regime-specific multiplier: CRE52.37(4) refers to principal exchanges; CRR Art. 279b(2) specifies its payment rule. These adjustments are not inferred automatically.
- A qualifying settlement/reset changes M to the next reset date; it does
not change E or the supervisory-duration period. From 1.0.2 it is declared
with Settlement type
STMand the next reset date, keeping the contractual M, E and T as entered. See Margining and MPOR for conditions and limitations.
For FX, the engine checks the entered notional currency but cannot verify that the user selected the required leg or the larger converted leg. For other risks it does not automatically apply an IR-style duration adjustment. See the support matrix for the one-row input conventions.
| Instrument | ฮด | Locator |
|---|---|---|
Linear (swaps, forwards, futures, CDS) |
+1 long, โ1 short in the primary risk factor | CRE52.39; CRR Art. 279a(1)(c) |
Option (European, American, Bermudan at the latest exercise date, Asian on the current average) |
Bought call +N(dโ), sold call โN(dโ), bought put โN(โdโ), sold put +N(โdโ) | CRE52.40; CRR Art. 279a(1)(a); CRR-RTS Art. 5 |
CDO (tranches, nth-to-default) |
+15 / ((1 + 14A)(1 + 14D)) if protection is bought, negative if sold; nth-to-default as A = (n โ 1)/k, D = n/k | CRE52.41; CRR Art. 279a(1)(b) |
P is the underlying price, K the strike, T the time to the latest exercise date in years, ฯ the supervisory option volatility and ฮป the shift. N() is the standard normal cumulative distribution function; dโ is its argument and is distinct from adjusted notional d. P, K and ฮป must use consistent units (for example, interest rates as decimals when applying the 0.10% threshold):
| Regime | Interest-rate and commodity options | Other options |
|---|---|---|
CRR |
ฮป computed per option (CRR-RTS Art. 5(2)): max(0.10% โ min(P, K), 0) for interest rate, max(โ(1 + 0.1) ร min(P, K), 0) for commodity. An entered ฮป that differs is ignored with a warning |
ฮป as entered, 0 if blank |
BCBS |
Engine uses ฮป as entered, 0 if blank. The Basel interest-rate shift is subject to CRE52.40 FAQ2, including consistency within a currency; this is not a general authorisation for any commodity shift | Engine accepts the input, 0 if blank; regulatory admissibility is not established by acceptance |
Shift scope and consistency. CRE52.40 FAQ2 describes the shift for negative-rate situations and requires the same parameter consistently for interest-rate options in the same currency, taking account of supervisory recommendations. The workbook does not enforce that cross-trade consistency. Under CRR, the specified shifted treatment applies to IR and commodity options under Delegated Regulation (EU) 2021/931, as amended by 2025/855. The engine's ability to accept an entered shift for other categories must not be read as regulatory permission to alter their prescribed delta.
A trade with P + ฮป โค 0 or K + ฮป โค 0 is rejected, which is how a Basel option on a negative forward without an entered ฮป is treated (T22). Option checks: an option needs a price, a strike and an expiry after the reporting date and not after its maturity. An FX option must be entered in market quote order (EUR, GBP, AUD, NZD, USD, CAD, CHF, JPY, then other currencies alphabetically), since a call on one order and the economically identical put on the other give different deltas (CRE52.59 FAQ1). Published check: the bought receiver swaption of Example 1, ฮด = โ0.2694 (T02).
Unmargined: sqrt(min(max(M, 10/250), 1)). Margined: 1.5 ร sqrt(MPOR / 250). Both are on Margining and MPOR.
The Params factor table holds 26 rows, each with a key, factor, correlation,
option volatility, commodity hedging set and regimes; a credit, equity or
commodity trade selects its row by asset class and sub-class (for example
CR_BBB); interest rate, FX and other risks have one row each.
| Asset class | Sub-class (key) | SF | Correlation ฯ | Option volatility ฯ | Locators |
|---|---|---|---|---|---|
| Interest rate | IR |
0.50% | buckets 0.7, 0.7, 0.3 | 50% | CRE52.72; CRR Art. 280a(2)โ(3); CRR-RTS Art. 5(3) |
| Foreign exchange | FX |
4.0% | โ | 15% | CRE52.72; CRR Art. 280b(2), 279a Table 1 |
| Credit, single name |
AAA, AA / CQS1
|
0.38% | 50% | 100% | CRE52.72; CRR Art. 280c(5) Table 3 |
A / CQS2
|
0.42% | 50% | 100% | ||
BBB / CQS3
|
0.54% | 50% | 100% | ||
BB / CQS4
|
1.06% | 50% | 100% | ||
B / CQS5
|
1.6% | 50% | 100% | ||
CCC / CQS6
|
6.0% | 50% | 100% | ||
| Credit, index |
IG_INDEX; SG_INDEX
|
0.38%; 1.06% | 80% | 80% | CRE52.72; CRR Art. 280c(5) Table 4 |
| Equity |
SINGLE; INDEX
|
32%; 20% | 50%; 80% | 120%; 75% | CRE52.72; CRR Art. 280d(3)โ(4) |
| Commodity, electricity | ELECTRICITY |
40% | 40% | 150% | CRE52.72; CRR Art. 280e(4)โ(5) |
| Commodity, other |
OIL_GAS, METALS, AGRICULTURAL, OTHER
|
18% | 40% | 70% | CRE52.72; CRR Art. 280e(4)โ(5) |
| Commodity, climatic conditions (CRR only) | CLIMATIC |
18% | 40% | 70% | CRR Art. 277a(1)(e)(v), 280e(5) |
| Other risks (CRR only) | OT |
8% | โ | 150% | CRR Art. 280f(2), 279a Table 1 |
-
Credit scales. Basel prints ratings, the CRR credit quality steps; the
factors are the same on both scales. An unrated name is entered as
CQS3(0.54%),CQS5(1.6%) where CRR Art. 128 applies, or the step mapped from an internal rating (Art. 280c(5)(a)); there is no unrated sub-class. -
Credit indices and baskets. The two fixed index factors do not cover
every CRR multi-name transaction. Art. 280c(5)(b)(i) applies the quoted-index
factors using the dominant credit quality for qualifying indices listed
on a recognised exchange. Other multi-name positions require a
notional-weighted average of constituent supervisory factors under
Art. 280c(5)(b)(ii). The workbook does not read constituents or calculate
that average. Do not map an arbitrary basket to
IG_INDEXorSG_INDEXand assume the prescribed calculation has been performed. Such cases require a separately established treatment beyond these fixed defaults. -
One sub-class per reference. A credit or equity entity, or a commodity,
given two different sub-classes by two trades of the same netting set makes
that netting set
INVALID, so the result cannot depend on row order (#37). -
Basis and volatility multiply the factor by
BasisFactor0.5 andVolatilityFactor5 (CRE52.46โ.47; CRR Art. 280).

| Asset class | Hedging set | Bucket within it | Hedging-set add-on | Engine key, e.g. |
|---|---|---|---|---|
| Interest rate | Per currency; inflation (EUR-INFL) its own |
Maturity bucket by E | SF ร EN, EN across buckets (below) | IR|EUR|STD |
| FX | Per currency pair, alphabetical | The pair | SF ร |ฮฃ D| | FX|EUR/USD|STD |
| Credit | One | Entity (risk factor) | Single-factor formula | CR|STD |
| Equity | One | Entity (risk factor) | Single-factor formula | EQ|STD |
| Commodity | Energy, metals, agricultural, other; climatic conditions under CRR | Commodity type (risk factor) | Single-factor formula | CO|ENERGY|STD |
| Other risks (CRR) | Per identical primary risk driver (risk factor) | The driver | SF ร |ฮฃ D| | OT|LONGEVITY INDEX X|STD |
The table describes standard hedging sets. Basis and volatility transactions use separate sets as described below. All aggregation is within a legally recognised netting set; these formulas do not permit offsets between different netting sets. The asset-class add-on is the sum of its hedging-set add-ons. Locators: IR CRE52.56โ.57, CRR Art. 280a; FX CRE52.58โ.59, Art. 280b; credit CRE52.60โ.64, Art. 280c; equity CRE52.65โ.68, Art. 280d; commodity CRE52.69โ.70, Art. 280e; other risks Art. 277a(1)(f), 280f; hedging sets CRE52.45, Art. 277a.
Trades are bucketed by the end date E of the period they reference:
| Bucket |
CRR (Art. 280a(3), Table 2) |
BCBS (CRE52.57(3)) |
|---|---|---|
1 (<1Y) |
E โค 1 year | E < 1 year |
2 (1-5Y) |
1 < E โค 5 years | 1 โค E โค 5 years |
3 (>5Y) |
E > 5 years | E > 5 years |
An end date of exactly one year is in bucket 1 under CRR and bucket 2 under Basel (#191). With D1, D2, D3 the sums of the effective notionals in each bucket:
The cross terms are 2 ร the bucket correlations 0.7, 0.7 and 0.3
(IRCorrBucket12, 23, 13). Under Basel only, the bank may instead use the
sum of absolute bucket values, EN = |D1| + |D2| + |D3| (CRE52.57(5)), by setting
IRBucketOffset to FALSE; the CRR prints only the formula with offsets
(Art. 280a(3)), so a CRR netting set with interest-rate trades is then
INVALID. Published check: Example 1, interest-rate add-on 347 thousand
(T03). The same inputs with the sum of absolutes give 625,153.16 USD
(illustrative-ir-sum-of-absolutes.bcbs, illustrative).
One hedging set per currency pair, written in alphabetical order: EUR/USD and USD/EUR are the same hedging set, and a pair entered the other way round has its delta sign reversed, so opposite directional positions can offset when their adjusted notionals in reporting currency and maturity factors match. Equal numeric notionals expressed in different currencies do not establish equal effective notionals. Both currencies need an FX rate on Params. Within the hedging set the effective notionals are netted: AddOn = 4% ร |ฮฃ D|.
Standard credit trades form one hedging set, and standard equity trades another, within each netting set. Basis and volatility are separated. Within each, the trades on one entity (the risk factor or reference) are added into an entity add-on, and the entity add-ons are combined through one common factor:
ฯ is 50% for a single name and 80% for an index. The same formula is the
worksheet function SACCR_FactorAggregation. Published check: the credit
trades of Example 2 lead to the EAD of 381 thousand (T06), so the credit
aggregation is exercised under Basel.
Commodity trades go to one of four hedging sets by the factor-table row of their
sub-class: energy (ELECTRICITY, OIL_GAS), metals, agricultural and other;
under CRR, CLIMATIC forms a fifth hedging set of its own
(Art. 277a(1)(e)(v)). Within each hedging set the trades are bucketed by
commodity type, which is the risk factor as entered, combined with the
single-factor formula above with ฯ = 40%, and the hedging-set add-ons are added.
The fixture of CRE99 Example 3 enters WTI and Brent with one risk factor,
CRUDE OIL, as one commodity type. This is the published example's mapping,
not a general permission to disregard basis risk: CRE52.71 permits supervisors
to require finer definitions for significant basis risk, including differences
in product, location or quality. Published check: Example 3, EAD 5,406 thousand (T07).
Trades whose primary risk driver fits no other class are mapped to the other-risks category (CRR Art. 277(1)(f)). They share a hedging set only when the risk factor is identical (Art. 277a(1)(f)), and AddOn = 8% ร |ฮฃ D| (Art. 280f). Under Basel such a trade is rejected (T26). Illustrative check: a longevity swap of 10,000, an offsetting one of 4,000 on the same index and a catastrophe-loss swap of 5,000 give 8% ร (|10,000 โ 4,000| + |5,000|) = 880 (T24) and an EAD of 1.4 ร 880 = 1,232 (T25).
| Nature | Hedging set | Factor | Locator |
|---|---|---|---|
Basis (the difference between two risk factors in one currency) |
Its own hedging set per label within the asset class, such as IR|EUR|BASIS:<label>
|
SF ร 0.5 | CRE52.46, .73; CRR Art. 277a(2)(b), 280 |
Volatility (variance and volatility swaps, options on volatility) |
Its own hedging sets per label, built as the class's standard hedging sets (CRE52.45) | SF ร 5 | CRE52.47, .73; CRR Art. 277a(2)(a), 280 |
The label must encode the required grouping; it is not a discretionary way to change offsets. The CRR groups basis trades only when the pair of risk drivers is identical and positively correlated (Art. 277a(2)); where the conditions do not hold, its fallback mapping applies. Basel basis sets are also specific to the pair of risk factors. Cross-currency swaps are not basis transactions merely because they have two floating legs (CRE52.46). For volatility, follow the applicable asset-class grouping and CRR risk-driver conditions. Different labels split the engine's sets, while identical labels can combine trades: the engine does not verify the economic suitability of the grouping. Neither rule has an adopted published or independent value test: a relation test checks that a basis swap adds half the add-on of a standard swap.
A transaction with more than one material risk driver is mapped to each risk
category it depends on (CRR Art. 277(3), mandatory; CRE52.28 where the
supervisor requires it), and an option combination is split into its options
(CRR Art. 274(6); CRE52.42(4), CRE52.43). K-SACCR takes such a transaction as
legs: rows sharing an Economic trade ID
(#38).
| Rule | If broken |
|---|---|
Exactly one leg is the MtM leg (MtM leg = Y) and carries the trade's market value; every other leg holds 0, so V counts it once |
Every leg of the trade is rejected |
| All legs are in one netting set | Every leg is rejected |
| Two legs in the same asset class must both be options: a linear product such as a swap may not be split | Every leg is rejected |
Each leg has its own risk attributes, delta, maturity factor and add-on. The
mapping itself is the user's: CRR-RTS Articles 1โ4 and 6 are not applied or
checked. Illustrative check (legs-two-risk-categories, CRR): an equity
forward leg of 10,000 (MtM 30, the MtM leg) and an FX forward leg of 10,000
(MtM 0) give RC 30, an equity add-on of 32% ร 10,000 = 3,200, an FX add-on
of 4% ร 10,000 = 400 and EAD = 1.4 ร (30 + 3,600) = 5,082. Digital
options are not supported: option legs are calculated as an ordinary
combination (#120).
The general PFE formulas above assume the supported margin-agreement
structure. Multiple agreements in one netting set or a shared agreement
across netting sets require special treatment (CRE52.74โ.76; CRR Art. 274(4),
278(2)). Declared MIXED or SHARED structures are rejected by the engine;
leaving the declaration blank does not establish eligibility.
| Rule | Basel | CRR |
|---|---|---|
| Supervisory duration, adjusted notional (CRE52.34) | Validated, T01 | Not validated |
| Option delta (CRE52.40) | Validated, T02 | Not validated; lambda shift illustrative (T20โT23) |
| Interest rate, formula with offsets (CRE52.57) | Validated, T03 | Not validated |
| Multiplier (CRE52.23); aggregate add-on (CRE52.25) | Validated, T05, T13; T09, T12 | Not validated |
| Credit, commodity aggregation; CRE52.72 factors used by the examples | Exercised | Not validated |
| FX, equity, CDO delta, basis, volatility, sum of absolutes | Not validated | Not validated |
| Climatic conditions, other risks | โ | Not validated (T24โT27, illustrative) |
| Equity add-on and option delta in client-clearing and settled-to-market cases (from 1.0.2) | Not validated (illustrative-clearing-*-listed, illustrative-settled-to-market-*) |
Not validated (the same cases) |
The statuses refer to the tests adopted in the v1.0.2 catalogue; they do not certify every product, input convention or parameter combination. Published values are rounded: retain full precision in intermediate calculations. Numerical checks do not validate the user's risk mapping, collateral eligibility, notional preparation or label choices.
Primary references: Basel CRE52 and the CRR/RTS texts identified in Regulatory Sources.
๐ฆ K-SACCR ยท โ๏ธ EU CRR ยท Basel CRE52 ยท ๐งช Published CRE99 checks T01โT14; CRR implemented, not numerically validated ยท ๐ฆ Release 1.0.2 published 2026-10-23 ยท ๐งฎ No real portfolio data ยท โก 500,000 synthetic trade legs in under two minutes ยท Repository ยท Validation Approach ยท Open Items
๐ฆ K-SACCR
โ๏ธ Regulation
- ๐ SA-CCR Overview
- ๐ Regulatory Sources
- ๐งญ Regulatory Basis
- ๐ก๏ธ Replacement Cost and Collateral
- โฑ๏ธ Margining and MPOR
- ๐ Potential Future Exposure
- โ๏ธ Basel vs CRR
- ๐งฎ Worked Examples
๐งฎ Workbook
- ๐ Getting Started
- ๐บ๏ธ Workbook Guide
- ๐ฅ Inputs
- ๐ค Outputs and Statuses
- ๐ Reconciliation and Evidence
- โ๏ธ How It Works
- ๐งพ Worksheet Functions
- ๐งช Test Catalogue
- โ Validation Approach
- ๐ ๏ธ Troubleshooting
- ๐ง Open Items and Limitations
๐ Guide, not policy: the repository documents govern.
