The Lab

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
 *
 * Copyright (C) 2017 MarketFactory, Inc. All rights reserved.
 * Use in source and binary forms, with or without modification, is permitted provided that the following conditions are met:
 * 1. You may only use this software for internal evaluation and testing purposes and may not use the software for engaging
 * in live trades, unless and until you have entered into a separate agreement with MarketFactory governing the use of
 * MarketFactory software in a production environment.
 * 2. You may not distribute the software (in either source or binary forms) to third parties.
 * 3. All copies of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 *    THIS SOFTWARE IS PROVIDED BY MARKETFACTORY AND ITS LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 *    BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
 *    NO EVENT SHALL MARKETFACTORY OR ITS LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 *    OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 *    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 -->
<sbe:messageSchema xmlns:sbe="http://www.fixprotocol.org/ns/simple/RC3"
                   package="mfunified"
                   id="1"
                   version="1"
                   semanticVersion="MF-FIX5.0SP2"
                   description="Schema for marketdata messages.  Based on FIX50SP2. The protocol is designed to run over various transports (TCP, UDP unicast, shared memory, and UDP multicast)."
                   byteOrder="littleEndian">

<!-- https://jira.marketfactory.com/browse/PRODMGT-179 SBE/Whisperer support for Fwds/NDFs/Swaps/NDSs
-->
<!-- https://jira.marketfactory.com/browse/PRODMGT-135 SBE codec for distribution (Maker & Taker).
-->
	<types>

		<!-- SBE defined types -->
        <composite name="messageHeader" description="The SBE header that is part of each message.">
            <type name="blockLength" primitiveType="uint16" description="The length of the message root block before repeating groups or variable data commences."/>
            <type name="templateId" primitiveType="uint16" description="The identifier for the template type of the message that is to follow."/>
            <type name="schemaId" primitiveType="uint16" description="The identifier for the schema that defines the message."/>
            <type name="version" primitiveType="uint16" description="The version of the schema allowing for extension."/>
        </composite>
		
        <composite name="varDataEncoding" description="Definition for a variable length string.">
            <type name="length" primitiveType="uint8" description="Length of string." maxValue="1300"/>
            <type name="varData" primitiveType="uint8" description="Array of UTF-8 characters." length="0" characterEncoding="UTF-8"/>
        </composite>

        <composite name="groupSizeEncoding" description="Repeating group dimensions." semanticType="NumInGroup">
            <type name="blockLength" description="Length of element." primitiveType="uint8"/>
            <type name="numInGroup" description="Number of items in repeating group." primitiveType="uint8"/>
        </composite>

		<!-- Primitive types -->
        <type name="Int32NULL" description="Nullable, signed 32-bit integer." presence="optional" nullValue="-2147483648" primitiveType="int32" semanticType="int"/>
        <type name="Int8NULL" description="Nullable, signed 8-bit integer." presence="optional" nullValue="-128" primitiveType="int8"/>
        <type name="uInt32NULL" description="Nullable, unsigned 32-bit integer." presence="optional" nullValue="4294967295" primitiveType="uint32"/>
        <type name="uInt8NULL" description="Nullable, unsigned 8-bit integer." presence="optional" nullValue="255" primitiveType="uint8"/>
        <type name="LocalMktDate" description="Local calendar date in days since epoch."   presence="optional" nullValue="65535" primitiveType="uint16" semanticType="LocalMktDate"/>
        <type name="SeqNum" description="Sequence number for detecting missed messages." primitiveType="uint32" semanticType="SeqNum"/>
        <type name="MDComponentValue" description="An untyped array for storing a value." primitiveType="uint8" length="32"/>
        <type name="SecurityID" description="Numeric ID of a given security." primitiveType="uint32"/>
        <type name="VenueID" description="Numeric ID of a given venue." nullValue="4294967295" primitiveType="uint32"/>
        <type name="Timestamp" description="Number of nanoseconds since epoch" primitiveType="uint64"/>

		<!-- String types -->
        <type name="Text" description="Free format text string." length="64" primitiveType="char" semanticType="String"/>
        <type name="SecurityRequestID" description="UniqueID for security definition request." length="32" primitiveType="char" semanticType="String"/>
        <type name="Symbol" description="Identifier for a security." length="32" primitiveType="char" semanticType="String"/>
        <type name="Username" description="Id given to user for logging on." length="32" primitiveType="char" semanticType="String"/>
        <type name="Password" description="Password used to logon." length="32" primitiveType="char" semanticType="String"/>
<!-- MSW Start -->
        <type name="String32Type" description="Arbitrary 32 byte string." length="32" primitiveType="char" semanticType="String"/>
        <type name="USI" description="32 character USI." length="32" primitiveType="char" semanticType="String"/>
        <type name="UTI" description="42 character UTI." length="42" primitiveType="char" semanticType="String"/>
        <type name="TVTIC" description="52 character TVTIC." length="52" primitiveType="char" semanticType="String"/>
        <type name="LEI" description="A Legal Entity Identifier (LEI) is a 20 character identifier that identifies distinct legal entities that engage in financial transactions. It is defined by ISO 17442." length="20" primitiveType="char" semanticType="String"/>
        <type name="MIC" description="A Market Identifier Code (MIC) is a 4 character identifier of the Multilateral Trading Facility (MTF)." length="4" primitiveType="char" semanticType="String"/>
        <type name="TradeIDPrefix" description="10 character Trade ID Prefix, usually a hash of the code issueing authority’s LEI." length="10" primitiveType="char" semanticType="String"/>
<!-- MSW End -->
        <type name="ClOrdIDString" description="ID constructed by client to build order. It is restricted in the following ways: 1.  Must be less than 20 characters. 2.  All valid ASCII from decimal 32 to decimal 126 excluding ~`_!*,-:=[]" primitiveType="char" length="32"/> <!-- TBD : 20, surely?? -->
        <type name="OrderIDString" description="Fixed length string type for IDs assigned by venues." primitiveType="char" length="32"/>
        <type name="OrderID" presence="optional" nullValue="18446744073709551615" description="Order ID assigned by MF." primitiveType="uint64"/> <!-- TBD vs above? -->

		<!-- Price and Qty types -->
        <composite name="DecimalQtyNULL" description="A number representing quantity" semanticType="Qty">
            <type name="mantissa" description="The significant digits of the quantity value with an optional NULL value." primitiveType="int64" presence="optional" nullValue="-9223372036854775807"/>
            <type name="exponent" description="The scale of the decimal number as a power of 10." primitiveType="int8"  presence="constant">-5</type>
        </composite>
		
        <composite name="PriceNULL" description="Price NULL" semanticType="Price">
            <type name="mantissa" description="The significant digits of the price value with an optional NULL value." primitiveType="int64" presence="optional" nullValue="-9223372036854775807"/>
            <type name="exponent" description="The scale of the decimal number as a power of 10." primitiveType="int8"  presence="constant">-9</type>
        </composite>

		<!-- Enumerations and sets -->
        <enum name="Boolean" encodingType="char" semanticType="Boolean">
            <validValue name="True">Y</validValue>
            <validValue name="False">N</validValue>
        </enum>
		
        <enum name="OrdType" encodingType="CharNULL"> <!-- Trading Version -->
            <validValue name="Market" description="Standard Market order. Buys or sells the order quantity regardless of price.">1</validValue>
            <validValue name="Limit" description="Standard Limit order. Buys or sells the order quantity without exceeding the order's price.">2</validValue>
            <validValue name="StopLoss" description="Standard Stop Loss order. Executes an exposure reducing market order when market exceeds order's price.">3</validValue>
            <validValue name="StopLimit" description="Standard Stop Limit order. Executes an exposure reducing limit order when market exceeds order's price.">4</validValue>
            <validValue name="MarketWithLeftOverAsLimit" description="Trading only, not used in published Market Data. Order that starts as a Market order and executes any leaves quantity as a limit order.">K</validValue>
            <validValue name="PreviouslyQuoted" description="An order to hit an individual quote.  To hit multiple quotes, aka sweeping, the user must submit individual orders from best to worst price.">D</validValue>
            <validValue name="VwapSweep" description="An order that can hit/lift one or multiple quotes by submitting an order with the desired amount and the Volume Weighted Average Price (VWAP) of the total amount.">y</validValue>
            <validValue name="PreviouslyQuotedAmountTier" description="An order to hit an individual quote within a Amount Tier Quote Book. Only one tier may be executed on per collection.">z</validValue>
        </enum>

		<!-- TBD - Good Til Date (GTD) not supported - will require ExpireDate to provided in Order messages to support this -->
        <enum name="TimeInForce" encodingType="char">
            <validValue name="Day">0</validValue>
            <validValue name="GTC">1</validValue>
            <validValue name="IOC">3</validValue>
            <validValue name="FOK">4</validValue>
        </enum>
		
        <enum name="Side" description="Side" encodingType="char">
            <validValue name="Buy">1</validValue>
            <validValue name="Sell">2</validValue>
			<validValue name="2-Way">7</validValue>
        </enum>

<!-- MSW Start -->
        <enum name="ReportingEntity" encodingType="char" >
            <validValue name="Maker">M</validValue>
            <validValue name="Taker">T</validValue>
        </enum>

        <enum name="SecurityType" encodingType="char">
            <validValue name="SPT" description="FX Spot">0</validValue>
            <validValue name="FWD" description="FX Forward">1</validValue>
            <validValue name="NDF" description="FX Non-Deliverable Forward">2</validValue>
            <validValue name="SWP" description="FX Swap">3</validValue>
            <validValue name="NDS" description="FX Non-Deliverable Swap">4</validValue>
            <validValue name="BLK" description="FX Block">5</validValue>
            <validValue name="FUT" description="Future">6</validValue>
            <validValue name="IMM" description="Money Market (Cash)">7</validValue>
            <validValue name="OPT" description="FX Option">8</validValue>
        </enum>
        
        <enum name="TenorType" encodingType="uint8" description="Defines the standard tenors supported by MarketFactory.">
            <validValue name="BKN" description="Broken Date">0</validValue>
            <validValue name="TOD" description="Today">1</validValue>
            <validValue name="TOM" description="Tomorrow">2</validValue>
            <validValue name="SPT" description="Spot">3</validValue>
            <validValue name="D1" description="One day after Spot">4</validValue>
            <validValue name="D2" description="Two days after Spot">5</validValue>
            <validValue name="W1" description="One Week">6</validValue>
            <validValue name="W2" description="Two Weeks">7</validValue>
            <validValue name="W3" description="Three Weeks">8</validValue>
            <validValue name="M1" description="One Month">9</validValue>
            <validValue name="M2" description="Two Months">10</validValue>
            <validValue name="M3" description="Three Months">11</validValue>
            <validValue name="M4" description="Four Months">12</validValue>
            <validValue name="M5" description="Five Months">13</validValue>
            <validValue name="M6" description="Six Months">14</validValue>
            <validValue name="M7" description="Seven Months">15</validValue>
            <validValue name="M8" description="Eight Months">16</validValue>
            <validValue name="M9" description="Nine Months">17</validValue>
            <validValue name="M10" description="Ten Months">18</validValue>
            <validValue name="M11" description="Eleven Months">19</validValue>
            <validValue name="Y1" description="One Year">20</validValue>
            <validValue name="M15" description="Fifteen Months">21</validValue>
            <validValue name="M18" description="Eighteen Months">22</validValue>
            <validValue name="Y2" description="Two Years">23</validValue>
            <validValue name="Y3" description="Three Years">24</validValue>
            <validValue name="Y4" description="Four Years">25</validValue>
            <validValue name="Y5" description="Five Years">26</validValue>
            <validValue name="IMM-M1" description="January IMM Date">27</validValue>
			<validValue name="IMM-M2" description="February IMM Date">28</validValue>
			<validValue name="IMM-M3" description="March IMM Date">29</validValue>
			<validValue name="IMM-M4" description="April IMM Date">30</validValue>
			<validValue name="IMM-M5" description="May IMM Date">31</validValue>
			<validValue name="IMM-M6" description="June IMM Date">32</validValue>
			<validValue name="IMM-M7" description="July IMM Date">33</validValue>
			<validValue name="IMM-M8" description="August IMM Date">34</validValue>
			<validValue name="IMM-M9" description="September IMM Date">35</validValue>
			<validValue name="IMM-M10" description="October IMM Date">36</validValue>
			<validValue name="IMM-M11" description="November IMM Date">37</validValue>
			<validValue name="IMM-M12" description="December IMM Date">38</validValue>
		</enum>

		<enum name="QuoteType" encodingType="uint8" description="Defines the valid states for a published Quote.">
			<validValue name="Indicative" description="Non-tradeable price">0</validValue>
			<validValue name="Tradeable" description="Executable price">1</validValue>
		</enum>

		<!-- TBD Need to review MF Instruments as there are lots of hack ccys there that we need to understand and possibly support here -->        
        <enum name="CurrencyType" encodingType="uint8" description="Defines the standard currencies supported by MarketFactory. ISO 4217 Currency code value, unless flagged otherwise.">
			<validValue name="AED" description="UAE Dirham">0</validValue>
			<validValue name="AFN" description="Afghan Afghani">1</validValue>
			<validValue name="ALL" description="Albanian Lek">2</validValue>
			<validValue name="AMD" description="Armenian Dram">3</validValue>
			<validValue name="ANG" description="Netherlands Antillean guilder">4</validValue>
			<validValue name="AOA" description="Angolan Kwanza">5</validValue>
			<validValue name="ARS" description="Argentine Peso">6</validValue>
			<validValue name="AUD" description="Australian Dollar">7</validValue>
			<validValue name="AWG" description="Aruban Florin">8</validValue>
			<validValue name="AZN" description="Azerbaijani Manat">9</validValue>
			<validValue name="BAM" description="Bosnia and Herzegovina Convertible Mark">10</validValue>
			<validValue name="BBD" description="Barbadian Dollar">11</validValue>
			<validValue name="BDT" description="Bangladeshi Taka">12</validValue>
			<validValue name="BGN" description="Bulgarian Lev">13</validValue>
			<validValue name="BHD" description="Bahraini Dinar">14</validValue>
			<validValue name="BIF" description="Burundian Franc">15</validValue>
			<validValue name="BMD" description="Bermudian Dollar">16</validValue>
			<validValue name="BND" description="Brunei dollar">17</validValue>
			<validValue name="BOB" description="Bolivian Boliviano">18</validValue>
			<validValue name="BOV" description="Bolivian Mvdol (funds code)">19</validValue>
			<validValue name="BRL" description="Brazilian Real">20</validValue>
			<validValue name="BSD" description="Bahamian Dollar">21</validValue>
			<validValue name="BTN" description="Bhutanese ngultrum">22</validValue>
			<validValue name="BWP" description="Botswana Pula">23</validValue>
			<validValue name="BYN" description="Belarusian Ruble">24</validValue>
			<validValue name="BZD" description="Belize Dollar">25</validValue>
			<validValue name="CAD" description="Canadian Dollar">26</validValue>
			<validValue name="CDF" description="Franc Congolais">27</validValue>
			<validValue name="CHE" description="WIR Euro (complementary currency)">28</validValue>
			<validValue name="CHF" description="Swiss Franc">29</validValue>
			<validValue name="CHW" description="WIR Franc (complementary currency)">30</validValue>
			<validValue name="CLF" description="Unidad de Fomento (funds code)">31</validValue>
			<validValue name="CLP" description="Chilean Peso">32</validValue>
			<validValue name="CNH" description="Chinese Yuan Renminbi (Offshore)">33</validValue>
			<validValue name="CNY" description="Chinese Yuan Renminbi (Onshore)">34</validValue>
			<validValue name="COP" description="Colombian Peso">35</validValue>
			<validValue name="COU" description="Unidad de Valor Real (UVR) (funds code)">36</validValue>
			<validValue name="CRC" description="Costa Rican Colon">37</validValue>
			<validValue name="CUC" description="Cuban convertible peso">38</validValue>
			<validValue name="CUP" description="Cuban peso">39</validValue>
			<validValue name="CVE" description="Cape Verdean Escudo">40</validValue>
			<validValue name="CZK" description="Czech Koruna">41</validValue>
			<validValue name="DJF" description="Djiboutian Franc">42</validValue>
			<validValue name="DKK" description="Danish Krone">43</validValue>
			<validValue name="DOP" description="Dominican Peso">44</validValue>
			<validValue name="DZD" description="Algerian Dinar">45</validValue>
			<validValue name="EGP" description="Egyptian Pound">46</validValue>
			<validValue name="ERN" description="Eritrean Nakfa">47</validValue>
			<validValue name="ETB" description="Ethiopian Birr">48</validValue>
			<validValue name="ETH" description="Ether Cryptocurrency - UNOFFICIAL">49</validValue>
			<validValue name="EUR" description="Euro">50</validValue>
			<validValue name="FJD" description="Fijian Dollar">51</validValue>
			<validValue name="FKP" description="Falkland Islands pound">52</validValue>
			<validValue name="GBP" description="Great British Pound">53</validValue>
			<validValue name="GEL" description="Georgian Lari">54</validValue>
			<validValue name="GHS" description="Ghanaian Cedi">55</validValue>
			<validValue name="GIP" description="Gibraltar pound">56</validValue>
			<validValue name="GMD" description="Gambian Dalasi">57</validValue>
			<validValue name="GNF" description="Guinean Franc">58</validValue>
			<validValue name="GTQ" description="Guatemalan quetzal">59</validValue>
			<validValue name="GYD" description="Guyana Dollar">60</validValue>
			<validValue name="HKD" description="Hong Kong Dollar">61</validValue>
			<validValue name="HNL" description="Honduran Lempira">62</validValue>
			<validValue name="HRK" description="Croatian Kuna">63</validValue>
			<validValue name="HTG" description="Haitian Gourde">64</validValue>
			<validValue name="HUF" description="Hungarian Forint">65</validValue>
			<validValue name="IDR" description="Indonesian Rupiah">66</validValue>
			<validValue name="ILS" description="New Israel Shekel">67</validValue>
			<validValue name="INR" description="Indian Rupee">68</validValue>
			<validValue name="IOT" description="IOTA Cryptocurrency - UNOFFICIAL">69</validValue>
			<validValue name="IQD" description="Iraqi Dinar">70</validValue>
			<validValue name="IRR" description="Iranian Rial">71</validValue>
			<validValue name="ISK" description="Icelandic Króna">72</validValue>
			<validValue name="JMD" description="Jamaican Dollar">73</validValue>
			<validValue name="JOD" description="Jordanian Dinar">74</validValue>
			<validValue name="JPY" description="Japanese Yen">75</validValue>
			<validValue name="KES" description="Kenyan Shilling">76</validValue>
			<validValue name="KGS" description="Kyrgyzstani som">77</validValue>
			<validValue name="KHR" description="Cambodian Riel">78</validValue>
			<validValue name="KMF" description="Comoro franc">79</validValue>
			<validValue name="KPW" description="North Korean won">80</validValue>
			<validValue name="KRW" description="South Korean Won">81</validValue>
			<validValue name="KWD" description="Kuwaiti Dinar">82</validValue>
			<validValue name="KYD" description="Cayman Islands Dollar">83</validValue>
			<validValue name="KZT" description="Kazkhstani Tenge">84</validValue>
			<validValue name="LAK" description="Lao Kip">85</validValue>
			<validValue name="LBP" description="Lebanese Pound">86</validValue>
			<validValue name="LKR" description="Sri Lankan Rupee">87</validValue>
			<validValue name="LRD" description="Liberian Dollar">88</validValue>
			<validValue name="LSL" description="Lesotho Loti">89</validValue>
			<validValue name="LTL" description="Lithuanian Litas">90</validValue>
			<validValue name="LYD" description="Libyan Dinar">91</validValue>
			<validValue name="MAD" description="Moroccan Dirham">92</validValue>
			<validValue name="MDL" description="Moldovan leu">93</validValue>
			<validValue name="MGA" description="Malagasy Ariary">94</validValue>
			<validValue name="MKD" description="Macedonian Denar">95</validValue>
			<validValue name="MMK" description="Myanmar Kyat">96</validValue>
			<validValue name="MNT" description="Mongolian Tugrik">97</validValue>
			<validValue name="MOP" description="Macanese Pataca">98</validValue>
			<validValue name="MRO" description="Mauritania Ouguiya">99</validValue>
			<validValue name="MUR" description="Mauritian Rupee">100</validValue>
			<validValue name="MVR" description="Maldivian rufiyaa">101</validValue>
			<validValue name="MWK" description="Malawian Kwacha">102</validValue>
			<validValue name="MXN" description="Mexican Peso">103</validValue>
			<validValue name="MXV" description="Mexican Unidad de Inversion (UDI) (funds code)">104</validValue>
			<validValue name="MYR" description="Malaysian Ringgit">105</validValue>
			<validValue name="MZN" description="New Mozambican Metical">106</validValue>
			<validValue name="NAD" description="Namibian Dollar">107</validValue>
			<validValue name="NGN" description="Nigerian Naira">108</validValue>
			<validValue name="NIO" description="Nicaraguan Córdoba">109</validValue>
			<validValue name="NOK" description="Norwegian Krone">110</validValue>
			<validValue name="NPR" description="Nepalese Rupee">111</validValue>
			<validValue name="NZD" description="New Zealand Dollar">112</validValue>
			<validValue name="OMR" description="Omani Rial">113</validValue>
			<validValue name="PAB" description="Panamanian balboa">114</validValue>
			<validValue name="PEN" description="Peruvian New Sol">115</validValue>
			<validValue name="PGK" description="Papua New Guinean Kina">116</validValue>
			<validValue name="PHP" description="Philippine Peso">117</validValue>
			<validValue name="PKR" description="Pakistani Rupee">118</validValue>
			<validValue name="PLN" description="Polish New Zloty">119</validValue>
			<validValue name="PYG" description="Paraguayan Guarani">120</validValue>
			<validValue name="QAR" description="Qatari Rial">121</validValue>
			<validValue name="RON" description="Romanian New Leu">122</validValue>
			<validValue name="RSD" description="Serbian Dinar">123</validValue>
			<validValue name="RUB" description="Russian Federation Ruble">124</validValue>
			<validValue name="RWF" description="Rwandan Franc">125</validValue>
			<validValue name="SAR" description="Saudi Arabiaan Riyal">126</validValue>
			<validValue name="SBD" description="Solomon Islands Dollar">127</validValue>
			<validValue name="SCR" description="Seychelles Rupee">128</validValue>
			<validValue name="SDG" description="Sudanese Pound">129</validValue>
			<validValue name="SEK" description="Swedish Krona">130</validValue>
			<validValue name="SGD" description="Singapore Dollar">131</validValue>
			<validValue name="SHP" description="Saint Helena pound">132</validValue>
			<validValue name="SLL" description="Sierra Leone Leone">133</validValue>
			<validValue name="SOS" description="Somali shilling">134</validValue>
			<validValue name="SRD" description="Surinamese Dollar">135</validValue>
			<validValue name="SSP" description="South Sudanese Pound">136</validValue>
			<validValue name="STD" description="Sao Tome Dobra">137</validValue>
			<validValue name="SVC" description="Salvadoran colón">138</validValue>
			<validValue name="SYP" description="Syrian Pound">139</validValue>
			<validValue name="SZL" description="Swazi Lilangeni">140</validValue>
			<validValue name="THB" description="Thai Baht">141</validValue>
			<validValue name="TJS" description="Tajikistani somoni">142</validValue>
			<validValue name="TMT" description="Turkmenistan manat">143</validValue>
			<validValue name="TND" description="Tunisian Dinar">144</validValue>
			<validValue name="TOP" description="Tongan Pa'Anga">145</validValue>
			<validValue name="TRY" description="Turkish New Lira">146</validValue>
			<validValue name="TTD" description="Trinidad and Tobago Dollar">147</validValue>
			<validValue name="TWD" description="New Taiwan Dollar">148</validValue>
			<validValue name="TZS" description="Tanzanian Shilling">149</validValue>
			<validValue name="UAH" description="Ukrainian Hryvnia">150</validValue>
			<validValue name="UGX" description="Uganda Shilling">151</validValue>
			<validValue name="USD" description="United States Dollar">152</validValue>
			<validValue name="USN" description="United States dollar (next day) (funds code)">153</validValue>
			<validValue name="UYI" description="Uruguay Peso en Unidades Indexadas (URUIURUI) (funds code)">154</validValue>
			<validValue name="UYU" description="Uruguayan Peso">155</validValue>
			<validValue name="UZS" description="Uzbekistani Som">156</validValue>
			<validValue name="VEF" description="Venezuelan Bolivar Fuerte">157</validValue>
			<validValue name="VND" description="Vietnamese Dong">158</validValue>
			<validValue name="VTC" description="Vertcoin Cryptocurrency - UNOFFICIAL">159</validValue>
			<validValue name="VUV" description="Vanuatu Vatu">160</validValue>
			<validValue name="WST" description="Samoa Tala">161</validValue>
			<validValue name="XAF" description="CFA Franc Central Africa">162</validValue>
			<validValue name="XAG" description="Silver">163</validValue>
			<validValue name="XAU" description="Gold">164</validValue>
			<validValue name="XBA" description="European Composite Unit (EURCO) (bond market unit)">165</validValue>
			<validValue name="XBB" description="European Monetary Unit (E.M.U.-6) (bond market unit)">166</validValue>
			<validValue name="XBC" description="European Unit of Account 9 (E.U.A.-9) (bond market unit)">167</validValue>
			<validValue name="XBD" description="European Unit of Account 17 (E.U.A.-17) (bond market unit)">168</validValue>
			<validValue name="XBT" description="Bitcoin Cryptocurrency - UNOFFICIAL">169</validValue>
			<validValue name="XCD" description="East Caribbean Dollar">170</validValue>
			<validValue name="XLM" description="Stellar Lumen Cryptocurrency - UNOFFICIAL">171</validValue>
			<validValue name="XMR" description="Monero Cryptocurrency - UNOFFICIAL">172</validValue>
			<validValue name="XDR" description="IMF Special drawing rights">173</validValue>
			<validValue name="XOF" description="CFA Franc West Africa">174</validValue>
			<validValue name="XPD" description="Palladium">175</validValue>
			<validValue name="XPF" description="French Pacific Franc">176</validValue>
			<validValue name="XPT" description="Platinum">177</validValue>
			<validValue name="XRP" description="Ripple Cryptocurrency - UNOFFICIAL">178</validValue>
			<validValue name="XZC" description="Zcoin Cryptocurrency - UNOFFICIAL">179</validValue>
			<validValue name="XSU" description="Unified System for Regional Compensation (SUCRE)">180</validValue>
			<validValue name="XTS" description="Code reserved for testing purposes">181</validValue>
			<validValue name="XUA" description="African Development Bank Unit of Account">182</validValue>
			<validValue name="XXX" description="No currency">183</validValue>
			<validValue name="YER" description="Yemeni Rial">184</validValue>
			<validValue name="ZAG" description="Silver (Loco Zurich) - UNOFFICIAL">185</validValue>
			<validValue name="ZAR" description="South African Rand">186</validValue>
			<validValue name="ZAU" description="Gold (Loco Zurich) - UNOFFICIAL">187</validValue>
			<validValue name="ZEC" description="Zcash Cryptocurrency - UNOFFICIAL">188</validValue>
			<validValue name="ZMW" description="Zambian Kwacha">189</validValue>
			<validValue name="ZWL" description="Zimbabwe Dollar">190</validValue>
        </enum>
        
        <set name="RegulatoryBodies" encodingType="uint8" description="Allows definition of which Regulatory Fields the Order will include.">
            <choice name="SEF" description="Dodd-Frank Swap Execution Facility.">0</choice>
            <choice name="EMIR" description="European Market Infrastructure Regulation.">1</choice>
            <choice name="MIFID" description="Markets in Financial Instruments Directive.">2</choice>
        </set>
<!-- MSW End -->

        <set name="VenueAttributes" description="Special features of a venue." encodingType="uint8">
            <choice name="hasBatching" description="Set if the venue supports batching of Market Data. Currently only on EBS feeds.">0</choice>
            <choice name="hasMinQty" description="Set if the venue has a minQty field for orders.">1</choice>
        </set>

        <set name="Flags" description="General use flags." encodingType="uint8">
            <choice name="lastMDEntryInGroup" description="Set if this is the last MDEntry in group.">0</choice>
        </set>

        <enum name="MDUpdateAction" description="A market data update action." encodingType="char" semanticType="char">
            <validValue name="New">0</validValue>
            <validValue name="Change">1</validValue>
            <validValue name="Delete">2</validValue>
        </enum>

        <enum name="MDEntryType" description="A market data entry type." encodingType="char">
            <validValue name="Bid" description="Entry contains bid details.">0</validValue>
            <validValue name="Offer" description="Entry contains offer details.">1</validValue>
            <validValue name="Trade" description="Entry contains venue trade details.">2</validValue>
			<validValue name="Mid-Price" description="Required for regulatory reporting.">H</validValue> <!-- MSW Regulatory -->
            <validValue name="EmptyBook" description="Sent to indicate the book should be cleared.">J</validValue>
            <validValue name="WorstTradeGiven" description="The worst price that was sold on EBS during a timeslice.">w</validValue>
            <validValue name="WorstTradePaid" description="The worst price that was bought on EBS during a timeslice.">x</validValue>
            <validValue name="TradeGiven" description="Indicates trade where the offer was aggressed.">y</validValue>
            <validValue name="TradePaid" description="Indicates trade where the bid was aggressed.">z</validValue>
        </enum>

        <enum name="MDBookType" description="Defines the type of a market data update group." encodingType="uint8">
            <validValue name="TopOfBook" description="Book containing just the top-of-book information.">1</validValue>
            <validValue name="PriceDepth" description="Book containing the standard per level price and depth information.">2</validValue>
            <validValue name="OrderDepth" description="Book containing the count of orders at each price level.">3</validValue>
            <validValue name="AmountView" description="The worst PRICE for which you would have to trade in order to get at least the regular amount (it's a minimum, not a precise value). The size field should be set to the same fixed constraint amount every time (fixed by the exchange for each market). This corresponds to an EBS Regular Price and to a Reuters Aggregate Price. This entry is credit screened (once again, we treat EBS Live's amount constraint as if it were credit-screened).">100</validValue>
			<validValue name="SpreadView" description=" A price constraint, that is, the sum total amount that is available from the top of the book through a fixed number of price levels away from that price. Essentially, this provides an amount variable for a fixed price. Because the price changes constantly, the fixed price range is usually specified as a price difference from the top-of-book. We compute provide that price in this entry. This corresponds to EBS's Outside Amount. Sometimes this entry is capped. This entry is credit-screened.">101</validValue>
            <validValue name="ExchangeBest" description="Used for Reuters.  The best price on the venue, regardless of whether it is credit screened.">102</validValue>
            <validValue name="PriceDepthQuote" description="Book containing quotes that have been aggregated by price.">103</validValue>
            <validValue name="Quote" description="Book containing quotes that must be aggressed individually. ">104</validValue>
            <validValue name="QuoteAmountTier" description="A stream of a collection of quotes where there are tiers of amount bands.  Only one tier may be executed per collection.">105</validValue>
            <validValue name="PriceDepthQuoteAmountTier" description="An Amount Tier Book that is aggregated by price.">106</validValue>
			<!-- MSW TBD - explicit identification of Aggregated books... To discuss - Maybe this is a function of the VenueID? -->
        </enum>

        <enum name="SubscriptionRequestType" description="Market data subscription request type." encodingType="char"> <!--MSW changed -->
            <validValue name="SnapshotAndUpdates" description="Subscription for all market data updates.">1</validValue>
            <validValue name="DisablePreviousSnapshot" description="Unsubscribe for all market data updates.">2</validValue>
            <validValue name="Resubscribe" description="Request for resubscription.  Applicable when the transport is UDP unicast.">z</validValue>
        </enum>

        <enum name="SecurityRequestType" description="Market data security request type." encodingType="uint8">
            <validValue name="AllSecurities" description="Request for all securities.">8</validValue>
        </enum>

        <enum name="SecurityTradingStatus" description="Trading status for a specific security." encodingType="uInt8NULL">
            <validValue name="Close">4</validValue>
            <validValue name="ReadyToTrade">17</validValue>
            <validValue name="NotAvailableForTrading">18</validValue>
            <validValue name="UnknownOrInvalid">20</validValue>
            <validValue name="PreOpen">21</validValue>
            <validValue name="PostClose">26</validValue>
            <validValue name="Error">254</validValue>
        </enum>

        <enum name="MDComponentType" description="Type of an Market data component which can be attached to a market data message." encodingType="uint8">
            <validValue name="Int">1</validValue>
            <validValue name="Length">2</validValue>
            <validValue name="NumInGroup">3</validValue>
            <validValue name="SeqNum">4</validValue>
            <validValue name="TagNum">5</validValue>
            <validValue name="Float">6</validValue>
            <validValue name="Qty">7</validValue>
            <validValue name="Price">8</validValue>
            <validValue name="PriceOffset">9</validValue>
            <validValue name="Amt">10</validValue>
            <validValue name="Percentage">11</validValue>
            <validValue name="Char">12</validValue>
            <validValue name="Boolean">13</validValue>
            <validValue name="String">14</validValue>
            <validValue name="MultipleCharValue">15</validValue>
            <validValue name="Currency">17</validValue>
            <validValue name="MonthYear">18</validValue>
            <validValue name="UTCTimestamp">19</validValue>
            <validValue name="UTCTimeOnly">20</validValue>
            <validValue name="LocalMktDate">21</validValue>
            <validValue name="data">23</validValue>
            <validValue name="MultipleStringValue">24</validValue>
            <validValue name="Country">25</validValue>
            <validValue name="Language">26</validValue>
            <validValue name="TZTimeOnly">27</validValue>
            <validValue name="TZTimestamp">28</validValue>
            <validValue name="Tenor">29</validValue>
        </enum>

        <enum name="MDReqRejReason" description="Reason for rejection of a Market data subscription request."  encodingType="char">
            <validValue name="UnknownSymbol" description="Rejected due to unknown security symbol.">0</validValue>
            <validValue name="Other" description="Rejected for other reason. Catch-all.">Z</validValue>
        </enum>
		
        <enum name="TradingSubscriptionStatus" description="Status of trading subscription." encodingType="uint8">
            <validValue name="Enabled">0</validValue>
            <validValue name="Disabled">1</validValue>
            <validValue name="RequestRejected">2</validValue>
            <validValue name="NextExpectedMsgSeqNumTooHigh" description="A rejection the indicates bad seqNum on subscription">3</validValue>
        </enum>
		
        <enum name="TradSesStatus" description="Status of a trading session." encodingType="uint8">
            <validValue name="Open" description="Market is open and ready to trade.">2</validValue>
            <validValue name="Closed" description="Market is not trading.">3</validValue>
			<validValue name="Pre-Open" description="Earliest phase of Opening market state. Order Entry, modification, and cancel are allowed. No order matching, so crossed (backwardated) prices are possible.">4</validValue> <!-- MSW New -->
            <validValue name="PrimeBrokerLoggedOff" description="Reuters specific.  The PB is logged off and therefore new orders are not able to be submitted.">250</validValue>
            <validValue name="CreditLow" description="EBS specific credit status.">252</validValue>
            <validValue name="CreditExhausted" description="EBS specific credit status.">253</validValue>
            <validValue name="Disconnected" description="MF is not connected to the venue, therfore trading is unavailable.">254</validValue>
        </enum>

        <enum name="OrdStatus" description="Order status." encodingType="char">
            <validValue name="New">0</validValue>
            <validValue name="PartiallyFilled">1</validValue>
            <validValue name="Filled">2</validValue>
            <validValue name="Canceled">4</validValue>
            <validValue name="Rejected">8</validValue>
            <validValue name="Error" description="Used for Reuters/EBS when a trade fails validation. Also used when an order goes into a bad state.  Both situations require manual intervention.">Y</validValue>
            <validValue name="ReceivedByMF">Z</validValue>
        </enum>

        <enum name="ExecType" description="Execution Type." encodingType="char">
            <validValue name="New">0</validValue>
            <validValue name="Canceled">4</validValue>
            <validValue name="Rejected">8</validValue>
            <validValue name="Trade">F</validValue>
            <validValue name="CanceledLastLook" description="Fastmatch returns an indication that the Cancel reason is that the order was rejected because of a Last Look">W</validValue>
            <validValue name="PendingMatch" description="Used for Reuters and EBS when there is an execution that is awaiting validation.">X</validValue>
            <validValue name="Error" description="Used for Reuters/EBS when a trade fails validation.  Also used when an order goes into a bad state. Both situations require manual intervention.">Y</validValue>
            <validValue name="ReceivedByMF">Z</validValue>
        </enum>

        <enum name="CxlRejReason" description="Cancel Request Rejection Reason." encodingType="uint8">
            <validValue name="TooLateToCancel">0</validValue>
            <validValue name="UnknownOrder">1</validValue>
            <validValue name="DuplicateClOrdIDReceived">6</validValue>
            <validValue name="Other">99</validValue>
        </enum>

<!-- MSW Start -->
        <enum name="QuoteRequestRejectReason" description="Reason for rejection of a Quote request." encodingType="uint8">
            <validValue name="UnknownSymbol" description="Rejected due to unknown security symbol.">1</validValue>
            <validValue name="Other" description="Rejected for other reason. Catch-all.">99</validValue>
        </enum>

		<enum name="QuoteRespType" description="TBD" encodingType="uint8">
			<validValue name="Pass" description="RFS Stream terminated by Taker.">6</validValue>
			<validValue name="Timed-out" description="RFS Stream duration ended without Order. Maker and ECN have individual time-outs.">8</validValue>
		</enum>
<!-- MSW End -->

	</types>

<!--
 *
 * Session-Level Messages
 *
 -->

    <sbe:message name="PacketHeader" id="0" description="Non-official SBE message. This is just used for the layout of the packet framing header.">
        <field name="PacketLength" id="20000" type="uint16" description="Length of the packet. Should always be small enough so the packet fits in a MTU."/>
        <field name="PacketSeqNum" id="20001" type="uint32" description="The sequence number of the packet, used to detect out of order/dropped packets in UDP based protocols."/>
        <field name="SendingTime" id="52" type="Timestamp" description="The timestamp that this packet was sent to the receiver." semanticType="SendingTime"/>
    </sbe:message>
	
    <sbe:message name="MessageLength" id="1" description="Non-official SBE message.  This comes before each message to indicate the length of the message. This should be used to iterate to each additional message in order to support the use case of the sender sending a newer version of the message (which has additional fields) but the decoder still being able to processes without having to change any code.">
        <field name="MessageLength" id="20002" type="uint16" description="Length of the packet.  Should always be small enough so the packet fits in a MTU."/>
    </sbe:message>
	
    <sbe:message name="Logon" id="2" description="Used to logon to a market data session." semanticType="A">
        <field name="Username" id="533" type="Username" semanticType="String"/>
        <field name="Password" id="554" type="Password" semanticType="String"/>
    </sbe:message>

    <sbe:message name="LogonResponse" id="3" description="An acknowledgement from the server that the logon was successful as well as the expected heartbeat interval." semanticType="A">
		<!-- TBD Why 108/HeartBtInt missing? -->
    </sbe:message>

    <sbe:message name="Logout" id="4" description="A request to stop the session." semanticType="5">
        <field name="Text" id="58" type="Text" description="Free format text string. May include reason for logout." semanticType="String"/>
    </sbe:message>

    <sbe:message name="LogoutResponse" id="5" description="An acknowledgement that the session has been terminated." semanticType="5"/>
	
    <sbe:message name="ResendRequest" id="6" description="A request to replay messages for a given venue. Only relevant for Orders and Executions." semanticType="2">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="BeginSeqNo" id="7" type="SeqNum" semanticType="SeqNum"/>
        <field name="Count" id="20018" type="uint32" semanticType="int" description="Number of messages, starting at the BeginSeqNo, to resend."/>
    </sbe:message>
    
    <sbe:message name="SequenceResetGapFill" id="7" description="A request to replay messages for a given venue" semanticType="4">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="NewSeqNo" id="36" type="SeqNum" semanticType="SeqNum"/>
    </sbe:message>
	
    <sbe:message name="Heartbeat" id="8" description="This is sent from each side of the connection periodically." semanticType="0">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="CurrentSeqNum" id="20019" type="SeqNum" description="This is the last sequence number sent.  Used to detect message drops." />
    </sbe:message>

<!--
 *
 * Venue Status Messages
 *
 -->

 <!-- Configuration information -->
    <sbe:message name="SecurityDefinitionRequest" id="101" description="A request for a list of a venue's securities and their attributes." semanticType="a">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="SecurityRequestType" id="321" type="SecurityRequestType" />
    </sbe:message>

	<!-- https://jira.marketfactory.com/browse/PRODMGT-180 SBE Schema change for SecurityDefinition
	 *
	 * Even though this is a new 3.15 API, We *should* provide a sane migraton path for clients from both 3.13 and 3.14 - If clients were to be able to use the new API in the old manner (i.e. backward compatibility) that would de-risk the transition. Especially true for existing Futures support that needs to be revisited, but only after after non-Spot FX.
	 *
	 * We *need* to provide sane migraton path for MF/Whisperer FHs - we need to be able to pass non-spot Mkt IDs for those non-upgraded FHs that still depend on my.mf static config to then lookup Product type, tenor(s).
	 * So Price Requests/Orders need to be able to specify a Spot Security/MarketID along with separate Product/Tenor components and the API should map this to the legacy Market ID *internally* (eg a simple static look-up).
	 *
	 * We do not want to mess with my.mf at this stage (big job).
	-->
    <sbe:message name="SecurityDefinition" id="102" description="Describes the attributes of a given security." semanticType="d">
        <field name="TotNumReports" id="911" type="uint32" description="The total number of security definitions in group.  This is used in the multicast stream so the application can detect the receipt of all security definitions."  semanticType="int"/>
        <field name="VenueID" id="20022" type="VenueID" semanticType="int" description="The numeric MF ID used to identify the Venue in other messages."/>	<!-- Aka feedID -->
        <field name="Symbol" id="55" type="Symbol" semanticType="String" description="The market convention representation of the instrument eg 'EUR/USD'"/>		<!-- Aka name. eg AUD/USD, or AUD/CAD-FORWARD-M6 (deprecated), 6AM0 (future, still needs to be supported) -->
        <field name="SecurityID" id="48" type="SecurityID" description="The numeric MF ID used to identify the Symbol in other messages."/>					<!-- Aka marketID. -->
        <field name="MinPriceIncrement" id="969" type="PriceNULL" semanticType="Price" description="The minimum Spot price movement, tick size."/>
        <field name="BigPriceIncrement" id="20004" type="PriceNULL" semanticType="Price" description="Pip position"/>
		<field name="FwdPriceIncrement" id="TBD" type="PriceNULL" semanticType="Price" description="The minimum Fwd price movement, Fwd Pts (and non-Spot All-in) precision" />
    </sbe:message>

    <sbe:message name="MarketDefinitionRequest" id="103" description="Request for a definition of the venue." semanticType="BT">
      <field name="VenueID" id="20022" type="VenueID"/>
	  <field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType" />
    </sbe:message>
    
    <sbe:message name="MarketDefinition" id="104" description="Contains attributes of the given venue." semanticType="BU">
      <field name="VenueID" id="20022" type="VenueID"/>
      <field name="MarketID" id="1301" type="Text" description="General name of the Market/Value. EBS-Ai for example."/>
      <field name="VenueName" id="20024" type="Text" description="MF defined market/venue name. Used to identify a special, specific MF configuration/connection to a market/venue. EBS-Ai-metals for example."/>
      <group name="NoOrdTypeRules" id="1237" description="A list of the supported order types." dimensionType="groupSizeEncoding">
          <field name="OrdType" id="40" type="OrdType" semanticType="char"/>
          <field name="TimeInForce" id="59" type="TimeInForce" semanticType="char"/>
      </group>
    </sbe:message>

    <sbe:message name="TradingSessionStatusRequest" id="105" description="A request to subscribe to a venue in order to begin trading." semanticType="g">
        <field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType" semanticType="char"/>
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="NextExpectedMsgSeqNum" id="789" type="SeqNum" semanticType="SeqNum"/>
    </sbe:message>
	
	<sbe:message name="TradingSessionStatus" id="106" description="A response to a TradingSessionStatusRequest indicating the state of the venue. This event will be sent if the state of the venue changes." semanticType="h">
		<field name="VenueID" id="20022" type="VenueID"/>
		<field name="TradingSubscriptionStatus" id="20020" type="TradingSubscriptionStatus"/>
		<field name="TradSesStatus" id="340" type="TradSesStatus" semanticType="int"/> <!-- Was 263 (incorrect) before -->
		<field name="Text" id="58" type="Text" description="Explanation of status state, if any."/>
    </sbe:message>


<!--
 *
 * Pricing Messages - Market Data (ESP, Order Matching) and Quotation (RFQ, RFS)
 *
 -->

    <!-- MarketData messages --> 
    <sbe:message name="MarketDataRequest" id="201" description="A request to create, cancel, or otherwise manipulate a subscription for a single security from a specific venue." semanticType="V"> <!-- NOTE: No support for client provision of desired rungs for Full Amount trading. This is currently done in http://my.mf:8080/#/profile_exchange_instruments -->
	    <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType"/>
        <field name="SecurityID" id="48" type="SecurityID"/>
<!-- MSW Start -->
		<!-- Consider that most of the fields in this message should not need to be populated for a subscription cancellation... Unless we wanted to manage MDReqID internally... -->
		<field name="MDReqID" id="262" type="TBD" description="Unique ID specified by the subscriber." /> <!-- Required because the request can no longer be uniquely identified via the SecurityID. -->
        <field name="SecurityType" id="167" type="SecurityType" description="1-legged (SPT, FWD, NDF, FUT), 2-legged (SWP, NDS). NOTE: This message is NOT to be used for BLK, IMM or OPT Security Types."/>
		<field name="SettlType" id="63" type="TenorType" description="Specifies a standard date for Near Leg settlement." />
        <field name="SettlDate" id="64" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlType='BKN'. Specifies the Near Leg broken date for settlement." />
        <field name="FixingReference" id="TBD" type="String32Type" description="Conditionally required if SecurityType=NDF/NDS. Fixing Reference. Refer to [REF 360T RFS Maker, JPM Taker] for venue-specific fixing reference strings." />
        <field name="MaturityDate" id="541" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SecurityType = NDF/NDS. Specifies the Near Leg Fixing Date." />
		<field name="SettlTypeFar" id="TBD" type="TenorType" presence="optional" description="Conditionally required if SecurityType = SWP/NDS. Specifies a standard date for Far Leg settlement." />
        <field name="SettlDateFar" id="TBD" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlTypeFar='BKN'. Specifies the Far Leg broken date for settlement." />
        <field name="MaturityDateFar" id="TBD" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SecurityType = NDS. Specifies the Far Leg Fixing Date." />
		<field name="MarketSegmentID" id="1300" type="TBD" semanticType="String" presence="optional" description="Conditionally populated if API Client is Maker. Conveys the Client bucket for which ESP is requested."/>
		<field name="MarketDepth" id="264" type="uint8" description="0=Full Book, 1=Top of Book, n=Number of Levels."/> <!-- To discuss -->
		<field name="AggregatedBook" id="266" type="Boolean" description="FALSE - All price entries for all providers are to be shown (if supported by the Venue). TRUE - Entries at the same price are aggregated together."/> <!-- To discuss - Maybe this is a function of the VenueID? -->
<!-- MSW End -->
    </sbe:message>

    <sbe:message name="MarketDataRequestHistoric" id="202" description="A request to stream historic market data" semanticType="V">
		<field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType"/>
		<field name="StartTimestamp" id="20045" type="Timestamp" description="Required when subscribing, Nanoseconds"/>
		<field name="EndTimestamp" id="20046" type="Timestamp" description="Required when subscribing, Nanoseconds"/>
		<group name="NoRelatedSym" id="20047" description="Venue and security pair to subscribe to. At least 1 pair is required." dimensionType="groupSizeEncoding">
			<field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
			<field name="SecurityID" id="48" description="Use 0 to subscribe or unsubscribe to all securities from the venue" type="SecurityID"/>
		</group>
    </sbe:message>
	
    <sbe:message name="MarketDataRequestReject" id="203" description="A rejection of a request for market data." semanticType="Y">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="SecurityID" id="48" type="SecurityID"/> <!-- Deprecated for SecurityType != FUT -->
		<field name="MDReqID" id="262" type="TBD" description="Unique ID specified by the subscriber." /> <!-- Required because the request can no longer be uniquely identified via the SecurityID. -->
        <field name="MDReqRejReason" id="281" type="MDReqRejReason"/>
        <field name="Text" id="58" type="Text" description="Additional information, if any, about the rejection."/>
    </sbe:message>

	<!-- TBD What is purpose of this message, don't see the need myself. -->
    <sbe:message name="SecurityStatus" id="204" description="Contains details of a venue status, trade/settle dates, and more. Comes as a response to a MarketDataRequest and should be processed before the first market data message. Can also arrive asynchronously if the state of a security changes." semanticType="f">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="SecurityID" id="48" type="SecurityID" semanticType="int"/>
        <field name="TradeDate" id="75" type="LocalMktDate" description="Trade Session Date of security." semanticType="LocalMktDate"/>
        <field name="SettlDate" id="64" type="LocalMktDate" description="Settlement date of security." semanticType="LocalMktDate"/> <!-- Where does this information come from? -->
        <field name="SecurityTradingStatus" id="326" type="SecurityTradingStatus" description="Identifies the trading status applicable to the instrument or Security Group" semanticType="int"/>
        <field name="Text" id="58" type="Text" description="Explanation of status state."/>
    </sbe:message>

    <sbe:message name="MarketDataIncrementalRefresh" id="205" description="Contains any combination of new, changed, or deleted Market Data Entries, for any combination of instruments, with any combination of trades,  quotes and Laddered/VWAP prices, etc. All of these types of Market Data Entries can be changed and deleted." semanticType="X">
		<field name="MDReqID" id="262" type="TBD" description="Unique ID specified by the subscriber." /> <!-- Required because the request can no longer be uniquely identified via the SecurityID. -->
        <field name="NoMDEntries" id="268" type="uint16" description="Number of update entries in this group. This total does NOT include this MarketDataIncrementalRefresh message itself."/>
        <field name="VenueSeqNum" id="20006" type="SeqNum" description="Used to correlate this entry with the venue message.  Will be NULL if message is generated by MF (snapshot, enhanced data, etc.)."/>
        <field name="VenueTimestamp" id="20007" type="Timestamp" description="Time the market data was stamped by the source venue."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time the market data was received by MF."/>
        <field name="VenueID" id="20022"   type="VenueID"/>
		<!-- FIX defines the following fields as part of the repeating group, but for our needs these are all static. Some venues will mandate that such fields are populated on the first entry of the first message only - current model represents a halfway house. outside repeating group, but every message. -->
		<field name="SecurityID" id="48" type="SecurityID"/>
        <field name="MDBookType" id="1021" type="MDBookType" description="Instructs Taker as to how the book should be interpreted."/>
		<field name="SettlDate" id="64" type="LocalMktDate" semanticType="LocalMktDate" description="Specifies the Near Leg date for settlement." />
		<field name="MaturityDate" id="541" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if Requested SecurityType = NDF/NDS. Specifies the Near Leg Fixing Date." />
        <field name="SettlDateFar" id="TBD" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if Requested SecurityType = SWP/NDS. Specifies the Far Leg date for settlement." />
		<field name="MaturityDateFar" id="TBD" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if Requested SecurityType = NDS. Specifies the Far Leg Fixing Date." />
		<field name="FixingReference" id="TBD" type="String32Type" description="Conditionally required if Requested SecurityType=NDF/NDS. Fixing Reference. Refer to [REF 360T RFS Maker, JPM Taker] for venue-specific fixing reference strings." />
		<!-- TBD state conditional population constraints for Mid-Price -->
		<!-- Agg feed components need to be supported -->
    </sbe:message>

	<sbe:message name="MDEntry" id="206" description="Part of a Market data update group and, if necessary, will always come after a MarketDataIncrementalRefresh message. Contains the details for an atomic change to the quote book.  For ESP flows, Venue Quote ID management is handled internally to Whisperer.">
		<field name="RptSeq" id="83"   type="SeqNum" description="SeqNum used to detect packet loss."/>
		<field name="MDUpdateAction" id="279"  type="MDUpdateAction" description="The type of update action to be applied to this market data entry."/>
		<field name="MDEntryType" id="269"  type="MDEntryType" presence="optional" description="Conditionally populated if MDUpdateAction=New. Defines the nature of this market data entry."/>
		<field name="MDEntryID" id="278" type="TBD" description="Unique identifier of this market data entry, referenced throughout MDUpdateAction lifecycle."/> <!-- New field - why not provided before? -->
		<field name="NumberOfOrders" id="346"  type="int16" description="Number of orders at this level, if available."/>
		<field name="MDEntryPx" id="270"  type="PriceNULL" description="All-in Price (in mantissa format). MDEntryPx = MDEntrySpotRate + MDEntryForwardPoints"/>
		<field name="MDEntrySpotRate" id="1026" type="PriceNULL" description="Spot Price (in mantissa format)."/>
		<field name="MDEntryForwardPoints" id="1027" type="PriceNULL" description="Fwd Pts (in mantissa format)."/>
		<field name="MDEntrySize" id="271"  type="DecimalQtyNULL" description="Size (in mantissa format) for quoted price. Expressed in units of CCY1."/>
		<field name="MinQty" id="110"  type="DecimalQtyNULL" description="Minimum quantity available to execute (in mantissa format)."/>
		<!-- https://jira.marketfactory.com/browse/PRODMGT-158 Quote withdrawal not handled properly
		 * Need to revisit existing Maker implementations for removal of CANCEL_QUOTE_SPECIFIED_IN_QUOTE_ID
		 *
		-->
		<field name="MDQuoteType" id="1070" type="QuoteType" presence="optional" description="Conditionally populated if MDEntryType = Bid/Offer. Indicative/Tradeable price."/> 
	</sbe:message>
	
    <!-- Batching messages -->
    <sbe:message name="RegisterForBatch" id="207" description="Register for an EBS-Ai batch.">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="BatchDefinitionID" id="20013" type="uint64" description="Batch creator's identifier for this batch. Necessary to later cancel or identify batch updates."/>
        <group name="NoSecurityIDs" id="20014" description="List of security IDs to batch.">
            <field name="SecurityID" id="48" type="SecurityID"/>
        </group>
    </sbe:message>
	
    <sbe:message name="UnregisterForBatch" id="208" description="Unregister for an EBS-Ai batch.">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="BatchDefinitionID" id="20015" type="uint64" description="ID provided during the batch creation using the RegisterForBatch message."/>
    </sbe:message>
	
    <sbe:message name="BatchesCompleted" id="209" description="Message sent when an EBS-Ai batch of market data updates is done.">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <group name="BatchGroup" id="20016" description="A list of batches that are done processing." dimensionType="groupSizeEncoding">
            <field name="BatchDefinitionID" id="20017" type="uint64" description="ID provided during the batch creation using the RegisterForBatch message."/>
        </group>
    </sbe:message>

    <sbe:message name="QuoteRequest" id="210" semanticType="R" description="Issued by Taker to request or terminate a short-lived RFS subscription.">
        <field name="PossDupFlag" id="43" type="Boolean" description="Indicates if this message may have already been processed (it is a resent message)."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the Order was received by MF." semanticType="UTCTimestamp"/>
        
        <field name="VenueID" id="20022" type="VenueID" description="MarketFactory Venue ID."/>
        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->

        <field name="TransactTime" id="60" type="Timestamp" semanticType="UTCTimestamp" description="Time when the RFS is generated." />
		<field name="QuoteReqID" id="131" type="TBD" description="Unique ID specified by the subscriber." />
        <field name="SecurityID" id="48" type="SecurityID" description="The MF-assigned numeric ID of the Currency Pair." />
        <field name="SecurityType" id="167" type="SecurityType" description="Specifies the product type for the requested instrument. 1-legged (SPT, FWD, NDF), 2-legged (SWP, NDS) and n-legged (BLK) order types. NOTE: This message is NOT to be used for FUT, IMM or OPT Security Types."/>
        <field name="NumCompetitors" id="TBD" type="Int8NULL" description="0=Not in competition; n= Number of competitors; NULL=unknown." />
		
        <!-- Quote Request Regulatory Fields -->
        <field name="RegulatoryBodies" id="TBD" type="RegulatoryBodies" description="Bitmap field of 3 Boolean type Regulation elegibility flags" semanticType="MultipleCharValue"/>
        <field name="TakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Taker submitting this Order." /> <!-- 360T/CNX RFS Maker -->
        <field name="MakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Maker executing this Order." /> <!-- 360T/CNX RFS Maker -->
        <group name="SEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
            <field name="SEFTakerIsUSPerson" id="TBD" type="Boolean" presence="optional" description="A legal term referring to any U.S. person or legal entity anywhere in the world that should be taxed under U.S. law." /> <!-- 360T RFS Maker -->
            <field name="SEFDataRepository" id="TBD" type="TBD" presence="optional" description="Where the trade will be reported. (TBD chars)" /> <!-- 360T/CNX RFS Maker, JPM --> <!-- PartyRole 102 -->
            <field name="SEFReportingEntity" id="TBD" type="ReportingEntity" presence="optional" description="Identifies the trading counterparty with the responsibility to report the transaction to a Data Repository after execution." /> <!-- 360T RFS Maker -->
            <field name="SEFIsLargeTrade" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not part of a large trade." /> <!-- 360T RFS Maker -->
            <field name="SEFRequiredTransaction" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not a required transaction (rather than permitted)." /> <!-- 360T RFS Maker -->
            <field name="SEFClearingExempted" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not this trade is exempted from clearing." /> <!-- 360T/CNX RFS Maker -->
            <field name="SEFClearer" id="TBD" type="TBD" presence="optional" description="Conditionally populated if SEFClearingExempted = N. Which Clearing house (DCO) this trade will be cleared at." /> <!-- 360T/CNX RFS Maker -->
        </group>
        <group name="EMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
            <!-- Intentionally empty -->
        </group>
        <group name="MIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
            <field name="MIFIDExecutingUnit" id="TBD" type="TBD" presence="optional" description="Maker branch/business unit under which this trade will be booked." /> <!-- CNX RFS Maker --> <!-- PartyRole 59 -->
            <field name="MIFIDRegulatedMarket" id="TBD" type="MIC" presence="optional" description="MTF MIC of the Venue." /> <!-- CNX RFS Maker, MorganStanley, SEB --> <!-- PartyRole 65 -->
            <field name="MIFIDExecutingDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Executing Decision Maker of Taker." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDInvestmentDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Investment Decision Maker of Taker." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDIlliquidInstrumentWaver" id="TBD" type="Boolean" presence="optional" description="Pre-Trade Illiquid Instrument waiver indicator." /> <!-- MorganStanley, SEB -->
            <field name="MIFIDSizeSpecificWaver" id="TBD" type="Boolean" presence="optional" description="Pre-Trade Size-specific (trade of substantial size etc.) waiver indicator." /> <!-- MorganStanley, SEB -->
            <field name="MIFIDLiquidityProvisionFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order is part of a liquidity provision activity." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDAlgorithmicOrderFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order was generated by algorithmic trading." /> <!-- EBS Ai/Direct Taker, SEB -->
			<field name="MIFIDPackageTradeFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order is considered a Package/aggregated transaction for reporting purposes." /> <!-- CNX RFS Maker, SEB --> <!-- Swaps, Blocks, Batches in scope -->
            <field name="MIFIDPackageID" id="TBD" type="TBD" presence="optional" description="Conditionally populated if MIFIDPackageTradeFlag = Y. Identifier assigned to a collection of trades so they may be analysed as a single unit." /> <!-- CNX RFS Maker -->
   <!-- TBD <field name="MIFIDSystematicInternaliserFlag" id="TBD" type="Boolean" presence="optional" description="Used to indicate whether the specified party is a Systematic Internaliser for this Order." /> -->
        </group>

        <group name="NoLegs" id="555" dimensionType="groupSizeEncoding" description="One Leg per value date. At least one Leg must be specified.">
			<field name="LegSecurityType" id="609" type="SecurityType" description="Specifies the product type for this leg. Valid values: SPT, FWD, NDF."/>
            <field name="LegSide" id="624" type="Side"/>
            <field name="LegCurrency" id="556" type="CurrencyType" description="Specifies the denomination of the quantity fields in this Leg." />
            <field name="LegOrderQty" id="685" type="DecimalQtyNULL" description="Required. Order quantity in mantissa format."/>
            <field name="LegSettlType" id="587" type="TenorType" description="Specifies a standard date for settlement." />
            <field name="LegSettlDate" id="588" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlType='BKN'. Specifies the broken date for settlement." />
            <!-- NDF/NDS fields -->
            <field name="LegMaturityDate" id="611" type="LocalMktDate" semanticType="LocalMktDate" description="Conditionally required if LegSecurityType=NDF. Fixing Date for this Leg of NDF/NDS." />
            <field name="LegSettlCurrency" id="675" type="CurrencyType" description="Conditionally required if LegSecurityType=NDF. Specifies the fixing currency of this Leg of NDF/NDS." /> <!-- TBD - do we allow different values for each leg of NDS? -->
            <field name="FixingReference" id="TBD" type="String32Type" description="Conditionally required if LegSecurityType=NDF. Fixing Reference for this Leg of NDF/NDS. Refer to [REF 360T RFS Maker, JPM Taker] for venue-specific fixing reference strings." />
            <!-- Leg Regulatory Fields -->
                <field name="LegSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Leg." /> <!-- 360T/CNX RFS Maker, JPM -->
            <group name="LegSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                <field name="LegSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Leg." />  <!-- 360T/CNX RFS Maker -->
            </group>
            <group name="LegEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                <field name="LegEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Leg." /> <!-- I split this out, but could possibly leave as a single 52-char string. -->
                <field name="LegEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Leg." /> <!-- 360T RFS Maker, JPM -->
            </group>
            <group name="LegMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
				<field name="LegMIFIDISIN" id="TBD" type="TBD" presence="optional" description="12 character ISIN http://www.anna-web.org/home/derivatives-service-bureau/" /> <!--BAML -->
                <field name="LegMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Leg." /> <!-- CNX RFS Maker -->
				<field name="LegMIFIDConversionFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Leg is an FX conversion trade and related to a transaction which would be exempt from margining and reporting. Tenor must be less than T+5 - i.e. TOD, TOM, SPT, D1 or D2." /> <!-- Only specified in Quote Request --> <!-- CNX RFS Maker, SEB -->
			</group>

            <group name="NoLegAllocs" id="670" dimensionType="groupSizeEncoding" description="At least one Allocation must be specified per Leg.">
                <field name="LegAllocAccount" id="671" description="Account mnemonic."/>
                <field name="LegAllocQty" id="671" description="Quantity to be allocated to Account. Specified in terms of LegCurrency and LegSide (negative quantities allocate to the opposite side)."/>
                <!-- Alloc Regulatory Fields -->
                <group name="AllocSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                    <field name="AllocSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Allocation." />  <!-- 360T/CNX RFS Maker -->
                    <field name="AllocSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Allocation." />  <!-- 360T/CNX RFS Maker, JPM -->
                </group>
                <group name="AllocEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                   <field name="AllocEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Allocation." /> <!-- I split this out, but could possibly leave as a single 52-char string. -->
                   <field name="AllocEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Allocation." />  <!-- 360T/CNX RFS Maker, JPM -->
                </group>
                <group name="AllocMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
                    <field name="AllocMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Allocation" /> <!-- CNX RFS Maker --> 
                </group>
            </group>
        </group>		
    </sbe:message>
	
    <sbe:message name="QuoteRequestReject" id="211" semanticType="AG" description="Issued by Maker to deny the corresponding QuoteRequest.">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
		<field name="QuoteReqID" id="131" type="TBD" description="Unique ID specified by the subscriber." />
        <field name="QuoteRequestRejectReason" id="658" type="QuoteRequestRejectReason"/>
        <field name="Text" id="58" type="Text" description="Additional information, if any, about the rejection."/>
    </sbe:message>
	
    <sbe:message name="Quote" id="212" semanticType="S" description="Issued by Maker to publish a price in response to a corresponding QuoteRequest. A new quote replaces the previous, and may be marked Indicative (i.e. non-tradeable). Venue Quote ID management is handled internally to Whisperer. ">
		<field name="QuoteReqID" id="131" type="TBD" description="Unique ID specified by the subscriber." />
        <field name="VenueTimestamp" id="20007" type="Timestamp" description="Time the Quote was stamped by the source venue."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time the Quote was received by MF."/>

        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->

		<!-- https://jira.marketfactory.com/browse/PRODMGT-158 Quote withdrawal not handled properly
		 * Need to revisit existing Maker implementations for removal of CANCEL_QUOTE_SPECIFIED_IN_QUOTE_ID
		 *
		-->
		<field name="QuoteType" id="537" type="QuoteType" description="Indicative/Tradeable price."/>
        <field name="SecurityID" id="48" type="SecurityID" description="The MF-assigned numeric ID of the Currency Pair." />
        <field name="SecurityType" id="167" type="SecurityType" description="Specifies the product type for the requested instrument. 1-legged (SPT, FWD, NDF), 2-legged (SWP, NDS) and n-legged (BLK) order types. NOTE: This message is NOT to be used for FUT, IMM or OPT Security Types."/>
		<field name="BidSpotRate" id="188" type="PriceNULL" description="Conditionally populated if SecurityType = SWP/BLK, or SecurityType = SPT/FWD/NDF and Side = Buy/2-Way. The quoted Bid Spot rate relating to this quote." />
		<field name="OfferSpotRate" id="188" type="PriceNULL" description="Conditionally populated if SecurityType = SWP/BLK, or SecurityType = SPT/FWD/NDF and Side = Sell/2-Way. The quoted Offer Spot rate relating to this quote." />

        <group name="NoLegs" id="555" dimensionType="groupSizeEncoding" description="One Leg per value date. At least one Leg must be specified.">
			<field name="LegSecurityType" id="609" type="SecurityType" description="Specifies the product type for this leg. Valid values: SPT, FWD, NDF."/>
            <field name="LegSide" id="624" type="Side"/>
            <field name="LegCurrency" id="556" type="CurrencyType" description="Specifies the denomination of the quantity fields in this Leg." />
            <field name="LegOrderQty" id="685" type="DecimalQtyNULL" description="Required. Order quantity in mantissa format."/>
            <field name="LegSettlType" id="587" type="TenorType" description="Specifies a standard date for settlement." />
            <field name="LegSettlDate" id="588" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlType='BKN'. Specifies the broken date for settlement." />
			<field name="LegBidPx" id="681" type="PriceNULL" description="Conditionally populated if LegSide = Buy/2-Way. All-in Bid rate." />
            <field name="LegMidPx" id="2346" type="PriceNULL" presence="optional" description="Mid-Market All-in Price of this Leg."/>
 			<field name="LegOfferPx" id="684" type="PriceNULL" description="Conditionally populated if LegSide = Sell/2-Way. All-in Offer rate." />
			<field name="LegBidForwardPoints" id="1067" type="PriceNULL" description="Conditionally populated if LegSide = Buy/2-Way. The bid FX forward points for this Leg. Value can be negative. Expressed in decimal form, LegBidForwardPoints = LegBidPx – BidSpotRate." />
			<field name="LegOfferForwardPoints" id="1068" type="PriceNULL" description="Conditionally populated if LegSide = Sell/2-Way. The bid FX forward points for this Leg. Value can be negative. Expressed in decimal form LegOfferForwardPoints = LegOfferPx – OfferSpotRate." />
		</group>
    </sbe:message>

    <sbe:message name="QuoteResponse" id="213" semanticType="AJ" description="Issued by Taker or ECN to terminate the corresponding QuoteRequest.">
        <field name="PossDupFlag" id="43" type="Boolean" description="Indicates if this message may have already been processed (it is a resent message)."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the QuoteResponse was received by MF." semanticType="UTCTimestamp"/>
        
        <field name="VenueID" id="20022" type="VenueID" description="MarketFactory Venue ID."/>
        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->

        <field name="TransactTime" id="60" type="Timestamp" semanticType="UTCTimestamp" description="Time when the QuoteResponse was generated." />
		<field name="QuoteReqID" id="131" type="TBD" description="Unique ID specified by the subscriber." />
		<field name="QuoteRespType" id="694" type="QuoteRespType" description="Reason for termination of QuoteRequest." />
    </sbe:message>	
	
<!--
 *
 * Trading Messages - Orders (RFQ, RFS, ESP, Order Matching) and Executions.
 *
 -->
    
    <!-- My current view is that we need to pay a slight performance penalty to buy the benefits of maintaining a single order message type to support all FX product types. So repeating groups galore. To discuss. -->
    <!-- TBD presence optionality should be defined for the field, not the type. -->
	<!-- TBD CNX RFS Maker - what about support for "Package Trades" (is this a batch?) -->
    <!-- Venues Checked
            Maker
                360T RFS
                CNX RFS
				EBS Direct Maker
            Taker
                JPM
				MorganStanley
				SEB
                EBS Ai/Direct Taker
    -->
    <sbe:message name="NewOrderMultileg" id="301" semanticType="AB" description="Issued by Taker to submit an FX Order (either in response to an ESP or Order-Matching Market Data stream, or against a published Quote). To be used for 1-legged (SPT, FWD, NDF), 2-legged (SWP, NDS) and n-legged (BLK) order types." >
        <field name="PossDupFlag" id="43" type="Boolean" description="Indicates if this message may have already been processed (it is a resent message)."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the Order was received by MF." semanticType="UTCTimestamp"/>
        
        <field name="VenueID" id="20022" type="VenueID" description="MarketFactory Venue ID."/>
        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->
		
        <field name="TransactTime" id="60" type="Timestamp" semanticType="UTCTimestamp" description="Time when the order is generated." />
        <field name="OrdType" id="40" type="OrdType"/>
        <field name="ClOrdID" id="11" type="ClOrdIDString" semanticType="String" description="Unique identifier for Order as assigned by the Taker. NOTE: This field is used to link back to the originating QuoteRequest (if RFS) and to subsequent ExecutionReports." />
        <field name="QuoteID" id="117" type="String32Type" description="Conditionally required if trading model is ESP or RFS. Not required for MAT. Unique identifier for quote." /> <!-- TBD - discuss/clarify -->
        <field name="SecurityID" id="48" type="SecurityID" description="The MF-assigned numeric ID of the Currency Pair." />
        <field name="SecurityType" id="167" type="SecurityType" description="Specifies the product type for the traded instrument. 1-legged (SPT, FWD, NDF), 2-legged (SWP, NDS) and n-legged (BLK) order types. NOTE: This message is NOT to be used for FUT, IMM or OPT Security Types."/>
        <field name="TimeInForce" id="59" type="TimeInForce"/>
        <field name="Price" id="44" type="PriceNULL" description="Spot price. LegPrice - Price = Leg Fwd Pts (not currently populated). Not required on all order types (for example, Market order). Must be in mantissa format."/> <!-- TBD - discuss/clarify -->
        <!-- REVISIT THESE ORDER DETAILS -->
        <field name="MinQty" id="110" type="DecimalQtyNULL" description="Minimum quantity to execute, used to prevent partial fills under the defined quantity. If the Order quantity drops below this value due to a fill, the Order will be cancelled. Must be in mantissa format."/>
        <field name="StopPx" id="99" type="PriceNULL" description="Stop price. Only required if this order is a Stop-type order. Must be in mantissa format."/>
        <field name="MaxShow" id="210" type="DecimalQtyNULL" description="Where available, sets the maximum amount to show. Must be in mantissa format."/>
        
        <!-- Order Regulatory Fields -->
        <field name="RegulatoryBodies" id="TBD" type="RegulatoryBodies" description="Bitmap field of 3 Boolean type Regulation elegibility flags" semanticType="MultipleCharValue"/>
        <field name="TakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Taker submitting this Order." /> <!-- 360T/CNX RFS Maker -->
        <field name="MakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Maker executing this Order." /> <!-- 360T/CNX RFS Maker -->
        <group name="SEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
            <field name="SEFTakerIsUSPerson" id="TBD" type="Boolean" presence="optional" description="A legal term referring to any U.S. person or legal entity anywhere in the world that should be taxed under U.S. law." /> <!-- 360T RFS Maker -->
            <field name="SEFDataRepository" id="TBD" type="String32Type" presence="optional" description="Where the trade will be reported. (TBD chars)" /> <!-- 360T/CNX RFS Maker, JPM --> <!-- PartyRole 102 -->
            <field name="SEFReportingEntity" id="TBD" type="ReportingEntity" presence="optional" description="Identifies the trading counterparty with the responsibility to report the transaction to a Data Repository after execution." /> <!-- 360T RFS Maker -->
            <field name="SEFIsLargeTrade" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not part of a large trade." /> <!-- 360T RFS Maker -->
            <field name="SEFRequiredTransaction" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not a required transaction (rather than permitted)." /> <!-- 360T RFS Maker -->
            <field name="SEFClearingExempted" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not this trade is exempted from clearing." /> <!-- 360T/CNX RFS Maker -->
            <field name="SEFClearer" id="TBD" type="TBD" presence="optional" description="Conditionally populated if SEFClearingExempted = N. Which Clearing house (DCO) this trade will be cleared at." /> <!-- 360T/CNX RFS Maker -->
        </group>
        <group name="EMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
            <!-- Intentionally empty -->
        </group>
        <group name="MIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
            <field name="MIFIDExecutingUnit" id="TBD" type="TBD" presence="optional" description="Maker branch/business unit under which this trade will be booked." /> <!-- CNX RFS Maker --> <!-- PartyRole 59 -->
            <field name="MIFIDRegulatedMarket" id="TBD" type="MIC" presence="optional" description="MTF MIC of the Venue." /> <!-- CNX RFS Maker, MorganStanley, SEB --> <!-- PartyRole 65 -->
            <field name="MIFIDExecutingDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Executing Decision Maker of Taker." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDInvestmentDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Investment Decision Maker of Taker." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDIlliquidInstrumentWaver" id="TBD" type="Boolean" presence="optional" description="Pre-Trade Illiquid Instrument waiver indicator." /> <!-- MorganStanley, SEB -->
            <field name="MIFIDSizeSpecificWaver" id="TBD" type="Boolean" presence="optional" description="Pre-Trade Size-specific (trade of substantial size etc.) waiver indicator." /> <!-- MorganStanley, SEB -->
            <field name="MIFIDLiquidityProvisionFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order is part of a liquidity provision activity." /> <!-- EBS Ai/Direct Taker -->
            <field name="MIFIDAlgorithmicOrderFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order was generated by algorithmic trading." /> <!-- EBS Ai/Direct Taker, SEB -->
			<field name="MIFIDPackageTradeFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order is considered a Package/aggregated transaction for reporting purposes." /> <!-- CNX RFS Maker, SEB --> <!-- Swaps, Blocks, Batches in scope -->
            <field name="MIFIDPackageID" id="TBD" type="TBD" presence="optional" description="Conditionally populated if MIFIDPackageTradeFlag = Y. Identifier assigned to a collection of trades so they may be analysed as a single unit." /> <!-- CNX RFS Maker -->
   <!-- TBD <field name="MIFIDSystematicInternaliserFlag" id="TBD" type="Boolean" presence="optional" description="Used to indicate whether the specified party is a Systematic Internaliser for this Order." /> -->
        </group>
        <group name="NoLegs" id="555" dimensionType="groupSizeEncoding" description="One Leg per value date. At least one Leg must be specified.">
			<field name="LegSecurityType" id="609" type="SecurityType" description="Specifies the product type for this leg. Valid values: SPT, FWD, NDF."/>
            <field name="LegSide" id="624" type="Side"/>
            <field name="LegCurrency" id="556" type="CurrencyType" description="Specifies the denomination of the quantity fields in this Leg." />
            <field name="LegPrice" id="566" type="PriceNULL" description="All-in Order limit price. LegPrice - Price = Leg Fwd Pts (not currently populated). Not required on all order types (for example, Market order). Must be in mantissa format."/>
            <field name="LegOrderQty" id="685" type="DecimalQtyNULL" description="Required. Order quantity in mantissa format."/>
            <field name="LegSettlType" id="587" type="TenorType" description="Specifies a standard date for settlement." />
            <field name="LegSettlDate" id="588" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlType='BKN'. Specifies the broken date for settlement." />
            <!-- NDF/NDS fields -->
            <field name="LegMaturityDate" id="611" type="LocalMktDate" semanticType="LocalMktDate" description="Conditionally required if LegSecurityType=NDF. Fixing Date for this leg of NDF/NDS." />
            <field name="LegSettlCurrency" id="675" type="CurrencyType" description="Conditionally required if LegSecurityType=NDF. Specifies the fixing currency for NDF/NDSs." /> <!-- TBD - do we allow different values for each leg of NDS? -->
            <field name="FixingReference" id="TBD" type="String32Type" description="Conditionally required if LegSecurityType=NDF. Fixing Reference, should be the same as in the original Quote Request. Refer to [REF 360T RFS Maker, JPM Taker] for venue-specific fixing reference strings." />
            <!-- Leg Regulatory Fields -->
            <group name="LegSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                <field name="LegSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Leg." />  <!-- 360T/CNX RFS Maker, SEB -->
                <field name="LegSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Leg." /> <!-- 360T/CNX RFS Maker, JPM, SEB -->
            </group>
            <group name="LegEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                <field name="LegEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Leg." /> <!-- I split this out, but could possibly leave as a single 52-char string. -->
                <field name="LegEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Leg." /> <!-- 360T RFS Maker, JPM -->
            </group>
            <group name="LegMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
				<field name="LegMIFIDISIN" id="TBD" type="TBD" presence="optional" description="12 character ISIN http://www.anna-web.org/home/derivatives-service-bureau/" /> <!--BAML -->
				<field name="LegMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Leg." /> <!-- CNX RFS Maker ,SEB --> 
            </group>

            <group name="NoLegAllocs" id="670" dimensionType="groupSizeEncoding" description="At least one Allocation must be specified per Leg.">
                <field name="LegAllocAccount" id="671" description="Account mnemonic."/>
                <field name="LegAllocQty" id="671" description="Quantity to be allocated to Account. Specified in terms of LegCurrency and LegSide (negative quantities allocate to the opposite side)."/>
                <!-- Alloc Regulatory Fields -->
                <group name="AllocSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                    <field name="AllocSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Allocation." />  <!-- 360T/CNX RFS Maker, SEB -->
                    <field name="AllocSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Allocation." />  <!-- 360T/CNX RFS Maker, JPM, SEB -->
                </group>
                <group name="AllocEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                   <field name="AllocEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Allocation." /> <!-- SEB -->
                   <field name="AllocEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Allocation." />  <!-- 360T/CNX RFS Maker, JPM, SEB -->
                </group>
                <group name="AllocMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
                    <field name="AllocMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Allocation" /> <!-- CNX RFS Maker --> 
                </group>
            </group>
        </group>
    </sbe:message>

	<!-- TBD StopPx, MinQty (not supported for CME, for example) -->
	
	<sbe:message name="OrderCancelReplaceRequest" id="302" description="" semanticType="G">
        <field name="MsgSeqNum" id="34" type="SeqNum" description="Currently not used."/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="SecurityID" id="48" type="SecurityID"/>
        <field name="ClOrdID" id="11" type="ClOrdIDString" description="Identifier of this request." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="ClOrdIDString" description="ClOrdID of the order to modify." semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel.  Can set to null.  It is quicker to set it, since making it null requires the system to look up the value to retrieve it." />
        <field name="Side" id="54" type="Side" description="The original order side."/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
        <field name="OrderQty" id="38" type="DecimalQtyNULL" description="The NEW order quantity, if changing, or the original order quantity if not."/>
        <field name="OrdType" id="40" type="OrdType"/>
        <field name="Price" id="44" type="PriceNULL" description="The NEW order price, if changing, or the original price if not. "/>
        <field name="MaxShow" id="210" type="DecimalQtyNULL" description="Where available, sets the NEW maximum amount to show. If available, but not supplied, MaxShow specified by a previous NewOrderMultileg or OrderCancelReplaceRequest is assumed. Must be in mantissa format."/> <!-- WHSPRR-1974 -->
        <field name="TimeInForce" id="59" type="TimeInForce" description="The original order time in force."/>
    </sbe:message>

    <sbe:message name="OrderCancelRequest" id="303" description="Cancel an outstanding order." semanticType="F">
        <field name="MsgSeqNum" id="34" type="SeqNum" description="Currently not used."/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="SecurityID" id="48" type="SecurityID"/>
        <field name="ClOrdID" id="11" type="ClOrdIDString" description="Identifier of this cancel request." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="ClOrdIDString" description="ClOrdID of the order to cancel." semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel.  Can set to null.  It is quicker to set it, since making it null requires the system to look up the value to retrieve it." />
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
    </sbe:message>

    <sbe:message name="OrderCancelReject" id="304" description="Sent by Maker to reject an OrderCancelReplaceRequest or OrderCancelRequest." semanticType="9">
        <field name="MsgSeqNum" id="34" type="SeqNum"/>
        <field name="PossDupFlag" id="43" type="Boolean" description="True if this message could be a duplicate. If true, the handler of this message needs to lookup previously received messages and process appropriately."/>
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="SecurityID" id="48" type="SecurityID"/>
        <field name="ClOrdID" id="11" type="ClOrdIDString" description="The ClOrdID of the Cancel request." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="ClOrdIDString" description="The ClOrdID of the order to be canceled" semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel." />
        <field name="SecondaryOrderID" id="198" type="OrderIDString" description="The OrderID assigned by the venue." semanticType="String"/>
        <field name="OrdStatus" id="39" type="OrdStatus" semanticType="char"/>
        <field name="CxlRejReason" id="102" type="CxlRejReason" semanticType="int"/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the execution report is received by MF." semanticType="UTCTimestamp"/>
        <field name="Text" id="58" type="Text" description="Free format text string. May include extra information about the rejection."/>
    </sbe:message>

    <sbe:message name="ExecutionReport" id="305" description="Maker/ECN responses for order actions and events." semanticType="8">
        <field name="PossDupFlag" id="43" type="Boolean" description="Indicates if this message may have already been processed (it is a resent message)."/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the ExecutionReport was received by MF." semanticType="UTCTimestamp"/>
		
        <field name="VenueID" id="20022" type="VenueID" description="MarketFactory Venue ID."/>
        <field name="OrigVenueID" id="20025" type="VenueID" sinceVersion="1" description="VenueID of the source of this ExecutionReport. Used when placing orders on the smart order router."/>
        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->

        <field name="ExecutingFirm" id="TBD" type="String32Type" description="Maker Firm responsible for filling/rejecting this Order"/> <!-- PartyRole 1 --> <!-- Replaces CounterPartyID -->
        <field name="ExecutingTrader" id="TBD" type="String32Type" description="Maker Trader responsible for filling/rejecting this Order - may be human or autotrader"/> <!-- PartyRole 12 -->
        <field name="OrderOriginationFirm" id="TBD" type="String32Type" description="Taker Firm responsible for submission of this Order"/> <!-- PartyRole 13 -->
        <field name="OrderOriginationTrader" id="TBD" type="String32Type" description="Taker Trader responsible for submission of this Order - may be human or autotrader"/> <!-- PartyRole 11 -->

        <field name="TransactTime" id="60" type="Timestamp" description="Time when the ExecutionReport was generated." semanticType="UTCTimestamp"/>
		<field name="TradeDate" id="75" type="LocalMktDate" semanticType="LocalMktDate" description="Indicates date of trading day (expressed in local time at place of trade)."/>
        <field name="OrdType" id="40" type="OrdType"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned OrderID." />
        <field name="SecondaryOrderID" id="198" type="OrderIDString" description="The OrderID assigned by the Maker/ECN." semanticType="String"/>
        <field name="ClOrdID" id="11" type="OrderIDString" description="The current ClOrdID of the order. Can differ from the originally submitted value on the NewOrderSingle if, for example, edits have been made." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="OrderIDString" description="The ClOrdID of the original value submitted on the NewOrderSingle." semanticType="String"/>
        <field name="SecurityID" id="48" type="SecurityID" description="The MF-assigned numeric ID of the Currency Pair." />
        <field name="ExecID" id="17" type="OrderIDString" description="Unique identifier for this ExecutionReport." semanticType="String"/>
        <field name="ExecType" id="150" type="ExecType" semanticType="char"/>
        <field name="OrdStatus" id="39" type="OrdStatus" semanticType="char" description="Defines the current state of the Order."/>
        <field name="SecurityType" id="167" type="SecurityType" description="1-legged (SPT, FWD, NDF), 2-legged (SWP, NDS) and n-legged (BLK) order types.NOTE: This message is NOT to be used for FUT, IMM or OPT Security Types."/>
        <field name="TimeInForce" id="59" type="TimeInForce"/>
        <field name="LastSpotRate" id="194" type="PriceNULL" description="Conditionally required if ExecType = 'Trade'. Spot Price on this (last) fill. LastSpotRate = LegLastPrice - LegLastForwardPoints."/>
		<field name="MidPx" id="631" type="PriceNULL" description="Conditionally required if ExecType = 'Trade'. Mid-Market Spot Price on this (last) fill."/>
        <field name="Text" id="58" type="Text" description="Free format text string. May include extra information about the execution."/>
		
        <!-- ExecutionReport Regulatory Fields -->
        <field name="RegulatoryBodies" id="TBD" type="RegulatoryBodies" description="Bitmap field of 3 Boolean type Regulation elegibility flags" semanticType="MultipleCharValue"/>
        <field name="TakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Taker submitting this Order." /> <!-- NONE -->
        <field name="MakerLEI" id="TBD" type="LEI" presence="optional" description="Conditionally populated if RegulatoryBodies = SEF/EMIR/MIFID. LEI of the Maker executing this Order." /> <!-- NONE -->
        <group name="SEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
            <field name="SEFTakerIsUSPerson" id="TBD" type="Boolean" presence="optional" description="A legal term referring to any U.S. person or legal entity anywhere in the world that should be taxed under U.S. law." /> <!-- NONE -->
            <field name="SEFDataRepository" id="TBD" type="TBD" presence="optional" description="Where the trade will be reported. (TBD chars)" /> <!-- NONE --> <!-- PartyRole 102 -->
            <field name="SEFReportingEntity" id="TBD" type="ReportingEntity" presence="optional" description="Identifies the trading counterparty with the responsibility to report the transaction to a Data Repository after execution." /> <!-- 360T RFS Maker -->
            <field name="SEFIsLargeTrade" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not part of a large trade." /> <!-- NONE -->
            <field name="SEFRequiredTransaction" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not a required transaction (rather than permitted)." /> <!-- NONE -->
            <field name="SEFClearingExempted" id="TBD" type="Boolean" presence="optional" description="Indicates whether or not this trade is exempted from clearing." /> <!-- NONE -->
            <field name="SEFClearer" id="TBD" type="TBD" presence="optional" description="Conditionally populated if ClearingExempted = N. Which Clearing house (DCO) this trade will be cleared at." /> <!-- NONE -->
        </group>
        <group name="EMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
            <!-- Intentionally empty -->
        </group>
        <group name="MIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
            <field name="MIFIDExecutingUnit" id="TBD" type="TBD" presence="optional" description="Maker branch/business unit under which this trade will be booked." /> <!-- NONE --> <!-- PartyRole 59 -->
            <field name="MIFIDRegulatedMarket" id="TBD" type="MIC" presence="optional" description="MTF MIC of the Venue." /> <!-- MorganStanley --> <!-- PartyRole 65 -->
            <field name="MIFIDExecutingDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Executing Decision Maker of Taker." /> <!-- MorganStanley -->
            <field name="MIFIDInvestmentDecisionMaker" id="TBD" type="TBD" presence="optional" description="Shortcode representing Investment Decision Maker of Taker." /> <!-- MorganStanley -->
            <field name="MIFIDLiquidityProvisionFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order is part of a liquidity provision activity." /> <!-- NONE -->
            <field name="MIFIDAlgorithmicOrderFlag" id="TBD" type="Boolean" presence="optional" description="Indicates that the Order was generated by algorithmic trading." /> <!-- MorganStanley -->
            <field name="MIFIDSystematicInternaliserFlag" id="TBD" type="Boolean" presence="optional" description="Used to indicate whether the specified party is a Systematic Internaliser for this Order." /> <!-- MorganStanley -->
        </group>
        
        <group name="NoLegs" id="555" dimensionType="groupSizeEncoding" description="One Leg per value date. At least one Leg must be specified.">
            <field name="LegSide" id="624" type="Side"/>
            <field name="LegCurrency" id="556" type="CurrencyType" description="Specifies the denomination of the quantity fields in this Leg." />
            <field name="LegPrice" id="566" type="PriceNULL" description="All-in Order limit price of Leg. Not required on all Order types (for example, Market order). Must be in mantissa format."/>
            <field name="LegMidPx" id="2346" type="PriceNULL" presence="optional" description="Conditionally required if ExecType = 'Trade'. Mid-Market All-in Price of Leg for this (last) fill."/>
            <field name="LegLastPrice" id="637" type="PriceNULL" description="All-in Price of Leg for this last fill, if any. LegLastPrice = LastSpotRate + LegLastForwardPoints. Must be in mantissa format."/>
            <field name="LegLastForwardPoints" id="1073" type="PriceNULL" description="FX forward points of Leg. May be a negative value. Zero if Leg = SPOT. LegLastForwardPoints = LegLastPrice - LastSpotRate. Must be in mantissa format."/>
            <field name="LegOrderQty" id="685" type="DecimalQtyNULL" description="Required. Order quantity for this Leg in mantissa format."/>
            <field name="LegLastQty" id="1418" type="DecimalQtyNULL" description="Specifies the dealt amount for this Leg, if any."/>
            <field name="LegCalculatedCcyLastQty" id="1074" type="DecimalQtyNULL" description="Specifies the contra amount for this (last) fill and Leg, if any. If LegCurrency is LHS then = LegLastQty * LegLastPx; if LegCurrency is RHS then = LegLastQty / LegLastPx (rounded arithmetically)."/>
            <field name="LegCumQty" id="TBD" type="DecimalQtyNULL" description="Total quantity filled on this Leg of the Order."/>
            <field name="LegLeavesQty" id="TBD" type="DecimalQtyNULL" description="Quantity remaining to execute on this Leg of the Order."/>
            <field name="LegSettlType" id="587" type="TenorType" description="Specifies a standard date for settlement." />
            <field name="LegSettlDate" id="588" type="LocalMktDate" semanticType="LocalMktDate" presence="optional" description="Conditionally required if SettlType='BKN'. Specifies the broken date for settlement." />
            <!-- NDF/NDS fields -->
            <field name="LegMaturityDate" id="611" type="LocalMktDate" semanticType="LocalMktDate" description="Conditionally required if SecurityType='NDF' or 'NDS'. Fixing Date." />
            <field name="LegSettlCurrency" id="675" type="CurrencyType" description="Conditionally required if SecurityType='NDF' or 'NDS'. Specifies the fixing currency for NDF/NDSs." /> <!-- TBD - do we allow different values for each leg of NDS? -->
            <field name="FixingReference" id="TBD" type="String32Type" description="Conditionally required if SecurityType='NDF' or 'NDS'. Fixing Reference, should be the same as in the original QuoteRequest. Refer to [REF 360T RFS Maker, JPM Taker] for venue-specific fixing reference strings." />
            <!-- Leg Regulatory Fields -->
            <group name="LegSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                <field name="LegSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Leg. The Maker may choose to generate their own IDs, in whhich case this value will differ from the that provided in the Order." />  <!-- 360T RFS Maker -->
                <field name="LegSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Leg. The Maker may choose to generate their own IDs, in whhich case this value will differ from the that provided in the Order." /> <!-- 360T RFS Maker -->
				<!--- TBD UPI Prefix/Value (BAML) -->
            </group>
            <group name="LegEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                <field name="LegEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Leg." /> <!-- I split this out, but could possibly leave as a single 52-char string. --> <!-- NONE -->
                <field name="LegEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Leg." /> <!-- 360T RFS Maker -->
            </group>
            <group name="LegMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
				<field name="LegMIFIDISIN" id="TBD" type="TBD" presence="optional" description="12 character ISIN http://www.anna-web.org/home/derivatives-service-bureau/" /> <!--SEB -->
                <field name="LegMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Leg." /> <!-- CNX RFS Maker --> 
            </group>

            <group name="NoLegAllocs" id="670" dimensionType="groupSizeEncoding" description="At least one Allocation must be specified per Leg.">
                <field name="LegAllocAccount" id="671" type="TBD" description="Account mnemonic."/>
                <field name="LegAllocQty" id="671" type="DecimalQtyNULL" description="Quantity to be allocated to Account. Specified in terms of LegCurrency and LegSide (negative quantities allocate to the opposite side)."/>
				<field name="LegAllocCalculatedCcyQty" id="TBD" type="DecimalQtyNULL" description="Quantity to be allocated to Account, expressed in contra currency. Allocation direction expressed arithmetically ABS(SUM (LegAllocCalculatedCcyQty)) = LegCalculatedCcyLastQty (but may be subject to accumulated rounding errors). If LegCurrency is LHS then = -LegAllocQty * LegLastPx; if LegCurrency is RHS then = -LegAllocQty / LegLastPx (rounded arithmetically)."/>
                <!-- Alloc Regulatory Fields -->
                <group name="AllocSEFFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = SEF" >
                    <field name="AllocSEFUSIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Swap Identifier Prefix for this Allocation." />  <!-- 360T/CNX RFS Maker -->
                    <field name="AllocSEFUSI" id="TBD" type="USI" presence="optional" description="Unique Swap Identifier (USI) for this Allocation." />  <!-- 360T/CNX RFS Maker -->
                </group>
                <group name="AllocEMIRFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = EMIR" >
                   <field name="AllocEMIRUTIPrefix" id="TBD" type="TradeIDPrefix" presence="optional" description="Unique Trade Identifier (UTI) Prefix for this Allocation." /> <!-- I split this out, but could possibly leave as a single 52-char string. -->
                   <field name="AllocEMIRUTI" id="TBD" type="UTI" presence="optional" description="Unique Trade Identifier (UTI) for this Allocation." />  <!-- 360T/CNX RFS Maker -->
                </group>
                <group name="AllocMIFIDFields" id="TBD" dimensionType="groupSizeEncoding" description="Conditionally populated if RegulatoryBodies = MIFID(MTF)" >
                    <field name="AllocMIFIDTVTIC" id="TBD" type="TVTIC" presence="optional" description="Trading Venue Transaction Identifation Code (TVTIC) for this Allocation" /> <!-- CNX RFS Maker --> 
                </group>
            </group>
        </group>
    </sbe:message>

</sbe:messageSchema>

 

 

  • No labels