Fee figures on this page have been withdrawn: exchange fee schedules change often, and our dollar estimates used an inconsistent volume basis. We intend to republish with current, sourced fee schedules.
Abstract
Exchange fee structures and order execution type are two of the most controllable cost variables in a retail grid trading strategy. This page explains the maker/taker execution gap and documents the post-only (GTX) change in the CoinRoc BinanceUSAdapter. The fee comparison, the dollar cost estimates and the walk-forward return results this paper once reported have been withdrawn.
1. Why Grid Strategies Are Maker Strategies
A grid strategy places limit orders at predetermined price levels. A limit buy order placed below the current market price rests in the order book, and when price falls to it, the order executes as a maker fill. That is the theory. In a bar-based workflow, the practice differs in one specific scenario: if price has moved past a level between bars, then under GTC (Good Till Cancelled) order type the order executes immediately against existing book liquidity, as a taker fill. The maker fee assumption is wrong for that fill, and nothing in a standard adapter flags it.
The GTX (post-only) order type corrects this: the exchange rejects orders that would execute as taker before accepting them. The open question is the net effect of those rejections on portfolio performance, and that is not something we can state today.
2. Withdrawn Results
Earlier versions of this page reported a GTX rejection rate, simulated returns, per-fold comparisons, and a share of grid fills that would execute as taker. We have withdrawn them. The simulator placed orders once per daily bar, so those figures reflected its order-placement timing rather than a measured property of live markets. We will publish a rate or a return comparison only if the rebuilt simulator, or live order data, can support it.
Earlier versions also carried exchange fee tables, annual fee-cost estimates and an exchange selection matrix. Those are withdrawn for the reason in the note above.
3. Implementation: Post-Only Execution in CoinRoc
BinanceUSAdapter: GTC to GTX. In src/lib/trading/adapters/BinanceUSAdapter.ts, the placeOrder() function now passes timeInForce: 'GTX' on all limit orders. A dedicated catch branch handles Binance error code −5022 (GTX post-only rejection code), logging it at INFO level. The adapter returns success: false, status: 'rejected' for GTX rejections. This change was made on 2026-05-02.
Kessel, H., & Black, J. J. (2026). Exchange Costs and Maker/Taker Execution for Grid Trading. Yodacom Research.
This paper is for research and educational purposes only and does not constitute investment advice. Exchange availability and fee schedules are subject to change; verify current rates at each exchange before making trading decisions.