Default rules

When a value is missing, blank, unreadable or unknown, the solution does not always stop: it uses a value or a fallback behaviour instead (a currency, a frequency, a calculation convention, another curve). This page lists every such rule in the import, the curves, the cash flow calculation, the balance-sheet projection, the reporting and the application.

The principle is that no default is silent: every rule is applied, documented here, and reported by a coded warning (WARNING, effect FLAG, see the Anomaly reference), grouped per file or per run with the number of deals concerned. Every rule has its code and its entry; only the calculation conventions, applied to every deal, have no warning.

Note

How to read the tables. Data names the field or value concerned, Condition the case where the rule applies, Value used what the solution does instead. Reported by gives:

  • the code of the warning that reports the rule, linked to its entry in the Anomaly reference: message, cause, consequence for the figures and what to do (the level is given when it is not WARNING). Several related rules may share one code;
  • convention for a calculation assumption applied to every deal, documented without a warning.

Where the warnings are shown

A warning is shown in one of three places, depending on what it depends on:

  • the anomaly log of the import, the run or the reporting (Import Anomalies and Calculation Logs tabs, and their Excel export), for a rule that depends on the stored data alone. It is evaluated once, when the solution stores the engine’s result, and listed once per code and reference: metrics without a row for the reference scenario (RUN-018) or deals sharing a reference (RUN-021) in the run’s log; ALCO pack without a ledger reconciliation (RPT-061) or without a behavioural view (RPT-062) in the reporting’s; ledger lines left out (RPT-063) and postes with several classification lines (RPT-064) in the import’s. Imports, runs and reportings stored before this version are not recomputed: their log does not carry these codes;
  • a warnings banner above the result, for a rule that also depends on what you ask for (projection, reference scenario, comparison generation): on the metrics, the Gaps tab and its report, the Reconciliation sub-tab and the Informations de la situation slot of the guided import. It gives one line per code with the number of occurrences, the message and the link to the code’s entry. One click folds it, and it does not appear when there is nothing to report;
  • a notification before the download, which stays until closed, with the same lines and links: the solution checks, with the parameters chosen, what the file will meet (ALCO pack and its preview, gap as Excel, CSV or parquet, metrics export), shows it, then the download follows. The same notification follows a save that closes the screen (a curve of the curve editor, a classification referential created).

1. Import: files and parsers

Reading the archive, the deal files, the classification and the balance (Import: processing and conversions, Crédit Logement import).

1.1 Archive, format and cells

Data Condition Value used Reported by
Portfolio reference missing from the situation information ‘default_reference’ IMP-029
Portfolio name missing from the situation information ‘default_name’ IMP-030
Amount / number (any numeric text cell) text with a single separator followed by three digits, ambiguous (‘1.234’ or ‘1,234’) read as a decimal (1,234) rather than thousands (1234): decimal forms are tried before grouped forms IMP-031
Integer (classification: Sign column) missing or empty cell 0 IMP-032
Classification booleans (financial transaction, modelled asset, gross value, notional, EVE, NIM, rate-sensitive, MV) missing or empty cell false IMP-033
Accounting balance date Excel date cell earlier than 31/12/1910 null (date missing) IMP-034
Accounting balance date cell neither Date nor text (number: Excel serial of a formula, boolean…) or null cell null (date missing), line kept IMP-035
Rate type (TR/TF) value neither ‘tr’/‘taux revisable’ nor ‘tf’/‘taux fixe’, or not text not applied: no importer reads this column none (IMP-036 retired)
Line of a delimited text file (balance .txt/.csv) line shorter than the first line (trailing columns missing) missing columns filled with an empty string IMP-037
Line of a delimited text file line longer than the first line extra columns ignored IMP-038
Text file separator none of ; tab , | on the first line, or a tie in frequency ‘;’ (or the first in the list ; tab , | in case of a tie) IMP-039
Header of a delimited text file two columns have the same name (after lower-casing/NFD) the last column overwrites the previous one IMP-040
Archive files name containing ‘~’, ‘.ds_store’ or ‘_macos’ (anywhere in the name) file removed from the import IMP-041
File role given by the import request (guided import) the name given for a role does not exist in the archive the role falls back to detection by file name IMP-044
File role given by the import request several files listed for a single-file role the first listed wins (putIfAbsent); the following ones are not deals either IMP-045
Archive file without a role in the request the request gives roles but not to this file role inferred from the name; failing that, read as a deal file IMP-046
Summary of a guided-import file exception while building the summary file validated without a summary IMP-047
Data format of the client configuration configuration without dataFormat format inferred from the client label (‘credit logement’ -> CREDIT_LOGEMENT) IMP-049
info_*.json file of the archive present in the archive, while the arrêté comes from the import screen or the request file ignored: neither read nor taken for a deal file IMP-060

1.2 Deals

Data Condition Value used Reported by
CSV deal file read error part-way through the file the rows read so far are kept, the rest is lost TRX-003 (ERROR)
Excel deal file read error part-way through the workbook the deals read so far are kept TRX-004 (ERROR)
Deal: currency empty cell or no ‘Currency’ column (swap and security extracts) EUR TRX-046
Deal: product file name containing ‘securities’ product SECURITY whatever the products mapping of the Instrument Type TRX-047
Deal: required tags (dataMapping.tags) tag column missing from the extract deal imported without that tag TRX-048
Security: margin of a fixed / coupon of a floating empty or non-numeric cell 0 %, without a warning TRX-049
Security: Instrument Type (for the direction) instrumentType key not mapped read under the isin key TRX-050
Deal reference empty reference cell reference ‘<prefix>_null’ (e.g. ‘LO_null’), deal kept TRX-051
Any cell read as text (reference, counterparty, currency, rate label, frequency…) numeric cell (Double) integer part (intValue); above 2 147 483 647 capped at that value TRX-052
Interest mode (loan, term deposit) read from the instrument type non-empty instrument type that does not contain ‘capitalise’ simple interest (SIMPLE) TRX-053
Reference rate label (index) empty cell no index; a floating deal is valued at its current rate TRX-054
Rate base tenor (*Tenor column) *Tenor key not mapped, column missing, empty cell or unreadable tenor (‘ACTUAL’, free text) lookup on the label alone (curve of the bare label) TRX-055
Rate label (fixed-rate deal) label missing from dataMapping.indexes no index, label kept TRX-020
Rate label (floating deal, deal file validated on its own) label missing from dataMapping.indexes and curves unknown no index TRX-021
Rate label (floating deal) label missing from dataMapping.indexes but equal (case-insensitive) to a curve name the label is used as the index TRX-022
Rate label (floating deal) label missing from dataMapping.indexes and from every curve no index: valued at the current rate, insensitive to shocks TRX-023
Deal direction (Borrow or Invest) cell neither BORROWING nor INVESTMENT BUY TRX-024
Deal direction (Borrow or Invest) ‘nature’ key not mapped, or empty cell / missing column direction inferred from the instrument type (CAT * = investment, Emprunt * = borrowing; specific rules for securities and repos) TRX-027
Deal direction direction missing and instrument type not recognised BUY TRX-025
Interest rate (floating loan, term deposit) rate of 0 on a FLOATING deal fixing unknown (null): the current coupon is read from the curve CFW-072
Remaining notional (Remaining Face Value) remainingNominal key not mapped or empty cell original notional TRX-056
Remaining notional remaining notional different from the original notional (or original empty) deal booked on the remaining notional (0 included) TRX-029
Rate repricing frequency (repricingPeriod) unrecognised value (e.g. daily) repricing period not set TRX-057
Numeric cell of a deal (amount, rate, margin) missing or empty cell null TRX-058
Deal dates (trade, settlement, maturity, call…) text date or Excel serial earlier than 01/01/1950 null (date missing) TRX-059
Deal dates empty cell (key mapped, column present) null TRX-060
Deal text dates ambiguous dd/mm or mm/dd date (e.g. ‘01/02/2025’) read day first (1 February); mm/dd format only if dd/mm fails TRX-061
Deal dates as an Excel serial (numeric formula cell) numeric cell read as an Excel 1900-system serial, time ignored; the workbook’s 1904 flag is ignored TRX-062
Payment frequency empty or non-text cell null (then yearly for loans and deposits) TRX-063
Interest calculation basis (day count convention) empty cell ‘default’ entry of dataMapping.rateBase TRX-064
Counterparty (name) empty cell counterparty ‘DEFAULT_NAME’ TRX-065
Counterparty type and rating always (no column read) type RETAIL, rating ‘A’ on the ‘A’ scale TRX-066
Rate type of a swap leg (Pay/Rec Fixed/Floating) key not mapped, empty cell or value neither FIXED nor FLOATING FLOATING if the leg names a rate label, FIXED otherwise TRX-067
Swap leg leg declared FLOATING without a rate label valued at its current rate TRX-030
Swap leg leg declared FIXED that names a rate label booked fixed, index removed, label kept TRX-031
Day count convention of a swap leg empty column, business day rule (FOLLOWING, ACTUAL DATE…) or unrecognised value market convention: EUR fixed 30/360, EUR floating EURIBOR/€STR/EONIA ACT/360, otherwise rateBase.default TRX-028
Margin of a swap leg empty cell null spread TRX-068
Schedule of a swap leg always; first payment date more than 4 days off the schedule schedule rolled backward from maturity (stub at the start), first payment date ignored TRX-032
Swap trade date dealDate key not mapped or empty cell settlement date TRX-069
Coupon rate of a security (couponRate) empty or non-numeric cell 0 % TRX-034
Coupon margin of a security (couponMarginRate) empty or non-numeric cell 0 % TRX-035
Call date of a security callDate empty issuer call date (issuerCallDate), exercised with certainty TRX-070
Call date of a security callDate and issuerCallDate both set and different the earlier one TRX-033
Currency of a repo always (no column read) EUR TRX-071
Rate of a repo (two legs) always FIXED rate, spread 0 TRX-072
Rate of a repo (interestRate, rateLeg1) empty cell null rate TRX-058
Interest payment frequency of a loan empty or non-text cell yearly (YEAR) TRX-073
Margin of a loan / term deposit (interestMargin) empty cell null spread TRX-068
Liquidity and commercial margins of a loan key not mapped, missing column or empty cell null: the context liquidity spread applies TRX-074
Liquidity curve of a loan key not mapped or empty cell; label not mapped no curve of its own (null) TRX-075
Payment frequency of a term deposit instrument type containing ‘capitalise’ payment at maturity (AT_MATURITY), whatever the frequency in the file TRX-076
Payment frequency of a term deposit empty or non-text cell yearly (YEAR) TRX-073

1.3 Classification

Data Condition Value used Reported by
Classification: FINREP code (mapping_compta_irrbb) name not recognised by FinrepEnum the category has no FINREP code; its deals drop out of the reporting CLS-005
Classification: FINREP code (side / Row Code) balance sheet side or Row Code inconsistent with the FINREP code the FINREP row is discarded: category without a FINREP code, deals excluded from the reporting CLS-006 (ERROR)
Classification: accounting category category ‘<Bilan> <Contrepartie>’ missing from mapping_compta_irrbb lines built with a null FINREP code; deals excluded from the reporting CLS-010
Classification: hedge role (column 3 of mapping_compta_irrbb) empty cell, missing column or short row UNSPECIFIED on a derivative row CLS-020
Classification: hedge role value that is not a HedgeRole UNSPECIFIED CLS-007
Hedge role of a deal no classification / no FINREP code, or a non-derivative FINREP code NONE, even if the category declares a role CLS-021
Classification: account number (mapping_compta, histo) numeric cell with a decimal part truncated to an integer (intValue) CLS-022
Classification: ‘histo’ sheet (deal -> account) sheet missing no explicit mapping; all deals go through the instrument mapping CLS-023
histo sheet: deal account account not declared in mapping_compta row ignored; the deal falls back to the instrument mapping CLS-012
histo sheet: duplicate deal deal listed several times on the same account first occurrence kept CLS-013
histo sheet: deal on two accounts deal listed on two different accounts mapping removed; the deal falls back to the instrument mapping CLS-014 (ERROR)
Balance sheet side of a ‘<Bilan> <Contrepartie>’ category category starting with no known balance sheet word null (side unknown) CLS-024

1.4 Balance, run-off and prefixed cash flows

Data Condition Value used Reported by
Prefixed cash flow file (sheet) several sheets carry a cash flow header only the first sheet in alphabetical order is read BAL-003
Prefixed cash flow file (sheet) no sheet carries a header (‘Deal No’ / ‘action_dt’) the first sheet in alphabetical order is read BAL-004
Prefixed cash flow file (header row) no header row recognised data read from row 3 onwards (historical position) BAL-004
Prefixed cash flows: deal number numeric cell with a decimal part truncated to an integer (intValue) BAL-014
Prefixed cash flows: base rate frequency empty cell no repricing frequency (null) BAL-015
Modelled balance line: account always (line attached to a run-off strategy) classified on the strategy prefix (reference without ‘*’), not on its own account convention
Modelled balance line: currency always (the balance has no currency column) EUR BAL-016
Modelled balance line: counterparty always counterparty ‘DEFAULT’, type CORPORATE BAL-017
Modelled balance line: direction and dates always BUY; trade and settlement dates = reference date convention
Modelled balance line: classification classification file unusable modelled line without a FINREP code CLS-018
Run-off strategy: account prefix same prefix listed several times the first strategy is applied, the others ignored BAL-012
Run-off strategy: overlapping prefixes an account matches several prefixes the longest prefix wins BAL-013
Accounting balance line account not covered by any run-off strategy line ignored (no modelled transaction) BAL-018
Ledger account: type neither the classification nor accountingMapping gives it a type counted as a balance sheet account (to be covered by deals or a strategy) BAL-011

2. Curves

Building the curves at import and reading rates during the calculation (Rate curves).

2.1 At import

Data Condition Value used Reported by
Discount index neither a dataMapping.indexes key nor a curve name the raw label is kept as the index CRV-003 (ERROR)
Curve file (sheet) several sheets with a curve header only the first sheet in alphabetical order is read CRV-005
Curve file (xlsx): row fewer than 8 filled cells row ignored (neither header nor point) CRV-019
Curve point (xlsx): ratedate empty cell or not date-typed (text, number) date missing (null); the curve is keyed ‘<name>_null’ CRV-020
Curve point same index, same date, same maturity duplicated the last value read overwrites the previous ones CRV-021
Curve: currency points of the same index/date with different currencies currency of the first point read CRV-022
Curve: refixing period the index name carries no maturity (EURIBOR, TEC2…) null; downstream 3 months (RateCurveHelper DEFAULT_FIXING_PERIOD) CRV-023
Curve: quoted instrument index name without ‘SWAP’ MONEY_MARKET convention
Curve: quotation (dataMapping.curveQuotations) curve not listed null, read as a zero-coupon rate CRV-024
Curve: date more than 50 days from the reference date curve used anyway CRV-011
Liquidity spread curve always (the file does not provide one) flat EUR LIQUIDITY_SPREAD curve at 0 (1d, 1m, 10y) CRV-025
Compound curve one of the leaf curves missing from the file compound curve not built CRV-012 (ERROR)
Compound curve: leaf date several dates for a leaf index date closest to the reference date; the most recent if the reference date is unknown CRV-026
Compound curve: points shared by two leaves a maturity present in two leaves below their thresholds the leaf with the longest threshold overwrites the value of the shorter one CRV-027
Compound curve: currency always EUR, whatever the currencies of the leaves CRV-028

2.2 During the calculation

Data Condition Value used Reported by
Rate read from a curve maturity before the first point or beyond the last point of the curve flat extrapolation: rate of the first (resp. last) point CFW-059
Single-point rate curve the curve carries only one pillar constant rate across all maturities CFW-060
Maturity read from the curve negative number of days (target date before the curve date) rate 0 convention
Curve of an index (reference date) several curves for the same index, or none at the evaluation date curve whose date is closest to the evaluation date (before or after), the first in the list in case of a tie; flagged only beyond 10 days CFW-057
FX curve (pair) no pivot/currency curve inverse currency/pivot curve used as is; first FX curve of the pair if several convention
FX curve / liquidity spread curve several FX curves for the same pair, or several LIQUIDITY_SPREAD curves for the same currency the first in the list is taken CFW-061
Curve quotation (PAR/ZERO) quotation missing curve read as zero-coupon (no bootstrap) CRV-024
Instrument of a PAR curve pillar instrument not set for the tenor (or instrument map missing) money market up to 365 days, swap beyond CFW-062
Missing yearly discount factor (PAR bootstrap) year before the first swap pillar with no money market point at that number of days money market rate linearly interpolated in days, flat beyond the money market points (e.g. 1y = 12m rate extended from 360 to 365 d) convention
Missing yearly swap pillar (PAR bootstrap) year between two swap pillars, or before the first swap pillar beyond the money market points par rate linearly interpolated in years between pillars; before the first pillar, the first pillar’s par rate extended flat CFW-063
Curve currency (IRRBB shock calibration) currency missing or outside the 11 calibrated currencies (EUR, USD, GBP, JPY, CHF, CAD, AUD, SEK, SGD, HKD, CNY) EUR shock sizes (parallel 200 bp, short 250 bp, long 100 bp) CFW-064
Curve type (RATE/FX/LIQUIDITY_SPREAD) type missing curve carried over unshocked in all scenarios CFW-065
Shocked PAR curve the base curve cannot be bootstrapped no shocked zero curve stored; the read then fails (CFW-048) CFW-066
Liquidity spread read from the LIQUIDITY_SPREAD curve the curve read fails (empty curve, date before its reference date, null date) liquidity spread 0 CFW-067
Date of the discounted cash flow cash flow on or before the evaluation date discount factor 1 convention
Refixing period of a floating index (cash flows without a schedule: run-off tranches) index name without a recognised tenor and curve without refixingPeriod quarterly refixing assumed: next fixing at the next calendar quarter end CFW-041
Tenor of a floating index (LAST_FIXING mode) index name without a recognised tenor and curve without refixingPeriod 3-month tenor to read the index’s “current rate” CFW-068
Tenor of a floating index always (before the curve’s refixingPeriod) tenor inferred by substring of the name: estr/eonia/o/n -> 1d, ‘12m’ or ‘1y’ -> 12m, ‘6m’, ‘3m’, ‘1m’ CFW-069
Next fixing date (cash flows without a schedule) tenor 1d/1m/3m/6m/12m end of the next calendar month / quarter / half-year / year, next day for overnight; other tenor: evaluation date + tenor convention

3. Cash flows and projection

Cash flow generation per deal, balance-sheet projection and solvency calculations.

3.1 Cash flows per deal

Data Condition Value used Reported by
Any BigDecimal of a cloned deal (rate, spread, amounts) null value at cloning (new production, balance sheet repricing) 0 CFW-070
Product of a cash flow null product ‘ALL’ convention
Total interest amount (GLOBAL component) globalAmount null 0 CFW-071
Discount factor of a cash flow discount curve cannot be read (index missing, rate <= -100 %, empty curve…) cash flow kept without a discount factor (null) CFW-024 (ERROR)
Floating rate (index) index empty / not mapped (no curve to read) coupon valued at the deal’s current rate (rate.value, 0 if missing), insensitive to shocks, CERTAIN coupon CFW-031
Current fixing of a floating rate (rate.value) value null or equal to 0 fixing treated as unknown: the current coupon is read from the curve (forward from the evaluation date) CFW-072
Start of a floating coupon period start missing, earlier than the evaluation date or not earlier than the end forward read from the evaluation date to the end of the period (no historical fixing) convention
Rate projection mode (EngineParameterModel.rateProjectionMode) parameters or mode missing from the request FORWARD convention
Last known rate (LAST_FIXING mode) UNCERTAIN floating coupon prefixing line covering the evaluation date, otherwise the deal’s fixing, otherwise the index’s current rate on the scenario curve (+ scenario shock on the first two) convention
Rate spread / margin spread missing 0 CFW-073
Rate calculation basis (day count) basis missing EXACT_365 for reading the forward; elsewhere an NPE (deal rejected CFW-004) CFW-074
Rate of a deposit (no schedule) rate missing FIXED rate 0 %, EXACT_365, simple interest CFW-014
Rate of a term product (bullet loan, term deposit) rate missing principal cash flows issued, interest omitted CFW-015
Rate of a repo / reverse repo rate missing, without a type, or FIXED without a value (empty ‘Interest Rate’ cell) principal cash flows issued, interest omitted CFW-016
Coupon of a term product or a repo the coupon rate cannot be evaluated (no curve, empty curve, invalid date…) coupon omitted, deal kept; one WARNING per skipped coupon naming the deal and the period CFW-090 (no curve for the index), CFW-091 (other causes)
Floating coupon of a swap leg forward cannot be evaluated coupon omitted, the leg and the deal are kept CFW-017 (ERROR)
Rate of a fixed swap leg (rate.value) value missing no rate assumed: the swap is left out of the calculation CFW-089 (ERROR)
Current fixing of a floating swap leg rate.value set ignored: the current coupon is read from the curve CFW-076
Call date of a swap call date before maturity coupons after the call removed and final notional at the call, including in the CONTRACTUAL view; no broken coupon at the call convention
Repricing date of the floating notional no CERTAIN coupon (forward start, new production) end of the first upcoming coupon; no coupon: contractual maturity date CFW-022
Cash flow rate (type) rate missing or without a type CERTAIN interest cash flow (not shocked) CFW-077
Certainty of a floating-rate run-off tranche next fixing date cannot be determined (curve not found…) UNCERTAIN cash flow CFW-028 (ERROR)
Rate of a cash flow returned by the behavioural script the script sets no rate deposit rate convention
NMD behavioural script parameters always outflow_period_in_days = 100, frequency_in_days = 5 (constants) convention
Behavioural script result the script does not return a ScriptCashflowResult no behavioural cash flow, no message CFW-078
Behavioural script function function name missing ‘main’ convention
Run-off strategy of a deposit several strategies for the same product and the same origin the first in the list CFW-079
Tranche of a bucket-based run-off law bucket falling on or before the evaluation date (e.g. ‘0d’) deposit: tranche ignored (neither principal nor interest); accounting balance: principal ignored but a zero interest cash flow issued CFW-080
Last tranche of a linear run-off horizon not a multiple of the frequency tranche cut at the horizon; shares rounded to 4 decimals, the last absorbs the remainder convention
Schedule of an amortising loan always schedule built from the start date + number of instalments × periodicity; the loan’s maturity date is ignored convention
Behavioural view of an amortising loan always (no prepayment parameter read) BEHAVIOURAL cash flows identical to the contractual cash flows (no prepayment) convention
Call date (term product, repo, security) call date on or after maturity call ignored, contractual maturity used CFW-081
Coupon schedule (term product, backward swap) rolling the periodicity does not move forward loop stopped, remaining coupons omitted CFW-082
Interest periodicity of a repo always single interest paid at maturity; security leg ignored convention
Premium / discount of a security premium missing initial cash flow at notional convention
Interest amount / reference principal of a coupon amount not computed (null) 0 CFW-083
IRRBB bucket of a date date earlier than the evaluation date first bucket (overnight) convention
Prefixing line of a CERTAIN cash flow no line for the deal curve rate CFW-039
Prefixing lines of a deal several lines for the deal prefixing ignored, curve rate CFW-040 (ERROR)
Base rate frequency of a prefixing line frequency missing line ignored, curve rate CFW-084
Prefixing line target date beyond action date + frequency line not used, curve rate convention
Transaction reference (prefixing matching key) null reference or without a ‘_<deal>’ segment no prefixing CFW-085

3.2 Balance-sheet projection

Data Condition Value used Reported by
Maturity of a deal (constant / growing balance sheet) maturity missing deal not rolled over CFW-086
Repricing curve of a fixed-rate roll rate without an index, or index without a curve in the context discount curve of the context CFW-087
Rate of a fixed-rate roll roll market rate unreadable original rate kept CFW-050
Commercial margin of a fixed-rate roll always (origination curve unavailable) margin = client rate - BASELINE curve rate at the evaluation date for the same term convention
Rate of the replacement of a fixed-rate amortising loan term cannot be computed (start date, number of instalments or periodicity missing, AT_MATURITY) original rate kept (no repricing) convention
Principal cash flow to replace (constant balance sheet) cash flow without a rate not replaced CFW-088

3.3 Solvency and pricing

Data Condition Value used Reported by
Counterparty turnover (solvency) missing 10 000 for the exposure class (hence SME if CORPORATE); 5 M for the correlation (neutral size adjustment) RUN-010
Loan type (solvency, RETAIL counterparty) missing RETAIL_OTHER convention
LGD (solvency) always (no data read) 10 % for every loan convention
Number of instalments of an amortising loan (Basel maturity) missing 0 instalments -> maturity 0 years RUN-011
Conversion of EAD / RWA into the pivot currency always fixing 1: pivot amount = amount in the original currency convention
Product other than loans (solvency) no risk parameter generator no risk profile, no message RUN-012
Preferred pricing model (pricer API) missing from the preferences first registered pricer (Black-Scholes) convention
Basel risk profile of a transaction the Basel engine cannot compute it (SolvencyException or unsupported product) transaction missing from the result, status PROCESSED RUN-012

4. Reporting

Run settings, IRRBB reporting, carrying amount and EBA templates (Generate IRRBB reports).

4.1 Run settings

Data Condition Value used Reported by
Requested scenarios (runSettings.scenarios) list missing (or runSettings missing) base + all regulatory shocks + UP_1_BP convention
Post-shock floor (runSettings.postShockFloor) value missing floor enabled convention

4.2 IRRBB reporting and templates

Data Condition Value used Reported by
List of requested templates (reportingTemplates) list missing or empty in the request all 13 templates J 01.00 to J 11.02 are produced RPT-029
Cash flow generation status generation ended in ERRORS but with a list of cash flows the reporting is produced anyway on the available (possibly incomplete) cash flows RPT-002 (ERROR)
FINREP classification of the deal deal without a classification or category without a FINREP code; or cash flow of a deal missing from the portfolio the deal and all its cash flows are excluded from the whole report (J 01.00 - J 07.00, per-transaction metrics, carrying amount) RPT-004
Transaction reference two transactions of the portfolio share the same reference the first is used to classify the cash flows (FINREP, NMD overnight, derivative, maturity); the second is ignored for these lookups RPT-030
Own funds (capitalAmount, additional data of the situation) key missing, null or equal to 0 (a non-numeric value is refused on input) capital = null; J 01.00 ratios on rows 0020 and 0110 are left empty RPT-005
Non-maturity deposit (NMD) in the contractual view J 05.00 - J 07.00 (.a) DepositModel product that is not a TermDepositModel, CONTRACTUAL origin the principal is placed in the overnight bucket (1 day) whatever the configured run-off law; its interest is not broken down RPT-031
Floating rate repricing period (repricingPeriod) floating leg without a repricing period (or AT_MATURITY) and without an interest cash flow with a period > 366 days (or without period dates) the leg is classified ‘floating’ (repricing ≤ 1 year) in the ITS sense, hence in the floating block of J 05.00 - J 07.00 and outside the ‘of which fixed rate’ rows of J 02.00 RPT-032
Cash flow rate (rate / rate type) cash flow without a rate model, or rate type neither FIXED nor FLOATING the cash flow is neither fixed nor floating: it is missing from both J 05.00 - J 07.00 blocks (notional, yield, maturity, schedule) and from the ‘of which fixed rate’ rows of J 02.00; it stays in EVE, NII and market value, and is not reclassified (no figure changes): one aggregated WARNING per currency with the number of deals and their principal, the deals in its details RPT-033
EVE / NII / MV per FINREP row and scenario no cash flow on a FINREP row (or no cash flow for a scenario of the context) in a computed currency 0 for every FINREP row and every scenario (all FinrepEnum rows are filled) convention
Accrual period of an interest cash flow (periodStartDate) start date missing, or start not earlier than the end payment date rule: the coupon counts in full in the NII if it falls within the horizon, otherwise not at all (no pro rata) RPT-034
Evaluation date of the per-transaction metrics always (multiple contexts) the evaluation date of the first context is used for all scenarios convention
Cash flow scenario cash flow without a scenario the cash flow is ignored in aggregated EVE / NII / MV (matches no context) RPT-035
Carrying amount of the deal (carryingAmount) carrying amount missing (DEAL source) the deal contributes 0 to column 0010 of its row RPT-007
Modified duration (J 02.00 - J 04.00 col. 0020) UP_1_BP scenario not computed, base EVE missing or zero cell left empty RPT-036
Contractual maturity (J 05.00 col. 0060 / 0310) maturity unknown (balance run off by law, transaction missing, amortising loan without a start date / number of instalments / period) the cash flow is excluded from the numerator and denominator of the weighted average maturity RPT-008
Contractual maturity of a non-maturity deposit DepositModel product that is not a TermDepositModel maturity = 1/365 year (overnight) in the weighted average maturity J 05.00 col. 0060 / 0310 convention
Cash flow amount amount or value missing 0 in the notional and the schedule of J 05.00 - J 07.00 RPT-037
Swap cash flow detail (cashFlowDetail, leg type) detail empty or missing leg = ““: all legs of the swap are merged into one; only the last principal exchange counts, if positive RPT-038
Weighted average yield (J 05.00 col. 0050 / 0300) position without an interest cash flow in the block; or no rate at all falls back on the rate carried by its principal cash flows; without a rate, the position is excluded (weight included); cell empty if no position is left RPT-039
Effective rate of the cash flow (effectiveRate) effective rate missing the nominal rate of the rate model (rate.value) is used RPT-040
Repricing bucket of the cash flow (adjustedTimeBucket) adjusted bucket missing the payment date bucket (timeBucket) is used RPT-041
Carrying amount source (carryingAmountSource) key missing or empty BALANCE if the situation has an accounting balance and a classification, otherwise DEAL (deal notional) RPT-012
Carrying amount source (carryingAmountSource) BALANCE requested but no balance or no classification falls back on DEAL: column 0010 = deal notional RPT-010
Carrying amount source (carryingAmountSource) DEAL explicitly requested column 0010 = deal notional (without accrued interest, premiums, discounts; off-balance-sheet swap counted at notional) RPT-011
Carrying amount source (carryingAmountSource) value neither BALANCE nor DEAL value ignored, default applied (BALANCE if available, otherwise DEAL) RPT-009
Accounting balance line (account, balance) account or balance missing line ignored for the carrying amount RPT-042
Accounting balance currency always (the CL balance has no currency column) the whole balance is counted in EUR; deals in other currencies have no carrying amount (column 0010 empty on their sheet) RPT-014
Balance account typed PNL / OBS / DERIVATIVE account not covered by the classification and typed off-balance-sheet by the accountingMapping; or covered, typed PNL, without a FINREP row account excluded from the carrying amount RPT-043
Balance account no classification line covers it and the accountingMapping does not type it off-balance-sheet account excluded from the carrying amount RPT-015
Accounting category of the account (classification) the classification line has no FINREP row account excluded from the carrying amount RPT-016
Account classified on a FINREP row but typed PNL Bilan of the classification line = PNL, FINREP row set, category not off-balance-sheet account excluded from the carrying amount of its row RPT-017
Carrying amount of an off-balance-sheet row (OBS / DERIVATIVE) FINREP row fed only by off-balance-sheet accounts 0 in column 0010 (off-balance-sheet is used only for the reconciliation) convention
Classification line of an account (longest prefix) several lines have the same accounting category (same prefix length) the first line encountered wins RPT-044
Sign of an account according to the FINREP row row that is neither L_ nor MEMORANDUM_L_ (assets, off-balance-sheet, other derivatives) the balance is taken with its sign (debit positive); reversed only on liability rows convention
Account type (Bilan of the classification line) Bilan value missing or not recognised as an AccountType no type: the account is treated as a balance sheet account RPT-045
Ledger account of a CL contract (instrument mapping) no histo account, nor one for the exact instrument type falls back on the account of the sub-family listing the instrument, then on that of the product family RPT-046
Instrument / family mapping key two keys identical up to case and spaces the first one encountered in the (non-deterministic) order of the map wins RPT-047
Starred account (9431**): asset type, counterparty the starred account covers several classification lines (same FINREP row) asset type and counterparty of the first line (sorted by category); hedge role null if the lines differ RPT-048
Template datapoint the computation throws a NullPointerException (view map not populated, currency missing) null value: empty cell, counted as unmapped RPT-025
Template datapoint no value computed or declared cell left empty (not 0) RPT-025
Sheet currency no currency in any view (report without figures) a single sheet, in EUR convention
Sheet name per currency multi-currency report the first currency in alphabetical order takes the original unsuffixed sheet; the others go into ‘<feuille>_<DEV>’ copies convention
Declared answer (EBA code) J 10 / J 11 EBA code missing from the template’s ‘ei…’ lists answer ignored, falls back on the computed value (empty for J 10 / J 11) RPT-026
Position of a DPM datapoint on the sheet DPM row or column code not found in the sheet headers the value is not written, and not counted as unmapped RPT-049
IRRBB declarations / NMD parameters (additional data) additional data missing, or irrbbDeclarations / nmdParameters keys missing no declaration: J 08 / J 09 (shares, PTR) and J 10 / J 11 stay empty RPT-050
Declaration key (irrbbDeclarations, nmdParameters, sub-keys) value that is not a JSON object key ignored (empty map) RPT-019
Qualitative answer J 10 / J 11 non-text value, or empty/blank text answer ignored, empty cell RPT-020
NMD category (nmdParameters key) key that is not RETAIL_TRANSACTIONAL, RETAIL_NON_TRANSACTIONAL, WHOLESALE_NON_FINANCIAL or WHOLESALE_FINANCIAL (case-sensitive) category ignored RPT-018
NMD parameter (behaviouralShare, coreShare, exemptedShare, operationalShare, PTR) non-numeric value (e.g. text “0.6”) null: the matching J 08 / J 09 cell stays empty; a non-numeric PTR is removed RPT-051
Per-currency answers J 10.02 / J 11.02 no answer for the sheet’s currency sheet left empty RPT-052
Sign of liability rows J 02.00 - J 07.00 rows 0200-0520 and 0610-0640, EVE/NII/MV columns (levels and Δ) and repricing schedules engine value negated (liabilities shown positive); J 01.00, column 0010, column 0020, row 0530 and rows 0540-0560 untouched convention
DPM row J 02.00 - J 07.00 row code without a matching FinrepEnum empty cell RPT-025
Δ EVE / NII / MV (J 01.00, J 02.00 - J 04.00) base value or shocked value missing empty cell (not the shocked level) RPT-025
Memo rows 0540-0560 (net positions) no included FINREP row has a value for the currency 0 convention
Carrying amount of a J 02.00 - J 04.00 row (col. 0010) the currency has carrying amounts but none on the row 0 convention
% bought / sold optionality / behavioural modelling (J 05.00 col. 0020-0040, 0270-0290) always (not modelled) empty cells RPT-025
Notional J 05.00 - J 07.00 (col. 0010 / 0260) no position on the row, including when the currency has no notional detail (.a sheet, or currency present only in the carrying amount) 0 RPT-053
Repricing schedule J 05.00 - J 07.00 (col. 0070-0250, 0320-0390) no cash flow in the bucket, or no data for the currency 0 convention
Average yield of a J 05.00 parent row (col. 0050 / 0300) a child classification has a notional but no yield it is left out, notional included: the row’s yield is that of the classifications that have one RPT-065
Average maturity of a J 05.00 parent row (col. 0060 / 0310) a classification has a maturity for only part of its cash flows it weighs with its whole notional: the part without a maturity gets the average of the covered part RPT-008
Notional of an NMD category (J 08 / J 09 col. 0010) the currency has carrying amounts but none on the category’s FINREP row 0 (and hence 0 for the ‘of which’ rows if a share is declared) convention
Declared shares and NMD PTR (J 08 / J 09) category not declared, share or PTR of a scenario missing empty cell RPT-025
Worst Δ EVE / NII (J 01.00 rows 0010, 0100) and ratios 0020, 0110 no base value, or no SOT scenario computed for the currency empty cells RPT-066
Shock sizes per currency (J 01.00 rows 0180-0200) currency without regulatory calibration in IrrbbScenario EUR shock sizes (200 / 250 / 100 bp) RPT-056

5. Application (risk-app)

Values the application uses when a request, a situation or a screen states nothing: run launch, gap, ALCO pack, ledger reconciliation, guided import, curves and classification.

Data Condition Value used Reported by
Simulation assumptions (runSettings) runSettings missing from the generation request (or official IRRBB run) Balance sheet evolution of the import, all regulatory scenarios, no custom shock, post-shock floor active (defaults applied by risk-engine according to the risk-model contract) RUN-013
Scenario list (runSettings.scenarios) runSettings present but scenarios null (not sent) All regulatory scenarios are computed (an empty list is rejected, null is not) RUN-014
Post-shock floor (runSettings.postShockFloor) Field missing / null true: shocked rates are floored at the regulatory floor RUN-015
Floating rate projection mode (rateProjectionMode) Field missing from the generation request FORWARD (projection on the forward curve), stored on the generation and sent to the engine RUN-016
Generation type / scenario (GenerationRequestDto.type) Field missing or blank No default: the launch (simulation or official run) is refused with a 400 error (error.validation on type), nothing is stored none (request refused)
Own funds (additional data capitalAmount) Empty value; a non-numeric value (e.g. 250k, 1.000.000) is refused when saved (a 400 error quoting it), only a value entered before this check can still be one Key removed from the data sent to the engine (J 01.00 ratios on rows 0020/0110 left empty); text normalised: spaces and non-breaking spaces removed, decimal comma converted to a point RPT-005
Additional data of a new situation (specificData) Creation of a situation (zip upload or guided draft) Map initialised with capitalAmount = null (no own funds value) RPT-005
Update of a situation (specificData and flags) Null field in the PUT /tasks/{id} request The stored value is kept (MapStruct IGNORE strategy) convention
Ledger account typing (dataMapping.accountingMapping) Situation without a client configuration, or configuration without dataMapping / accountingMapping null accountingMapping sent to the engine: the balance accounts are typed only by the classification BAL-011
Type of a balance account (balance sheet screen) No accountingMapping key covers the account (or mapping missing) Type shown as ‘NO_MAPPING’ BAL-011
Currency of the gap figures (pivot currency) The generation / context gives no pivot currency (gap_pivot_currency null) EUR RPT-057
Projection used by the gap (origin) origin missing or null in the gap request CONTRACTUAL RPT-058
Gap type (gapType) Field missing RATE (refixing dates) rather than LIQUIDITY (contractual dates) convention
Gap cumulation direction (cumulativeDirection) Field missing BACKWARD (remaining outstanding), not the FORWARD cumulation of a liquidity gap convention
Gap ‘rate-sensitive only’ filter filter.rateSensitiveOnly missing false: all positions, rate-sensitive or not convention
Gap date window (startDate / endDate) One or both bounds missing No bound: the whole projection is taken convention
Comparison generation of the gap report (compareTo) compareTo missing Latest generation of the same client configuration, same scenario/type, whose situation date is earlier RPT-059
Gap variation after hedging per band The previous generation has no amount for the band Previous amount taken as 0: the variation equals the current gap convention
Amount of a row of the Excel gap report per band Row without an amount for the band (or null amounts) 0 written in the cell convention
Reference scenario of the EVE/NII deltas (reference) Parameter missing from /metrics BASELINE convention
Metrics projection (origin) Parameter missing from /metrics, /metrics/export or the per-transaction metrics BEHAVIOURAL convention
EVE / NII / market value deltas of a transaction The transaction has no row for the reference scenario Deltas left null (no error) RUN-018
A deal’s NII (12 months), on screen and in exports (earnedNii, deltaEarnedNii) The calculation recorded no NII decision for the deal “—” on screen with a message asking to run the calculation again; empty value in exports convention
Metrics exported to parquet (eve, deltaEve, earnedNii, deltaEarnedNii, wholeLifeInterest, oneYearCashInterest, deltaWholeLifeInterest, marketValue, marketValueOneYear, deltaMarketValue) Null value (not computed, no reference row) empty value (null), no longer 0; only the deltas of the reference row are 0, their true value none (no default: the value stays empty; RUN-019 retired)
Maturity date shown with the metrics Several transactions share the same reference in the generation The maturity of the first transaction read is used RUN-021
Cash flows returned by the engine The transaction reference of a group of cash flows matches no transaction of the portfolio/generation The cash flows are ignored (not stored); one warning per run gives their number and a sample of the references RUN-020
Linking cash flows to their transaction Two transactions of the generation have the same reference All cash flows of that reference are linked to the first transaction RUN-021
Evaluation date of the returned contexts No date, or several distinct dates in the contexts of the response The generation is stored as is (PROCESSED); only a log.error is written RUN-022
Cash flow export (CSV/Excel/parquet) No origin filter (nor certainty, nature, scenario, rate type, bucket) All cash flows, CONTRACTUAL and BEHAVIOURAL projections mixed convention
Reporting evaluation date Creation of a reporting Reference date of the situation at launch time convention
Result of a reporting older than risk-model 0.242.0 reporting_result without per-origin views (views null) Result hidden (null): the reporting appears ‘not computed’ RPT-060
Accounting reconciliation tolerance (ALCO pack and screen) tolerance parameter missing (screen); always for the ALCO pack 1 unit of the ledger currency convention
Accounting reconciliation section of the ALCO pack No linked import, or reconciliation failed (situation not processed, etc.) Pack generated without the reconciliation section RPT-061
EVE / NII / carrying amount figures of the ALCO pack Always Only the BEHAVIOURAL view is read; a null value is omitted (not 0) RPT-062
ALCO pack parameters (format, language, template, comparison) Parameters missing PDF, French, report-renderer default template, no ‘previous date’ columns (no automatic comparison) convention
Balance line (reconciliation) Account or amount missing Line ignored in the reconciliation RPT-063
Accounting item of a balance line No item (classification or accountCode of a position) covers the account The account becomes its own item (status NOT_MODELLED or LEDGER_ONLY depending on the scope) convention
Item of a position (accountCode) Position without a classification or without an accountCode Position grouped under an empty item, shown last convention
ALM amount of a position (principal) Product without a readable principal (unsupported type, swap without leg 1, null value) Position excluded from the ALM sum, counted in withoutAmountCount convention
Classification line of an item Several classification lines for the same item The first one is used RPT-064
Limits of the situation information: portfolioName, portfolioReference (100), context reference composed with the configuration’s client (100), pivotCurrency (3) Value longer than its column Form or request refused (400 error) before the engine; an API archive whose context reference is too long becomes a FAIL task; a missing portfolioReference counts as the text ‘null’ (4 characters) that risk-engine will write into the context reference IMP-005, IMP-007 (ERROR)
Imported portfolio No transaction returned by the engine Import DONE with an empty portfolio IMP-028
Level of an anomaly returned by the import Anomaly without a level Counted as ERROR in the task count IMP-050
Discount index (discountFactorIndex) The value entered is a client label (dataMapping.indexes key) and not a curve index Replaced by the curve index the label is mapped to; leading/trailing spaces removed IMP-054
Discount index of an imported archive no index chosen, neither on the screen nor in situation.json the configuration’s default index for the pivot currency (discountFactorIndexes) convention
Configuration of a complete archive (configuration.json) no configuration chosen on import same id, version and content; else same mapping, at its latest version; else a new “<name> (importée le …)” convention
Abandoned guided-import drafts No activity for application.import.draft-purge.retention-days 30 days; draft and files deleted every night at 03:00 convention
Maximum duration of a generation or reporting in PROCESSING No response from the engine within application.generation.stuck-timeout 2 hours; the generation is set to ERRORS RUN-009 (ERROR)
Counterparty type Counterparty unknown to the tenant when saving imported or generated transactions Counterparty created with type CORPORATE TRX-077
Hedge role of a deal (hedgeRole) Deal created by hand (DealRequestDto carries no hedgeRole); update of a deal NONE at creation; unchanged on update convention
Residual maturity of a deal (years) No maturity, or unreadable linear strategy horizon null (sorted last); otherwise days / 365 from the portfolio reference date convention
Curve quotation (quotation) Missing at creation; missing on update Creation: read as ZERO (zero-coupon rate); update: the existing quotation is kept CRV-024
Curve refixing period (refixingPeriod) Update of a curve The existing value is carried over; a curve created in the editor never has one CRV-029
Instruments quoted by a curve Update without instruments Existing instruments kept for the maturities still present, the others removed convention
Columns 4 to 12 of mapping_compta (Opération financière, Actif modélisé, Gross Carrying Amount, Nominal, EVE, MNI, Sensible taux, Signe, MV) Classification generated from a referential (zip import with classificationId or linked draft) Empty cells, read by the engine as false / 0 for every account CLS-025
Hedge role of a classification category Referential category without a hedgeRole Empty cell in the generated workbook; the engine keeps UNSPECIFIED on hedging derivatives, NONE elsewhere CLS-020
histo lines of a referential histoAccounts missing (null) from a referential update The existing lines are kept (and re-checked) convention
Anomalies of a solvency computation Engine response with errors Errors not stored; only the status is kept RUN-023

Summary

Domain Rules Reported Conventions
Import: files and parsers 100 98 2
Curves 34 28 6
Cash flows and projection 56 35 21
Reporting 66 52 14
Application (risk-app) 63 39 24
Total 319 252 67