Currently showing posts tagged api

  • PyRFA 8.1.0 on PyPI

    Great news. Our PyRFA 8.1.0 and 7.7.0 (for 32bit support) are now available on PyPI and immediately supports Python 3.6  You are now able to install PyRFA using pip with:

    pip install pyrfa

    What's new in 8.1.0:

    • 17 March 2017
    • Supports Python3.6
    • Adds getClientSessions() for Interactive Provider
    • Adds getClientWatchList() for Interactive Provider
    • Automatically loads dictionaries from the installed package folder
    • Able to privately submitData to a specific session ID
    • Able to closeSubmit items for a specific session ID
    • Available from PyPI

    API guide is available on our GitHub page including example scripts.

  • PyRFA 8.0.1.0 Release

    In 8.0.1.0, PyRFA brings a new capability for market price subscription where it can invoke server-side field filtering upon subscription. The market data updates will contain only fields of interest. This is called "View." With this new feature, PyRFA aims to reduce bandwidth used in very volatile market data updates. Also, we have qualified our builds with Red Hat Enterprise Linux 7.

    What's new:

    • Supports FID filtering subscription with View
    • Updates RDMDictionary and enumtype.def
    • Compiled with RFA 8.0.1.L1
    • Qualified with RHEL7

    Downloads are available at https://github.com/devcartel/pyrfa.

  • PyRFA 8.0.0 Dropping Support for RHEL5 and 32-bit Systems

    Recent release of PyRFA 8.0.0 (and forward) has dropped support for 32-bit and RHEL5. It supports only 64-bit systems on both Windows and Linux. The reason to drop the support on 32-bit depends on Thomson Reuters RFA C++ libraries that we use to build PyRFA. And since Thomson Reuters has decided not to include the libraries, PyRFA is affected this way.

    Feature-wise, we will keep maintaining version 7.6.1 as it is the last version with 32-bit and RHEL5 support. All future bug fixes and enhancement made to 8.0.0 will also be ported back to 7.6.1.

    For this case, 7.6.1.3 releases also change the data output format into a pure dictionary just like in 8.0.0.

    Thanks for using PyRFA!

  • PyRFA 8.0.0 Data Output Change

    In PyRFA 8.0.0 onwards, we have changed data output from dispatchEventQueue() to contain only dictionary. This enables Python users to parse and use data more efficiently.

    In previous 7.6.0:

    ('NIP', 'EUR=', {'ASK': '0.999', 'ASK_TIME': '13:41:32:120', 'BID': '0.988', 'BID_NET_CH': '0.0041'})

    Now in 8.0.0:

    {'MTYPE':'IMAGE','RIC':'EUR=','SERVICE':'IDN_RDF_SDS','ASK':1.3712,'BID':1.3709}
  • Expanding Thomson Reuters Elektron Chain RICs with PyRFA

    We got an inquiry today regarding using our PyRFA to expand chain RICs. Here is the methods of expanding chain RICs that we delivered for a bank who used TREP-RT. Chains are comprised of RICs put in a FID LINK_ or LONGLINK divided into pages. Keep looking at NEXT_LR FID for the next chain RIC page and continue extracting actual RIC. Here are some Python code we used:

    def expandChainRIC(self, chainRIC):
            expanded = []
            done = False
            snapshot = self.snapshotRequest([chainRIC])
            while not done:
                if not snapshot:
                    break
                for i in ['LINK_1', 'LINK_2', 'LINK_3', 'LINK_4', 'LINK_5', 'LINK_6', 'LINK_7', 'LINK_8', 'LINK_9', 'LINK_10', 'LINK_11', 'LINK_12', 'LINK_13', 'LINK_14', 'LONGLINK1', 'LONGLINK2', 'LONGLINK3', 'LONGLINK4', 'LONGLINK5', 'LONGLINK6', 'LONGLINK7', 'LONGLINK8', 'LONGLINK9', 'LONGLINK10', 'LONGLINK11', 'LONGLINK12', 'LONGLINK13', 'LONGLINK14']:
                    if snapshot[0][2].has_key(i) and snapshot[0][2][i]:
                        expanded.append(snapshot[0][2][i])
                if snapshot[0][2].has_key('NEXT_LR') and snapshot[0][2]['NEXT_LR']:
                    snapshot = self.snapshotRequest([snapshot[0][2]['NEXT_LR']])
                elif snapshot[0][2].has_key('LONGNEXTLR') and snapshot[0][2]['LONGNEXTLR']:
                    snapshot = self.snapshotRequest([snapshot[0][2]['LONGNEXTLR']])
                else:
                    done = True
            # if chainRIC is not a chain, return itself back
            if not expanded:
                expanded.append(chainRIC)
            if self.debug:
                print "[debug] Expand chain " + chainRIC + " -> " + str(expanded)
            return expanded


    And

    def snapshotRequest(self, ricList):
            snaphots = ()
            self.pyrfa.log("Subscribing items: " + str(ricList) + " (total: " + str(len(ricList)) + " )")
            for ric in ricList:
                self.pyrfa.marketPriceRequest(ric)
            global end
            end = False
            t = threading.Timer(10, stop)
            t.start()
            imageReceived = 0
            while not end and imageReceived < len(ricList):
                images = self.pyrfa.dispatchEventQueue()
                if images:
                    for i in images:
                        if type(i[2]) is dict:
                            imageReceived += 1
                            snaphots += (i,)
                            t.cancel()
                            t = threading.Timer(10, stop)
                            t.start()
            self.pyrfa.log("Snapshots received: " + str(imageReceived))
            t.cancel()
            return snaphots
    
  • PyRFA for RHEL 6.3

    PyRFA is an alternative Python API for accessing Thomson Reuters real-time data feeds such as IDN, TS1 (time-series service), TREP-RT, RMDS or RDF-D from Thomson Reuters leveraging on OMM data model available in streaming or snapshot mode. Due to recent request from many buy-side/sell-side, brokers and banks around the world today DevCartel is pleased to announce the release of PyRFA v7.5.1.2 with support for Red Hat Enterprise Linux 6.3. PyRFA has extended its support to Red Hat 6.3 that comes with Python 2.6 as we see the needs from users to run financial Python applications on RHEL. So enjoy!

    See more at http://devcartel.com/pyrfa

  • PyRFA 7.5.1.1 Now with TS1 Timeseries

    One of new features in PyRFA 7.5.1.1 is ability to retrieve a full set of timeseries from Thomson Reuters TS1 service. PyRFA makes it unapologetically easy to request and decode TS1 in a few simple steps.

    Timeseries example script:

    import pyrfa
    p = pyrfa.Pyrfa()
    p.createConfigDb("./pyrfa.cfg")
    p.acquireSession("Session1")
    p.createOMMConsumer()
    p.login()
    p.directoryRequest()
    p.dictionaryRequest()
    p.setTimeSeriesPeriod("daily")
    p.setTimeSeriesMaxRecords(10)
    timeseries = p.getTimeSeries("CHK.N")
    print "\n########### CHK.N daily ###########"
    for record in timeseries:
    print record

    Output:

    ########### CHK.N daily  ###########
    DATE,CLOSE,OPEN,HIGH,LOW,VOLUME,VWAP
    2013/11/03,28.840,27.980,29.050,27.950,1998632.000,28.666
    2013/10/31,28.000,27.900,28.100,27.550,1027979.000,27.932
    2013/10/30,27.960,28.190,28.270,27.680,1345424.000,28.005
    2013/10/29,28.150,28.360,28.650,27.770,1370013.000,28.121
    2013/10/28,28.320,28.260,28.500,28.210,1246324.000,28.325
    2013/10/27,28.160,28.260,28.470,28.110,1328412.000,28.228
    2013/10/24,28.470,28.410,28.680,28.153,2462643.000,28.447
    2013/10/23,28.370,27.660,28.680,27.470,1773109.000,28.163
    ...
  • How to Save PyRFA Log

    Every time you run a PyRFA script, it will write a log file to a location specified by:

    \Logger\AppLogger\fileLoggerFilename = "./pyrfa.log"

    In the configuration. However, special options are allowed to append various unique prefix/suffix in the filename to avoid log file overwritten. Those options are:

    • {A} for process name
    • {P} for process ID
    • {T} for local 10-digit timestamp in UTC
    • {H} for hostname
    For example,
    \Logger\AppLogger\fileLoggerFilename = "./pyrfa.log.{T}"

    Will put a timestamp as a log file suffix and we will have a unique log file for every run.

  • PyRFA 7.4.1 Release

    We are pleased to announce that PyRFA 7.4.1 is now released to the public. PyRFA is for accessing market data from Thomson Reuters data feeds (RMDS or TREP-RT) from Python.

    Features:

    • subscription for MARKET_PRICE (level 1)
    • subscription for MARKET_BY_ORDER (order book)
    • subscription for MARKET_BY_PRICE (market depth)
    • snapshot request (no incremental updates)
    • dictionary download or use local files
    • directory request
    • symbol list request
    • custom domain MMT_HISTORY which can be used for intraday timeseries publishing
    • non-interactive provider for MARKET_PRICE, MARKET_BY_ORDER, MARKET_BY_PRICE, SYMBOLLIST, HISTORY
    • debug mode
    • logging
    • low-latency mode
    • subscription outbound NIC binding
    • example scripts

    Find out more at http://devcartel.com/pyrfa

  • TclRFA 7.4.1 Release

    We are pleased to announce that TclRFA 7.4.1 is now released to the public. TclRFA is for accessing market data from Thomson Reuters data feeds (RMDS or TREP-RT) from Tcl scripting language.

    Features:

    • subscription for MARKET_PRICE (level 1)
    • subscription for MARKET_BY_ORDER (order book)
    • subscription for MARKET_BY_PRICE (market depth)
    • includes orderbook, depth ranker in utils folder
    • snapshot request (no incremental updates)
    • dictionary download or use local files
    • directory request
    • symbol list request
    • timeseries request and decoder for IDN TS1
    • custom domain MMT_HISTORY which can be used for intraday timeseries publishing
    • non-interactive provider for MARKET_PRICE, MARKET_BY_ORDER, MARKET_BY_PRICE, SYMBOLLIST, HISTORY
    • debug mode
    • logging
    • low-latency mode
    • subscription outbound NIC binding
    • example scripts

    Find out more at http://devcartel.com/tclrfa