- Interface to the Market data vendor (RMDS, Bloomberg, etc.)
- Convert their data model into our own
- Data fields
- Image vs Refresh messages
- Market by order, by depth
- Outputs tick by tick in unified data model
- Specs the data model
- Map between input data model into new one
- Implement bridge
- Test
- Take input from various data bridges
- Merge multiple sources
- Store raw data stream
- Create metadata and compress raw data
- Write to disk
- Push real time data out to message bus
- Design data workflow
- Design raw data storage
- Analyze query pattern to make optimal storage and compression strategy
- Investigate best storage system that provides fault tolerance
- Convert from internal data model to output data model
- Implement writers
- Test
- Read tick by tick data and produce min/bar, daily/bar
- Other synthetic metrics can be added: moving average, technical analysis indicators, etc.
- Run as map/reduce task
- Spec tasks
- Implement job
- Setup cluster
- Test
- Subscriptions
- Non RT: Read from storage after job completes
- RT: Read from market data bus
- Interpret and route requests based on their type
- Gather results and return with identical API
- Write TCP interface
- Write C++ interface
- Write Python on top of C++ interface
- Client to Query Engine
- Client to Cluster monitor
- Dashboard (HTML5)
- Identify useful metrics
- Display
- Provide query/response panels
- Hardware
- 3 mid-size machines
- Market data connectivity
- Additional support for non market data (orders, etc.)
- Additional market data providers
- Elastic deployment