Changelog

Every change to the strategy pack, dated, in the words it was written in at the time. Three streams run together here: the patch notes written when a fix landed, the pack milestones where the whole library was measured or re-verified at once, and one entry per strategy as its audit completes.

58entries
47patch notes
5pack milestones
6strategy audits

Nothing here is written for the changelog. Each entry is the record the work itself produced — which is why the entries that found nothing, and the ones that report a strategy losing to buy-and-hold, are in the list too.

12 September 2026

6 entries

10 September 2026

2 entries
Pack milestone

429 strategies measured on three years of real market data

Every strategy in the pack run across seven markets and three years of real hourly data — 3,003 runs — after a 0.10% taker fee and 2 bps of slippage. Not one threw. Not one drew a chart mark for a trade that never happened. The runs that matter less are named as clearly as the ones that pass: 18 strategies placed no order anywhere, and 14 fail a hard conformance invariant.

Strategies tested 429
Runs completed without error 3003 / 3003
Strategies that threw on any market 0
Strategies that placed orders 411
Strategies that placed no order anywhere 18
Phantom chart marks (trades drawn that never happened) 0
Pass every behavioural conformance check 334 / 419
Fail a HARD conformance invariant 14
Pack milestone

Every strategy sorted into an evidence tier

A strategy that ran clean on four markets with real round trips is not the same claim as one that ran clean and never traded, so the index stops treating them as one. Five tiers, by how much evidence stands behind the result rather than by how good the result looks. "Verified" here means it ran without throwing, its accounting reconciles, it drew no phantom marks, and its trade count is unchanged whether fees are 0% or 0.10% — it does not mean profitable, and it does not mean safe to run unattended.

8 September 2026

2 entries
Pack milestone

A rejected order could be recorded as a fill

The 398 Gunbot Quant strategies in the live install wrapped their order calls in helpers that correctly returned false on a rejection — and then the calling code threw that answer away. A rejected order could therefore advance the position state as though it had filled, which is the worst class of defect in the pack: the strategy's idea of what it holds drifts from what the exchange holds, and every later decision is made against a position that does not exist. Patched across the live pack and the three generator templates that emit it, so regenerating cannot reintroduce it.

Pack milestone

All 429 strategies put on one presentation contract

Before this pass the pack used 104 distinct colour values and the same event was drawn differently depending on where it appeared — a buy was one green in the terminal and another on the chart. Every strategy now shares one colour contract across the log, the side panel and the chart, one terminal output format, and a side panel that fills the GUI's three-column grid. The work was verified to have changed no behaviour: all 429 strategies produce byte-identical runs before and after.

Gate Result
Parses (as Gunbot wraps them) 429 / 429
Loads and runs without throwing 429 / 429
Position-accounting defect (see below) 205 events → 0
Colour literals on the canonical palette 429 / 429
Terminal output on one format 429 / 429
Side panel filling the GUI's 3-column grid 429 / 429
Documentation pages 429 / 429
GUI editor definitions 429 / 429 (8,641 settings exposed)
Behaviour changed by the cosmetic work none (429/429 identical)

7 September 2026

1 entry
Pack milestone

The hand-written pack passes behavioural testing

The 31 hand-written strategies were put through behavioural testing — not just "does it parse and run", but driving each strategy through ten price scenarios and watching what it actually does with orders. Every strategy places orders in at least three of the ten and correctly abstains in the rest. The pass asserts that order arguments are finite and positive in each method's own argument order, that limit buys never price above the ask and limit sells never below the bid, that a break-even guard is never violated, that state survives across cycles, and that no strategy spams orders.

Gate Result
Parses (sloppy + "use strict") 31 / 31
Loads and runs 5 cycles without throwing 31 / 31
Trades correctly across 10 price scenarios 31 / 31
Order-rejection fault injection — no unhandled rejections 31 / 31
Break-even guard behaviour identical across the pack 31 / 31 (384 states x 5 methods)
Shim unit assertions 12 / 12
Config knobs used as divisors, all guarded 12 / 12
Unknown gb.method.* names 0
Editor entries <-> strategy files 31 <-> 31, no orphans

10 June 2026

1 entry

7 June 2026

46 entries
Patchlibrary-wide

customEditor.json Knob Completeness Pass

Every knob in every strategy is now reachable from the customstratdev page. The chart-pair-override panel can change any of the seventeen universal portfolio and runtime knobs per pair without dropping to the underlying JSON. The editor file grew from roughly 1.1 MB to 1.3 MB to accommodate the new entries.

Read the full note

Patchlibrary-wide

Library-Wide PnL Math Audit and Side-Price Correction

Every realized-profit-and-loss formula in the library has been reviewed and is now mathematically correct against the actual fill prices the strategy receives, not against a mid-price approximation. The biggest gain is for the post-only-heavy strategies where the previous under-reporting could shave one to several basis points per fill from the apparent profit. Over hundreds of fills that adds up to real numbers on the dashboard that now match what the exchange settles.

Read the full note

Patchlibrary-wide

Order Discipline and Memory Safety Sweep

Long-running bots will not accumulate fill-log entries without bound. A normal fill-in-flight on a cancel attempt no longer kills the cycle. The Kalman grid notification reports the right information. The safety-exit and notification disciplines were already correct across the rest of the library.

Read the full note

Patchlibrary-wide

Per-Strategy Final Audit Round

The four heavy-logic non-template strategies have been individually deep-audited and confirmed correct. Every other strategy in the library is template-derived and has already been covered by the wave of template sweeps earlier in this sprint.

Read the full note

Patchlibrary-wide

Production-Readiness Verification Sweep

The library has good defensive habits in exchange compatibility, runtime fallback, indicator error handling, safety precedence, and notification discipline. This round documented the verification but applied no code changes because none were needed.

Read the full note

Patchlibrary-wide

Realized Profit-and-Loss Math V2 for Glosten-Milgrom and Hawkes

The realized profit-and-loss number you see on Glosten-Milgrom and Hawkes resets to zero on the next restart and then accumulates honestly from confirmed sell fills. If the strategy was genuinely making spread, the new total will track up. If it was genuinely getting picked off by adverse selection, the new total will track down, but at the real rate, not the inflated rate. The daily-loss circuit breaker now fires off this corrected number, so it will act on real losses, not phantom ones.

Read the full note

Patchlibrary-wide

State-Store Lifecycle Hygiene Sweep

The state-store initialisation is now explicit everywhere, so a future cleanup that simplifies a defensive check at a read site cannot accidentally re-open a path for undefined to leak into numeric math. The rest of the state-store discipline was already correct.

Read the full note

Patchper-strategy

ADX Trend Maker, Correctness Audit

You now get the per-cycle diagnostic the strategy was designed to print, and your reported average entry, win-loss record, and running profit no longer carry the silent half-spread bias that was making winners look like losers.

Read the full note

Patchper-strategy

Cartea-Jaimungal Micro MM — Patch Update

You no longer risk getting your full position printed on the first wick. The bot now scales into and out of inventory the way an institutional market maker would, which protects against the downside scenario where the trade goes against you immediately after the first fill.

Read the full note

Patchper-strategy

Hawkes Process Market Maker — Patch Update

You can now actually see what this strategy is doing. Trade count goes up when it fills. Profit and loss matches what the exchange shows. Wins and losses correctly reflect spread capture vs adverse selection, which means the circuit-breaker that pauses trading on a losing streak now reacts to real losses instead of staying silent.

Read the full note

Patchper-strategy

Kalman Grid — Patch Update

Stats now reflect what the exchange did, not what the bot tried to do. The internal "what I bought at what price" record is honest, so the sell logic that depends on it is making decisions on real fills instead of phantom ones.

Read the full note

Patchper-strategy

Roll Model Market Maker — Patch Update

Your trade counter and win-loss record now match reality for scratch exits, which means the running totals on the dashboard are reliable and the circuit-breaker that watches the loss streak is no longer being misled by phantom double-losses.

Read the full note