Dynamic slippage control and rejection feedback in spot FX market making

This paper proposes a dynamic market-making framework for spot FX that jointly optimizes size-dependent quotes and trade rejection decisions to manage latency-driven adverse selection, while incorporating an endogenous feedback mechanism where past rejections modulate client order flow, ultimately solved via dynamic programming and approximated by a tractable adiabatic-quadratic method.

Alexander Barzykin

Published 2026-03-10
📖 5 min read🧠 Deep dive

Imagine you are a high-stakes currency trader (a "Market Maker") running a busy booth at a global exchange. Your job is to constantly shout out prices for buying and selling currencies to a crowd of clients.

The problem? You are shouting your prices from a booth, but the clients are in a different city. By the time your shout reaches them, the market might have moved. This delay is called latency.

If the market moves against you while your client is thinking about your price, you could lose money. This paper is a guide on how to manage that risk without losing your customers.

Here is the breakdown of the paper's ideas using simple analogies:

1. The Problem: The "Stale Price" Dilemma

Imagine you are selling a pizza. You shout, "Large Pepperoni for $10!"

  • The Delay: It takes 0.5 seconds for the customer to hear you and run to the counter.
  • The Risk: In that half-second, the price of cheese spikes. If the customer still wants the pizza at $10, you just lost money on the deal.
  • The Old Solution: You could just widen your price gap (charge $12 instead of $10) to protect yourself. But this makes you less competitive, and customers might go to a cheaper booth.

2. The New Tool: "Last Look" (The Rejection Button)

In the real world, traders use a feature called "Last Look." It's like a tiny pause button.

  • When a client says, "I'll take that $10 pizza," you get a split second to check the current price.
  • If the price has moved against you too much, you can say, "Sorry, that price is no longer valid," and reject the trade.
  • The Catch: If you reject too many orders, customers get annoyed. They feel you are being unfair or "gaming the system." They might stop calling you or go to a competitor. This is called Reputation Risk.

3. The Paper's Big Idea: The "Smart Refusal" Strategy

The author, Alexander Barzykin, built a mathematical model to answer a complex question: "How do I decide exactly when to reject a trade to protect my wallet, without ruining my reputation?"

He treats this not just as a rule, but as a dynamic game with two moving parts:

A. The "Slippage" Threshold (The Bouncer)

Instead of having a fixed rule like "Reject if the price moves more than 1 cent," the model suggests the threshold should change based on:

  • How much inventory you have: If you are already holding too much of a currency, you become pickier.
  • How toxic the order is: If the client seems to be betting against you (adverse selection), you reject faster.
  • The "Option" Analogy: The paper views the decision to reject as writing an insurance policy. When you accept a trade, you are selling an option to the client. If the market moves badly, you "exercise" your option to cancel the deal. The model calculates the perfect price for that option.

B. The "Reputation Score" (The Karma Meter)

This is the most creative part. The model introduces a Reputation Score (let's call it the "Karma Meter").

  • How it works: Every time you reject a client, your Karma Meter goes down slightly. Every time you accept a fair trade, it slowly recovers.
  • The Feedback Loop: The model assumes that if your Karma Meter is low, fewer clients will call you. They sense you are being difficult.
  • The Strategy: The model shows that if your Karma Meter is low, you should actually tighten your spreads (make your prices more competitive) and reject fewer trades to win back trust. It's a "repair and exploit" strategy: be nice to fix your reputation, then be smart to make money.

4. The "Adiabatic" Shortcut (The Fast-Forward Button)

Solving the math for this game is incredibly hard because the market moves fast (milliseconds), but reputation changes slowly (hours).

  • The Analogy: Imagine driving a car (fast inventory changes) while looking at a map that updates very slowly (reputation).
  • The Solution: The author developed a "shortcut" method. He assumes the reputation score stays "frozen" for a moment while you make your quick trading decisions. This turns a super-complex, impossible-to-solve equation into a manageable one that a computer can solve instantly.

5. The "Fair" Protocol (The Honest Bouncer)

The paper also tests a "Fair" version of rejection.

  • Unfair: You reject when the market moves against you, but you keep the trade when the market moves in your favor. (This is like a bouncer who only kicks out people who are late, but lets everyone else in).
  • Fair: You set a symmetric rule. If the price moves against you by X, you reject. But if the price moves in your favor by X, you give that extra profit back to the client.
  • The Result: The model shows that while the "Unfair" method makes slightly more money in a vacuum, the "Fair" method is much better for long-term business because it keeps the Reputation Meter high and clients happy.

Summary: What's the Takeaway?

This paper teaches dealers that rejection is not just a risk control; it's a strategic lever.

  1. Don't just widen spreads: Instead, use smart, dynamic rejection rules to filter out bad trades.
  2. Watch your Karma: If you reject too many people, you lose future business. The model helps you find the "Goldilocks" zone where you reject enough to stay safe, but not so much that you lose your customers.
  3. Be Fair: The most profitable long-term strategy often involves being transparent and fair, because it keeps the "Karma Meter" high, ensuring a steady stream of customers.

In short, it's a guide on how to be a smart, tough, but fair trader in a world where milliseconds matter and reputation is everything.