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

New and Updated Data Feeds

Bloomberg Terminal

Bloomberg Data License

Reuters

Targeted Audience

Financial Institutions (Banks, Investment Firms)

Academics (Finance, Applied Math, Statistics, DataScience)

Extra Resources

Premium Technical Support

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

Contents

Current Interface

Data Feeds

Entity Framework

EntityValue Interface

Authentication

Task Framework

ScheduledSubmit*

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"->{{2017,1,1},{2017,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"]//Dynamic

New Data Feeds

Bloomberg Data License

Inclusive Licensing Terms for Companies

Profuse data

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

Bloomberg Terminal

Historical Data

Snapshot Requests

Real Time Access

Entity Framework

Examples

Take[Entity["Country","Norway"]["Properties"],5]

Entity["Country","Norway"]["Population"]

ts = Entity["Country","Norway"]["Population","Date"->Interval[{DateObject[{1970}],DateObject[{2017}]}]]

DateListPlot[ts]

properties = Entity["Financial","NASDAQ:MSFT"]["Properties"]

Length[properties]

Entity["Financial","NASDAQ:MSFT"]["Last"]

tsMSFT = Entity["Financial","NASDAQ:MSFT"]["Last","Date"->Interval[{DateObject[{2017}],Today}]]

tsAAPL = Entity["Financial","NASDAQ:AAPL"]["Last","Date"->Interval[{DateObject[{2017}],Today}]]

DateListPlot[{tsMSFT,tsAAPL},PlotLegends->{"MSFT","AAPL"}]

qarr=tsAAPL["Values"]

qarr[[1]]

Custom Entities

foofields = {"BID","ASK","PRICE","VOLUME"}

es=EntityStore[
"fooService"->
<|
"EntityValidationFunction"->Function[True],
"Properties"-><|
Table[
Sequence@@{
p-><|
"Label"->p,
"DefaultFunction"->With[{p1=p},Function[{name},fetchData[CanonicalName[name],p1]]]
|>
,
{p,"Date"->_}->
<|
"DefaultFunction"->With[{p1=p},Function[{ent,qual},fetchData[CanonicalName[ent],p1,qual["Date"]]]]
|>
},
{p,foofields}
]|>
|>]

PrependTo[$EntityStores,es];

Entity["fooService","foo"]["Properties"]

Entity["fooService","foo"]["ASK"]

Entity["fooService","foo"]["ASK","Date"->Interval[{DatePlus[Today,-14],Today}]]

Entity["fooService","foo"]["ASKME"]

EntityValue[{Entity["fooService","foo"],Entity["fooService","coo"]},{EntityProperty["fooService","ASK"],EntityProperty["fooService","BID"]},"PropertyEntityAssociation"]

EntityValue Interface

Integration with Quantities & TimeSeries

Last Price

Entity["ReutersETA","VOD.L"]["TRDPRC_1"]

Single Instrument and Multiple Fields

Entity["ReutersETA","AAPL.O"][{"BID","ASK"}]

TimeSeries

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

DateListPlot[%]

Annotations

EntityAssociation

EntityValue[
{
Entity["ReutersETA","MSFT.O"],
Entity["ReutersETA","VOD.L"]
},
{
EntityProperty["ReutersETA","BID"],
EntityProperty["ReutersETA","ASK"]
},
"EntityPropertyAssociation"]

Dataset[%]

PropertyEntityAssociation

s="BloombergTerminal";
interval=Interval[{DateObject[{2017}],Today}];

EntityValue[
{
Entity[s,"MSFT US Equity"],
Entity[s,"VOD LN Equity"]
}
,
{
EntityProperty[s,"PX_LAST",{"Date"->interval}],
EntityProperty[s,"ASK",{"Date"->interval}]
}
,
"PropertyEntityAssociation"
]

Task Framework

New in 11.2.
Hide Latency.
Kernel is not stuck in an evaluation.

TaskObject

URLSubmit["https://www.wolfram.com",HandlerFunctions-><|"HeadersReceived"->Print|>]

Clear[status]

URLSubmit["https://www.wolfram.com",HandlerFunctions-><|"HeadersReceived"->Function[{result},status=result["StatusCode"]]|>,HandlerFunctionsKeys->{"StatusCode"}]

Dynamic[status]

start=AbsoluteTime[];
SessionSubmit[
start=AbsoluteTime[];
Pause[5];
,
HandlerFunctions-><|"TaskStatusChanged"->(Print["Task "<>#TaskStatus<>", dt: " <> ToString@  (AbsoluteTime[]-start)<>"s"]&)|>
]

Authentication

Different forms authentications are now supported.
Client Certificate authentication is a requirement for services like Bloomberg Data License.

Client Certificate (Bloomberg DataLicense)

ScheduledSubmit*

New functionality
Built on Task Framework

Reuters ETA

ScheduledServiceSubmit[
o,
"Lookup",
{
"Name"->"VOD.L",
"Property"->"QUOTIM_MS"
},
HandlerFunctions->
<|
"ResultReceived"->(Print[Entity[#Result["Service"],#Result["Name"]][#Result["Property"]]]&)
|>
,
"Schedule"->"Continuous"
]

Bloomberg Data License API

Consider the following:

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

ScheduledServiceSubmit runs in the background, and kernel is still usable.

start=AbsoluteTime[];
ScheduledServiceSubmit[
"BloombergDataLicense",
"CompanyData",
{
"Name"->{"AAPL US Equity"},
"Property"->{"COMPANY_ADDRESS"}
},
HandlerFunctions-><|
"TaskStatusChanged"->(Print["Task status: ",{#TaskStatus,AbsoluteTime[]-start}]&),
"ResultReceived"->Print
|>,
HandlerFunctionsKeys->{
"TaskStatus",
"EvaluationResult"
},
"Schedule"->"OneShot"
]

ScheduledServiceSubmit[
"BloombergDataLicense",
"TickData",
{
"Name"->{"AAPL US Equity"}
},
HandlerFunctions-><|
"TaskStatusChanged"->(Print["Task status: ",#TaskStatus]&),
"ResultReceived"->(Set[tickdata,#EvaluationResult]&)
|>,
HandlerFunctionsKeys->{
"TaskStatus",
"EvaluationResult"
},
"Schedule"->"OneShot"
]

Column[{DateListPlot[tickdata["Value"][[1]]["Path",1],PlotRange->Full],DateListPlot[tickdata["Value"][[1]]["Path",2],PlotRange->Full]}]

Talks

Wolfram Cloud Connector for Excel
Thursday, October 19 2017 8:30 AM

Anthony Zupnik

Parallelizing NDSolve
Thursday, October 19 2017 10:30 AM

Mark Sofroniou

Wolfram Compiler Advances
Friday, October 20 2017 2:00 PM

Abdul Dakkak

Spatial Point Data Analysis
Friday, October 20 2017 2:30 PM

Gosia Konwerska