Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
Functions
sensitivityanalysisanalytic.cpp File Reference
#include "testmarket.hpp"
#include "testportfolio.hpp"
#include <boost/test/unit_test.hpp>
#include <orea/cube/inmemorycube.hpp>
#include <orea/cube/npvcube.hpp>
#include <orea/engine/filteredsensitivitystream.hpp>
#include <orea/engine/observationmode.hpp>
#include <orea/engine/parametricvar.hpp>
#include <orea/engine/riskfilter.hpp>
#include <orea/engine/sensitivityaggregator.hpp>
#include <orea/engine/sensitivityanalysis.hpp>
#include <orea/engine/sensitivitycubestream.hpp>
#include <orea/engine/sensitivityfilestream.hpp>
#include <orea/engine/sensitivityinmemorystream.hpp>
#include <orea/engine/sensitivityrecord.hpp>
#include <orea/engine/sensitivitystream.hpp>
#include <orea/engine/stresstest.hpp>
#include <orea/engine/valuationcalculator.hpp>
#include <orea/engine/valuationengine.hpp>
#include <orea/scenario/clonescenariofactory.hpp>
#include <orea/scenario/scenariosimmarket.hpp>
#include <orea/scenario/scenariosimmarketparameters.hpp>
#include <orea/scenario/sensitivityscenariogenerator.hpp>
#include <oret/toplevelfixture.hpp>
#include <test/oreatoplevelfixture.hpp>
#include <ored/model/lgmdata.hpp>
#include <ored/portfolio/builders/capfloor.hpp>
#include <ored/portfolio/builders/fxforward.hpp>
#include <ored/portfolio/builders/fxoption.hpp>
#include <ored/portfolio/builders/swap.hpp>
#include <ored/portfolio/builders/swaption.hpp>
#include <ored/portfolio/fxoption.hpp>
#include <ored/portfolio/portfolio.hpp>
#include <ored/portfolio/swap.hpp>
#include <ored/portfolio/swaption.hpp>
#include <ored/utilities/log.hpp>
#include <ored/utilities/osutils.hpp>
#include <ql/math/randomnumbers/mt19937uniformrng.hpp>
#include <ql/time/calendars/target.hpp>
#include <ql/time/date.hpp>
#include <ql/time/daycounters/actualactual.hpp>

Go to the source code of this file.

Functions

 BOOST_AUTO_TEST_CASE (testSensitivities)
 

Function Documentation

◆ BOOST_AUTO_TEST_CASE()

BOOST_AUTO_TEST_CASE ( testSensitivities  )

Definition at line 254 of file sensitivityanalysisanalytic.cpp.

254 {
255
256 BOOST_TEST_MESSAGE("Checking sensitivity analysis results vs analytic sensi engine results...");
257
258 SavedSettings backup;
259
260 ObservationMode::Mode backupMode = ObservationMode::instance().mode();
261 ObservationMode::instance().setMode(ObservationMode::Mode::None);
262
263 Date today = Date(14, April, 2016); // Settings::instance().evaluationDate();
264 Settings::instance().evaluationDate() = today;
265
266 BOOST_TEST_MESSAGE("Today is " << today);
267
268 // Init market
269 QuantLib::ext::shared_ptr<Market> initMarket = QuantLib::ext::make_shared<TestMarket>(today);
270
271 // build scenario sim market parameters
272 QuantLib::ext::shared_ptr<analytics::ScenarioSimMarketParameters> simMarketData = setupSimMarketData5();
273
274 // sensitivity config
275 QuantLib::ext::shared_ptr<SensitivityScenarioData> sensiData = setupSensitivityScenarioData5();
276
277 // build scenario sim market
278 conv();
279
280 // build portfolio
281 QuantLib::ext::shared_ptr<EngineData> data = QuantLib::ext::make_shared<EngineData>();
282 data->model("Swap") = "DiscountedCashflows";
283 data->engine("Swap") = "DiscountingSwapEngine";
284 data->model("CrossCurrencySwap") = "DiscountedCashflows";
285 data->engine("CrossCurrencySwap") = "DiscountingCrossCurrencySwapEngine";
286 data->model("FxOption") = "GarmanKohlhagen";
287 data->engine("FxOption") = "AnalyticEuropeanEngine";
288
289 // QuantLib::ext::shared_ptr<Portfolio> portfolio = buildSwapPortfolio(portfolioSize, factory);
290 QuantLib::ext::shared_ptr<Portfolio> portfolio(new Portfolio());
291 portfolio->add(
292 buildSwap("1_Swap_EUR", "EUR", true, 10.0, 0, 10, 0.03, 0.00, "1Y", "30/360", "6M", "A360", "EUR-EURIBOR-6M"));
293 portfolio->add(buildFxOption("7_FxOption_EUR_USD", "Long", "Call", 3, "EUR", 10.0, "USD", 11.0));
294
295 // analytic results
296 map<string, Real> analyticalResultsDelta = {{"1_Swap_EUR DiscountCurve/EUR/0/1M", 0},
297 {"1_Swap_EUR DiscountCurve/EUR/1/6M", -0.0251638},
298 {"1_Swap_EUR DiscountCurve/EUR/10/20Y", 0},
299 {"1_Swap_EUR DiscountCurve/EUR/11/30Y", 0},
300 {"1_Swap_EUR DiscountCurve/EUR/2/1Y", 0.146855},
301 {"1_Swap_EUR DiscountCurve/EUR/3/2Y", 0.190109},
302 {"1_Swap_EUR DiscountCurve/EUR/4/3Y", 0.279228},
303 {"1_Swap_EUR DiscountCurve/EUR/5/4Y", 0.364784},
304 {"1_Swap_EUR DiscountCurve/EUR/6/5Y", 0.66847},
305 {"1_Swap_EUR DiscountCurve/EUR/7/7Y", 1.49473},
306 {"1_Swap_EUR DiscountCurve/EUR/8/10Y", 2.05151},
307 {"1_Swap_EUR DiscountCurve/EUR/9/15Y", 0},
308 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
309 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M", -4.95025},
310 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
311 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
312 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y", 0.146584},
313 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y", 0.385931},
314 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y", 0.567839},
315 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y", 0.74296},
316 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y", 1.35326},
317 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y", 3.03756},
318 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/8/10Y", 84.7885},
319 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
320 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M", 0},
321 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M", 0},
322 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y", 0},
323 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y", 0},
324 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y", 0},
325 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y", 0},
326 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y", -21.0493},
327 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y", -0.0770026},
328 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y", 0},
329 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y", 0},
330 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y", 0},
331 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y", 0},
332 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M", 0},
333 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M", 0},
334 {"7_FxOption_EUR_USD DiscountCurve/USD/10/20Y", 0},
335 {"7_FxOption_EUR_USD DiscountCurve/USD/11/30Y", 0},
336 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y", 0},
337 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y", 0},
338 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y", 16.9542},
339 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y", 0.0620218},
340 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y", 0},
341 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y", 0},
342 {"7_FxOption_EUR_USD DiscountCurve/USD/8/10Y", 0},
343 {"7_FxOption_EUR_USD DiscountCurve/USD/9/15Y", 0},
344 {"7_FxOption_EUR_USD FXSpot/EURUSD/0/spot", 4.72549},
345 {"7_FxOption_EUR_USD FXVolatility/EURUSD/0/5Y/ATM", 5.21067}};
346
347 map<string, Real> analyticalResultsGamma = {{"1_Swap_EUR DiscountCurve/EUR/0/1M", 0},
348 {"1_Swap_EUR DiscountCurve/EUR/1/6M", 0.0125819},
349 {"1_Swap_EUR DiscountCurve/EUR/10/20Y", 0},
350 {"1_Swap_EUR DiscountCurve/EUR/11/30Y", 0},
351 {"1_Swap_EUR DiscountCurve/EUR/2/1Y", -0.16852},
352 {"1_Swap_EUR DiscountCurve/EUR/3/2Y", -0.558829},
353 {"1_Swap_EUR DiscountCurve/EUR/4/3Y", -1.24741},
354 {"1_Swap_EUR DiscountCurve/EUR/5/4Y", -2.19217},
355 {"1_Swap_EUR DiscountCurve/EUR/6/5Y", -3.64545},
356 {"1_Swap_EUR DiscountCurve/EUR/7/7Y", -8.45766},
357 {"1_Swap_EUR DiscountCurve/EUR/8/10Y", -17.5009},
358 {"1_Swap_EUR DiscountCurve/EUR/9/15Y", 0},
359 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
360 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M", 2.47512},
361 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
362 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
363 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y", 14.3979},
364 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y", 37.7122},
365 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y", 84.1478},
366 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y", 148.04},
367 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y", 170.402},
368 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y", 178.37},
369 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/8/10Y", 141.3},
370 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
371 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M", 0},
372 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M", 0},
373 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y", 0},
374 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y", 0},
375 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y", 0},
376 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y", 0},
377 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y", 192.286},
378 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y", 0.00257327},
379 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y", 0},
380 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y", 0},
381 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y", 0},
382 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y", 0},
383 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M", 0},
384 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M", 0},
385 {"7_FxOption_EUR_USD DiscountCurve/USD/10/20Y", 0},
386 {"7_FxOption_EUR_USD DiscountCurve/USD/11/30Y", 0},
387 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y", 0},
388 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y", 0},
389 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y", 78.6621},
390 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y", 0.00105269},
391 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y", 0},
392 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y", 0},
393 {"7_FxOption_EUR_USD DiscountCurve/USD/8/10Y", 0},
394 {"7_FxOption_EUR_USD DiscountCurve/USD/9/15Y", 0},
395 {"7_FxOption_EUR_USD FXSpot/EURUSD/0/spot", 2.17301}};
396
397 map<string, Real> analyticalResultsCrossGamma = {
398 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/1/6M", 0},
399 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/10/20Y", 0},
400 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/11/30Y", 0},
401 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/2/1Y", 0},
402 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/3/2Y", 0},
403 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/4/3Y", 0},
404 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/5/4Y", 0},
405 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/6/5Y", 0},
406 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/7/7Y", 0},
407 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/8/10Y", 0},
408 {"1_Swap_EUR DiscountCurve/EUR/0/1M DiscountCurve/EUR/9/15Y", 0},
409 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
410 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
411 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
412 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
413 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
414 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
415 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
416 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
417 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
418 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
419 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
420 {"1_Swap_EUR DiscountCurve/EUR/0/1M IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
421 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/10/20Y", 0},
422 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/11/30Y", 0},
423 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/2/1Y", 0},
424 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/3/2Y", 0},
425 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/4/3Y", 0},
426 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/5/4Y", 0},
427 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/6/5Y", 0},
428 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/7/7Y", 0},
429 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/8/10Y", 0},
430 {"1_Swap_EUR DiscountCurve/EUR/1/6M DiscountCurve/EUR/9/15Y", 0},
431 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
432 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
433 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
434 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
435 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
436 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
437 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
438 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
439 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
440 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
441 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
442 {"1_Swap_EUR DiscountCurve/EUR/1/6M IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
443 {"1_Swap_EUR DiscountCurve/EUR/10/20Y DiscountCurve/EUR/11/30Y", 0},
444 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
445 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
446 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
447 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
448 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
449 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
450 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
451 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
452 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
453 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
454 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
455 {"1_Swap_EUR DiscountCurve/EUR/10/20Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
456 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
457 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
458 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
459 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
460 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
461 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
462 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
463 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
464 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
465 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
466 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
467 {"1_Swap_EUR DiscountCurve/EUR/11/30Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
468 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/10/20Y", 0},
469 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/11/30Y", 0},
470 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/3/2Y", 0.0439491},
471 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/4/3Y", 0},
472 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/5/4Y", 0},
473 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/6/5Y", 0},
474 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/7/7Y", 0},
475 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/8/10Y", 0},
476 {"1_Swap_EUR DiscountCurve/EUR/2/1Y DiscountCurve/EUR/9/15Y", 0},
477 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
478 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/1/6M", 4.8864},
479 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
480 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
481 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/2/1Y", -7.2595},
482 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/3/2Y", -4.99316},
483 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
484 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
485 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
486 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
487 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
488 {"1_Swap_EUR DiscountCurve/EUR/2/1Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
489 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/10/20Y", 0},
490 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/11/30Y", 0},
491 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/4/3Y", 0.136543},
492 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/5/4Y", 0},
493 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/6/5Y", 0},
494 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/7/7Y", 0},
495 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/8/10Y", 0},
496 {"1_Swap_EUR DiscountCurve/EUR/3/2Y DiscountCurve/EUR/9/15Y", 0},
497 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
498 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0.108392},
499 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
500 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
501 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 14.1881},
502 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/3/2Y", -19.1426},
503 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/4/3Y", -14.5467},
504 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
505 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
506 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
507 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
508 {"1_Swap_EUR DiscountCurve/EUR/3/2Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
509 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/10/20Y", 0},
510 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/11/30Y", 0},
511 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/5/4Y", 0.274041},
512 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/6/5Y", 0},
513 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/7/7Y", 0},
514 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/8/10Y", 0},
515 {"1_Swap_EUR DiscountCurve/EUR/4/3Y DiscountCurve/EUR/9/15Y", 0},
516 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
517 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
518 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
519 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
520 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0.0784567},
521 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 42.4881},
522 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/4/3Y", -42.7095},
523 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/5/4Y", -28.3908},
524 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
525 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
526 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
527 {"1_Swap_EUR DiscountCurve/EUR/4/3Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
528 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/10/20Y", 0},
529 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/11/30Y", 0},
530 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/6/5Y", 0.459076},
531 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/7/7Y", 0},
532 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/8/10Y", 0},
533 {"1_Swap_EUR DiscountCurve/EUR/5/4Y DiscountCurve/EUR/9/15Y", 0},
534 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
535 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
536 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
537 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
538 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
539 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0.10308},
540 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 83.8339},
541 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/5/4Y", -75.1334},
542 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/6/5Y", -46.1375},
543 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
544 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
545 {"1_Swap_EUR DiscountCurve/EUR/5/4Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
546 {"1_Swap_EUR DiscountCurve/EUR/6/5Y DiscountCurve/EUR/10/20Y", 0},
547 {"1_Swap_EUR DiscountCurve/EUR/6/5Y DiscountCurve/EUR/11/30Y", 0},
548 {"1_Swap_EUR DiscountCurve/EUR/6/5Y DiscountCurve/EUR/7/7Y", -0.376937},
549 {"1_Swap_EUR DiscountCurve/EUR/6/5Y DiscountCurve/EUR/8/10Y", 0},
550 {"1_Swap_EUR DiscountCurve/EUR/6/5Y DiscountCurve/EUR/9/15Y", 0},
551 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
552 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
553 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
554 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
555 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
556 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
557 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
558 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 137.497},
559 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/6/5Y", -87.5996},
560 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/7/7Y", -117.899},
561 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
562 {"1_Swap_EUR DiscountCurve/EUR/6/5Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
563 {"1_Swap_EUR DiscountCurve/EUR/7/7Y DiscountCurve/EUR/10/20Y", 0},
564 {"1_Swap_EUR DiscountCurve/EUR/7/7Y DiscountCurve/EUR/11/30Y", 0},
565 {"1_Swap_EUR DiscountCurve/EUR/7/7Y DiscountCurve/EUR/8/10Y", -2.10692},
566 {"1_Swap_EUR DiscountCurve/EUR/7/7Y DiscountCurve/EUR/9/15Y", 0},
567 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
568 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
569 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
570 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
571 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
572 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
573 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
574 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
575 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 193.901},
576 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/7/7Y", -96.4279},
577 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/8/10Y", -250.112},
578 {"1_Swap_EUR DiscountCurve/EUR/7/7Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
579 {"1_Swap_EUR DiscountCurve/EUR/8/10Y DiscountCurve/EUR/10/20Y", 0},
580 {"1_Swap_EUR DiscountCurve/EUR/8/10Y DiscountCurve/EUR/11/30Y", 0},
581 {"1_Swap_EUR DiscountCurve/EUR/8/10Y DiscountCurve/EUR/9/15Y", 0},
582 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
583 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
584 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
585 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
586 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
587 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
588 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
589 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
590 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
591 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 343.241},
592 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/8/10Y", -490.385},
593 {"1_Swap_EUR DiscountCurve/EUR/8/10Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
594 {"1_Swap_EUR DiscountCurve/EUR/9/15Y DiscountCurve/EUR/10/20Y", 0},
595 {"1_Swap_EUR DiscountCurve/EUR/9/15Y DiscountCurve/EUR/11/30Y", 0},
596 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/0/1M", 0},
597 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
598 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
599 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
600 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
601 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
602 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
603 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
604 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
605 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
606 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
607 {"1_Swap_EUR DiscountCurve/EUR/9/15Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
608 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/1/6M", 0},
609 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
610 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
611 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/2/1Y", 0},
612 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/3/2Y", 0},
613 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
614 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
615 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
616 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
617 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
618 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/0/1M IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
619 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
620 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
621 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/2/1Y", -4.8864},
622 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/3/2Y", -0.108392},
623 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/4/3Y", 0},
624 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
625 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
626 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
627 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
628 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/1/6M IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
629 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/10/20Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
630 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
631 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
632 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/3/2Y", -9.24531},
633 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/4/3Y", -0.0784567},
634 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/5/4Y", 0},
635 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
636 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
637 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
638 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/2/1Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
639 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
640 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
641 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/4/3Y", -28.0873},
642 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/5/4Y", -0.10308},
643 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
644 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
645 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
646 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/3/2Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
647 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
648 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
649 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/5/4Y", -55.7263},
650 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/6/5Y", 0},
651 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
652 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
653 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/4/3Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
654 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
655 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
656 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/6/5Y", -91.8185},
657 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/7/7Y", 0},
658 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
659 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/5/4Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
660 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
661 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
662 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y IndexCurve/EUR-EURIBOR-6M/7/7Y", -77.9517},
663 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y IndexCurve/EUR-EURIBOR-6M/8/10Y", 0},
664 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/6/5Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
665 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
666 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
667 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y IndexCurve/EUR-EURIBOR-6M/8/10Y", -98.9016},
668 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/7/7Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
669 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/8/10Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
670 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/8/10Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
671 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/8/10Y IndexCurve/EUR-EURIBOR-6M/9/15Y", 0},
672 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/9/15Y IndexCurve/EUR-EURIBOR-6M/10/20Y", 0},
673 {"1_Swap_EUR IndexCurve/EUR-EURIBOR-6M/9/15Y IndexCurve/EUR-EURIBOR-6M/11/30Y", 0},
674 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/1/6M", 0},
675 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/10/20Y", 0},
676 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/11/30Y", 0},
677 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/2/1Y", 0},
678 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/3/2Y", 0},
679 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/4/3Y", 0},
680 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/5/4Y", 0},
681 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/6/5Y", 0},
682 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/7/7Y", 0},
683 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/8/10Y", 0},
684 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/EUR/9/15Y", 0},
685 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/0/1M", 0},
686 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/1/6M", 0},
687 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/10/20Y", 0},
688 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/11/30Y", 0},
689 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/2/1Y", 0},
690 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/3/2Y", 0},
691 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/4/3Y", 0},
692 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/5/4Y", 0},
693 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/6/5Y", 0},
694 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/7/7Y", 0},
695 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/8/10Y", 0},
696 {"7_FxOption_EUR_USD DiscountCurve/EUR/0/1M DiscountCurve/USD/9/15Y", 0},
697 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/10/20Y", 0},
698 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/11/30Y", 0},
699 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/2/1Y", 0},
700 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/3/2Y", 0},
701 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/4/3Y", 0},
702 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/5/4Y", 0},
703 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/6/5Y", 0},
704 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/7/7Y", 0},
705 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/8/10Y", 0},
706 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/EUR/9/15Y", 0},
707 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/0/1M", 0},
708 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/1/6M", 0},
709 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/10/20Y", 0},
710 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/11/30Y", 0},
711 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/2/1Y", 0},
712 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/3/2Y", 0},
713 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/4/3Y", 0},
714 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/5/4Y", 0},
715 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/6/5Y", 0},
716 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/7/7Y", 0},
717 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/8/10Y", 0},
718 {"7_FxOption_EUR_USD DiscountCurve/EUR/1/6M DiscountCurve/USD/9/15Y", 0},
719 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/EUR/11/30Y", 0},
720 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/0/1M", 0},
721 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/1/6M", 0},
722 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/10/20Y", 0},
723 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/11/30Y", 0},
724 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/2/1Y", 0},
725 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/3/2Y", 0},
726 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/4/3Y", 0},
727 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/5/4Y", 0},
728 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/6/5Y", 0},
729 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/7/7Y", 0},
730 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/8/10Y", 0},
731 {"7_FxOption_EUR_USD DiscountCurve/EUR/10/20Y DiscountCurve/USD/9/15Y", 0},
732 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/0/1M", 0},
733 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/1/6M", 0},
734 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/10/20Y", 0},
735 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/11/30Y", 0},
736 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/2/1Y", 0},
737 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/3/2Y", 0},
738 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/4/3Y", 0},
739 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/5/4Y", 0},
740 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/6/5Y", 0},
741 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/7/7Y", 0},
742 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/8/10Y", 0},
743 {"7_FxOption_EUR_USD DiscountCurve/EUR/11/30Y DiscountCurve/USD/9/15Y", 0},
744 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/10/20Y", 0},
745 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/11/30Y", 0},
746 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/3/2Y", 0},
747 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/4/3Y", 0},
748 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/5/4Y", 0},
749 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/6/5Y", 0},
750 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/7/7Y", 0},
751 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/8/10Y", 0},
752 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/EUR/9/15Y", 0},
753 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/0/1M", 0},
754 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/1/6M", 0},
755 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/10/20Y", 0},
756 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/11/30Y", 0},
757 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/2/1Y", 0},
758 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/3/2Y", 0},
759 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/4/3Y", 0},
760 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/5/4Y", 0},
761 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/6/5Y", 0},
762 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/7/7Y", 0},
763 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/8/10Y", 0},
764 {"7_FxOption_EUR_USD DiscountCurve/EUR/2/1Y DiscountCurve/USD/9/15Y", 0},
765 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/10/20Y", 0},
766 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/11/30Y", 0},
767 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/4/3Y", 0},
768 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/5/4Y", 0},
769 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/6/5Y", 0},
770 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/7/7Y", 0},
771 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/8/10Y", 0},
772 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/EUR/9/15Y", 0},
773 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/0/1M", 0},
774 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/1/6M", 0},
775 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/10/20Y", 0},
776 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/11/30Y", 0},
777 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/2/1Y", 0},
778 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/3/2Y", 0},
779 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/4/3Y", 0},
780 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/5/4Y", 0},
781 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/6/5Y", 0},
782 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/7/7Y", 0},
783 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/8/10Y", 0},
784 {"7_FxOption_EUR_USD DiscountCurve/EUR/3/2Y DiscountCurve/USD/9/15Y", 0},
785 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/10/20Y", 0},
786 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/11/30Y", 0},
787 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/5/4Y", 0.703423},
788 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/6/5Y", 0},
789 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/7/7Y", 0},
790 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/8/10Y", 0},
791 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/EUR/9/15Y", 0},
792 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/0/1M", 0},
793 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/1/6M", 0},
794 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/10/20Y", 0},
795 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/11/30Y", 0},
796 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/2/1Y", 0},
797 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/3/2Y", 0},
798 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/4/3Y", -129.352},
799 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/5/4Y", -0.473197},
800 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/6/5Y", 0},
801 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/7/7Y", 0},
802 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/8/10Y", 0},
803 {"7_FxOption_EUR_USD DiscountCurve/EUR/4/3Y DiscountCurve/USD/9/15Y", 0},
804 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/10/20Y", 0},
805 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/11/30Y", 0},
806 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/6/5Y", 0},
807 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/7/7Y", 0},
808 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/8/10Y", 0},
809 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/EUR/9/15Y", 0},
810 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/0/1M", 0},
811 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/1/6M", 0},
812 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/10/20Y", 0},
813 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/11/30Y", 0},
814 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/2/1Y", 0},
815 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/3/2Y", 0},
816 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/4/3Y", -0.473197},
817 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/5/4Y", -0.00173105},
818 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/6/5Y", 0},
819 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/7/7Y", 0},
820 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/8/10Y", 0},
821 {"7_FxOption_EUR_USD DiscountCurve/EUR/5/4Y DiscountCurve/USD/9/15Y", 0},
822 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/EUR/10/20Y", 0},
823 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/EUR/11/30Y", 0},
824 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/EUR/7/7Y", 0},
825 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/EUR/8/10Y", 0},
826 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/EUR/9/15Y", 0},
827 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/0/1M", 0},
828 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/1/6M", 0},
829 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/10/20Y", 0},
830 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/11/30Y", 0},
831 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/2/1Y", 0},
832 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/3/2Y", 0},
833 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/4/3Y", 0},
834 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/5/4Y", 0},
835 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/6/5Y", 0},
836 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/7/7Y", 0},
837 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/8/10Y", 0},
838 {"7_FxOption_EUR_USD DiscountCurve/EUR/6/5Y DiscountCurve/USD/9/15Y", 0},
839 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/EUR/10/20Y", 0},
840 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/EUR/11/30Y", 0},
841 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/EUR/8/10Y", 0},
842 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/EUR/9/15Y", 0},
843 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/0/1M", 0},
844 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/1/6M", 0},
845 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/10/20Y", 0},
846 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/11/30Y", 0},
847 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/2/1Y", 0},
848 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/3/2Y", 0},
849 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/4/3Y", 0},
850 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/5/4Y", 0},
851 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/6/5Y", 0},
852 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/7/7Y", 0},
853 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/8/10Y", 0},
854 {"7_FxOption_EUR_USD DiscountCurve/EUR/7/7Y DiscountCurve/USD/9/15Y", 0},
855 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/EUR/10/20Y", 0},
856 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/EUR/11/30Y", 0},
857 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/EUR/9/15Y", 0},
858 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/0/1M", 0},
859 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/1/6M", 0},
860 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/10/20Y", 0},
861 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/11/30Y", 0},
862 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/2/1Y", 0},
863 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/3/2Y", 0},
864 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/4/3Y", 0},
865 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/5/4Y", 0},
866 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/6/5Y", 0},
867 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/7/7Y", 0},
868 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/8/10Y", 0},
869 {"7_FxOption_EUR_USD DiscountCurve/EUR/8/10Y DiscountCurve/USD/9/15Y", 0},
870 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/EUR/10/20Y", 0},
871 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/EUR/11/30Y", 0},
872 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/0/1M", 0},
873 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/1/6M", 0},
874 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/10/20Y", 0},
875 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/11/30Y", 0},
876 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/2/1Y", 0},
877 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/3/2Y", 0},
878 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/4/3Y", 0},
879 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/5/4Y", 0},
880 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/6/5Y", 0},
881 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/7/7Y", 0},
882 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/8/10Y", 0},
883 {"7_FxOption_EUR_USD DiscountCurve/EUR/9/15Y DiscountCurve/USD/9/15Y", 0},
884 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/1/6M", 0},
885 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/10/20Y", 0},
886 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/11/30Y", 0},
887 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/2/1Y", 0},
888 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/3/2Y", 0},
889 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/4/3Y", 0},
890 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/5/4Y", 0},
891 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/6/5Y", 0},
892 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/7/7Y", 0},
893 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/8/10Y", 0},
894 {"7_FxOption_EUR_USD DiscountCurve/USD/0/1M DiscountCurve/USD/9/15Y", 0},
895 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/10/20Y", 0},
896 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/11/30Y", 0},
897 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/2/1Y", 0},
898 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/3/2Y", 0},
899 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/4/3Y", 0},
900 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/5/4Y", 0},
901 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/6/5Y", 0},
902 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/7/7Y", 0},
903 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/8/10Y", 0},
904 {"7_FxOption_EUR_USD DiscountCurve/USD/1/6M DiscountCurve/USD/9/15Y", 0},
905 {"7_FxOption_EUR_USD DiscountCurve/USD/10/20Y DiscountCurve/USD/11/30Y", 0},
906 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/10/20Y", 0},
907 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/11/30Y", 0},
908 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/3/2Y", 0},
909 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/4/3Y", 0},
910 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/5/4Y", 0},
911 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/6/5Y", 0},
912 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/7/7Y", 0},
913 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/8/10Y", 0},
914 {"7_FxOption_EUR_USD DiscountCurve/USD/2/1Y DiscountCurve/USD/9/15Y", 0},
915 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/10/20Y", 0},
916 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/11/30Y", 0},
917 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/4/3Y", 0},
918 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/5/4Y", 0},
919 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/6/5Y", 0},
920 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/7/7Y", 0},
921 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/8/10Y", 0},
922 {"7_FxOption_EUR_USD DiscountCurve/USD/3/2Y DiscountCurve/USD/9/15Y", 0},
923 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/10/20Y", 0},
924 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/11/30Y", 0},
925 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/5/4Y", 0.287762},
926 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/6/5Y", 0},
927 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/7/7Y", 0},
928 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/8/10Y", 0},
929 {"7_FxOption_EUR_USD DiscountCurve/USD/4/3Y DiscountCurve/USD/9/15Y", 0},
930 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/10/20Y", 0},
931 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/11/30Y", 0},
932 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/6/5Y", 0},
933 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/7/7Y", 0},
934 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/8/10Y", 0},
935 {"7_FxOption_EUR_USD DiscountCurve/USD/5/4Y DiscountCurve/USD/9/15Y", 0},
936 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y DiscountCurve/USD/10/20Y", 0},
937 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y DiscountCurve/USD/11/30Y", 0},
938 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y DiscountCurve/USD/7/7Y", 0},
939 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y DiscountCurve/USD/8/10Y", 0},
940 {"7_FxOption_EUR_USD DiscountCurve/USD/6/5Y DiscountCurve/USD/9/15Y", 0},
941 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y DiscountCurve/USD/10/20Y", 0},
942 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y DiscountCurve/USD/11/30Y", 0},
943 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y DiscountCurve/USD/8/10Y", 0},
944 {"7_FxOption_EUR_USD DiscountCurve/USD/7/7Y DiscountCurve/USD/9/15Y", 0},
945 {"7_FxOption_EUR_USD DiscountCurve/USD/8/10Y DiscountCurve/USD/10/20Y", 0},
946 {"7_FxOption_EUR_USD DiscountCurve/USD/8/10Y DiscountCurve/USD/11/30Y", 0},
947 {"7_FxOption_EUR_USD DiscountCurve/USD/8/10Y DiscountCurve/USD/9/15Y", 0},
948 {"7_FxOption_EUR_USD DiscountCurve/USD/9/15Y DiscountCurve/USD/10/20Y", 0},
949 {"7_FxOption_EUR_USD DiscountCurve/USD/9/15Y DiscountCurve/USD/11/30Y", 0}};
950 // sensitivity analysis
951 QuantLib::ext::shared_ptr<SensitivityAnalysis> sa = QuantLib::ext::make_shared<SensitivityAnalysis>(
952 portfolio, initMarket, Market::defaultConfiguration, data, simMarketData, sensiData, false);
953 sa->generateSensitivities();
954 map<pair<string, string>, Real> deltaMap;
955 map<pair<string, string>, Real> gammaMap;
956 for (auto [pid,p] : portfolio->trades()) {
957 for (const auto& f : sa->sensiCube()->factors()) {
958 auto des = sa->sensiCube()->factorDescription(f);
959 deltaMap[make_pair(pid, des)] = sa->sensiCube()->delta(pid, f);
960 gammaMap[make_pair(pid, des)] = sa->sensiCube()->gamma(pid, f);
961 }
962 }
963 std::vector<ore::analytics::SensitivityScenarioGenerator::ScenarioDescription> scenDesc =
964 sa->scenarioGenerator()->scenarioDescriptions();
965
966 Real shiftSize = 1E-5; // shift size
967
968 // check deltas
969 BOOST_TEST_MESSAGE("Checking deltas...");
970 Size foundDeltas = 0, zeroDeltas = 0;
971 for (auto const& x : deltaMap) {
972 string key = x.first.first + " " + x.first.second;
973 Real scaledResult = x.second / shiftSize;
974 if (analyticalResultsDelta.count(key) > 0) {
975 if (!check(analyticalResultsDelta.at(key), scaledResult))
976 BOOST_ERROR("Sensitivity analysis result " << key << " (" << scaledResult
977 << ") could not be verified against analytic result ("
978 << analyticalResultsDelta.at(key) << ")");
979 ++foundDeltas;
980 } else {
981 if (!close_enough(x.second, 0.0))
982 BOOST_ERROR("Sensitivity analysis result " << key << " (" << scaledResult << ") expected to be zero");
983 ++zeroDeltas;
984 }
985 }
986 if (foundDeltas != analyticalResultsDelta.size())
987 BOOST_ERROR("Mismatch between number of analytical results for delta ("
988 << analyticalResultsDelta.size() << ") and sensitivity results (" << foundDeltas << ")");
989 BOOST_TEST_MESSAGE("Checked " << foundDeltas << " deltas against analytical values (and " << zeroDeltas
990 << " deal-unrelated deltas for zero).");
991
992 // check gammas
993 BOOST_TEST_MESSAGE("Checking gammas...");
994 Size foundGammas = 0, zeroGammas = 0;
995 for (auto const& x : gammaMap) {
996 string key = x.first.first + " " + x.first.second;
997 Real scaledResult = x.second / (shiftSize * shiftSize);
998 if (analyticalResultsGamma.count(key) > 0) {
999 if (!check(analyticalResultsGamma.at(key), scaledResult))
1000 BOOST_ERROR("Sensitivity analysis result " << key << " (" << scaledResult
1001 << ") could not be verified against analytic result ("
1002 << analyticalResultsGamma.at(key) << ")");
1003 ++foundGammas;
1004 } else {
1005 // the sensi framework produces a Vomma, which we don't check (it isn't produced by the analytic sensi
1006 // engine)
1007 if (!close_enough(x.second, 0.0) && key != "5_Swaption_EUR SwaptionVolatility/EUR/47/10Y/10Y/ATM" &&
1008 key != "7_FxOption_EUR_USD FXVolatility/EURUSD/0/5Y/ATM")
1009 BOOST_ERROR("Sensitivity analysis result " << key << " (" << scaledResult << ") expected to be zero");
1010 ++zeroGammas;
1011 }
1012 }
1013 if (foundGammas != analyticalResultsGamma.size())
1014 BOOST_ERROR("Mismatch between number of analytical results for gamma ("
1015 << analyticalResultsGamma.size() << ") and sensitivity results (" << foundGammas << ")");
1016 BOOST_TEST_MESSAGE("Checked " << foundGammas << " gammas against analytical values (and " << zeroGammas
1017 << " deal-unrelated gammas for zero).");
1018
1019 // check cross gammas
1020 BOOST_TEST_MESSAGE("Checking cross-gammas...");
1021 Size foundCrossGammas = 0, zeroCrossGammas = 0;
1022 for (const auto& [tradeId, _] : portfolio->trades()) {
1023 for (auto const& s : scenDesc) {
1024 if (s.type() == ShiftScenarioGenerator::ScenarioDescription::Type::Cross) {
1025 string key = tradeId + " " + s.factor1() + " " + s.factor2();
1026 Real crossGamma = sa->sensiCube()->crossGamma(tradeId, make_pair(s.key1(), s.key2()));
1027 Real scaledResult = crossGamma / (shiftSize * shiftSize);
1028 // BOOST_TEST_MESSAGE(key << " " << scaledResult); // debug
1029 if (analyticalResultsCrossGamma.count(key) > 0) {
1030 if (!check(analyticalResultsCrossGamma.at(key), scaledResult))
1031 BOOST_ERROR("Sensitivity analysis result "
1032 << key << " (" << scaledResult
1033 << ") could not be verified against analytic result ("
1034 << analyticalResultsCrossGamma.at(key) << ")");
1035 ++foundCrossGammas;
1036 } else {
1037 if (!check(crossGamma, 0.0))
1038 BOOST_ERROR("Sensitivity analysis result " << key << " (" << crossGamma
1039 << ") expected to be zero");
1040 ++zeroCrossGammas;
1041 }
1042 }
1043 }
1044 }
1045 if (foundCrossGammas != analyticalResultsCrossGamma.size())
1046 BOOST_ERROR("Mismatch between number of analytical results for gamma ("
1047 << analyticalResultsCrossGamma.size() << ") and sensitivity results (" << foundCrossGammas << ")");
1048 BOOST_TEST_MESSAGE("Checked " << foundCrossGammas << " cross gammas against analytical values (and "
1049 << zeroCrossGammas << " deal-unrelated cross gammas for zero).");
1050
1051 // debug: dump analytical cross gamma results
1052 // for(auto const& x: analyticalResultsCrossGamma) {
1053 // BOOST_TEST_MESSAGE(x.first << " " << x.second);
1054 // }
1055
1056 ObservationMode::instance().setMode(backupMode);
1057 IndexManager::instance().clearHistories();
1058
1059 BOOST_CHECK(true);
1060}
static const string defaultConfiguration
data
Filter close_enough(const RandomVariable &x, const RandomVariable &y)
QuantLib::ext::shared_ptr< Trade > buildFxOption(string id, string longShort, string putCall, Size expiry, string boughtCcy, Real boughtAmount, string soldCcy, Real soldAmount, Real premium, string premiumCcy, string premiumDate)
QuantLib::ext::shared_ptr< Trade > buildSwap(string id, string ccy, bool isPayer, Real notional, int start, Size term, Real rate, Real spread, string fixedFreq, string fixedDC, string floatFreq, string floatDC, string index, Calendar calendar, Natural spotDays, bool spotStartLag)
QuantLib::ext::shared_ptr< SensitivityScenarioData > setupSensitivityScenarioData5(bool parConversion)
QuantLib::ext::shared_ptr< analytics::ScenarioSimMarketParameters > setupSimMarketData5()
+ Here is the call graph for this function: