Skip to content

Releases: Koukyosyumei/h5i-db

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 04 Aug 16:50
e9413bc
h5i-db v0.1.6

Feature release: notebooks that run inside the terminal, on a real
Jupyter kernel, with plots drawn where they are produced.

This is the release that carries the notebook to crates.io. v0.1.5
reached PyPI but not crates.io, because the Windows binary failed to
build and the publish job depends on it; crates.io therefore goes from
0.1.4 to 0.1.6, and h5i-db-notebook is published for the first time.

In-terminal notebooks
  nbformat v4 document model with a byte-faithful round-trip, so a
  notebook edited here still opens unchanged in JupyterLab.
  Jupyter kernel client over ZeroMQ, plus a native SQL kernel and
  `%%sql` cell routing against an h5i-db database.
  `nb view` is the editable UI: Jupyter key bindings, a completion
  popup from `complete_request`, an inspection overlay from
  `inspect_request`, and a Ctrl-C that interrupts the running cell
  rather than killing the UI, because the notebook is the state.
  `nb watch` follows a notebook read-only. It takes no lock, starts no
  kernel and never writes, so any number of panes can sit beside an
  agent driving cells through `nb exec` without being able to spoil
  the run.
  `nb exec` and `nb run --cells 3-7` drive the same session from the
  command line, against a kernel that keeps its state between calls.
  `nb export` to markdown, a runnable script, or standalone HTML;
  `nb ls` reports every session on the machine and reaps the ones
  whose supervisor died.

Inline images
  The terminal is asked what it can draw rather than guessed at from
  TERM_PROGRAM and KITTY_WINDOW_ID, which do not survive the trip into
  WSL: from inside the distro every terminal looks like a bare
  xterm-256color, and every plot used to be a placeholder. Sixel,
  kitty, iTerm2, and unicode half-blocks for anything else, each drawn
  at the figure's own aspect ratio.

Platform support
  The notebook is Unix only, and now says so instead of failing to
  compile. Its supervisor is built on Unix domain sockets, flock,
  POSIX signals and Unix file modes. On Windows the crate is empty,
  `h5i-nb` explains itself and exits, and `h5i-db nb` returns the
  reason rather than "unrecognized subcommand". Everything else in
  h5i-db works there as before, and CI now compiles the whole
  workspace on Windows so this cannot reach a tag again.

Packaging
  h5i-db-notebook is published for the first time.
  The minimum supported Rust version moves from 1.89 to 1.90, because
  icy_sixel pins quantette ^0.5 and no quantette release declares less.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 04 Aug 15:42
140c209
h5i-db v0.1.5

Feature release: notebooks that run inside the terminal, on a real
Jupyter kernel, with plots drawn where they are produced.

In-terminal notebooks
  nbformat v4 document model with a byte-faithful round-trip, so a
  notebook edited here still opens unchanged in JupyterLab.
  Jupyter kernel client over ZeroMQ, plus a native SQL kernel and
  `%%sql` cell routing against an h5i-db database.
  `nb view` is the editable UI: Jupyter key bindings, a completion
  popup from `complete_request`, an inspection overlay from
  `inspect_request`, and a Ctrl-C that interrupts the running cell
  rather than killing the UI, because the notebook is the state.
  `nb watch` follows a notebook read-only. It takes no lock, starts no
  kernel and never writes, so any number of panes can sit beside an
  agent driving cells through `nb exec` without being able to spoil
  the run.
  `nb exec` and `nb run --cells 3-7` drive the same session from the
  command line, against a kernel that keeps its state between calls.
  `nb export` to markdown, a runnable script, or standalone HTML;
  `nb ls` reports every session on the machine and reaps the ones
  whose supervisor died.

Inline images
  The terminal is asked what it can draw rather than guessed at from
  TERM_PROGRAM and KITTY_WINDOW_ID, which do not survive the trip into
  WSL: from inside the distro every terminal looks like a bare
  xterm-256color, and every plot used to be a placeholder. Sixel,
  kitty, iTerm2, and unicode half-blocks for anything else, each drawn
  at the figure's own aspect ratio.

Packaging
  h5i-db-notebook is published for the first time.
  The minimum supported Rust version moves from 1.89 to 1.90, because
  icy_sixel pins quantette ^0.5 and no quantette release declares less.

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 03 Aug 14:06
e078eb3
h5i-db v0.1.4

Correctness release: eight issues from the 2026-08 round-two review sweep,
two of them regressions since v0.1.3.

Regressions since v0.1.3
  #80 cli: ingest column matching had become case-sensitive, breaking
      CSV and Parquet files that used to load.
  #81 quant: walk_forward's embargo width was scaled to the whole sample
      and could purge every fold's training set.

Silent wrong answers
  #84 core: row-group pruning addressed parquet leaves with an Arrow
      field index, so a time-filtered scan over a schema with a nested
      column could return zero rows.
  #76 backtest: a split fired every parked stop and left its trigger and
      size unscaled.

Correctness
  #78 backtest: the margin engine and the equity curve used two
      different definitions of equity.
  #79 core: ENOSPC stayed retryable on every data-path write.
  #77 backtest: mint and redeem bypassed the stopped-trading gate.
  #82 backtest: settlement ignored instrument kind; the spot naked-short
      exemption is now documented.

No format change: v0.1.3 databases are read unchanged.

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 01 Aug 13:04
cb63391
Perpetuals and prediction markets, modelled rather than approximated.

Engine
- Prediction markets: six gaps, found by comparing this crate against a
  NautilusTrader-based Polymarket backtester. A contract cannot be borrowed, so
  naked outcome shorts are rejected and a short is collateralised at (1 - mark)
  rather than at the mark. Complete-set mint and redeem make the sum-to-one
  invariant transactable. Negative-risk conversion is provably a redemption of
  k-1 sets, gated on neg_risk from Gamma. Payout is Winner, Split or Void, so a
  voided market and a 50-50 stop being wrong by the full notional. Strategies
  can state a probability, which a run report joins to realized payouts. And
  expiration is finally read, so orders after the bell are rejected and resting
  orders cancelled.
- Perpetual futures. A derivatives venue does not margin you against the mid:
  mark and oracle are first-class prices, margin and unrealised PnL and
  liquidation read the mark, funding is charged on the oracle, and an absent
  price stays absent rather than defaulting to a zero that would liquidate the
  account. Hyperliquid's per-coin, five-significant-figure price rule replaces a
  flat tick, which accepted prices the venue refuses. Post-only is checked on
  arrival, fees are tiered on rolling volume with the schedule supplied rather
  than baked in, leverage is per instrument, and liquidation can be partial and
  isolated. Spot is a second universe with its own price budget.
- Trigger orders and TWAP, the two order types the venue works for you, and both
  client-side approximations flattered. A stop rests off the book under its own
  Untriggered status, because a resting stop invents depth, and it fires on the
  mark for the same reason margin does. A TWAP is sliced into equal children
  every thirty seconds through the ordinary matching path, so the average it
  reports is one somebody could have got.
- Speed, where measurement put it and not where it was assumed: hot maps key on
  a dense slot rather than an Arc<str> and an outcome, the callback context is
  built only when the callback asked for it, three quadratic scans are gone, and
  the persisted run's overhead turned out to be fsync.

Storage
- The fixed-point raw type is switchable, so a wide build computes in i128 with
  the narrowings checked rather than wrapping. Both modes pass the same suites,
  and CI now builds the wide mode, which it never did, so it cannot rot
  silently. Wheels can ask for it with `maturin build --features wide` and
  report h5i_db.FIXED_POINT_BITS, read from the type's own size.
- A table chooses how it stores fixed point. Decimal128(38, 9) holds what a wide
  build can compute, where f64 is exact only to 2^53 raw units, about nine
  million. Readers dispatch on the array they are handed, so one build reads
  both encodings and no catalog is split in two by how it was compiled. Float
  stays the default, and Decimal128 columns prune on min/max.

Data on-ramp
- Hyperliquid: per-coin metadata, the live payloads, and the archive (L2 books,
  the asset_ctxs mark and oracle history, real prints), each validated against a
  real file, which is how the look-ahead bug in the archive reader was found.
- Kalshi: archive ingest, the two bid books folded into one two-sided book, and
  the handshake confirmed against production.
- Limitless and Opinion layouts, Manifold and series feeds, Predexon's Kalshi
  orderbook history, a corporate_actions table, bulk trade dumps, and a
  canonical bars on-ramp.
- h5i_db.capture: a websocket recorder for the data no archive sells.

Research
- result.report() renders a whole run as one self-contained HTML page instead of
  a JSON dump. Trials sort and tick for side-by-side comparison against a "no
  trading" baseline row, a parameter pivot groups them by the dimension the
  sweep varied, and repeated engine warnings collapse to a count. Colour is
  never the only carrier, and gain and loss are luminance-matched so a column of
  losses does not whisper while gains shout.

Docs: a front page split into a database half and a backtester half, a
Perpetuals section covering the three prices and the two margin policies, a
backtest in the quickstart, three cookbook sections the build had been dropping,
and a navigable roadmap.

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 30 Jul 14:43
d470e2a
Backtesting reaches the vendor data plane.

Engine
- Refuse a book snapshot event whose rows mix instruments or outcomes. Before,
  the instrument and outcome came from the event's first row and the rest were
  folded into that book, so a YES buy could lift an ask belonging to NO with no
  error anywhere.

Data on-ramp (new: h5i_db.venues)
- Vendor Parquet archives into the canonical tables. A vendor dialect is an
  ArchiveLayout literal, not a code path: nested, flat and JSON-payload level
  shapes, with PMXT, Telonex and Kaggle layouts shipped.
- Commits are keyed by the hash of the normalised rows, so re-running an import
  replays instead of duplicating and an interrupted backfill is safe to restart.
- Requested and loaded windows stay separate facts; unknown event types,
  unusable files and depth truncation are reported, never silent.
- Market definitions from vendor JSON, with positional outcome/token identity
  refused when ambiguous.

Research
- Walk-forward folds scored by median, and a TopK policy that spends the holdout
  on a shortlist ranked on train.
- Random and TPE search beside the default grid, with Range for continuous axes.
- Basket reports over many run forks, rendered from stored tables only.
- Brier advantage, decomposition and reliability curves.
- Eleven strategies as signal generators, plus account-ledger replay.

New crates: h5i-db-backtest, h5i-db-venues.

Docs: backtest, quant and data-on-ramp references for the agent skill, with a
test that resolves every symbol the skill names against the real modules.

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 00:53
d7ce5fb
Forks are the headline: an O(1), zero-copy writable workspace over a pinned
base, so an agent can branch a database the way it branches a repo. Nested
forks, batch create/drop for wide fanouts, metadata-only diff, compare-and-swap
promote, and a forks('table') table function that reads every branch at once.

Also in this release:

- A live fork monitor in the review UI, pushed over SSE, with the shell rebuilt
  around an attention rail: what needs a human, what is running, what is merely
  true.
- arrival-delta (formerly leakage-check): re-run a query at two read points and
  report how much the answer moved. A measurement, not a verdict.
- Rolling and cross-sectional operators DataFusion lacks, and a lazy DataFrame
  builder for Python.
- Research-mode pins now hold through the table functions.
- Version-history listing, ingest statistics, and segment encoding no longer
  pay avoidable I/O, allocations, or runtime-worker time.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 13:22
f2a7684
Update description in README.md