Querying trading sessions of a RIC via Refinitiv Data Platform API

We would like to know if Refinitiv Data Platform supports requesting trade session information on a per RIC basis (or at least on a per exchange basis).
With trade session we mean time ranges where the market is open for trading, e.g. Mon-Fri 09:00-17:30.
The Eikon Desktop API has support for this via ThomsonReuters.Desktop.SDK.DataAccess.TimeSeries.Metadata.TradingSession.
We were told a couple of years ago that ultimately every functionality provided by Eikon Desktop API would be available via Refinitiv Data platform at some time as well.
We are aware of a legacy method to get hold of session times via so called TS1 QQ support pages but to our knowledge that data is no longer updated anymore and therefore not trustworthy anymore.
Best Answer
-
@GoGoGroundhog I'm not aware of an endpoint designed for this type of metadata within rd/rdp libraries. The workaround I used is Average Volume Analytics API endpoint that outputs this data in info section of the response. This API covers all global equities. This solution obviously depends on your ability to access this API.
One more caveat is that these session times are Refinitiv session times (in line with our timeseries data/apps/charts), but not the session times established by the exchanges themselves (so for Nasdaq Refinitiv open/close is 14:30 UTC/21:02 UTC, while exchange open/close is 14:30 UTC/21:00 UTC). These 2 mins actually make a big difference. Closing cross trade is reported a few milliseconds after 21:00 and these additional 2 minutes allow to account for this important part of the session's volume. I hope this helps.
import refinitiv.data as rd
from datetime import datetime
session = rd.session.desktop.Definition().get_session()
rd.session.set_default(session)
session.open()
def mkt_hours_query(symbol):
request_body={
'universe': [symbol],
'requestTime': datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"),
'columns': [
{'id': '1',
'field': 'avat',
'blendedVenue': False,
'filters': {'official': True},
'averagingInterval': 20,
'startTime': {'marketTime': True},
'endTime': {'marketTime': True}}
]
}
request = rd.delivery.endpoint_request.Definition(
url = "https://api.refinitiv.com/data/analytics/average-volume-analytics/v2/request",
method= rd.delivery.endpoint_request.RequestMethod.POST,
body_parameters= request_body)
response = request.get_data()
open_time_utc = datetime.strptime(response.data.raw['info'][symbol]['1']['startTime'], "%Y-%m-%dT%H:%M:%SZ").time()
close_time_utc = datetime.strptime(response.data.raw['info'][symbol]['1']['endTime'], "%Y-%m-%dT%H:%M:%SZ").time()
return open_time_utc, close_time_utc
mkt_hours_query('VOD.L)0
Answers
-
@GoGoGroundhog thanks for your question - so for timeseries history - you can request which session(s) you want and this will adjust to whichever RIC you present:
response = historical_pricing.summaries.Definition(
universe = "VOD.L",
interval = Intervals.ONE_MINUTE, # Supported intervals: ONE_MINUTE, FIVE_MINUTES, TEN_MINUTES, THIRTY_MINUTES, ONE_HOUR
count = 500,
sessions = [
MarketSession.PRE,
MarketSession.NORMAL,
MarketSession.POST
]
).get_data()
response.data.dfIs this is the sort of thing you are after? I hope this can help.
0 -
@GoGoGroundhog Also you can check the times as well by requesting history for any instrument for a day say:
response = historical_pricing.summaries.Definition(
universe = "VOD.L",
interval = Intervals.TEN_MINUTES, # Supported intervals: ONE_MINUTE, FIVE_MINUTES, TEN_MINUTES, THIRTY_MINUTES, ONE_HOUR
#count = 500,
start = datetime.datetime(2023,2,13,0,0,0),
end = datetime.datetime(2023,2,13,23,59,59),
sessions = [
#MarketSession.PRE,
MarketSession.NORMAL,
#MarketSession.POST
]
).get_data()
response.data.dfI hope this can help.
0 -
Hi Jason, thanks for your answer. Unfortunately this is not what we are after.
We need official trading session metadata for several purposes, e.g. for filtering realtime updates outside the session and we also present trading sessions to the end-user as additional information.0 -
we do not seem to be permissioned to that endpoint. Unfortunately the equity restriction would be a problem as well as most of our customers work with commodities/futures.
Thanks anyway!Ingo
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.4K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 280 Open PermID
- 45 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 719 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛