PyRFA is a Python API for accessing 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.
- 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_HISTORYwhich can be used for intraday timeseries publishing - Non-interactive provider (full-cached) for 
MARKET_PRICE,MARKET_BY_ORDER,MARKET_BY_PRICE,SYMBOLLIST,HISTORYdomains - Interactive provider for 
MARKET_PRICEdomain - Debug mode
 - Logging
 - Low-latency mode
 - Subscription outbound NIC binding
 
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).
| 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 | 19 Nov 18 | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | ||
| 7.7.0 | 17 Mar 17 | ⚬ | ⚬ | 
| 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 | 19 Nov 18 | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | ⚬ | 
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 = TrueOutput:
...
{'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'}
...Available support including API documentation, Replay Service guide, changelog, issue tracker:
- Community support & issue tracker - GitHub
 - PyRFA Enterprise Support
 
