Anomaly reference
Every warning (WARNING), every error (ERROR) and every information (INFO) reported by an import, a cash flow generation or a reporting generation carries a code: the Import Anomalies tab, the check of each file in the guided import and the Calculation Logs (cash flows, reporting) show it with the message. This page describes each code: when it appears, what is lost or kept, and how to fix the data or the configuration.
The values the solution uses in place of missing, blank or unknown data, and the warning that reports each of them, are listed in Default rules.
Reading a code
A code reads <DOMAIN>-<NNN>: three letters for the domain, three digits (TRX-012). It is stable: it keeps the same meaning from one version to the next, even when the wording of the message changes. A code that is no longer emitted is retired and never given to another anomaly (retired codes).
The message is given as the application shows it; the values specific to each anomaly are written between angle brackets (<file>, <account>, <n>). The level is the one the anomaly usually carries. An INFO says what the application did (a prefixed rate used, a sheet without a header skipped, a file imported in full); its effect is always FLAG.
Every anomaly the application stores carries its code. One without a code shows its message as it was logged.
Effects
The effect says what the anomaly costs the data:
| Effect | What happens |
|---|---|
STOP |
The import fails (task FAIL), the cash flow generation ends in ERRORS, or the reporting is refused. Nothing is produced; fix the cause and run again. |
FILE |
A file or a sheet is not read; the rest of the import goes on. In a guided import, the file is invalid. |
LINE |
A row, a deal or a transaction is left out; the others are processed. |
PARTIAL |
Part of a deal’s cash flows is lost (a coupon, the interest, the run-off); the rest is kept. |
FLAG |
Nothing is lost: the anomaly says what was assumed or what looks wrong. Check that the assumption suits you. |
An ERROR anomaly with a FLAG or LINE effect does not make the import fail: the situation is imported, and the number of deals or the warnings show it (Failure or success).
Domains
| Domain | What it covers | Step | Raised by |
|---|---|---|---|
IMP |
upload, archive, files, data format, import orchestration | import | risk-app: reading by risk-import; upload, archive and storage by risk-app itself |
VAL |
validation of the imported model | import | risk-app, through risk-import |
CRV |
discount factor index and rate curves | import | risk-app, through risk-import; discount factor index and hand-added curves by risk-app itself |
TRX |
transaction files and deal lines | import | risk-app, through risk-import |
CLS |
accounts and classification | import | risk-app, through risk-import, at import and at run launch |
BAL |
accounting balance, ledger coverage, outflow strategies, prefixed cash flows | import | risk-app, through risk-import |
RUN |
launch, errors and lifecycle of a generation | calculation | risk-engine (computing the run); risk-app (launch, default assumptions, timeout, loading the result) |
CFW |
per-deal cash flows, curves and rates, balance-sheet projection | calculation | risk-engine |
RPT |
IRRBB reporting, metrics, carrying amount, templates | reporting | risk-engine; risk-app for the gap, the ALCO pack and the ledger reconciliation |
Emitting service
The Raised by column says which service of the solution finds the anomaly, which helps when reporting it:
- risk-app, through
risk-import: reading, converting and checking a situation’s files is done by the application with therisk-importlibrary, on a file’s upload as during the import (The processing chain). The same library classifies the deals again when a run is launched (Classification at import and at run launch). - risk-app itself: what needs no reading of the files (upload, archive, storing the result), and, around the calculation, the launch, the assumptions filled in by default, the timeout on the engine, loading its results and the views built by the application (gap, ALCO pack, reconciliation).
- risk-engine, the calculation engine: computing a run from its input, that is the cash flows, the metrics and the reporting.
An anomaly’s code does not change with the service that raises it.
IMP — Upload, archive and files
Uploading the archive or the files, unzipping them, the presence of the required files, the data format of the client configuration and saving the result (The processing chain).
IMP-001 — Uploaded file unreadable
- Level, effect:
ERROR,STOP - Message:
Uploaded file '<file>' could not be read: <cause> - Cause: risk-app could not read the file received by the archive import (interrupted upload, temporary file lost); the cause is the technical message of the read error.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: upload the archive again; if the error persists, report it with the full message (Upload checks).
IMP-002 — Archive with no file
- Level, effect:
ERROR,STOP - Message:
Uploaded archive '<file>' contains no file. - Cause: the uploaded zip archive holds no entry (empty archive, or directories only).
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: rebuild the archive with the situation’s files at its root and upload it again (Unzipping).
IMP-003 — Uploaded file empty
- Level, effect:
ERROR,STOP - Message:
Uploaded file '<file>' is empty. - Cause: the uploaded file is zero bytes long.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: check the file on your computer (interrupted export, incomplete copy) and upload it again (Upload checks).
IMP-004 — Uploaded file not a zip
- Level, effect:
ERROR,STOP - Message:
Uploaded file '<file>' is not a zip archive. - Cause: the archive import expects a zip, and the file’s content is not one; the type is detected from the bytes, not the extension.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: compress the situation’s files as a
.zip(not.raror.7z), or use the guided import to upload the files one by one (Upload checks).
IMP-005 — Value too long for its column
- Level, effect:
ERROR,STOP - Message:
<source>: <key> is <length> characters long, at most <maximum> are allowed. - Cause:
portfolioNameorportfolioReferenceexceeds 100 characters, orpivotCurrency3 characters, in the situation information entered on the import screen or given in the API request. - Consequence: the value is refused before anything is sent to the engine: the import screen refuses to save the form, the API request is refused (400 error on the field).
- What to do: shorten the value in the form (or in the request) and save again (Situation information).
IMP-006 — Client too long for the context reference
- Level, effect:
ERROR,STOP - Message:
<archive>: client is <length> characters long, at most <maximum> are allowed: the evaluation context reference '[<client> - <referenceDate>] Context <portfolioReference>' holds at most <context maximum> characters. - Cause: the import gives no
portfolioReference, and the client of the client configuration is so long that the evaluation context reference,[<client> - <referenceDate>] Context <portfolioReference>, would exceed 100 characters. - Consequence: the import task goes
FAIL; nothing is imported. - What to do: give a portfolio reference, or shorten the client of the client configuration (Situation information).
IMP-007 — Portfolio reference too long for this client
- Level, effect:
ERROR,STOP - Message:
<archive>: portfolioReference is <length> characters long, at most <maximum> are allowed with client '<client>': the evaluation context reference '[<client> - <referenceDate>] Context <portfolioReference>' holds at most <context maximum> characters. - Cause: the client of the client configuration and the
portfolioReferenceentered, put together in the evaluation context reference, exceed 100 characters; the maximum allowed for the reference depends on the client’s length. On the import screen, the form is refused with the same message. - Consequence: the import task goes
FAIL; nothing is imported. - What to do: shorten
portfolioReferenceto the stated maximum, or the client of the client configuration (Situation information).
IMP-009 — Unexpected error on upload
- Level, effect:
ERROR,STOP - Message:
Unexpected error while importing '<file>': <cause> - Cause: risk-app met an error it did not foresee while preparing the archive for the engine; the cause is the raw technical message.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: try the import again; if the error persists, report it with the full message and the archive’s name.
IMP-010 — Unexpected error checking a file
- Level, effect:
ERROR,FILE - Message:
Unexpected error while validating '<file>': <cause> - Cause: in the guided import, risk-app met an error it did not foresee while checking this file on its own.
- Consequence: the file goes
INVALID, and the import cannot be launched while it is. - What to do: upload the file again; if the error persists, report it with the message and the file (Guided import).
IMP-013 — Empty archive
- Level, effect:
ERROR,STOP - Message:
The uploaded archive is empty. - Cause: the import request carries no archive content.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: launch the import again; if the error persists, report it (The processing chain).
IMP-014 — Archive with no entry
- Level, effect:
ERROR,STOP - Message:
'<file>' is not a zip archive or contains no file. - Cause: the archive unzips to no file: it is not a zip, or it is an empty zip.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: rebuild the archive as a zip holding the situation’s files (Unzipping).
IMP-015 — Archive unreadable
- Level, effect:
ERROR,STOP - Message:
'<file>' cannot be read as a zip archive: <cause> - Cause: unzipping fails: the archive is corrupt, or it is refused by an unzip limit (size, number of entries, compression ratio, nesting), which the cause names.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: rebuild the archive; if a limit is exceeded, remove the files or nested archives it does not need (Unzipping).
IMP-016 — No usable file
- Level, effect:
ERROR,STOP - Message:
The archive contains no usable file. - Cause: once directories, Office temporary files and macOS metadata are set aside, the archive holds no file.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: check the archive’s content and add the situation’s files to it (Unzipping).
IMP-018 — JSON file unreadable
- Level, effect:
ERROR,STOP - Message:
Cannot parse <role> '<file>': <cause> - Cause:
model_*.json(ModelFile) is not valid JSON or does not match the expected format (unknown strategy type, value of the wrong type,//comment). - Consequence: the import task goes
FAIL; in the guided import, the file goesINVALID. - What to do: fix the file where the cause points (Situation information, Outflow model).
IMP-021 — Configuration without a data format
- Level, effect:
ERROR,STOP - Message:
Configuration '<configuration>' has no data format and its client '<client>' matches no importer. Supported formats: <formats> - Cause: the client configuration declares no data format, and its client label does not give one either.
- Consequence: the import task goes
FAIL; in the guided import, the checked file goesINVALID. - What to do: choose the
Fichiers Crédit Logementformat in the client configuration and import again (Client configuration).
IMP-022 — Data format without an importer
- Level, effect:
ERROR,STOP - Message:
Configuration '<configuration>' has data format <format>, for which no importer is registered. Supported formats: <formats> - Cause: the client configuration’s data format has no importer in this version of the application.
- Consequence: the import task goes
FAIL; in the guided import, the checked file goesINVALID. - What to do: choose one of the listed formats in the client configuration (Client configuration).
IMP-023 — Unexpected error during import
- Level, effect:
ERROR,STOP - Message:
Unexpected error while importing data: <cause> - Cause: risk-app met an error it did not foresee during the import; the cause is often
internal error (details in the risk-app log). - Consequence: the import task goes
FAIL; nothing is imported. - What to do: read the task’s other anomalies, which often point at the file in question; otherwise report the error with the message and the archive.
IMP-024 — Import refused without an error
- Level, effect:
ERROR,STOP - Message:
The import was rejected without reporting an error. - Cause: the import ended in failure with no
ERRORanomaly giving the cause. - Consequence: the import task goes
FAIL. - What to do: launch the import again; if the error persists, report it with the archive.
IMP-025 — Import outcome unknown
- Level, effect:
ERROR,STOP - Message:
The import did not say whether it succeeded; the task is marked failed. - Cause: the import’s outcome does not say whether it succeeded and carries no error.
- Consequence: the import task goes
FAIL. - What to do: launch the import again; if the error persists, report it with the archive.
IMP-026 — Result not saved
- Level, effect:
ERROR,STOP - Message:
The data was imported but risk-app could not save it: <error type>: <cause> - Cause: the files were read, but risk-app could not save the context, the portfolio or the deals.
- Consequence: the import task goes
FAIL; nothing is saved. - What to do: launch the import again; if the error persists, report it with the full message.
IMP-027 — Result not saved, with a root cause
- Level, effect:
ERROR,STOP - Message:
The data was imported but risk-app could not save it: <error type>: <cause> (caused by <root cause type>: <root cause>) - Cause: as IMP-026, when the save error has a distinct root cause (database constraint, value too long…), given in brackets.
- Consequence: the import task goes
FAIL; nothing is saved. - What to do: if the root cause points at a value of the files (text too long, for instance), fix it; otherwise launch again, then report the error with the full message.
IMP-028 — Portfolio with no deal
- Level, effect:
WARNING,FLAG - Message:
Portfolio has no transactions - Cause: the import succeeded, but the portfolio holds no deal: no deal line was read or accepted, and no balance line is modelled.
- Consequence: the situation is created, empty; a calculation on it produces no cash flow.
- What to do: check the deal files and the rejection anomalies (
TRX-…), and the prefixes of the outflow model (Deals).
IMP-029 — No portfolio reference
- Level, effect:
WARNING,FLAG - Message:
No portfolio reference was given; '<reference>' is used. - Cause: the situation information gives no portfolio reference; one warning per import.
- Consequence: the portfolio is stored under the reference
default_reference. Its id derives from the reference and the name, so two imports with neither share the same portfolio. - What to do: fill in the portfolio reference in the form of the import screen (or in the request) and import again (Default rules, §1.1).
IMP-030 — No portfolio name
- Level, effect:
WARNING,FLAG - Message:
No portfolio name was given; '<name>' is used. - Cause: the situation information gives no portfolio name; one warning per import.
- Consequence: the portfolio is named
default_name. As with the reference (IMP-029), the name is part of the portfolio’s id. - What to do: fill in the portfolio name in the form of the import screen (or in the request) and import again (Default rules, §1.1).
IMP-031 — Ambiguous number read as a decimal
- Level, effect:
WARNING,FLAG - Message:
<n> value(s) of column '<column>' in '<file>' have a single separator followed by three digits (e.g. '<example>'); the decimal reading is used, not thousands. - Cause: a numeric cell stored as text (amount, rate, balance) has a single separator followed by three digits, such as
1.234or1,234: it can be read as a decimal or as thousands. One warning per column and file gives the number of values and an example. - Consequence: the decimal reading is used:
1,234is 1.234, not 1,234. If the file writes thousands that way (an English export), the amount is divided by 1,000. - What to do: check the example given; if it is a thousands separator, export the column as numbers (numeric cells) or without thousands separators, then import again (Default rules, §1.1).
IMP-032 — Blank classification sign
- Level, effect:
WARNING,FLAG - Message:
<n> classification line(s) of '<file>' have a blank sign; 0 is used. - Cause: the
Signcell of a classification line is missing or blank; one warning per file gives the number of lines concerned. - Consequence: the line’s sign is 0.
- What to do: fill in the
Signcolumn of every classification line and import again (Default rules, §1.1).
IMP-033 — Blank classification flag
- Level, effect:
WARNING,FLAG - Message:
<n> classification line(s) of '<file>' have a blank '<flag>' flag; false is used. - Cause: a flag of a classification line (financial operation, modelled asset, gross value, nominal, EVE, NII, rate-sensitive, MV) is missing or blank; one warning per flag and file gives the number of lines concerned.
- Consequence: the flag is
false. A line with no EVE, NII or rate-sensitive flag therefore leaves those measures. - What to do: fill in the named flag on every line (
true/falseor 1/0) and import again (Default rules, §1.1).
IMP-034 — Balance date before 1911
- Level, effect:
WARNING,FLAG - Message:
<n> accounting line(s) of '<file>' have a date before 1911 (e.g. an empty formula); the date is left empty. - Cause: the date cell of an accounting balance line is an Excel date before 31/12/1910, which is what an empty formula typically produces; one warning per file gives the number of lines concerned.
- Consequence: the line is imported without a date.
- What to do: correct the lines’ date (or the formula that computes it) and import again (Default rules, §1.1).
IMP-035 — Balance date that is not a date
- Level, effect:
WARNING,FLAG - Message:
<n> accounting line(s) of '<file>' have a date cell that is not a date (<examples>); the date is left empty. - Cause: the date cell of an accounting balance line is neither a date nor text: a number (a formula’s value), a boolean or a null cell. One warning per file gives the number of lines and examples.
- Consequence: the line is kept without a date: an Excel serial number is not converted into a date.
- What to do: format the column as dates (or as
ddMMyyyytext) and import again (Default rules, §1.1).
IMP-037 — Short line in a text file
- Level, effect:
WARNING,FLAG - Message:
<n> line(s) of '<file>' have fewer columns than the header (<columns>); the missing trailing columns are read as blank. - Cause: a line of a delimited text file (balance
.txtor.csv) has fewer columns than the first line; one warning per file gives the number of lines and the expected column count. - Consequence: the missing trailing columns are read as blank. A blank date or amount then gets the line rejected (BAL-010); a blank description goes through.
- What to do: check the lines concerned (missing separators, a line break inside a description) and import again (Default rules, §1.1).
IMP-038 — Long line in a text file
- Level, effect:
WARNING,FLAG - Message:
<n> line(s) of '<file>' have more columns than the header (<columns>); the extra columns are ignored. - Cause: a line of a delimited text file has more columns than the first line; one warning per file gives the number of lines and the expected column count.
- Consequence: the extra columns are ignored. When the extra column comes from a separator inside a description, the following columns shift: a description can be read in place of an amount.
- What to do: remove the separator from the descriptions (or quote them) and import again (Default rules, §1.1).
IMP-039 — Unclear text file separator
- Level, effect:
WARNING,FLAG - Message:
The first line of '<file>' shows no clear separator (; tab , |); '<separator>' is used. - Cause: the first line of a delimited text file contains none of the separators
;, tab,,,|, or two of them are equally frequent; one warning per file. - Consequence: the separator used is
;, or the first of the list;, tab,,,|in a tie. If it is wrong, every column is split wrongly. - What to do: check that the separator used is the right one; otherwise export the file with one separator clearly dominant on the first line (Default rules, §1.1).
IMP-040 — Columns with the same name
- Level, effect:
WARNING,FLAG - Message:
Columns <positions> of '<file>' share the name '<name>'; the last one is used. - Cause: two header columns of a delimited text file have the same name (compared in lower case, without accents); one warning per duplicated name.
- Consequence: the last column of that name is read; the earlier ones are ignored.
- What to do: rename or remove the duplicated columns and import again (Default rules, §1.1).
IMP-041 — System or temporary files ignored
- Level, effect:
WARNING,FLAG - Message:
<n> file(s) of the archive are system or temporary files (<names>); they are ignored. - Cause: the name of an archive file contains
~,.ds_storeor_macos, anywhere in the name; one warning per import gives their number and names. - Consequence: these files are removed from the import. The test covers the whole name:
deals~v2.xlsxis dropped too. If no file is left: IMP-016. - What to do: nothing to do for real system files; if a data file is dropped, rename it without those characters and import again (Default rules, §1.1).
IMP-044 — File of a role missing from the archive
- Level, effect:
WARNING,FLAG - Message:
The import gives role <role> to '<file>', which is not in the archive; the role is found by file name instead. - Cause: the guided import names, for a role, a file that the archive does not hold; one warning per role.
- Consequence: the file for that role is looked up by its name, as in an archive import.
- What to do: check that the expected file is in the archive and assign the role again in the guided import (Default rules, §1.1).
IMP-045 — Several files for a single-file role
- Level, effect:
WARNING,FLAG - Message:
The import gives role <role> to <n> files (<names>); '<file>' is used. - Cause: the guided import lists several files for a role that takes only one; one warning per role.
- Consequence: the first file listed is used; the following ones are read as deal files.
- What to do: give that role to a single file and run the import again (Default rules, §1.1).
IMP-046 — Files without a role in the guided import
- Level, effect:
WARNING,FLAG - Message:
<n> file(s) of the archive have no role in the import request (<names>); their role is inferred from their name, deal file otherwise. - Cause: the guided import assigns roles to files, but not to some files of the archive; one warning per import gives their number and names.
- Consequence: their role is inferred from their name; failing that, they are read as deal files.
- What to do: assign a role to every file, or remove from the archive those that must not be read (Default rules, §1.1).
IMP-047 — File summary could not be built
- Level, effect:
WARNING,FLAG - Message:
The summary of '<file>' could not be built (<cause>); the file is checked without a summary. - Cause: building the summary of a guided-import file fails; one warning per file.
- Consequence: the file is checked without a summary: its key figures do not appear in the guided import. The imported data are unchanged.
- What to do: if you need the summary, report it with the file name and the cause (Default rules, §1.1).
IMP-049 — Data format inferred from the client
- Level, effect:
WARNING,FLAG - Message:
Configuration '<configuration>' has no data format; <format>, inferred from the client label '<client>', is used. - Cause: the client configuration has no data format (
dataFormat); one warning per import. - Consequence: the format is inferred from the client label (
credit logementgivesCREDIT_LOGEMENT). If nothing matches: IMP-021. - What to do: choose the data format in the client configuration (Default rules, §1.1).
IMP-050 — Import anomaly without a level
- Level, effect:
WARNING,FLAG - Message:
<n> anomaly(ies) returned by the import have no level; ERROR is used. - Cause: an anomaly returned by the import has no level; one warning per file gives their number.
- Consequence: it is counted as an
ERRORin the import task’s counts; the anomaly itself keeps no level. - What to do: no action on the data: report it, it is an application defect (Default rules, §5).
IMP-054 — Client label used as discount index
- Level, effect:
WARNING,FLAG - Message:
Discount factor index '<label>' is a client label; its curve index '<index>' is used. - Cause: the discount factor index entered is a client label (a key of
dataMapping.indexes), not a curve index. - Consequence: it is replaced by the curve index mapped to that label, trimmed.
- What to do: nothing to do if the index used is the right one; otherwise enter the curve index directly (Default rules, §5).
IMP-055 — Configuration without classification or run-off models
- Level, effect:
ERROR,STOP - Message:
Configuration '<configuration>' carries no <classification | balance-sheet strategy>; add it to the configuration and import again. - Cause: the version of the client configuration the import reads has no Classification section or no Run-off models section; the import reads them nowhere else.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: load the
mapping_comptaworkbook or the model file into the configuration (Client configuration), then import again with the new version.
IMP-056 — Workbook or model of the archive ignored
- Level, effect:
WARNING,FLAG - Message:
'<file>' of the archive is ignored: the <classification | balance-sheet strategy> comes from configuration '<configuration>'. - Cause: the archive holds a
classification*.xlsxor amodel_*.json; the classification and the run-off models come from the client configuration. - Consequence: the file is neither read nor taken for a deal file; the import goes on with the configuration.
- What to do: nothing, if the configuration carries the right version; otherwise load this file into the configuration (Client configuration) and leave it out of the next archives.
IMP-058 — Archive with no file roles
- Level, effect:
ERROR,STOP - Message:
The import of '<archive>' declares no role for its files; import it through the import screen, which declares them. - Cause: the import request carries an arrêté entered on the screen but does not say which file plays which role; the engine does not guess the roles from the names.
- Consequence: the import task goes
FAIL; nothing is imported. - What to do: import the archive through the import screen, which puts each file in its slot (Starting from an archive).
IMP-059 — Import without an arrêté
- Level, effect:
ERROR,STOP - Message:
The import of '<archive>' carries no arrêté (reference date, pivot currency, discount factor index); import it through the import screen, which enters them. - Cause: the import request carries no reference date, pivot currency or discount factor index. These values are no longer read from an
info_*.json: they come from the import screen, from thesituation.jsonof a complete archive or from the API request. - Consequence: the import task goes
FAIL; nothing is imported. - What to do: import the archive through the import screen and save the situation information; through the API, give
referenceDate,pivotCurrencyanddiscountFactorIndexin the request (Situation information).
IMP-060 — Info file of the archive ignored
- Level, effect:
WARNING,FLAG - Message:
'<file>' of the archive is ignored: the arrêté comes from the import screen, not from a file. - Cause: the archive still holds an
info_*.json(or a file in its former slot); one warning per file. - Consequence: the file is neither read nor taken for a deal file; the import goes on with the request’s arrêté.
- What to do: nothing, if the arrêté entered is right; leave this file out of the next archives (Situation information).
IMP-061 — File of a role not declared
- Level, effect:
ERROR,STOP - Message:
The import declares no <file> (role <role>); import it through the import screen, which names one. - Cause: the import request names no file for one of the single-file roles: rate curves (
RATE_CURVES), accounting balance (ACCOUNTING) or prefixed cash flows (CASHFLOWS). Withoutinfo_*.json, nothing else locates it in the archive. - Consequence: the import task goes
FAIL; nothing is imported. - What to do: put the file in its slot on the import screen; through the API, name it in
fileRoles(Role of each file).
IMP-062 — Import interrupted by a restart
- Level, effect:
ERROR,STOP - Message:
The import did not finish within <duration>: risk-app was restarted while it ran. Submit it again. - Cause: the import stayed
in progresslonger than the allowed time (2 h by default): risk-app restarted while it ran, and nothing resumes an interrupted import. - Consequence: the import task goes
FAIL; nothing is imported. - What to do: reopen the draft and submit the import again (The import task).
VAL — Validation of the imported model
The consistency checks of the imported portfolio, deals and context: the faulty object is kept, the anomaly is its only signal (The processing chain).
VAL-001 — Required value missing on an object
- Level, effect:
ERROR,FLAG - Message:
<object type> '<reference>', field '<field>': <constraint> (@<annotation>) - Cause: after the import, the consistency check finds a missing or invalid value on a deal, the portfolio or the evaluation context (maturity date, frequency, rate…), named by its reference and the faulty field.
- Consequence: the object is kept as is; the anomaly is its only signal, but the calculation may fail on the deal or leave it out.
- What to do: fill in the column that feeds this field in the file, or the matching mapping key, then import again (The processing chain).
VAL-002 — Required value missing on an element
- Level, effect:
ERROR,FLAG - Message:
<object type>, field '<field>': <constraint> (@<annotation>) - Cause: as VAL-001, on an element without a reference of its own: rate, amount, swap leg, rate curve.
- Consequence: the element is kept as is; the anomaly is its only signal.
- What to do: find the deal or curve from the field (
rate.base,currency…) and complete the data or the mapping (The processing chain).
VAL-003 — Import parameter missing
- Level, effect:
ERROR,FLAG - Message:
Parameter '<parameter>' should not be null - Cause: a general input of the import is missing:
client,referenceDate,portfolioName,portfolioReference,pivotCurrency,discountFactorIndexof the situation information, or one of the files (balance, prefixed cash flows, curves, classification). - Consequence: the anomaly is repeated for each deal file; depending on the parameter, the import goes on with a default value or fails further on.
- What to do: complete the situation information or add the missing file (Situation information).
VAL-004 — No deal file
- Level, effect:
ERROR,FLAG - Message:
At least 1 transaction file should be provided - Cause: the archive holds no file read as a deal file.
- Consequence: no deal is imported; only modelled balance lines can feed the portfolio.
- What to do: add the deal extractions to the archive (Role of each file).
VAL-005 — Import data invalid
- Level, effect:
ERROR,FLAG - Message:
<message> - Cause: another constraint of the import data is not met; the message is the constraint’s own, for instance
must not be nullfor a missing balance-sheet evolution strategy or classification. - Consequence: the anomaly is repeated for each deal file; the import goes on as far as it can.
- What to do: check
model_*.json(balance-sheet evolution strategy) and the classification file (Outflow model).
VAL-006 — Import data cannot be validated
- Level, effect:
ERROR,FLAG - Message:
Unable to validate the import data: <cause> - Cause: the check of the import’s general data failed on an unexpected error.
- Consequence: the data is not checked; the import goes on.
- What to do: check the situation information and that every file is present; if the error persists, report it with the message.
CRV — Discount factor index and rate curves
Reading the rate curve file, building the curves and the compound curves, and checking the indexes of the mapping (Rate curves).
CRV-001 — Discount factor index missing
- Level, effect:
ERROR,STOP - Message:
Discount Factor Index is missing: pick one of the indexes of the client configuration before importing. - Cause: the import carries no discount factor index: the field of the import screen (or of the request) is empty.
- Consequence: the import fails (task
FAIL); nothing is imported. - What to do: pick a discount factor index of the client configuration on the import screen, then start again (Situation information).
CRV-002 — Evaluation context cannot be built
- Level, effect:
ERROR,STOP - Message:
Unable to build the evaluation context from '<file>': <cause> - Cause: the rate curve file cannot be read or does not allow the evaluation context to be built: unrecognised file type,
ratedatecolumn typed as text in a workbook, unexpected content. The cause follows the colon. - Consequence: the import fails (task
FAIL); nothing is imported. - What to do: fix the rate curve file according to the cause (
.xlsxor.csvformat,ratedateas a real Excel date) and import again (Rate curves, Crédit Logement rate curves).
CRV-003 — Discount factor index not mapped
- Level, effect:
ERROR,FLAG - Message:
Discount Factor Index '<index>' is not mapped - Cause: the chosen discount factor index is neither a key of the
indexessection of the mapping nor the index of a curve of the rate file. - Consequence: the index is kept as is; the import goes on, but most likely no curve carries that index (see CRV-018).
- What to do: pick an index of the client configuration, or add it to
indexes(or tocompoundCurve) and import again (Upload checks).
CRV-005 — Several rate curve sheets
- Level, effect:
WARNING,FILE - Message:
Rate curve file has <n> sheets with a curve header (<sheets>); only sheet '<sheet>' is read. - Cause: several sheets of the rate curve workbook carry a quotation header.
- Consequence: only the first sheet in alphabetical order is read; the curves of the other sheets are ignored.
- What to do: keep a single quotation sheet in the workbook, or gather the quotations in one sheet (Rate curves).
CRV-006 — Rate curve column missing
- Level, effect:
ERROR,FILE - Message:
Missing required rate curve header column(s): <columns> - Cause: the header of the rate curve workbook lacks one of the columns
offer,ratedate,currency,ratenameortimeband(exact names, lower case). - Consequence: no curve is read from this workbook.
- What to do: rename or add the listed columns in the header and import again (Rate curves).
CRV-007 — Incomplete rate curve row
- Level, effect:
WARNING,LINE - Message:
Skipping rate curve row with missing cell(s): <cells> - Cause: a row of the rate curve workbook has a blank
offer,currency,ratenameortimebandcell. - Consequence: the row is skipped; the curve point it carried is missing.
- What to do: fill in the listed cells in the rate curve file (Rate curves).
CRV-008 — Unreadable rate curve row
- Level, effect:
WARNING,LINE - Message:
Rate curve row skipped: <cause> - Cause: a row of the rate curve workbook cannot be read: unrecognised
timebandor a rate that is not a number. The cause is given in the message. - Consequence: the row is skipped; the curve point it carried is missing.
- What to do: fix the value quoted (
timebandsuch as3 MONTHS,1 YEAR,OVERNIGHT,ACTUAL; numeric rate) (Rate curves).
CRV-009 — Unreadable CSV rate curve row
- Level, effect:
WARNING,LINE - Message:
Unable to parse index : <cause> : <row> - Cause: a row of the text rate curve file cannot be read: wrong header (one warning per row), invalid number,
dd/MM/yyyy HH:mmdate ortimeband. - Consequence: the row is skipped; the curve point it carried is missing.
- What to do: check the header (
offer;ratedate;currency;ratename;timeband,;separator) and the quoted value, then import again (Rate curves).
CRV-010 — Rate curve point dropped
- Level, effect:
WARNING,LINE - Message:
Rate curve point dropped: <cause> : <row> - Cause: a quotation read correctly could not be added to its curve.
- Consequence: the point is dropped; the curve is built without it, which changes its interpolation.
- What to do: check the quoted row in the rate curve file; if it is correct, report the anomaly with its message (Building the curves).
CRV-011 — Curve far from the reference date
- Level, effect:
WARNING,FLAG - Message:
Index date '<date>' is <n> days <before|after> the reference date '<reference date>' - Cause: a curve of the rate file is dated more than 50 days before or after the reference date of the situation.
- Consequence: the curve is imported; it may however be too far off to be used by the calculation (CFW-057, CFW-058).
- What to do: check that the rate file matches the reference date of the situation (Building the curves).
CRV-012 — Mapped index without a curve
- Level, effect:
ERROR,FLAG - Message:
Index '<index>' is mapped by the client configuration but no curve of the rate curve file carries it; mapped by: <keys> - Cause: a value of the
indexessection or a component curve ofcompoundCurvein the client configuration has no curve in the rate file (case and extra spaces ignored). - Consequence: the import goes on; the deals that use this index, and the compound curve built on it, will have no curve in the calculation.
- What to do: add the curve to the rate file, or fix the label in the client configuration (Building the curves, Index consistency checks).
CRV-014 — Compound curve threshold not a tenor
- Level, effect:
ERROR,LINE - Message:
Compound curve '<curve>' is not built: its threshold '<threshold>' is not a tenor such as 3m or 10y. - Cause: a threshold of the
compoundCurvesection of the client configuration does not read as a tenor (1d,3m,10y…). - Consequence: the compound curve is not built; the deals that use it have no curve in the calculation.
- What to do: fix the threshold in the client configuration and import again (Compound curves).
CRV-015 — Compound curve threshold without an index
- Level, effect:
ERROR,LINE - Message:
Compound curve '<curve>' is not built: its threshold '<threshold>' names no index. - Cause: a threshold of the
compoundCurvesection is given no index (empty value). - Consequence: the compound curve is not built; the deals that use it have no curve in the calculation.
- What to do: give that threshold the name of a curve of the rate file in the client configuration (Compound curves).
CRV-016 — Two thresholds with the same tenor
- Level, effect:
ERROR,LINE - Message:
Compound curve '<curve>' is not built: its thresholds '<threshold>' and '<threshold>' are the same tenor. - Cause: two thresholds of the same
compoundCurveentry name the same tenor (1yand1Y, for instance). - Consequence: the compound curve is not built; the deals that use it have no curve in the calculation.
- What to do: keep only one of the two thresholds in the client configuration (Compound curves).
CRV-017 — Compound curve cannot be built
- Level, effect:
ERROR,LINE - Message:
Compound curve '<curve>' is not built: <cause> - Cause: building the compound curve fails for a reason other than those of CRV-014 to CRV-016; the cause is given in the message.
- Consequence: the compound curve is not built; the deals that use it have no curve in the calculation.
- What to do: fix the
compoundCurveentry or the rate file according to the cause; if it readsinternal error, report it with the name of the curve (Compound curves).
CRV-018 — No curve for the discount factor index
- Level, effect:
ERROR,FLAG - Message:
No rate curve carries the discount factor index '<index>', so the cash flows cannot be discounted: the run will report 'No interest rate curve defined for index' on every cash flow after the reference date. - Cause: no curve of the imported evaluation context carries the selected discount factor index (compared ignoring case, as the calculation does). No other index replaces it.
- Consequence: the situation is imported, but when the cash flows are generated every flow after the reference date is left without a discount factor and gets CFW-028.
- What to do: check that the curve of the discount factor index (or its component curves, for a compound curve) is in the rate file, then import again (Situation information).
CRV-019 — Short rate curve row ignored
- Level, effect:
WARNING,FLAG - Message:
<n> row(s) of rate curve sheet '<sheet>' have fewer than 8 filled cells; they are ignored. - Cause: a row of the rate curve workbook has fewer than 8 filled cells: it is neither a header nor a point. One warning per sheet gives the number of rows.
- Consequence: the row is ignored. If it was a curve point, the curve loses it and the interpolation between its neighbours changes the rates.
- What to do: fill in the cells of the rows concerned and import again (Default rules, §2.1).
CRV-020 — Unreadable curve point date
- Level, effect:
WARNING,FLAG - Message:
<n> rate curve point(s) of '<file>' have no readable rate date (<values>); the date is left empty. - Cause: the
ratedatecell of a curve point is blank or not a date (text, number); one warning per file gives the number of points and the values read. - Consequence: the point is imported without a date and filed in a separate curve,
<name>_null. With a reference date, that undated curve then makes the context build fail (CRV-002). - What to do: format the
ratedatecolumn as dates and import again (Default rules, §2.1).
CRV-021 — Duplicate curve point
- Level, effect:
WARNING,FLAG - Message:
Index '<index>' at <date> has <n> values for tenor <tenor>; the last one read, <value>, is used. - Cause: several points have the same index, date and maturity; one warning per curve and tenor.
- Consequence: the last value read overwrites the earlier ones.
- What to do: keep a single value per index, date and maturity, then import again (Default rules, §2.1).
CRV-022 — Mixed currencies in a curve
- Level, effect:
WARNING,FLAG - Message:
Index '<index>' at <date> mixes currencies (<currencies>); <currency>, the currency of its first point, is used. - Cause: the points of one index on one date carry different currencies; one warning per curve.
- Consequence: the curve takes the currency of its first point read.
- What to do: correct the points’ currency and import again (Default rules, §2.1).
CRV-023 — Index without a refixing tenor
- Level, effect:
WARNING,FLAG - Message:
Index '<index>' names no tenor; a 3-month refixing period is used. - Cause: the index name carries no maturity (
EURIBOR,TEC2…); one warning per curve. - Consequence: the curve’s refixing period stays empty and the cash flow calculation uses 3 months.
- What to do: if the period is not 3 months, name the index with its tenor (
EURIBOR6M) (Default rules, §2.1).
CRV-024 — Curve without a quotation
- Level, effect:
WARNING,FLAG - Message:
<n> curve(s) state no quotation (<curves>); zero-coupon (ZERO) is used. - Cause: a curve has no quotation: it is not listed in
dataMapping.curveQuotationsat import, its quotation is empty when the run reads it, or it was created in the curve editor without one (on edit, the existing quotation is kept). One warning per run gives the number of curves and their names. - Consequence: its points are read as zero-coupon rates (
ZERO), with no bootstrap. If the curve is quoted in swap rates (PAR), its zero rates, hence discounting and shocks, are wrong. - What to do: declare each curve’s quotation (
PARorZERO) indataMapping.curveQuotationsof the client configuration, or in the curve editor (Default rules, §2.1, Default rules, §2.2, Default rules, §5).
CRV-025 — Zero liquidity spread
- Level, effect:
WARNING,FLAG - Message:
No liquidity spread curve is provided; a flat 0 EUR curve (LIQUIDITY_SPREAD) is used. - Cause: the rate curve file provides no liquidity spread curve, which is always the case today; one warning per import.
- Consequence: a flat 0
LIQUIDITY_SPREADcurve in EUR (points 1d, 1m, 10y) is added: every deal without its own liquidity margin has a zero liquidity spread. - What to do: nothing to do: this is the assumption used as long as no liquidity spread curve is imported (Default rules, §2.1).
CRV-026 — Compound curve leaf date chosen
- Level, effect:
WARNING,FLAG - Message:
Compound curve '<curve>': leaf index '<index>' has <n> dates; <date>, the closest to the reference date, is used. - Cause: a leaf index of a compound curve has points on several dates; one warning per curve and leaf.
- Consequence: the date closest to the reference date is used, the latest when the reference date is unknown. At an equal distance before and after, the choice is not guaranteed.
- What to do: keep only the intended date for that index in the rate curve file (Default rules, §2.1).
CRV-027 — Tenors shared by two leaves
- Level, effect:
WARNING,FLAG - Message:
Compound curve '<curve>': tenor(s) <tenors> are quoted by both '<leaf 1>' and '<leaf 2>'; the value of '<leaf used>' is used. - Cause: a maturity is quoted by two leaves of a compound curve, each below its threshold; one warning per curve.
- Consequence: the leaf of the longer threshold overwrites the shorter one’s value: with
{3m: ESTR, 10y: ESTR SWAP}, the tenors 1w to 3m take theESTR SWAPvalues when it quotes them. - What to do: check the values used; if the short leaf should win, remove those tenors from the long leaf in the rate curve file (Default rules, §2.1).
CRV-028 — Compound curve in EUR
- Level, effect:
WARNING,FLAG - Message:
Compound curve '<curve>' has leaves in <currencies>; EUR is used. - Cause: a compound curve is always booked in EUR, whatever its leaves’ currencies; one warning per curve.
- Consequence: the curve is in EUR. If its leaves are in another currency, deals of that currency do not find it as a curve of their currency.
- What to do: nothing to do for EUR leaves; otherwise report it (Default rules, §2.1).
CRV-029 — Hand-made curve without a refixing period
- Level, effect:
WARNING,FLAG - Message:
Curve '<curve>' was added by hand, so it has no refixing period; the tenor of its index name, or 3 months, is used. - Cause: a curve created in the curve editor never has a refixing period (an edited curve keeps its own); one warning per curve.
- Consequence: the calculation uses the tenor carried by the index name, or 3 months failing that (CRV-023).
- What to do: name the index with its tenor (
EURIBOR6M), or import the curve from the rate curve file (Default rules, §5).
TRX — Transaction files and deal lines
Reading the transaction files, choosing the product and reading each deal (Deals). A rejected deal gives two anomalies: its cause, on its reference, then its position in the file (TRX-008, TRX-009).
TRX-001 — Unreadable transaction file
- Level, effect:
ERROR,FILE - Message:
Unable to read transaction file '<file>' (<type>): <cause> - Cause: a transaction file cannot be read: unsupported content type (neither an
.xlsxworkbook nor text), corrupted workbook. In an archive, any file that is not recognised is read as a transaction file. - Consequence: no deal of the file is imported; the other files are.
- What to do: supply the file as
.xlsxor.csv, or remove the extra file from the archive (Role of each file, Reading the files).
TRX-002 — Unreadable CSV transaction file
- Level, effect:
ERROR,FILE - Message:
Unable to open transaction file '<file>' as CSV: <cause> - Cause: the text transaction file cannot be opened or its header cannot be read.
- Consequence: no deal of the file is imported.
- What to do: check the encoding (UTF-8), the
;separator and the header row, then import again (Reading the files).
TRX-003 — CSV reading stopped
- Level, effect:
ERROR,LINE - Message:
Reading of transaction file '<file>' stopped after <n> line(s): <cause> - Cause: a malformed line (an unclosed quote, for instance) stops the reading of the text transaction file.
- Consequence: the lines already read are kept; the following ones are lost.
- What to do: fix the line that follows those quoted (quotes, separators) and import again (Reading the files).
TRX-004 — Workbook reading stopped
- Level, effect:
ERROR,LINE - Message:
Reading of transaction file '<file>' stopped after <n> transaction(s): <cause> - Cause: the reading of the transaction workbook stops mid-file.
- Consequence: the deals already read are kept; the following ones are lost.
- What to do: open and save the workbook again as
.xlsx, check the row after the deals read, then import again (Excel workbooks).
TRX-005 — No deal sheet
- Level, effect:
ERROR,FILE - Message:
No deal sheet found in transaction file '<file>': no sheet has a header row (more than 5 filled cells) with an '<column>' column. Sheets present: <sheets> - Cause: no sheet of the workbook has a header row (more than five filled cells) with an
Instrument Typecolumn. - Consequence: no deal of the file is imported.
- What to do: check the exact name of the
Instrument Typecolumn (spaces included) and the header row; or remove the file if it is not a transaction file (Reading the files).
TRX-006 — Sheet without an Instrument Type column
- Level, effect:
WARNING,FILE - Message:
Sheet '<sheet>' of '<file>' skipped: its header row has no '<column>' column, so it is not read as deals. - Cause: a sheet of the workbook has a header row but no
Instrument Typecolumn. A sheet without a header row is reported by TRX-079. - Consequence: the sheet is not read; the other sheets are.
- What to do: nothing if the sheet holds no deals (notes, dictionary); otherwise fix the column name (Reading the files).
TRX-007 — File summary with rejections
- Level, effect:
ERROR,LINE - Message:
Imported <n> lines from <m>: <k> line(s) rejected - Cause: at least one line of the transaction file (or sheet) was rejected; a file without rejections gives the same summary without the ending, as information (TRX-078).
- Consequence: the rejected lines are not imported; in a guided import, the file is invalid.
- What to do: deal with the anomalies of each rejected line (TRX-008, TRX-009) (Files and lines).
TRX-008 — CSV line rejected
- Level, effect:
ERROR,LINE - Message:
Cannot import the transaction at line <n> of '<file>'; see the anomaly on its reference for the cause. - Cause: a line of the text transaction file was rejected; the cause is the anomaly on the deal’s reference, and the raw line is given in the details.
- Consequence: the deal is not imported.
- What to do: look for the anomaly on the deal’s reference (for instance TRX-010 or TRX-016) and fix the line (Reading the files).
TRX-009 — Workbook row rejected
- Level, effect:
ERROR,LINE - Message:
Cannot import the transaction at row <n> of sheet '<sheet>' of '<file>'; see the anomaly on its reference for the cause. - Cause: a row of a sheet of the transaction workbook was rejected; the cause is the anomaly on the deal’s reference, and the raw row is given in the details.
- Consequence: the deal is not imported.
- What to do: look for the anomaly on the deal’s reference (for instance TRX-010 or TRX-016) and fix the row (Reading the files).
TRX-010 — Instrument type not mapped
- Level, effect:
ERROR,LINE - Message:
Cannot parse 'ProductMapping' with value '<instrument type>', please update mapping - Cause: the value of the
Instrument Typecolumn is not a key of theproductssection of the mapping (exact comparison). - Consequence: the deal is not imported.
- What to do: add the instrument type to
productsin the client configuration, with its product, then import again (Choice of the product).
TRX-011 — Product without a parser
- Level, effect:
ERROR,LINE - Message:
Cannot parse 'MissingParser' with value 'No parser for product <product>', please update mapping - Cause: the product given by
productshas no deal parser, likenantissement(NANT-…lines). - Consequence: the deal is not imported.
- What to do: remove these lines from the extraction, or map the instrument type to
loan,term_deposit,security,repoorswapif it is one of them (Choice of the product).
TRX-012 — Currency not ISO 4217
- Level, effect:
ERROR,LINE - Message:
Currency '<currency>' is not an ISO-4217 code; the deal is not imported. - Cause: the deal’s currency (the column mapped to the currency key) is not a three-letter ISO 4217 code.
- Consequence: the deal is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: fix the currency in the extraction (
EUR,USD…) and import again (Currencies).
TRX-016 — Unreadable value
- Level, effect:
ERROR,LINE - Message:
Cannot parse '<key>' with value '<value>', please update mapping - Cause: a numeric or date cell of the deal cannot be read; the mapping key and the value are quoted.
- Consequence: the deal is not imported.
- What to do: fix the value in the extraction (Numbers, Dates); if the column is the wrong one, fix the mapping.
TRX-017 — Unknown frequency
- Level, effect:
ERROR,LINE - Message:
Cannot parse 'Frequency' with value '<frequency>', please update mapping - Cause: the deal’s frequency is not one of
MONTHLY,QUARTERLY,ANNUAL,AT MATURITY,NONEorSEMI ANNUAL(case-sensitive). - Consequence: the deal is not imported.
- What to do: fix the value in the extraction (Frequencies and tenors).
TRX-018 — Unknown day count
- Level, effect:
ERROR,LINE - Message:
Cannot parse 'RateBase' with value '<day count>', please update mapping - Cause: the deal’s day count is not in the
rateBasesection of the mapping, and no usabledefaultvalue is defined there. - Consequence: the deal is not imported.
- What to do: add the value to
rateBase, or adefaultvalue, in the client configuration (Day counts).
TRX-019 — Unreadable deal
- Level, effect:
ERROR,LINE - Message:
Cannot parse a transaction of '<file>': <cause> - Cause: an error the import cannot name occurs while a deal is read; the cause is given in the message, sometimes in technical terms.
- Consequence: the deal is not imported; the anomaly is on the file, not on the reference.
- What to do: check the line given by TRX-008 or TRX-009; if the cause remains unclear, report it with the message and the line (Anomalies raised at import).
TRX-020 — Fixed rate with an unmapped label
- Level, effect:
WARNING,FLAG - Message:
Rate '<label>' is not in the indexes mapping; add it so this deal is valued with its curve. The deal is fixed-rate, so its valuation is unchanged. - Cause: a fixed-rate deal quotes a rate label missing from the
indexessection of the mapping. - Consequence: the deal is imported; its rate being fixed, its valuation is unchanged. The label is kept on the rate.
- What to do: add the label to
indexesif you want it tied to a curve (Resolving rate labels).
TRX-021 — Floating rate with an unmapped label
- Level, effect:
WARNING,FLAG - Message:
Rate '<label>' is not in the indexes mapping; add it so this deal is valued with its curve. - Cause: a floating-rate deal quotes a label missing from
indexes, while a single file is checked in a guided import, where the curves are not known yet. - Consequence: the deal is kept; at import, the warning becomes TRX-022 or TRX-023 depending on the curves.
- What to do: add the label to the
indexessection of the client configuration (Resolving rate labels, Index consistency checks).
TRX-022 — Rate label taken as a curve
- Level, effect:
WARNING,FLAG - Message:
Rate '<rate>' is not in the indexes mapping; add it so this deal is valued with its curve. It names a rate curve of the evaluation context, used as is. - Cause: a floating-rate deal quotes a rate label missing from the
indexessection of the mapping, but the label is exactly the name of a curve of the rate file. - Consequence: nothing is lost: the deal is valued on that curve, taken as is.
- What to do: if the curve is the right one, add the label to
indexesto make the choice explicit; otherwise map it to the right curve (Rate label resolution).
TRX-023 — Rate label without a curve
- Level, effect:
WARNING,FLAG - Message:
Rate '<rate>' is not in the indexes mapping; add it so this deal is valued with its curve. No rate curve carries that name either, so the deal is valued at its current rate and is insensitive to the shocks. - Cause: a floating-rate deal quotes a rate label missing from the
indexessection of the mapping, and no curve of the rate file has that name. - Consequence: the deal is imported but valued at its current rate: its coupons follow no curve and do not react to the shocks.
- What to do: add the label to
indexes, mapped to a curve of the rate file, and import again (Index consistency checks).
TRX-024 — Unrecognised direction value
- Level, effect:
WARNING,FLAG - Message:
'<value>' in the 'nature' cell (<column>) is neither BORROWING nor INVESTMENT. The deal is booked as BUY, which may be the wrong side of the balance sheet. - Cause: the column mapped to the
naturekey (Borrow or Invest…) holds a value that is neitherINVESTMENTnorBORROWING. - Consequence: the value is not guessed: the deal is booked
BUY, possibly on the wrong side of the balance sheet. - What to do: correct the cell (
INVESTMENTorBORROWING) and import again (Deal direction).
TRX-025 — Direction key missing from the mapping
- Level, effect:
WARNING,FLAG - Message:
Key 'nature' is not in the '<product>' mapping; map it to the "Borrow or Invest" column so the direction comes from the file. The instrument type '<instrument type>' says neither: <rule>. The deal is booked as BUY, which may be the wrong side of the balance sheet. - Cause: the product’s mapping has no
naturekey, and the instrument type does not give the direction; the message recalls the product’s inference rule. - Consequence: the deal is booked
BUY, possibly on the wrong side of the balance sheet. - What to do: map the
naturekey to theBorrow or Investcolumn in the client configuration, or correct the instrument type (Deal direction).
TRX-026 — Blank direction, not inferable
- Level, effect:
WARNING,FLAG - Message:
The 'nature' cell (<column>) is blank or the column is missing. The instrument type '<instrument type>' says neither: <rule>. The deal is booked as BUY, which may be the wrong side of the balance sheet. - Cause: the direction cell is blank or its column is missing from the file, and the instrument type matches none of the product’s inference rules.
- Consequence: the deal is booked
BUY, possibly on the wrong side of the balance sheet. - What to do: fill in
INVESTMENTorBORROWINGin the direction column, or check the instrument type (Deal direction).
TRX-027 — Directions inferred from the instrument type
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have no "Borrow or Invest" value; their direction was inferred from the instrument type: <n> investment(s), <n> borrowing(s), <n> unrecognised booked as BUY. - Cause: once per deals file, when deals have no direction value; the message counts the investments and borrowings inferred from the instrument type, and the unrecognised types.
- Consequence: nothing is lost: the inferred directions are applied, unrecognised types are booked
BUY(each flagged by TRX-025 or TRX-026). - What to do: nothing if the inference is right; otherwise provide the
Borrow or Investcolumn (Deal direction).
TRX-028 — Swap legs on the market convention
- Level, effect:
WARNING,FLAG - Message:
<n> of <total> swap leg(s) of '<file>' have no day count of their own (<n> blank, <n> business-day rule, <n> unrecognised value); they take the market convention - 30/360 fixed, ACT/360 on EURIBOR, ESTR or EONIA, the mapping default otherwise: <detail>. - Cause: once per swaps file, when legs have no readable day count: blank cell, business-day rule (
MODIFIED FOLLOWING…) or unknown value. - Consequence: nothing is lost: these legs take the market convention, failing that the
defaultvalue ofrateBase. - What to do: nothing if the market convention is right; otherwise fill in each leg’s day count in the
payDaysConvention/recDaysConventioncolumns (Day count of a leg).
TRX-029 — Remaining face value differs from nominal
- Level, effect:
WARNING,FLAG - Message:
The remaining face value (<remaining value>) differs from the original (<nominal>); the deal is booked on the remaining value. - Cause: the column mapped to
remainingNominal(Remaining Face Value) holds an amount different from the original nominal. - Consequence: the deal is booked on the remaining value, zero included; the message flags it for review.
- What to do: nothing if the deal is partly repaid; otherwise correct the outstanding amount in the extraction (Outstanding, rate and review).
TRX-030 — Floating leg without an index
- Level, effect:
WARNING,FLAG - Message:
The <pay|rec> leg is flagged floating but names no rate, so it is valued at its current rate. - Cause: the leg’s rate type column (
payRateType/recRateType) saysFLOATING, but the leg quotes no index. - Consequence: the leg is imported and valued at its current rate, following no curve and insensitive to the shocks.
- What to do: fill in the leg’s index, or correct its rate type (Swaps).
TRX-031 — Fixed leg quoting an index
- Level, effect:
WARNING,FLAG - Message:
The <pay|rec> leg is flagged fixed but names the rate '<rate>'; it is booked fixed and the label is kept. - Cause: the leg’s rate type column says
FIXED, but the leg quotes an index label. - Consequence: the leg is booked fixed; the label is kept for information.
- What to do: if the leg is floating, correct its rate type; otherwise clear the index column (Swaps).
TRX-032 — First payment off the schedule
- Level, effect:
WARNING,FLAG - Message:
The <pay|rec> leg's first payment date <date> is not on the schedule rolled back from maturity <maturity> every <n> months; the schedule is kept. - Cause: the first payment date given for the leg lies more than 4 days off the schedule rolled back from maturity at the leg’s frequency.
- Consequence: nothing is lost: the schedule built from maturity is kept, the given date is not used.
- What to do: check the leg’s first payment date, frequency and maturity (Swap legs).
TRX-033 — Two call dates
- Level, effect:
WARNING,FLAG - Message:
Columns '<column>' (<date>) and '<column>' (<date>) give two call dates; the security is called on the earlier, <date>. - Cause: a security carries two different call dates, in
DateCalland inDtCallEmet(issuer call). - Consequence: the security is called on the earlier date.
- What to do: check the security’s call date and keep only the right one (Issuer call / holder call).
TRX-034 — Blank security coupon
- Level, effect:
WARNING,FLAG - Message:
Column '<column>' is blank or not a number; the security is imported with a 0 % coupon. - Cause: the coupon cell of a fixed-rate security (
Coupon Rate) is blank or not a number. - Consequence: the security is imported with a 0 % coupon: its interest is nil.
- What to do: fill in the security’s coupon and import again (Securities).
TRX-035 — Blank security margin
- Level, effect:
WARNING,FLAG - Message:
Column '<column>' is blank or not a number; the security is imported with a 0 % margin. - Cause: the margin cell of a floating-rate security (
Coupon Margin Rate) is blank or not a number. - Consequence: the security is imported with a 0 % margin: its coupon is the index alone.
- What to do: fill in the security’s margin (
0if it really is nil) and import again (Securities).
TRX-036 — Unknown rate type
- Level, effect:
ERROR,LINE - Message:
Rate type '<value>' (column '<column>') is neither 'Fixed' nor 'Floating'. The deal is not imported. - Cause: the column mapped to the
rateTypekey holds a value other thanFixedorFloating(case ignored). - Consequence: the deal is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: correct the cell (
FixedorFloating) and import again (Deals).
TRX-037 — Blank rate type
- Level, effect:
ERROR,LINE - Message:
Rate type (column '<column>') is blank; it must be 'Fixed' or 'Floating'. The deal is not imported. - Cause: the cell of the column mapped to the
rateTypekey is blank. - Consequence: the deal is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: fill in
FixedorFloatingon every line and import again (Deals).
TRX-038 — Blank instrument type
- Level, effect:
ERROR,LINE - Message:
'<column>' is blank, so the deal cannot be matched to a product. The deal is not imported. - Cause: the
Instrument Typecell, which selects the product in theproductssection of the mapping, is blank. - Consequence: the deal is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: fill in the line’s instrument type and import again (Choice of the product).
TRX-039 — Product unknown to the engine
- Level, effect:
ERROR,LINE - Message:
Instrument type '<instrument type>' is mapped to product '<product>', which is not a product of the engine (expected one of <products>). The deal is not imported. - Cause: the
productssection of the mapping maps the instrument type to a product the engine does not know (typo, product of another format). - Consequence: every deal of that instrument type is rejected; TRX-008 or TRX-009 gives their lines.
- What to do: in the client configuration, map the instrument type to one of the products the message lists (Choice of the product).
TRX-040 — Blank tag column
- Level, effect:
ERROR,LINE - Message:
Tag column '<column>' is blank. The deal is not imported. - Cause: in an Excel workbook, the cell of a column listed in
tags(Entityin the Crédit Logement mapping) is blank. - Consequence: the deal is not imported; TRX-009 gives its line in the file.
- What to do: fill in the column on every line, or remove it from
tags(Files and lines).
TRX-041 — Blank instrument type (capitalisation)
- Level, effect:
ERROR,LINE - Message:
Instrument type (column '<column>') is blank, so whether its interest is capitalised cannot be read. The deal is not imported. - Cause: on a loan or a term deposit, the instrument type column, which says whether interest is capitalised (
Capitalise), is blank. - Consequence: the deal is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: fill in the line’s instrument type and import again (Loans and term deposits).
TRX-042 — Swap leg without a base rate
- Level, effect:
ERROR,LINE - Message:
The <pay|rec> leg has no base rate: column '<column>' is blank. The deal is not imported. - Cause: a leg’s base rate column (
Pay base rateorRec base rate) is blank. - Consequence: the swap is not imported; TRX-008 or TRX-009 gives its line in the file.
- What to do: fill in the base rate of both legs with a number,
0for a floating leg whose last fixing is unknown (Base rate of a leg).
TRX-043 — Product missing from the column mapping
- Level, effect:
ERROR,LINE - Message:
Mapping for 'product' '<product>' is missing - Cause: the deal’s product has no entry in the
modelsection of the mapping, which says which column feeds each key. The anomaly’s reference is the deal: the file and its number, since the product’sreferencekey cannot be read. - Consequence: the deal is not imported, nor is any other deal of the same product.
- What to do: add the product’s entry to the
modelsection of the client configuration (Mapping example).
TRX-044 — Mandatory key missing from the mapping
- Level, effect:
ERROR,LINE - Message:
Mapping for 'product' '<product>' and reference '<key>' is missing - Cause: a mandatory key is missing from the product’s entry in the
modelsection of the mapping. The anomaly’s reference is the deal (TD_2439, for instance); when the missing key isreferenceitself, it is the file. - Consequence: every deal of this product is rejected.
- What to do: add the key named to the product’s entry, with the name of its column, then import again (Choosing the product).
TRX-045 — Mapped column missing from the file
- Level, effect:
ERROR,LINE - Message:
Record does not contain field '<column>' - Cause: the column a mandatory key of the mapping names does not exist in the deals file (name compared character for character, spaces included). The anomaly’s reference is the deal.
- Consequence: every line of the file is rejected.
- What to do: add the column to the file, even empty, or fix its name in the mapping (Reading the files).
TRX-046 — Deal without a currency
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have no currency (blank cell or no currency column); EUR is used. - Cause: a deal’s currency cell is blank, or the extract (swaps, securities) has no
Currencycolumn. One warning per file gives the number of deals concerned. - Consequence: the deal is booked in
EUR: its cash flows are discounted and shocked as euro flows, even if it is denominated in another currency. - What to do: add the
Currencycolumn to the extract and fill in each deal’s currency, then import again (Default rules, §1.2).
TRX-047 — Securities file: product SECURITY forced
- Level, effect:
WARNING,FLAG - Message:
File '<file>' is named as a securities file; product SECURITY is used for its <n> deal(s), whatever the products mapping says. - Cause: the name of the deal file contains
securities. One warning per file gives the number of deals. - Consequence: every deal of the file is a security (
SECURITY), whatever theproductsmapping of itsInstrument Type; an instrument type missing from the mapping is not reported (TRX-010) for this file. - What to do: if the file does hold securities, nothing is needed; otherwise rename it so that its name does not contain
securitiesand check theproductsmapping (Default rules, §1.2).
TRX-048 — Tag column missing
- Level, effect:
WARNING,FLAG - Message:
Tag column '<column>' required by the client configuration is not in '<file>'; its <n> deal(s) are imported without that tag. - Cause: a tag column required by the client configuration (
dataMapping.tags) is missing from the extract. One warning per file and column gives the number of deals. - Consequence: the deals are imported without that tag: the filters and breakdowns that rely on it do not find them. A blank tag cell, by contrast, rejects the deal (TRX-040).
- What to do: add the column to the extract, or remove the tag from
dataMapping.tagsif it is no longer used, then import again (Default rules, §1.2).
TRX-049 — Blank secondary security rate
- Level, effect:
WARNING,FLAG - Message:
<n> security deal(s) of '<file>' have a blank or non-numeric '<column>' (<values>); 0 % is used. - Cause: the margin of a fixed-rate security or the coupon of a floating-rate one is blank or not a number. One warning per file gives the number of securities and the values read.
- Consequence: 0 % is used. A blank cell is usually harmless; a non-numeric margin on a fixed-rate security, which is added to the coupon, is however lost: its interest is understated.
- What to do: check the values quoted: write a number (
0if the value really is nil) and import again (Default rules, §1.2).
TRX-050 — Security instrument type read under isin
- Level, effect:
WARNING,FLAG - Message:
Key 'instrumentType' is not mapped for '<file>'; the instrument type of its <n> security deal(s), which sets their direction, is read under the key 'isin'. - Cause: the
instrumentTypekey is not mapped for the securities file. One warning per file gives the number of securities. - Consequence: the instrument type, which sets the security’s direction (held or issued), is read from the column mapped under
isin: if it does not hold the type, the direction may be wrong. - What to do: map the
instrumentTypekey to the instrument type column in the client configuration, then import again (Default rules, §1.2).
TRX-051 — Blank deal reference
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank reference; '<prefix>_null' is used. - Cause: a deal’s reference cell is blank. One warning per file gives the number of deals concerned.
- Consequence: the deal is kept under the reference
<prefix>_null(e.g.LO_null): every deal of the same product without a reference shares it, and they can no longer be told apart on screen nor matched. - What to do: fill in a unique reference for each deal and import again (Default rules, §1.2).
TRX-052 — Number read as text truncated
- Level, effect:
WARNING,FLAG - Message:
<n> numeric value(s) of column '<column>' in '<file>' are read as text; their integer part is used (e.g. <value> becomes <result>). - Cause: a cell read as text (reference, counterparty, currency, rate label, frequency…) holds a number. One warning per file and column gives the number of values and an example.
- Consequence: only the integer part is kept, capped at 2,147,483,647:
12.5becomes12, and every numeric reference above that cap becomes the same. - What to do: format the column as text in the extract (or prefix the values) so that they are read as they are, then import again (Default rules, §1.2).
TRX-053 — Simple interest without capitalise
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have an instrument type that does not mention 'capitalise'; simple interest is used. - Cause: the instrument type of a loan or term deposit is not blank and does not contain
capitalise(Capitalisation,capitalizedorCAPITALISÉdo not contain it). One warning per file gives the number of deals concerned. - Consequence: interest is simple (
SIMPLE), not capitalised: for a deal that really capitalises, the interest and the amount repaid at maturity are understated. - What to do: if these deals capitalise their interest, write
capitalisein their instrument type; otherwise nothing is needed (Default rules, §1.2).
TRX-054 — Floating deal without an index
- Level, effect:
WARNING,FLAG - Message:
<n> floating deal(s) of '<file>' name no rate index; their current rate is used, so they are insensitive to the shocks. - Cause: the rate label (index) cell of a floating loan, deposit or security is blank. One warning per file gives the number of deals concerned.
- Consequence: the deal has no index: it is valued at its current rate, which does not move with the scenarios; its coupon is insensitive to rate shocks and EVE/NII treat it like a fixed-rate deal.
- What to do: fill in the rate label (index) of the floating deals, mapped in the client configuration, and import again (Default rules, §1.2).
TRX-055 — Unreadable index tenor
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a rate tenor that is not a tenor (<values>); their index is looked up on the rate label alone. - Cause: the
*Tenorkey is not mapped, the column is missing, or the cell is blank or not a tenor (ACTUAL, free text). One warning per file gives the number of deals concerned. - Consequence: the index is looked up on the rate label alone: the deal is projected on the bare label’s curve, which may have another tenor (a 3M EURIBOR projected on the 6M curve, for instance).
- What to do: fill in the tenor (
3M,6M…) and check that the index mapping has thelabel|tenorentry, then import again (Default rules, §1.2).
TRX-056 — Blank remaining face value
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank remaining face value; their original face value is used. - Cause: the
remainingNominalkey is not mapped or theRemaining Face Valuecell is blank. One warning per file gives the number of deals concerned. - Consequence: the deal is booked on its original face value: a deal already partly amortised keeps its full face value, and its outstanding, cash flows and metrics are overstated.
- What to do: map
remainingNominaland fill in each deal’s remaining face value, then import again (Default rules, §1.2).
TRX-057 — Unsupported review frequency
- Level, effect:
WARNING,FLAG - Message:
<n> floating deal(s) of '<file>' have a review frequency the engine cannot express (<values>); the review period is left empty. - Cause: the rate review frequency (
repricingPeriod) of a floating deal is not a recognised value (daily, for instance). One warning per file gives the number of deals and the values read. - Consequence: the review period is left unset. The calculation does not read this field today: the figures do not change.
- What to do: use a recognised frequency if one matches; otherwise nothing is needed (Default rules, §1.2).
TRX-058 — Blank numeric value
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank '<column>'; the value is left empty. - Cause: a numeric cell of a deal (amount, rate, margin; a repo’s
interestRateorrateLeg1rate) is missing or blank. One warning per file and column gives the number of deals. - Consequence: the value is left empty; the effect depends on the field: a blank face value is reported at validation (VAL-001), a blank margin adds no spread, and a rolled copy of the deal then carries
0(a blank repo rate becomes a zero rate). - What to do: fill in the column quoted for each deal (
0if the value really is nil) and import again (Default rules, §1.2).
TRX-059 — Date before 1950
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a '<column>' before 1950 (e.g. an empty formula); the date is left empty. - Cause: a deal date (trade, settlement, maturity, call…) written as text or as an Excel serial is before 01/01/1950, often an empty formula. One warning per file and column gives the number of deals.
- Consequence: the date is left empty: a blank maturity then causes other anomalies, a blank call date removes the deal’s call.
- What to do: correct the date (or the formula that computes it) in the extract and import again (Default rules, §1.2).
TRX-060 — Blank date
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank '<column>'; the date is left empty. - Cause: a deal date cell is blank while its key is mapped and its column present, including a date read as mandatory (trade, settlement, call date of a loan or deposit). One warning per file and column gives the number of deals.
- Consequence: the date is left empty; a blank call date amounts to a deal without a call.
- What to do: fill in the date if there is one and import again; a blank cell is normal when the deal has no such date (Default rules, §1.2).
TRX-061 — Ambiguous date read day-first
- Level, effect:
WARNING,FLAG - Message:
<n> date(s) of column '<column>' in '<file>' read both day-first and month-first (e.g. '<example>'); day-first (dd/MM) is used. - Cause: a text date reads both day/month and month/day (
01/02/2025). One warning per file and column gives the number of dates and an example. - Consequence: the date is read day-first (
dd/MM: 1 February); theMM/ddformat is only tried whendd/MMfails. An extract in US format is therefore read with day and month swapped, which shifts maturities and cash flows. - What to do: check the extract’s date format; prefer ISO dates (
2025-02-01) or date-typed cells (Default rules, §1.2).
TRX-062 — Date as an Excel serial
- Level, effect:
WARNING,FLAG - Message:
<n> date(s) of column '<column>' in '<file>' are Excel serial numbers; the 1900 date system is used and the time is dropped. - Cause: a deal date cell is numeric (a formula, for instance). One warning per file and column gives the number of dates.
- Consequence: the value is read as an Excel serial in the 1900 system, the time is dropped and the workbook’s 1904 option is ignored: a workbook in the 1904 system shifts the dates by 4 years and 1 day; a number
20250101is read as a serial, far in the future. - What to do: check that the workbook uses the 1900 date system and that the cells hold dates, not
yyyymmddnumbers (Default rules, §1.2).
TRX-063 — Missing payment frequency (swap, security)
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank or non-text payment frequency; the frequency is left empty. - Cause: the payment frequency cell of a swap or a security is blank or not text. One warning per file gives the number of deals concerned. For loans and term deposits, see TRX-073.
- Consequence: the frequency is left empty; the payment schedule then depends on the product’s generator.
- What to do: fill in the payment frequency (exact value of the mapping, case included) and import again (Default rules, §1.2).
TRX-064 — Blank day count
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank day count; the mapping default <value> is used. - Cause: the day count (rate base) cell of a loan, deposit, security or repo is blank. One warning per file gives the number of deals concerned. Swap legs follow TRX-028.
- Consequence: the
defaultentry ofdataMapping.rateBaseis used; interest is computed with that convention, which may differ from the contract’s. Without adefaultentry, the deal is rejected (TRX-018). - What to do: fill in each deal’s day count, or check that the mapping’s
defaultentry is the right convention (Default rules, §1.2).
TRX-065 — Blank counterparty
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank counterparty; counterparty 'DEFAULT_NAME' is used. - Cause: the counterparty name cell is blank. One warning per file gives the number of deals concerned.
- Consequence: the deal is booked on counterparty
DEFAULT_NAME: every deal without a counterparty is grouped on it. - What to do: fill in each deal’s counterparty and import again (Default rules, §1.2).
TRX-066 — Counterparty type and rating forced
- Level, effect:
WARNING,FLAG - Message:
File '<file>' carries no counterparty type or rating; RETAIL rated 'A' is used for its <n> counterparty(ies). - Cause: always: the import reads no counterparty type or rating column. One warning per file gives the number of counterparties.
- Consequence: every counterparty is
RETAIL, ratedAon scaleA. No effect on the IRRBB metrics today, but wrong for any credit-risk analysis. - What to do: nothing is needed for IRRBB; the files cannot yet carry the type or the rating (Default rules, §1.2).
TRX-067 — Swap leg without a rate type
- Level, effect:
WARNING,FLAG - Message:
<n> swap leg(s) of '<file>' have no Fixed/Floating flag (<values>); the rate type is inferred from the rate label (FLOATING when it names one, FIXED otherwise). - Cause: the
Pay/Rec Fixed/Floatingkey of a swap leg is not mapped, its cell is blank or neitherFIXEDnorFLOATING(Variable,FLOAT…). One warning per file gives the number of legs and the values read. - Consequence: the leg is floating (
FLOATING) when it names a rate label, fixed (FIXED) otherwise: a fixed leg carrying a label is treated as floating, and vice versa. - What to do: fill in
FIXEDorFLOATINGfor each leg and import again (Default rules, §1.2).
TRX-068 — Blank margin
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank margin; no spread is used. - Cause: the margin of a swap leg, a loan or a term deposit (
interestMargin) is blank. One warning per file gives the number of deals concerned. - Consequence: no spread is applied (0 in the calculation): a floating deal’s coupon is the index alone.
- What to do: fill in the margin (
0if it really is nil) and import again (Default rules, §1.2).
TRX-069 — Swap without a trade date
- Level, effect:
WARNING,FLAG - Message:
<n> swap(s) of '<file>' have no deal date; their settlement date is used. - Cause: a swap’s
dealDatekey is not mapped or its cell is blank. One warning per file gives the number of swaps. - Consequence: the settlement date is used as the trade date: a forward-starting swap loses the gap between the two dates.
- What to do: map
dealDateand fill in each swap’s trade date, then import again (Default rules, §1.2).
TRX-070 — Security without a call date
- Level, effect:
WARNING,FLAG - Message:
<n> security deal(s) of '<file>' have no call date; their issuer call date is used, as a call exercised with certainty. - Cause: a security’s call date (
callDate) is blank while it has an issuer call date (issuerCallDate). One warning per file gives the number of securities. - Consequence: the issuer call date is used and the call is assumed exercised with certainty: the security is repaid on that date, which shortens its cash flows.
- What to do: fill in the call date if it differs, or nothing if a certain exercise at the issuer call is the intended assumption (Default rules, §1.2).
TRX-071 — Repos in EUR
- Level, effect:
WARNING,FLAG - Message:
File '<file>' has no repo currency column; EUR is used for its <n> repo(s). - Cause: always: the import reads no currency column for repos. One warning per file gives the number of repos.
- Consequence: repos are booked in
EUR: a repo in another currency is valued and shocked as a euro repo. - What to do: nothing is needed if your repos are in euros; otherwise report it, the file cannot yet carry their currency (Default rules, §1.2).
TRX-072 — Repos at a fixed rate with no spread
- Level, effect:
WARNING,FLAG - Message:
The file carries no repo rate type or spread; a fixed rate with no spread is used for the <n> repo(s) of '<file>'. - Cause: always: the import reads no rate type nor spread for repos. One warning per file gives the number of repos.
- Consequence: both legs of each repo are fixed-rate (
FIXED) with a zero spread: an indexed repo (on €STR, for instance) is treated as fixed-rate and does not react to the shocks. - What to do: nothing is needed if your repos are fixed-rate; otherwise report it, the file cannot yet index them (Default rules, §1.2).
TRX-073 — Blank payment frequency (loan, deposit)
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of '<file>' have a blank payment frequency; yearly (YEAR) is used. - Cause: the interest payment frequency of a loan or a term deposit is blank or not text. One warning per file gives the number of deals concerned.
- Consequence: the deal pays its interest once a year (
YEAR): for a deal that pays more often, the schedule and the accrued interest differ. - What to do: fill in the payment frequency and import again (Default rules, §1.2).
TRX-074 — Loan without analytical margins
- Level, effect:
WARNING,FLAG - Message:
<n> loan(s) of '<file>' have no liquidity or commercial margin; the context's liquidity spread is used. - Cause: a loan’s liquidity and commercial margin keys are not mapped, their columns are missing or their cells blank (the case of every loan of the Crédit Logement extract). One warning per file gives the number of loans.
- Consequence: the evaluation context’s liquidity spread applies to the loan instead of its own margins.
- What to do: supply the liquidity and commercial margins if you know them; otherwise check the context’s liquidity spread (Default rules, §1.2).
TRX-075 — Loan without a liquidity curve
- Level, effect:
WARNING,FLAG - Message:
<n> loan(s) of '<file>' name no liquidity curve; the context's default liquidity curve is used. - Cause: a loan’s liquidity curve key is not mapped, its cell is blank or its label not mapped (that last case is also reported by TRX-021 to TRX-023, whose text speaks of the deal’s rate). One warning per file gives the number of loans.
- Consequence: the loan has no liquidity curve of its own: the context’s default liquidity curve applies.
- What to do: fill in the liquidity curve and check that its label is mapped, or nothing if the context’s curve suits (Default rules, §1.2).
TRX-076 — Capitalised deposit paid at maturity
- Level, effect:
WARNING,FLAG - Message:
<n> term deposit(s) of '<file>' capitalise their interest; payment at maturity is used whatever their payment frequency. - Cause: a term deposit’s instrument type contains
capitalise. One warning per file gives the number of deposits. - Consequence: the deposit pays its interest at maturity (
AT_MATURITY), even if the file gives another payment frequency, which is ignored. A capitalised loan, by contrast, keeps its frequency. - What to do: nothing is needed if these deposits capitalise until maturity; otherwise remove
capitalisefrom their instrument type (Default rules, §1.2).
TRX-077 — Counterparties created as CORPORATE
- Level, effect:
WARNING,FLAG - Message:
<n> counterparty(ies) unknown to the tenant were created; type CORPORATE is used: <names>. - Cause: when imported or generated transactions are saved, a counterparty does not exist yet for the client (tenant). One warning per save gives the number of counterparties created and their names.
- Consequence: the counterparty is created as
CORPORATE, any imported type being ignored; a counterparty already known keeps its original type. - What to do: check the counterparties quoted and correct their type in the application if
CORPORATEdoes not suit (Default rules, §5).
TRX-078 — File summary without rejection
- Level, effect:
INFO,FLAG - Message:
Imported <n> lines from <m> - Cause: every line of the transaction file (or sheet) was imported; one line per file or sheet.
- Consequence: none: the summary gives the number of deals read. A file with rejections is summarised by TRX-007.
- What to do: nothing; compare the number with the extract if in doubt (Files and lines).
TRX-079 — Sheet without a header row
- Level, effect:
INFO,FLAG - Message:
Sheet '<sheet>' of '<file>' skipped: it has no header row, so it is not read as deals. - Cause: a sheet of the deals workbook has no header row (an empty sheet, notes, free text). A sheet with a header row but no
Instrument Typecolumn is reported by TRX-006. - Consequence: the sheet is not read; the other sheets are.
- What to do: nothing if the sheet holds no deals; otherwise give it the header row of the deals sheets (Reading the files).
CLS — Accounts and classification
The classification workbook (mapping_compta, mapping_compta_irrbb, histo) and the account of each deal (Classification).
CLS-001 — Deals without an account
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of <total> in '<file>' have no account: neither the histo sheet nor the instrument mapping of the client configuration names them, so they have no FINREP row: <breakdown by instrument type>. Deal numbers: <numbers>. - Cause: once per deals file, for the deals that neither the
histosheet of the classification nor theinstrumentAccountsrule of the client configuration assigns to an account. - Consequence: these deals are imported and their cash flows computed, but they have no FINREP row: they are left out of the IRRBB reporting (RPT-004).
- What to do: add an
instrumentAccountsrule for their instrument type, or their number to thehistosheet (Account of the deals).
CLS-002 — Account the classification cannot use
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of <total> in '<file>' were given an account the classification cannot use, so they have no FINREP row: <breakdown by instrument type>. Deal numbers: <numbers>. - Cause: once per deals file, for the deals whose account is not in
mapping_compta, or whose starred account covers postes on different FINREP rows, or when the classification workbook is unusable (CLS-003, CLS-004); the breakdown gives the reason per instrument type. - Consequence: these deals are imported and their cash flows computed, but they have no FINREP row: they are left out of the IRRBB reporting (RPT-004).
- What to do: declare the account in
mapping_compta, give the deals an exact poste, or fix the workbook (Account and classification of a deal).
CLS-003 — Classification sheet missing
- Level, effect:
ERROR,FILE - Message:
Sheet(s) <sheets> missing in classification file '<file>'. Sheets present: <sheets> - Cause: the classification workbook has no
mapping_comptaand/ormapping_compta_irrbbsheet, looked up by their exact name. - Consequence: the classification is not read; no deal is rejected, but the deals (CLS-002) and the modelled balance lines (CLS-018) are imported without a FINREP row. The file is invalid in the guided import.
- What to do: rename or add the missing sheets and import again (Classification).
CLS-004 — Classification workbook unreadable
- Level, effect:
ERROR,FILE - Message:
Unable to read classification file '<file>': <cause> - Cause: the classification workbook cannot be read (corrupted file, format other than
.xlsx, error while reading it). - Consequence: the classification is not read; the deals (CLS-002) and the modelled balance lines (CLS-018) are imported without a FINREP row. The file is invalid in the guided import.
- What to do: save the workbook again as
.xlsxand import again; if the cause is an internal error, report it with the message (Classification and balance).
CLS-005 — Unknown FINREP code
- Level, effect:
WARNING,FLAG - Message:
Unknown FINREP classification '<FINREP code>' for accounting key '<category>' (row <n> of sheet '<sheet>'); the key will have no FINREP code. - Cause: a row of the
mapping_compta_irrbbsheet gives, in theFINREPcolumn, a value that is not a FINREP row of the engine (case matters). - Consequence: the category has no FINREP code: the deals classified in it are left out of the IRRBB reporting (RPT-004).
- What to do: correct the FINREP code (
A_LOANS_AND_ADVANCES…) (mapping_compta_irrbb sheet).
CLS-006 — Inconsistent FINREP row
- Level, effect:
ERROR,LINE - Message:
FINREP classification <FINREP code> rejected for accounting category '<category>' (row <n> of sheet '<sheet>'): <problems>. The category gets no FINREP code, and every cash flow of every deal on it will be excluded from the report until the row is fixed. - Cause: a row of
mapping_compta_irrbbfiles an asset category on a liability FINREP row (or the reverse), or itsRow Codecolumn does not match the J 02.00 row of the FINREP code. - Consequence: the row is rejected: the category has no FINREP code and its deals are left out of the whole IRRBB reporting (RPT-004).
- What to do: correct the row’s FINREP code, the category’s side or the
Row Code(mapping_compta_irrbb sheet).
CLS-007 — Unknown hedge role
- Level, effect:
WARNING,FLAG - Message:
Unknown hedge role '<role>' for accounting key '<category>' (row <n> of sheet '<sheet>'); the deals of that category keep <default role>. - Cause: the
Hedge Rolecolumn ofmapping_compta_irrbbholds a value other thanMACRO,MICRO,INDEX,NONEorUNSPECIFIED. - Consequence: the deals of the category keep the role
UNSPECIFIED. - What to do: correct the row’s hedge role (mapping_compta_irrbb sheet).
CLS-008 — Account without a category
- Level, effect:
WARNING,LINE - Message:
Classification row <n> of sheet '<sheet>' skipped: account <account> has no category (<cells> empty), so it classifies no deal. - Cause: a row of
mapping_comptacarries an account but itsBilanand/orContrepartiecell is blank. - Consequence: the row is ignored: the account classifies no deal.
- What to do: fill in the account’s side (
Bilan) and counterparty, or delete the row (mapping_compta sheet).
CLS-009 — Unreadable mapping_compta row
- Level, effect:
ERROR,LINE - Message:
Classification row <n> of sheet '<sheet>' skipped: <cause> - Cause: a row of
mapping_comptacannot be read: an account typed as text that is not letters then digits (131200typed as text), an unknown side, an unreadable boolean or integer; the cause says which. - Consequence: the row is dropped: its account classifies no deal, and the file is invalid in the guided import.
- What to do: enter the account as a numeric cell (or as text of the form
H96…), and fix the cell the cause names (mapping_compta sheet).
CLS-010 — Category without a FINREP row
- Level, effect:
WARNING,FLAG - Message:
Accounting category '<category>' has no row in sheet '<sheet>' of '<file>'; its <n> account(s) have no FINREP code, and every cash flow of every deal on them will be excluded from the report. - Cause: a category (
<Bilan> <Contrepartie>) ofmapping_comptahas no row inmapping_compta_irrbb, where it is looked up exactly. - Consequence: its accounts have no FINREP code: the deals classified on them are left out of the whole IRRBB reporting (RPT-004).
- What to do: add the category to
mapping_compta_irrbb, spelt exactly as inmapping_compta(mapping_compta_irrbb sheet).
CLS-011 — Non-numeric histo row
- Level, effect:
ERROR,LINE - Message:
Row <n> of sheet '<sheet>' skipped: the deal number and the accounting account must both be numeric cells. - Cause: in the
histosheet, the deal number or the account is not a numeric cell. - Consequence: the row is dropped: the deal takes the account of the
instrumentAccountsrule, if there is one. - What to do: enter the number and the account as numeric cells (histo sheet).
CLS-012 — Undeclared histo account
- Level, effect:
WARNING,LINE - Message:
Deal '<deal>' is mapped to account '<account>', which sheet '<sheet>' does not declare; the deal falls back to the instrument mapping. - Cause: the
histosheet maps a deal to an account missing frommapping_compta. - Consequence: the
historow is ignored: the deal takes the account of theinstrumentAccountsrule, if there is one. - What to do: declare the account in
mapping_compta, or correct the deal’s account inhisto(histo sheet).
CLS-013 — Deal listed twice in histo
- Level, effect:
WARNING,FLAG - Message:
Deal '<deal>' appears more than once in sheet '<sheet>', always on account '<account>'. - Cause: a deal appears several times in the
histosheet, always on the same account. - Consequence: nothing is lost: the deal takes that account.
- What to do: delete the duplicate rows from
histo(histo sheet).
CLS-014 — Deal on two accounts in histo
- Level, effect:
ERROR,LINE - Message:
Deal '<deal>' is mapped to two different accounts in sheet '<sheet>' ('<account>' and '<account>'); the deal falls back to the instrument mapping until the sheet says which one. - Cause: the
histosheet maps the same deal to two different accounts. - Consequence: its
historows are ignored: the deal takes the account of theinstrumentAccountsrule, if there is one. - What to do: keep in
histoonly the row of the right account (histo sheet).
CLS-015 — Starred account over several FINREP rows
- Level, effect:
ERROR,LINE - Message:
Account '<account>' covers postes on different FINREP rows (<rows>): give the deals an exact poste. - Cause: a starred account (
9431**) covers, inmapping_compta, postes filed on different FINREP rows: the classification is ambiguous. On a deal, the cause is carried by CLS-002. - Consequence: a modelled balance line on that account (its strategy’s prefix) is not imported; a deal is imported without a FINREP row.
- What to do: give an exact account, or a strategy with a longer prefix, or file the covered postes on the same FINREP row (Account and classification of a deal).
CLS-017 — Referential classification parsing failed
- Level, effect:
ERROR,STOP - Message:
Classification parsing failed: <cause> - Cause: reading a classification workbook uploaded to the referential fails unexpectedly in the engine.
- Consequence: the workbook is not read: the classification is not created.
- What to do: check that the workbook is a readable
.xlsxwith the expected sheets and upload it again; if the error persists, report it with the message (Classification).
CLS-018 — Modelled balance lines without a FINREP row
- Level, effect:
WARNING,FLAG - Message:
<n> modelled balance line(s) imported without a FINREP row: the classification file '<file>' could not be used (see its error). Accounts: <accounts>. - Cause: the classification workbook is unusable (CLS-003, CLS-004) while balance lines are modelled by the run-off model.
- Consequence: these lines are imported and their cash flows computed, but without a FINREP row: they are left out of the IRRBB reporting.
- What to do: fix the classification workbook according to its error and import again (Classification and balance).
CLS-019 — Account missing from mapping_compta
- Level, effect:
ERROR,LINE - Message:
Mapping for 'Classification' 'account' and reference '<account>' is missing - Cause: the account matches no line of
mapping_compta, or an exact account appears there several times. For a modelled balance line, the account is its strategy’s prefix; on a deal, the cause is carried over into CLS-002. - Consequence: the modelled balance line is not imported; a deal is imported without a FINREP row.
- What to do: declare the account (or the strategy’s prefix) exactly once in
mapping_compta(Assigning balance lines).
CLS-020 — Derivative category without a hedge role
- Level, effect:
WARNING,FLAG - Message:
<n> derivative deal(s) of '<file>' are on accounting categories with no hedge role (<categories>); UNSPECIFIED is used. - Cause: the hedge role cell (column 3 of
mapping_compta_irrbb) is blank, missing or the row too short, including the blank cell of a workbook generated by the application from a referential category without a hedge role. One warning per file gives the number of derivative deals and the categories. - Consequence: the derivative gets role
UNSPECIFIED(other deals getNONE): it shows on anUNSPECIFIEDrow of the gap report, neither hedge nor trading. - What to do: fill in the hedge role of the categories quoted, in the workbook or in the classification referential, then import again (Default rules, §1.3, Default rules, §5).
CLS-021 — Hedge role on a non-derivative row
- Level, effect:
WARNING,FLAG - Message:
<n> accounting category(ies) of '<file>' declare a hedge role on a non-derivative FINREP row (<categories>); NONE is used for their deals. - Cause: an accounting category declares a hedge role while its FINREP code is not a derivatives row. One warning per file gives the number of categories and their names. (Deals with no classification or FINREP code are already counted by CLS-001 and CLS-002.).
- Consequence: the deals of these categories get role
NONE: the declared role is ignored. - What to do: check the FINREP code or the hedge role of the categories quoted (Default rules, §1.3).
CLS-022 — Decimal account number
- Level, effect:
WARNING,FLAG - Message:
<n> account number(s) of '<file>' have a decimal part (e.g. <example>); their integer part is used. - Cause: an account number of the
mapping_comptaorhistosheets is a numeric cell with a decimal part. One warning per file gives the number of accounts and an example. - Consequence: the number is truncated to its integer part: two accounts that only differ by their decimals merge, and the match with the balance may hit the wrong account.
- What to do: write the account numbers as text, without decimals, and import again (Default rules, §1.3).
CLS-023 — Classification without a histo sheet
- Level, effect:
WARNING,FLAG - Message:
Classification file '<file>' has no 'histo' sheet; the instrument mapping of the client configuration is used for all <n> deal(s). - Cause: the classification file has no
histosheet (deal → account matching). One warning per file gives the number of deals. - Consequence: every deal takes its account from the instrument mapping of the client configuration, according to its instrument type.
- What to do: nothing is needed if the instrument mapping is enough; otherwise add the
histosheet to the classification file (Default rules, §1.3).
CLS-024 — Category without a balance-sheet side
- Level, effect:
WARNING,FLAG - Message:
<n> accounting category(ies) of '<file>' start with no known balance-sheet word (<categories>); the balance-sheet side is left empty. - Cause: an accounting category of the form
<Balance sheet> <Counterparty>starts with no known balance-sheet word. One warning per file gives the number of categories and their names. - Consequence: the category’s balance-sheet side (asset or liability) is left empty: its deals belong to neither side.
- What to do: start the name of the categories quoted with a recognised balance-sheet word and import again (Default rules, §1.3).
CLS-025 — Blank account flags (generated classification)
- Level, effect:
WARNING,FLAG - Message:
Classification '<classification>' was generated from a referential, so its <n> account(s) carry no financial-operation, modelled-asset, EVE, NII, rate-sensitivity, sign or MV flag; false and 0 are used. - Cause: the classification workbook is generated by the application from a referential (zip import with
classificationId, or linked draft): the referential does not carry columns 4 to 12 ofmapping_compta(financial operation, modelled asset,Gross Carrying Amount, nominal, EVE, NII, rate-sensitive, sign, MV), left blank. One warning per classification gives the number of accounts. - Consequence: the engine reads these cells as
falseand0for every account: no account is a financial operation nor a modelled asset, and the ledger reconciliation then puts every line out of scope. - What to do: if these flags matter to you, import with a classification file that fills them in rather than a referential (Default rules, §5).
BAL — Balance, ledger, strategies and prefixed cash flows
The prefixed cash flow file, the accounting balance, the coverage of the ledger accounts and the assignment of balance lines to outflow strategies (Prefixed cash flows, Accounting balance, Assignment of balance lines).
BAL-001 — Prefixed cash flow file without a sheet
- Level, effect:
ERROR,FILE - Message:
Cash flow file '<file>' has no sheet. - Cause: the prefixed cash flow workbook (
CASHFLOWSslot) holds no readable sheet. - Consequence: no prefixed cash flow is read; the import goes on without prefixing, and the missing prefixed data is reported by VAL-003.
- What to do: provide the
Historique Rate Setextraction saved as.xlsxwith its data sheet, then import again (Prefixed cash flows).
BAL-002 — Prefixed cash flow file unreadable
- Level, effect:
ERROR,FILE - Message:
Unable to read cash flow file '<file>': <cause> - Cause: the prefixed cash flow workbook cannot be opened (corrupted file, old
.xlsformat, another kind of file); the cause follows. - Consequence: no prefixed cash flow is read; the import goes on without prefixing (VAL-003).
- What to do: open the file in Excel, save it as
.xlsxand import again (Prefixed cash flows).
BAL-003 — Several prefixed cash flow sheets
- Level, effect:
WARNING,FILE - Message:
Cash flow file '<file>' has <n> sheets with a cash flow header (<sheets>); only sheet '<sheet>' is read. - Cause: several sheets of the workbook carry a prefixed cash flow header (
Deal No,action_dt…). - Consequence: only the first sheet in alphabetical order is read; the cash flows of the other sheets are ignored.
- What to do: keep a single prefixed cash flow sheet in the workbook, or merge them into one (Excel workbooks).
BAL-004 — Prefixed cash flow header not found
- Level, effect:
WARNING,FLAG - Message:
No header row ('Deal No', ..., 'action_dt', 'rate') found in cash flow file '<file>'; reading data from row 3. - Cause: no row of the sheet read contains
Deal Nooraction_dt: the file does not look like the expected extraction. - Consequence: data is read from the third row on, by column position; title rows may then be rejected (BAL-005).
- What to do: check that the file is the
Historique Rate Set - Vue prochain rate setextraction, with its header row (Prefixed cash flows).
BAL-005 — Prefixed cash flow row skipped
- Level, effect:
ERROR,LINE - Message:
Cash flow row <n> of sheet '<sheet>' skipped: <cause> - Cause: the date (
action_dt), the rate or the frequency of the row cannot be read; the cause follows and the raw row is in the details. - Consequence: the row is skipped; the deal it concerns has no known fixing and its first coupon is projected.
- What to do: fix the faulty cell (a real Excel date, a numeric rate) and import again (Prefixed cash flows).
BAL-006 — Balance sheet missing
- Level, effect:
ERROR,STOP - Message:
Sheet '<sheet>' missing in accounting file '<file>'. Sheets present: <sheets> - Cause: the accounting balance is an Excel workbook without an
i1-balancesheet. - Consequence: the import fails (task
FAIL); nothing is imported. - What to do: name the balance sheet
i1-balance(exact name) and import again (Accounting balance).
BAL-007 — Balance format not supported
- Level, effect:
ERROR,STOP - Message:
Accounting file '<file>' has an unsupported format; expected an .xlsx workbook or a delimited .txt / .csv file. - Cause: the balance file is neither an
.xlsxworkbook nor a delimited text file (.txt,.csv). - Consequence: the import fails (task
FAIL); nothing is imported. - What to do: provide the balance as
.xlsx(sheeti1-balance) or as delimited text, then import again (Accounting balance).
BAL-008 — Balance unreadable
- Level, effect:
ERROR,STOP - Message:
Unable to read accounting file '<file>': <cause> - Cause: the balance file cannot be read (corrupted workbook, unexpected encoding or content); the cause follows.
- Consequence: the import fails (task
FAIL); nothing is imported. - What to do: open and save the file again (as
.xlsx, or as UTF-8 text without BOM), then import again (Accounting balance).
BAL-009 — Excel balance row skipped
- Level, effect:
ERROR,LINE - Message:
Accounting row <n> of sheet '<sheet>' skipped: <cause> - Cause: a row of the
i1-balancesheet has a blank or unreadable account, label, amount or date; the cause follows. - Consequence: the balance line is skipped: it counts neither in the reconciliation nor in the modelled balance lines.
- What to do: fix the row (numeric amount, Excel date or
ddMMyyyytext) and import again (Accounting balance).
BAL-010 — Text balance line skipped
- Level, effect:
ERROR,LINE - Message:
Accounting line <n> skipped: <cause> - Cause: a line of the delimited text balance cannot be read (unreadable amount, missing date or a date not in
ddMMyyyy…); a header line added at the top of the file falls here too. - Consequence: the balance line is skipped.
- What to do: fix the line, remove any title line (the file has no header) and import again (Accounting balance).
BAL-011 — Ledger accounts without a type
- Level, effect:
WARNING,FLAG - Message:
<n> of the <total> ledger account(s) in '<file>' have no type: no line of the classification (mapping_compta) covers them, nor any accountingMapping key: <classes>. They count as balance-sheet accounts, to be covered by deals or a run-off model; add a classification line for each (Bilan Actif, Passif, HB or Résultat). - Cause: accounts of the balance are covered neither by a
mapping_comptaline nor by anaccountingMappingkey of the configuration; the message groups them by class, with their number and balance. - Consequence: nothing is lost; these accounts are treated as balance-sheet accounts, which deals or a run-off model must cover in the reconciliation.
- What to do: add a classification line for each (
Bilan: Actif, Passif, HB or Résultat), or type the class inaccountingMapping(Balance coverage).
BAL-012 — Outflow strategy prefix listed twice
- Level, effect:
WARNING,FLAG - Message:
Outflow strategy for account prefix '<prefix>' is listed <n> times; the first is applied, the others are ignored. - Cause: several strategies of
outflowStrategiesin the outflow model have the same prefix reference. - Consequence: the first strategy listed applies to the prefix’s accounts; the following ones are ignored.
- What to do: keep a single strategy per prefix in
model_*.json(Assigning balance lines).
BAL-013 — Account matched by several strategies
- Level, effect:
WARNING,FLAG - Message:
Account <account> matches the outflow strategies <strategies>; it is modelled once, with the longest prefix <prefix>. - Cause: the account of a balance line starts with the prefix of several strategies of the outflow model.
- Consequence: the line is modelled once, with the strategy whose prefix is the longest.
- What to do: nothing if intended; otherwise adjust the strategy prefixes so that each account has only one (Assigning balance lines).
BAL-014 — Decimal deal number (prefixed cash flows)
- Level, effect:
WARNING,FLAG - Message:
<n> cash-flow line(s) of '<file>' have a deal number with a decimal part (e.g. '<example>'); its integer part is used. - Cause: the deal number of a prefixed cash flow line is a numeric cell with a decimal part. One warning per file gives the number of lines and an example.
- Consequence: the number is truncated to its integer part (and overflows above 2,147,483,647): the cash flow may be attached to another deal.
- What to do: write the deal numbers as text, without decimals, and import again (Default rules, §1.4).
BAL-015 — Prefixed cash flow without a rate frequency
- Level, effect:
WARNING,FLAG - Message:
<n> cash-flow line(s) of '<file>' have a blank basis rate frequency; the repricing frequency is left empty, so they never reprice. - Cause: the basis rate frequency of a prefixed cash flow line is blank. One warning per file gives the number of lines.
- Consequence: no review frequency is set: the cash flows never reprice and behave as fixed-rate flows. That is the expected behaviour for a
NONEbasis. - What to do: fill in the frequency of the floating lines and import again; nothing is needed for fixed-rate lines (Default rules, §1.4).
BAL-016 — Modelled balance lines in EUR
- Level, effect:
WARNING,FLAG - Message:
The accounting balance carries no currency; EUR is used for the <n> modelled balance line(s) of '<file>'. - Cause: always: the accounting balance has no currency column. One warning per file gives the number of modelled lines.
- Consequence: each modelled balance line is booked in
EUR. - What to do: nothing is needed if the balance is in euros; otherwise report it, the file cannot yet carry a currency (Default rules, §1.4).
BAL-017 — Balance lines on counterparty DEFAULT
- Level, effect:
WARNING,FLAG - Message:
The accounting balance carries no counterparty; counterparty 'DEFAULT' (CORPORATE) is used for the <n> modelled balance line(s) of '<file>'. - Cause: always: the accounting balance gives no counterparty. One warning per file gives the number of modelled lines.
- Consequence: each modelled balance line is booked on counterparty
DEFAULT, typeCORPORATE(deals without a counterparty areRETAILratedA, see TRX-066). - What to do: nothing is needed; the balance cannot carry a counterparty (Default rules, §1.4).
BAL-018 — Balance line without an outflow strategy
- Level, effect:
WARNING,FLAG - Message:
<n> balance line(s) of '<file>' (total <total>) match no outflow strategy and are not modelled: <accounts>. - Cause: no outflow strategy covers the account of an accounting balance line. One warning per file gives the number of lines, their total and the accounts.
- Consequence: the line is not modelled as a transaction: its balance enters neither the cash flows nor the metrics. That is normal for an account already covered by deals, off-balance-sheet or in the P&L.
- What to do: check the accounts quoted: add an outflow strategy for those that must be modelled (Default rules, §1.4).
RUN — Launch and lifecycle of a generation
The settings of a simulation, the errors that stop the whole cash flow generation and the comparison of situations (Running simulations).
RUN-001 — Custom shock incomplete
- Level, effect:
ERROR,STOP - Message:
The custom shock needs a shape (parallel, short or long) and a size in basis points - Cause: a custom simulation declares a rate shock without its shape (parallel, short, long) or without its size in basis points.
- Consequence: the generation goes
ERRORSbefore any cash flow is computed. - What to do: complete the shock’s shape and size, then launch again (Scenarios of a custom simulation).
RUN-002 — Growing balance sheet incomplete
- Level, effect:
ERROR,STOP - Message:
The growing balance sheet needs a roll horizon and an annual growth rate - Cause: a custom simulation chooses a growing balance sheet without a roll horizon or without an annual growth rate.
- Consequence: the generation goes
ERRORSbefore any cash flow is computed. - What to do: fill in the horizon and the growth rate, then launch again (Balance sheet of a custom simulation).
RUN-003 — Calculation without an evaluation context
- Level, effect:
ERROR,STOP - Message:
context is empty - Cause: the calculation request carries no evaluation context (rate curves).
- Consequence: the generation goes
ERRORS; no cash flow is computed. - What to do: check that the situation has an evaluation context in the
Evaluation Contexttab; import it again if needed, then launch again (Running simulations).
RUN-004 — Cash flow generation failed
- Level, effect:
ERROR,STOP - Message:
Cash flow generation failed: <cause> - Cause: an unexpected error stopped the whole generation; the cause is often
internal error (details in the risk-engine log). - Consequence: the generation goes
ERRORS; no cash flow is kept. - What to do: launch the generation again; if the error persists, report it with the situation and the simulation’s settings.
RUN-005 — Calculation results not saved
- Level, effect:
ERROR,STOP - Message:
Cash flow results could not be saved: <cause> - Cause: the engine could not write the computed cash flows to the file store.
- Consequence: the generation goes
ERRORS; no cash flow is loaded. - What to do: launch the generation again; if the error persists, report it with the message.
RUN-006 — Result file corrupted
- Level, effect:
ERROR,STOP - Message:
The cash-flow engine's result file is corrupted (checksum mismatch); no cash flows were loaded. Run the generation again. - Cause: the result file read back by risk-app does not match its checksum, or is missing.
- Consequence: the generation goes
ERRORS; no cash flow is loaded. - What to do: launch the generation again; if the error recurs, report it.
RUN-007 — Results not saved
- Level, effect:
ERROR,STOP - Message:
<error type>: <cause> - Cause: risk-app could not save the engine’s answer; the message is the raw type and text of the error, sometimes
null. - Consequence: the generation goes
ERRORS; its cash flows are not saved. - What to do: launch the generation again; if the error persists, report it with the full message.
RUN-008 — Settlement date differs across situations
- Level, effect:
WARNING,FLAG - Message:
Settlement date differs across the compared situations: <dates> - Cause: the same deal carries different settlement dates in the compared generations.
- Consequence: nothing is lost; the comparison matches versions of the deal that do not start on the same date.
- What to do: check the deal’s settlement date in the extractions of both situations.
RUN-009 — risk-engine did not answer in time
- Level, effect:
ERROR,STOP - Message:
risk-engine did not answer within <timeout>; the run is marked failed. Run it again, and contact support if it fails the same way. - Cause: a cash-flow generation or a reporting stayed in progress past the timeout (2 hours by default) without an answer from the engine; risk-app ends it. The anomaly’s type is
Timeout, its objectCashFlowGenerationorReportingGeneration. - Consequence: the generation or reporting goes to
ERRORS, with a failure notification; no result is stored. - What to do: run it again; if it fails the same way, report it to support (Running simulations).
RUN-010 — Counterparty without turnover (solvency)
- Level, effect:
WARNING,FLAG - Message:
<n> counterparty(ies) have no turnover; <class turnover> is used for the exposure class (corporates become SME) and <correlation turnover> for the size adjustment. - Cause: the solvency calculation (Basel engine) finds no turnover for a counterparty; a single warning per run gives the number of counterparties concerned.
- Consequence: a turnover of 10,000 is used for the exposure class, so a
CORPORATEcounterparty is treated as an SME; 5 M is used for the correlation, which neutralises the size adjustment. The capital requirements of these counterparties depend on it; the IRRBB metrics are not affected. - What to do: fill in the turnover of the counterparties concerned and run the solvency calculation again (Default rules, §3.3).
RUN-011 — Amortizable loan without a number of payments (solvency)
- Level, effect:
WARNING,FLAG - Message:
<n> amortizable loan(s) have no number of payments (<deals>); a Basel maturity of 0 years is used. - Cause: an amortizable loan has no number of payments when its Basel maturity is computed; the warning gives the number of loans and their references.
- Consequence: zero payments are used, i.e. a Basel maturity of 0 years: the capital requirement of these loans is computed on the shortest maturity. The IRRBB metrics are not affected.
- What to do: fill in the payment frequency and the maturity of the loans listed so that their number of payments can be computed, then import again (Default rules, §3.3).
RUN-012 — Transaction without a Basel risk profile
- Level, effect:
WARNING,FLAG - Message:
<n> transaction(s) have no Basel risk profile (<transactions>); they are left out of the solvency result. - Cause: the Basel engine cannot compute a transaction’s risk profile: a calculation error, a nil exposure, or a product with no risk parameter generator (anything but a loan); a single warning per run gives the number of transactions and their references.
- Consequence: these transactions are missing from the solvency result, which stays
PROCESSED: their capital requirement is not counted. The IRRBB metrics are not affected. - What to do: for a loan, check its risk data (exposure, counterparty, schedule); other products are not handled by the solvency calculation, and the warning says so (Default rules, §3.3).
RUN-013 — Run without simulation settings
- Level, effect:
WARNING,FLAG - Message:
The run states no settings; the import's balance-sheet evolution (<evolution>), every regulatory scenario, no custom shock and the post-shock floor are used. - Cause: the cash flow generation request (or an official IRRBB run) carries no simulation settings (
runSettings); one warning per run. - Consequence: the defaults apply: the balance-sheet evolution declared at import, every regulatory scenario, no custom shock and the regulatory post-shock floor. The figures are those of these settings; the message gives the balance-sheet evolution used.
- What to do: if these are not the settings you want, run the simulation again stating the balance-sheet evolution, the scenarios, the custom shock and the floor (Default rules, §5).
RUN-014 — Simulation without a scenario
- Level, effect:
WARNING,FLAG - Message:
The simulation names no scenario; every regulatory scenario (<scenarios>) is used. - Cause: the simulation settings are present but name no scenario (
scenariosnot sent); an empty list is refused instead. One warning per run. - Consequence: every regulatory scenario is computed, as listed by the message; the run’s duration and results then cover each of them.
- What to do: if only some scenarios are wanted, run the simulation again choosing them; otherwise nothing needs to be done (Default rules, §5).
RUN-015 — Post-shock floor not stated
- Level, effect:
WARNING,FLAG - Message:
The simulation does not say whether shocked rates are floored; the regulatory post-shock floor is used. - Cause: the simulation settings do not say whether shocked rates are floored (
postShockFloormissing); one warning per run. - Consequence: shocked rates are floored at the regulatory floor: a downward shock does not go below it, which limits the fall in rates and so the scenario’s effect on EVE and NII.
- What to do: if shocked rates must not be floored, run the simulation again with the floor turned off; otherwise nothing needs to be done (Default rules, §5).
RUN-016 — Rate projection mode not stated
- Level, effect:
WARNING,FLAG - Message:
The run names no rate projection mode; FORWARD (along the forward curve) is used. - Cause: the cash flow generation request states no projection mode for floating rates (
rateProjectionMode); one warning per run. - Consequence: the
FORWARDmode is stored on the generation and sent to the engine: future floating coupons are projected along their index’s forward curve, not at the last known rate. - What to do: if floating rates must stay at their last known fixing, run the generation again in
LAST_FIXINGmode; otherwise nothing needs to be done (Default rules, §5).
RUN-018 — Transaction without a reference scenario row
- Level, effect:
WARNING,FLAG - Message:
<n> transaction(s) have no row for the reference scenario '<scenario>'; their deltas are left empty. - Cause: when a generation’s metrics are computed, a transaction has no row for the reference scenario; one warning per request gives the number of transactions.
- Consequence: the EVE, NII and market value deltas of these transactions stay empty: they are not shown, and the parquet export leaves them empty (
null). - What to do: check that the reference scenario is among the computed scenarios and that these transactions have cash flows under it; run the generation again if needed (Default rules, §5).
RUN-020 — Cash flows matching no deal
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) of <reference count> transaction reference(s) returned by the engine match no deal (<references>); they are not stored. - Cause: the transaction reference of a group of cash flows returned by the engine matches no transaction of the generation; a single warning per run gives the number of cash flows and references.
- Consequence: these cash flows are not stored: they are missing from the generation’s cash flow count, metrics, gap and parquet export.
- What to do: report it with the references listed: they point to a mismatch between the portfolio sent to the engine and the generation’s (Default rules, §5).
RUN-021 — Duplicate transaction reference
- Level, effect:
WARNING,FLAG - Message:
<n> transaction reference(s) are carried by several deals (<references>); the first deal is used for their cash flows and for the maturity shown with the metrics. - Cause: several transactions of a generation share one reference: when the cash flows returned by the engine are attached (one warning per run) and when the maturity is shown with the metrics (one warning per request).
- Consequence: every cash flow of the reference is attached to the first transaction, and the maturity shown is the first one read: the metrics and the gap per transaction are wrong for the duplicates, the totals stay complete.
- What to do: give each deal a unique reference in the import files and import again (Default rules, §5).
RUN-022 — Several evaluation dates for one run
- Level, effect:
WARNING,FLAG - Message:
The engine returned <n> evaluation date(s) for one run (<dates>); the run is stored as it is. - Cause: the contexts of the engine’s response carry no evaluation date, or several distinct dates; one warning per run.
- Consequence: the generation is stored as it is,
PROCESSED: its cash flows do not all relate to the same evaluation date, which makes comparisons between scenarios doubtful. - What to do: check the dates of the import’s curves and contexts, then run the generation again; report it if the import is consistent (Default rules, §5).
RUN-023 — Solvency calculation errors not kept
- Level, effect:
WARNING,FLAG - Message:
The solvency calculation returned <n> error(s) (<errors>); only its status is stored. - Cause: the engine’s answer to the solvency calculation carries errors; one warning per run gives their number and text.
- Consequence: only the calculation’s status is stored; the detail of the errors is kept only in this warning. The solvency results may be incomplete.
- What to do: read the errors listed, correct the data concerned and run the solvency calculation again (Default rules, §5).
RUN-024 — Run contract version not read by the engine
- Level, effect:
ERROR,STOP - Message:
The run follows contract version <version>, which this engine does not read (accepted: <versions>); deploy a risk-engine and a risk-app of the same contract. - Cause: risk-app and risk-engine are deployed at versions that do not share the same run contract.
- Consequence: nothing is computed; the run ends in failure.
- What to do: no action on the data: report it to the platform administrator, who deploys compatible versions; then launch the calculation again.
RUN-025 — Run input unreadable
- Level, effect:
ERROR,STOP - Message:
The run's input <object> could not be read: <cause> - Cause: the run’s input, written by risk-app to object storage, is missing or unreadable for the engine.
- Consequence: nothing is computed; the run ends in failure.
- What to do: launch the calculation again; if the error persists, report it with the message.
CFW — Cash flows, curves and rates, balance-sheet projection
Computing the cash flows of each deal, reading rates on the curves of the context and projecting the balance sheet. These anomalies do not stop the generation: the deal concerned is left out or its cash flows are partial (Calculation framework).
CFW-001 — No generator for the product
- Level, effect:
ERROR,LINE - Message:
Cashflow Generator doest not exists for product: <product> - Cause: the engine has no cash flow generator for the deal’s product.
- Consequence: the deal has no cash flow in the generation; the others are computed.
- What to do: check the product the
productsmapping gives this instrument (Products without a generator); if the product must be computed, report it.
CFW-002 — Ambiguous generators
- Level, effect:
ERROR,LINE - Message:
Ambiguous cashflow generators for product <product>: <generators> - Cause: several cash flow generators of the engine accept the deal’s product; this is an engine defect.
- Consequence: the deal has no cash flow in the generation.
- What to do: report the anomaly with the product and the deal’s reference.
CFW-003 — Incompatible generator
- Level, effect:
ERROR,LINE - Message:
Generator <generator> cannot be used for product <product> - Cause: the generator kept for the product name does not accept this deal’s product; this is an engine defect.
- Consequence: the deal has no cash flow in the generation.
- What to do: report the anomaly with the message and the deal’s reference.
CFW-004 — Cash flows of a deal not generated
- Level, effect:
ERROR,LINE - Message:
Cash flows of this transaction could not be generated: <cause> - Cause: an error occurred while computing the deal’s cash flows; the cause is named (a rate that cannot be read on a curve, for instance) or reads
internal error (details in the risk-engine log). - Consequence: the deal has no cash flow in the generation; the others are computed.
- What to do: fix the data the cause points at (curve, index, deal rate); for an internal error, run again, then report it with the deal’s reference (Calculation Logs).
CFW-005 — Bucket strategy without a curve
- Level, effect:
ERROR,LINE - Message:
Outflow strategy '<strategy>' has no run-off curve - Cause: a
BucketOutflowStrategyof the outflow model has nocurve(maturity → share). - Consequence: the deals run off by this strategy have no cash flow.
- What to do: fill in the strategy’s run-off curve in
model_*.jsonand import again (Run-off laws).
CFW-006 — Run-off shares not totalling 100 %
- Level, effect:
ERROR,LINE - Message:
The shares of outflow strategy '<strategy>' must total 1 but total <total>: the run-off would report <percentage>% of the position - Cause: the shares of a bucket strategy’s curve do not total 1.
- Consequence: the deals run off by this strategy have no cash flow, rather than a wrong outstanding.
- What to do: fix the curve’s shares in
model_*.jsonso that they total 1 (100 %) and import again (Run-off laws).
CFW-007 — Deposit without an outflow strategy
- Level, effect:
ERROR,LINE - Message:
No outflow strategy found for product type '<type>' and product '<product>' - Cause: no strategy of the outflow model matches the product type and product of this non-maturity deposit.
- Consequence: the deposit has no cash flow in the generation.
- What to do: add a strategy for this product to the outflow model and import again (Run-off laws).
CFW-008 — Unknown outflow strategy
- Level, effect:
ERROR,LINE - Message:
Unknown Outflow Strategy - Cause: the deposit’s strategy is neither a script, a bucket nor a linear law.
- Consequence: the deposit has no cash flow in the generation.
- What to do: give the strategy a known
@type(LinearOutflowStrategy,BucketOutflowStrategy,ScriptOutflowStrategy) (Outflow model).
CFW-009 — Script function not found
- Level, effect:
ERROR,PARTIAL - Message:
Outflow strategy '<strategy>' names script function '<function>' (<script>), which is not a function of the bundled scripts; expected one of <functions> - Cause: a script strategy names a function that does not exist in the scripts shipped with the engine.
- Consequence: the deposit has no behavioural run-off flows; its other flows are kept.
- What to do: set the strategy’s
function(andscriptName) to one of the functions listed, then import again (Run-off laws).
CFW-010 — Behavioural script failed
- Level, effect:
ERROR,PARTIAL - Message:
Deposit behavioural script execution failed: <cause> - Cause: the script of a deposit’s run-off law stopped on an error; the cause is the script’s message. The known cases have their own code: CFW-011, CFW-012, CFW-013.
- Consequence: the deposit has no behavioural run-off flows; its other flows are kept.
- What to do: check the parameters of the script strategy; if the message does not point at data, report it with the deposit’s reference.
CFW-011 — Script stopped by its time limit
- Level, effect:
ERROR,PARTIAL - Message:
Deposit behavioural script execution failed: Script stopped after exceeding its time limit of <n> ms - Cause: the script of a deposit’s run-off law ran longer than its maximum time.
- Consequence: the deposit has no behavioural run-off flows; its other flows are kept.
- What to do: run the generation again; if the error repeats, report it with the strategy and the deposit’s reference.
CFW-012 — Script stopped by its statement limit
- Level, effect:
ERROR,PARTIAL - Message:
Deposit behavioural script execution failed: Script stopped after exceeding its limit of <n> statements - Cause: the script of a deposit’s run-off law ran more statements than allowed (a loop that does not end, for instance over too long a horizon).
- Consequence: the deposit has no behavioural run-off flows; its other flows are kept.
- What to do: check the strategy’s parameters (horizon, frequency); if they are right, report the anomaly with the deposit’s reference.
CFW-013 — Script function failed
- Level, effect:
ERROR,PARTIAL - Message:
Deposit behavioural script execution failed: Failed to execute script function '<function>' (<script>) - Cause: the function of the run-off law’s script failed for another reason.
- Consequence: the deposit has no behavioural run-off flows; its other flows are kept.
- What to do: check the strategy’s parameters; if the error persists, report it with the function and the deposit’s reference.
CFW-014 — Deposit without a rate
- Level, effect:
WARNING,FLAG - Message:
No rate on deposit '<deal>'; treated as a non-interest-bearing deposit at a fixed 0 % - Cause: a non-maturity deposit was imported without a rate.
- Consequence: it is treated as a non-interest-bearing deposit: no interest, capital at a fixed 0 % rate.
- What to do: nothing if the deposit bears no interest; otherwise give it a rate in the file or the strategy, then import again (Reporting warnings).
CFW-015 — Term product without a rate
- Level, effect:
WARNING,PARTIAL - Message:
No rate on term product '<deal>'; capital flows emitted, interest skipped - Cause: a loan, a borrowing or a term deposit has no rate.
- Consequence: its capital flows are generated, its interest is not.
- What to do: fill in the deal’s rate in the extraction (or in the deal editor) and import again (Loans and term deposits).
CFW-016 — Repo without a rate
- Level, effect:
WARNING,PARTIAL - Message:
No rate on repo '<deal>'; capital flows emitted, interest skipped - Cause: a repo has no usable rate.
- Consequence: its capital flows are generated, its interest is not.
- What to do: fill in the repo’s rate in the extraction and import again (Repos).
CFW-017 — Swap floating coupon skipped
- Level, effect:
ERROR,PARTIAL - Message:
Floating coupon [<start>..<end>] skipped, forward rate could not be evaluated: <cause> - Cause: the forward rate of a coupon of a swap’s floating leg cannot be read on its index curve; the cause follows.
- Consequence: this coupon is missing; the swap’s other flows are kept.
- What to do: fix the curve or the index mapping the cause points at and import again (Resolving rate labels).
CFW-018 — Swap leg without a rate
- Level, effect:
ERROR,LINE - Message:
Swap leg has a null rate object - Cause: a leg of the swap has no rate.
- Consequence: the swap has no cash flow in the generation.
- What to do: check the rate columns of both legs in the extraction and the swap mapping, then import again (Swaps).
CFW-019 — Swap cash flow without a date
- Level, effect:
ERROR,LINE - Message:
CashFlow date is null - Cause: a cash flow of the swap has no date, for lack of a usable start date, maturity or frequency.
- Consequence: the swap has no cash flow in the generation.
- What to do: check the swap’s dates and frequencies in the extraction and import again (Swaps).
CFW-020 — Security premium in another currency
- Level, effect:
ERROR,LINE - Message:
Premium currency <currency> is different from Notional currency <currency> - Cause: a security’s premium is not in the currency of its notional.
- Consequence: the security has no cash flow in the generation.
- What to do: fix the currency of the security or of its premium and import again (Securities).
CFW-021 — Linear law without a period
- Level, effect:
ERROR,LINE - Message:
Number of time buckets cannot be zero for linear outflow strategy - Cause: the deal’s linear law yields no period: a zero horizon (
timeHorizon) or one shorter than the frequency. - Consequence: the deal has no cash flow in the generation.
- What to do: fix
frequencyandtimeHorizonof the linear strategy inmodel_*.jsonand import again (Run-off laws).
CFW-022 — No certain floating coupon
- Level, effect:
WARNING,FLAG - Message:
No Certain Floating Interest CashFlow for transaction '<deal>' - Cause: an original floating deal has no already-fixed floating coupon to reprice its capital against.
- Consequence: nothing is lost; the capital keeps its contractual date as repricing date.
- What to do: check the date of the last fixing and the deal’s frequency (prefixed cash flows included) (Floating cash flows).
CFW-023 — Several certain floating coupons
- Level, effect:
WARNING,FLAG - Message:
More than 1 Certain Floating Interest CashFlow for transaction '<deal>' [dates=<dates>] - Cause: a floating deal has more than one already-fixed floating coupon; the end dates of those coupons are listed.
- Consequence: nothing is lost; the capital repricing may not fall on the expected date.
- What to do: check the deal’s review frequency and dates (Floating cash flows).
CFW-024 — Discount index not defined
- Level, effect:
ERROR,LINE - Message:
Discount rate index is not defined - Cause: a discount factor is asked for without a discount index: the evaluation context carries none.
- Consequence: the deal concerned is left out of the generation (or loses the flow being computed).
- What to do: pick a discount factor index at import and import again (Discount factor index).
CFW-025 — Discount rate below -100 %
- Level, effect:
ERROR,LINE - Message:
Discount rate <= -100% (1 + rate <= 0) - Cause: the rate read on the discount curve is at or below -100 %, usually under a strong down shock on an already low curve.
- Consequence: the deal concerned is left out of the generation (or loses the flow being computed).
- What to do: check the points of the discount curve (a rate entered as a percentage instead of a decimal, for instance) (Post-shock floor).
CFW-026 — Index not defined
- Level, effect:
ERROR,LINE - Message:
Index is not defined - Cause: a rate is asked for on a curve without an index: the deal or the strategy carries none.
- Consequence: the deal concerned is left out of the generation (or loses the flow being computed).
- What to do: check the index of the deal’s floating rate and the
indexesmapping (Resolving rate labels).
CFW-027 — Evaluation context without curves
- Level, effect:
ERROR,LINE - Message:
EvaluationContext is defined with no curves at all - Cause: the generation’s evaluation context holds no rate curve.
- Consequence: every deal that needs a rate is left out of the generation.
- What to do: check the situation’s rate curve file (
Evaluation Contexttab) and import again with a file that yields curves (Rate curves).
CFW-028 — No curve for the index
- Level, effect:
ERROR,LINE - Message:
No interest rate curve defined for index '<index>' - Cause: no curve of the evaluation context carries the index asked for (discount index or the index of a rate).
- Consequence: the deal concerned is left out of the generation (or loses the flow being computed). A coupon of a term deposit, an in-fine loan or a repo is skipped with the deal kept: that case is reported by CFW-090, a
WARNING. - What to do: add the curve to the rate file, or fix the
indexes/compoundCurvemapping that names it, then import again (Index consistency checks).
CFW-031 — Floating rate without a curve
- Level, effect:
WARNING,FLAG - Message:
Floating rate '<index>' matches no curve of the evaluation context: the deal is valued at its current rate (<rate>) and is insensitive to the shocks. - Cause: the index of a floating-rate deal names no curve of the evaluation context (label missing from the
indexesmapping, or curve missing from the rate curve file). - Consequence: the deal is computed at its current rate, without projection: its flows do not react to the rate shocks.
- What to do: map the label to a curve in the
indexesmapping, or add the curve to the rate curve file, then import again (Rate label resolution).
CFW-032 — Non-positive FX fixing
- Level, effect:
ERROR,LINE - Message:
Fixing <value> of curve '<curve>' is not positive and cannot be inverted - Cause: converting a flow to the pivot currency reads a zero or negative fixing on the FX curve, which cannot be inverted.
- Consequence: the transaction has no flows in this calculation.
- What to do: correct the FX curve’s quote in the rate curve file and import again.
CFW-033 — Missing FX curve
- Level, effect:
ERROR,LINE - Message:
No fixing curve for currency couple <couple> - Cause: a flow must be converted to the pivot currency, but the evaluation context has no FX curve for that currency pair, in either direction.
- Consequence: the transaction has no flows in this calculation.
- What to do: add the pair’s FX curve to the rate curve file, or check the deal’s currency, then import again.
CFW-034 — Curve without a reference date
- Level, effect:
ERROR,LINE - Message:
Reference date is null - Cause: a curve read for the transaction has no quotation date (for instance a
ratedatetyped as text in a workbook). - Consequence: the transaction has no flows in this calculation.
- What to do: give the
ratedatecolumn a real date in the rate curve file and import again (Rate curves).
CFW-035 — Missing reading date
- Level, effect:
ERROR,LINE - Message:
Target date is null - Cause: the engine reads a curve at a missing date, usually a date of the deal (maturity, payment) left empty at import.
- Consequence: the transaction has no flows in this calculation.
- What to do: check the deal’s dates in the situation’s Portfolio tab and in the extraction, then import again.
CFW-036 — Date before the curve
- Level, effect:
ERROR,LINE - Message:
Target date '<date>' is before reference date '<curve date>' - Cause: the engine reads a curve at a date before its quotation date, for instance for a deal with a date before the reference date.
- Consequence: the transaction has no flows in this calculation.
- What to do: check the deal’s dates and the curves’ quotation date against the reference date.
CFW-037 — Forward without a start date
- Level, effect:
ERROR,LINE - Message:
Forward date is null - Cause: a forward rate is asked for without a period start date, usually because a date of the deal is missing.
- Consequence: the transaction has no flows in this calculation.
- What to do: check the deal’s dates (start, maturity, payments) and import again.
CFW-038 — Inverted forward period
- Level, effect:
ERROR,LINE - Message:
Target date '<end date>' is before forward date '<start date>' - Cause: the end of a forward rate period comes before its start, a sign of inconsistent dates on the deal.
- Consequence: the transaction has no flows in this calculation.
- What to do: correct the deal’s dates (start, maturity, first payment) in the extraction and import again.
CFW-039 — Prefixing line not found
- Level, effect:
WARNING,FLAG - Message:
Prefixing line not found - Cause: the current coupon of a floating-rate deal should be read from the prefixed cash flows, but no line of the file carries its number.
- Consequence: the first coupon is projected on the curve instead of the known fixing.
- What to do: check that the prefixed cash flow file holds the deal, under its number without prefix (Prefixed cash flows).
CFW-040 — Several prefixing lines
- Level, effect:
ERROR,FLAG - Message:
Several prefixing lines found - Cause: several lines of the prefixed cash flow file apply to the same deal.
- Consequence: none is used: prefixing is ignored for the deal, whose coupon is projected on the curve.
- What to do: keep a single line per deal in the prefixed cash flow file and import again (Prefixed cash flows).
CFW-041 — Index without a tenor
- Level, effect:
WARNING,FLAG - Message:
Index '<index>' carries no tenor and its curve no refixing period: the next fixing is assumed at the next end of quarter - Cause: neither the deal (index tenor) nor the curve name (
3M,6M,ESTR…) gives the refixing period. - Consequence: the next refixing is assumed at the next end of quarter.
- What to do: map the index tenor column, or name the curve with its period (Curve construction).
CFW-042 — PAR curve without points
- Level, effect:
ERROR,LINE - Message:
Cannot bootstrap a curve with no points - Cause: a curve quoted at par (
PAR) must be converted into a zero-coupon curve, but it has no point. - Consequence: the transaction that reads this curve has no flows in this calculation.
- What to do: complete the curve in the rate curve file, or remove it from
curveQuotations(PAR curves).
CFW-043 — Non-finite PAR rate
- Level, effect:
ERROR,LINE - Message:
Curve point '<point>' has no finite rate: <rate> - Cause: a point of a curve quoted at par has a rate that is not a finite number.
- Consequence: the curve cannot be converted; the transaction that reads it has no flows.
- What to do: correct the point’s quote in the rate curve file and import again (PAR curves).
CFW-044 — Negative PAR tenor
- Level, effect:
ERROR,LINE - Message:
Curve point '<point>' has a negative tenor - Cause: a point of a curve quoted at par has a negative maturity.
- Consequence: the curve cannot be converted; the transaction that reads it has no flows.
- What to do: correct the point’s
timebandin the rate curve file (PAR curves).
CFW-045 — Duplicate PAR pillars
- Level, effect:
ERROR,LINE - Message:
Curve points '<point>' and '<point>' both sit at <n> days - Cause: two points of a curve quoted at par fall on the same number of days.
- Consequence: the curve cannot be converted; the transaction that reads it has no flows.
- What to do: keep a single point per maturity in the curve (PAR curves).
CFW-046 — Fractional swap pillar
- Level, effect:
ERROR,LINE - Message:
Swap pillar '<pillar>' (<n> days) is not a whole number of years of <days per year> days - Cause: a swap point of a curve quoted at par is not a whole number of years.
- Consequence: the curve cannot be converted; the transaction that reads it has no flows.
- What to do: quote swap pillars in whole years, or quote the curve as zero-coupon (PAR curves).
CFW-047 — Inconsistent PAR quotes
- Level, effect:
ERROR,LINE - Message:
Bootstrapping yields a non-positive discount factor at '<point>' (<factor>): the quoted rates are inconsistent - Cause: converting the par curve gives a zero or negative discount factor: the quoted rates are inconsistent with each other.
- Consequence: the curve cannot be converted; the transaction that reads it has no flows.
- What to do: check the curve’s rates around the named point (PAR curves).
CFW-048 — Missing shocked PAR curve
- Level, effect:
ERROR,LINE - Message:
PAR curve '<curve>' of scenario <scenario> has no shocked zero curve: bootstrapping its shocked par rates would put the shock on the par rates - Cause: in a shocked scenario, the shocked zero-coupon curve of a curve quoted at par was not built.
- Consequence: the transaction that reads this curve has no flows in this scenario.
- What to do: internal defect: run the generation again, then report it with the message and the deal’s reference (PAR curves).
CFW-049 — Missing liquidity spread
- Level, effect:
ERROR,LINE - Message:
[Transaction '<reference>'] Liquidity Spread Curve for currency '<currency>' is missing - Cause: the deal carries no liquidity spread and the context has no liquidity spread curve in its currency (the import only adds the EUR one).
- Consequence: the transaction has no flows in this calculation.
- What to do: check the deal’s currency; for a currency other than EUR, add a
LIQUIDITY_SPREADcurve in that currency (Rate curves).
CFW-050 — Unreadable roll rate
- Level, effect:
WARNING,FLAG - Message:
Fixed rate of the rolled deal kept at its original value, its roll rate could not be read: <cause> - Cause: on a constant balance sheet, the rate of a rolled fixed-rate deal cannot be read on the curve; the cause is given.
- Consequence: the rolled deal keeps its original rate.
- What to do: fix the cause (missing or incomplete curve) in the rate curve file (Run-off replacement).
CFW-051 — Curve without points
- Level, effect:
ERROR,LINE - Message:
Rate curve '<curve>' (index <index>) has no points, so no rate can be read from it - Cause: a context curve the deal needs has no point.
- Consequence: the transaction has no flows in this calculation.
- What to do: complete the curve in the rate curve file and import again (Rate curves).
CFW-052 — Floating rate on a fixed-rate computation
- Level, effect:
ERROR,LINE - Message:
Cash flows of transaction '<reference>' could not be generated: its rate is floating, and this interest flow is only computed for a fixed rate. - Cause: an interest flow the engine only computes for a fixed rate belongs to a floating-rate deal.
- Consequence: the transaction has no flows in this calculation.
- What to do: check the deal’s rate type (column mapped to
rateType); if it is indeed floating, report it with the reference.
CFW-053 — Rate without a type
- Level, effect:
ERROR,LINE - Message:
Cash flows of transaction '<reference>' could not be generated: its rate is neither fixed nor floating, so its interest cannot be computed. - Cause: the deal’s rate is neither fixed nor floating, for instance after an entry in the deal editor.
- Consequence: the transaction has no flows in this calculation.
- What to do: give the deal’s rate a type (Add or edit a deal) or correct the extraction and import again.
CFW-054 — Fixed rate without a value
- Level, effect:
ERROR,LINE - Message:
Cash flows of transaction '<reference>' could not be generated: its rate is fixed but has no value, so its interest cannot be computed. - Cause: the deal is fixed-rate but its rate has no value.
- Consequence: the transaction has no flows in this calculation.
- What to do: fill in the deal’s rate in the extraction, or in the deal editor (Add or edit a deal).
CFW-055 — Balance line without a run-off law
- Level, effect:
ERROR,LINE - Message:
Cash flows of this balance-sheet line could not be generated: it has no run-off (outflow) strategy. - Cause: a modelled balance line has no outflow strategy.
- Consequence: the line has no flows in this calculation.
- What to do: check the strategies of the run-off model (
model_*.json) and their prefixes (Assigning balance lines).
CFW-056 — Unsupported run-off law for a balance line
- Level, effect:
ERROR,LINE - Message:
Cash flows of this balance-sheet line could not be generated: its run-off strategy '<strategy>' is neither linear nor by time bucket. - Cause: the strategy of a modelled balance line is neither linear nor by buckets (a script law, for instance, is reserved for deposits).
- Consequence: the line has no flows in this calculation.
- What to do: give the strategy a
LinearOutflowStrategyorBucketOutflowStrategylaw in the run-off model (Run-off laws).
CFW-057 — Curve far from the evaluation date
- Level, effect:
WARNING,FLAG - Message:
Rate curve '<curve>' (index <index>) is dated <date>, <n> days from the evaluation date <evaluation date>; it is the closest curve of its index and is used. - Cause: the index’s curve closest to the evaluation date is more than 10 days (up to 20) away from it; the anomaly’s object is the curve’s reference.
- Consequence: nothing is lost; the curve is used as is.
- What to do: provide quotes dated on the closing date, or check the situation’s closing date (Curve construction).
CFW-058 — Curve too far from the evaluation date
- Level, effect:
ERROR,FLAG - Message:
Rate curve '<curve>' (index <index>) is dated <date>, <n> days from the evaluation date <evaluation date>, more than 20 days; it is the closest curve of its index and is used. - Cause: the index’s curve closest to the evaluation date is more than 20 days away from it; the anomaly’s object is the curve’s reference.
- Consequence: the curve is still used, but the rates read are those of another date.
- What to do: import the situation again with curves quoted on the closing date (Curve construction).
CFW-059 — Rate read outside the curve’s points
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) read curve '<curve>' (index <index>) outside its points [<first point>..<last point>]; the rate of the nearest end point is used (flat extrapolation). - Cause: a cash flow reads a rate before the first point or beyond the last point of a curve; one warning per curve gives the number of cash flows concerned.
- Consequence: the rate of the first (or last) point is extended flat: beyond the last pillar, rates no longer follow the curve’s slope, which weighs on the discounting and the floating coupons of long cash flows.
- What to do: complete the curve with points covering the deals’ maturities (at least the longest one) and import again (Default rules, §2.2).
CFW-060 — Single-point curve
- Level, effect:
WARNING,FLAG - Message:
Curve '<curve>' (index <index>) has a single point (<point>); its rate is used at every maturity. - Cause: a rate curve carries a single pillar; one warning per curve.
- Consequence: the point’s rate is constant across all maturities: the curve is flat, discounting and floating coupons no longer depend on the maturity.
- What to do: supply the curve’s points at every relevant maturity and import again; if a flat curve is intended, nothing needs to be done (Default rules, §2.2).
CFW-061 — Several FX or spread curves for one key
- Level, effect:
WARNING,FLAG - Message:
<n> curves carry '<pair or currency>'; the first one, '<curve used>', is used. - Cause: several FX curves carry the same currency pair, or several
LIQUIDITY_SPREADcurves the same currency; one warning per curve. - Consequence: the first curve of the list is used and the others are ignored: currency conversions or liquidity spreads depend on the order of the curves in the import.
- What to do: keep a single curve per currency pair (or per currency for the liquidity spread) and import again (Default rules, §2.2).
CFW-062 — PAR curve pillar without an instrument
- Level, effect:
WARNING,FLAG - Message:
<n> pillar(s) of PAR curve '<curve>' have no instrument; money market up to 1 year and swap beyond is used. - Cause: a pillar of a curve quoted as par rates (
PAR) has no instrument for its tenor, or the curve has no instrument list; one warning per curve gives the number of pillars. - Consequence: the bootstrap treats these pillars as money-market instruments up to 365 days (ACT/360, simple interest) and as swaps beyond (annual, ACT/360): the zero-coupon curve depends on it.
- What to do: state the instrument of each of the curve’s pillars in its definition; if this split suits you, nothing needs to be done (Default rules, §2.2).
CFW-063 — Missing annual pillars of a PAR curve
- Level, effect:
WARNING,FLAG - Message:
PAR curve '<curve>' has no quote for <n> annual pillar(s) (<tenors>); par rates interpolated between pillars, or the first pillar's rate before it, are used. - Cause: when a
PARcurve is bootstrapped, an annual swap pillar is missing between two swap pillars, or before the first swap pillar beyond the money-market points; one warning per curve gives the missing tenors. - Consequence: the missing par rate is interpolated linearly in years between the neighbouring pillars; before the first swap pillar, that pillar’s rate is extended flat. The zero-coupon curve is built on these rebuilt rates.
- What to do: supply a quote for every annual pillar of the curve; if the interpolation suits you, nothing needs to be done (Default rules, §2.2).
CFW-064 — Currency without a supervisory shock calibration
- Level, effect:
WARNING,FLAG - Message:
Currency '<currency>' of <n> curve(s) has no supervisory shock calibration; the EUR shock sizes (parallel <parallel>, short <short>, long <long>) are used. - Cause: a curve’s currency is missing or is not one of the 11 calibrated currencies (EUR, USD, GBP, JPY, CHF, CAD, AUD, SEK, SGD, HKD, CNY); one warning per run and currency gives the number of curves.
- Consequence: the euro shock sizes apply (parallel 200 bp, short 250 bp, long 100 bp): the regulatory scenarios of these curves, and so the shocked EVE and NII, do not follow their own currency’s calibration.
- What to do: fill in the curves’ currency; for a currency outside the calibration, check that the euro shocks suit you or add a custom shock (Default rules, §2.2).
CFW-065 — Curve without a type
- Level, effect:
WARNING,FLAG - Message:
Curve '<curve>' (index <index>) has no type; it is used unshocked in every scenario. - Cause: a curve has no type (
RATE,FXorLIQUIDITY_SPREAD); one warning per curve. - Consequence: the curve is carried unshocked into every scenario: the deals indexed on it are insensitive to the shocks, their EVE and NII deltas are nil.
- What to do: fill in the curve’s type (
RATEfor a rate curve) and import again (Default rules, §2.2).
CFW-066 — Shocked PAR curve that cannot be built
- Level, effect:
WARNING,FLAG - Message:
PAR curve '<curve>' cannot be bootstrapped under scenario <scenario>; no shocked zero curve is stored for it. - Cause: the base of a shocked
PARcurve does not bootstrap under a scenario; one warning per curve and scenario. - Consequence: no shocked zero-coupon curve is stored for this scenario: reading the curve then fails (CFW-048) for the deals that depend on it.
- What to do: check the curve’s quotes (missing points, outlying rates) and import again (Default rules, §2.2).
CFW-067 — Unreadable liquidity spread curve
- Level, effect:
WARNING,FLAG - Message:
The liquidity spread curve of '<currency>' could not be read for <n> cash flow(s) (<cause>); a liquidity spread of 0 is used and the margin component absorbs it. - Cause: reading the
LIQUIDITY_SPREADcurve fails (empty curve, date before its reference date, missing date); one warning per curve gives the number of cash flows and the cause. - Consequence: the liquidity spread of these cash flows is 0: the interest amount does not change, but its split into rate, liquidity and margin puts the whole liquidity part in the margin.
- What to do: check the currency’s liquidity spread curve (points, reference date) and import again (Default rules, §2.2).
CFW-068 — Index without a tenor in last-fixing projection
- Level, effect:
WARNING,FLAG - Message:
Index '<index>' carries no tenor and its curve no refixing period; a 3-month tenor is used to read the current rate of <n> deal(s) projected at their last known rate. - Cause: in
LAST_FIXINGprojection mode, an index name contains no recognised tenor and its curve has no refixing period; the warning gives the index and the number of deals. - Consequence: the index’s current rate is read over 3 months: the floating coupons of these deals are projected at that rate, even if the index refixes over another period.
- What to do: fill in the curve’s refixing period (or an index name carrying its tenor) and import again (Default rules, §2.2).
CFW-069 — Index tenor read from its name
- Level, effect:
WARNING,FLAG - Message:
The tenor of index '<index>' is read from its name; <tenor> is used, not the curve's refixing period. - Cause: a floating index’s tenor is always looked for first in its name (
estr,eoniaoro/ngive 1 day,12mor1y12 months, then6m,3m,1m), before the curve’s refixing period; one warning per curve. - Consequence: the tenor read from the name prevails over the declared refixing period: a name such as
CMS 21Ycontains1yand gives 12 months,EURIBOR 3M SWAP 10Ygives 3 months. The refixing and current rate of the indexed deals follow this tenor. - What to do: check that the tenor listed is the index’s; otherwise rename the index so that it carries its real tenor (Default rules, §2.2).
CFW-070 — Empty amounts or rates in rolled deals
- Level, effect:
WARNING,FLAG - Message:
<n> rolled deal(s) have empty amounts or rates (<fields>); 0 is used in the copies. - Cause: a deal copied by the balance-sheet projection (new production, repricing) has an empty rate, spread or amount; a single warning per run gives the number of deals and the fields.
- Consequence: the copy carries 0 instead: an unknown fixing or a missing spread becomes a nil rate or spread on the new production, which changes its projected interest.
- What to do: fill in the fields listed on the original deals and import again (Default rules, §3.1).
CFW-071 — Missing global interest amount
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) of deal '<deal>' have no global interest amount; 0 is used. - Cause: the global (
GLOBAL) interest component of a cash flow has no amount; the warning gives the deal and the number of cash flows. - Consequence: 0 is used for this amount: the global interest of these cash flows is nil in the component breakdown.
- What to do: report it with the deal’s reference: this amount should always be computed (Default rules, §3.1).
CFW-072 — Zero or blank current fixing
- Level, effect:
WARNING,FLAG - Message:
<n> floating deal(s) carry a 0 or blank current fixing (<deals>); the running coupon read on their index curve is used. - Cause: a floating rate’s current fixing is blank or 0, including the 0 rate of a floating loan or term deposit that the import turns into a blank value; one warning per file gives the number of deals.
- Consequence: the fixing is treated as unknown: the running coupon is read on the index curve (forward from the evaluation date). A real 0 % fixing is therefore replaced by the curve’s rate, which changes the running coupon’s interest.
- What to do: fill in the current fixing of the deals listed; a fixing that really is nil cannot be told apart from a missing value (Default rules, §1.2, Default rules, §3.1).
CFW-073 — Missing rate spread
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) have no rate spread (<deals>); a spread of 0 is used. - Cause: the spread (margin) of a deal’s rate is missing; one warning per file gives the number of deals.
- Consequence: a spread of 0 is used: the client rate is the index alone, and these deals’ interest carries no margin.
- What to do: fill in the margin of the deals listed (
0if it really is nil) and import again (Default rules, §3.1).
CFW-074 — Missing day count
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) have no day count (<deals>); ACT/365 is used to read their forward rates. - Cause: a deal’s rate has no day count; one warning per file gives the number of deals.
- Consequence: ACT/365 (
EXACT_365) is used to read the forward rate; the coupon calculation still needs a day count, and the deal may then be left out (CFW-004). - What to do: fill in the day count of the deals listed and import again (Default rules, §3.1).
CFW-076 — Fixing ignored on a floating swap leg
- Level, effect:
WARNING,FLAG - Message:
<n> floating swap leg(s) carry a current fixing (<deals>); it is ignored and the running coupon read on the curve is used. - Cause: a swap’s floating leg carries a current fixing; the warning gives the number of legs and the deals.
- Consequence: the fixing is ignored: the leg’s running coupon is read on its index curve, whereas other floating products use their known fixing. The running coupon’s interest may therefore differ from the real fixing.
- What to do: nothing to correct in the data: the warning says that the fixing supplied is not used for swaps (Default rules, §3.1).
CFW-077 — Interest cash flow without a rate type
- Level, effect:
WARNING,FLAG - Message:
<n> interest cash flow(s) have no rate type (<deals>); CERTAIN is used, so they are not shocked. - Cause: an interest cash flow’s rate is missing or has no type (fixed or floating); the warning gives the number of cash flows and the deals.
- Consequence: the cash flow is treated as certain (
CERTAIN) and is not shocked: its interest is the same in every scenario, which reduces the NII sensitivity. - What to do: fill in the rate type (fixed or floating) of the deals listed and import again (Default rules, §3.1).
CFW-078 — Behavioural script without a cash flow result
- Level, effect:
WARNING,FLAG - Message:
Behavioural script '<script>' returned no cash flow result for <n> deposit(s) (<deposits>); they have no behavioural run-off. - Cause: a deposit’s behavioural script returns no cash flow result; the warning gives the script, the number of deposits and their references.
- Consequence: no behavioural cash flow is generated for these deposits: they are missing from the behavioural view (run-off, behavioural EVE and NII).
- What to do: check that the script does return a cash flow result for these deposits, correct it and run the generation again (Default rules, §3.1).
CFW-079 — Several outflow strategies for one product
- Level, effect:
WARNING,FLAG - Message:
<n> outflow strategies match product '<product>' (<strategies>); the first, '<strategy used>', is used. - Cause: several outflow strategies match the same product and origin; a single warning per run.
- Consequence: the first strategy of the list is used for every deposit of the product: their run-off depends on the order of the strategies.
- What to do: keep a single strategy per product and origin and import again (Default rules, §3.1).
CFW-080 — Outflow bucket on the evaluation date
- Level, effect:
WARNING,FLAG - Message:
Outflow strategy '<strategy>' has a bucket '<bucket>' on or before the evaluation date; its share (<share>) of <n> position(s) is not run off. - Cause: a bucket of an outflow strategy falls on or before the evaluation date (for example
0d); a single warning per run gives the bucket’s share and the number of positions. - Consequence: the bucket’s share is not run off: for a deposit, it has neither capital nor interest; for a balance line, the capital is dropped and a nil interest is issued. A strategy validated at 100 % therefore runs off only part of the balance.
- What to do: place the first bucket after the evaluation date (for example
1d) and import again (Default rules, §3.1).
CFW-081 — Call date on or after maturity
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) have a call date on or after their maturity (<deals>); the call is ignored and the contractual maturity is used. - Cause: the call date of a term product, repo or security is on or after its maturity; one warning per file gives the number of deals.
- Consequence: the call is ignored and the contractual maturity is used: these deals’ cash flows run to their maturity.
- What to do: check the call date and maturity of the deals listed and import again (Default rules, §3.1).
CFW-082 — Coupon schedule cut short
- Level, effect:
WARNING,FLAG - Message:
The coupon schedule of '<deal>' stops at <date>: its payment period <period> does not advance; the remaining coupons are not generated. - Cause: while the coupon schedule of a term product (or a backward swap) is rolled, the payment period does not move the date forward; one warning per deal.
- Consequence: the schedule stops at the date given: the following coupons are not generated, and the deal’s interest is understated.
- What to do: correct the deal’s payment period (a nil or unreadable period) and import again (Default rules, §3.1).
CFW-083 — Coupon without a computed amount
- Level, effect:
WARNING,FLAG - Message:
<n> coupon(s) have no computed amount (<deals>); 0 is used. - Cause: a coupon’s interest amount or reference capital was not computed; the warning gives the number of coupons and the deals.
- Consequence: 0 is used: these coupons carry no interest, which understates the interest and NII of the deals concerned.
- What to do: check the rate and notional data of the deals listed; report it if they are complete (Default rules, §3.1).
CFW-084 — Prefixing line without a frequency
- Level, effect:
WARNING,FLAG - Message:
<n> prefixing line(s) have no basis rate frequency (<deals>); they are ignored and the curve rate is used. - Cause: a prefixing line has no basis rate frequency; the warning gives the number of lines and the deals.
- Consequence: the line is ignored: these deals’ rate is read on the curve instead of the prefixed rate.
- What to do: fill in the basis rate frequency of the prefixing lines listed and import again (Default rules, §3.1).
CFW-085 — Reference without a prefixing match segment
- Level, effect:
WARNING,FLAG - Message:
<n> deal reference(s) have no '_<deal>' segment to match a prefixing line (<references>); the curve rate is used. - Cause: a transaction’s reference is empty or has no
_<deal>segment to match it with a prefixing line; the warning gives the number of references. - Consequence: no prefixing applies: these deals’ rate is read on the curve.
- What to do: if these deals must be prefixed, give them a reference of the form
<prefix>_<deal>and import again (Default rules, §3.1).
CFW-086 — Deal without a maturity in a constant balance sheet
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) have no maturity (<deals>); they are not rolled in the constant balance sheet. - Cause: under a constant or growing balance sheet, a deal has no maturity; a single warning per run gives the number of deals.
- Consequence: the deal is not renewed: its share of the balance sheet is not maintained in the projection.
- What to do: fill in the maturity of the deals listed and import again (Default rules, §3.2).
CFW-087 — Fixed-rate roll repriced on the discount curve
- Level, effect:
WARNING,FLAG - Message:
<n> fixed-rate roll(s) have no curve of their own index; the discount curve '<curve>' is used to reprice them. - Cause: the rate of a fixed-rate roll has no index, or its index has no curve in the context; a single warning per run.
- Consequence: the context’s discount curve sets the rate of the new production: its projected interest follows that curve, not the product’s index curve.
- What to do: fill in the index of the fixed-rate deals and supply its curve; if the discount curve suits you, nothing needs to be done (Default rules, §3.2).
CFW-088 — Capital cash flow without a rate in a constant balance sheet
- Level, effect:
WARNING,FLAG - Message:
<n> capital cash flow(s) have no rate (<deals>); they are not replaced in the constant balance sheet. - Cause: under a constant balance sheet, a capital cash flow to be replaced has no rate; the warning gives the number of cash flows and the deals.
- Consequence: the cash flow is not replaced: the balance-sheet size is no longer maintained for that amount, the projected balance falls accordingly.
- What to do: fill in the rate of the deals listed and import again (Default rules, §3.2).
CFW-089 — Fixed swap leg without a rate
- Level, effect:
ERROR,LINE - Message:
Cash flows of swap '<reference>' could not be generated: its <leg> leg is fixed but has no rate, so its coupons cannot be computed. - Cause: a fixed leg of the swap has no rate (
rate.valueempty) and at least one coupon still to come;<leg>ispayingorreceiving. No rate is assumed: 0 % is not applied. - Consequence: the whole swap, both legs included, has no flows in this calculation.
- What to do: fill in the rate of the fixed leg named in the extraction, or in the deal editor (Add or edit a deal), then run again.
CFW-090 — Coupon skipped: no curve for its index
- Level, effect:
WARNING,PARTIAL - Message:
Transaction '<reference>': coupon [<start> - <end>] skipped: no interest rate curve for index '<index>'. - Cause: a coupon of a term deposit, an in-fine loan or a repo cannot be priced because no curve of the evaluation context carries its index; one warning per skipped coupon, naming its period.
- Consequence: the coupon has no flow, so its interest is missing from EVE and NII; the deal and its other flows (principal, the coupons that could be priced) are kept. When the whole deal is lost instead (securities, amortising loans, deposits), the anomaly is CFW-028, an
ERROR. - What to do: add the curve of the index to the rate file, or fix the
indexes/compoundCurvemapping that names it, then import again (Index consistency checks).
CFW-091 — Coupon skipped: rate unreadable
- Level, effect:
WARNING,PARTIAL - Message:
Transaction '<reference>': coupon [<start> - <end>] skipped: its rate cannot be read (<cause>). - Cause: a coupon of a term deposit, an in-fine loan or a repo cannot be priced for another reason than a missing curve: the context has no curve at all, the curve has no point, or the curve cannot be read at the coupon’s dates;
<cause>is the message of the failure. One warning per skipped coupon. - Consequence: as for CFW-090: the coupon has no flow, the deal and its other flows are kept.
- What to do: fix the curve named by the cause (points, reference date) in the rate file, then import again.
CFW-092 — Rate that could not be evaluated
- Level, effect:
ERROR,LINE - Message:
A rate could not be evaluated: <cause> - Cause: reading a rate or a discount factor failed for a reason no other code describes, for instance a PAR curve whose zero curve cannot be built;
<cause>is the message of the failure. - Consequence: as for CFW-024 to CFW-038: the deal concerned is left out of the generation (or loses the flow being computed).
- What to do: check the curve the cause names in the rate file, then import again; if the cause says nothing about the data, report it with the full message.
CFW-093 — Prefixed rate used
- Level, effect:
INFO,FLAG - Message:
Prefixing <prefixed rate> used for transaction <reference> instead of <curve rate> - Cause: the deal has a line in the prefixed cash flows, and the coupon’s date falls within the line’s basis rate frequency.
- Consequence: the coupon is priced at the prefixed rate, not at the curve rate.
- What to do: nothing: this is the expected use of the prefixed cash flows (Prefixed cash flows).
CFW-094 — Prefixed rate not used
- Level, effect:
INFO,FLAG - Message:
Prefixing not used as target date <date> is after prefixing end date <end date> - Cause: the deal has a prefixing line, but the coupon’s date is after the end of the line’s validity (its date plus its basis rate frequency).
- Consequence: the curve gives the rate of that coupon.
- What to do: nothing, unless the prefixing line should cover that date: then fix its basis rate frequency in the prefixed cash flows (Prefixed cash flows).
CFW-095 — Fixed rate rolled like-for-like
- Level, effect:
INFO,FLAG - Message:
Fixed rate rolled like-for-like under <scenario>: <rolled rate> = <market rate> (forward <roll date> => <maturity>) + margin <margin> (<original rate> - baseline <baseline rate> over <n> days) - Cause: a fixed-rate deal is renewed in a constant balance sheet; its new rate is the scenario curve’s forward over the deal’s own tenor plus the commercial margin taken at the evaluation date (deal rate minus the baseline rate of that tenor).
- Consequence: the renewed deal pays that rate; the message details the computation.
- What to do: nothing (Replacing amortisation and run-off).
CFW-096 — Running coupon at its known fixing
- Level, effect:
INFO,FLAG - Message:
Running coupon [<start> => <end>] of '<index>' priced at its known fixing <rate> instead of the curve - Cause: the running coupon of a floating-rate deal already has its fixing (the rate of the deal line), and no prefixing line overrides it.
- Consequence: the coupon is priced at that fixing; the next coupons follow the curve.
- What to do: nothing; check the rate of the deal line if it looks wrong.
CFW-097 — Cash flow cut at the call date
- Level, effect:
INFO,FLAG - Message:
[<flow> - <scenario>] Cashflow cut at call date <call date> - Cause: a behavioural flow of a callable security, term deposit or in-fine loan runs past the deal’s call date.
- Consequence: in the behavioural view, the flow stops at the call date (shortened period); the contractual view is unchanged.
- What to do: nothing; check the call date of the deal if it looks wrong.
CFW-098 — Cash flow after the call date ignored
- Level, effect:
INFO,FLAG - Message:
[<flow> - <scenario>] Cashflow ignored as it is after call date - Cause: a behavioural flow of a callable security, term deposit or in-fine loan starts after the deal’s call date.
- Consequence: the flow is not generated in the behavioural view; the contractual view is unchanged.
- What to do: nothing; check the call date of the deal if it looks wrong.
CFW-099 — Forward rate of a swap coupon
- Level, effect:
INFO,FLAG - Message:
Forward rate: <audit trail> - Cause: the generation runs at the
DEBUGlog level: for each floating swap coupon, the engine writes how its forward rate was read. - Consequence: none: a diagnostic line.
- What to do: nothing; at the usual log level these lines are not written.
RPT — IRRBB reporting, metrics and templates
Refusing the reporting, the metrics, the carrying amount and filling the EBA templates (Reporting warnings).
RPT-001 — Reporting refused
- Level, effect:
ERROR,STOP - Message:
<reasons> The reporting was not produced. - Cause: the cash-flow generation read does not meet the conditions of the IRRBB reporting; the reasons that apply are given: a regulatory scenario is missing, the balance sheet is not constant, the roll horizon is under one year, or the post-shock floor is switched off.
- Consequence: no template is produced.
- What to do: run a generation with the baseline and the six regulatory shocks, a constant balance sheet over at least one year and the floor on (IRRBB reporting).
RPT-002 — Cash-flow generation in error
- Level, effect:
ERROR,FLAG - Message:
Cash flow generation finished with ERRORS status; the report may be incomplete - Cause: the cash-flow generation the reporting reads ended with errors (deals without flows or with partial flows).
- Consequence: the templates are produced, but without the lost flows; the reporting goes
ERRORS. - What to do: review the generation’s anomalies (Calculation Logs tab), fix them and run again (Running simulations).
RPT-003 — Reporting build failure
- Level, effect:
ERROR,STOP - Message:
Error while building template : <message> - Cause: an unexpected error occurs while building the result; the error’s message is copied as is or, when it has none, its name (for instance
NullPointerException). - Consequence: the reporting is not produced.
- What to do: run the reporting again; if the error persists, report it with the message and the generation’s identifier.
RPT-004 — Transactions without FINREP classification
- Level, effect:
WARNING,LINE - Message:
<n> transaction(s) have no FINREP classification and are excluded from the whole report (J 01.00 - J 07.00 and the transaction metrics): <references> - Cause: deals have no FINREP row: no account, an account that cannot be classified, or a category without a row in
mapping_compta_irrbb(see CLS-002, CLS-010). - Consequence: they leave the whole report (J 01.00 totals, J 02.00 to J 07.00, per-deal metrics).
- What to do: complete the classification or the deals’ accounts, import again and run again (Reporting warnings).
RPT-005 — Missing capital
- Level, effect:
WARNING,FLAG - Message:
The situation states no capital amount, so the EVE and NII ratios to capital (rows 0020 and 0110) are left empty. Enter capitalAmount in the situation's additional data and generate again. - Cause: the situation’s additional data have no
capitalAmount, or it is 0. A value that is not a number (250k,1.000.000) is refused when saved, with a message quoting it; only a value saved before this check can still arrive here as missing. - Consequence: rows 0020 and 0110 of J 01.00 (ratios to capital) stay empty; the rest is produced.
- What to do: enter
capitalAmount(Tier 1) in the situation’s additional data and run the reporting again.
RPT-006 — Floating flows beyond two years
- Level, effect:
WARNING,PARTIAL - Message:
Floating rate repricing cash flows beyond two years have no column in J 05.00 - J 07.00 (<view> conditions) and are not reported: <amounts> - Cause: floating-rate repricing flows fall beyond two years, where the floating block of J 05.00 to J 07.00 has no column (a floating leg with no coupon to refix its principal).
- Consequence: these amounts, given per currency, are missing from J 05.00 to J 07.00.
- What to do: check the refixing period of the deals concerned (Repricing schedules).
RPT-007 — Missing carrying amount
- Level, effect:
WARNING,FLAG - Message:
Carrying amount is missing for transaction <reference> - Cause: the deal, classified on a FINREP row, carries no carrying amount (notional or outstanding missing).
- Consequence: it does not count in its row’s amount when column 0010 is computed from the deals; the report is produced.
- What to do: check the deal’s notional and remaining face value in the extraction (Carrying amount).
RPT-008 — Deals without contractual maturity
- Level, effect:
WARNING,FLAG - Message:
<n> transaction(s) have no contractual maturity and are left out of the J 05.00 - J 07.00 weighted average maturity (columns 0060 / 0310), notional <notionals> - Cause: deals, usually balance lines run off by buckets, have no contractual maturity.
- Consequence: they are left out of the weighted average maturity, but count in the notional and the average yield.
- What to do: nothing if expected; otherwise check their run-off law (Repricing schedules).
RPT-009 — Invalid carrying amount source
- Level, effect:
WARNING,FLAG - Message:
The situation's additional data key <key> is '<value>', neither BALANCE nor DEAL, and was ignored. - Cause: the
carryingAmountSourcekey of the additional data holds something other thanBALANCEorDEAL. - Consequence: it is ignored: the carrying amount follows the default rule (the balance when the situation has one).
- What to do: enter
BALANCEorDEAL(Carrying amount).
RPT-010 — Balance-sheet carrying amount unavailable
- Level, effect:
WARNING,FLAG - Message:
<key> is BALANCE but the situation carries no accounting balance or no classification; J 02.00 - J 04.00 column 0010 reports the deals' notional instead of the balance-sheet carrying amount (FINREP Annex V §27). - Cause:
carryingAmountSourceasks for the balance, but the situation has no accounting balance or no classification. - Consequence: column 0010 of J 02.00 to J 04.00 gives the deals’ notional.
- What to do: import the situation with its balance and its classification (Carrying amount).
RPT-011 — Notional carrying amount requested
- Level, effect:
WARNING,FLAG - Message:
<key> is DEAL: J 02.00 - J 04.00 column 0010 reports the deals' notional, not the balance-sheet carrying amount of FINREP Annex V §27 (accrued interest, premium and discount are left out; an off-balance swap counts its notional). - Cause:
carryingAmountSourceisDEAL. - Consequence: column 0010 of J 02.00 to J 04.00 gives the deals’ notional, without accrued interest, premium or discount.
- What to do: nothing if intended; otherwise set the key to
BALANCE(Carrying amount).
RPT-012 — Situation without a balance
- Level, effect:
WARNING,FLAG - Message:
The situation carries no accounting balance: J 02.00 - J 04.00 column 0010 reports the deals' notional, not the balance-sheet carrying amount of FINREP Annex V §27 (accrued interest, premium and discount are left out; an off-balance swap counts its notional). - Cause: the situation has no accounting balance and
carryingAmountSourceis not set. - Consequence: column 0010 of J 02.00 to J 04.00 gives the deals’ notional.
- What to do: import the accounting balance with the situation (Accounting balances).
RPT-013 — Balance / deals gap
- Level, effect:
WARNING,FLAG - Message:
Row <row> (<label>): the balance carries <balance> (off-balance accounts included), the deals <notional> of notional; gap <gap> (<pct>%), above the <threshold>% tolerance. - Cause: on a FINREP row, the balance and the notional of the deals classified there differ by more than max(1,000, 5 %).
- Consequence: nothing is changed: column 0010 stays the balance amount; the gap points to a classification to check.
- What to do: check the classification of the row’s accounts and deals (Reconciliation by account).
RPT-014 — Deals in another currency
- Level, effect:
WARNING,FLAG - Message:
The balance carries no currency and is reported in <currency>; the <currencies> deals have no carrying amount of their own in column 0010. - Cause: the balance has no currency and is reported in the named currency; some deals are in another currency.
- Consequence: these deals have no carrying amount of their own in column 0010.
- What to do: nothing to fix in the files; bear it in mind when reading column 0010 (Carrying amount).
RPT-015 — Unclassified balance account
- Level, effect:
WARNING,FLAG - Message:
Balance account <account> '<label>' (<balance>) is in no FINREP row of the carrying amount: no line of the classification covers it. - Cause: no line of
mapping_comptacovers this balance account. - Consequence: its balance is missing from the carrying amount of column 0010.
- What to do: add the account to
mapping_compta, or type itPNL,OBSorDERIVATIVEinaccountingMappingif it is not on the balance sheet (Balance coverage).
RPT-016 — Account category without a FINREP row
- Level, effect:
WARNING,FLAG - Message:
Balance account <account> '<label>' (<balance>) is in no FINREP row of the carrying amount: its category '<side> <counterparty>' has no FINREP row. - Cause: the account is classified, but its category has no FINREP row in
mapping_compta_irrbb(missing, unknown or rejected). - Consequence: its balance is missing from the carrying amount of column 0010.
- What to do: add or correct the category’s row in
mapping_compta_irrbb(mapping_compta_irrbb sheet).
RPT-017 — Classified account typed off balance sheet
- Level, effect:
WARNING,FLAG - Message:
Balance account <account> '<label>' (<balance>) is filed on row <row> by the classification but typed <type> by the accounting mapping: it is left out of the carrying amount. - Cause: the classification files the account on a FINREP row, but
accountingMappingtypes itPNL,OBSorDERIVATIVE. - Consequence: the account is left out of the carrying amount.
- What to do: correct whichever of the two is wrong, the classification or
accountingMapping(Balance labels).
RPT-018 — Unknown NMD category
- Level, effect:
WARNING,FLAG - Message:
The situation's additional data key <key> is not an NMD category and was ignored - Cause: a key of
nmdParameters(additional data, J 08.00 and J 09.00) is not a known non-maturity deposit category. - Consequence: the key is ignored; the cells it would have filled stay empty.
- What to do: correct the category name in the additional data (EBA templates).
RPT-019 — Additional data entry that is not an object
- Level, effect:
WARNING,FLAG - Message:
The situation's additional data key <key> is not an object and was ignored - Cause: an entry of
irrbbDeclarationsornmdParametersexpected to be a JSON object is not one. - Consequence: the entry is ignored; the cells it would have filled stay empty.
- What to do: correct the entry’s structure in the situation’s additional data.
RPT-020 — Declaration that is not text
- Level, effect:
WARNING,FLAG - Message:
The situation's additional data key <key> is not text and was ignored - Cause: an answer of
irrbbDeclarations(J 10.01 to J 11.02) is blank or not text. - Consequence: the answer is ignored; the cell stays empty.
- What to do: enter the answer as text in the additional data (EBA templates).
RPT-021 — Template file not found
- Level, effect:
ERROR,STOP - Message:
Cannot open file <file> - Cause: the engine cannot find, or cannot read, the file of the requested template.
- Consequence: this template is not produced.
- What to do: engine installation defect: report it with the template’s name.
RPT-022 — Template without a filler
- Level, effect:
ERROR,STOP - Message:
Unable to find Template filler for reference <template> - Cause: the engine has no filler for the requested template reference.
- Consequence: this template is not produced.
- What to do: internal defect: report it with the template’s name.
RPT-024 — Cell not written
- Level, effect:
ERROR,FLAG - Message:
Failed to set cell (row=<row>, col=<column>): <cause> - Cause: writing a value into a cell of the template failed.
- Consequence: the cell stays empty; the rest of the template is produced.
- What to do: report it with the template’s name, the row and the column.
RPT-025 — Uncomputed cells
- Level, effect:
WARNING,FLAG - Message:
<n> of <total> datapoints of <sheet> have no mapped value and were left empty - Cause: cells of the sheet are not computed by the engine; the details list their rows and columns.
- Consequence: these cells stay empty, without a 0.
- What to do: fill them in by hand if the regulator expects them (Uncomputed cells).
RPT-026 — Declared value outside the list
- Level, effect:
WARNING,FLAG - Message:
Row <row>: <value> is not a value <column> accepts, so the cell is left empty - Cause: an EBA code declared in the additional data is not among the values the cell accepts.
- Consequence: the cell stays empty.
- What to do: enter one of the values of the EBA list in the additional data and run the reporting again.
RPT-027 — Template filler failure
- Level, effect:
ERROR,STOP - Message:
The filler of template <template> failed, so the template is not produced: <cause> - Cause: filling the template fails: unreadable template file (
the template file is not a readable Excel workbook) or an internal error. - Consequence: this template is not produced; the others are.
- What to do: report it with the template’s name and the cause (Reporting warnings).
RPT-028 — Aborted cash-flow generation
- Level, effect:
ERROR,STOP - Message:
Cash flow generation finished with ERRORS status and handed no cash flow over; the reporting was not produced. - Cause: the cash-flow generation read stopped in error (RUN-001 to RUN-007) and hands over no flows.
- Consequence: no template is produced; the generation’s anomalies are carried over into the reporting’s logs.
- What to do: fix the cause given by those anomalies, run the generation again, then the reporting (Reporting warnings).
RPT-029 — No template requested
- Level, effect:
WARNING,FLAG - Message:
The request names no IRRBB template; all <n> templates (<templates>) are used. - Cause: the reporting request names no template (
reportingTemplatesabsent or empty); one warning per request. - Consequence: the 13 templates J 01.00 to J 11.02 are all produced; the figures do not change.
- What to do: nothing if you want every template; otherwise choose the templates to produce when you launch the reporting (Default rules, §4.2).
RPT-030 — Shared transaction reference
- Level, effect:
WARNING,FLAG - Message:
<n> transaction reference(s) are carried by several deals (<references>); the first deal's attributes are used to classify all their cash flows. - Cause: several deals of the portfolio carry the same transaction reference; one warning per run, with the number of references and their list.
- Consequence: the cash flows of all those deals are counted, but classified by the first one: FINREP row, overnight non-maturity deposit, derivative, maturity. The others’ flows may thus land on a FINREP row that is not theirs.
- What to do: give every deal a unique reference in the deal files and import again (Default rules, §4.2).
RPT-031 — Non-maturity deposits slotted overnight
- Level, effect:
WARNING,FLAG - Message:
<n> non-maturity deposit(s) (<currency> <amount>) have a run-off; the overnight bucket is used on the contractual sheets of J 05.00 - J 07.00, and their interest is not slotted. - Cause: non-maturity deposits (a
DepositModelproduct that is not a term deposit) appear in the contractual view (CONTRACTUAL); one warning per run, with their number and outstanding amount. - Consequence: on the contractual (.a) sheets of J 05.00 to J 07.00, their principal is slotted in the overnight bucket (1 day) whatever the configured run-off, and their interest is not slotted. This is the regulatory rule (Annex XXIX, Part IV, §1.3(a)); the behavioural (.b) sheets follow the run-off.
- What to do: nothing: the rule is intended. Only check that these products really are non-maturity deposits; a term deposit must be imported as one (Default rules, §4.2).
RPT-032 — Floating legs with no repricing period
- Level, effect:
WARNING,FLAG - Message:
<n> floating rate leg(s) state no repricing period and no interest period; repricing within one year is used, so they are reported in the floating block of J 05.00 - J 07.00. - Cause: floating rate legs have no repricing period (
repricingPeriodabsent orAT_MATURITY) and no interest flow whose period exceeds 366 days (or their flows carry no period dates); one warning per run. - Consequence: they are classified as ‘floating’ in the ITS sense (repricing within one year): in the floating block of J 05.00 to J 07.00 and out of the ‘of which fixed rate’ rows of J 02.00.
- What to do: fill in the repricing period of these deals (or of their product in the client configuration) and import again (Default rules, §4.2).
RPT-033 — Cash flows with no rate type
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) have cash flows with no rate type (<currency> <amount> of principal); they are left out of the fixed and floating blocks of J 05.00 - J 07.00 and of the fixed-rate rows of J 02.00. - Cause: cash flows have no rate model, or a rate type that is neither
FIXEDnorFLOATING; one warning per run, with the number of deals and the principal concerned. - Consequence: these flows are neither fixed nor floating: they are missing from both blocks of J 05.00 to J 07.00 (notional, yield, maturity, schedule) and from the ‘of which fixed rate’ rows of J 02.00, but stay in EVE, NII and market value. The J 05.00 notional (column 0010) then no longer reconciles with the J 02.00 carrying amount.
- What to do: fill in the rate type (fixed or floating) of these deals or of their product and import again (Default rules, §4.2).
RPT-034 — Interest cash flows with no accrual period
- Level, effect:
WARNING,FLAG - Message:
<n> interest cash flow(s) have no accrual period; the NII counts each in full on its payment date instead of pro rata. - Cause: interest cash flows have no period start date (
periodStartDate), or a start date that is not before the end; one warning per run. - Consequence: the NII applies the payment-date rule: the coupon counts in full if it is paid within the horizon and not at all otherwise, instead of pro rata over its period. The 12-month NII (J 01.00 row 0120, J 02.00 column 0100) may be shifted.
- What to do: check the period dates of the deals concerned (start dates, payment frequency) and import again (Default rules, §4.2).
RPT-035 — Cash flows with no scenario
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) carry no scenario; they are left out of EVE, NII and MV. - Cause: cash flows of the generation carry no scenario; one warning per run.
- Consequence: they match no context and are ignored in the aggregated EVE, NII and market value.
- What to do: run the cash flow generation again; if the warning persists, report it with the generation’s id (Default rules, §4.2).
RPT-036 — Modified duration not computed
- Level, effect:
WARNING,FLAG - Message:
The run did not compute the +1 bp parallel shock (UP_1_BP) or its baseline EVE is empty; the modified duration of J 02.00 - J 04.00 column 0020 is left empty. - Cause: the run did not compute the +1 bp parallel shock (
UP_1_BP), or its baseline EVE is absent or zero; one warning per run. - Consequence: column 0020 (modified duration) of J 02.00 to J 04.00 is left empty; the rest of the reporting is produced.
- What to do: run a generation that includes the
UP_1_BPscenario again, then the reporting (Default rules, §4.2).
RPT-037 — Cash flows with no amount
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) carry no amount; 0 is used in the J 05.00 - J 07.00 notional and repricing schedule. - Cause: cash flows have no amount or value; one warning per run.
- Consequence: they count as 0 in the J 05.00 to J 07.00 notional and repricing schedule.
- What to do: run the cash flow generation again; if the warning persists, report it with the generation’s id (Default rules, §4.2).
RPT-038 — Swap cash flows with no leg
- Level, effect:
WARNING,FLAG - Message:
<n> swap cash flow(s) name no leg; their legs are merged, so the receiver-leg notional of J 05.00 - J 07.00 may be wrong. - Cause: swap cash flows name no leg (
cashFlowDetailblank or absent); one warning per run. - Consequence: all the swap’s legs are merged into one and only the last capital exchange counts, if positive: the receiver-leg notional of J 05.00 to J 07.00 may be wrong.
- What to do: run the cash flow generation again; if the warning persists, report it with the swaps’ references (Default rules, §4.2).
RPT-039 — Yield read from principal flows
- Level, effect:
WARNING,FLAG - Message:
<n> position(s) have no interest cash flow in their fixed or floating block; the rate of their principal flows is used for the J 05.00 yield (columns 0050 / 0300), and those without one are left out. - Cause: positions have no interest cash flow in their fixed or floating block, or no rate at all; one warning per run.
- Consequence: the J 05.00 weighted average yield (columns 0050 / 0300) uses the rate carried by their principal flows; a position with no rate at all is excluded, weight included, and the cell is left empty when no position remains.
- What to do: check the rate and interest terms of the deals concerned and import again (Default rules, §4.2).
RPT-040 — Cash flows with no effective rate
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) have no effective rate; their nominal rate is used in the J 05.00 yield. - Cause: cash flows have no effective rate (
effectiveRate); one warning per run. - Consequence: the J 05.00 yield uses the nominal rate of their rate model, which may not include the commercial margin.
- What to do: run the cash flow generation again; if the warning persists, report it with the generation’s id (Default rules, §4.2).
RPT-041 — Cash flows with no repricing bucket
- Level, effect:
WARNING,FLAG - Message:
<n> cash flow(s) have no repricing bucket; their payment-date bucket is used in J 05.00 - J 07.00. - Cause: cash flows have no repricing bucket (
adjustedTimeBucket); one warning per run. - Consequence: the bucket of their payment date is used in J 05.00 to J 07.00. This is normal for a fixed-rate flow; floating principal with no repricing date is slotted at its maturity instead of its next repricing.
- What to do: for floating rate deals, fill in the repricing period or date and import again (Default rules, §4.2).
RPT-042 — Incomplete balance lines
- Level, effect:
WARNING,FLAG - Message:
<n> balance line(s) have no account or no amount; they are left out of the J 02.00 - J 04.00 carrying amount. - Cause: lines of the accounting balance have no account or no balance; one warning per run.
- Consequence: they are ignored for the J 02.00 to J 04.00 carrying amount.
- What to do: fill in the account and balance of these lines in the ledger and import again (Default rules, §4.2).
RPT-043 — Off-balance-sheet accounts left out of the carrying amount
- Level, effect:
WARNING,FLAG - Message:
<n> account(s) are typed PNL, OBS or DERIVATIVE by the accounting mapping and filed on no FINREP row (<accounts>); they are left out of the carrying amount. - Cause: ledger accounts are not covered by the classification and are typed off balance sheet (
PNL,OBS,DERIVATIVE) by the accounting mapping, or are covered, typedPNLand have no FINREP row; one warning per run, with the list of accounts. - Consequence: these accounts are left out of the J 02.00 to J 04.00 carrying amount.
- What to do: nothing if these accounts really are off balance sheet; otherwise correct their type or FINREP row in the classification and import again (Default rules, §4.2).
RPT-044 — Accounting category declared several times
- Level, effect:
WARNING,FLAG - Message:
Accounting category '<category>' is declared by <n> classification lines; the first one (row <row>) is used for balance account <account>. - Cause: several classification lines carry the same accounting category (prefix of the same length) for a balance account; one warning per file.
- Consequence: the first line met is used to type and classify the account; the others are ignored for it.
- What to do: remove the duplicate lines from the classification (one line per category) and import again (Default rules, §4.2).
RPT-045 — Unknown balance type
- Level, effect:
WARNING,FLAG - Message:
<n> classification line(s) state a balance type that is not ASSET, LIABILITY, OBS, DERIVATIVE or PNL (<values>); their accounts count as balance-sheet accounts. - Cause: the
Bilancolumn of classification lines is blank or is notASSET,LIABILITY,OBS,DERIVATIVEorPNL(the reading is case-sensitive); one warning per file, with the values read. - Consequence: their accounts have no type and are treated as balance-sheet accounts: they enter the carrying amount.
- What to do: write one of these values, in upper case, in the
Bilancolumn and import again (Default rules, §4.2).
RPT-046 — Account taken from the instrument’s family
- Level, effect:
WARNING,FLAG - Message:
<n> deal(s) of instrument type '<instrument type>' have no account of their own; account <account> of their <sub-family or family> is used. - Cause: Crédit Logement contracts have no account in the histo sheet, and the instrument mapping gives none for their exact instrument type; one warning per file and instrument type.
- Consequence: the account of the sub-family listing the instrument is used, failing that the product family’s; the same chain applies to the accrued-interest account. The deals are classified (FINREP row) from that account.
- What to do: if that account does not fit, add the instrument type to the client configuration’s instrument mapping, or the contracts’ account to the histo sheet, and import again (Default rules, §4.2).
RPT-047 — Duplicate instrument mapping key
- Level, effect:
WARNING,FLAG - Message:
The instrument account mapping declares '<key>' several times (ignoring case and spaces); <account> is used. - Cause: two keys of the client configuration’s instrument / family mapping are equal ignoring case and spaces; one warning per file and key.
- Consequence: the account of the first key met is used; that order is not guaranteed, so the account used may change from one import to the next.
- What to do: keep a single key per instrument or family in the client configuration’s mapping and import again (Default rules, §4.2).
RPT-048 — Starred account covering diverging lines
- Level, effect:
WARNING,FLAG - Message:
Starred account <account> covers <n> classification lines with different <attribute>; the first line's, <value>, is used. - Cause: A starred account (e.g.
9431**) covers several classification lines (same FINREP row) whose asset type, counterparty or hedge role differ; one warning per file, account and attribute. - Consequence: the asset type and the counterparty come from the first line (sorted by category); the hedge role is left empty when the lines differ, which changes the hedging-instrument classification.
- What to do: align these attributes on the lines the starred account covers, or replace it by exact accounts, and import again (Default rules, §4.2).
RPT-049 — Datapoints outside the sheet
- Level, effect:
WARNING,FLAG - Message:
<n> computed datapoint(s) of <template> have no cell on the sheet (rows <rows>, columns <columns>); they are not written. - Cause: the DPM row or column code of computed datapoints is not in the template sheet’s headers; one warning per run and template.
- Consequence: the values are not written, and are not counted as unmapped cells (RPT-025): they are missing from the template.
- What to do: report it with the template’s name and the rows and columns given (Default rules, §4.2).
RPT-050 — IRRBB declarations missing
- Level, effect:
WARNING,FLAG - Message:
The situation declares no <declaration>; the cells of <templates> that depend on them are left empty. - Cause: the situation’s additional data are absent, or have no
irrbbDeclarationsornmdParameterskey; one warning per run and declaration. - Consequence: no declaration is used: the cells that depend on it stay empty (shares and PTR of J 08 / J 09, J 10 / J 11).
- What to do: enter the IRRBB declarations and the NMD parameters in the situation’s additional data, then run the reporting again (Default rules, §4.2).
RPT-051 — Non-numeric NMD parameter
- Level, effect:
WARNING,FLAG - Message:
NMD parameter <parameter> is '<value>', not a number; the cell is left empty. - Cause: an NMD parameter (
behaviouralShare,coreShare,exemptedShare,operationalShare, PTR) is not a number (for example the text “0.6”); one warning per run and parameter. - Consequence: the parameter is ignored: its J 08 / J 09 cell stays empty, and a non-numeric PTR is removed.
- What to do: enter the value as a number (a share as a fraction:
0.6for 60 %) in the situation’s additional data, then run the reporting again (Default rules, §4.2).
RPT-052 — J 10.02 / J 11.02 answers missing for a currency
- Level, effect:
WARNING,FLAG - Message:
The situation declares no J 10.02 / J 11.02 answers for <currency>; its sheet is left empty. - Cause: the situation’s additional data have no J 10.02 / J 11.02 answers for a sheet’s currency; one warning per run and currency.
- Consequence: that currency’s sheet is left empty.
- What to do: enter that currency’s answers in the situation’s IRRBB declarations, then run the reporting again (Default rules, §4.2).
RPT-053 — Currency with no notional detail
- Level, effect:
WARNING,FLAG - Message:
Currency <currency> has no notional detail on sheet <sheet>; 0 is used for the J 05.00 - J 07.00 notionals. - Cause: A J 05.00 to J 07.00 sheet has no position for a currency: contractual (.a) sheet, or a currency present only in the carrying amount (for example an EUR sheet created by the ledger while the deals are in USD); one warning per run, currency and sheet.
- Consequence: notional columns 0010 / 0260 are 0, while column 0010 of J 02.00 stays empty for a currency with no data.
- What to do: check that the currency of the deals and that of the ledger match; nothing to do if the currency really has no deal (Default rules, §4.2).
RPT-056 — Currency with no shock calibration
- Level, effect:
WARNING,FLAG - Message:
Currency <currency> has no supervisory shock calibration; the EUR shock sizes are used in J 01.00 rows 0180-0200. - Cause: the currency has no regulatory rate-shock calibration; one warning per run and currency.
- Consequence: J 01.00 rows 0180 to 0200 report the EUR shock sizes (200 / 250 / 100 bp).
- What to do: nothing to correct in the data: check that the EUR sizes fit this currency and report the need for its own calibration (Default rules, §4.2).
RPT-057 — Gap with no pivot currency
- Level, effect:
WARNING,FLAG - Message:
Generation <generation> states no pivot currency; EUR is used for its gap figures. - Cause: the generation (or its context) states no pivot currency; one warning per generation.
- Consequence: the gap figures are labelled EUR; they are the sums of the pivot amounts, so the label may be wrong if the actual pivot currency is not the euro.
- What to do: state the pivot currency in the import information (guided import), import again and run the generation again (Default rules, §5).
RPT-058 — Gap with no projection requested
- Level, effect:
WARNING,FLAG - Message:
The gap request names no projection; the contractual flows (CONTRACTUAL) are used, not the behavioural ones of the J 05.00 .b sheets. - Cause: the gap request names no projection (
originabsent); one warning per request. - Consequence: the gap reads the contractual flows (
CONTRACTUAL), whereas the metrics of the same generation read the behavioural flows (BEHAVIOURAL) by default: the two do not cover the same projection. - What to do: choose the projection you want on the gap screen (Default rules, §5).
RPT-059 — Comparison generation chosen automatically
- Level, effect:
WARNING,FLAG - Message:
The gap report names no generation to compare with; generation <generation> of <situation date>, the latest earlier situation of the same client configuration, is used. - Cause: the gap report names no generation to compare with (
compareToabsent); one warning per request. - Consequence: the latest generation of the same client configuration, same scenario and type, with an earlier situation date is used as the reference. Neither the portfolio nor the status is filtered: a custom simulation or a generation in
ERRORSof another portfolio may be picked. - What to do: check the generation picked; if it does not fit, choose the comparison generation explicitly (Default rules, §5).
RPT-060 — Reporting older than risk-model 0.242.0
- Level, effect:
WARNING,FLAG - Message:
Reporting <reporting> was computed before risk-model 0.242.0; its figures are no longer shown. Generate it again. - Cause: the result of a reporting computed before risk-model 0.242.0 has no per-projection views; one warning per reporting.
- Consequence: the result is hidden: the reporting shows as not computed.
- What to do: run the reporting again (Default rules, §5).
RPT-061 — ALCO pack with no ledger reconciliation
- Level, effect:
WARNING,FLAG - Message:
The ALCO pack of reporting <reporting> has no ledger reconciliation (<cause>); the pack is produced without that section. - Cause: the reporting has no linked import, or the ledger reconciliation fails (situation not processed…); one warning per pack generation.
- Consequence: the ALCO pack is produced without the ledger reconciliation section; its other figures do not change.
- What to do: fix the cause given (ledger import, situation processing), then generate the pack again (Default rules, §5).
RPT-062 — Reporting with no behavioural view
- Level, effect:
WARNING,FLAG - Message:
Reporting <reporting> has no behavioural view; the EVE and NII tables of its ALCO pack are left empty. - Cause: the ALCO pack reads only the reporting’s behavioural view (
BEHAVIOURAL), and this reporting has none; one warning per pack generation. - Consequence: the pack’s EVE, NII and carrying amount tables per currency are left empty; in general a missing value is omitted there, not replaced by 0.
- What to do: run the reporting again on a generation that produces the behavioural view, then generate the pack again (Default rules, §5).
RPT-063 — Incomplete ledger lines in the reconciliation
- Level, effect:
WARNING,FLAG - Message:
<n> ledger line(s) have no account or no amount; they are left out of the reconciliation. - Cause: lines of the ledger used for the reconciliation have no account or no amount; one warning per file.
- Consequence: they are ignored: the reconciliation does not include their amounts.
- What to do: fill in the account and amount of these lines in the ledger and import again (Default rules, §5).
RPT-064 — Ledger item classified several times
- Level, effect:
WARNING,FLAG - Message:
Ledger item <item> has <n> classification lines; the first one is used for the reconciliation. - Cause: several classification lines match the same ledger item (for a starred item with no exact line, the first covered line in account order); one warning per file and item.
- Consequence: the first line is used for the reconciliation; the others are ignored for this item.
- What to do: keep a single classification line per item and import again (Default rules, §5).
RPT-065 — Yield missing in a parent row
- Level, effect:
WARNING,FLAG - Message:
Row <row> of <sheet>: <notional> of notional has no yield; it is left out of the weighted average yield, its notional included. - Cause: a child classification of a J 05.00 - J 07.00 parent row has notional but no yield; one warning per run, row and sheet.
- Consequence: the classification is left out, notional included, of the parent row’s weighted average yield (columns 0050 / 0300), which is that of the classifications that have a yield. The row’s notional still counts it.
- What to do: check the rates of this classification’s deals (see RPT-039) and import again (Default rules, §4.2).
RPT-066 — J 01.00 worst change with no baseline or shock
- Level, effect:
WARNING,FLAG - Message:
J 01.00 has no baseline or no supervisory shock for <currency>; the worst EVE / NII change and its ratio are left empty. - Cause: for a currency, J 01.00 has no baseline value, or no supervisory outlier test (SOT) scenario was computed; one warning per run and currency.
- Consequence: rows 0010 / 0100 (worst EVE / NII change) and ratios 0020 / 0110 are left empty: the outlier test is not computed for this currency.
- What to do: run a generation that includes the baseline and the regulatory shocks for this currency again, then the reporting (Default rules, §4.2).
RPT-067 — Accounts outside the carrying amount
- Level, effect:
INFO,FLAG - Message:
<n> account(s) typed PNL, OBS or DERIVATIVE by the accounting mapping and filed on no FINREP row are not part of the carrying amount. - Cause: balance accounts that the accounting mapping types as P&L, off-balance sheet or derivative, and that no FINREP row takes in; one line per reporting.
- Consequence: their balances are left out of the carrying amount of J 02.00, as intended.
- What to do: nothing, unless one of these accounts belongs to the balance sheet: then correct its type (mapping_compta_irrbb sheet).
RPT-068 — Positions outside a measure’s perimeter
- Level, effect:
INFO,FLAG - Message:
<n> position(s) are outside the <measure> perimeter: the classification line of their account leaves its <column> column empty or at 0. Examples: <references>. - Cause: the situation follows the perimeter flags of the classification; the classification line of these positions’ accounts leaves the measure’s column empty or at 0. One line per measure, with up to ten examples.
- Consequence: these positions are left out of that measure; the other measures are unchanged.
- What to do: nothing if that is intended; otherwise set the column to 1 on the classification line (IRRBB perimeter).
RPT-069 — A measure’s perimeter left empty
- Level, effect:
WARNING,FLAG - Message:
The <measure> perimeter is empty: none of the <n> position(s) enters it, because the classification lines of their accounts leave the <column> column empty or at 0. The figures of this measure are empty: check the classification if the column was not left blank on purpose. - Cause: the situation follows the perimeter flags of the classification, and no position enters the measure: often a column that was never filled in rather than a decision. It comes with RPT-068, which lists examples.
- Consequence: the figures of this measure are empty in the templates; the other measures are unchanged.
- What to do: fill in the column on the classification lines concerned, or take
classificationScopeoff the situation’s additional data (IRRBB perimeter), then run again. Nothing if the measure is meant to be empty.
Retired codes
These codes are no longer emitted. They stay reserved: no new anomaly takes them over.
CRV-013: a compound curve failure, passed on with the raw message of its cause; replaced by CRV-014 to CRV-017, which name the cause.CRV-004: discount curve missing from the context, with a message announcing a default index that was never applied; replaced by CRV-018, which names the index and the consequence for the calculation.RPT-023: a template filler failure, shown as a template that could not be opened; replaced by RPT-027.TRX-013,TRX-014,TRX-015: product, key or column missing from the mapping, with a message prefixed[ERROR](and “doest” for TRX-015) and the mapping key as reference; replaced by TRX-043, TRX-044 and TRX-045, whose reference is the deal.CLS-016: account missing frommapping_compta, with a message prefixed[ERROR], carried over into CLS-002 as well; replaced by CLS-019.CFW-029,CFW-030: curve far from the evaluation date, with the messageCurve distance: <days>and the whole curve as object; replaced by CFW-057 and CFW-058, which name the curve, its date and the gap in days.CFW-075: fixed swap leg without a rate, with a warning announcing a 0 % rate that was never applied (the swap was left out under CFW-004); replaced by CFW-089, which leaves the swap out and names the leg.RUN-017: run launched without a type, with a warning announcing a run stored without one that never was (the database refused it and the launch failed with a 500); no replacement: such a request is now refused with a 400 error (typerequired, nothing is stored).IMP-036: rate type neither TR nor TF; never emitted (the parser that read the column has no caller); no replacement.RUN-019: uncomputed metric exported as 0; no longer emitted since the parquet export writes an empty value; no replacement.RPT-054: yield missing in a J 05.00 parent row, with a message announcing a 0 % yield that is no longer counted; replaced by RPT-065, which says the classification is left out of the average.RPT-055: J 01.00 worst change without a baseline or a shock, with a message announcing 0 while the cells are left empty; replaced by RPT-066.IMP-017,IMP-020: required file not found in the archive, looked up by name pattern or by the name declared ininfo_*.json; replaced by IMP-061: the import request declares the role of every file.IMP-048: discount index taken frominfo_*.jsonwhen the request gave none; replaced by IMP-059: the request always carries the index.IMP-019,IMP-042,IMP-043,IMP-051,IMP-052,IMP-053,IMP-057: file name missing frominfo_*.json, several files for a pattern or a declared name, client, date or file name of a draft’s INFO file, value ofinfo_*.jsonreplaced by the one entered; no replacement:info_*.jsonis neither read nor written any more, the arrêté is entered on the import screen.IMP-011,IMP-012: check request of a guided-import file that risk-engine could not handle, or that could not be sent to it; no replacement: risk-app checks each file itself, during the upload, and sends no file to the engine any more (RUNINPUT-5).IMP-008: a classification picked on the import screen while the archive held a classification workbook; no replacement: the classification is a section of the client configuration (CONFIG-1), nothing is picked at import.CLS-026,CLS-027: hedge role of a category, orhistorows to an undeclared account, when a classification referential was created from an import or a workbook; no replacement: the classification referential was removed (CONFIG-7).
An anomaly stored under a retired code keeps it, with the message it was logged with.