Is it possible to get a currency adjusted price from CF_last using get_data?

Hello, I know you can get a stock's currency adjusted price if you use fields such as ['TR.PriceClose' and 'TR.PriceOpen'], however, is it possible to get a currency adjusted price if you use the field 'CF_LAST'?
I want to be able to see the currency adjusted price in USD in real time for foreign-dominated securities.
Best Answer
-
No, this is not possible directly from Eikon. You'd need to retrieve the stock price and the exchange rate separately and convert the stock price to USD. Here's an example. It handles the fact that, while most currencies in the FX market are quoted in currency units per 1 USD, there are some currencies (e.g. GBP, EUR, AUD etc.) that are quoted inversely, i.e. in USD per 1 currency unit. The example also handles the case where stocks are quoted in minor rather than major currency units (pennies and cents rather than pounds and dollars). I know this to be the case in the UK, Israel and South Africa. There may be other markets which require similar handling.
#Retrieve stock prices
stk_prc_df, err = ek.get_data(['VOD.L','LHAG.F','PEUP.PA',
'LKOH.MM','0001.HK','ASX.AX'],
['CF_LAST','CF_CURR'])
#Create the list of currencies and remove duplicates
curr_list = stk_prc_df['CF_CURR'].tolist()
exch_rates_df = pd.DataFrame(index=list(dict.fromkeys(curr_list)),
columns=['RIC', 'Scale'])
#Create dictionary of minor currency units that stocks may be traded in
exception_dict = {'GBp':['GBP=',100], 'ILa':['ILS=',100], 'ZAc':['ZAR=',100]}
#Add exchange rate RICs and scaling factors to exchange rates dataframe
for x in exch_rates_df.index:
exch_rates_df.loc[x, ['RIC', 'Scale']] = exception_dict.get(x,
[x + "=", 1])
#Retrieve exchange rates from Eikon
tmp_df, err = ek.get_data(exch_rates_df['RIC'].tolist(),
['MID_PRICE', 'BASE_CCY'])
#Calculate exchange rates to apply to stock prices
exch_rates_df['Exch rate'] = np.where(
tmp_df['BASE_CCY']=='USD',
tmp_df['MID_PRICE'], 1 / tmp_df['MID_PRICE'])
#Calculate stock prices in USD
for x in stk_prc_df.index:
stk_prc_df.loc[x, 'Price USD'] = (stk_prc_df.loc[x, 'CF_LAST'] /
(exch_rates_df.loc[stk_prc_df.loc[x, 'CF_CURR'],'Exch rate'] *
exch_rates_df.loc[stk_prc_df.loc[x, 'CF_CURR'],'Scale']))
stk_prc_df0
Categories
- All Categories
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 33 Data Model Discovery
- 682 Datastream
- 1.4K DSS
- 613 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 248 ETA
- 552 WebSocket API
- 37 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.8K Refinitiv Data Platform
- 622 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 26 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 191 TREP Infrastructure
- 228 TRKD
- 915 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 84 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛