Recent developments across the protocol, the trading engine, the learning stack, and venue coverage — grouped by what changed, not by commit.
Two developments matter most: the numbers are now exact, and the system is learning when not to trade.
The engine-dashboard contract is now versioned, negotiated, and self-describing.
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.
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?"
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.
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.
Correctness fixes that make the engine's view of orders, fills and P&L match what really happened at the venue.
Realized P&L was double-booked, inflating the account curve. The curve is now exact and per-trade accounting reconciles.
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.
Orders lost to a dropped connection now reconcile correctly instead of accumulating as ghosts that never terminate.
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.
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.
The learning layers are now shared infrastructure rather than per-strategy copies.
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 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 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.
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.
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.