Repository navigation
Troubleshooting
๐ Guide, not policy. INSTALLATION.md (its troubleshooting table) and tools/README.md govern; where this page differs, the repository wins.
Symptoms, what they mean and what to do, grouped by where you meet them.
Message texts are quoted as the code at v1.0.2 writes them; โฆ
stands for the variable part. Suspected security problems go through
SECURITY.md,
not issues.
| Symptom | Cause | What to do |
|---|---|---|
| Buttons do nothing, or "macros have been disabled" | Macros not enabled for the file | Open the .xlsm and click Enable Content, within your organisation's macro policy |
| "Microsoft has blocked macros from running because the source of this file is untrusted" | The file carries the downloaded-from-internet mark | Close it, right-click โ Properties โ tick Unblock, reopen (the README sheet's step 1). For the released K-SACCR_1.0.2.xlsm, check its SHA-256 against SHA256SUMS.txt first (INSTALLATION.md โบ Released workbook) |
| Buttons say the macro cannot be found |
M_Main not imported, or the workbook saved as .xlsx
|
Save as .xlsm; import M_Main (and the other production modules) |
| Compile error or missing procedure | Components from different commits, or an extra reference | Re-import everything from one commit; keep only the four default references |
| "Ambiguous name detected" | A duplicate or older copy of a module (for example ThisWorkbook1, or an old M_Engine) |
Remove the duplicate; never import a .cls document module โ paste its code |
A production workbook holds TEST_ modules |
A production synchronization never removes modules | Build it again from the template |
| Garbled accented characters after import | Module copied from a browser or re-saved in another encoding | Import the file from a Git clone |
| Message | Meaning | What to do |
|---|---|---|
No workbook given. Drag the .xlsm workbook onto this file, or run: Sync-SACCR-VBA.cmd <path to workbook> |
The launcher was started without a workbook (for example by double-click). It has no default workbook and exits with code 1 | Drag the closed .xlsm onto tools/Sync-SACCR-VBA.cmd, or pass its full path |
ERROR: Workbook not found: |
The path does not exist | Check the path; quote it if it has spaces |
WorkbookPath must point to an .xlsm file. |
An .xlsx or other file was given |
Save the template as Excel Macro-Enabled Workbook first |
Cannot access the VBA project. Enable Excel Trust Center > Macro Settings > 'Trust access to the VBA project object model' and ensure the VBA project is not password-locked. |
The setting is off, or the project is locked | Turn the setting on (File โ Options โ Trust Center โ Trust Center Settings โ Macro Settings), or import by hand instead; turn it off again afterwards if you enabled it only for the build |
Workbook opened read-only. Close any other Excel instance using it. |
The workbook is open elsewhere | Close it in every Excel window and retry |
Cancelled: the workbook was not changed. (exit code 2) |
An answer other than P/D, or N to an import confirmation | Run again and answer P or D |
Nothing else to import: the workbook was not changed. |
You answered N to the sheet modules with nothing else to import | Answer Y, or run a full synchronization |
Retired repository component 'โฆ' found. Rebuild from the current template and source; no VBA changes have been made. |
The workbook holds a module from an old layout (M_Config, M_Engine, M_Util, M_Formulas, โฆ) |
Build a new workbook from the current template |
Component not listed in tools\vba-projects.json: โฆ |
A .bas/.cls in src/ or tests/modules/ that the manifest does not list |
Use a clean checkout of one commit |
FAILED: SACCR VBA synchronization returned exit code N. |
Any failure above; the *.pre-vba-sync.* backup is kept |
Read the message printed before it |
A run that cannot load its inputs reports SA-CCR run stopped - see the Checks sheet. (RESULT=STOPPED in silent mode) and brings Checks forward.
Errors raised by the macros appear as Unexpected error <number>: โฆ.
| Message | Cause | What to do |
|---|---|---|
Workbook name 'โฆ_Header' is missing or no longer refers to the first header cell, in column C, of โฆ - rebuild the workbook from the template. (ERR_OUTPUT_LAYOUT for an output table, a Checks line for an input table) |
The workbook was built from a template older than the *_Header names (#253), or a name was deleted or moved out of column C |
Rebuild the workbook from the current template and copy your inputs in; syncing VBA does not add names |
Workbook name 'โฆ' is missing or no longer refers to a cell (#REF!); every parameter is read through its name. |
A Params name was deleted | Rebuild from the template, or restore the name |
Header must be 'โฆ' (found โฆ) - a column was inserted, deleted or moved, or the header renamed. |
Columns of NettingSets or Trades changed | Undo the column change; the engine reads by column number |
The same message for QCCP (Y/N) or Settlement type (N/STM)
|
A workbook built from a 1.0.1 or earlier template, run with the 1.0.2 VBA: it lacks NettingSets R:S or Trades AB:AC (from 1.0.2) | Rebuild from the 1.0.2 template and move the inputs by header (Getting Started โบ Moving inputs from 1.0.1) |
Excel did not finish recalculating the inputs, so the operation was not started and the previous results are no longer reported as current. (ERR_RECALC_PENDING) |
The pre-run recalculation was interrupted (for example with Esc) or did not finish | Let Excel finish (F9 in manual calculation), then Run SA-CCR again |
The workbook uses the 1904 date system, which is not supported. Clear 'Use 1904 date system' in File > Options > Advanced and check the dates. |
The workbook (often one that came from a Mac) uses the 1904 system | Clear the option and check every date, as the message says: the same serial number means a different date in the two systems (about four years apart) |
Rate of the reporting currency must be 1 (found โฆ): rates are units of the reporting currency per unit (#41). |
The FX table gives the reporting currency a rate other than 1 | Set it to 1; rates are units of reporting currency per unit |
Reporting date missing or not a date (enter a date, or text in the form yyyy-mm-dd; found โฆ) |
AsOfDate blank or locale-dependent text |
Enter a real date or yyyy-mm-dd
|
Reporting currency must be three letters A to Z, e.g. EUR (found โฆ) / Reporting currency missing.
|
ReportingCcy invalid |
Enter a three-letter code |
โฆ must be from โฆ to โฆ (found โฆ). |
A Params value outside its range | Correct it (see Inputs) |
Parameter listed twice with different values (rows โฆ and โฆ). |
A code appears twice on Params | Delete one row |
โฆ row below a blank row - not read; remove the blank row. |
A blank row inside SF_Table or FX_Table
|
Remove the blank row |
The IR bucket correlations โฆ do not form a valid correlation matrix โฆ |
Inconsistent IRCorrBucket* values |
Restore 0.7 / 0.7 / 0.3 or a valid set |
No netting sets defined. / No valid netting sets. / No trades found.
|
Empty or fully invalid inputs | Enter inputs |
An SA-CCR operation is already running. |
A button pressed during a run | Wait for the first operation |
The Checks sheet could not be written (โฆ); results withdrawn โฆ (ERR_CHECKS_WRITE) |
Checks protected or damaged | Unprotect or repair Checks and run again |
Excel settings could not be restored: โฆ |
Calculation mode, events or screen updating could not be put back | Check them under Formulas โ Calculation Options; restart Excel if needed |
A trade is listed once with all its reasons. Its netting set becomes
INCOMPLETE and its EAD is withheld โ fix the trade rather than reading
an EAD from the rest.
| Reason in the message | What to do |
|---|---|
trade has matured (maturity <= reporting date) |
Remove the trade or correct M / the reporting date |
MtM missing (enter 0 if the trade has no value) |
Enter the MtM, 0 if none |
unknown netting set 'โฆ' |
Add the netting set or correct the ID |
duplicate Trade ID (first used on row โฆ) |
Give each leg a unique ID |
โฆ is not a date (found โฆ) |
Enter a date or yyyy-mm-dd, not locale text |
no FX rate for notional currency 'โฆ' / no FX rate for currency 'โฆ' of the pair โฆ
|
Add the currency to the FX table |
notional currency 'โฆ' is not a currency of the pair โฆ |
Enter the notional of one leg, in that leg's currency |
FX option must be entered in market quote order as โฆ |
Enter e.g. USD/JPY, not JPY/USD, with price and strike in that quote |
an interest-rate or credit option needs the start date S of its underlying โฆ |
Enter the swaption's exercise date (earliest if Bermudan) or the cap/floor's first period start |
option expiry is after the maturity date โฆ / option has expired
|
Correct T or M |
price and strike must be > 0 after lambda shift (BCBS: enter lambda per CRE52.40 FAQ) |
Under BCBS, enter a Lambda shift on the trade |
asset class OT (other risks) exists only under CRR โฆ |
Map the trade to its primary risk driver's class under BCBS, or use CRR |
no supervisory factor for 'โฆ' (check sub-class) |
Use a sub-class that exists in the factor table for the regime |
interest-rate risk factor must be a 3-letter currency code such as EUR, or EUR-INFL for inflation |
Correct the risk factor |
exactly one leg must be the MtM leg (MtM leg = Y), found โฆ / โฆ must be 0 (found โฆ) / its legs are in different netting sets (โฆ)
|
Fix the economic trade: one Y leg carrying the MtM, the others N with MtM 0, all in one netting set |
a settled-to-market trade (STM) needs its next reset date / a next reset date is given but the settlement type is not STM โฆ / settlement type must be N, STM or blank (found โฆ) (from 1.0.2) |
Enter STM with its reset date, or clear the reset date of an ordinary trade |
next reset date must be after the reporting date (the MtM is the value after that day's settlement) / next reset date is after the maturity date (from 1.0.2) |
Enter the first reset after the reporting date, not after M; M stays the contractual maturity |
its legs have different settlement types (โฆ) / its legs have different next reset dates (from 1.0.2) |
Give every leg of the economic trade the same settlement type and reset date |
Row has trade data but no Trade ID - trade rejected. |
Give the row an ID, or clear it completely |
| Message | Status on Results | What to do |
|---|---|---|
EAD withheld: N trade(s) rejected - see the Trades messages. |
INCOMPLETE: N of M trade(s) rejected |
Fix the rejected trades listed above it |
EAD withheld: N invalid netting-set field(s). |
INVALID: N input error(s) |
Fix the NettingSets fields reported for that ID (Y/N flags, negative TH or MTA, regime, MIXED/SHARED, VM on an unmargined set, the CCP columns, โฆ) |
QCCP (Y/N) is required for Client clearing role CCP. / CCP retains VM (Y/N) is required for Client clearing role CCP. (from 1.0.2) |
INVALID: N input error(s) |
Enter Y or N in R and S of the CCP netting set |
QCCP applies only to Client clearing role CCP - leave it blank (found โฆ). / CCP retains VM applies only to Client clearing role CCP - leave it blank (found โฆ). (from 1.0.2) |
INVALID: N input error(s) |
Clear R and S on every netting set that is not CCP
|
CCP retains VM is Y on an unmargined netting set: variation margin needs Margined = Y. (from 1.0.2) |
INVALID: N input error(s) |
Set Margined = Y, or S = N |
A multi-level client structure is not supported (CRE54.14(3); CRR Art. 305(4)). (from 1.0.2) |
INVALID: multi-level client structure, not supported |
Role MULTI is not calculated; K-SACCR does not model multi-level client structures |
Trade โฆ is settled-to-market (STM) in a margined netting set: STM requires unmargined treatment; mixed margined/unmargined netting sets are not supported (CRE52.74; CRR Art. 274(4)) - netting set INVALID, EAD withheld. (from 1.0.2) |
INVALID: STM requires unmargined treatment; mixed margined/unmargined netting sets are not supported |
Enter settled trades in an unmargined netting set; do not declare daily VM as STM
|
Reference 'โฆ' โฆ on another trade of the netting set - netting set INVALID, EAD withheld. |
INVALID |
Give the entity or commodity one sub-class |
IRBucketOffset is FALSE, but the CRR allows only the formula with offsets across maturity buckets (Art. 280a(3)) - netting set INVALID, EAD withheld. |
INVALID |
Set IRBucketOffset to TRUE, or use BCBS |
Netting set ID listed twice - row ignored and EAD withheld. |
INVALID |
Make the IDs unique |
VM received on an unmargined netting set โฆ / VM posted on an unmargined CRR netting set โฆ
|
INVALID |
Set Margined = Y (see Inputs) |
| Message | Meaning |
|---|---|
What-if: โฆ is โฆ (regulatory โฆ). / What-if: factor row โฆ differs from the regulatory set โฆ / What-if: alpha override โฆ (regulatory 1.4).
|
A parameter, factor row or alpha differs from CRE52-CRR-2026-10-09; the run is WHAT-IF. Intended for sensitivity runs; restore the template values for a REGULATORY run |
Parameter missing - default โฆ used. |
A blank parameter took its regulatory default |
Regime missing - CRR assumed. |
Params Regime blank |
MPOR override โฆ BD is below the regulatory floor - โฆ BD applied. |
The override is ignored |
Remargin frequency โฆ BD is below 1 - daily remargining (1 BD) used. |
0 read as daily |
Netting set has โฆ trades, more than 5000: โฆ |
Set the large/illiquid flag if the previous quarter also exceeded 5,000 |
lambda input ignored under CRR - RTS lambda applied |
Under CRR, IR and commodity options take the computed RTS lambda; a different value entered is ignored |
FX rate missing or not positive - currency ignored. |
That currency cannot be used |
| Symptom | Cause | What to do |
|---|---|---|
Results C5 red: OUT OF DATE - inputs changed since the last run; press Run SA-CCR.
|
An input, header or the date system changed after the run (formatting does not count) | Press Run SA-CCR |
| C5 still shows the old status after an edit | Calculation set to manual | Press F9 |
| C5 still shows the old status after Use 1904 date system was switched | Switching only the date system changes no input cell, so Excel need not recalculate C5 | Press Ctrl+Alt+F9 (recalculates every formula) or edit an input: C5 then reads OUT OF DATE. A run under the 1904 date system stops; clear the option, check the dates and run again |
No results: press Run SA-CCR. right after Validate inputs
|
Validation clears outputs and never keeps a fingerprint | Run SA-CCR |
Status unavailable: Workbook name 'โฆ' is missing โฆ |
A Params name is broken | Rebuild from the template |
Reconciliation C5 OUT OF DATE - bank figures or inputs changed โฆ; press Run SA-CCR (on Results or Trades).
|
A bank figure, setting or input changed | Run SA-CCR again |
Evidence not exported: <reason>. โ every reason ends with what to do:
| Reason | What to do |
|---|---|
Excel has not finished recalculating; press F9, then Run SA-CCR if the results are out of date |
F9, then run if needed |
the results are not those of the current inputs; press Run SA-CCR first |
Run SA-CCR |
the reconciliation of the bank figures on BankNettingSets is not current; press Run SA-CCR first (or BankTrades) |
Run SA-CCR โ also needed when you removed all bank figures after the run |
the outputs of the last run were not recorded; press Run SA-CCR first |
Run SA-CCR |
an output cell on Results, Checks or a reconciliation sheet was changed after the run; press Run SA-CCR first |
Do not edit output sheets; run again |
Could not write โฆ |
The file is read-only, open elsewhere, or the folder is not writable; choose another path |
A Reconciliation not run โฆ: the amount scale (BankNS_Scale) must be greater
than zero (or a tolerance message) in Reconciliation C4 means the bank
settings are unusable; correct D4:D6 and run again. A header message there
(column N of the table is headed 'โฆ', expected 'โฆ') means the bank table's
columns were changed.
- Getting Started โ the build steps
- Inputs ยท Outputs and Statuses ยท Reconciliation and Evidence
- How It Works โ error constants and numbers
- Open Items and Limitations ยท 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.