Skip to content

Commit 795de96

Browse files
mgronckijenkins
authored andcommitted
Merge remote-tracking branch 'origin/master' into QPR-12148
2 parents a2a2ac7 + a05b035 commit 795de96

14 files changed

Lines changed: 253 additions & 78 deletions

File tree

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
@@ -20,6 +20,7 @@ app/analytic.cpp
2020
app/analytics/analyticfactory.cpp
2121
app/analytics/imscheduleanalytic.cpp
2222
app/analytics/parconversionanalytic.cpp
23+
app/analytics/pnlanalytic.cpp
2324
app/analytics/parstressconversionanalytic.cpp
2425
app/analytics/pricinganalytic.cpp
2526
app/analytics/scenarioanalytic.cpp
@@ -28,7 +29,6 @@ app/analytics/simmanalytic.cpp
2829
app/analytics/stresstestanalytic.cpp
2930
app/analytics/varanalytic.cpp
3031
app/analytics/xvaanalytic.cpp
31-
app/analytics/pnlanalytic.cpp
3232
app/analyticsmanager.cpp
3333
app/cleanupsingletons.cpp
3434
app/initbuilders.cpp
@@ -175,6 +175,7 @@ app/analytic.hpp
175175
app/analytics/analyticfactory.hpp
176176
app/analytics/imscheduleanalytic.hpp
177177
app/analytics/parconversionanalytic.hpp
178+
app/analytics/pnlanalytic.hpp
178179
app/analytics/parstressconversionanalytic.hpp
179180
app/analytics/pricinganalytic.hpp
180181
app/analytics/scenarioanalytic.hpp
@@ -183,7 +184,6 @@ app/analytics/simmanalytic.hpp
183184
app/analytics/stresstestanalytic.hpp
184185
app/analytics/varanalytic.hpp
185186
app/analytics/xvaanalytic.hpp
186-
app/analytics/pnlanalytic.hpp
187187
app/analyticsmanager.hpp
188188
app/cleanupsingletons.hpp
189189
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)