Skip to content

Commit 2acc58a

Browse files
NathanielVolfangojenkins
authored andcommitted
QPR-10642 -- Add instances of structured messages to docs
1 parent b76f1da commit 2acc58a

1 file changed

Lines changed: 300 additions & 13 deletions

File tree

Docs/UserGuide/structuredmessages.tex

Lines changed: 300 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,36 +44,323 @@ \section{Structured Messages}\label{sec:structured_messages}
4444

4545
\subsection{Categories}
4646

47-
There are two main types/categories of structured messages.
47+
There are two main types (``categories'') of structured messages:
4848
\begin{enumerate}
4949
\item \textbf{Warnings} - Structured warning messages are returned when there is an apparent inconsistency in input values, or when
5050
amounts are unexpectedly large (or small). If the user intended this, then there may be nothing wrong with the calculation and the
5151
output can be assumed to be correct.
5252
\item \textbf{Errors} - Structured error messages are returned when part of a calculation has failed, or when something has gone
53-
wrong to the extent that continuing the calculation would yield nonsensical results, and hence the calculation is either skipped
54-
over or failed entirely. ORE will always attempt to complete the calculation so that only results from the failing components are
55-
missing.
53+
wrong to the extent that continuing the calculation would likely yield nonsensical results, and hence the calculation is either skipped
54+
over for that particular component or failed entirely. ORE will always attempt to complete the calculation so that only results from the
55+
working components are given.
5656
\end{enumerate}
57-
Where the distinction between the two can sometimes be unclear, a structured warning will only ever be raised for apparent
58-
inconsistencies or unusual values, while a structured error would indicate that a component has failed. Depending on the circumstances,
59-
these can either lead to a larger failure later on in the calculations, or sometimes have no impact on the output reports.
57+
Where the distinction between a warning and error can sometimes be unclear, a structured warning will only ever be raised for apparent
58+
inconsistencies or unusual values, while a structured error would indicate some kind of failure. Depending on the circumstances,
59+
these can either lead to a larger failure later on in the calculations or have no material impact on the output reports.
6060

6161
% Structured Message Groups
6262

6363
\subsection{Groups}
6464

65-
Within each category (i.e.\ warning or error), structured messages are further subdivided into groups, which give an indication of what
66-
part of ORE is failing. A structured error (warning) has a corresponding \lstinline!message! and usually an \lstinline!exceptionType!
67-
(\lstinline!warningType!) subfield. Additionally, there may be other subfields based on the structured message group, e.g.\ for
68-
structured trade error messages, the trade ID and trade type:
65+
Within each category, structured messages are further subdivided into groups, which indicate the component that the error points to.
66+
A structured error (warning) has a corresponding \lstinline!message! and usually an \lstinline!exceptionType! (\lstinline!warningType!)
67+
subfield. Additionally, there may be subfields specific to a group, e.g.\ for structured trade error messages, the trade ID and trade
68+
type:
6969

7070
\begin{itemize}
71-
\item Analytics: \lstinline!analyticType!
71+
\item Analytics: \lstinline!analyticType! (only for warnings)
7272
\item Configuration: \lstinline!configurationType!, \lstinline!configurationId!
7373
\item Model
7474
\item Curve: \lstinline!curveId!
7575
\item Trade: \lstinline!tradeId!, \lstinline!tradeType!
76+
\item Fixing: \lstinline!fixingId!, \lstinline!fixingDate!
7677
\end{itemize}
7778

79+
% Interpretation/Meaning
7880

79-
% Specific Instances of Warnings/Examples
81+
\subsection{Messages}
82+
83+
This section gives the list of the structured messages. Variables are denoted by angle brackets (``<>'').
84+
For brevity, we omit subfields in messages where the subfields are generic and self-explanatory,
85+
e.g.\ \lstinline!tradeId! and \lstinline!tradeType! in the Trade group will, unless specified otherwise,
86+
be a given instrument's trade ID and trade type.
87+
88+
\subsubsection*{Analytics Group}
89+
\begin{itemize}
90+
91+
92+
\item \lstinline!analyticType!: XvaAnalytic \\
93+
\lstinline!warningType!: Inconsistent MPoR period \\
94+
\lstinline!message!: For netting set <NETTING SET DETAILS>, close-out lag is not consistent with the netting-set's mpor
95+
96+
\item \lstinline!analyticType!: OREApp::run() \\
97+
\lstinline!warningType!: Error \\
98+
\lstinline!message!: <SUB ERR MSG>
99+
100+
\item \lstinline!analyticType!: OREApp::run() \\
101+
\lstinline!warningType!: Error in ORE analytics: <SUB ERR MSG> \\
102+
\lstinline!message!: <SUB ERR MSG>
103+
104+
\item \lstinline!exceptionType!: AMC Valuation Engine (multithreaded mode) \\
105+
\lstinline!message!: <SUB ERR MSG>
106+
107+
\item \lstinline!exceptionType!: Multithreaded Valuation Engine \\
108+
\lstinline!message!: <SUB ERR MSG>
109+
110+
\item \lstinline!exceptionType!: par sensitivity conversion \\
111+
\lstinline!message!: skipping par instrument for <CURVE NAME>: <SUB ERR MSG>
112+
113+
\item \lstinline!exceptionType!: par sensitivity conversion \\
114+
\lstinline!message!: skipping par instrument for index curve <INDEX NAME>: <SUB ERR MSG>
115+
116+
\item \lstinline!exceptionType!: par sensitivity conversion \\
117+
\lstinline!message!: skipping par cap/floor for key <KEY>: <SUB ERR MSG>
118+
119+
\item \lstinline!exceptionType!: par sensitivity conversion \\
120+
\lstinline!message!: skipping par instrument for cds <KEY>: <SUB ERR MSG>
121+
122+
\item \lstinline!exceptionType!: par sensitivity conversion \\
123+
\lstinline!message!: skipping par instrument for zero inflation index <INDEX NAME>: <SUB ERR MSG>
124+
125+
\item \lstinline!exceptionType!: par sensitivity conversion \\
126+
\lstinline!message!: skipping par instrument for yoy index <INDEX NAME>: <SUB ERR MSG>
127+
128+
\item \lstinline!exceptionType!: par sensitivity conversion \\
129+
\lstinline!message!: skipping par instrument for yoy cap floor index <INDEX NAME>: <SUB ERR MSG>
130+
131+
\item \lstinline!exceptionType!: par sensitivity conversion \\
132+
\lstinline!message!: Transposed Jacobi matrix inversion failed: <SUB ERR MSG>
133+
134+
\item \lstinline!exceptionType!: par conversion \\
135+
\lstinline!message!: par factor <FACTOR> not found in factorToIndex map
136+
137+
\ifdefined\UserGuide
138+
\else
139+
\input{structured_messages/analytics}
140+
\fi
141+
\end{itemize}
142+
143+
\subsubsection*{Configuration Group}
144+
145+
\begin{itemize}
146+
147+
\item \lstinline!configurationType!: IborFallbackConfig \\
148+
\lstinline!configurationId!: <IBOR FALLBACK INDEX> \\
149+
\lstinline!message!: update switch date from <FALLBACK SWITCH DATE> to <TARGET SWITCH DATE>
150+
151+
\item \lstinline!configurationType!: Netting set manager \\
152+
\lstinline!configurationId!: <EMPTY> \\
153+
\lstinline!message!: Netting set definnition failed to parse: <SUB ERR MSG>
154+
155+
\ifdefined\UserGuide
156+
\else
157+
\input{structured_messages/configuration}
158+
\fi
159+
160+
\end{itemize}
161+
162+
\subsubsection*{Model Group}
163+
164+
\begin{itemize}
165+
166+
\item \lstinline!exceptionType!: Failed to calibrate FX BS Model \\
167+
\lstinline!message!: FX BS <INTEGER> calibration error <ERROR VALUE> exceeds tolerance <BOOTSTRAP TOLERANCE>
168+
169+
% \item \lstinline!exceptionType!: Calibrating FX BS Model \\
170+
% \lstinline!message!: FX BS <INTEGER> calibration error <SUB ERR MSG> exceeds tolerance <CONFIG BOOSTRAP TOLERANCE>
171+
172+
\item \lstinline!exceptionType!: Failed to calibrate EQ BS Model \\
173+
\lstinline!message!: EQ BS <INTEGER> calibration error <ERROR VALUE> exceeds tolerance <BOOTSTRAP TOLERANCE>
174+
175+
% \item \lstinline!exceptionType!: Calibrating EQ BS Model \\
176+
% \lstinline!message!: EQ BS <INTEGER> calibration error <SUB ERR MSG> exceeds tolerance <CONFIG BOOSTRAP TOLERANCE>
177+
178+
% \item \lstinline!exceptionType!: Calibrating INF DK Model \\
179+
% \lstinline!message!: INF (DK) <INTEGER> calibration error <SUB ERR MSG> exceeds tolerance <CONFIG BOOSTRAP TOLERANCE>
180+
181+
\item \lstinline!exceptionType!: Failed to calibrate INF DK Model \\
182+
\lstinline!message!: INF (DK) <INTEGER> calibration error <EROR VALUE> exceeds tolerance <BOOTSTRAP TOLERANCE>
183+
184+
% \item \lstinline!exceptionType!: Calibrating INF JY Model \\
185+
% \lstinline!message!: FX BS <INTEGER> calibration error <SUB ERR MSG> exceeds tolerance <BOOTSTRAP TOLERANCE>
186+
187+
\item \lstinline!exceptionType!: Failed to calibrate INF JY Model \\
188+
\lstinline!message!: FX BS <INTEGER> calibration error <ERROR VALUE> exceeds tolerance <BOOTSTRAP TOLERANCE>
189+
190+
\item \lstinline!exceptionType!: Error during LGM calibration: \\
191+
\lstinline!message!: <SUB ERR MSG>
192+
193+
\item \lstinline!exceptionType!: Failed to calibrate LGM Model \\
194+
\lstinline!message!: LGM (<QUALIFIER>) calibration error <ERROR VALUE> exceeds tolerance <BOOTSTRAP TOLERANCE>
195+
196+
% \item \lstinline!exceptionType!: LGM calibration \\
197+
% \lstinline!message!: LGM (<QUALIFIER>) calibration error <SUB ERR MSG> exceeds tolerance <BOOTSTRAP TOLERANCE>
198+
199+
\end{itemize}
200+
201+
\subsubsection*{Curve Group}
202+
203+
\begin{itemize}
204+
205+
\item \lstinline!curveId!: <RISK FACTOR KEY>/<CURVE ID> \\
206+
\lstinline!exceptionType!: skipping this object in scenario sim market \\
207+
\lstinline!message!: <SUB ERR MSG>
208+
209+
\item \lstinline!curveId!: <RISK FACTOR KEY>/<CURVE ID> \\
210+
\lstinline!exceptionType!: skipping this object in scenario sim market (scenario data was written for this object.) \\
211+
\lstinline!message!: <SUB ERR MSG>
212+
213+
\item \lstinline!curveId!: <RISK FACTOR KEY>/<CURVE ID> \\
214+
\lstinline!exceptionType!: skipping this object in scenario sim market (scenario data was not written for this object.) \\
215+
\lstinline!message!: <SUB ERR MSG>
216+
217+
% \item \lstinline!curveId!: <CURVE ID> \\
218+
% \lstinline!exceptionType!: Curve config was requested under node `<CURVE TYPE>', but could not be parsed. \\
219+
% \lstinline!message!: <SUB ERR MSG>
220+
221+
\item \lstinline!exceptionType!: Curve config <CURVE ID> under node `<CURVE TYPE>' was requested, but could not be parsed. \\
222+
\lstinline!message!: <SUB ERR MSG>
223+
224+
\item \lstinline!curveId!: <CURVE SPEC NAME> \\
225+
\lstinline!exceptionType!: Failed to Build Curve \\
226+
\lstinline!message!: <SUB ERR MSG>
227+
228+
\item \lstinline!curveId!: <MARKET OBJECT> (<NAME>) \\
229+
\lstinline!exceptionType!: Failed to Build Curve \\
230+
\lstinline!message!: Configuration `<CONFIGURATION>' not known, retry with default configuration.
231+
232+
\item \lstinline!curveId!: <MARKET OBJECT> (<NAME>) \\
233+
\lstinline!exceptionType!: Failed to Build Curve \\
234+
\lstinline!message!: Configuration `default' not known, this is unexpected. Do nothing.
235+
236+
\ifdefined\UserGuide
237+
\else
238+
\input{structured_messages/curve}
239+
\fi
240+
241+
\end{itemize}
242+
243+
\subsubsection*{Trade Group}
244+
245+
\begin{itemize}
246+
247+
\item \lstinline!exceptionType!: Error building trade for AMC simulation \\
248+
\lstinline!message!: <SUB ERR MSG>
249+
250+
\item \lstinline!exceptionType!: Error during trade pricing \\
251+
\lstinline!message!: <SUB ERR MSG> \\
252+
\textbf{Meaning}: Failure in NPV report writing.
253+
254+
\item \lstinline!exceptionType!: Error during cashflow reporting / checking for cashFlowResults \\
255+
\lstinline!message!: <SUB ERR MSG> \\
256+
\textbf{Meaning}: Failure in cashflow report writing.
257+
258+
\item \lstinline!exceptionType!: Error during CashflowNpv calculation. \\
259+
\lstinline!message!: Cashflow in row <INTEGER> has no ccy. Assuming ccy = baseCcy = <CCY>. \\
260+
\textbf{Meaning}: Failure in cashflow report writing.
261+
262+
\item \lstinline!exceptionType!: Error during trade pricing (additional results). \\
263+
\lstinline!message!: <SUB ERR MSG>. \\
264+
\textbf{Meaning}: Failure in additional results report writing.
265+
266+
\item \lstinline!exceptionType!: Error during amc path simulation for trade. \\
267+
\lstinline!message!: <SUB ERR MSG>
268+
269+
\item \lstinline!exceptionType!: Additional instrument is ignored in AMC simulation \\
270+
\lstinline!message!: only QuantExt::Payment is handled as additional instrument.
271+
272+
\item \lstinline!exceptionType!: Error building trade for AMC simulation \\
273+
\lstinline!message!: <SUB ERRORR MESSAGE>
274+
275+
\item \lstinline!exceptionType!: ScenarioValuation \\
276+
\lstinline!message!: T0 valuation error: <SUB ERR MSG>
277+
278+
\item \lstinline!exceptionType!: ScenarioValuation \\
279+
\lstinline!message!: date = <DATE>, sample = <SAMPLE NUMBER>, label = <LABEL>: <SUB ERR MSG>
280+
281+
\item \lstinline!warningType!: Trade build \\
282+
\lstinline!message!: Found more than 1 payment date. The first one will be used.
283+
284+
\item \lstinline!tradeId!: <BOND ISSUER ID> \\
285+
\lstinline!tradeType!: Bond-linked \\
286+
\lstinline!exceptionType!: update reference data \\
287+
\lstinline!message!: modifified start date cannot be applied to multiple legs/schedules
288+
289+
\item \lstinline!tradeId!: <BOND ISSUER ID> \\
290+
\lstinline!tradeType!: Bond-linked \\
291+
\lstinline!exceptionType!: update reference data \\
292+
\lstinline!message!: modified end date cannot be applied to multiple legs/schedules
293+
294+
\item \lstinline!tradeType!: Synthetic CDO \\
295+
\lstinline!exceptionType!: Error building trade \\
296+
\lstinline!message!: Invalid Basket: found a duplicate credit curve <CREDIT CURVE>, skip it. Check the basket data for possible errors.
297+
298+
\item \lstinline!tradeType!: Synthetic CDO \\
299+
\lstinline!exceptionType!: Error building trade \\
300+
\lstinline!message!: Total remaining notional (<REMAINING NOTIONAL>) is greater than total original notional (<ORIGINAL NOTIONAL>), check the basket data for possible errors.
301+
302+
\item \lstinline!tradeType!: Synthetic CDO \\
303+
\lstinline!exceptionType!: Error building trade \\
304+
\lstinline!message!: Expected the total notional (<TOTAL NOTIONAL> = <TOTAL REMAINING NOTIONAL> + <TOTAL PRIOR NOTIONAL>) to equal the total original notional (<ORIGINAL TOTAL NOTIONAL>), check the basket data for possible errors.
305+
306+
\item \lstinline!exceptionType!: Error building composite trade \\
307+
\lstinline!message!: Component trade `<TRADE ID>' does not provide notional currency for notional <TRADE NOTIONAL>. Assuming <NPV CURRENCY>.
308+
309+
\item \lstinline!warningType!: Trade build \\
310+
\lstinline!message!: Found more than 1 payment date. The first one will be used.
311+
312+
\item \lstinline!tradeType!: IndexCDS \\
313+
\lstinline!exceptionType!: Error building trade \\
314+
\lstinline!message!: Invalid Basket: found a duplicate credit curve <CREDIT CURVE NAME>, skip it. Check the basket data for possible errors.
315+
316+
\item \lstinline!tradeType!: IndexCDS \\
317+
\lstinline!exceptionType!: Error building trade \\
318+
\lstinline!message!: Sum of basket notionals (<BASKET NOTIONAL>) is greater than trade notional (<NOTIONAL>). Check the basket data for possible errors.
319+
320+
\item \lstinline!warningType!: Could not imply Index CDS term. \\
321+
\lstinline!message!: Index CDS term could not be derived from start, end date, are these dates correct (credit curve id is `<CREDIT CURVE ID>')
322+
323+
\item \lstinline!tradeType!: IndexCDSOption \\
324+
\lstinline!exceptionType!: Error building trade \\
325+
\lstinline!message!: Invalid Basket: found a duplicate credit curve <CREDIT CURVE NAME>.Skip it. Check the basket data for possible errors.
326+
327+
\item \lstinline!tradeType!: IndexCDSOption \\
328+
\lstinline!exceptionType!: Error building trade \\
329+
\lstinline!message!: Sum of basket notionals (<BASKET NOTIONAL>) is greater than trade notional (<FULL NOTIONAL>). Check the basket data for possible errors.
330+
331+
\item \lstinline!exceptionType!: Error parsing Trade XML \\
332+
\lstinline!message!: <SUB ERR MSG>
333+
334+
\item \lstinline!exceptionType!: Error parsing type and envelope \\
335+
\lstinline!message!: <SUB ERR MSG>
336+
337+
\item \lstinline!exceptionType!: Trade is Matured \\
338+
\lstinline!message!: <EMPTY>
339+
340+
\item \lstinline!exceptionType!: Error retrieving underlying indices \\
341+
\lstinline!message!: <SUB ERR MSG>
342+
343+
\item \lstinline!exceptionType!: Error building trade for context `<CONTEXT>' \\
344+
\lstinline!message!: <SUB ERR MSG>
345+
346+
\ifdefined\UserGuide
347+
\else
348+
\input{structured_messages/trade}
349+
\fi
350+
351+
\end{itemize}
352+
353+
\subsubsection*{Fixing Group}
354+
355+
\begin{itemize}
356+
357+
\item \lstinline!exceptionType!: Missing fixing \\
358+
\lstinline!message!: Could not find required fixing id <FIXING ID> for date <FIXING DATE><SUB ERR MSG>
359+
360+
\ifdefined\UserGuide
361+
\else
362+
\input{structured_messages/fixing}
363+
\fi
364+
365+
366+
\end{itemize}

0 commit comments

Comments
 (0)