# tzadiko/orderbook architecture

> Architecture diagram of the GitHub repository tzadiko/orderbook, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tzadiko/orderbook
- Repository: https://github.com/tzadiko/orderbook

## Overview

This is a C++ in-memory limit order book. Its public API accepts orders, cancellations, and modifications; matching produces trades, while callers can query aggregated bid/ask levels. The supplied executable only constructs an order book, so it does not demonstrate a full user-facing workflow. Matching, order lifecycle, level aggregation, and Good-for-Day pruning are implemented in Orderbook.cpp; no external persistence or trading service is shown.

Main entry points: [`Orderbook.cpp`](https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp) (Order book operations), [`Order.h`](https://github.com/tzadiko/orderbook/blob/master/Order.h) (Order), [`Orderbook.h`](https://github.com/tzadiko/orderbook/blob/master/Orderbook.h) (In-memory book state), [`Trade.h`](https://github.com/tzadiko/orderbook/blob/master/Trade.h) (Trade results)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Executable entry"]
  node_main["Program entry<br/>[main.cpp]"]
end

subgraph group_domain["Order domain"]
  node_order["Order<br/>[Order.h]"]
  node_modify["Order modification<br/>[OrderModify.h]"]
  node_order_type["Order types<br/>[OrderType.h]"]
  node_side["Order side<br/>[Side.h]"]
end

subgraph group_engine["Order book engine"]
  node_book["Order book API<br/>[Orderbook.h]"]
  node_book_impl["Order book operations<br/>[Orderbook.cpp]"]
  node_book_state[("In-memory book state<br/>[Orderbook.h]")]
  node_matcher["Order matching<br/>[Orderbook.cpp]"]
  node_pruner["Day-order pruning<br/>[Orderbook.cpp]"]
  node_level_data["Level aggregates<br/>[Orderbook.cpp]"]
end

subgraph group_results["Outputs"]
  node_trades["Trade results<br/>[Trade.h]"]
  node_trade_info["Trade details<br/>[TradeInfo.h]"]
  node_level_infos["Book-level snapshot"]
  node_level_info["Price-level data<br/>[LevelInfo.h]"]
end

node_main -->|"constructs"| node_book
node_book -->|"delegates"| node_book_impl
node_book_impl -->|"updates"| node_book_state
node_book_impl -->|"accepts"| node_order
node_book_impl -->|"converts"| node_modify
node_book_impl -->|"matches"| node_matcher
node_book_impl -->|"starts"| node_pruner
node_pruner -->|"cancels"| node_book_impl
node_matcher -->|"reads/writes"| node_book_state
node_matcher -->|"produces"| node_trades
node_trades -->|"contains"| node_trade_info
node_book_impl -->|"updates"| node_level_data
node_level_data -->|"updates"| node_book_state
node_book_impl -->|"returns"| node_level_infos
node_level_infos -->|"contains"| node_level_info
node_order -->|"uses"| node_order_type
node_order -->|"uses"| node_side

click node_main "https://github.com/tzadiko/orderbook/blob/master/main.cpp"
click node_book "https://github.com/tzadiko/orderbook/blob/master/Orderbook.h"
click node_book_impl "https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp"
click node_book_state "https://github.com/tzadiko/orderbook/blob/master/Orderbook.h"
click node_order "https://github.com/tzadiko/orderbook/blob/master/Order.h"
click node_modify "https://github.com/tzadiko/orderbook/blob/master/OrderModify.h"
click node_order_type "https://github.com/tzadiko/orderbook/blob/master/OrderType.h"
click node_side "https://github.com/tzadiko/orderbook/blob/master/Side.h"
click node_matcher "https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp"
click node_pruner "https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp"
click node_level_data "https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp"
click node_trades "https://github.com/tzadiko/orderbook/blob/master/Trade.h"
click node_trade_info "https://github.com/tzadiko/orderbook/blob/master/TradeInfo.h"
click node_level_infos "https://github.com/tzadiko/orderbook/blob/master/OrderbookLevelInfos.h"
click node_level_info "https://github.com/tzadiko/orderbook/blob/master/LevelInfo.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main toneBlue
class node_order,node_modify,node_order_type,node_side toneAmber
class node_book,node_book_impl,node_book_state,node_matcher,node_pruner,node_level_data toneMint
class node_trades,node_trade_info,node_level_infos,node_level_info toneRose
```

## Components

### Executable entry

- [Program entry](https://github.com/tzadiko/orderbook/blob/master/main.cpp): `main.cpp`

### Order domain

- [Order](https://github.com/tzadiko/orderbook/blob/master/Order.h): `Order.h`
- [Order modification](https://github.com/tzadiko/orderbook/blob/master/OrderModify.h): `OrderModify.h`
- [Order types](https://github.com/tzadiko/orderbook/blob/master/OrderType.h): `OrderType.h`
- [Order side](https://github.com/tzadiko/orderbook/blob/master/Side.h): `Side.h`

### Order book engine

- [Order book API](https://github.com/tzadiko/orderbook/blob/master/Orderbook.h): `Orderbook.h`
- [Order book operations](https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp): `Orderbook.cpp`
- [In-memory book state](https://github.com/tzadiko/orderbook/blob/master/Orderbook.h): `Orderbook.h`
- [Order matching](https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp): `Orderbook.cpp`
- [Day-order pruning](https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp): `Orderbook.cpp`
- [Level aggregates](https://github.com/tzadiko/orderbook/blob/master/Orderbook.cpp): `Orderbook.cpp`

### Outputs

- [Trade results](https://github.com/tzadiko/orderbook/blob/master/Trade.h): `Trade.h`
- [Trade details](https://github.com/tzadiko/orderbook/blob/master/TradeInfo.h): `TradeInfo.h`
- [Book-level snapshot](https://github.com/tzadiko/orderbook/blob/master/OrderbookLevelInfos.h): `OrderbookLevelInfos.h`
- [Price-level data](https://github.com/tzadiko/orderbook/blob/master/LevelInfo.h): `LevelInfo.h`

## Connections

- Program entry → Order book API: constructs
- Order book API → Order book operations: delegates
- Order book operations → In-memory book state: updates
- Order book operations → Order: accepts
- Order book operations → Order modification: converts
- Order book operations → Order matching: matches
- Order book operations → Day-order pruning: starts
- Day-order pruning → Order book operations: cancels
- Order matching → In-memory book state: reads/writes
- Order matching → Trade results: produces
- Trade results → Trade details: contains
- Order book operations → Level aggregates: updates
- Level aggregates → In-memory book state: updates
- Order book operations → Book-level snapshot: returns
- Book-level snapshot → Price-level data: contains
- Order → Order types: uses
- Order → Order side: uses
