Skip to main content

Python package for retrieving data.

Project description

The Refinitiv Data Library for Python provides a set of ease-of-use interfaces that gives your applications a uniform access to the breadth and depth of financial data and services available on the Refinitiv Data Platform.

Thanks to this library the same Python code can be used to retrieve data whatever the access point your application uses to connect to the Refinitiv Data Platform (either via a direct connection, via Eikon, via the Refinitiv Workspace, via CodeBook or even via a local Real-Time Distribution System).

The library provides several abstraction layers enabling different programming styles and technics suitable for all developers from Financial Coders to Seasoned Developers:

  • The Ease-of-Use layer for FinCoders provides Financial Coders with simple interfaces to rapidly prototype solutions within interactive environments such as Jupyter Notebooks. The goal of this layer is to simplify as much as possible access to Refinitiv data and services. It is built on top of the Content layer.
  • The Content layer provides developers with interfaces suitable for more advanced use cases (synchronous function calls, async/await, event driven). The Content layer refers to logical market data objects like market data prices and quotes, fundamental & reference data, historical data, company research data and so on. This layer is built on top of the Delivery layer.
  • The Delivery layer is a low abstraction layer that defines interfaces used to interract with the service agnostic delivery mechanisms of the Refinitiv Data Platform.
  • The Session layer defines interfaces allowing your application to connect to the different access points to the Refinitiv Data Platform (either via a direct connection, via Eikon, via the Refinitiv Workspace, via CodeBook or even via a local Real-Time Distribution System).

Some examples...

... with the Ease of use layer for FinCoders

Import the Refinitiv Data Library

import refinitiv.data as rd

Open the session

session = rd.open_session()

Get data

    result = rd.get_data(universe=['IBM.N', 'VOD.L'], fields=['BID', 'ASK'])
    print(result)
    rd.close_session()
Instrument BID ASK
0 IBM.N 0.00 0.0
1 VOD.L 120.02 120.1

Close the session

rd.close_session()

... with the Content layer dedicated to more advanced use cases

Import the Refinitiv Data Library

import refinitiv.data as rd

Create and open the session of your choice...

... either to connect directly to the Refinitiv Data Platform...

session = rd.session.platform.Definition(
    session_name='default-session',
    app_key='8e9bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1b035d', 
    grant=rdp.session.platform.GrantPassword(
        'my_login', 
        'my_password'
    )
).get_session()

...or to connect to the platform via Eikon or Refinitiv Workspace...

session = rd.session.desktop.Definition(
    session_name='default-session',
    app_key='8e9bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1b035d'
).get_session()

Open the session and set it as the default

session.open()
rd.session.set_default(session)

Fundamental And Reference data retrieval

from refinitiv.data.content import fundamental_and_reference
response = fundamental_and_reference.Definition(
    ["TRI.N", "IBM.N"],
    ["TR.Revenue", "TR.GrossProfit"]
).get_data()

response.data.df
instrument date TR.Revenue TR.GrossProfit
0 TRI.N 2020-12-31T00:00:00 5984000000 5656000000
1 IBM.N 2020-12-31T00:00:00 73620000000 35574000000

Historical data retrieval

from refinitiv.data.content import historical_pricing

response = historical_pricing.summaries.Definition(
    universe='VOD.L', 
    interval=historical_pricing.Intervals.DAILY,
    fields=['BID','ASK','OPEN_PRC','HIGH_1','LOW_1','TRDPRC_1','NUM_MOVES','TRNOVR_UNS']
).get_data(session)

response.data.df
BID ASK OPEN_PRC HIGH_1 LOW_1 TRDPRC_1 NUM_MOVES TRNOVR_UNS
2019-12-12 144.32 144.34 144.42 145.66 143.46 144.18 12631.0 8498347218.71154
2019-12-11 143.58 143.6 142.72 144.8 142.62 143.58 10395.0 8815450412.65353
2019-12-10 142.74 142.78 143.84 143.84 141.48 142.74 10311.0 8070285210.45742
... ... ... ... ... ... ... ... ...
2019-11-18 152.1 152.12 154.74 155.66 152.0 152.12 14606.0 19322988639.34
2019-11-15 154.6 154.62 160.68 160.68 154.06 154.6326 17035.0 31993013818.37456

Real-time streaming data retrieval

streaming_prices = rd.content.pricing.Definition(
    universe=['EUR=', 'GBP=', 'JPY=', 'CAD='], 
    fields=['DSPLY_NAME', 'BID', 'ASK']
).get_stream(session)

streaming_prices.on_refresh(lambda streaming_price, instrument_name, fields : 
        print(f"Refresh received for {instrument_name}: {fields}"))
	
streaming_prices.on_update(lambda streaming_price, instrument_name, fields : 
        print(f"Update received for {instrument_name}: {fields}"))

streaming_prices.open()

Output:

<StreamState.Open: 3>

Update received for JPY=: {'DSPLY_NAME': 'BARCLAYS     LON', 'BID': 109.59, 'ASK': 109.62}
Update received for GBP=: {'DSPLY_NAME': 'ASANPACIFIBK MOW', 'BID': 1.341, 'ASK': 1.3411}
Update received for EUR=: {'DSPLY_NAME': 'UBS          ZUR', 'BID': 1.117, 'ASK': 1.1174}
Update received for CAD=: {'DSPLY_NAME': 'HSBC         LON', 'BID': 1.3165, 'ASK': 1.3167}
Update received for JPY=: {'DSPLY_NAME': 'ASANPACIFIBK MOW', 'BID': 109.59, 'ASK': 109.61}
Update received for GBP=: {'DSPLY_NAME': 'INTERPROMBAN MOW', 'BID': 1.341, 'ASK': 1.3412}
Update received for EUR=: {'DSPLY_NAME': 'RBS          LON', 'BID': 1.117, 'ASK': 1.1174}
Update received for CAD=: {'DSPLY_NAME': 'CIBC         TOR', 'BID': 1.316, 'ASK': 1.3164}
Update received for JPY=: {'DSPLY_NAME': 'BARCLAYS     LON', 'BID': 109.59, 'ASK': 109.62}
Update received for GBP=: {'DSPLY_NAME': 'INTERPROMBAN MOW', 'BID': 1.341, 'ASK': 1.3413}
Update received for EUR=: {'DSPLY_NAME': 'BARCLAYS     LON', 'BID': 1.117, 'ASK': 1.1174}
Update received for CAD=: {'DSPLY_NAME': 'CIBC         TOR', 'BID': 1.316, 'ASK': 1.3164}
Update received for JPY=: {'DSPLY_NAME': 'ASANPACIFIBK MOW', 'BID': 109.59, 'ASK': 109.61}
Update received for GBP=: {'DSPLY_NAME': 'BARCLAYS     LON', 'BID': 1.341, 'ASK': 1.3414}

Search

from refinitiv.data.content import search

response = search.Definition("IBM").get_data()

response.data.df
RIC BusinessEntity PermID DocumentTitle PI
0 ORGANISATION International Business Machines Corp, Public C... 37036
1 IBM QUOTExEQUITY 55839165994 International Business Machines Corp, Ordinary... 1097326
2 ORGANISATION Tiers Corporate Bond Backed Certificates Trust... 18062670
3 ORGANISATION SG Stuttgart Vaihingen BM-Campus 1 UG haftungs... 27968389
4 0#IBMF: QUOTExEQUITY 21481052421 Eurex International Business Machines Equity F... 48924732
5 0#IBMDF: QUOTExEQUITY 21612423771 Euronext Amsterdam IBM Dividend Future Chain C... 259118763
6 IBMFc1 QUOTExEQUITY 21481052892 Eurex International Business Machines Equity F... 49450681
7 IBMFc2 QUOTExEQUITY 21481053949 Eurex International Business Machines Equity F... 50092347
8 IBMDFc1 QUOTExEQUITY 21613372305 Euronext Amsterdam IBM Single Stock Dividend F... 260213021
9 IBMFc3 QUOTExEQUITY 21481053950 Eurex International Business Machines Equity F... 50092348

Close the session

session.close()

Learning materials

To learn more about the Refinitiv Data Library for Python just connect to the Refinitiv Developer Community. By registering and login to the Refinitiv Developer Community portal you will get free access to a number of learning materials like Quick Start guides, Tutorials, Documentation and much more.

Help and Support

If you have any questions regarding the API usage, please post them on the Refinitiv Data Q&A Forum. The Refinitiv Developer Community will be very pleased to help you.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

refinitiv-data-1.0.0b1.tar.gz (356.6 kB view hashes)

Uploaded Source

Built Distribution

refinitiv_data-1.0.0b1-py3-none-any.whl (574.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page