I need to download different index-data (e.g. Total Return Index (RI), Net Return Index (NR)) as timeseries. Currently I'm using the Datastream Request-Tables for this purpose. Now I want to replace them with the EIKON Data API for Python. During this transition I've came up with the following issues:
- Converting Mnemonic to RIC. The function get_symbology doesn't allow to convert Mnemonics directly to RIC. I've used the DS_Grid function in order to do this and the following issue appeared: For some indices no RIC is available at all. Therefore my question is how should I proceed in order to convert a Mnemonic to RIC and is there a possibility to request a RIC for those Mnemonics where there is no RIC available? Furthermore I would also need to download User Created Indices. Where can I set up a RIC for those?
- Currently the get_timeseries function only supports a limited amount of fields. How can I proceed if I want to download e.g. the Total Return Index (RI) for several indices?
Thanks in advance for your help. I really appreciate it.
What's the purpose of replacing Datastream Request-Tables with Eikon Data APIs? Is it just to be able to retrieve data programmatically using Python? If this is the case I suggest you use Datastream Web Service, which provides programmatic access to the exact same datasets you get from Datastream Request-Tables using the same symbology and metadata you use currently.
Eikon Data APIs do not provide access to Datastream datasets, hence the issues you ran into. There's some overlap between datasets available through Datastream and through Eikon, but Eikon and by extension Eikon Data APIs cannot be used to retrieve the full breadth of Datastream datasets.
@Alex Putkov. Thanks for your quick reply. Your explanation regarding the difference between the Eikon Data API and the DSWS API is very useful. The purpose is exactly how you pointed out to retrieve data programmatically using Python since the solution using DS Request-Tables gets unstable when retrieving large datasets. I'll therefore have a look into Datastream Web Services (DSWS).
I hope you don't mind if I ask two further questions
- Do you know if DSWS allows me to upload & more important to download user created indices as it is possible with the Excel Add-in?
- The python DSWS package seems to be unofficial and unsupported by Thomson Reuters. Is it planned to launch an official package (like with the Eikon Data API)?
Thanks in advance for your help.
The Python library for DSWS is open source, which is why it's published on GitHub. Refinitiv will support it on a best effort basis. What we do support officially is the underlying SOAP and RESTful interfaces. The Python library is pretty simple. If any deficiencies are found within the Python library, they may be reported to Refinitiv or the community (including you) may contribute a fix on GitHub.
I'm afraid I don't know the answer to your first question. For this reason I've moved this thread to the forum dedicated to DSWS.
@Monika.Stankovic, would you mind answering "does DSWS allow me to upload & more importantly to download user created indices as it is possible with the Excel Add-in?"
with PyDSWS to pass by a the ticker in a "compounded" format such as BCWRLD$(RI)~CHF (Ticker & Field & Currency). If this should not be possible does maybe the .NET API provide such a solution?
Thanks in advance for your helpful answers.
This is possible to do with PyDSWS, just follow the construction of the time series request as below, where DATE in start and end can be in form of absolute dates (YYYY-MM-DD) or relative dates (e.g. -10D, -0D):
ds.get_data(tickers='BCWRLD$', fields='X(RI)~CHF', start='DATE', end='DATE', freq='D')
@Monika.Stankovic It is therefore not possible to pass by an argument as
"BCWRLD$(RI)~CHF" without splitting it?
Furthermore we also have some timeseries which we retrieve with some additional calculation e.g. (LHMVALL(IN))~EUR+100 or REBE#(EXP#(CSUM#(LN#(E3C8(SBBPWL$(NR)~E,USEURSP,USEUR1F)))),100). I guess such calculations would need to be done within the code itself and cannot be passed by using such adapted tickers right?
Thanks for all the input you're providing. It is very much appreciated!