Need EOD closing and settlement prices day wise data for CL Options Contract . Also need information of deriving the the same prices data for expired option contracts . Need all the above info for NG also so kindly let know on generic basis
Hi @peeush ,
For the active contracts what you can do is to use chains to expand the constituents, then request prices on those:
import refinitiv.data as rdfrom refinitiv.data.discovery import Chaincl_chain = Chain('0#CL+').constituentsprint(cl_chain)
['0#CLF24+', '0#CLG24+', '0#CLH24+', '0#CLJ24+', '0#CLK24+', '0#CLM24+', '0#CLN24+', '0#CLQ24+', '0#CLU24+', '0#CLV24+', '0#CLX24+', '0#CLZ24+', '0#CLF25+', '0#CLG25+', '0#CLH25+', '0#CLJ25+', '0#CLK25+', '0#CLM25+', '0#CLN25+', '0#CLQ25+', '0#CLU25+', '0#CLV25+', '0#CLX25+', '0#CLZ25+', '0#CLF26+', '0#CLG26+', '0#CLH26+', '0#CLJ26+', '0#CLK26+', '0#CLM26+', '0#CLN26+', '0#CLQ26+', '0#CLU26+', '0#CLV26+', '0#CLX26+', '0#CLZ26+', '0#CLF27+', '0#CLG27+', '0#CLH27+', '0#CLJ27+', '0#CLK27+', '0#CLM27+', '0#CLN27+', '0#CLQ27+', '0#CLU27+', '0#CLV27+', '0#CLX27+', '0#CLZ27+', '0#CLF28+', '0#CLM28+', '0#CLZ28+', '0#CLM29+', '0#CLZ29+', '0#CLM30+', '0#CLZ30+', '0#CLM31+', '0#CLZ31+', '0#CLM32+', '0#CLZ32+', '0#CLM33+', '0#CLZ33+', '0#CLM34+', '0#CLZ34+']
This will return the monthly contract chains. Then you can expand those further to get contracts with specific strikes and get prices on those. E.g for '0#CLF24+':
cl_chain_F = Chain('0#CLF24+').constituentsrd.get_history(cl_chain_F, fields = ['SETTLE', 'TRDPRC_1'])
As for the expired ones, those are not accessible directly and you need to reconstruct them following the RIC construction Rules. You can reach out to Helpdesk for more details by posting a question.
Hope this helps.
Best regards,
Haykaz
Thanks for replying Haykaz, however i'm getting issues while trying to get a particular period data , that too in valid contract .. using ->
df = rd.get_history(cl_chain, fields = ['SETTLE', 'TRDPRC_1'], interval='daily', start = '2023-12-06', end = '2023-12-16')
getting error :
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\refinitiv\data\_access_layer\get_history_func.py", line 166, in get_history
raise RDError(-1, except_msg)
refinitiv.data._errors.RDError: Error code -1 | No data to return, please check errors: ERROR: No successful response.
(TS.Interday.UserRequestError.70005, The universe is not found)
please assist
Assuming you kept my variable names, you should have run this with cl_chain_F not with cl_chain. cl_chain still consists of chains, so you will need to get its constituents (see the seconsd snippet of my code above) before running the get_history request.
Many a times I'm getting issues ...the command is sometimes running fine but sometimes just hungs up and gives server error 500 or bad request error ....can you please assist to resolve these issues.....i am told That is when server is overloaded with many requests...
you can consider wrapping the API request in try except statement and retrying a couple of times. This may help avoid temporary sever overloads
max_retries = 3retries = 0while retries<max_retries: try: # API call goes here break except Exception as e: print(retries, e) retries +=1 #time.sleep(5) continuedata_root_1
how to fetch the RIC root dynamically for any asset ....i need to know e.g. i have nifty index ...how will i find the RIC root for nifty index through api or any other medium ....second there is one info decade of the expiry of contract used for creating ric's for expired contracts for futures ....what is that ?
For the details on the RIC Roots and the structure of the future RICs I would suggest raising a content query via Helpdesk . The support team is more knowledgeable on content related questions.