# Audit #172 addendum (#194): is replay x net of fees? Hit-rate gap vs live (testmgr, 9 Oct 2026)

## 1. Net or gross: NET (A1 is right, A2's note is wrong)
- now_trades.csv comes from harness bt.py with fw_mc5_now.json: fee_each_way 0.01 and gas_each_way $0.05, ticket $1,000. bt.py (lines ~237-247) charges the fee on both legs (`s*(1-f)-gas` in, `usd*(1-f)-gas` out) and the pool's own fee tier inside the tick walk. x = out/in.
- Check on the data: 138 stop exits sit at 0.49 (30), 0.48 (15), 0.50 (13). A gross stop at 0.50x gives 0.50 x 0.99 / 1.01 = 0.49 net. A gross file would show a spike at exactly 0.50.
- A2's header in fw/a2-mc5-mood.md ("x = exit multiple before fees") is a mislabel. Told analyst2. Its BTC/ETH conclusions do not depend on it.
- Caveat for $10 live: replay is at a $1,000 ticket (more slippage in the tick walk than $10), but gas is a flat $0.05 in the replay; real GMGN gas+fee at $10 is a bigger share. Fee modelling of live is not proven; the 25 live trades (mean 2.31x) are the real check.

## 2. Hit rate 20% (replay, 201) vs live 2/25 (8%)
- If true rate is 20%: P(<=2 hits in 25) = 9.8%. At 17% (>=2x rate) = 17.7%. So luck alone explains it; not significant.
- Same-coin check (A1 fw/a1-live-vs-harness.md, 18 closed pairs): live winners 29.4x / 19.5x vs harness 24.6x / 17.6x. Live hits the same coins, and does not miss winners it traded. So fills/entry timing are not the gap. Entry delay live vs trigger in live.txt is 294-306 s, same as replay (306 s).
- The one real hit-rate loss: the 19.5x coin 0x1dada094 (8 Oct 08:05) missed by HTTP 429 at entry (retry fixed 8 Oct 15:23). With it live is 3 of 26 (11.5%), P(<=3)=~23% at 20%. Other misses (GMGN buy_fail x2, cap_out 245k vs 250k floor, one coin not in feed) were all losers in replay (0.4-0.49x).
- Stop fills: replay 0.49x vs live 0.22-0.52x. Live 0.22/0.30/0.01 are gaps and rugs where the stop level is gone before the sell lands (next-block exit in replay does not model the sell failing, e.g. pool emptied in one tx, GMGN refusing). Average live stop fill is about 0.44x vs 0.49x: ~0.05x per loser, ~0.04x x 80% = ~-0.04x on the mean x. Small against a mean of 2.2x, but it matters for the 1.5x live gate at $50.
- Verdict: no evidence of a bug in fills/timing; hit-rate gap = luck plus the one 429 miss. Keep watching: after 100 live trades compare hit rate again (power is too low at 25).
