Coder Social home page Coder Social logo

helix's People

Contributors

giuseppecalderaro avatar jvirtanen avatar penberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

helix's Issues

libuv version?

Which version of libuv does Helix require? I have libuv 1.6.1 and its API is incompatible with the API Helix uses.

variable decimal conversion

a lot of protocols has decimal conversion factor other than ITCH's 1e-4, for example MDP3 has a factor 1e-7. some protocols has variable (by instrument) factor.

support negative prices

order book / order should be able to hold negative price. NASDAQ TV does not have this but a lot of derivative exchanges do

order - extra info

we need to add the following to the order:

  • timestamp
  • priority_id (uint64_t) - sometimes it's = timestamp, some venues assign it differently. for ITCH it's a copy of timestamp
  • flags - for example if we know that it's ours order we can set FLAG_OWN or FLAG_IMPLIED
  • filled_quantity - for partially filled orders it may be relevant to know
  • user_data - opaque pointer

Displaying prices and sizes in tools

helix-trace assumes that prices have a scaling factor of 10000 and two decimal digits and that sizes have a scaling factor of 1 and no decimal digits. This works for Nasdaq and Parity until 0.6.0, but Parity 0.7.0 introduces support for configurable number of decimal digits for both prices and sizes.

I'm working on a patch to update the Parity PMD support to Parity 0.7.0. What's your preference for displaying prices and sizes in helix-trace? I can think of two options:

  • display the values as-they-are without scaling, or

  • add command line options to specify the number of decimal digits for prices and sizes.

trade size does not make sense

i've added some statistics printing to helix-trace. seems like the trade size is too high, could you please have a look?

volume (mio): 10433240092.4563, notional (mio): 2085880461126.7920

unordered_map & map usage

i think unordered_map is rather slow thing. can we consider something else? like own fixed size hash map? also you want to NOT resize at all cost

tool - resample ITCH to BBO file

one of my most important applications to decent ITCH parser would be resampling data files into BBO (only best bid price, total size, # of orders, best ask, total size, # of orders) format. plus trades.

the output format would be simple fixed offsets with timestamp, current bid & ask, order book id in case of new quote. and timestamp, price, aggressor, size of a trade.

Timestamp unit is not standardized

The unit of timestamps is not standardized across the API. For example, the feed handler API returns milliseconds for Nasdaq Nordic ITCH but nanoseconds for the US ITCH variant.

exceptions / throw

when you start a trading system in the middle of a day (it's often needed) history of orders is not available. therefore there is 100% chance of getting a lot of "invalid_argument(string("invalid order id: ") + to_string(order_id))" exceptions (hundreds).

as you probably know exceptions takes a lot of time to process in C++ unfortunately. i believe we should get rid of all the "throw" clauses.

Memory Usage

Great tool, thanks so much for sharing!
I am running helix-trace using the following command line:

./helix-trace -i /media/sf_data/ITCH5.0/08302017.NASDAQ_ITCH50 -s AAPL -P nasdaq-binaryfile-itch50 -f csv -o AAPL.csv

08302017.NASDAQ_ITCH50 is downloaded from ftp://emi.nasdaq.com/ITCH/ and is roughly 5.4gb

When I run the tool, it steadily uses more and more memory, until it crashes (I only have 4gb of memory). I am running using Fedora 26. Any ideas what is going on? Does helix not delete orders after they are executed or cancelled?

thanks
Nick

ob callback filters

most of orders are of no interest to the user. i'd be interested in something what changes TOB (best bid / offer) only.

could you please create the following filter levels:

  • all events
  • only TOB (new price or total size change)
  • TOB on new price or size changed comparing to previous by +/- N%
  • only TOB with new price

maybe it'd be easier to create two kind of filters - by price and by size or something along these lines

better ob perf tests

current performance test assumes constant price. therefore multiple price_levels are not used

Unify order book event and trade event callbacks

Currently, we have a separate callback for order book events and trades. This is a problematic API because a trade event obviously has an impact on the order book but it's impossible to tell whether a price level size changed because of an execution or an cancellation. Trade event callbacks, on the other hand, are invoked after order book has been updated which makes it difficult to see what the order book state was when the trade occurred.

The issue can be fixed by unifying the order book event and trade event callbacks into one callback that updates the order book (new order or cancellation), reports a trade (non-displayable order was executed or trade happened on another venue), or both updates the order book and reports a trade (order execution).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.