Repository navigation
Outputs and Statuses
๐ Guide, not policy. The support matrix โบ Results and INSTALLATION.md โบ Automation entry points govern; where this page differs, the repository wins.
What Run SA-CCR writes, and how to tell whether it still describes the inputs. The five output tables are Results, HedgingSets, Buckets, TradeCalc and Checks. Every operation (run, validate, clear) empties them first, so a stopped or validation-only run can never leave earlier results looking current.
One row per input netting set, in input order, then one TOTAL row per
regime present. Header in row 6 (Results_Header = C6); run summary in C4,
status in C5.
| Col | Header | Content |
|---|---|---|
| C | NettingSetID | ID, or TOTAL CRR / TOTAL BCBS
|
| D | Counterparty | From NettingSets |
| E | Regime |
CRR or BCBS used for the set |
| F | Margined |
Y / N
|
| G | Trades used | Valid trade legs |
| H | MPOR (BD) | Margined sets only |
| I | V (sum MtM) | Sum of the trades' MtM in reporting currency |
| J | C (VM + NICA) | Collateral |
| K | RC | Replacement cost (margined RC for a margined set) |
| LโQ | AddOn IR ยท FX ยท CR ยท EQ ยท CO ยท OT | Asset-class add-ons (OT under CRR only) |
| R | AddOn aggregate | Sum of the asset-class add-ons |
| S | Multiplier | PFE multiplier |
| T | PFE | Multiplier ร aggregate add-on |
| U | Alpha | 1.4 or the override |
| V | EAD margined | Margined sets: alpha ร (RC + PFE) before the cap |
| W | EAD cap (unmargined) | Margined sets: the same set calculated as unmargined |
| X | EAD | The reported EAD: the lower of V and W for a margined set |
| Y | Cap applied |
Y / N for margined sets; n/a for unmargined |
| Z | C (cap basis) | C of the cap: NICA only, in both regimes |
| AA | RC (cap basis) | RC of the unmargined calculation |
| AB | AddOn unmargined | Aggregate add-on with unmargined maturity factors |
| AC | Multiplier (cap basis) | Multiplier of the unmargined calculation |
| AD | Status | See below |
For a margined netting set, columns KโT show the margined figures and
X the EAD after the cap; ZโAC show the unmargined calculation behind the cap
(CRE52.2, CRE52.10; CRR Art. 274(3), EBA-QA-2023_6962). The regulation is
explained on Replacement Cost and Collateral
and Potential Future Exposure.
The checks run in this order, so a set with an invalid field and a rejected
trade is INVALID. When a set with one of the two reasoned INVALID
statuses has further input errors, the status adds ; N other input error(s).
From 1.0.2, a conditional format highlights every INVALID and INCOMPLETE
row in light red, so withheld EADs stand out; VALID, NO TRADES and the
TOTAL rows are not highlighted. The format is part of the template: a workbook
that only receives the synchronized VBA keeps its Results sheet without it.
| Status (as written in AD) | Meaning | Figures |
|---|---|---|
INVALID: N input error(s) |
A netting-set-level error: an invalid NettingSets field (from 1.0.2 also a missing or misplaced QCCP or retained-VM value), the ID listed twice, one reference given two sub-classes by its trades, or IR trades in a CRR set while IRBucketOffset is FALSE |
None: EAD withheld |
INVALID: multi-level client structure, not supported (from 1.0.2) |
Client clearing role MULTI
|
None: EAD withheld |
INVALID: STM requires unmargined treatment; mixed margined/unmargined netting sets are not supported (from 1.0.2) |
A settled-to-market trade in a margined netting set | None: EAD withheld |
INCOMPLETE: N of M trade(s) rejected |
At least one of its trades was rejected | None: EAD withheld, never calculated from the remaining trades |
NO TRADES |
No trades refer to it (information line on Checks) | None, and not counted as withheld |
VALID |
Everything above passed | All columns |
After the netting-set rows, TOTAL CRR then TOTAL BCBS, each only when the
regime has netting sets. Each sums, over that regime's VALID netting sets
only, V, C, RC, the six add-ons, the aggregate add-on, PFE and EAD; the
multiplier and the other columns stay empty. Its status says what it covers:
6 of 8 netting set(s) VALID; 2 withheld
There is no total across regimes: a CRR and a BCBS EAD of the same
portfolio are alternatives, not parts (#198). TOTAL, TOTAL CRR and
TOTAL BCBS cannot be used as netting-set IDs. The TOTAL rows are bold.
Trade exposures to a CCP (role CCP, from 1.0.2) stay in their regime's
total. Checks names their share in an INFO line per regime that has CCP
netting sets, with reference TOTAL CRR or TOTAL BCBS:
Trade exposures to CCPs in this total: 1 of 2 CCP netting set(s) VALID, EAD โฆ; risk weights not applied.
Screenshots: Results after the demonstration run


โน๏ธ The demonstration workbook enters CRE99 Example 3's WTI trade with actual dates over 365 days, so TradeCalc shows M = 0.7507 and
BCBS-EX3shows an EAD of 5,405 (thousands) against the 5,406 printed in CRE99. The regression case enters exactly 0.75 years and matches 5,406.
One row per trade leg read, valid or not. Header in row 5.
| Col | Header | Col | Header |
|---|---|---|---|
| C | TradeID | P | Supervisory duration |
| D | NettingSetID | Q | Adjusted notional d |
| E | Asset class | R | Supervisory delta |
| F | Status (OK / EXCLUDED) |
S | MF unmargined |
| G | Hedging set (key such as CO|CLIMATIC|STD) |
T | MF margined |
| H | Bucket / entity / type | U | Effective notional unmargined |
| I | SF (effective) | V | Effective notional margined |
| J | Notional (rep ccy) | W | IR bucket |
| K | MtM (rep ccy) | X | Stand-alone add-on |
| L | S | Y | Lambda |
| M | E | Z | Regime |
| N | M | AA | Messages |
| O | T (option) |
A column that does not apply is blank: T for a non-option, the supervisory
duration outside interest rate and credit, the margined MF and effective
notional in an unmargined set. For a settled-to-market trade (from 1.0.2),
M is the time to its next reset date, the remaining maturity the maturity
factor uses. In a CCP netting set whose CCP retains VM, MF margined is
each trade's own, so it can differ between the trades of the set. An EXCLUDED trade has only its reasons in
Messages. Effective notional = delta ร d ร MF.
Screenshots: TradeCalc


HedgingSets (header row 5): NettingSetID, Asset class, Hedging set, Trades, D1 (<1y; CRR <=1y), D2 (1-5y), D3 (>5y), Effective notional (IR / FX / OT), Systematic: sum rho ร A, Idiosyncratic: sqrt(sum (1โrhoยฒ) Aยฒ), Hedging-set add-on, Add-on unmargined, Figures basis, SF effective (IR / FX / OT). Margined sets are shown with the margined maturity factor; Add-on unmargined always shows the unmargined add-on used for the cap.
Buckets (header row 5): NettingSetID, Asset class, Hedging set, Bucket / entity / type, Trades, SF (effective), Correlation, Effective notional unmargined and margined, Entity / type add-on unmargined and margined. A bucket is an IR maturity bucket (on E), an FX currency pair, a credit or equity reference entity, a commodity type, or an other-risks primary risk driver.
Screenshots: HedgingSets and Buckets


Header in row 5: Severity, Sheet, Row, Reference, Message.
| Severity | Meaning | Examples |
|---|---|---|
ERROR |
An input rejected, a netting set withheld, or the run stopped |
Trade excluded: trade has matured (maturity <= reporting date) ยท EAD withheld: 1 trade(s) rejected - see the Trades messages. ยท Reporting currency missing.
|
WARNING |
Input accepted with an assumption, or a what-if difference |
Parameter missing - default 10 used. ยท MPOR override 3 BD is below the regulatory floor - 10 BD applied. ยท What-if: Alpha is 1.2 (regulatory 1.4).
|
INFO |
Information only |
Netting set has no trades - no EAD. ยท VM posted under a one-way margin agreement: โฆ ยท Client facing its clearing member under CRR: MPOR floor 5 BD (CRR Art. 279c(1)). ยท Trade exposures to CCPs in this total: โฆ ยท No issues found.
|
ERROR and WARNING lines are the errors and warnings counts of the run
message and the result line; INFO lines are counted only in the evidence
CSV. A trade is listed once with all its reasons, separated by ;. After
Validate inputs, Checks is the only output. Common messages and what to do
are on Troubleshooting.
Role lines (from 1.0.2). Every CM, CLIENT and CCP netting set gets
an INFO line naming its role, the MPOR floor and the rule applied, so the role
and method are in the run's evidence without a new Results column:
| Role | INFO line (margined set) |
|---|---|
CM |
Clearing member facing its client: MPOR floor 5 BD (CRE54.12; CRR Art. 279c(1)). |
CLIENT, CRR |
Client facing its clearing member under CRR: MPOR floor 5 BD (CRR Art. 279c(1)). |
CLIENT, BCBS |
Client facing its clearing member under BCBS: MPOR floor 10 BD (a conservative interpretation: โฆ). |
CCP |
Trade exposure to a QCCP: MPOR floor 10 BD (CRE54.8(2); CRR Art. 304(3)(b)); risk weight 2% (CRE54.7; CRR Art. 306(1)(a)), not applied. |
When the large or illiquid flag raises the floor, the line adds raised to 20 BD by the large or illiquid flag (CRE52.51; CRR Art. 285(3)). For a CCP
set whose CCP retains VM, it adds the per-trade horizon. A non-qualifying CCP
reads Trade exposure to a non-qualifying CCP and standardised risk weight of the CCP (CRE54.41; CRR Art. 306(1)(b)), to be determined outside K-SACCR;
with QCCP blank or invalid, Trade exposure to a CCP of unknown QCCP status
and no risk-weight rule. An unmargined CM, CLIENT or CCP set gets a line
saying that no MPOR floor applies. The risk weight is stated, never applied.
Screenshot: Checks after the demonstration run

Every run and validation is classified against parameter set
CRE52-CRR-2026-10-09 (see Inputs โบ Regulatory or what-if):
| Class | Shown as |
|---|---|
REGULATORY |
Message Parameters: regulatory set CRE52-CRR-2026-10-09; C4 | regulatory parameters CRE52-CRR-2026-10-09
|
WHAT-IF |
Message WHAT-IF RUN: N parameter(s) differ from the regulatory set (listed on Checks).; C4 | WHAT-IF: N parameter(s) differ from CRE52-CRR-2026-10-09; one What-if: warning per difference |
REGULATORY means the calibration equals the reference set. It is not a
statement that every input is valid, nor a regulatory approval.
Last run <yyyy-mm-dd hh:mm:ss> | reporting date 2026-09-30 | ccy EUR | economic trades used 62 of 65, legs 62 of 65 | errors 5, warnings 0 | regulatory parameters CRE52-CRR-2026-10-09 | inputs 3B2754CA | <seconds> s | EAD withheld for 2 netting set(s): BCBS 2
The figures are those the repository records for the demonstration run of a
workbook built from the 1.0.2 template (the 1.0.1 release workbook showed
inputs 7B68D18F: the headers of the new input columns are part of the
fingerprint); the time and duration change at every run. The withheld netting sets are split
by regime, for example BCBS 1, CRR 1 (#276). Other forms:
Last validation โฆ | outputs cleared: press Run SA-CCR to calculate,
Last run โฆ FAILED - see Checks sheet (N errors),
Last run โฆ FAILED - error โฆ and Outputs cleared โฆ.
| C5 reads | ResultsStatus() |
Meaning |
|---|---|---|
Inputs unchanged since the last run (inputs XXXXXXXX); outputs are checked when evidence is exported (1.0.0: Results current (inputs XXXXXXXX)) |
CURRENT |
The inputs equal those of the last completed run, and the outputs are still those it wrote |
The same as CURRENT
|
EDITED (from 1.0.1) |
The inputs are unchanged, but an output cell on Results, Checks or a reconciliation sheet was changed after the run |
OUT OF DATE - inputs changed since the last run; press Run SA-CCR. (red) |
STALE |
An input changed after the run |
No results: press Run SA-CCR. |
NONE |
No valid completed run |
Status unavailable: <reason> |
(raises ERR_PARAMS_LAYOUT) |
A Params workbook name is missing or broken |
How it works: a completed run stores the input fingerprint (eight
hexadecimal characters) in the hidden workbook name SACCR_RunInputs,
which is emptied at the start of every run and validation, and by
Clear outputs. The formula
=ResultsStatusText(SACCR_RunInputs, NettingSets!$C:$S, Trades!$C:$AC, Params!$1:$1048576)
($C:$Q and $C:$AA up to 1.0.1) watches the input sheets and the whole
of Params, recomputes the fingerprint and compares. The fingerprint covers
NettingSets, Trades (every column before the Comment, so from 1.0.2 also the
settlement type and next reset date), every Params parameter read through its name, the factor and FX
tables, the input headers, the type of each value (the number 47756
and the text '47756 differ, as do two error values) and the date system.
Descriptions, references, comments and formatting do not count, nor does a
header changed only in case or spacing. Params is read through its names, so
an edit is found also after its tables moved.
C5 checks the inputs only. Watching the output sheets as well would
recompute their fingerprint after every edit, for every row of a large
portfolio. An output cell changed by hand after the run is reported by
ResultsStatus() as EDITED (from 1.0.1), and the evidence export refuses it
(see Reconciliation and Evidence). When an
input changed as well, ResultsStatus() says STALE.
A completed run also stores the output fingerprint in the hidden name
SACCR_RunOutputs: the run summary, the reconciliation summaries and
the tables the evidence CSV copies (Results, the two reconciliations,
Checks). Every operation empties it first. An output cell edited after the
run no longer matches it, and Export evidence refuses (see
Reconciliation and Evidence).
โ ๏ธ NONEdoes not prove every output cell is empty: a protected sheet may keep old values after a failed clear. The run error says so separately.
In manual calculation, press F9 after an edit to refresh C5. A run
always recalculates first; if the recalculation does not finish (for example
after Esc) the run stops with ERR_RECALC_PENDING and the earlier
results are no longer reported as current.
- Inputs โ what feeds these tables
- Reconciliation and Evidence โ comparing with a bank and exporting the run
- How It Works โ the calculation flow and the result line
- Troubleshooting โ Checks messages and run stops
- Workbook Guide ยท Home
๐ฆ 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.