Market data implementation

As we know OG needs a lot of data to work properly, I wonder where I can find more detailed information on these data, such as last price, historical data, price, etc…


Do you mean:

  1. How do I know what market data items I actually need?
    If this is what you’re asking, when you build a view it will output a list of the market data requirements to the console. This list will depend on the calculations you’re asking for.


  1. How do I actually get the market data that I need.
    There are a number of third party market data providers: Bloomberg, Reuters, Activ Financial, and others. We have pre-built adapters for the three that I’ve mentioned, which are available under commercial contract. However, it’s important to understand that we are not a data vendor. We do not sell you the data, we simply supply an adapter to plug into an existing market data vendor’s systems.

If you’re looking for free data, there isn’t very much around, and the ‘free’ data that is around is generally only free for certain types of use, and that precludes us from redistributing it.

I mean what market data items I need, I’ll hire a developer to implement Activ Financial market data.
I have tried to acquire commercial adapter, no success.
Thanks Jim

What you mean ‘when you build a view it will output a list of the market data requirements to the console’?Console?

At the moment, there are three ways to find the exhaustive list of market data required:

  1. Go through the dependency graph analyser tool in the web ui and look at the leaves for each calculation. This is possible, but rather manual.
  2. Turn on an option in ViewDefinitionCompiler, there’s a boolean called OUTPUT_LIVE_DATA_REQUIREMENTS. If you set that the true, then when you’re running the engine, it’ll spit out all the requirements for the view to the console if you run the engine in debug mode (using e.g. ant jetty-debug). Even if you don’t turn this option on, the engine will also output any missing pieces of data by default.
  3. We have a .NET app for managing market data snapshots. We’ll be releasing it under non-commercial/evaluation license as a binary only. This will let you see all the market data requirements divided up by use (e.g. yield curves, volatility surfaces, volatility cubes and point data like FX rates, Equity prices, etc).

Given what you’ve said, I’ve created an issue in JIRA to address the issue as we clearly need some support for this in the web UI.

Remember that as well as live data, you’ll need to populate the Security Master with the appropriate ‘semi-static’ data - e.g. Equity stock definitions, Futures definition, any OTC securities you’ve traded etc. The examples now contain some fake Security Master data organised into portfolios. What you’ll need will depend on what you want to trade.



And historical data, does it need to be populate or it will load from AbstractLiveDataServer(implementation)?

No, historical data is separate from live data - you will need to load/update the historical data from an appropriate source. Most people schedule a nightly process that downloads and processes all the close data from that day a few hours after the markets close. How exactly you do that depends on your data provider.

Hi Jim,

Let me know if I got it, MarketDataRequirementNames is all should come from market data(live data server).Right?

MarketDataRequirementNames contains the data provider independent names for standard tick data types - it implies that the value has been normalised if necessary. For example, in Bloomberg, Market_Value would map to PX_LAST.


I am writing a custom market data server, am doubt about subscription and others:
“This may be called with bulk subscription requests, hence the collection of identifier values. It should return a map from Identifier value to an internal handle”.
What it means with “handle”?
I see SimulatedMarketDataGenerator uses MarketDataInjector, don’t I need to use it on Marketdata server implementation?


The “handle” is an object that can be used to identify that specific subscription later. It would typically be an object from the underlying data provider’s API. It is stored in com.opengamma.livedata.server.Subscription and used for resubscribing or unsubscribing.