Im trying to build a screener for european stocks to see which stocks have unusual volume in the last 15 minutes compared to avg volumes.
Im trying to retrieve volume data (for 30days and 15 minutes) in 2 seperate get timeseries calls.
My stock universe is around 6000 RICS, so i divide the list in slices of 200 RICS each and make 2 separate calls per slice to the eikon data api to retrieve the volume data for each slice.
the minute call looks like this.
df = ek.get_timeseries(list_of_slices[x], fields='Volume', interval='minute', count=15)
When i go through all my slices i get quite a few timeout errors:
"2020-03-02 12:55:51,857 P [MainThread 28276] Request timeout occured"
I then go and retry the slices which fail until I get all data, but this process is painfully slow:
for the daily data: 0:02:51.512791
for the minute data: 0:10:31.204523
(getting the data, not counting the errors, is not really fast either I have to say)
I tried adjusting the slice sizes,smaller leads to less errors, but then I it takes even longer to go through the list.
My question is: How can I get to speed this process up?
Buiding a screener which shows results with a delay up to 10 minutes is pretty much useless :)
The main bottleneck in your process is the fact that all the data is retrieved sequentially, which is due to the synchronous implementation of get_timeseries method. We will be introducing asynchronous methods for data retrieval into Eikon Data APIs, although I don't have the timeframe for this. Until then you may consider using Eikon .NET API that provides asynchronous methods for timeseries data retrieval. Alternatively you may try to run your script several times in parallel with each instance of the script processing a portion of your stocks universe.