Conversation
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>
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>
juniorep
approved these changes
Jul 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.