OnixS ICE iMpact Multicast Price Feed Handler C++ library  8.18.0
API documentation
FuturesProductDefinition.h
Go to the documentation of this file.
1 /**
2  * \file
3  * \brief Declare `OnixS::ICE::iMpact::MarketData::FuturesProductDefinition` message structure
4  */
5 /*
6  * Copyright (c) Onix Solutions Limited. All rights reserved.
7  *
8  * This software owned by Onix Solutions Limited and is protected by copyright law
9  * and international copyright treaties.
10  *
11  * Access to and use of the software is governed by the terms of the applicable ONIXS Software
12  * Services Agreement (the Agreement) and Customer end user license agreements granting
13  * a non-assignable, non-transferable and non-exclusive license to use the software
14  * for it's own data processing purposes under the terms defined in the Agreement.
15  *
16  * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
17  * of this source code or associated reference material to any other location for further reproduction
18  * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
19  *
20  * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
21  * the terms of the Agreement is a violation of copyright law.
22  */
23 
24 #pragma once
25 
26 #include "../Enumerations.h"
27 #include "../Export.h"
28 #include "../Optional.h"
29 #include "../Time.h"
30 #include "../Types.h"
31 
32 #include <iosfwd>
33 #include <string>
34 #include <vector>
35 
36 namespace OnixS { namespace ICE { namespace iMpact { namespace MarketData {
37 
38 /// This class represents the Futures/OTC Product Definition Response Message.
39 struct ONIXS_ICEMDH_EXPORT FuturesProductDefinition
40 {
41  /// Message type constant
42  enum
43  {
44  messageType = 'B'
45  };
46 
47  /// The original request sequence ID assigned by client, unique per
48  /// session.
50 
51  /// See Appendix C for the list of market types and IDs.
53 
54  /// Unique identifier of the market.
56 
57  /// See Naming Convention on Appendix D.
58  std::string contractSymbol;
59 
60  /// See Appendix A on trading status codes.
62 
63  /// Denominator for the order price fields in this market.
65 
66  /// Minimum increment price for this market.
68 
69  /// Minimum increment quantity for this market.
71 
72  /// The lot size is minimum size of contracts in lots. It is multiplier to
73  /// determine the total lots.
74  int lotSize;
75 
76  /// Description of the market.
77  std::string marketDesc;
78 
79  /// 4 digit year. Last date that the market can be traded and should be
80  /// removed from the system.
81  short maturityYear;
82 
83  /// Month range 1-12. Last date that the market can be traded and should
84  /// be removed from the system.
86 
87  /// Day of the month. Last date that the market can be traded and should
88  /// be removed from the system.
89  short maturityDay;
90 
91  /// Indicate if the market is a spread.
92  bool isSpread;
93 
94  /// Indicate if the market is crack spread.
96 
97  /// Ignored when it is not spread.
99 
100  /// Ignored when it is not spread.
102 
103  /// Denominator for the deal price fields in the market. For most markets,
104  /// this is the same as OrderPriceDenominator. However, it could be
105  /// different for some crack or spread markets.
107 
108  /// Minimum quantity for this market.
109  int minQty;
110 
111  /// The quantity in unit of measurement per lot. For example, it is 1000
112  /// barrels per lot for Brent.
114 
115  /// The currency that the market is traded on.
116  std::string currency;
117 
118  /// Only used for `OffExchangeIncrementOptionPrice`.
120 
121  /// Use `ScreentickValue` and `BlockTickValue` instead of this field.
122  /// `OrderPriceDenominator` should be applied to get the real value.
123  /// Please take note that this value can be different for the same markets
124  /// with different expiry and that this value can change over time for a
125  /// given market (i.e. `MarketID`).
126  long long oldTickValue;
127 
128  /// Indicate if the market supports option markets.
130 
131  /// Clearing limit admin related.
132  std::string clearedAlias;
133 
134  /// Indicate if implication is done for a given spread market and its
135  /// given outright leg markets.
137 
138  /// 4 digit year.
140 
141  /// Month range 1-12.
143 
144  /// Day of the month.
146 
147  /// Minimum Price.
149 
150  /// Maximum Price.
152 
153  /// Name of the product that the contract/market is under.
154  std::string productName;
155 
156  /// Alias of the hub for the contract/market.
157  std::string hubAlias;
158 
159  /// Name of the strip for the contract/market.
160  std::string stripName;
161 
162  /// Indicate if serial options is supported.
164 
165  /// Indicate if the contract is tradable.
167 
168  /// Denominator for the settlement price fields in the market. For most
169  /// markets, this is the same as DealPriceDenominator.
171 
172  /// Market Identifier Code for the market.
173  std::string micCode;
174 
175  /// Denominator for UnitQuantity. Clients should also apply
176  /// UnitQtyDenominator when calculating LotSize. This field will be `0`
177  /// for most of the markets.
179 
180  /// Contains the Strategy Code for defined market where applicable. See
181  /// Appendix E for list of codes.
183 
184  /// Indicate if the contract is for hedge only.
185  bool hedgeOnly;
186 
187  /// Exchange silo code for the market.
189 
190  /// Denominator for `OffExchangeIncrementQty`.
192 
193  /// Off exchange increment qty. `OffExchangeIncrementQtyDenominator`
194  /// should be applied to this field.
196 
197  /// Off exchange increment price. `OrderPriceDenominator` should be
198  /// applied to this field.
200 
201  /// Off exchange options increment price. `NumDecimalsOptionsPrice` should
202  /// be applied to this field.
204 
205  /// ID of the product that the contract/market is under.
207 
208  /// ID of the hub for the contract/market.
209  int hubId;
210 
211  /// ID of the strip for the contract/market.
212  int stripId;
213 
214  /// The ISIN of the security this market is associated with. This is
215  /// currently only populated for Liffe Equity markets.
216  std::string underlyingISIN;
217 
218  /// This nested class represents block details definition.
219  struct ONIXS_ICEMDH_EXPORT BlockDetail
220  {
221  /// Block Type.
223 
224  /// Trade Type.
226 
227  /// Minimum Quantity. `OffExchangeIncrementQtyDenominator` should be
228  /// applied to this field.
229  long long minQty;
230 
231  /// Default constructor.
232  BlockDetail();
233 
234  /// Returns string representation.
235  std::string toString() const;
236  };
237 
238  /// Alias for collection of BlockDetails.
239  typedef std::vector<BlockDetail> BlockDetails;
240 
241  /// Collection of BlockDetails.
243 
244  /// Denominator for the alternate deal price fields in the market.
246 
247  /// Fixed Rate: The fixed rate for an instrument.
249 
250  /// Fixed Rate: The fixed rate Denominator for an instrument.
252 
253  /// Cash Flow Alignment Date: The cash flow alignment date is a date not
254  /// adjusted for holidays used to derive interest payment dates. Any
255  /// calendar day.
257 
258  /// Effective Date: The effective date of the swap future. Any business
259  /// day.
261 
262  /// First Fixing Date: The first Fixing Date is the date at which the
263  /// float rate is set during the first float period. Any acceptable
264  /// business day.
266 
267  /// Previous Fixing Rate: The rate set on the last reset date. Sent for
268  /// float leg on aged or spot starting swap futures. Not sent for forward
269  /// starting swap futures. Number of decimal places for RepurchaseRate is
270  /// 5. `0` is valid for this field up until the First Fixing Date
271  /// (IssueDate).
273 
274  /// Previous Fixing Date: The date the floating rate was set for the next
275  /// floating payment. Milliseconds since Jan 1st, 1970, 00:00:00 GMT. `0`
276  /// is valid for this field up until the First Fixing Date (IssueDate).
278 
279  /// Index Factor: Percentage of the original index that is still accruing
280  /// interest. Number of decimal places for Factor is 2.
282 
283  /// Interpolation Factor: Multiplier that when applied to the longer rate
284  /// in the CreditRating (Rate Descriptor) field results in RepurchaseRate
285  /// (Previous Fixing Rate). Not sent for forward starting interest rate
286  /// swap futures.
288 
289  /// Denominator value for ContractMultiplier.
291 
292  /// Payment Frequency: The interest rate swap future payment frequency.
293  /// Supported values: `6M` = 6 months, `1Y` = 1 year.
295 
296  /// Rate Descriptor: The description of Float Rate. Sent for float leg on
297  /// aged or spot starting swap futures.
299 
300  /// Total Premium Accrual: Premium that has accrued during the current
301  /// quarterly payment period. Based on 100 Notional and will be applied to
302  /// the `A` value. Number of decimal places for AccruedPremiumAmt is 10.
304 
305  /// CDS - Premium & Credit Event Payments (B): This value represents
306  /// historical premium and credit event payments for 100 notional, and is
307  /// one of the primary inputs needed for calculating a futures price for a
308  /// swap future. IRS - Accrued Coupons (B Value): This value represents
309  /// historical fixed and floating payments for 100 notional, and is one of
310  /// the primary inputs needed for calculating a futures price for an
311  /// interest rate swap future. Number of decimal places for
312  /// EventPaymentAmt is 10. This value can be negative.
314 
315  /// Price Alignment Interest (C): Eris PAI is the cumulative daily
316  /// interest on variation margin adjustment for 100 notional. Eris PAI is
317  /// one of the primary inputs needed for calculating a futures price for a
318  /// swap future. IRS - Accrued Coupons (B Value): This value represents
319  /// historical fixed and floating payments for 100 notional, and is one of
320  /// the primary inputs needed for calculating a futures price for a swap
321  /// future. Denominator value for AlignmentInterestRate is 10.
323 
324  /// Settlement Type.
326 
327  /// Indicates if Market is only tradable via ICE Block Trade. This also
328  /// means the screen trading is not allowed for the market.
330 
331  /// Indicates if flexible strikes can be created for the option market.
333 
334  /// Market ID for the corresponding hedge market. It will be set to `-1`
335  /// when not applicable.
337 
338  /// The number of markets for the given market type.
340 
341  /// Only sent if contract symbol is greater than 35. Client should use
342  /// this field if sent else use existing contract symbol field.
344 
345  /// Unit Of Measure.
347 
348  /// Indicates if GTC is allowed in the market.
350 
351  /// Indicates if Cross order is supported in the market.
353 
354  /// Indicates if AON order is supported in the market.
356 
357  /// Indicates MIFID-II market.
359 
360  /// Indicates this is a test market.
362 
363  /// Product ID to use when requesting new spread.
365 
366  /// This ISIN is only supported for MiFID Regulated Markets. Of the MiFID
367  /// markets, only Futures and Options markets will support ISINs; some
368  /// strategies will have an ISIN.
370 
371  /// This field can be used to identify if a market is Platts or not.
373 
374  /// ScreenLastTradeDate is the last date, by Exchange rule, that the
375  /// market is available for trading on the Central Order Book. It applies
376  /// to all cleared instruments on the trading platform.
378 
379  /// Indicates if dividend is adjusted.
381 
382  /// Indicates whether the Block Minimum can be overridden for the market.
384 
385  /// The deliverable quantity of a stock, commodity, or other financial
386  /// instrument that underlies a futures or options contract.
388 
389  /// Identifies the monetary amount per tick move when calculated from the
390  /// Central Limit Order Book.
392 
393  /// Identifies the monetary amount per tick move when calculated for Off-
394  /// Exchange trades.
396 
397  /// Denominator for ScreenTickValue and BlockTickValue.
399 
400  /// Denominator for ContractSize.
402 
403  /// Number of cycles (days, hours, MWh, etc) for a contract.
405 
406  /// Indicates when a market is standard vs nonstandard. Field will only
407  /// exist on/be applicable to equity markets. Default value is false.
409 
410  /// Default constructor.
412 
413  /// Initialize from raw message data.
414  FuturesProductDefinition(const char* data, std::size_t dataSize);
415 
416  /// Deserialize from raw data.
417  void deserialize(const char* data, std::size_t dataSize);
418 
419  /// Reset all fields to default values.
420  void reset();
421 
422  /// Returns string representation.
423  std::string toString() const;
424 };
425 
426 /// Make it printable using C++ I/O streams.
427 ONIXS_ICEMDH_EXPORT std::ostream& operator<<(std::ostream&, const FuturesProductDefinition&);
428 
429 }}}} // namespace OnixS::ICE::iMpact::MarketData
std::string productName
Name of the product that the contract/market is under.
Optional< int > numOfCycles
Number of cycles (days, hours, MWh, etc) for a contract.
Optional< bool > miFIDRegulatedMarket
Indicates MIFID-II market.
Optional< bool > gtAllowed
Indicates if GTC is allowed in the market.
short MarketType
Alias for market types.
Definition: Types.h:36
std::vector< BlockDetail > BlockDetails
Alias for collection of BlockDetails.
This nested class represents block details definition.
bool hedgeOnly
Indicate if the contract is for hedge only.
long long Price
Alias for order identifiers type.
Definition: Types.h:54
Optional< bool > testMarketIndicator
Indicates this is a test market.
Optional< MarketTransparencyType::Enum > marketTransparencyType
This field can be used to identify if a market is Platts or not.
std::string contractSymbol
See Naming Convention on Appendix D.
Optional< bool > crossOrderSupported
Indicates if Cross order is supported in the market.
Optional< char > couponRateDenominator
Fixed Rate: The fixed rate Denominator for an instrument.
ExchangeSilo::Enum exchangeSilo
Exchange silo code for the market.
int incrementPrice
Minimum increment price for this market.
int MarketId
Alias for market identifiers type.
Definition: Types.h:39
char numDecimalsOptionsPrice
Only used for OffExchangeIncrementOptionPrice.
std::ostream & operator<<(std::ostream &, const Error &)
Make it printable to formatted C++ I/O streams.
Optional< char > tickValueDenominator
Denominator for ScreenTickValue and BlockTickValue.
TradingStatus::Enum tradingStatus
See Appendix A on trading status codes.
bool isCrackSpread
Indicate if the market is crack spread.
Optional< int > refSpreadProductId
Product ID to use when requesting new spread.
Optional< bool > overrideBlockMin
Indicates whether the Block Minimum can be overridden for the market.
Optional< SettlementType::Enum > settlementType
Settlement Type.
int productId
ID of the product that the contract/market is under.
char orderPriceDenominator
Denominator for the order price fields in this market.
MarketType requestMarketType
See Appendix C for the list of market types and IDs.
char offExchangeIncrementQtyDenominator
Denominator for OffExchangeIncrementQty.
Enum
Exchange silo code for the market.
Definition: Enumerations.h:841
Optional< bool > flexAllowed
Indicates if flexible strikes can be created for the option market.
int incrementQty
Minimum increment quantity for this market.
This class represents the Futures/OTC Product Definition Response Message.
Optional< char > interpolationFactorDenominator
Denominator value for ContractMultiplier.
std::string hubAlias
Alias of the hub for the contract/market.
Optional< bool > aonAllowed
Indicates if AON order is supported in the market.
std::string stripName
Name of the strip for the contract/market.
std::string micCode
Market Identifier Code for the market.
Optional< int > numOfMarkets
The number of markets for the given market type.
bool allowOptions
Indicate if the market supports option markets.
int stripId
ID of the strip for the contract/market.
Optional< long long > couponRate
Fixed Rate: The fixed rate for an instrument.
Optional< BlockDetails > blockDetails
Collection of BlockDetails.
Optional< bool > isDividendAdjusted
Indicates if dividend is adjusted.
bool isSerialOptionsSupported
Indicate if serial options is supported.
std::string currency
The currency that the market is traded on.
Optional< char > contractSizeDenominator
Denominator for ContractSize.
Optional< char > altPriceDenominator
Denominator for the alternate deal price fields in the market.