9.17 Execution Is Part of Expected Value: VWAP Slippage, the Five-Cent Threshold, and Why Copytrading an Arb Loses

A guaranteed arbitrage is fiction until both legs fill. Sequential fills move the book against you, you pay the VWAP not the quote, and below five cents slippage and gas eat the edge. Copying an arb just makes you exit liquidity.

9.17 Execution Is Part of Expected Value: VWAP Slippage, the Five-Cent Threshold, and Why Copytrading an Arb Loses

The companion article "Arbitrage Is Just Projection" hands you a number: the guaranteed profit of the optimal trade, say 40 cents, proven risk-free across every outcome. That number is a lie until you fill both legs. A 40-cent arbitrage where one leg fills and the other does not is not a 40-cent trade. It is a directional bet you never meant to place, and it can lose. The whole guarantee lives or dies on execution, and execution is not a footnote to the math. It is a term in the expected value, and usually the term that decides the sign.

This is the same lesson from the old article "Why Traders Lose Even When Their Ideas Are Good," where a Sharpe-1 rule turns negative live because the seven execution layers between signal and P&L each skim their cut. Prediction-market arbitrage has fewer layers and sharper teeth. Miss a leg on a binary and you own a naked position that pays a dollar or zero.

The trades do not fill together

Polymarket runs a central limit order book, and multi-leg arbitrage fills sequentially, one order at a time. There is no atomic "buy the whole bundle" button. You send leg one, it fills, and that fill is public information that moves the book before you send leg two.

Watch it break. Your plan says buy YES at 30 cents and NO at 30 cents, total 60 cents, guaranteed dollar back, 40 cents locked.

  • Leg one, YES at 30 cents, fills.
  • The fill moves the market. Other participants see it and react.
  • Leg two, NO, now shows a best ask of 78 cents.
  • Total cost 30 plus 78, which is 108 cents, against a dollar payout. You lose 8 cents.

You detected a real, provable arbitrage and still lost money, because the arbitrage existed at prices you could only get by filling both legs at once, and you could not fill both legs at once. The pre-execution guarantee became a post-execution directional bet the instant leg one printed.

Chain the fill probabilities, and watch them rot

Model execution as a stochastic process. For a trade with k legs, let the fill of each leg be an event, and the probability that all of them fill is the product of conditional probabilities.

$$ \Pr(\text{all fill}) \;=\; \Pr(F_1)\,\Pr(F_2 \mid F_1)\,\cdots\,\Pr(F_k \mid F_1,\dots,F_{k-1}) $$

Read the conditioning bars, because they are the whole point. The probability that leg two fills is conditioned on leg one having filled, and that condition makes it worse, not better, because leg one's fill moved the price against you. These probabilities are not independent, and they do not stay flat. Each fill degrades the next. A four-leg combinatorial arb needs four dependent events to all break your way, and the joint probability collapses faster than intuition expects.

So the honest expected value discounts the guaranteed profit by whether you actually get the whole trade on.

$$ \mathbb{E}[\Pi_{\text{realised}}] \;=\; \Pr(\text{full}) \cdot \bigl(\Pi^* - \mathbb{E}[\text{slippage}]\bigr) \;+\; \Pr(\text{partial}) \cdot \mathbb{E}[\Pi_{\text{partial}}] $$

The first term is the good case: everything fills, and you keep the theoretical profit minus slippage. The second term is the trap: a partial fill leaves you holding some legs and not others, and that stranded position usually loses. The expected partial profit is negative, and when the full-fill probability is low, the second term dominates and the whole expression goes negative. A "guaranteed 40 cents" with a 50 percent chance of stranding you on a leg that loses 60 cents is a losing trade, and the projection math never told you that. Execution did.

VWAP: what you actually pay when you eat the book

The theoretical profit assumes you buy at the quoted price. You do not. You buy at the volume-weighted average price across every level your order eats, and the gap between that average and the top quote is slippage.

$$ \mathrm{VWAP}(S) \;=\; \frac{1}{S}\sum_{j=1}^{L} \min\!\bigl(w_j,\, (S - \textstyle\sum_{k

The S is your order size, the pairs of price and size are the levels of the ask book sorted cheapest first, and the formula fills as much as it can at each level before climbing to the next. Slippage is that average minus the best quote. Code the sweep once and it is clearer than the formula.

def vwap_and_slippage(book, size):
    # book: list of (price, size_available), sorted by ascending price
    spent, filled = 0.0, 0
    for price, avail in book:
        take = min(avail, size - filled)   # eat this level, up to what's left
        spent += take * price
        filled += take
        if filled >= size:
            break
    if filled < size:
        raise ValueError("book too thin to fill the order")  # liquidity failure
    vwap = spent / size
    slippage = vwap - book[0][0]           # avg fill minus the best quote
    return vwap, slippage, spent

Run it on a real-looking book. The ask side has 500 shares at 32 cents, 300 at 34 cents, and 200 at 38 cents. You want 900 shares.

Level Price Available You take Cost
1 32c 500 500 160.00
2 34c 300 300 102.00
3 38c 200 100 38.00

Total spend is 300 dollars for 900 shares, a VWAP of 33.3 cents. The best quote was 32 cents. You paid 1.3 cents more per share on average, and on 900 shares that is 11.70 dollars of execution cost that never appeared in the theoretical profit. If the projection said the edge was 15 dollars and slippage across both legs eats 12, your real edge is 3 dollars, and it should not be traded.

The five-cent threshold is not arbitrary

Put the pieces together and you get the rule practitioners actually use: skip any arbitrage whose guaranteed profit is under about five cents. That floor is where the execution terms above stop being noise and start being the whole trade. Below five cents, the slippage on two legs, the gas to submit on-chain, and the negative expected value of a partial fill reliably exceed the edge. The projection can hand you a two-cent "guarantee" all day. Every one of them loses after execution.

The maximum you can extract is also capped by the thinnest leg, not the fattest.

$$ \Pi_{\max} \;=\; \text{price deviation} \times \min(\text{depth across all legs}) $$

You cannot size the trade to the deep leg and hope the thin one keeps up. The thin leg sets the ceiling, and for a multi-condition arbitrage the depth has to exist simultaneously on every required position, at the same instant, or the trade is not there at the size you want. The old article "Why Transaction Costs Should Be Added Before You Fall in Love" makes the general version of this point: apply costs at the prototype stage, before you have decided the strategy works.

Latency: you are not fast enough, and the numbers say so

Total time from spotting the opportunity to on-chain confirmation breaks into four pieces: detect, compute, submit, confirm. The retail-versus-professional gap is not a margin. It is three orders of magnitude.

Component Retail Professional
Detection 30,000 ms 5 ms
Computation 10,000 ms 10 ms
Submission 8,000 ms 15 ms
Confirmation 2,000 ms 2,000 ms
Total about 50,000 ms about 2,030 ms

The confirmation time is shared, because that is the chain. Everything above it is you, and a retail stack spends 50 seconds where a professional spends two. The critical window is the roughly 30-millisecond gap between decision and getting into the mempool, and the goal is to land all legs inside a single Polygon block, about two seconds, so no price moves between legs. Same-block execution is the only version of this trade where the sequential-fill problem from the top of the article disappears. Miss the block and you are back to legging in against a moving book.

Why copytrading an arbitrage is exit liquidity

This kills the obvious retail shortcut. Someone watches a winning arbitrage bot, sees it capture an opportunity in block N, and copies the trade. By the time you can see block N, the arbitrage in it is gone, because the bot's fills are what closed it. You submit at block N plus one, buying at post-arbitrage prices, which means you are the counterparty the smart flow needed to exit. You are not capturing the arb. You are providing the liquidity that lets the winner realize it.

The empirical realization rates tell the same story from the other side. Single-condition arbitrages, the simple two-leg kind, get realized most of the time, on the order of 87 percent, and they fail mostly on liquidity. The complex trades fail far more.

Type Detected Realized Main failure
Single condition 7,051 about 87% liquidity
Market rebalancing 662 about 42% price movement
Combinatorial 13 about 45% simultaneous liquidity

Read the second and third rows as a warning. The trades the earlier articles in this pillar make possible, the multi-leg combinatorial ones from the projection and Frank-Wolfe machinery, are exactly the ones that fail on execution more than half the time, because they need many fills to land together against books that move the instant you touch them. The math is elegant and the execution is brutal, and only the execution shows up in your account.

Visualizing execution risk

KEY POINTS

  • A guaranteed arbitrage profit is fiction until both legs fill. Multi-leg trades on a central limit order book fill sequentially, and the first fill moves the book against the second, so a proven arb can become a losing directional bet.
  • The probability all legs fill is a product of conditional probabilities that get worse as you go, because each fill degrades the next. The expected value has a partial-fill term that is negative and often dominates.
  • You pay the volume-weighted average price across every level your order eats, not the top quote. On a 900-share order sweeping 32c/34c/38c you pay 33.3c average, and the 1.3c slippage is real money the theoretical profit ignored.
  • The five-cent minimum profit threshold is not arbitrary. Below it, two legs of slippage, gas, and negative partial-fill expected value reliably exceed the edge. Extractable size is capped by the thinnest leg, and combinatorial arbs need depth on every leg at the same instant.
  • Latency is three orders of magnitude between retail (about 50 seconds) and professional (about 2 seconds). The goal is all legs inside one Polygon block so no price moves between them. Miss the block and you leg in against a moving market.
  • Copytrading an arb is exit liquidity. By the time you see the block that captured it, the opportunity is gone, and your copy buys at post-arb prices. Single-condition arbs realize around 87 percent of the time; combinatorial ones fail more than half.

References