A collection of custom modules for KDB-X.
| Module | Description | Status |
|---|---|---|
| di.simtick | Realistic intraday tick data simulator with configurable market microstructure | ✅ Ready |
| di.simcalendar | Multi-day tick simulation over a trading calendar | ✅ Ready |
| di.simorder | Order execution simulator - generates a parent order + child executions against di.simtick market data, for TCA demos |
✅ Ready |
| di.simbasket | Multi-instrument correlated tick simulation using a factor model | 🚧 In progress |
| di.simbook | L2 order book simulator | 🚧 In progress |
simtick ← simcalendar ← simbasket
simtick ← simorder (order execution against a single day's market)
simbook ← standalone (future: integration with simcalendar)
simtick is the atomic unit — one instrument, one day. Each layer above it adds a dimension: multiple days (simcalendar), multiple instruments (simbasket), or a parent order worked against that day's market (simorder). simbook is a separate bottom-up simulator that models individual order flow events rather than deriving quotes from a price process.
Together, simtick + simorder generate the four datasets (trades, quotes, orders, executions) needed to build Transaction Cost Analysis (TCA) — realistic market data plus a realistic, internally consistent order trading against it, with configurable execution quality for good-vs-bad comparisons.
git clone https://github.com/youruser/kdbx-modules.git
cd kdbx-modules
make replq)simtick:use`di.simtick
q)simcalendar:use`di.simcalendar
q)simorder:use`di.simorderOption 1: Command line (Makefile)
cd kdbx-modules
make replOption 2: Manual QPATH
export QPATH=$QPATH:/path/to/kdbx-modules
qOption 3: VS Code
After connecting to q, add the module path:
.Q.m.SP,:enlist"/path/to/kdbx-modules"Then load modules:
simcalendar:use`di.simcalendarkdbx-modules/
├── Makefile
├── README.md
└── di/
├── simtick/ # 1 instrument, 1 day (atomic unit)
│ ├── init.q
│ ├── presets.csv
│ ├── test.csv
│ └── README.md
├── simcalendar/ # 1 instrument, N days (uses di.simtick)
│ ├── init.q
│ ├── calendar.csv
│ └── README.md
├── simorder/ # 1 order, 1 day (uses di.simtick's trades/quotes)
│ ├── init.q
│ ├── presets.csv
│ ├── test.csv
│ ├── testing.q
│ └── README.md
├── simbasket/ # M instruments, N days (uses di.simcalendar) [WIP]
│ ├── init.q
│ └── README.md
└── simbook/ # L2 order book simulator, Gillespie algorithm [WIP]
├── init.q
└── README.md
Each module should follow the KDB-X module framework and include:
init.q— Module codetest.csv— Unit tests (k4unit format)README.md— Documentation
MIT