I have a quick question about how to calculate returns of equity indices over a certain period of time. For individual stocks, we have TR.TotalReturn and if I want to get returns from 2019-12-31 to 2020-01-10, the function below provides me with what I want:
df_stock_returns = ek.get_data(['3436.T', '8035.T', '7735.T'],
So, I don't have any problem with individual stocks. However, when it comes to equity indices, TR.TotaReturn is not compatible with indices such as .TOPX.
df_index_returns = ek.get_data('.TOPX', fields=['TR.TotalReturn'],
This returns NaN.
If I want to calculate individual stocks' relative returns vs. TOPIX, how can I do that? One idea is to use 1475.T, which is TOPIX ETF, as an individual stock, but an ETF is not exactly the same as an index. So, could someone let me know how I can sort it out? I also tried
df_index_returns = ek.get_data('.TOPX', fields=['PCTCHNG'],
but it only gives me the latest one day return, ignoring SDate and EDate parameters.
You can use TR.ClosePrice instead. (I also add TR.PriceClose.calcDate to display the date in case you are using TR.PriceClose)
And please note that 31 Dec 2019 to 5 Jan 2020 are holiday in Japan.
I am not sure if there is any field carrying the percent change information for an index asset type?
You can contact Refinitiv Content Helpdesk to clarify if there is such field at https://my.refinitiv.com/
Alternatively, you can calculate the change in your code:
@chavalit.jintamalit Thank you for an idea. However, as you can see, TR.PriceClose suffers from unreasonable duplication for some reason. You can see four duplicated entries for 2019-12-30. This is an error. It is possible to deal with it by .duplicated() in pandas, but it is trickier when I retrieve more than one items at once. This is another headache to me.