Point-in-time market data · audited 18 September 2026

Know exactly what you knew.

GQODB stores market data the way research actually needs it: every record keeps the bytes as they arrived, the moment they arrived, and the evidence for the clock that measured it. Ask a question at a past cutoff and you get what was available then — not what the database learned afterwards.

See the measured results View source on GitHub How it works The codec source is public on GitHub; no release binary or commercial engine build is published.

Why GQODB

A backtest that can’t cheat

Corrections arrive as new revisions against a fixed capture watermark, so a late append can never change an answer you already recorded. Availability bounds and clock error intervals decide what a strategy could see — not a single timestamp column.

Functionally tested · causal queries, late corrections, tombstones

Nothing is quietly repaired

Raw bytes become durable before anything derived runs, and the receipt follows the sync rather than the intent. An invalid record is kept exactly as received and explained by the quality check, so you can see what the venue actually sent you.

Functionally tested · 8,192-record import survived a real process kill

Every claim carries its receipt

Each number here names its dataset, its host and its measurement boundary — including the runs where this system loses. If a figure does not exist, the cell says so instead of being filled with an estimate.

Open now · four Apache-2.0 crates · public tests, receipts and benchmark verifier

38% fewer bytes, 37% less write time

results/b15 — order-book storage

1,048,576 Bybit order-book level rows from 7,265 events. One warm-up, six measured rounds, medians, warm cache, one host. File-sync counted.

Bytes on disk — lower is better
GQODB native 3,703,770 B
Parquet dictionary-LZ4 5,950,242 B
Parquet delta-LZ4 9,242,314 B
Write + file-sync — lower is better
GQODB native 198.36 ms
Parquet dictionary-LZ4 313.21 ms
Parquet delta-LZ4 248.71 ms

−37.75% bytes and −36.67% write time against dictionary-LZ4 Parquet, plus a measured −3.96% on the full read. In the in-memory codec test the book profile is 38–43% smaller than that same Parquet baseline — and 14% slower to decode than it. Both directions are on the benchmarks page, with their sample sizes.

Why not just use what you already have

honest answers, including where they win
If you useWhat it does wellWhat it costs you here
Parquet files and scripts Portable, universally supported, excellent scan performance No arrival time, no clock evidence, no revision model — point-in-time correctness becomes your own convention, enforced by nothing
PostgreSQL or MongoDB Mature, transactional, operationally familiar; PostgreSQL was faster at individual durable writes in our own news test Storing every revision and arrival time is schema work you write and maintain; resident queries were 29× to 250× slower in that same test
kdb+ / q The proven answer for tick data at scale, with decades of production use Licence cost and a language your team has to learn. No comparison with kdb+ is published.
A vendor market-data API No infrastructure to run, and someone else’s problem when it breaks You get the vendor’s current view of history; silent restatements are invisible to you and unauditable afterwards
GQODB Raw bytes, arrival time, clock evidence and revisions as first-class data, with exact integers and causal reads A prototype: no published build, no live feed connector, no SQL, and warm-cache benchmarks only

Where it stands today

public repository checked 18 October 2026
4public Rust crates
76public Rust tests passed, 0 failed
28public result files receipt-checked
1published releases

Public and private status are different. The figures above were reproduced from the public repository. The private engine audit remains the 18 September snapshot: 30 packages, 282 tests passed and 30 historical result files checked. Neither set of tests is a release, a support promise or production qualification.

Who this is for

A good fit

Systematic traders and quant researchers who run their own data stack and need a backtest they can defend — where “what did we know at 09:31:04.221?” has one answer that survives re-running it next year.

Not a fit yet

Anyone who needs a managed feed today. There is no hosted service, no published build and no live venue connector — offline fixtures and file imports are what exists now.