The open-source Coherent Datafeed: (Thomson Reuters) Refinitiv Elektron Edition middleware for Java and for the R Project for Statistical Computing version 1.0.9-RELEASE delivers new features and benefits for ad hoc reporting and analysis purposes — see below for more details.

Home | Bitbucket | Example | Javadocs

Download the R Package for the Refinitiv (formerly Thomson Reuters) Enterprise Platform

RTN.N BA.N VZ.N DBKGn.DE CS.N
RTN.N RPackage Yahoo Finance Comparison BA.N R Package Yahoo Finance Comparison VZ.N R Package Yahoo Finance Comparison Deutsche Bank (DBKGn.DE) Yahoo Finance Comparison CS.N YFinance Java Comparison

For R Project Users

The R Package offers functions for querying historic timeseries and real-time market price data from the Thomson Reuters Enterprise Platform.

TRI.N MSFT.O GOOG.O AMZN.O
TRI.N Screen Capture MSFT.O Screen Capture GOOG.O Screen Capture AMZN.O R Package / Yahoo Finance Comparison
options(
    CDATAFEED_JARS=list(
        "C:/.../rfa-8.0.1.E3.jar"
    )
)
install.packages(
    "C:/.../cdatafeedtrep_1.0.9.tar.gz",
    repos=NULL,
    type="source",
    INSTALL_opts=c("--no-multiarch")
)

Historic Time Series Example

library(cdatafeedtrep)
Initialize()
cdatafeedtrep::Login(Sys.getenv(DACS_ID))
result <- GetTimeSeriesDataFor(symbol = "GOOG.O", period="monthly")
tempDF <- data.frame(DATE=unlist(result$DATE),OPEN=unlist(result$OPEN))
tempDF <- tempDF[order(tempDF$DATE),]
tempDF$DATE <- as.POSIXct(as.numeric(substr(x = as.character(tempDF$DATE), start=1, stop=10)), origin="1970-01-01", tz="GMT")
tempDF$OPEN <- as.numeric(as.character(tempDF$OPEN))
plot(tempDF, type="l")

Market Price Example

cdatafeedtrep::QueryMarketPrice(symbols = c("MSFT.O", "ORCL.O", "GOOG.O", "ILMN.O", "TRI.N"))

while (TRUE) {
    nextUpdate <- cdatafeedtrep::GetNextMarketPriceUpdate()
    print(nextUpdate)
}

Market By Price Example

Note that for the following example, nextUpdate is a reference to a Java object.

cdatafeedtrep::QueryMarketByPrice(symbols = c("MSFT.O", "ORCL.O", "GOOG.O", "ILMN.O", "TRI.N", "DBSM.SI"))

while (TRUE) {
    nextUpdate <- cdatafeedtrep::GetNextMarketByPriceUpdateAsJavaObject()
    print(nextUpdate)
}

Market By Order Example

cdatafeedtrep::QueryMarketByOrder(symbols = c("MSFT.O", "ORCL.O", "GOOG.O", "ILMN.O", "TRI.N", "DBSM.SI"))

while (TRUE) {
    nextUpdate <- cdatafeedtrep::GetNextMarketByOrderUpdateAsJavaObject()
    print(nextUpdate)
}

Market Maker Example

cdatafeedtrep::QueryMarketMaker(symbols = c("MSFT.O", "ORCL.O", "GOOG.O", "ILMN.O", "TRI.N"))

while (TRUE) {
    nextUpdate <- cdatafeedtrep::GetNextMarketMakerUpdateAsJavaObject()
    print(nextUpdate)
}

Performance Testing

The following table contains the JConsole performance metrics collected during ~19 hours of execution time for the example R script below.

Overview VM Summary Memory Threads Messages Added Classes
RPackage Overview RPackage VM Summary RPackage Memory RPackage Threads RPackage MBeans RPackage Classes

R Package Example Script With 100 RICs

library(cdatafeedtrep)
Initialize()
cdatafeedtrep::Login("redacted")

rics <- c(
    "LCOc1",
    "GOOG.O",
    "MSFT.O",
    "ODFL.OQ",
    "LKQ.OQ",
    "MDVN.OQ",
    "BFb.N",
    "KO.N",
    ".TRXFLDAFPUM11",
    "SWM.N",
    "ERICb.F",
    "ERICb.DE",
    "ERICb.D",
    "ERICb.BE",
    "ERICa.ST",
    "ERICa.F",
    "ERICa.DE",
    "ERICa.BE",
    "ERIC.PH",
    "ERIC.P",
    "ERIC.OQ",
    "ERIC.MW",
    "ERIC.DF",
    "ERIC.C",
    "ERIC.A",
    "DRICqf.BO",
    "BRIC.S",
    "BRIC.MI",
    "BRIC.AS",
    "ARIC.F",
    ".VBRICUTR",
    "ERIC.O",
    "RIC.A",
    "ARIC.BO",
    "BRIC.L",
    "DRIC.BO",
    "AAT.N",
    "ABX.N",
    "ACAS.O",
    "ACC.N",
    "ADGE.A",
    "AEL.N",
    "AEO.N",
    "AEP.N",
    "AFA.N",
    "AFG.N",
    "AFW.N",
    "AGM.N",
    "AGMa.N",
    "AGNC.O",
    "AGNCP.O",
    "AIG.N",
    "ALN.A",
    "AM.N",
    "AMID.N",
    "AMNB.O",
    "AMOV.O",
    "AMRB.O",
    "AMS.A",
    "AMSC.O",
    "AMSWA.O",
    "AMT.N",
    "AMWD.O",
    "AMX.N",
    "ANAT.O",
    "APEI.O",
    "ARC.N",
    "ARII.O",
    "ANAT.O",
    "APEI.O",
    "ARC.N",
    "ARII.O",
    "ARL.N",
    "ASEI.O",
    "ATAX.O",
    "AVD.N",
    ".DAXBRIC",
    ".DAXBRICGB",
    ".DAXBRICGBN",
    ".DAXBRICGBP",
    ".TRXFLDAFPU",
    ".TRXFLDAFPUMAT",
    "ACIDq.L",
    "ALU.TI",
    "A8H.F",
    "A5J.F",
    "ARNR.L",
    "BZR.BE",
    "ABCA.L",
    "CXS.F",
    "CAGR.MI",
    "ACCI.L",
    "ATHCO.CY",
    "QA9.F",
    "ECT.AS",
    "ACTG.CY",
    "AA4.F",
    "AA4.MI",
    "ADML.L",
    "ALLD.F"
)

Query(symbols = rics)

while (TRUE) {
    nextUpdate <- cdatafeedtrep::GetNextUpdate()
}

For Java Developers

Maven Coordinates

Coherent Datafeed: Thomson Reuters Enterprise Platform on Maven Central

Group: com.coherentlogic.coherent.datafeed.client
Modules:

coherent-datafeed-client-{core, example}
coherent-datafeed-{db-int, jms-int, spark-int (pending)}

Version: 1.0.9-RELEASE

MSFT.O & AMZN.O GBP/USD Spot Rate
Elektron Time Series Example GBP/USD Spot Rate

Version 1.0.9 includes implementations for the following services:

– Authentication
– Directory
– Dictionary
– Market Price
– Market by Order
– Market by Price
– Market Maker
– Historic Time Series Data

Example

A complete Elektron QueryBuilder example application is available on Bitbucket.

Performance Testing

Please find an example Spring Boot application which was used for the performance test below.

Note that when running the example application, an RFA session entry with the name “mySession” must exist in your configuration OR you must override this value — see external RFA configuration file to review what we use. You may override this value using the following VM parameter: -DCDATAFEED_SESSION_NAME=”yourSession”

Overview Threads VM Summary Memory
CDTREP V 1.0.7 jconsole-overview CDTREP V 1.0.7 jconsole-threads CDTREP V 1.0.7 jconsole-vm-summary CDTREP V 1.0.7 jconsole-memory

The framework includes the JAMon performance interceptor and can be configured to track performance statistics. In the examples below we have the performance interceptor applied to the EventDrivenEndpoint’s processEvent method, which is the point by which the RFA API connects with our framework in order to process incoming messages.

JAMon Label=performanceMonitorService, Units=ms.: (LastValue=2.0, Hits=3606222.0, Avg=1.0194796659773027, Total=3676470.0, Min=0.0, Max=6739.0, Active=0.0, Avg Active=1.0, Max Active=1.0, First Access=Fri Aug 05 09:19:38 EDT 2016, Last Access=Fri Aug 05 15:55:49 EDT 2016)

These tests require Java 8 and were run on a Dell Precision T7500 with an Intel Xeon CPU (E5645 @ 2.40GHz) with 24GB of memory and Windows 7 64-bit operating system.

If you have questions about this product or need more information, feel free to send us an email.

Dependencies

The RFA version 8.0.1.E3.all dependency, is not open-source and must be acquired from Thomson Reuters directly.

Maven users can install the dependency as follows:

mvn install:install-file -Dfile=./rfa.jar -DgroupId=com.reuters -DartifactId=rfa -Dversion=8.0.1.E3.all -Dpackaging=jar

This dependency is required for both the R Package and the Java API.

Be Advised

This framework uses the Coherent Data Adapter: Google Analytics Measurement API Client (GAMA) to track framework usage information. As this software is open-source, you are welcomed to review our use of GAMA — please see the class named com.coherentlogic.coherent.datafeed.services.GoogleAnalyticsMeasurementService and feel free to send us an email if you have further questions.

We do NOT recommend disabling this feature however we offer the option below, just add the following VM parameter and tracking will be disabled:

-DGOOGLE_ANALYTICS_TRACKING=false

See Also