Skip to content

Commit afab6eb

Browse files
damienbarkerjenkins
authored andcommitted
QPR-12242 merge with master
2 parents 026dacf + 13be379 commit afab6eb

23 files changed

Lines changed: 444 additions & 172 deletions

Docs/UserGuide/parameterisation/curveconfig.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ \subsubsection{Swaption Volatility Structures}
109109
Antonov2015FreeBoundaryNormal, KienitzLawsonSwaynePde, FlochKennedy. If not given, defaults to Linear.
110110
\item ParametricSmileConfiguration: Optional. Applies to SABR only. If not given, default values are used. Allows to
111111
specify initial values for calibrated parameters, to exclude single parameters from calibration and to set calibration
112-
parameters.
112+
parameters. See Example 60 for how to configure single value and termstructures of sabr parameters for swaption and cap curve configs.
113113
\item Extrapolation: Specifies the extrapolation behaviour in all dimensions. \\ Allowable values: {\tt Linear, Flat,
114114
None}
115115
\item OutputVolatilityType: Optional, defaults to input volatility type and applies to SABR variants only. For
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#TradeId,TradeType,Maturity,MaturityTime,NPV,NpvCurrency,NPV(Base),BaseCurrency,Notional,NotionalCurrency,Notional(Base),NettingSet,CounterParty
2-
Cap_USD_SOFR,Swap,2025-03-21,1.003324,0.000931,USD,0.000931,USD,100000000.00,USD,100000000.00,DUMMY_NS,DUMMY_CP
2+
Cap_USD_SOFR,Swap,2025-03-21,1.003324,290.635657,USD,290.635657,USD,100000000.00,USD,100000000.00,DUMMY_NS,DUMMY_CP
33
Swaption_USD_SOFR,Swaption,2046-01-12,21.817022,250911.447904,USD,250911.447904,USD,100000000.00,USD,100000000.00,DUMMY_NS,DUMMY_CP

Examples/Example_60/Input/curveconfig.xml

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,29 @@
5555
<IsFixed>false</IsFixed>
5656
</Parameter>
5757
</Parameters>
58+
<!-- alternatively, the parameters can be specified for each optionlet, e.g.: -->
59+
<!-- <Parameters> -->
60+
<!-- <Parameter> -->
61+
<!-- <Name>alpha</Name> -->
62+
<!-- <InitialValue>0.0050,0.0060,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050</InitialValue> -->
63+
<!-- <IsFixed>true</IsFixed> -->
64+
<!-- </Parameter> -->
65+
<!-- <Parameter> -->
66+
<!-- <Name>beta</Name> -->
67+
<!-- <InitialValue>0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1</InitialValue> -->
68+
<!-- <IsFixed>true</IsFixed> -->
69+
<!-- </Parameter> -->
70+
<!-- <Parameter> -->
71+
<!-- <Name>nu</Name> -->
72+
<!-- <InitialValue>0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.20,0.30</InitialValue> -->
73+
<!-- <IsFixed>true</IsFixed> -->
74+
<!-- </Parameter> -->
75+
<!-- <Parameter> -->
76+
<!-- <Name>rho</Name> -->
77+
<!-- <InitialValue>0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.9,0.0,0.0</InitialValue> -->
78+
<!-- <IsFixed>true</IsFixed> -->
79+
<!-- </Parameter> -->
80+
<!-- </Parameters> -->
5881
<Calibration>
5982
<MaxCalibrationAttempts>10</MaxCalibrationAttempts>
6083
<ExitEarlyErrorThreshold>0.005</ExitEarlyErrorThreshold>
@@ -116,6 +139,109 @@
116139
<IsFixed>false</IsFixed>
117140
</Parameter>
118141
</Parameters>
142+
<!-- alternatively the parameters can be specified per option tenor (row) and swap tenor (col), e.g.: -->
143+
<!-- <Parameters> -->
144+
<!-- <Parameter> -->
145+
<!-- <Name>alpha</Name> -->
146+
<!-- <InitialValue> -->
147+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0070, -->
148+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
149+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
150+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
151+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
152+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
153+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
154+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
155+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
156+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
157+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
158+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
159+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
160+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
161+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
162+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
163+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
164+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050, -->
165+
<!-- 0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050,0.0050 -->
166+
<!-- </InitialValue> -->
167+
<!-- <IsFixed>true</IsFixed> -->
168+
<!-- </Parameter> -->
169+
<!-- <Parameter> -->
170+
<!-- <Name>beta</Name> -->
171+
<!-- <InitialValue> -->
172+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
173+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
174+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
175+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
176+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
177+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
178+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
179+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
180+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
181+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
182+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
183+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
184+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
185+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
186+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
187+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
188+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
189+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
190+
<!-- 0.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -->
191+
<!-- </InitialValue> -->
192+
<!-- <IsFixed>true</IsFixed> -->
193+
<!-- </Parameter> -->
194+
<!-- <Parameter> -->
195+
<!-- <Name>nu</Name> -->
196+
<!-- <InitialValue> -->
197+
<!-- 0.20,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
198+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
199+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
200+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
201+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
202+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
203+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
204+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
205+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
206+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
207+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
208+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
209+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
210+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
211+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
212+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
213+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
214+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30, -->
215+
<!-- 0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30 -->
216+
<!-- </InitialValue> -->
217+
<!-- <IsFixed>true</IsFixed> -->
218+
<!-- </Parameter> -->
219+
<!-- <Parameter> -->
220+
<!-- <Name>rho</Name> -->
221+
<!-- <InitialValue> -->
222+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
223+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
224+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
225+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
226+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
227+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
228+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
229+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
230+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
231+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
232+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
233+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
234+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
235+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
236+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
237+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
238+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
239+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, -->
240+
<!-- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.99 -->
241+
<!-- </InitialValue> -->
242+
<!-- <IsFixed>true</IsFixed> -->
243+
<!-- </Parameter> -->
244+
<!-- </Parameters> -->
119245
<Calibration>
120246
<MaxCalibrationAttempts>10</MaxCalibrationAttempts>
121247
<ExitEarlyErrorThreshold>0.005</ExitEarlyErrorThreshold>

OREAnalytics/orea/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ app/analytics/analyticfactory.cpp
2121
app/analytics/imscheduleanalytic.cpp
2222
app/analytics/parconversionanalytic.cpp
2323
app/analytics/pnlexplainanalytic.cpp
24+
app/analytics/pnlanalytic.cpp
2425
app/analytics/pricinganalytic.cpp
2526
app/analytics/scenarioanalytic.cpp
2627
app/analytics/scenariostatisticsanalytic.cpp
2728
app/analytics/simmanalytic.cpp
2829
app/analytics/varanalytic.cpp
2930
app/analytics/xvaanalytic.cpp
30-
app/analytics/pnlanalytic.cpp
3131
app/analyticsmanager.cpp
3232
app/cleanupsingletons.cpp
3333
app/initbuilders.cpp
@@ -172,13 +172,13 @@ app/analytics/analyticfactory.hpp
172172
app/analytics/imscheduleanalytic.hpp
173173
app/analytics/parconversionanalytic.hpp
174174
app/analytics/pnlexplainanalytic.hpp
175+
app/analytics/pnlanalytic.hpp
175176
app/analytics/pricinganalytic.hpp
176177
app/analytics/scenarioanalytic.hpp
177178
app/analytics/scenariostatisticsanalytic.hpp
178179
app/analytics/simmanalytic.hpp
179180
app/analytics/varanalytic.hpp
180181
app/analytics/xvaanalytic.hpp
181-
app/analytics/pnlanalytic.hpp
182182
app/analyticsmanager.hpp
183183
app/cleanupsingletons.hpp
184184
app/initbuilders.hpp

OREData/ored/configuration/parametricsmileconfiguration.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace data {
2727
void ParametricSmileConfiguration::Parameter::fromXML(XMLNode* node) {
2828
XMLUtils::checkNode(node, "Parameter");
2929
name = XMLUtils::getChildValue(node, "Name", true);
30-
initialValue = parseReal(XMLUtils::getChildValue(node, "InitialValue", true));
30+
initialValue = parseListOfValues<Real>(XMLUtils::getChildValue(node, "InitialValue", true), parseReal);
3131
isFixed = parseBool(XMLUtils::getChildValue(node, "IsFixed", true));
3232
}
3333

OREData/ored/configuration/parametricsmileconfiguration.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ParametricSmileConfiguration : public XMLSerializable {
4040
ore::data::XMLNode* toXML(ore::data::XMLDocument& doc) const override;
4141

4242
std::string name;
43-
double initialValue = 0.0;
43+
std::vector<double> initialValue = {0.0};
4444
bool isFixed = false;
4545
};
4646

0 commit comments

Comments
 (0)