Return Only First Result From Query

I am attempting to get the "next" dividend date for a stock as of a certain date using the TR.EventStartDate field. For example, I am looking to search over the subsequent year to get the next date a dividend was expected as of 1990-01-01 by adding the following field to the query:

ek.TR_Field('TR.EventStartDate', params={'Sdate': '1990-01-01', 'Edate': '1991-01-01', 'EventType': 'EXDIV'})

When I've run this query in the past I've only had a single result returned (i.e. the first date), but now I'm starting to get multiple results.

How can I go about limiting the results of the query to only the first result?

Best Answer

  • Thanks for the response. In case anyone's interested, I actually found a more direct solution by simply bypassing the ek.TR_Field() function and just creating the field string manually, which allows you to wrap the whole field in a MIN() aggregator:

    ek_fields.append(f'MIN(TR.EventStartDate(Sdate={Sdate}, Edate={Edate}, EventType=EXDIV))')

Answers

  • I don't believe there's a way to request only the next ex-dividend date as of a historical date. But you can easily grab the date closest to your historical reference date from the dataframe returned. You may also want to use Dividend History fields rather than Company Events fields such as TR.EventStartDate. Company events are returned for the company and may include ex dividend dates for multiple equity issues of the same company (common stock, depositary receipts etc.). The Dividend History fields return only the dividend history for the specific stock.

    ric_list = ['IBM.N','T.N','AAPL.O']
    df, err = ek.get_data(ric_list,'TR.DivExDate',
                         {'SDate':'1990-01-01', 'EDate':'1991-01-01'})
    div_dates_df = pd.DataFrame(columns=['Ex div date'])
    div_dates_df.index.name = 'RIC'
    for ric in ric_list:
        div_dates_df.loc[ric,'Ex div date'] = df.loc[
            df['Instrument']==ric,'Dividend Ex Date'].min()
    div_dates_df