@@ -116,223 +116,6 @@ const Size SimmConfiguration::numberOfMarginTypes = marginTypeMap.size();
116116const Size SimmConfiguration::numberOfProductClasses = productClassMap.size();
117117const Size SimmConfiguration::numberOfRegulations = regulationsMap.size();
118118
119- // Initialise the ORE trade to product class mapping
120- // Note that not all trade types are here, some are defined by logic (e.g. FxForward)
121- const map<string, SimmConfiguration::ProductClass> tradeProductClassMap = {
122- {" CommodityAccumulator" , SimmConfiguration::ProductClass::Commodity},
123- {" CommodityAsianOption" , SimmConfiguration::ProductClass::Commodity},
124- {" CommodityAveragePriceOption" , SimmConfiguration::ProductClass::Commodity},
125- {" CommodityBasketOption" , SimmConfiguration::ProductClass::Commodity},
126- {" CommodityForward" , SimmConfiguration::ProductClass::Commodity},
127- {" CommodityOption" , SimmConfiguration::ProductClass::Commodity},
128- {" CommodityDigitalAveragePriceOption" , SimmConfiguration::ProductClass::Commodity},
129- {" CommodityDigitalOption" , SimmConfiguration::ProductClass::Commodity},
130- {" CommodityOptionStrip" , SimmConfiguration::ProductClass::Commodity},
131- {" CommodityPosition" , SimmConfiguration::ProductClass::Commodity},
132- {" CommodityRainbowOption" , SimmConfiguration::ProductClass::Commodity},
133- {" CommoditySpreadOption" , SimmConfiguration::ProductClass::Commodity},
134- {" CommoditySwap" , SimmConfiguration::ProductClass::Commodity},
135- {" CommoditySwaption" , SimmConfiguration::ProductClass::Commodity},
136- {" CommodityTaRF" , SimmConfiguration::ProductClass::Commodity},
137- {" CommodityVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
138- {" CommodityPairwiseVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
139- {" CommodityBasketVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
140- {" Ascot" , SimmConfiguration::ProductClass::Credit},
141- {" AssetBackedCreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
142- {" CBO" , SimmConfiguration::ProductClass::Credit},
143- {" CreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
144- {" CreditDefaultSwapOption" , SimmConfiguration::ProductClass::Credit},
145- {" CreditLinkedSwap" , SimmConfiguration::ProductClass::Credit},
146- {" IndexCreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
147- {" IndexCreditDefaultSwapOption" , SimmConfiguration::ProductClass::Credit},
148- {" RiskParticipationAgreement" , SimmConfiguration::ProductClass::Credit},
149- {" SyntheticCDO" , SimmConfiguration::ProductClass::Credit},
150- {" Failed" , SimmConfiguration::ProductClass::Empty},
151- {" IMScheduleTrade" , SimmConfiguration::ProductClass::Empty},
152- {" SensiTrade" , SimmConfiguration::ProductClass::Empty},
153- {" UseCounterparty" , SimmConfiguration::ProductClass::Empty},
154- {" EquityAccumulator" , SimmConfiguration::ProductClass::Equity},
155- {" EquityAsianOption" , SimmConfiguration::ProductClass::Equity},
156- {" EquityAsianOption" , SimmConfiguration::ProductClass::Equity},
157- {" EquityBarrierOption" , SimmConfiguration::ProductClass::Equity},
158- {" EquityBasketOption" , SimmConfiguration::ProductClass::Equity},
159- {" EquityCliquetOption" , SimmConfiguration::ProductClass::Equity},
160- {" EquityDigitalOption" , SimmConfiguration::ProductClass::Equity},
161- {" EquityDoubleBarrierOption" , SimmConfiguration::ProductClass::Equity},
162- {" EquityDoubleTouchOption" , SimmConfiguration::ProductClass::Equity},
163- {" EquityEuropeanBarrierOption" , SimmConfiguration::ProductClass::Equity},
164- {" EquityForward" , SimmConfiguration::ProductClass::Equity},
165- {" EquityFutureOption" , SimmConfiguration::ProductClass::Equity},
166- {" EquityOption" , SimmConfiguration::ProductClass::Equity},
167- {" EquityOptionPosition" , SimmConfiguration::ProductClass::Equity},
168- {" EquityOutperformanceOption" , SimmConfiguration::ProductClass::Equity},
169- {" EquityPosition" , SimmConfiguration::ProductClass::Equity},
170- {" EquityRainbowOption" , SimmConfiguration::ProductClass::Equity},
171- {" EquitySwap" , SimmConfiguration::ProductClass::Equity},
172- {" EquityWorstOfBasketSwap" , SimmConfiguration::ProductClass::Equity},
173- {" EquityTaRF" , SimmConfiguration::ProductClass::Equity},
174- {" EquityTouchOption" , SimmConfiguration::ProductClass::Equity},
175- {" EquityVarianceSwap" , SimmConfiguration::ProductClass::Equity},
176- {" EquityPairwiseVarianceSwap" , SimmConfiguration::ProductClass::Equity},
177- {" EquityBasketVarianceSwap" , SimmConfiguration::ProductClass::Equity},
178- {" FxAccumulator" , SimmConfiguration::ProductClass::RatesFX},
179- {" FxAsianOption" , SimmConfiguration::ProductClass::RatesFX},
180- {" FxAsianOption" , SimmConfiguration::ProductClass::RatesFX},
181- {" FxBarrierOption" , SimmConfiguration::ProductClass::RatesFX},
182- {" FxBasketOption" , SimmConfiguration::ProductClass::RatesFX},
183- {" FxDigitalBarrierOption" , SimmConfiguration::ProductClass::RatesFX},
184- {" FxDigitalOption" , SimmConfiguration::ProductClass::RatesFX},
185- {" FxDoubleBarrierOption" , SimmConfiguration::ProductClass::RatesFX},
186- {" FxDoubleTouchOption" , SimmConfiguration::ProductClass::RatesFX},
187- {" FxEuropeanBarrierOption" , SimmConfiguration::ProductClass::RatesFX},
188- {" FxAverageForward" , SimmConfiguration::ProductClass::RatesFX},
189- {" FxForward" , SimmConfiguration::ProductClass::RatesFX},
190- {" FxKIKOBarrierOption" , SimmConfiguration::ProductClass::RatesFX},
191- {" FxOption" , SimmConfiguration::ProductClass::RatesFX},
192- {" FxRainbowOption" , SimmConfiguration::ProductClass::RatesFX},
193- {" FxSwap" , SimmConfiguration::ProductClass::RatesFX},
194- {" FxTaRF" , SimmConfiguration::ProductClass::RatesFX},
195- {" FxTouchOption" , SimmConfiguration::ProductClass::RatesFX},
196- {" FxVarianceSwap" , SimmConfiguration::ProductClass::RatesFX},
197- {" FxPairwiseVarianceSwap" , SimmConfiguration::ProductClass::RatesFX},
198- {" FxBasketVarianceSwap" , SimmConfiguration::ProductClass::RatesFX},
199- {" BalanceGuaranteedSwap" , SimmConfiguration::ProductClass::RatesFX},
200- {" Bond" , SimmConfiguration::ProductClass::RatesFX},
201- {" BondOption" , SimmConfiguration::ProductClass::RatesFX},
202- {" BondRepo" , SimmConfiguration::ProductClass::RatesFX},
203- {" BondTRS" , SimmConfiguration::ProductClass::RatesFX},
204- {" CallableSwap" , SimmConfiguration::ProductClass::RatesFX},
205- {" CapFloor" , SimmConfiguration::ProductClass::RatesFX},
206- {" ConvertibleBond" , SimmConfiguration::ProductClass::RatesFX},
207- {" FlexiSwap" , SimmConfiguration::ProductClass::RatesFX},
208- {" ForwardBond" , SimmConfiguration::ProductClass::RatesFX},
209- {" ForwardRateAgreement" , SimmConfiguration::ProductClass::RatesFX},
210- {" MultiLegOption" , SimmConfiguration::ProductClass::RatesFX},
211- {" CrossCurrencySwap" , SimmConfiguration::ProductClass::RatesFX},
212- {" Swap" , SimmConfiguration::ProductClass::RatesFX},
213- {" InflationSwap" , SimmConfiguration::ProductClass::RatesFX},
214- {" Swaption" , SimmConfiguration::ProductClass::RatesFX},
215- {" TotalReturnSwap" , SimmConfiguration::ProductClass::RatesFX},
216- {" ContractForDifference" , SimmConfiguration::ProductClass::RatesFX},
217- {" Autocallable_01" , SimmConfiguration::ProductClass::Equity},
218- // These are generic products that need logic to determine the product class, see
219- // utilities.cpp/simmProductClassFromOreTrade()
220- {" Autocallable_01" , SimmConfiguration::ProductClass::Equity},
221- {" CompositeTrade" , SimmConfiguration::ProductClass::RatesFX},
222- {" DoubleDigitalOption" , SimmConfiguration::ProductClass::RatesFX},
223- {" EuropeanOptionBarrier" , SimmConfiguration::ProductClass::Equity},
224- {" PerformanceOption_01" , SimmConfiguration::ProductClass::Equity},
225- {" ScriptedTrade" , SimmConfiguration::ProductClass::Equity}};
226-
227- // Initialise the ORE trade to product class mapping
228- // Note that not all trade types are here, some are defined by logic (e.g. FxForward)
229- const map<string, SimmConfiguration::ProductClass> tradeScheduleProductClassMap = {
230- {" CommodityAccumulator" , SimmConfiguration::ProductClass::Commodity},
231- {" CommodityAsianOption" , SimmConfiguration::ProductClass::Commodity},
232- {" CommodityAveragePriceOption" , SimmConfiguration::ProductClass::Commodity},
233- {" CommodityBasketOption" , SimmConfiguration::ProductClass::Commodity},
234- {" CommodityDigitalAveragePriceOption" , SimmConfiguration::ProductClass::Commodity},
235- {" CommodityDigitalOption" , SimmConfiguration::ProductClass::Commodity},
236- {" CommodityForward" , SimmConfiguration::ProductClass::Commodity},
237- {" CommodityOption" , SimmConfiguration::ProductClass::Commodity},
238- {" CommodityOptionStrip" , SimmConfiguration::ProductClass::Commodity},
239- {" CommodityPosition" , SimmConfiguration::ProductClass::Commodity},
240- {" CommodityRainbowOption" , SimmConfiguration::ProductClass::Commodity},
241- {" CommodityWorstOfBasketSwap" , SimmConfiguration::ProductClass::Commodity},
242- {" CommoditySpreadOption" , SimmConfiguration::ProductClass::Commodity},
243- {" CommoditySwap" , SimmConfiguration::ProductClass::Commodity},
244- {" CommoditySwaption" , SimmConfiguration::ProductClass::Commodity},
245- {" CommodityTaRF" , SimmConfiguration::ProductClass::Commodity},
246- {" CommodityVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
247- {" CommodityPairwiseVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
248- {" CommodityBasketVarianceSwap" , SimmConfiguration::ProductClass::Commodity},
249- {" Ascot" , SimmConfiguration::ProductClass::Credit},
250- {" AssetBackedCreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
251- {" CBO" , SimmConfiguration::ProductClass::Credit},
252- {" CreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
253- {" CreditDefaultSwapOption" , SimmConfiguration::ProductClass::Credit},
254- {" CreditLinkedSwap" , SimmConfiguration::ProductClass::Credit},
255- {" IndexCreditDefaultSwap" , SimmConfiguration::ProductClass::Credit},
256- {" IndexCreditDefaultSwapOption" , SimmConfiguration::ProductClass::Credit},
257- {" RiskParticipationAgreement" , SimmConfiguration::ProductClass::Credit},
258- {" SyntheticCDO" , SimmConfiguration::ProductClass::Credit},
259- {" Failed" , SimmConfiguration::ProductClass::Empty},
260- {" IMScheduleTrade" , SimmConfiguration::ProductClass::Empty},
261- {" SensiTrade" , SimmConfiguration::ProductClass::Empty},
262- {" UseCounterparty" , SimmConfiguration::ProductClass::Empty},
263- {" EquityAccumulator" , SimmConfiguration::ProductClass::Equity},
264- {" EquityAsianOption" , SimmConfiguration::ProductClass::Equity},
265- {" EquityAsianOption" , SimmConfiguration::ProductClass::Equity},
266- {" EquityBarrierOption" , SimmConfiguration::ProductClass::Equity},
267- {" EquityBasketOption" , SimmConfiguration::ProductClass::Equity},
268- {" EquityCliquetOption" , SimmConfiguration::ProductClass::Equity},
269- {" EquityDigitalOption" , SimmConfiguration::ProductClass::Equity},
270- {" EquityDoubleBarrierOption" , SimmConfiguration::ProductClass::Equity},
271- {" EquityDoubleTouchOption" , SimmConfiguration::ProductClass::Equity},
272- {" EquityEuropeanBarrierOption" , SimmConfiguration::ProductClass::Equity},
273- {" EquityForward" , SimmConfiguration::ProductClass::Equity},
274- {" EquityFutureOption" , SimmConfiguration::ProductClass::Equity},
275- {" EquityOption" , SimmConfiguration::ProductClass::Equity},
276- {" EquityOptionPosition" , SimmConfiguration::ProductClass::Equity},
277- {" EquityOutperformanceOption" , SimmConfiguration::ProductClass::Equity},
278- {" EquityPosition" , SimmConfiguration::ProductClass::Equity},
279- {" EquityRainbowOption" , SimmConfiguration::ProductClass::Equity},
280- {" EquitySwap" , SimmConfiguration::ProductClass::Equity},
281- {" EquityTaRF" , SimmConfiguration::ProductClass::Equity},
282- {" EquityTouchOption" , SimmConfiguration::ProductClass::Equity},
283- {" EquityVarianceSwap" , SimmConfiguration::ProductClass::Equity},
284- {" EquityPairwiseVarianceSwap" , SimmConfiguration::ProductClass::Equity},
285- {" EquityBasketVarianceSwap" , SimmConfiguration::ProductClass::Equity},
286- {" FxAccumulator" , SimmConfiguration::ProductClass::FX},
287- {" FxAsianOption" , SimmConfiguration::ProductClass::FX},
288- {" FxAsianOption" , SimmConfiguration::ProductClass::FX},
289- {" FxBarrierOption" , SimmConfiguration::ProductClass::FX},
290- {" FxBasketOption" , SimmConfiguration::ProductClass::FX},
291- {" FxDigitalBarrierOption" , SimmConfiguration::ProductClass::FX},
292- {" FxDigitalOption" , SimmConfiguration::ProductClass::FX},
293- {" FxDoubleBarrierOption" , SimmConfiguration::ProductClass::FX},
294- {" FxDoubleTouchOption" , SimmConfiguration::ProductClass::FX},
295- {" FxEuropeanBarrierOption" , SimmConfiguration::ProductClass::FX},
296- {" FxWorstOfBasketSwap" , SimmConfiguration::ProductClass::FX},
297- {" FxAverageForward" , SimmConfiguration::ProductClass::FX},
298- {" FxForward" , SimmConfiguration::ProductClass::FX},
299- {" FxKIKOBarrierOption" , SimmConfiguration::ProductClass::FX},
300- {" FxOption" , SimmConfiguration::ProductClass::FX},
301- {" FxRainbowOption" , SimmConfiguration::ProductClass::FX},
302- {" FxSwap" , SimmConfiguration::ProductClass::FX},
303- {" FxTaRF" , SimmConfiguration::ProductClass::FX},
304- {" FxTouchOption" , SimmConfiguration::ProductClass::FX},
305- {" FxVarianceSwap" , SimmConfiguration::ProductClass::FX},
306- {" FxPairwiseVarianceSwap" , SimmConfiguration::ProductClass::FX},
307- {" FxBasketVarianceSwap" , SimmConfiguration::ProductClass::FX},
308- {" BalanceGuaranteedSwap" , SimmConfiguration::ProductClass::Rates},
309- {" Bond" , SimmConfiguration::ProductClass::Rates},
310- {" BondOption" , SimmConfiguration::ProductClass::Rates},
311- {" BondRepo" , SimmConfiguration::ProductClass::Rates},
312- {" BondTRS" , SimmConfiguration::ProductClass::Rates},
313- {" CallableSwap" , SimmConfiguration::ProductClass::Rates},
314- {" CapFloor" , SimmConfiguration::ProductClass::Rates},
315- {" ConvertibleBond" , SimmConfiguration::ProductClass::Rates},
316- {" FlexiSwap" , SimmConfiguration::ProductClass::Rates},
317- {" ForwardBond" , SimmConfiguration::ProductClass::Rates},
318- {" ForwardRateAgreement" , SimmConfiguration::ProductClass::Rates},
319- {" MultiLegOption" , SimmConfiguration::ProductClass::Rates},
320- {" CrossCurrencySwap" , SimmConfiguration::ProductClass::Rates},
321- {" Swap" , SimmConfiguration::ProductClass::Rates},
322- {" InflationSwap" , SimmConfiguration::ProductClass::Rates},
323- {" Swaption" , SimmConfiguration::ProductClass::Rates},
324- {" TotalReturnSwap" , SimmConfiguration::ProductClass::Rates},
325- {" ContractForDifference" , SimmConfiguration::ProductClass::Rates},
326- {" Autocallable_01" , SimmConfiguration::ProductClass::Equity},
327- // These are generic products that need logic to determine the product class, see
328- // utilities.cpp/simmProductClassFromOreTrade()
329- {" Autocallable_01" , SimmConfiguration::ProductClass::Equity},
330- {" CompositeTrade" , SimmConfiguration::ProductClass::Rates},
331- {" DoubleDigitalOption" , SimmConfiguration::ProductClass::Rates},
332- {" EuropeanOptionBarrier" , SimmConfiguration::ProductClass::Equity},
333- {" PerformanceOption_01" , SimmConfiguration::ProductClass::Equity},
334- {" ScriptedTrade" , SimmConfiguration::ProductClass::Equity}};
335-
336119set<SimmConfiguration::RiskClass> SimmConfiguration::riskClasses (bool includeAll) {
337120
338121 // This only works if 'All' is the last enum value
@@ -385,18 +168,6 @@ set<SimmConfiguration::ProductClass> SimmConfiguration::productClasses(bool incl
385168 return result;
386169}
387170
388- SimmConfiguration::ProductClass simmProductClassFromOreTradeType (const string& tradeType) {
389- QL_REQUIRE (tradeProductClassMap.count (tradeType) > 0 ,
390- " simmProductClassFromOreTradeType: tradeType '" << tradeType << " ' not recognised" );
391- return tradeProductClassMap.at (tradeType);
392- }
393-
394- SimmConfiguration::ProductClass scheduleProductClassFromOreTradeType (const string& tradeType) {
395- QL_REQUIRE (tradeScheduleProductClassMap.count (tradeType) > 0 ,
396- " scheduleProductClassFromOreTradeType: tradeType '" << tradeType << " ' not recognised" );
397- return tradeScheduleProductClassMap.at (tradeType);
398- }
399-
400171ostream& operator <<(ostream& out, const SimmConfiguration::SimmSide& s) {
401172 string side = s == SimmConfiguration::SimmSide::Call ? " Call" : " Post" ;
402173 return out << side;
0 commit comments