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-07-09 · 6 min read · facts as of 2026-07-09

Managing Inventory Risk When Market-Making Event Contracts

When you quote both sides of an event contract, you are not betting on the outcome. You are renting out liquidity and collecting the spread. The problem is that the spread is small and the inventory you pick up along the way is not. On a binary contract the tail is brutal: hold the wrong side into resolution and the position does not drift, it goes to zero.

This post is about the middle of that trade. How inventory builds up when your quotes get hit, why it becomes especially dangerous as the market approaches settlement, and how to skew your quotes so your position mean-reverts toward flat instead of wandering off.

Why inventory accumulates at all

A market maker posts a bid and an ask, earns the spread when both get filled, and in the process accumulates inventory that is usually unwanted, then has to manage the risk that price moves against that position before it can be unwound. That is the whole job description, and it is the same on Kalshi as it is in equities.

On a prediction market the mechanics are concrete. Kalshi runs a quote-driven order book where makers post offers and takers accept them, and every contract has two sides: someone can buy Yes and someone can buy No. Prices sit between one cent and 99 cents, and a contract settles at one dollar if the event happens and zero if it does not. So a Yes contract at 40 cents is a claim the market prices at roughly 40 percent.

The reason inventory piles up is adverse selection. If you quote a symmetric spread around the mid, your bid gets hit when the market is falling and your ask gets lifted when it is rising. You systematically end up long into weakness and short into strength. Under symmetric quoting, inventory follows a random walk and can drift arbitrarily far from zero, exposing you to unbounded risk. The fills you want most are the ones you do not get.

Why it gets dangerous near resolution

Two things happen as an event contract approaches its close, and they compound.

Empirically, prices on these markets become more accurate as they approach closing, and they show a favorite-longshot bias, with low-priced contracts winning less often than their price implies and high-priced contracts winning slightly more. For a maker that means the cheap-tail contract you are quietly long is more likely to expire worthless than its price implied. Residual inventory near resolution is not a rounding error. It is the position most likely to define your day.

The fix: skew quotes around a reservation price

The standard answer is not a fixed spread around the mid. It is a spread around a private fair value that drifts away from your inventory. This is the Avellaneda-Stoikov framework, published in Quantitative Finance in 2008, which treats quoting as a stochastic-control problem and produces closed-form expressions for the optimal bid and ask as functions of price, inventory, volatility, and time to close.

Two outputs matter. The reservation price is your inventory-adjusted fair value: when you are long it sits below the mid, when you are short it sits above. You then post your bid and ask around that reservation price rather than the mid. The effect is that when inventory is positive the skew makes ask fills more likely than bid fills, pushing inventory back toward zero, and the reverse when you are short. Asymmetric quoting turns the random walk into mean reversion.

The reservation price skews away from inventory by an amount that scales with your risk aversion, the variance of the price, and the time remaining. In the version adapted for prediction markets, the model is written in logit units and the inventory adjustment is proportional to inventory times a risk-aversion term times belief variance times time-to-horizon. The practical consequence is the important part: as time-to-close shrinks, the inventory penalty shrinks too, so the model pulls your reservation price back toward the mid and stops you defending a position you can no longer unwind. It quotes you out of inventory before resolution rather than into it.

A minimal version of the reservation-price and spread logic looks like this:

# inventory-aware quoting, one contract
# mid in probability terms (0..1), q = signed inventory in contracts
# gamma = risk aversion, var = short-horizon price variance, tau = time to close

reservation = mid - q * gamma * var * tau      # skews below mid when long
half_spread = 0.5 * gamma * var * tau + base_edge

bid = reservation - half_spread
ask = reservation + half_spread

# as tau -> 0 the inventory term vanishes: quotes collapse back toward mid,
# so you stop accumulating and lean on getting flat before settlement

Skew is your primary lever, but it is not the only one. Widen the spread when volatility rises, because the model widens the gap between reservation and mid as volatility increases. Cancel stale quotes fast when the book moves, since the maker with faster cancels avoids getting run over on one-sided news. And cap inventory with a hard position limit so a single bad regime cannot blow past your skew, which only nudges, it does not force.

Where automation fits

None of this is discretionary. Recomputing a reservation price on every book update, re-quoting, cancelling stale orders, and enforcing a hard flat-by-resolution rule is a loop that has to run continuously and identically every time. That is exactly the kind of thing you want to write once, test, and let run.

This is the shape of a Banger strategy. You express the quoting logic as a banger.Strategy in Python, paper-trade it against the live order book with banger run strategy.py --paper to see how your skew actually behaves against real one-sided flow, and wrap it in a declarative risk envelope: a per-trade cap, a daily loss stop, a max-open-positions limit, and a kill switch. Banger never custodies funds; you bring your own venue keys. The point is not that automation makes market-making safe. It is that inventory risk is a control problem, and you cannot control a loop by hand.

The takeaway

Quoting both sides does not make you neutral. Adverse selection makes you long into weakness and short into strength, and on a binary contract that inventory resolves to zero or one. Skewing quotes around an inventory-adjusted reservation price gives your position a pull back toward flat, and letting the time term decay that skew near close is what keeps you from defending a position you can no longer exit. Settlement pays 0 or 1, and the inventory you are holding when it does is the only number that matters.

Sources

Keep reading

Run your first strategy free

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

Start free