Every call to SigningClient::build_order silently makes two network round-trips to the CLOB to fetch per-token static fee parameters — on the first shot and on every FAK retry — making each requote attempt cost ~4 RTTs instead of 2.
The hidden calls
Inside SigningClient::build_order (polymarket-clob/src/lib.rs:538-548):
| Call | Cost | Condition |
|---|---|---|
self.inner.fee_rate_bps(tid).await | network RTT to CLOB | always |
self.inner.fee_exponent(tid).await | another RTT | when base_fee > 0 |
These are per-token static values — they are precisely what produces the exactly-constant 0.10 coefficient documented in pmv2-fee-coefficient-010-vs-007-overbooking-2026-07-21. They never change per attempt, yet they are fetched uncached on every build.
Cost per requote attempt
Each attempt in fak_retry (execute.rs:388) pays roughly 4 network round-trips:
book_top ~212ms (measured)
fee_rate_bps (hidden, inside build_order)
fee_exponent (hidden, inside build_order)
place_order ~150-200ms
No sleeps in the loop; MAX_RETRIES = 2.
Prime latency target
Caching the fee params per
token_idremoves 2 of 4 RTTs per attempt with zero behavioural change. Without it, the irreducible floor is ≈ 700ms–1s per attempt, which is consistent with crypto’s observed 2.78s requote p50 across up to 2 attempts.
Measure first
45fa0eb already emits the decomposition on target: "pmv2.latency", message "exec decomposition":
| Field | Covers |
|---|---|
build_ms | includes both hidden fee calls |
place_ms | order submission |
book_ms | book_top fetch |
reserve_ms | DB reserve |
If build_ms is large, the cache is confirmed as the win. This follows the discipline from pmv2-measure-before-mitigating-priority-tiers-2026-07-09 — a plausible mechanism is not evidence.
Not scheduled work
The crypto lane is SHELVED (Andras, 2026-07-21) with all wallets dry. There is no live loop to optimise. This note is design intel for whenever the lane resumes — not a queued task.
Related
- position_manager
- pmv2-fee-coefficient-010-vs-007-overbooking-2026-07-21
- pmv2-measure-before-mitigating-priority-tiers-2026-07-09
- pmv2-entry-config-cache-design-2026-07-09
- pmv2-usdc-size-6dp-build-order-crash-2026-07-15
- pmv2-fak-no-match-reject-single-line-2026-06-30
- pmv2-open-multi-wallet-liquidity-ceiling-brainstorm