I'm trying to obtain a list of advisors and their roles in M&A deals. How can I be sure to assign th

I'm trying to obtain a list of advisors and their roles in M&A deals. I have code to pull the deals, but the advisors and the roles come in a concatenated field. Some advisors have multiple roles. If the first advisor has two roles and the second advisor has one role, how can I be sure to assign the roles correctly?

In the Screener App in Eikon, I can change the setting to display managers as row. Can I create a pandas DataFrame through the API to replicate that option?


sdc-example.png

For example:

Advisor Names:

'BNP Paribas SA|UBS Investment Bank|Nordea'

are associated with the following roles:

'Advisory|Advisory|Arranged Financing|Advisory'. In this case, how could I be sure which advisor arranged financing?

Here's the code I have to pull the deals:

df = pd.DataFrame()
errs = []
for y in range(1980,2023):
print(f'processing {y} ..............')
deal,err = ek.get_data("SCREEN(U(IN(DEALS)),BETWEEN(TR.MnAAnnDate,"+str(y)+"0101,"+str(y)+"1231))",
fields = ["TR.MnASDCDealNumber","TR.MnADealValue(Scale=9)","TR.MnAAnnDate",
"TR.MnAAcquirorFinAdvisor(Concat='|')","TR.MnAAcquirorFinAdvisorParentLong(Concat='|')",
"TR.MnAAcquirorFinRole(Concat='|')"])
errs.append(err)
if deal is None:
print(f'no data for {y} ..............')
continue
# remove deal values with <NA>
deal = deal[(deal['Deal Value'].notna())]
# remove deals with no financial advisors
deal = deal[(deal['Acquiror Financial Advisors Name'].notna())]
df = pd.concat([df,deal],ignore_index=True)
Tagged:

Best Answer

  • Jirapongse
    Answer ✓

    @flakej

    It can be used like this:

    deal,err = ek.get_data("SCREEN(U(IN(DEALS)),BETWEEN(TR.MnAAnnDate,"+"20231201,"+"20231231))",
                       fields = ["TR.MnASDCDealNumber","TR.MnADealValue(Scale=9)","TR.MnAAnnDate",
                                 "TR.MnAAcquirorFinAdvisor",
                                 "TR.MnAAcquirorFinAdvisor.AdvisorCode",
                                 "TR.MnAAcquirorFinRole",
                                 "TR.MnAAcquirorFinRole.AdvisorCode",
                              ])
    deal

    1704179359028.png


Answers

  • @flakej

    Thank you for reaching out to us.

    I think you can use the TR.MnAAcquirorFinAdvisor.AdvisorCode, and TR.MnAAcquirorFinRole.AdvisorCode fields for mapping.


  • Thanks for pointing me to those codes. Sorry for my ignorance as I am just starting to use the eikon API. Can you provide me a bit more guidance on how to use TR.MnAAcquirorFinAdvisor.AdvisorCode, and TR.MnAAcquirorFinRole.AdvisorCodeor where I might turn to for resources on how to use them? In the Screener app, I can change the setting to display manager as row. That is essentially what I'm trying to create via the API and save in a pandas DataFrame.

  • Thanks for the guidance. That is what I tried and the API only returns one row for each deal. I use the code provided and then identify the deal posted in the screenshot. I only find one row for that deal.

    deal2,err = ek.get_data("SCREEN(U(IN(DEALS)),BETWEEN(TR.MnAAnnDate,"+str(2023)+"1214,"+str(2023)+"1214))",
    fields = ["TR.MnASDCDealNumber",
    "TR.MnADealValue(Scale=9)","TR.MnAAnnDate",
    "TR.MnAAcquirorFinAdvisor",
    "TR.MnAAcquirorFinAdvisor.AdvisorCode",
    "TR.MnAAcquirorFinRole",
    "TR.MnAAcquirorFinRole.AdvisorCode"])

    1704291282634.png


  • @flakej

    They are these rows.

    1704799206657.png

  • Your careful study and attention to detail were clear, and they gave your arguments a lot of weight io games unblocked