BANGER
Product status: Banger’s public beta is paper-only. References to live execution are future-looking. Venue rules and legal claims can change; verify current primary sources for your jurisdiction.
2026-10-05 · 3 min read · reviewed 2026-10-14

Why Does My Paper Strategy Have No Fills?

Zero fills is an observation, not a diagnosis. A no-order observer can be working as designed; a worker can be running without fresh data; an order can be rejected; and a simulator can use assumptions different from a real book. Several failures can coexist.

Trace one bounded run using its exact strategy version, market identifiers and timestamps. Preserve the first useful evidence at each stage. Do not loosen a risk control or launch a real trade simply to make the fill counter increase.

1. Confirm startup and the test scope

Check whether the strategy loaded, initialization completed and the expected worker stayed active during the observation window. Record exceptions rather than inferring success from a process badge. A missing import or unsupported callback can prevent decisions before a venue is involved.

Banger’s public 0.1.7 callback is on_market_tick(market, tick, ctx). Local banger run strategy.py --paper requires an existing file and the account setup described in the CLI documentation. The command does not create a strategy, select a fresh market for you or enable public live execution.

2. Establish delivered data

Look for actual callback observations with exact market/outcome identifiers and a meaningful timestamp. A successful connection alone does not prove that a snapshot or later update arrived. An open market in an old configuration can now be closed or unavailable.

Keep absent quotes separate from a zero price, and distinguish observation time from receipt time. Repeated or out-of-order records can invalidate a strategy condition even when the count increases. A green worker and a rising counter do not prove continuous, timely coverage.

3. Inspect the decision branch

Record the inputs immediately before the branch that proposes an order, along with the reason it did or did not proceed. A threshold never reached during a short window can legitimately produce no orders. Test the branch offline with a fixture that should trigger it and one that should not.

An observer intentionally designed to log data without placing orders should have zero fills. Define its success in delivered observations and clean shutdown, rather than modifying it into a trade merely to satisfy an unrelated metric.

4. Distinguish requests and admission

An intent is not an accepted order. Check returned errors and the resulting state. Price units, dollar stake versus contract quantity, market status, declared risk limits and supported methods can each matter.

Banger Context.place takes USD notional, while held-contract closes use a different quantity convention. Repeated small acquisitions can reach a cumulative position cap. Treat that rejection as evidence to explain, not permission to bypass the envelope or borrow another account’s allowance.

5. Identify the exact simulator

Real resting orders need counterparties; a crossing price does not guarantee complete execution regardless of depth, timing and venue rules. But those facts do not establish how a particular paper mode simulates a fill.

Banger’s public 0.1.7 forward-paper context explicitly assumes a fill at a non-crossing requested limit in one path, logged as paper.fill.resting-assumed. It uses a reported-volume cap when that input is available; that is not a reconstructed queue or full depth ladder. Missing quote data can also lead to a fallback. Hosted historical backtesting is a separate model.

Therefore, a non-crossing limit is not automatically the cause of a no-fill in this forward-paper path. Inspect admission, model and persisted execution evidence. Do not present passive simulated fills as faithful real-book outcomes or assume every mode behaves identically.

6. Preserve the result and stop

A useful diagnosis identifies a demonstrated failure or explains an intentional no-order result. It does not require trading until something fills. Banger’s public beta is paper-only; a synthetic fixture or simulated fill establishes limited implementation evidence, not real execution or a profitable strategy.

Sources

Keep reading

Run your first strategy free

Paper-trade on Polymarket and Kalshi market data without venue keys.

Start free