Life of a Fill: How Market Makers Work on UniswapX | Alan Wu

ETHTaipei 2026

I gave this talk at ETHTaipei 2026 on September 13, 2026.

Watch the recording on YouTube · 25 minutes

Why I wanted to talk about RFQ

My previous UniswapX talks explored Dutch auction design and MEV taxes. This time, I wanted to focus on request for quote (RFQ), which accounts for nearly all UniswapX volume but gets comparatively little explanation.

RFQ is familiar enough that “market makers compete to offer a price” can feel like a complete explanation. I wanted to follow what happens behind that description. Where does the quote come from? What happens when it wins? How does the market maker deliver the trade, manage the resulting exposure, and decide what to quote next?

In this talk, I follow a single trade through UniswapX from the market maker’s perspective. The goal is to give people a working picture of the system and an introduction to the deeper design questions within it. The walkthrough focuses on the Ethereum mainnet RFQ path and uses illustrative market-making strategies to explain the decisions involved.

Key takeaways

  • A quote reflects the market maker’s whole situation. The same trade can be worth different amounts to different makers because of their inventory, available capital, hedging costs, and execution risks.
  • RFQ design extends from price discovery through settlement. Keeping quotes fresh, making commitments credible, and learning from completed trades all shape how the system works.

Following a trade through UniswapX

Price discovery between blocks

With UniswapX, the swapper signs an offchain intent describing the trade they want and the conditions that must be satisfied. A filler supplies the execution path and sends the transaction that settles the trade. The filler also pays the gas for that fill.

An intent can work with different price-discovery mechanisms. RFQ allows market makers to return fresh offers between blocks, while settlement remains onchain. This matters because the wider market keeps moving while a route through AMM pools still sees the same confirmed pool state. Offchain quoting lets pricing respond without waiting for that state to change.

From a displayed quote to a commitment

Suppose a swapper wants to sell 1 ETH for USDC. One market maker offers 2,980 USDC, another offers 2,990, and a third declines to quote. The best offer reaches the swapper. This is a blind, first-price auction: makers cannot see competing bids, and the winner trades at its own quoted price.

There is a timing problem, though. The swapper may pause before signing or take time to connect a hardware wallet. The price they first saw can become stale. The RFQ flow therefore separates the soft quote shown before signing from a fresh hard quote requested afterward. The final terms must remain within the user’s signed constraints.

The winning hard quote selects an exclusive filler. That maker targets execution in the next block. If the order remains unfilled when exclusivity ends, it enters an open Dutch auction fallback. The next-block target and the exclusivity deadline are different, and the fallback provides another opportunity to fill rather than a guarantee of completion.

The Ethereum RFQ path: soft quote, user signature, hard quote and exclusive filler, then onchain execution, with an open Dutch auction fallback if exclusivity ends unfilled.

The RFQ lifecycle from the talk. Select the diagram to view it at full size.

Where the market maker’s quote comes from

Our example maker has won the right to receive 1 ETH in exchange for delivering 2,990 USDC. It could source that USDC by routing the ETH through onchain pools. In the talk, I concentrate on another approach: paying from inventory and managing the exposure that the trade creates.

The maker’s capital may be spread across an executor contract on Ethereum, spot balances on another venue, and collateral supporting a perpetual hedge. The location of that capital matters. A profitable-looking trade is only executable if the maker can deliver the required assets onchain. Moving funds takes time and can incur fees.

A reference price is the starting point for an offer. The maker also needs to account for execution costs, uncertainty, hedging costs, and the inventory it wants to hold. For example, a maker that is already long ETH might lower both its bid and ask: it becomes less eager to buy more ETH and more competitive when selling. Future order flow can then help rebalance the book, subject to the risk of waiting for it.

This also explains why a larger trade need not receive a worse price. Buying 100 ETH takes a maker from +20 ETH to +120 ETH of exposure in one example. In another, it takes a maker from −90 ETH to +10 ETH. The second maker has a reason to bid more aggressively because the trade helps resolve an existing inventory imbalance.

These are examples of the decisions a maker might make. Each firm has its own pricing and risk policies, and the talk gives an overview of that design space.

Winning, executing, and hedging

Winning a quote deserves scrutiny. Perhaps our inventory or execution gives us an advantage. Perhaps we have overestimated the trade’s value. A pricing error can make our offer more likely to win, which is why adverse selection and the winner’s curse matter when evaluating the flow we receive.

To settle the trade, the maker submits a transaction through its executor contract, which calls UniswapX. A callback allows the executor to perform strategy logic and safety checks before UniswapX completes settlement under the order’s conditions. The maker must handle gas, available balances, approvals, transaction submission, and recovery from failures.

Hedging introduces another timing decision. The onchain fill can be atomic, but an external hedge is not atomic with it. Hedging before the fill risks leaving the maker with the hedge if settlement fails. Hedging afterward exposes it to a price change before the hedge executes. Those risks feed back into the quote.

Even a successful hedge can leave operational work. The maker may end up holding ETH onchain and USDC on a different venue. Its exposure may be balanced while its capital still needs to move before it can service the next trade.

Why honoring a quote needs incentives

The filler controls submission of the settlement transaction. During the interval after winning, it can keep watching the market. Without consequences, it could fill when prices move favorably and walk away when they move against it. That ability to take a last look gives the maker an option at the swapper’s expense.

A selected maker’s failure to settle within its exclusivity window is called a fade. UniswapX’s offchain RFQ system uses a circuit breaker that can pause a maker’s access to new order flow based on its fade history. The opportunity cost of losing future trades changes the economics of abandoning a commitment.

This is one of the design questions I wanted to make visible: a competitive displayed price only helps the swapper if the system also gives makers a reason to deliver it.

Learning from the trades that fill

Pricing depends on assumptions about the market, inventory, future order flow, and execution. Those assumptions need to improve as conditions and competitors change. In the talk, I separate three useful checks:

  • Modeled edge: with a 3,000 USDC reference and a 2,990 USDC buy quote, the maker expects 10 USDC of gross edge before costs.
  • Markout: if the reference falls to 2,980 USDC five seconds after buying at 2,990, the five-second buy markout is −10 USDC. This compares the fill with a later reference price.
  • Hedge execution: if the maker actually sells the ETH at 3,000 USDC one second after the fill, the gross spread is 10 USDC before gas and fees. The actual hedge’s price, timing, and costs test the execution assumptions behind the quote.

These measurements answer different questions. Together, they help a maker refine the pricing and execution decisions that produced the trade.

Market-maker architecture: RFQ requests feed pricing and eligibility using market data and portfolio capital. Finalized orders feed execution. Analytics improve the model, while risk policy, hedges, and transfers connect pricing, capital, and settlement.

The system behind one quote, from the talk. Select the diagram to view it at full size.

Back to the swapper

The Uniswap interface or API compares the RFQ offer with an AMM route and presents the better available quote. Behind that simple experience sits the work we followed: valuing the order, making capital available, executing the fill, managing exposure, and updating the next decision.

There is much more nuance within each part of this system. My aim with this talk was to make the pieces and their relationships concrete, so that “RFQ” brings to mind the process behind a completed trade.

Recording chapters

Related talks and resources