I have been using C# RFA on MMT_MARKET_PRICE for long.
Recently I have started to do some work on MMT_MARKET_BY_ORDER.
Upon Process Event, I see that I received Map objects containing MapEntry. All MapEntry Actions are Add/Update/Delete, which is quite close to what I expect.
May I know if there is any documentations/tutorials on handling MMT_MARKET_BY_ORDER messages, so that I can build the orderbook based on the Map?
Thank you very much.
HI @Juno Chan
The following RFA C++ tutorial should help Level 2 Refinitiv Data Model (don't have a .NET equivalent tutorial - the technique remains the same)
Whilst the following article is based on EMA C++, you will find the content quite relevant to your requirement How to Sort & Process Level 2 Orderbook Data using EMA C++ API | Refinitiv Developers
And the following may also help: Consuming Order Book Level 2 data with Refinitiv Websocket API for Pricing Streaming and Real-Time Services | Refinitiv Developers
Thanks for the directions, I will try walking thru them.
Btw, I realized that MBP/MBO data are categorized under level 2 data, when I subscribe for the data, I shall provide the Level 2 RIC (i.e. ends with 'd') instead of the Level 1 RIC, is that correct?
As I did a trial subscription to Level 1 RIC and I got map data returned. Not sure if it is appropriate.
Thank you very much.
Hi @Juno Chan
For full market depth L2 data, you would use the same RIC code - but change the Domain as described in the above articles, tutorials and documents etc.
The legacy RIC codes such as ending with d - do not always provide the full depth order book - e.g. top 10, top 25 and/or in a Chain format - which is harder to process.
MMT_MARKET_BY_ORDER is a level 2 domain.
Thank you very much, I have been on a good track consuming the MBO map data to construct the MBO orderbook.
I got a few questions regarding some FIDs
For example, I am on Singapore Stock Exchange
1. FID 11692 OR_UDT_RSN
From the spec it does not have a definition for the value of the field. I am not sure if this FID provides valuable information denoting whether the Update is on qty amendment, executions, or other reasons as well. If this is so, this would be very useful to know the detail of this FID.
2. FID 3886 ORDER_TONE
this FID does not exist in the spec, while I receive it for every MapEntry (Add/Update). Curious to know the meaning of the values too.
3. FID 6516 BOOK_STATE
I got this when I receive the summary data, or randomly thru out the day, I suddenly receive this field, while the value actually remains the same at 1 (Normal)
during auctions, I sometimes receive 2 (Locked), may I know if Locked refers to Best Bid Price equals Best Ask Price, and 3 (Crossed) refers to Best Bid Price > Best Ask Price?
Thank you very much!
Hi @Juno Chan
Apologies for the late reply, we had public holidays here.
This forum is aimed at answering "how to" types of questions about using Refinitiv APIs and the moderators are not Content/Data specialists. The Refinitiv Real-time feeds carry over 80million RICs from 10,000+ source - and we have Content specialists covering specific content sets.
Therefore, for Content type questions please raise a Content Ticket with My.Refinitiv so that the right specialist can help you. I would recommend attaching a list of RICs + Domain you are interested in - so the query gets routed to the best team.
Also, I recommend not mentioning API - in case your ticket is incorrectly referred to API support (who are not content experts either).
I will also ask a couple of L2 experts if they can comment here(but they may not have Singapore specific knowledge), so please go ahead and raise the ticket as well.
There are plans for enhancing the venue documents on Data Model Discovery to cover the venue-specific enumerations and native/pass-through codes that we get from the source data feed later in the year. But at the moment, the best solution is to raise a Support Ticket like what Umer mentioned in his reply. Our Helpdesk will be able to help you with the possible values that you could receive from the fields OR_UDT_RSN and ORDER_TONE specifically for the SGX-ST MBO instruments.
You're right that the field BOOK_STATE is part of the summary message (Field Category = "Summary"), and the purpose of the field is to let the users know if there are any unexpected/abnormal orderbook conditions e.g., "Lock" - when best bid and best ask are equal, or "Crossed" - when the best bid is greater than the best ask. (Except for a yield based orderbook, in which the reverse is true. If you would like to know more about how the field BOOK_STATE works, you can refer to this page about orderbook sorting and ranking on DMD - https://refinitiv.fixspec.com/stack/repo/elektron/refinitiv-elektron-mar-2021/info/order-book-sorting-and-ranking)
FYI. Depending on the venue, level-2 data is available via OMM MBO/MBP and MP Limited Level-2 (LL2). The former provides the L2 data using domains - 7 for MBO and 8 for MBP, and the latter uses the same domain - 6 MARKET_PRICE as the L1 data but a different RIC structure. You can find the relevant RIC structure in the venue guide which is available for download on DMD via "Info > Attachment".