42#include <ql/time/calendars/all.hpp>
44#include <ql/instruments/creditdefaultswap.hpp>
48QuantLib::ext::shared_ptr<Trade>
buildSwap(
string id,
string ccy,
bool isPayer, Real notional,
int start, Size term, Real rate,
49 Real spread,
string fixedFreq,
string fixedDC,
string floatFreq,
string floatDC,
50 string index, Calendar calendar, Natural spotDays,
bool spotStartLag) {
51 Date today = Settings::instance().evaluationDate();
56 string rule =
"Forward";
58 vector<Real> notionals(1, notional);
59 vector<Real> rates(1, rate);
60 vector<Real> spreads(1, spread);
62 Period spotStartLagTenor = spotStartLag ? spotDays * Days : 0 * Days;
64 Date qlStartDate =
calendar.adjust(today + spotStartLagTenor + start * Years);
65 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
75 LegData fixedLeg(QuantLib::ext::make_shared<FixedLegData>(rates), isPayer, ccy, fixedSchedule, fixedDC, notionals);
77 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, spotDays,
false, spreads), !isPayer, ccy,
78 floatSchedule, floatDC, notionals);
80 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::Swap(env, floatingLeg, fixedLeg));
87QuantLib::ext::shared_ptr<Trade>
buildEuropeanSwaption(
string id,
string longShort,
string ccy,
bool isPayer, Real notional,
88 int start, Size term, Real rate, Real spread,
string fixedFreq,
89 string fixedDC,
string floatFreq,
string floatDC,
string index,
90 string cashPhysical, Real premium,
string premiumCcy,
93 Date today = Settings::instance().evaluationDate();
96 string cal =
"TARGET";
98 string rule =
"Forward";
100 vector<Real> notionals(1, notional);
101 vector<Real> rates(1, rate);
102 vector<Real> spreads(1, spread);
104 Date qlStartDate =
calendar.adjust(today + start * Years);
105 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
115 LegData fixedLeg(QuantLib::ext::make_shared<FixedLegData>(rates), isPayer, ccy, fixedSchedule, fixedDC, notionals);
117 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, days,
false, spreads), !isPayer, ccy, floatSchedule,
120 vector<LegData> legs;
121 legs.push_back(fixedLeg);
122 legs.push_back(floatingLeg);
124 OptionData option(longShort,
"Call",
"European",
false, vector<string>(1, startDate), cashPhysical,
"",
133QuantLib::ext::shared_ptr<Trade>
buildBermudanSwaption(
string id,
string longShort,
string ccy,
bool isPayer, Real notional,
134 Size exercises,
int start, Size term, Real rate, Real spread,
135 string fixedFreq,
string fixedDC,
string floatFreq,
string floatDC,
136 string index,
string cashPhysical, Real premium,
string premiumCcy,
137 string premiumDate) {
139 Date today = Settings::instance().evaluationDate();
142 string cal =
"TARGET";
144 string rule =
"Forward";
146 vector<Real> notionals(1, notional);
147 vector<Real> rates(1, rate);
148 vector<Real> spreads(1, spread);
150 Date qlStartDate =
calendar.adjust(today + start * Years);
151 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
155 vector<string> exerciseDates;
156 for (Size i = 0; i < exercises; ++i) {
157 Date exerciseDate = qlStartDate + i * Years;
167 LegData fixedLeg(QuantLib::ext::make_shared<FixedLegData>(rates), isPayer, ccy, fixedSchedule, fixedDC, notionals);
169 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, days,
false, spreads), !isPayer, ccy, floatSchedule,
172 vector<LegData> legs;
173 legs.push_back(fixedLeg);
174 legs.push_back(floatingLeg);
176 OptionData option(longShort,
"Call",
"Bermudan",
false, exerciseDates, cashPhysical,
"",
185QuantLib::ext::shared_ptr<Trade>
buildFxOption(
string id,
string longShort,
string putCall, Size expiry,
string boughtCcy,
186 Real boughtAmount,
string soldCcy, Real soldAmount, Real premium,
187 string premiumCcy,
string premiumDate) {
188 Date today = Settings::instance().evaluationDate();
190 string cal =
"TARGET";
192 string rule =
"Forward";
194 Date qlExpiry =
calendar.adjust(today + expiry * Years);
200 OptionData option(longShort, putCall,
"European",
false, vector<string>(1, expiryDate),
"Cash",
"",
203 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::FxOption(env, option, boughtCcy, boughtAmount, soldCcy, soldAmount));
209QuantLib::ext::shared_ptr<Trade>
buildEquityOption(
string id,
string longShort,
string putCall, Size expiry,
string equityName,
210 string currency, Real strike, Real quantity, Real premium,
string premiumCcy,
211 string premiumDate) {
212 Date today = Settings::instance().evaluationDate();
214 string cal =
"TARGET";
216 string rule =
"Forward";
218 Date qlExpiry =
calendar.adjust(today + expiry * Years);
226 OptionData option(longShort, putCall,
"European",
false, vector<string>(1, expiryDate),
"Cash",
"",
229 QuantLib::ext::shared_ptr<Trade> trade(
236QuantLib::ext::shared_ptr<Trade>
buildEquityForward(
string id,
string longShort, Size expiry,
string equityName,
237 string currency, Real strike, Real quantity) {
238 Date today = Settings::instance().evaluationDate();
241 Date qlExpiry =
calendar.adjust(today + expiry * Years);
248 quantity, expiryDate, strike));
254QuantLib::ext::shared_ptr<Trade>
buildCap(
string id,
string ccy,
string longShort, Real capRate, Real notional,
int start,
255 Size term,
string floatFreq,
string floatDC,
string index,
256 Calendar calendar, Natural spotDays,
bool spotStartLag) {
257 return buildCapFloor(
id, ccy, longShort, vector<Real>(1, capRate), vector<Real>(), notional, start, term, floatFreq,
258 floatDC, index,
calendar, spotDays, spotStartLag);
261QuantLib::ext::shared_ptr<Trade>
buildFloor(
string id,
string ccy,
string longShort, Real floorRate, Real notional,
int start,
262 Size term,
string floatFreq,
string floatDC,
string index,
263 Calendar calendar, Natural spotDays,
bool spotStartLag) {
264 return buildCapFloor(
id, ccy, longShort, vector<Real>(), vector<Real>(1, floorRate), notional, start, term,
265 floatFreq, floatDC, index,
calendar, spotDays, spotStartLag);
268QuantLib::ext::shared_ptr<Trade>
buildCapFloor(
string id,
string ccy,
string longShort, vector<Real> capRates,
269 vector<Real> floorRates, Real notional,
int start, Size term,
string floatFreq,
270 string floatDC,
string index, Calendar calendar, Natural spotDays,
272 Date today = Settings::instance().evaluationDate();
278 string cal = o.str();
280 string rule =
"Forward";
282 vector<Real> notionals(1, notional);
283 vector<Real> spreads(1, 0.0);
285 Period spotStartLagTenor = spotStartLag ? spotDays * Days : 0 * Days;
287 Date qlStartDate =
calendar.adjust(today + spotStartLagTenor + start * Years);
288 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
297 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, spotDays,
false, spreads),
false, ccy, floatSchedule,
300 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::CapFloor(env, longShort, floatingLeg, capRates, floorRates));
307 string id,
string recCcy, Real recNotional,
string payCcy, Real payNotional,
int start, Size term,
308 Real recLegSpread, Real payLegSpread,
string recFreq,
string recDC,
string recIndex, Calendar recCalendar,
309 string payFreq,
string payDC,
string payIndex, Calendar payCalendar, Natural spotDays,
bool spotStartLag,
310 bool notionalInitialExchange,
bool notionalFinalExchange,
bool notionalAmortizingExchange,
311 bool isRecLegFXResettable,
bool isPayLegFXResettable) {
312 Date today = Settings::instance().evaluationDate();
317 string rule =
"Forward";
319 vector<Real> recNotionals(1, recNotional);
320 vector<Real> recSpreads(1, recLegSpread);
321 vector<Real> payNotionals(1, payNotional);
322 vector<Real> paySpreads(1, payLegSpread);
324 Period spotStartLagTenor = spotStartLag ? spotDays * Days : 0 * Days;
326 Date qlStartDate = recCalendar.adjust(today + spotStartLagTenor + start * Years);
327 Date qlEndDate = recCalendar.adjust(qlStartDate + term * Years);
337 auto recFloatingLegData = QuantLib::ext::make_shared<FloatingLegData>(recIndex, spotDays,
false, recSpreads);
339 if (isRecLegFXResettable) {
340 string fxIndex =
"FX-ECB-" + recCcy +
"-" + payCcy;
341 recFloatingLeg =
LegData(recFloatingLegData,
false, recCcy, recSchedule, recDC, recNotionals, vector<string>(),
342 conv, notionalInitialExchange, notionalFinalExchange, notionalAmortizingExchange,
343 isRecLegFXResettable, payCcy, payNotional, fxIndex);
345 recFloatingLeg =
LegData(recFloatingLegData,
false, recCcy, recSchedule, recDC, recNotionals, vector<string>(),
346 conv, notionalInitialExchange, notionalFinalExchange, notionalAmortizingExchange);
349 auto payFloatingLegData = QuantLib::ext::make_shared<FloatingLegData>(payIndex, spotDays,
false, recSpreads);
351 if (isPayLegFXResettable) {
352 string fxIndex =
"FX-ECB-" + payCcy +
"-" + recCcy;
353 payFloatingLeg =
LegData(payFloatingLegData,
true, payCcy, paySchedule, payDC, payNotionals, vector<string>(),
354 conv, notionalInitialExchange, notionalFinalExchange, notionalAmortizingExchange,
355 !isPayLegFXResettable, recCcy, recNotional, fxIndex);
357 payFloatingLeg =
LegData(payFloatingLegData,
true, payCcy, paySchedule, payDC, payNotionals, vector<string>(),
358 conv, notionalInitialExchange, notionalFinalExchange, notionalAmortizingExchange);
361 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::Swap(env, recFloatingLeg, payFloatingLeg));
367QuantLib::ext::shared_ptr<Trade>
buildZeroBond(
string id,
string ccy, Real notional, Size term,
string suffix) {
368 Date today = Settings::instance().evaluationDate();
369 Date qlEndDate = today + term * Years;
373 string settlementDays =
"2";
375 string issuerId =
"BondIssuer" + suffix;
376 string creditCurveId =
"BondIssuer" + suffix;
377 string securityId =
"Bond" + suffix;
378 string referenceCurveId =
"BondCurve" + suffix;
381 QuantLib::ext::shared_ptr<Trade> trade(
383 calendar, notional, maturityDate, ccy, issueDate)));
390 string creditCurveId,
bool isPayer, Real notional,
391 int start, Size term, Real rate, Real spread,
392 string fixedFreq,
string fixedDC) {
393 Date today = Settings::instance().evaluationDate();
395 string settlementDays =
"1";
397 string cal =
"WeekendsOnly";
399 string convEnd =
"U";
400 string rule =
"CDS2015";
402 vector<Real> notionals(1, notional);
403 vector<Real> rates(1, rate);
404 vector<Real> spreads(1, spread);
406 Date qlStartDate =
calendar.adjust(today + start * Years);
407 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
415 LegData fixedLeg(QuantLib::ext::make_shared<FixedLegData>(spreads), isPayer, ccy, fixedSchedule, fixedDC, notionals);
418 QuantExt::CreditDefaultSwap::ProtectionPaymentTime::atDefault, today + 1);
427 string longShort,
string ccy, vector<string> ccys,
428 bool isPayer, vector<Real> notionals, Real notional,
429 int start, Size term, Real rate, Real spread,
430 string fixedFreq,
string fixedDC) {
431 Date today = Settings::instance().evaluationDate();
433 string cal =
"WeekendsOnly";
435 string rule =
"CDS2015";
436 string issuerId =
name;
437 string creditCurveId =
name;
438 string qualifier =
"Tranch1";
440 Real attachmentPoint = 0.0;
441 Real detachmentPoint = 0.1;
442 bool settlesAccrual =
true;
443 QuantExt::CreditDefaultSwap::ProtectionPaymentTime protectionPaymentTime =
444 QuantExt::CreditDefaultSwap::ProtectionPaymentTime::atDefault;
446 Real upfrontFee = 0.0;
448 vector<Real> notionalTotal(names.size(), notional);
449 vector<Real> rates(names.size(), rate);
450 vector<Real> spreads(names.size(), spread);
452 Date qlStartDate =
calendar.adjust(today + start * Years);
453 Date qlProtectionStartDate =
calendar.advance(qlStartDate, 1 * Days);
454 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
455 Date qlUpfrontDate =
calendar.advance(qlStartDate, 3 * Days);
466 LegData fixedLeg(QuantLib::ext::make_shared<FixedLegData>(rates), isPayer, ccy, fixedSchedule, fixedDC, notionalTotal);
469 vector<BasketConstituent> constituents;
470 for (Size i = 0; i < names.size(); ++i) {
471 constituents.emplace_back(names[i], names[i], notionals[i], ccys[i], qualifier);
478 env, fixedLeg, qualifier, basket, attachmentPoint, detachmentPoint, settlesAccrual, protectionPaymentTime,
479 protectionStart, upfrontDate, upfrontFee));
481 std::cout <<
"failed to build" << std::endl;
488QuantLib::ext::shared_ptr<Trade>
buildCmsCapFloor(
string id,
string ccy,
string indexId,
bool isPayer,
489 Real notional,
int start, Size term, Real capRate,
490 Real floorRate, Real spread,
string freq,
string dc) {
491 Date today = Settings::instance().evaluationDate();
493 string settlementDays =
"2";
495 string cal =
"TARGET";
496 string qualifier =
"";
498 string rule =
"Forward";
500 Date qlStartDate =
calendar.adjust(today + start * Years);
501 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
505 string longShort =
"Long";
507 vector<Real> notionals(1, notional);
508 vector<Real> caps(1, capRate);
509 vector<Real> floors(1, floorRate);
510 vector<Real> spreads(1, spread);
511 bool isInArrears =
false;
518 LegData cmsLeg(QuantLib::ext::make_shared<CMSLegData>(indexId, 0, isInArrears, spreads, vector<string>(1, startDate)),
519 isPayer, ccy, schedule, dc, notionals, vector<string>(1, startDate));
521 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::CapFloor(env, longShort, cmsLeg, vector<double>(), floors));
528QuantLib::ext::shared_ptr<Trade>
buildCPIInflationSwap(
string id,
string ccy,
bool isPayer, Real notional,
int start, Size term,
529 Real spread,
string floatFreq,
string floatDC,
string index,
530 string cpiFreq,
string cpiDC,
string cpiIndex, Real baseRate,
531 string observationLag,
bool interpolated, Real cpiRate) {
533 Date today = Settings::instance().evaluationDate();
536 string cal =
"TARGET";
538 string rule =
"Forward";
540 vector<Real> notionals(1, notional);
541 vector<Real> cpiRates(1, cpiRate);
542 vector<Real> spreads(1, spread);
544 Date qlStartDate =
calendar.adjust(today + start * Years);
545 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
555 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, days,
false, spreads), !isPayer, ccy, floatSchedule,
558 LegData cpiLeg(QuantLib::ext::make_shared<CPILegData>(cpiIndex, startDate, baseRate, observationLag,
559 (interpolated ?
"Linear" :
"Flat"), cpiRates),
560 isPayer, ccy, cpiSchedule, cpiDC, notionals, vector<string>(),
"F",
false,
true);
563 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::Swap(env, floatingLeg, cpiLeg));
569QuantLib::ext::shared_ptr<Trade>
buildYYInflationSwap(
string id,
string ccy,
bool isPayer, Real notional,
int start, Size term,
570 Real spread,
string floatFreq,
string floatDC,
string index,
571 string yyFreq,
string yyDC,
string yyIndex,
string observationLag,
574 Date today = Settings::instance().evaluationDate();
577 string cal =
"TARGET";
579 string rule =
"Forward";
581 vector<Real> notionals(1, notional);
582 vector<Real> spreads(1, spread);
584 Date qlStartDate =
calendar.adjust(today + start * Years);
585 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
595 LegData floatingLeg(QuantLib::ext::make_shared<FloatingLegData>(index, days,
false, spreads), !isPayer, ccy, floatSchedule,
598 LegData yyLeg(QuantLib::ext::make_shared<YoYLegData>(yyIndex, observationLag, fixDays), isPayer, ccy, yySchedule, yyDC,
602 QuantLib::ext::shared_ptr<Trade> trade(
new ore::data::Swap(env, floatingLeg, yyLeg));
609 bool isLong, Real capFloorRate,
int start,
610 Size term,
string yyFreq,
string yyDC,
611 string yyIndex,
string observationLag,
614 Date today = Settings::instance().evaluationDate();
616 string cal =
"TARGET";
618 string rule =
"Forward";
620 vector<Real> notionals(1, notional);
621 vector<Real> caps, floors;
623 caps.resize(1, capFloorRate);
625 floors.resize(1, capFloorRate);
627 Date qlStartDate =
calendar.adjust(today + start * Years);
628 Date qlEndDate =
calendar.adjust(qlStartDate + term * Years);
634 LegData yyLeg(QuantLib::ext::make_shared<YoYLegData>(yyIndex, observationLag, fixDays),
true, ccy, yySchedule, yyDC,
639 auto trade = QuantLib::ext::make_shared<ore::data::CapFloor>(env, isLong ?
"Long" :
"Short", yyLeg, caps, floors);
644QuantLib::ext::shared_ptr<Trade>
buildCommodityForward(
const std::string&
id,
const std::string& position, Size term,
645 const std::string& commodityName,
const std::string& currency,
646 Real strike, Real quantity) {
648 Date today = Settings::instance().evaluationDate();
652 QuantLib::ext::shared_ptr<Trade> trade = QuantLib::ext::make_shared<ore::data::CommodityForward>(
653 env, position, commodityName, currency, quantity,
maturity, strike);
659QuantLib::ext::shared_ptr<Trade>
buildCommodityOption(
const string&
id,
const string& longShort,
const string& putCall,
660 Size term,
const string& commodityName,
const string& currency,
661 Real strike, Real quantity, Real premium,
const string& premiumCcy,
662 const string& premiumDate) {
664 Date today = Settings::instance().evaluationDate();
668 OptionData option(longShort, putCall,
"European",
false, expiryDate,
"Cash",
"",
670 TradeStrike trStrike(TradeStrike::Type::Price, strike);
671 QuantLib::ext::shared_ptr<Trade> trade =
672 QuantLib::ext::make_shared<ore::data::CommodityOption>(env, option, commodityName, currency, quantity, trStrike);
Date parseDate(const string &s)
std::string to_string(const LocationInfo &l)
QuantLib::ext::shared_ptr< Trade > buildCreditDefaultSwap(string id, string ccy, string issuerId, string creditCurveId, bool isPayer, Real notional, int start, Size term, Real rate, Real spread, string fixedFreq, string fixedDC)
QuantLib::ext::shared_ptr< Trade > buildSyntheticCDO(string id, string name, vector< string > names, string longShort, string ccy, vector< string > ccys, bool isPayer, vector< Real > notionals, Real notional, int start, Size term, Real rate, Real spread, string fixedFreq, string fixedDC)
QuantLib::ext::shared_ptr< Trade > buildCap(string id, string ccy, string longShort, Real capRate, Real notional, int start, Size term, string floatFreq, string floatDC, string index, Calendar calendar, Natural spotDays, bool spotStartLag)
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 > buildCmsCapFloor(string id, string ccy, string indexId, bool isPayer, Real notional, int start, Size term, Real capRate, Real floorRate, Real spread, string freq, string dc)
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< Trade > buildCPIInflationSwap(string id, string ccy, bool isPayer, Real notional, int start, Size term, Real spread, string floatFreq, string floatDC, string index, string cpiFreq, string cpiDC, string cpiIndex, Real baseRate, string observationLag, bool interpolated, Real cpiRate)
QuantLib::ext::shared_ptr< Trade > buildZeroBond(string id, string ccy, Real notional, Size term, string suffix)
QuantLib::ext::shared_ptr< Trade > buildBermudanSwaption(string id, string longShort, string ccy, bool isPayer, Real notional, Size exercises, int start, Size term, Real rate, Real spread, string fixedFreq, string fixedDC, string floatFreq, string floatDC, string index, string cashPhysical, Real premium, string premiumCcy, string premiumDate)
QuantLib::ext::shared_ptr< Trade > buildEquityOption(string id, string longShort, string putCall, Size expiry, string equityName, string currency, Real strike, Real quantity, Real premium, string premiumCcy, string premiumDate)
QuantLib::ext::shared_ptr< Trade > buildFloor(string id, string ccy, string longShort, Real floorRate, Real notional, int start, Size term, string floatFreq, string floatDC, string index, Calendar calendar, Natural spotDays, bool spotStartLag)
QuantLib::ext::shared_ptr< Trade > buildCrossCcyBasisSwap(string id, string recCcy, Real recNotional, string payCcy, Real payNotional, int start, Size term, Real recLegSpread, Real payLegSpread, string recFreq, string recDC, string recIndex, Calendar recCalendar, string payFreq, string payDC, string payIndex, Calendar payCalendar, Natural spotDays, bool spotStartLag, bool notionalInitialExchange, bool notionalFinalExchange, bool notionalAmortizingExchange, bool isRecLegFXResettable, bool isPayLegFXResettable)
QuantLib::ext::shared_ptr< Trade > buildYYInflationSwap(string id, string ccy, bool isPayer, Real notional, int start, Size term, Real spread, string floatFreq, string floatDC, string index, string yyFreq, string yyDC, string yyIndex, string observationLag, Size fixDays)
QuantLib::ext::shared_ptr< Trade > buildEquityForward(string id, string longShort, Size expiry, string equityName, string currency, Real strike, Real quantity)
QuantLib::ext::shared_ptr< Trade > buildCapFloor(string id, string ccy, string longShort, vector< Real > capRates, vector< Real > floorRates, Real notional, int start, Size term, string floatFreq, string floatDC, string index, Calendar calendar, Natural spotDays, bool spotStartLag)
QuantLib::ext::shared_ptr< Trade > buildCommodityForward(const std::string &id, const std::string &position, Size term, const std::string &commodityName, const std::string ¤cy, Real strike, Real quantity)
QuantLib::ext::shared_ptr< Trade > buildEuropeanSwaption(string id, string longShort, string ccy, bool isPayer, Real notional, int start, Size term, Real rate, Real spread, string fixedFreq, string fixedDC, string floatFreq, string floatDC, string index, string cashPhysical, Real premium, string premiumCcy, string premiumDate)
QuantLib::ext::shared_ptr< Trade > buildYYInflationCapFloor(string id, string ccy, Real notional, bool isCap, bool isLong, Real capFloorRate, int start, Size term, string yyFreq, string yyDC, string yyIndex, string observationLag, Size fixDays)
QuantLib::ext::shared_ptr< Trade > buildCommodityOption(const string &id, const string &longShort, const string &putCall, Size term, const string &commodityName, const string ¤cy, Real strike, Real quantity, Real premium, const string &premiumCcy, const string &premiumDate)