kalmanGrid audited — engineering complete
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 0.3% against buy-and-hold's 39.2%, 0.3% max drawdown, 0.1% of the time in the market. 5 / 5 pass. 4 issues found and fixed.
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.
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.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 0.3% against buy-and-hold's 39.2%, 0.3% max drawdown, 0.1% of the time in the market. 5 / 5 pass. 4 issues found and fixed.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 6.1% against buy-and-hold's 39.2%, 2.2% max drawdown, 90.1% of the time in the market. 5 / 5 pass. 3 issues found and fixed.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 4.3% against buy-and-hold's 39.2%, 2.9% max drawdown, 0.7% of the time in the market. 5 / 5 pass. 2 issues found and fixed.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 3.4% against buy-and-hold's 39.2%, 1.4% max drawdown, 99.5% of the time in the market. 5 / 5 pass. 4 issues found and fixed.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 3.4% against buy-and-hold's 39.2%, 1.4% max drawdown, 99.5% of the time in the market. 5 / 5 pass. 4 issues found and fixed.
Run on 7 markets × 3 years (2023-07-11 → 2026-09) after fees and slippage: a median 1.1% against buy-and-hold's 39.2%, 12.2% max drawdown, 3.2% of the time in the market. 5 / 5 pass. 4 issues found and fixed.
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 |
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.
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.
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) |
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 |
The three "one-shot" knobs you use to recover a stuck pair now actually behave like one-shots. You flip them on, restart, and the strategy clears the flag itself after the reset fires. No more manually flipping them back to `false` and restarting again.
customEditor.json passes the Community Devs publishing spec. The file can be handed to the Gunbot core team as-is. The package zip and folder were refreshed to ensure the snapshot reflects the verified state.
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.
The daily-loss circuit breaker will now actually fire when the strategy crosses its configured daily loss cap. The side panel shows one consistent set of profit-and-loss numbers instead of four contradictory rows. The realized loss accumulated under the previous buggy code is preserved on restart instead of being silently zeroed.
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.
The academic strategies are substantially faithful to the models they claim to implement. Three small but real bugs in the warmup or edge-case handling were fixed. The deeper model implementations check out.
The strategies are now safe against the kind of bad data that shows up during warmup, a brief exchange data hiccup, or an unusual setting. Orders cannot be sent with a not-a-number quantity, and the inventory gate cannot be silently bypassed.
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.
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.
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.
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.
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.
Every side-panel row now tells you what the value is, where it comes from, and how to read it. You can hover any field and get a complete explanation without having to read the strategy source code.
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.
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.
Date: 2026-06-07 Scope: All market-maker strategies in the strategy pack
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.
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.
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.
Your audit log now matches reality, your profitable revert exits are no longer silently understated by the spread, and the BE_GUARD safety no longer leaves phantom trade entries behind for analytics to replay.
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.
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.
The strategy now behaves like it actually models, many small adversely-selected fills that average out, instead of betting the full size on a single tick of the market.
Your trade count, win-loss record, and profit-and-loss now match reality, so you can actually trust the stats the bot is showing you when reviewing performance.
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.
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.
Rebalancing back toward the 50-50 split now happens gradually across a price band instead of in a single shot, so a fast move in either direction no longer puts you in a worse spot than the math intended.
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.
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.
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.
Your average entry price, your win-loss record, and the running profit total now match what the exchange actually did. The mean-reversion wins that earn the maker rebate are no longer silently understated by the spread.
The bot now respects the microprice signal AND respects the fact that signals continue past the first tick. Better averages, less hurt from getting picked off on the first fill.
This strategy was clean. The audit was completed for the record and no changes were needed.
The take-profit two notification now reports the correct number, so the trade summaries you receive match what really happened.
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.
The trade counter and volume figures now reflect every actual fill, including the routine spread captures that drive most of the strategy's profit. The dashboard is internally consistent with itself for the first time.
This strategy was clean. The audit was completed for the record and no changes were needed.
This strategy was clean. The audit was completed for the record and no changes were needed.
This strategy was clean. The audit was completed for the record and no changes were needed.
The trade counter and volume statistics now reflect every confirmed fill from the exchange, not just emergency actions, so you can see how active the strategy actually is.
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.
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.
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.
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.
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.
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.
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.