Skip to content

Outputs and Statuses

Daniele Penza edited this page Oct 27, 2026 · 7 revisions

๐Ÿ“ค Outputs and Statuses

Section Statuses Totals Release

๐Ÿ“Œ 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.


๐Ÿงพ Results

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.

Netting-set statuses

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

TOTAL rows

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

Results sheet after a run, left part: one row per netting set with regime, margining, trade count, MPOR, V, C, RC, add-ons by asset class, aggregate add-on and multiplier, and TOTAL CRR and TOTAL BCBS rows

Results sheet after a run, right part: aggregate add-on, multiplier, PFE, alpha, margined EAD, unmargined cap, EAD, cap applied and status per netting set; two netting sets are INCOMPLETE because trades were rejected

โ„น๏ธ The demonstration workbook enters CRE99 Example 3's WTI trade with actual dates over 365 days, so TradeCalc shows M = 0.7507 and BCBS-EX3 shows 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.


๐Ÿงฎ TradeCalc

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

TradeCalc sheet, left part: per trade, netting set, asset class, status, hedging set, bucket, effective supervisory factor, notional and MtM in reporting currency, S, E, M, T, supervisory duration, adjusted notional and supervisory delta

TradeCalc sheet, right part: per trade, adjusted notional, supervisory delta, unmargined and margined maturity factors, effective notionals, IR bucket, stand-alone add-on, lambda and regime


๐Ÿงฑ HedgingSets and Buckets

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

HedgingSets sheet: per netting set and hedging set, the IR maturity-bucket effective notionals D1 to D3, systematic and idiosyncratic components, hedging-set add-on, unmargined add-on, basis and supervisory factor

Buckets sheet: per netting set, hedging set and maturity bucket, entity or commodity type, the trade count, supervisory factor, correlation, effective notionals and entity add-ons, unmargined and margined


๐Ÿšฉ Checks

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

Checks sheet after the demonstration run: five ERROR lines, three trades excluded with their Trades row and reason, and two netting sets whose EAD is withheld


๐Ÿท๏ธ REGULATORY or WHAT-IF

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.


๐Ÿ•’ Run info and freshness

C4: run summary

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: status formula

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).

โš ๏ธ NONE does 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.


๐Ÿ”— Related

๐Ÿฆ K-SACCR

โš–๏ธ Regulation

๐Ÿงฎ Workbook


๐Ÿ“Œ Guide, not policy: the repository documents govern.

Clone this wiki locally