For a deeper look into our Eikon Data API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles


38 5 7 11

How to get average WACC per quarter for list of ISINs


I have a list of ISINs, for which I'd like to obtain a quarterly time series of the Weighted Average Cost of Capital (WACC) for each ISIN. I'm aware that the WACC is available on a daily basis from Eikon; therefore, I'm looking for a function that will compute the average of the WACC within each quarter, for each firm in my list.

So far, my approach has been to download daily WACC data for my list of ISINs, and then to perform the quarterly averaging directly within Python. However, I don't really need the daily data; so spending the time to download it first just for the purposes of aggregating, and then discarding what took so much time to download, takes unnecessary resources (and also I worry about exceeding any limits in Eikon on download volumes).

The formula I'm using is the following (assuming I want five years of data)

data, error = ek.get_data(isinlist, ['', 'TR.WACC'],{'SDate''%Y-%m-%d'),'EDate':'Y-5','Frq':'D'})

I guess I'm looking for something like the following:

data, error = ek.get_data(isinlist, ['', QUARTERLYAVG('TR.WACC')],{'SDate''%Y-%m-%d'),'EDate':'Y-5','Frq':'D'})

Would you by any chance know if this is possible?

Thank you very much in advance!

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

39.3k 77 11 27


The code snippet provided by @jason.ramchandani returns the value of WACC at the end of each quarter. I cannot think of a way to retrieve quarterly averages for WACC as timeseries. As an alternative to retrieving daily timeseries for WACC and aggregating them into quarterly averages in your code you could request a quarterly average. However this needs to be done separately for each quarter, which would reduce the volume of data you retrieve, but increase the number of requests you need to send as well as the retrieval time. Here's an example retrieving quarterly averages for the last 4 fiscal quarters

df = pd.DataFrame()
instr_list = ['IBM.N','F.N']
for i in range(4):
    wacc_fld = f'AVG(TR.WACC(SDate=FQ{str(-i)},Frq=D,EDate=FQ{str(-i-1)}))'
    tmp_df,err = ek.get_data(instr_list,
    tmp_df.rename(columns={tmp_df.columns[-1]: 'Quarterly average WACC'}, 
                  inplace = True)
    df = tmp_df.append(df)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@Alex Putkov. Unfortunately I was out of office until now, and could not respond sooner. But I just wanted to thank you for this useful clarification and answer.

8.6k 13 6 9

@AAMZ is this the kind of thing you were looking for?:

df, err = ek.get_data(
    instruments = [
    fields = ['TR.WACC(Frq=FQ,SDate=0,EDate=-9).date','TR.WACC(Frq=FQ,SDate=0,EDate=-9)']

I hope this can help

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@jason.ramchandani many thanks for the quick response

To understand better: does this function compute the average of the daily data within each quarter, before returning it as a quarterly time series? Or is returning the value of the WACC at the end of each quarter?