question

Upvotes
Accepted
3 0 1 6

Is it possible to request for snapshot data from EMA?

We're trying to consume FINANCIAL_PRICES data from refinitiv SDK. While planning this, do we have an option to request for SNAPSHOT of data perhaps when the consumer has gone down and when getting back to normal? Which API provides this option to implement or request for snapshot data? What're the prerequisite configuration needed for this request? Can someone please clarify?Thanks.

#technologyema-apisnapshot-pricing
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
24.7k 54 17 14

Hello @mohammedsardarmca

Question: Does Refinitiv has any solution or methodology?

Answer: Yes, we have.

For the EMA API, there is the warm standby feature that might help you minimized the data lost. You can find more detail from the following resources:

Alternatively, there are other LSEG APIs that lets you request historical data as follows:

Please contact your LSEG representative to help you with the Historical APIs and services that match your requirements.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@wasin.w Now answer gives some relevant information but interestAfterRefresh() - stream closed if false not if true no where related. I'll further read on from the above resources and ask if any knowledge sharing required. BTW thanks for detailed and patiently answering. Have a great day.

Upvotes
24.7k 54 17 14

Hello @mohammedsardarmca

You can configure the EMA API to send a snapshot request via EMA ReqMsg.interestAfterRefresh(false) method as follows:

consumer.registerClient(reqMsg.serviceName("DIRECT_FEED").name("IBM.N").interestAfterRefresh(false), appClient);

Then the application receives only a Refresh Response message via onRefreshMsg() callback, and the item stream will be closed.

If the application needs Update messages, the application must re-request a streaming request for the same item to the Real-Time server.

The full example is ex102_MP_Snapshot example application on GitHub.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Specifies InterestAfterRefresh.

Params:

interestAfterRefresh – specifies if streaming or snapshot item is requested

Returns:

reference to this object

While I'm trying to understand more about this InterestAfterRefresh flag - It seems from the comments on the method, if this set to true then are we requesting historical data i.e Snapshot otherwise it will be stream of live data.. Can you add anything if I'm missing to understand here?

Would this possible to know little more about the below as well?

  • Where to specify or read more about the the time restraints on this request. I.e. Refinitiv stores 1 hour of data, 1 day of data, etc.? Any examples or resources would you be able to provide?
  • we know the parameters that this request accepts, e.g. number of points? time range?

Any information about this that may help to understand better would be approciated. Thanks

Upvotes
79.2k 251 52 74

@mohammedsardarmca

If you have your own RTDS (Refinitiv Real-Time Distribution System) setup, you can configure your RTDS to support snapshot requests via REST API. Then, you can use HTTP requests to get snaphot data from RTDS.

For more information, please refer to Get stock prices using REST with ADS article.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
24.7k 54 17 14

Hello @mohammedsardarmca

Please be informed that the EMA and Refinitiv Real-Time platform provides the real-time data for consumers only, not historical data. The API and the platform cannot provide the historical data for you.

About the InterestAfterRefresh flag, it lets the application set whether the request is the streaming or snapshot request message as follows:

  • If true (default): the request is considered to be a streaming request. It means a consumer is interested in receiving future changes of the data. A consumer will receive the complete set of current values that represents the item as a Refresh Message. Any recent changed will be received as Update messages.
  • If false: the request is considered to be a snapshot request. It means a consumer is not interested in receiving future changes of the data. A consumer will receive the complete set of current values that represents the item as a Refresh Message only. The data stream is considered closed after receives a Refresh Message.

I strongly suggest you check the 10 important things you need to know before you write a Refinitiv Real-Time application article to learn more about the Refinitiv Real-Time platform.

If you are interested in the historical data, there are other APIs that may be suitable for you as follows:

Please contact your LSEG representative to help you with the Historical APIs that match your requirements.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

If you say that "The API and the platform cannot provide the historical data for you." Then what's the meaning of snapshot request do you think? What is the main difference between snapshot and stream data from your point? I'm bit confused by your answer but trying to clarify what did you try to convey.

@wasin.v
Upvote
24.7k 54 17 14

Hello @mohammedsardarmca

In the Refinitiv Real-Time definition, both streaming and snapshot request always return "the current value of data":

  • snapshot: After received "the current value of data", item steam is closed.
  • streaming: After received "the current value of data", item steam remains opened and receive upcoming data changed.

In short, the Refinitiv Real-Time snapshot request is like "snapshot at the current time".

Please find more detail below.

### Streaming Request ###

The consumer application opens an item stream to the Refinitiv Real-Time Provider.

  1. The first message that the provider sends to the consumer is the "Image". The image of a data item is the complete set of the current values that represents the item. Images values come with the Refresh messages sent by the API. With EMA these messages are sent via the onRefreshMsg callback method of the OmmConsumerClient interface registered in the subscription phase.
  2. If there any price or data changed from the data feed (or exchange), the provider sends those changed to the consumer as an "Update". The update doesn’t contain the complete image but only the values that changed. Updates are sent by the API via Update messages. With EMA these messages are sent via the onUpdateMsg callback method of the OmmConsumerClient interface registered at subscription time. Update messages always contain values for pieces of data that the application already received.

Example:

Let's say the current fields value of "XXX.RIC" is BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50.

  1. The exchange sends "BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50" data to the Refinitiv Real-Time, then Refinitiv Real-Time sends this "BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50" data to the API as a Refresh Message.
  2. The XXX.RIC data is changed to "BID = 26, ASK = 28". The Refinitiv Real-Time sends this "BID = 26, ASK = 28" data to the API as an Update message.
  3. The XXX.RIC data is changed to "BID = 24, ASK = 22". The Refinitiv Real-Time sends this "BID = 24, ASK = 22" data to the API as an Update message.
  4. The XXX.RIC data is changed to "TRDPRC_1 = 33". The Refinitiv Real-Time sends this "TRDPRC_1 = 33" data to the API as an Update message.
  5. and so on until the consumer application unregister XXX.RIC

streaming-request.png

### Snapshot Request ###

The consumer application opens an item stream to the Refinitiv Real-Time Provider.

  1. The first message that the provider sends to the consumer is the "Image". The image of a data item is the complete set of the current values that represents the item. Images values come with the Refresh messages sent by the API. With EMA these messages are sent via the onRefreshMsg callback method of the OmmConsumerClient interface registered in the subscription phase.
  2. The item stream is closed.

Example:

Let's say the current fields value of "XXX.RIC" is BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50.

  1. The exchange sends "BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50" data to the Refinitiv Real-Time, then Refinitiv Real-Time sends this "BID = 25, ASK = 27, TRDPRC_1 = 30, and HIGH_1 = 50" data to the API as a Refresh Message.
  2. Since this is a snapshot request, the item stream is closed after received a Refresh Message.

snapshot-request.png

For more detail about the Refinitiv Real-Time, I strongly suggest you check the following resources:



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
24.7k 54 17 14

Hello @mohammedsardarmca

If you need more clarification about the Real-Time snapshot vs streaming request, there are 2 choices as follows:

The first choice is if you are the RDC named user, when you login this https://developers.lseg.com/ website with your company email address, you will see the "Contact premium support" button on the https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/rt-sdk-java page as follows:

rtsdk-contact-support.png

Then you can click this "Contact premium support" button to submit a support ticket to the Real-Time APIs support team. The Real-Time APIs support team is the dedicated support team with SLA (unlike us, the Q&A forum admins which do not have SLA).

The second choice is you can submit the GitHub - Issues page to the EMA Development team via the GitHub Real-Time-SDK GitHub repository website.

I hope this information helps.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
3 0 1 6

So many thanks but just let me know with yes/no answer for this question. Suppose if my app which consumes pricing from refinitiv stream gone down and then became alive, and now what to do to consume the data which I missed during the down time but if we want those data? Does refinitiv has any solution or methodology? Are you suggesting me to contact premium support for the same?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

If your application consumers only data from Realtime data feed solution. Once you missed a tick information, you missed it and it is not possible to get it again on the Realtime data feed.

Realtime data feed does not provide historical data. (but some other products do, such as Tick History or RDP as Wasin has mentioned)

If every ticks information is critical to your application, usually the consumer application will have to consider building in resiliency capabilities such as "hot standby" to reduce the incident of missing a tick.

In case they still miss a tick (from downtime or any reasons), they may consider using other products to backfill the missing ticks.

So in summary, LSEG has multiple solutions for the historical data but it is not provided from the Realtime data feed product. Realtime data feed only provides realtime streaming or realtime snapshot data.

If you are interested in these products, please let me know and I will location your CSM(customer success manager) and ask them to contact you.

Upvote
25.3k 87 12 25

Hi @mohammedsardarmca

If a customer needs to backfill data you may have missed due to network / connectivity / server issues - then the usual route is to sign up for our one of our Historial Data offerings and use the associated APIs to request the missing historical data.

We have a number of historical data offerings. Based on the limited information provided above, it sounds like our RDP Historical Events service could be a good fit.
Tick data typically is available in the RDP Historical events service very soon after it has been streamed on our live service - often within a few seconds.

If you are interested in one of these services, let me know and I can try and get your account team to reach out to you - to discuss further.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thank you so much, I'll discuss with my teams and get back here.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.