Highlights

Two developments matter most: the numbers are now exact, and the system is learning when not to trade.

Profit accounting is exact
A long-standing bug double-booked realized P&L and inflated the account curve — at one point a single fill appeared to add 18 units. The curve now reconciles exactly, and per-trade accounting is consistent.
Learning when not to trade
A new decision layer learns whether to stand down, reduce, or serve from the market regime rather than fixed thresholds. It is observing in shadow before it is allowed to act — directly addressing the failure mode where a range-trading strategy loses through a strong trend.

Protocol & Dashboard

The engine-dashboard contract is now versioned, negotiated, and self-describing.

Versioned protocol (v4)

The dashboard now speaks a versioned protocol with feature negotiation on connect, so the engine and UI agree on capabilities instead of guessing. An older client keeps working unchanged — the new surface is additive and negotiated per connection.

Live module inventory

The dashboard's About page lists every loaded module with version, build number, git revision and type — 52 modules across the exe, subsystem, algos, exchanges and indicators. One glance answers "which build is this run?"

Self-describing builds

Every module is stamped automatically at compile time with its version, commit and a dirty flag, so a run can no longer be mistaken for a different one. A build that doesn't match its commit is flagged rather than silently trusted.

A home for the wire contract

The wire protocol now has its own repository and a print-quality PDF manual, so the contract between engine and dashboard has one authoritative home — linked from the Downloads page and summarised on the Protocol page.

Why v4 exists
The failures that motivated v4 were semantics problems, not encoding problems: push-only delivery with no authoritative live set, no defined meaning for a rejected operation, and identity carried as JSON numbers. v4 fixes those with request/response, authoritative snapshots, explicit revisions, and string identity.

Trading Engine Correctness

Correctness fixes that make the engine's view of orders, fills and P&L match what really happened at the venue.

Profit accounting fixed

Realized P&L was double-booked, inflating the account curve. The curve is now exact and per-trade accounting reconciles.

Order state revisions are observable

A rejected modify could leave an order showing as active on the dashboard while the venue had refused it. Cancels, fills, rejections and expiries now each carry a revision, so the UI can never show a stale state.

Phantom orders eliminated

Orders lost to a dropped connection now reconcile correctly instead of accumulating as ghosts that never terminate.

Cancel sweeps are race-safe

A flatten could attempt to cancel an order the engine had already retired. The guard now drops the stale handle cleanly, and the underlying invariant remains asserted rather than worked around.

Real Cost Awareness

The algos now know what a round trip costs

Trading costs are derived from each venue's published fees and the live spread instead of a hand-set placeholder that was zero — so quoted edge is measured net, not gross.

Learning Stack

The learning layers are now shared infrastructure rather than per-strategy copies.

Shared learning framework

Toxicity modelling, probe budgeting, value feedback and label maturation are extracted into a common library, so strategies share one implementation instead of each carrying its own copy.

A second strategy: algoTIDE

A trend-pullback quoter built on the shared stack. It quotes with the trend rather than against it, complementing the range-bound strategy. It reached parity with the first strategy — full risk controls, state persistence, learning layers — and runs alongside it on the same instruments.

A learned participation gate (in shadow)

A new decision layer learns when to trade at all — stand down, reduce, or serve — from market regime rather than fixed thresholds. Currently observing only, gathering evidence before it is allowed to act.

Shadow mode by design
The participation gate does not act until its evidence justifies it. Until then it only observes — a deliberate step that keeps the learning layer accountable to measured performance rather than an untested hypothesis.

Venue Coverage

Lighter integration hardened

Fee and latency tiers, the colocation target and API-key semantics are documented — the groundwork for a live deployment. See the Exchanges page for the full venue matrix.

Operational

Stale-plugin detection

The engine refuses a plugin set that doesn't match the running build, and the dashboard surfaces a mismatch as a deployment fault instead of misbehaving quietly.

Read the protocol for yourself
The authoritative v4 wire contract is available as a print-quality PDF on the Downloads page. A summary of the handshake, streams and schemas is on the Protocol page.