Strategies
FMZ 2014 Depth-Reach Quasi-Market-Maker (by 小草, fmz.com/strategy/1088), Faithful Port: Long-Only Full-Inventory Maker Quotes ±10bp Around the Touch, Cancel-and-Replace Every Bar, No Stop (SOLUSDT.BINANCE USD-M, 1-Minute Bars, Post-Only Maker Orders)
Outcome: Abandoned
FmzDepthReachQuasiMarketMakerSol1m
Outcome Summary
This strategy ported a 2014 FMZ order-book-depth market-making bot to 1-minute SOLUSDT perpetuals, quoting ±10bp around the touch with all its inventory and no stop, even though the hypothesis itself called this class a fee graveyard. Across 3 iterations it never got past verification. The sandbox backtest went to -100% with liquidation, 2,311 trades and a 0% win rate, because sizing let exposure reach about 252% of equity and the market impact per trade outweighed the 20bp spread. QA also flagged a trade ledger that doesn't reconcile and warned that the touch-fill model doesn't capture adverse selection. The run was abandoned as a code defect before the backtest review, optimization, analyst and risk stages.
Hypothesis
Iteration 3 fixes the Layer-3 sandbox timeout only. Order churn was the per-bar cost: a 5bp drift tolerance on SOL 1m bars cancelled and replaced the full-size quotes on most bars, which could mean tens of thousands of orders in the window. Drift requotes now fire only on a cadence tied to the bar timestamp (minute % requote_every_min == 0, the same across restarts) and need at least 10bp of drift (one full quote width). Requotes after a fill or a missing quote still happen immediately. Quote logic, sizing and signal are unchanged. Honest prior from the hypothesis: this is passive sub-hour mean reversion in the fee-graveyard class, and the backtest's touch-fill model likely flatters maker fills (lesson L31).
Implementation
Long-only full-inventory quasi market maker (port of FMZ 1088): post-only GTC bid at touch-10bp with all cash, post-only ask at touch+10bp for all coins held, cancel-and-replace on fills or on a 5-minute calendar cadence when the target drifts >=10bp. No stop.
Verification Results
Iteration History
sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (30 days of SOLUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Outcome Summary
A passive maker port has to cap gross notional, counting both held and resting orders, at equity × leverage, and size each quote from recent bar volume so impact stays well below the quote half-width; otherwise every round trip loses money whether or not the edge is real.
After 3 iterations it failed Layer 4 QA verification (class code_defect) and was abandoned in a verification loop. The critical issues were gross exposure above equity at 1x leverage, which let a long-only book be liquidated, and full-equity quotes whose modelled impact (~$270 per trade) was far larger than the 20bp quote width.
A faithful long-only port of 小草's 2014 FMZ quasi-market-maker (strategy 1088): post-only maker quotes 10bp either side of the last 1-minute close on SOLUSDT USD-M, cancelled and replaced on each bar, using all inventory and no stop-loss.
No formal backtest or optimization report exists. The QA sandbox run lost 100% (the account was liquidated on 2026-07-27) over 2,311 trades with a 0% win rate, a -$298.58 average trade, about 252% average position size at 1.0x leverage, and $624,541 of total modelled impact.
Abandon Reason
Backtest and paper results are hypothetical. Trading involves risk of loss.