How to retrieve time series data from list series in DSWS

I'm trying to download price time series for all constituents of s&p500 stocks using below:

import DatastreamDSWS as dsws

ds = dsws.Datastream(username='******',password='******')

df = ds.get_data(tickers="LS&PCOMP|L",fields =["P"], start ='2020-01-01',end = '-5D',kind=1)

print(df)

However I am receiving error msg. Pls advise. Thank you

Best Answer

  • Gurpreet
    Gurpreet admin
    Answer ✓

    I don't think you can expand the list and get the timeseries data in a single API call. It will have to be a two stage process - first get all constituents and then get the timeseries for them.

    # get constituent list
    df1 = ds.get_data(tickers='LS&PCOMP|L', fields=['P'], kind=0)
    # get a subset of first 50 instruments
    slist = ','.join(df1['Instrument'].tolist()[0:50])
    # get timeseries data for it
    df2 = ds.get_data(tickers=slist, fields=['P'], start='2020-01-01', end='2020-01-05', kind=1)

    Result:

    Instrument   891399 916328 545101  777953  906187 936365    749382  ...  878574 905159    904818 923649 329709 325824 87
    9628
    Field             P      P      P       P       P      P         P  ...       P      P         P      P      P      P
       P
    Dates                                                               ...

    2020-01-01  1847.84  86.86  19.90  170.59  134.04  45.86  329.8101  ...  100.73  48.60  325.7600  63.15  43.38  45.22  7
    8.20
    2020-01-02  1898.01  86.95  20.03  168.81  135.42  49.10  334.4299  ...  102.17  47.53  333.3201  63.75  43.95  45.33  7
    7.83
    2020-01-03  1874.97  85.89  19.80  166.82  134.34  48.60  331.8101  ...  101.85  47.46  332.7600  63.31  42.36  44.98  7
    7.74

    [3 rows x 50 columns]


Answers

  • @bob.kim, these are public forums. Please do not post your credentials in the posts. I have removed them now.