Skip to content

updates#24

Merged
juniorep merged 144 commits into
mainfrom
bbs-dev
Jul 10, 2026
Merged

updates#24
juniorep merged 144 commits into
mainfrom
bbs-dev

Conversation

@bbalouki

Copy link
Copy Markdown
Owner

No description provided.

bbalouki and others added 30 commits June 28, 2026 14:59
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement the FEATURES.md Phase 1 transport layer so the library can consume
ITCH as it is actually delivered, not only pre-stripped message streams:

- MoldUdp64Decoder: UDP multicast framing (session, sequence, message blocks).
- SoupBinDecoder: TCP framing for Glimpse/recovery, buffering partial segments.
- PcapReader: in-house .pcap/.pcapng reader (no libpcap) walking
  Ethernet/IPv4/IPv6/UDP into the MoldUDP64 decoder, with a UDP port filter.
- SequenceTracker + RetransmitRequester: per-session gap detection and a
  caller-driven recovery hook.

Adds round-trip transport tests, a transport fuzz target, a pcap replay
example, README/CHANGELOG entries, and wires the new fuzzer into CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement the FEATURES.md Phase 2 full-market book engine alongside the existing
single-symbol LimitOrderBook (which is retained unchanged):

- L3Book: allocation-light order-level book. Orders live in a reusable object
  pool linked into intrusive FIFO queues; price levels are flat sorted ladders;
  order lookup uses a flat open-addressed map (OrderIndex), removing the
  per-order shared_ptr / list node / map node of the original design.
- BookManager: maintains a book per symbol from one pass over the feed, routed
  by stock locate code in O(1), with an optional symbol-universe filter.
- BBO change events, L2 aggregated and L3 order-level depth snapshots, and
  trade-tape extraction (tape.hpp) honouring the printable flag.
- Zero-copy overlay parse API (overlay.hpp): lazy typed views with on-access
  endianness conversion; ~1.8x faster than eager when touching a few fields.
- Shared wire-layout metadata (detail/wire.hpp) now backs both the parser
  dispatch table and the overlay.

Adds book/overlay tests, a book benchmark with published numbers, a book-engine
example, and README/CHANGELOG entries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement the FEATURES.md Phase 3 header-only itch::analytics layer, driven off
the Phase 2 trade tape and book:

- bars.hpp: OHLCV BarBuilder over time/tick/volume clock policies.
- vwap.hpp: running and interval VWAP and TWAP.
- microstructure.hpp: spread, mid, depth-at-level, queue imbalance, and
  Cont-Kukanov-Stoikov order-flow imbalance.
- imbalance.hpp: ImbalanceInfo surfacing NOII (I) data with strong price types.
- auctions.hpp: AuctionTracker reconstructing opening/closing/halt/IPO crosses
  by pairing each Cross Trade (Q) with the latest NOII context.

Adds deterministic analytics tests, a VWAP example, and README/CHANGELOG entries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement the FEATURES.md Phase 4 layer that meets quants in their own tools:

- io/sink.hpp + io/csv_sink.hpp: a generic MessageSink and a dependency-free
  CsvSink flattening every message type into a normalized wide CSV table.
- io/arrow_export.hpp + io/arrow_export.cpp: Apache Arrow / Parquet columnar
  export, gated behind the optional ITCH_WITH_ARROW CMake option (arrow vcpkg
  feature); off by default so the core stays dependency-free.
- tools/itch_tool: the itch-tool CLI (stats/inspect/filter/convert), gated by
  ITCH_BUILD_TOOLS, auto-detecting raw ITCH vs .pcap/.pcapng input.
- python/: pybind11 bindings (ITCH_BUILD_PYTHON) mirroring the pure-Python `itch`
  package API (MessageParser, typed messages, decode_price) as a faster drop-in
  backend, plus the book engine and VWAP; with pyproject.toml and pytest tests.
- Per-message Doxygen documentation for every message struct and field in
  messages.hpp, sourced from the itch package's message semantics.

Adds CSV unit test, vcpkg python/arrow features, and CI jobs for tools, examples,
and the Python bindings.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement the FEATURES.md Phase 5 layer, closing the roadmap:

- replay.hpp/replay.cpp: ReplayEngine drives a callback paced by message
  timestamps at original or scaled wall-clock speed for backtesting.
- encoder.hpp/encoder.cpp: encode_message/encode_frame serialize any Message
  back to valid wire bytes (inverse of the parser), guaranteeing
  parse(encode(msg)) == msg; also backs the Python to_bytes().
- venue.hpp: a VenuePolicy concept and the concrete Nasdaq50 policy as the
  extension seam for additional venues/versions (BX/PSX, ITCH 4.1), without
  new decoders (extension points only).
- Packaging: conanfile.py, CONTRIBUTING.md, and a documented versioning/ABI
  compatibility policy.

Adds encoder round-trip, replay pacing, and venue-policy tests, plus README and
CHANGELOG entries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bbalouki and others added 27 commits July 10, 2026 18:46
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bbalouki bbalouki requested a review from juniorep July 10, 2026 22:29
@juniorep juniorep merged commit 41ed3b7 into main Jul 10, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants