question

Upvotes
Accepted
63 2 5 13

Best approach for requesting latest values for option contract fields

Using Refinitiv Data Library for .Net, what is the recommended way to request the most recent data for options contracts? We have a tool in our product similar to OptionWatch that lists available options contracts for a given base instrument along with the most recent values for relevant fields like Bid, Ask, Open Interest, Net Change, and the Greeks. Each approach seems to have drawbacks that don't quite fit our requirements.

Using Summaries.GetData() (Daily interval) populates all of the fields we need regardless of whether the request is during market hours or not, but we would need to make separate requests for each contract symbol (potentially a hundred or more requests) and would need to subsequently make a second subscription request to get real-time updates. Data could be up to a day old, which is fine during market hours since fields would be updated by the subscription, but could be a problem soon after the market closes since streaming stops and the historical database hasn't been updated with the new values yet.

Using Events allows us to request all of the symbols at once but it doesn't give us any historical data so we can't populate all the fields in the data grid control.

Pricing.GetStream() allow us to make a bulk request and seems to return all the data we need as long as we make the request during market hours or soon after. If the request is made before or after the session some of the contracts return a 'Not Found' error.

We could possibly use a combination of any or all of the above but we're concerned about the performance impact of making multiple requests.

Any direction would be appreciated.

#producthistoricalrefinitiv-data-platform-librariesstreaming-data
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.

1 Answer

· Write an Answer
Upvotes
Accepted
7.2k 23 3 6

Hi @cory.schmidt.1,


For such a workflow, I would suggest following a workflow as shown in the article

Implied Volatility and Greeks of Index 'At The Money' Options
It was written in Python, but all workflows outlined will work in .Net.

(i) Finding the Options Contracts you're after using Search (info on which in Python and .Net can be found on developers.lseg), although it looks as though finding the RICs you're after is a step already acomplished in your workflow using `events`. Daily past data can often be found simply, e.g.: for IMP_VOLT

(ii) 2nd get underlying data for options in mind: this is nessesary for intra-day options relevent data. This is because we will collect underying data (e.g.: risk free rates and underlying prices - strike or others, as well as contract prices) to then use in the IPA calculator in step (iii).

(iii) Use RDP( Refinitiv Data Platform)'s IPA (Instrument Pricing Analytics) (a.k.a.: Quantitative Analytics, QA) API family to calculate implied values based on collected intra-day data. I give an example with Implied Volatilities here, both for all trades (of the underlying instrument) or only at option contract trades. Again , this can also be done in .Net.

Do let us know if this makes sense and is comprehensive enough.

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.

You are correct in that we are already using the Search service to retrieve the list of associated contracts. Our app displays data in a data grid format with contracts as the y-axis and fields as the x-axis so we need to request a lot of instruments and a lot of FIDs at the same time. Our main concern is how can we request all that data in an efficient manner and how can we ensure we get data for all the fields we're requesting, whether the request is made before the market, during the market, or after the market.

Thanks for the recommendations on the material to read. I'll spend some time with it.

Hi @cory.schmidt.1,

IPA is the solution powering computations used in my article on Implied Volatility. If you entre underlying values form which computations are to be made, it will always return values; just like a calculator. If data points are missing (e.g.: Risk Free Rate when coputing Implied Volatilities), IPA will go fetch the latest data point EOD (End Of Day) (i.e.: previous business day's closing value). For certain elements, that's rarely a problem (e.g.: Risk Free Rates), for others, it can be problematic (e.g.: underlying asset Price) when one is after intraday computations.

As a result, to make sure that IPA returns data, I would suggest fetching underlying data 1st, then entering it in IPA, as shown in my article on Implied Volatility. It is - however - much harder doing so.

When it comes to data limits, IPA allowes for 100 items per requests, which is rather large; and for each request, you can specify any number of fields (you can ask for all of them, which are outlined in the Documentation 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.