Financial Data Feeds

Fahim Chandurwala, Wolfram Research

Join the Conversation #WolframTechConf

Wolfram Finance Platform

Wolfram Research Inc.

Current Functionality

Bloomberg Terminal

CUDA Enhanced Computation Functions

Upcoming Data Feeds

Bloomberg Terminal

Bloomberg Data License*

Reuters*

Targeted Audience

Financial Institutions (Banks, Investment Firms)

Academics (Finance, Applied Math, Statistics)

Extra Resources

Premium Technical Support

http://www.wolfram.com/finance-platform/

Contents

Current Interface

New Data Feeds

EntityValue Interface

EntityDeploy

Asynchronous Execution

Compatibility

Current Interface

Connect

Needs["BloombergLink`"]

MarketDataConnect[BloombergDesktopAPISource]

Data

Snapshot

MarketDataGet["Snapshot","Instruments"->{"IBM Equity","AAPL Equity"},"Fields"->{"CUR_MKT_CAP","LAST_PRICE"}]

Grid[%]

Historical Data

MarketDataGet["Historical",
"Instruments"->{"AAPL Equity"},"Fields"->{"VOLUME","LAST_PRICE"},"DateRange"->{{2016,1,1},{2016,1,15}}]

Real-Time

subscription=MarketDataSubscribe["MarketDataSubscription",
"EventDelivery"->"PassThrough",
"Instrument"->"EURUSD Curncy",
"TriggerFields"->{"BID","ASK","LAST_PRICE"}]

MarketDataSubscriptionStart[subscription]

MarketDataGet[subscription][1,"PRICE_LAST_TIME_RT"]

New Data Feeds

Bloomberg Data License

Inclusive Licensing Terms for Companies

Unlike Bloomberg Terminal

Company Wide Access

Wolfram Private Cloud Compatibility

Calendar Data

HTTP Protocol

Not Real-Time

Reuters Ultra Performance API (UPA)

Historical Data

Snapshot Requests

Real Time Access

Data offerings are similar to that of Bloomberg

EntityValue Interface

EntityValue

We use existing EntityValue framework to query market data. EntityValue was introduced in V10, 2014.

Integration with Quantities & TimeSeries

Last Price

EntityValue[
Entity["BloombergTerminal","MSFT US Equity"],
EntityProperty["BloombergTerminal","PX_LAST"]
]

Single Instrument and Multiple Fields

EntityValue[
Entity["BloombergTerminal","AAPL US Equity"],
{
EntityProperty["BloombergTerminal","PX_LAST"],
EntityProperty["BloombergTerminal","ASK"]
}
]

TimeSeries

EntityValue[
{
Entity["BloombergTerminal","AAPL US Equity"],
Entity["BloombergTerminal","MSFT US Equity"]
},
EntityProperty["BloombergTerminal","PX_LAST",{"Date"->Interval[{DateObject[{2016}],DateObject[{2016,2,1}]}]}]
]

DateListPlot[%]

Annotations

EntityAssociation

EntityValue[
{
Entity["BloombergTerminal","MSFT US Equity"],
Entity["BloombergTerminal","VOD LN Equity"]
},
{
EntityProperty["BloombergTerminal","PX_LAST"],
EntityProperty["BloombergTerminal","ASK"]
},
"EntityPropertyAssociation"]

Dataset[%]

PropertyEntityAssociation

EntityValue[
{
Entity["BloombergTerminal","MSFT US Equity"],
Entity["BloombergTerminal","VOD LN Equity"]
}
,
{
EntityProperty["BloombergTerminal","PX_LAST"],
EntityProperty["BloombergTerminal","ASK"]
}
,
"PropertyEntityAssociation"
]

Dataset[%]

Reuters Ultra Performance API

Integration with Quantities

EntityValue[
Entity["ReutersUPA","MSFT.OQ"]
,
EntityProperty["ReutersUPA","ASK"]
]

Instruments and Fields

EntityValue[
{
Entity["ReutersUPA","MSFT.OQ"]
,
Entity["ReutersUPA","VOD.L"]
}
,
{
EntityProperty["ReutersUPA","BID"]
,
EntityProperty["ReutersUPA","ASK"]
}
]

AsynchronousExecute

AsynchronousExecute[
EntityValue[
Entity["ReutersUPA","MSFT.OQ"]
,
EntityProperty["ReutersUPA","ASK"]
]
,
HandlerFunctions-><|"DataReceived"->Print|>
,
HandlerFunctionsKeys->{"Data"}
]

AsynchronousExecute: Dynamic DateListPlot

A more elaborate example.

Handler Function

ask={};
bid={};
collectDataReceived[data_,field_]:=
Which[
field==="ASK",
AppendTo[ask,{Now,data["Data"]}];
,
field==="BID",
AppendTo[bid,{Now,data["Data"]}];
]

Stream BID Price

f1="BID";
AsynchronousExecute[
EntityValue[Entity["ReutersUPA","VOD.L"],EntityProperty["ReutersUPA",f1]]
,
HandlerFunctions-><|"DataReceived"->(collectDataReceived[#,f1]&)|>,HandlerFunctionsKeys->{"Data"}
,
"Continuous"->True]

Stream ASK Price

f2="ASK";
AsynchronousExecute[
EntityValue[Entity["ReutersUPA","VOD.L"],EntityProperty["ReutersUPA",f2]]
,
HandlerFunctions-><|"DataReceived"->(collectDataReceived[#,f2]&)|>,HandlerFunctionsKeys->{"Data"}
,
"Continuous"->True]

Dynamic Plot

Dynamic[DateListPlot[{bid,ask},PlotLegends->{f1,f2}]]

Asynchronous Execution

Case Study: Bloomberg Data License API

AbsoluteTiming[
EntityValue[
Entity["BloombergDataLicense","MSFT US Equity"],
EntityProperty["BloombergDataLicense","PX_LAST",{"Date"->Interval[{DateObject[{2016}],Today}]}]
]
]

Code

Handler Function

ds=Null;
makedataset[data_]:=(ds=Dataset[data])

AsynchronousEcecute

AsynchronousExecute[
EntityValue[
Entity["BloombergDataLicense","MSFT US Equity"],
EntityProperty["BloombergDataLicense","PX_LAST",{"Date"->Interval[{DateObject[{2016}],Today}]}]
]
,
HandlerFunctions-><|"ResponseReceived"->makedataset|>,
HandlerFunctionsKeys->{"ResponseData","TaskStatus","Data"}
]

Monitor Output

Dynamic[ds]

ds["ResponseData"]

DateListPlot

DateListPlot[ds["Data"]]

Inner Workings of Bloomberg Data License API

EntityDeploy

Code

EntityDeploy[
ScheduledTask[
EntityValue[
Entity["BloombergDataLicense","MSFT US Equity"],
EntityProperty["BloombergDataLicense","PX_LAST",{"Date"->Interval[{DateObject[{2016}],Today}]}]
],
"Daily"
]
,
HandlerFunctions-><|"ResponseReceived"->Print|>,
HandlerFunctionsKeys->{"TaskStatus","Data","ResponseData"}
]

Retrieve Schedule

RetrieveSchedule[]

Related Talks

Time Series Processing

Gosia Konwerska

Audio Analysis

Carlo Giacometti

What' s New in Probability & Statistics

Hsien - Ching Kao

Connecting Excel with Wolfram Enterprise Private Cloud

Anthony Zupnik
4 : 30 PM - 5 : 00 PM
Badger

Custom Entities

Toni Schindler
Oct 21, 2016
10 : 00 AM - 10 : 30 AM
Little Chief