PyRFA
PyRFA is a Python API for accessing Refinitiv (Thomson Reuters) market data feeds known as Elektron,
Thomson Reuter Enterprise Platform for Real-time (TREP-RT) or legacy RMDS. It supports subscription
and publication of market data using OMM data message model.
Features
- Subscription for
MARKET_PRICE
(level 1) - Subscription for
MARKET_BY_ORDER
(order book) - Subscription for
MARKET_BY_PRICE
(market depth) - Snapshot/streaming request
- Multiple service subscription
- Pause and resume subscription
- OMM Posting
- View
- Dictionary download or use local files
- Directory request
- Symbol list request
- Time-series request and decoder for IDN TS1
- Custom domain
MMT_HISTORY
which can be used for intraday timeseries publishing - Non-interactive provider (full-cached) for
MARKET_PRICE
, MARKET_BY_ORDER
, MARKET_BY_PRICE
, SYMBOLLIST
, HISTORY
domains - Interactive provider for
MARKET_PRICE
domain - Debug mode
- Logging
- Low-latency mode
- Subscription outbound NIC binding
Installation
PyRFA supports both Windows and Linux platforms. Simply install from PyPI using pip
:
> pip install pyrfa
Windows users might need to install Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) or (x86).
Platform Availability
Windows
Version | Release Date | 64bit-Windows, Python 3.7 | 64bit-Windows, Python 3.6 | 64bit-Windows, Python 3.5 | 64bit-Windows, Python 3.4 | 64bit-Windows, Python 2.7 | 64bit-Windows, Python 2.6 | 32bit-Windows, Python 2.7 | 32bit-Windows, Python 2.6 |
---|
8.5.3 | 9 Nov 18 | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | | |
7.7.0 | 17 Mar 17 | | | | | | | ⚬ | ⚬ |
Linux
Version | Release Date | 64bit-Linux, Python 3.7 | 64bit-Linux, Python 3.6 | 64bit-Linux, Python 3.5 | 64bit-Linux, Python 3.4 | 64bit-Linux/RHEL7, Python 2.7 | 64bit-Linux/RHEL6, Python 2.6 |
---|
8.5.3 | 9 Nov 18 | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ |
Example
import pyrfa
p = pyrfa.Pyrfa()
p.createConfigDb("./pyrfa.cfg")
p.acquireSession("Session1")
p.createOMMConsumer()
p.login()
p.directoryRequest()
p.dictionaryRequest()
p.marketPriceRequest("JPY=,EUR=")
end = False
while not end:
try:
for data in p.dispatchEventQueue(10):
print(data)
except KeyboardInterrupt:
end = True
Output:
...
{'MTYPE': 'UPDATE', 'RIC': 'JPY=', 'SERVICE': 'IDN_RDF_SDS', 'IRGPRC': 0.24}
{'MTYPE': 'UPDATE', 'ASIA_NETCH': 0.7, 'SERVICE': 'IDN_RDF_SDS', 'RIC': 'JPY='}
{'MTYPE': 'UPDATE', 'BID_NET_CH': 0.26, 'RIC': 'JPY=', 'SERVICE': 'IDN_RDF_SDS'}
...
Support
Available support including API documentation, Replay Service guide, changelog, issue tracker: