---
title: "How Bonds Trade"
book: "Markets II: Rates, FX and Credit"
subject: quant
language: en
chapter: 22
exercises: 8
source: https://one-course.com/books/quant/2/en/chapter/22-how-bonds-trade
---

# Chapter 22 — How Bonds Trade

A large company may have fifty bonds outstanding and its stock one line on an exchange. Each bond is a separate security with its own coupon and maturity, and most of them do not trade on most days. There is no order book to consult; an investor who wants to sell asks dealers for prices, and the answer depends on who is asked, how many, and what they learn from being asked. Until 2002 even the prices of past trades were private. Since then, American dealers have reported every corporate bond trade to a public tape, and since 15 May 2023 they have flagged trades done as part of a portfolio: in its first week, those were already 5.2% of the notional traded. This chapter explains the [request for quote](#def-m2-how-bonds-trade-rfq), [trade reporting](#def-m2-how-bonds-trade-trace), the new ways bonds trade in bulk or with each other, the bond exchange-traded funds that sit on top of the market, and how dealers price what rarely trades.

## 22.1 Request for quote

**Definition 22.1 (Request for quote, axe).**

A *request for quote* (RFQ) is a client’s request, usually sent electronically to several dealers at once, for a firm price to buy or sell a stated amount of a security; the client trades with the best answer or none. An *axe* is a dealer’s advertised interest in buying or selling a particular bond, usually because of its inventory.

The RFQ is an auction the client runs for each trade. Asking more dealers brings more competition and a better best price. But each dealer asked learns that someone wants to sell that bond now, and a losing dealer may use that knowledge, selling the bond or its hedges ahead of the winner, or simply marking it down; the client pays for that through the price of this trade or the next. [Axes](#def-m2-how-bonds-trade-rfq) tell the client which dealers want the other side and so are likely to bid well.

**Proposition 22.2 (How many dealers to ask).**

Suppose dealer $i$ bids $v - m + \sigma Z_i$, with $v$ the bond’s value, $m$ an average markup and $Z_i$ independent standard normal private terms (inventory, [axes](#def-m2-how-bonds-trade-rfq), views), and that each losing dealer costs the client $\ell$ through leakage. Selling to the best of $n$ bids costs, in expectation,

$$
C(n) \;=\; m - \sigma\,e_n + \ell\,(n-1),
$$

where $e_n$ is the expected maximum of $n$ standard normals ($e_1 = 0$, $e_2 = 0.564$, $e_3 = 0.846$, $e_4 = 1.029$). Since $e_n$ grows ever more slowly, $C$ has a minimum at a finite $n$, which falls as the leakage $\ell$ rises.

**Proof.** The best bid is $v - m + \sigma\max_i Z_i$, whose expected discount to $v$ is $m - \sigma e_n$; the $n-1$ losers add $\ell$ each. The increments $e_{n+1} - e_n$ decrease to zero, while leakage adds $\ell$ for every dealer, so $C(n+1) - C(n) =
\ell - \sigma(e_{n+1} - e_n)$ turns positive. ∎

![A client’s expected cost of selling a bond by RFQ, in basis points of price, by the number of dealers asked, with an average markup of 10 basis points, a spread of private terms of 5 and three levels of leakage per losing dealer. The best number of dealers is 6, 3 and 2. Illustrative; data: the chapter’s tutorial.](https://one-course.com/images/onecourse/chapters/quant-2/m2-how-bonds-trade/fig-c71554b44d71.svg)

***Figure 22.1.** A client’s expected cost of selling a bond by RFQ, in basis points of price, by the number of dealers asked, with an average markup of 10 basis points, a spread of private terms of 5 and three levels of leakage per losing dealer. The best number of dealers is 6, 3 and 2. Illustrative; data: the chapter’s tutorial.*

**Example 22.3 (Three dealers).**

With a markup of 10 basis points, private terms spread by 5 and a leakage of 1 basis point per loser, asking one dealer costs 10.0 basis points, two 8.18, three 7.77, four 7.85 and six 8.66. Three is best; on a USD 25 million sale it costs about USD 19 400, against USD 25 000 with a single dealer.

![Simulated distribution of the winning bid’s discount to the bond’s value, before leakage, when one, three or six dealers are asked. More dealers shift the distribution towards better prices and narrow it, with diminishing gains. Illustrative; data: the chapter’s tutorial.](https://one-course.com/images/onecourse/chapters/quant-2/m2-how-bonds-trade/fig-b1d2b7649ddd.svg)

***Figure 22.2.** Simulated distribution of the winning bid’s discount to the bond’s value, before leakage, when one, three or six dealers are asked. More dealers shift the distribution towards better prices and narrow it, with diminishing gains. Illustrative; data: the chapter’s tutorial.*

## 22.2 Trade reporting and transparency

**Definition 22.4 (Trade reporting, dissemination cap).**

*Trade reporting* is the obligation of a dealer to report each trade, with its price, size and time, to a regulator’s system that publishes it. A *dissemination cap* is a size above which the published report shows only that the trade was larger than the cap.

FINRA’s TRACE system has collected American corporate bond trades since July 2002; dealers must report within fifteen minutes, and the reports are published as they arrive. Publication came in phases over three years, the largest, most highly rated bonds first, and large trades have been published with capped sizes: exact amounts up to USD 5 million for investment grade and USD 1 million for high yield, “5MM$+$” and “1MM$+$” above. The cap protects a dealer who has bought a large block from being front-run while it resells it; the published price still tells the market where bonds trade. The European Union had no consolidated tape of its bond trades; in July 2025 its securities regulator selected the first provider of one.

**As of September 2026 — Transparency rules.**

United States: TRACE reporting within 15 minutes for corporate bonds; portfolio-trade modifier since 15 May 2023. European Union: ESMA selected Ediphy (fairCT) on 3 July 2025 as the first consolidated tape provider for bonds, to operate for five years after authorisation.

## 22.3 All-to-all and portfolio trading

**Definition 22.5 (All-to-all trading, portfolio trade).**

*All-to-all trading* lets any participant on a platform, investor or dealer, answer any other’s request or order, instead of investors asking only dealers. A *portfolio trade* is the purchase or sale of a basket of bonds at a single agreed price for the whole basket; TRACE flags a trade as such when it is between two parties, for at least ten different bonds at one price.

[All-to-all trading](#def-m2-how-bonds-trade-a2a) widens the set of possible buyers: an asset manager selling a bond may find another manager who wants it, with no dealer in between. Portfolio trading does the opposite of RFQ for single bonds: instead of asking for a hundred prices, the client asks for one, for the whole list, and the dealer prices the risk of the basket, which it can hedge with credit indices and bond ETFs rather than bond by bond. The price of each bond in a [portfolio trade](#def-m2-how-bonds-trade-a2a) is not a negotiated price of that bond, which is why FINRA required it to be flagged: a reader of the tape should not take it as one.

![A portfolio trade. The client asks one price for a whole list; the dealer takes the basket, hedges its overall risk with bond ETFs and index swaps, and sells or redeems the individual bonds over the following days. Schematic.](https://one-course.com/images/onecourse/chapters/quant-2/m2-how-bonds-trade/fig-d06e22eb01de.svg)

***Figure 22.3.** A [portfolio trade](#def-m2-how-bonds-trade-a2a). The client asks one price for a whole list; the dealer takes the basket, hedges its overall risk with bond ETFs and index swaps, and sells or redeems the individual bonds over the following days. Schematic.*

## 22.4 Bond ETFs as a liquidity layer

A bond exchange-traded fund (One Quant Book 1, chapter 14) holds hundreds or thousands of bonds and trades on an exchange all day. Its shares trade far more easily than most of its bonds, and its authorised participants create and redeem shares against baskets of bonds: when the ETF trades below the value of its bonds, they buy shares, redeem them for bonds and sell the bonds; when it trades above, they do the opposite. The ETF is thus a liquid layer on top of an illiquid market: an investor can change its credit exposure in minutes, and the heavy lifting of trading the bonds is left to the participants, in baskets ([Figure 22.4](#fig-m2-how-bonds-trade-etf)). In stressed markets the ETF’s price can fall below the published value of its bonds, whose prices are stale because they have not traded, and the ETF becomes the place where prices are discovered.

![A bond ETF as a liquidity layer. Investors trade shares on an exchange; authorised participants exchange shares for baskets of bonds with the fund, and buy or sell the bonds in the over-the-counter market, keeping the share price near the value of the bonds. Schematic.](https://one-course.com/images/onecourse/chapters/quant-2/m2-how-bonds-trade/fig-e8a60c6e1be5.svg)

***Figure 22.4.** A bond ETF as a liquidity layer. Investors trade shares on an exchange; authorised participants exchange shares for baskets of bonds with the fund, and buy or sell the bonds in the over-the-counter market, keeping the share price near the value of the bonds. Schematic.*

## 22.5 Algorithmic dealer pricing

**Definition 22.6 (Composite price).**

A *composite price* of a bond is a single estimated price built from many observations, recent trades, dealer quotes and prices of related bonds, weighted by their recency and reliability, with outliers removed.

A dealer that answers thousands of RFQs a day cannot price each by hand. Its pricing engine starts from a composite for each bond, anchored on the last trades reported to TRACE and on quotes, moves it with the issuer’s other bonds, its CDS and the relevant index, and then adds a markup that depends on the size, the direction, the client, and the dealer’s own inventory and [axes](#def-m2-how-bonds-trade-rfq). The same engine sets how many RFQs to answer and how aggressively, the other side of [Proposition 22.2](#prop-m2-how-bonds-trade-n).

**Example 22.7 (A composite).**

Quotes of 99.42, 99.45, 99.40 and 99.47, 10, 40, 90 and 5 seconds old, and a stale print at 98.20, 20 seconds old: the outlier is dropped by the median-deviation rule, and weighting the rest by a one-minute half-life gives a composite of 99.441.

## 22.6 Tutorial: an RFQ simulator

**Goal.** Simulate RFQ auctions, compute the client’s expected cost by the number of dealers with leakage, find the best number, and build a [composite price](#def-m2-how-bonds-trade-composite). **End state:** Figures [22.1](#fig-m2-how-bonds-trade-cost) and [22.2](#fig-m2-how-bonds-trade-hist), Examples [22.3](#ex-m2-how-bonds-trade-three) and [22.7](#ex-m2-how-bonds-trade-composite) and the numbers of the weekend problem.

1. **The auction**: expected best bid, cost with leakage, the best $n$. `@cache def expected_max_normal (n: int , steps: int = 8000 ) -> float : """E[max of n standard normals] = integral of x n phi(x) Phi(x)^(n-1), by the trapezoid rule.""" if n == 1 : return 0.0 h, total = 16.0 / steps, 0.0 for k in range (steps + 1 ): x = -8.0 + k * h f = x * n * math.exp(-0.5 * x * x) / math.sqrt(2 * math.pi) * (0.5 * math.erfc(-x / math.sqrt(2 ))) ** (n - 1 ) total += f * (0.5 if k in (0 , steps) else 1.0 ) return total * h def expected_cost (n: int , markup: float , sigma: float , leak: float ) -> float : """Client's expected cost of selling by RFQ to n dealers: markup less the best private term, plus leakage to the n - 1 losers.""" return markup - sigma * expected_max_normal(n) + leak * (n - 1 ) def best_n (markup: float , sigma: float , leak: float , n_max: int = 12 ) -> int : return min (range (1 , n_max + 1 ), key=lambda n: expected_cost(n, markup, sigma, leak)) def simulate_rfq (n: int , markup: float , sigma: float , trials: int = 20_000 , seed: int = 1 ) -> list [float ]: """Winning-bid discount to value (bp) in simulated auctions.""" rng = random.Random(seed) return [markup - max (sigma * rng.gauss(0 , 1 ) for _ in range (n)) for _ in range (trials)]` **Listing 22.1.** Expected best bid, client cost with leakage, best number of dealers, simulation. code/firm/rfq/firm_rfq.py
2. **The composite**: outliers removed, recency weights. `def composite (quotes: list [tuple [float , float ]], half_life: float = 60.0 , k: float = 3.0 ) -> float : """Composite price from (price, age in seconds) quotes: drop outliers beyond k median absolute deviations of the median, then weight by recency with the given half-life.""" prices = [p for p, _ in quotes] med = statistics.median(prices) mad = statistics.median(abs (p - med) for p in prices) or 1e-12 kept = [(p, a) for p, a in quotes if abs (p - med) <= k * mad] w = [math.exp(-math.log(2 ) * a / half_life) for _, a in kept] return sum (wi * p for wi, (p, _) in zip (w, kept, strict=True )) / sum (w)` **Listing 22.2.** A composite price from quotes of different ages. code/firm/rfq/firm_rfq.py
3. **Run** `rfq_demo.problem()` , `rfq_demo.composite_example()` and `fig_rfq.py` .

**What to change next.** Make the leakage grow with the size of the trade and see the best number of dealers fall for large trades; then give one dealer an [axe](#def-m2-how-bonds-trade-rfq) (a higher mean bid) and find when asking only that dealer is best.

## 22.7 Build: the RFQ simulator

**Purpose.** The miniature firm both asks for and answers RFQs in bonds: as a client it chooses how many dealers to ask; as a dealer it prices from composites.

**Interface.** `expected_max_normal(n)`; `expected_cost(n, markup, sigma, leak)`; `best_n(markup, sigma, leak, n_max)`; `simulate_rfq(n, markup, sigma, trials, seed)`; `composite(quotes, half_life, k)`.

**Rules.** Costs in basis points of price; independent normal private terms; leakage linear in the number of losers; composite with median-deviation outlier removal and exponential recency weights.

**Acceptance tests.** `code/firm/rfq/tests/`: $e_1 = 0$ and $e_2 \approx
1/\sqrt\pi$; no leakage favours asking many, heavy leakage one; the simulated mean matches the formula; the composite ignores an outlier.

**Stretch.** Dealers who learn the client’s history; correlated private terms; a composite fitted across the issuer’s curve; RFQ response models trained on platform data (One Quant Book 12).

Sources and further reading

- FINRA, TRACE overview; Regulatory Notice 22-12 on portfolio trades.
- P. Asquith, T. Covert and P. Pathak, “The effects of mandatory transparency in financial market design: evidence from the corporate bond market”, NBER Working Paper 19417, online appendix.
- ICE, “Early observations about the new portfolio trade flag from FINRA TRACE”, May 2023.
- ESMA, selection of the consolidated tape provider for bonds, July 2025.

## 22.8 Exercises

**Exercise 22.1 ★.**

A TRACE print shows an investment-grade bond traded “5MM$+$” at 99.50. What do you know about the trade’s size?

**Solution of Exercise 22.1.**

Only that it was larger than USD 5 million, at 99.50: the cap hides the exact size of large investment-grade trades.

**Exercise 22.2 ★.**

With the chapter’s parameters and no leakage, what is the expected cost of asking one, two and four dealers?

**Solution of Exercise 22.2.**

$10 - 5e_n$: 10.00 basis points for one dealer, 7.18 for two, 4.85 for four. Without leakage more is always better.

**Exercise 22.3 ★.**

Why must [portfolio trades](#def-m2-how-bonds-trade-a2a) be flagged on the tape?

**Solution of Exercise 22.3.**

Because the price reported for each bond in a basket is an allocation of one agreed price for the whole basket, not a price negotiated for that bond; readers of the tape must know not to treat it as one.

**Exercise 22.4 ★★.**

Give the best number of dealers to ask when leakage is 0.5, 1.0 and 1.5 basis points per loser.

**Solution of Exercise 22.4.**

6, 3 and 2 dealers.

**Exercise 22.5 ★★.**

A bond ETF trades at 2% below the value of its bonds in a stressed week. What does an authorised participant do, and why might it hesitate?

**Solution of Exercise 22.5.**

It buys ETF shares cheaply, redeems them for bonds and sells the bonds, earning the discount and narrowing it. It may hesitate because the bonds’ published values are stale and it may not be able to sell them near those values, because redemption delivers bonds it must then hold or fund, and because its own balance sheet is constrained in stress.

**Exercise 22.6 ★★.**

Why might a dealer decline to answer an RFQ at all?

**Solution of Exercise 22.6.**

It may have no interest in the bond, no inventory or risk capacity, the client may be one whose requests often precede price moves, the size may be too large to hedge, or it may expect to lose the auction anyway and gain nothing but information.

**Exercise 22.7 ★★★.**

*Coding.* With `composite`, recompute [Example 22.7](#ex-m2-how-bonds-trade-composite) with a half-life of 10 seconds, and explain the change.

**Solution of Exercise 22.7.**

99.449: with a ten-second half-life the freshest quotes, 99.47 and 99.42, dominate and the older ones count far less; the outlier is still dropped.

**Exercise 22.8 ★★★.**

*Find the flaw.* “Always send the RFQ to every dealer on the platform: more competition can only give a better price.” Correct it.

**Solution of Exercise 22.8.**

Each dealer asked learns the client’s intention; the losers can trade ahead of the winner or mark the bond down, and the client pays for that leakage. The gain from an extra bid shrinks as dealers are added, while the leakage cost grows with each, so beyond a point more dealers raise the expected cost.

## 22.9 Problem: How Many Dealers?

**Problem 22.1.**

Weekend problem — the cost of competition and of being seen

An asset manager must sell USD 25 million of a corporate bond. Dealers’ bids average 10 basis points below value, with private terms spread by 5 basis points; each dealer that sees the request and loses costs the manager 1 basis point on average.

**Part I — The auction.**

1. Give the expected cost of asking one dealer, in basis points and dollars.
2. Give the expected costs of two, three, four and six dealers.
3. What is the best number of dealers, and what does it cost?
4. What would it save against asking six?
5. Why does the gain from each extra dealer fall?

**Part II — Leakage.**

6. How does a losing dealer’s knowledge cost the manager?
7. Give the best number of dealers if leakage is 0.5 and 1.5 basis points.
8. Why does leakage grow with the size of the trade?
9. How do [axes](#def-m2-how-bonds-trade-rfq) change the choice?
10. How would [all-to-all trading](#def-m2-how-bonds-trade-a2a) change it?

**Part III — Alternatives.**

11. When would the manager include the bond in a [portfolio trade](#def-m2-how-bonds-trade-a2a) instead?
12. What does TRACE show of the sale, and when?
13. How does the [dissemination cap](#def-m2-how-bonds-trade-trace) protect the winning dealer?
14. Could the manager sell ETF shares instead of the bond?
15. What does a [composite price](#def-m2-how-bonds-trade-composite) tell the manager before it asks?

**Part IV — Judgement.**

16. Why do dealers not always bid their best to every client?
17. How would you measure leakage in your own trading records?
18. Why might the best number differ for a high-yield bond?
19. State the *named result* : the number of dealers that minimises the expected cost, and that cost.
20. In one sentence: why is asking more dealers not always better?

**Solution of Problem 22.1.**

**1.** 10.0 basis points, USD 25 000. **2.** 8.18, 7.77, 7.85 and 8.66 basis points. **3.** Three dealers, 7.77 basis points, about USD 19 400. **4.** About USD 2 200. **5.** The expected best of $n$ bids grows ever more slowly with $n$. **6.** Losing dealers who know a seller is active sell ahead, stop buying, or mark the bond and its hedges down, so the price at which the manager trades, or its next trade, is worse. **7.** 6 dealers at 0.5 basis points, 2 at 1.5. **8.** A large sale takes longer to absorb and moves the price more, so what the losers learn is worth more to them. **9.** Asking the dealers that are axed to buy, who are likely to bid best, lets the manager ask fewer and leak less. **10.** It adds bidders who have no dealer’s incentive to trade ahead and may want the bond; it may also leak to more parties, depending on the platform’s design. **11.** When selling many bonds at once, especially small or illiquid ones, it can ask one price for the list and pay less per bond than in many RFQs. **12.** The price and a size shown as “5MM$+$” if it is investment grade, within fifteen minutes. **13.** Buyers see that a large block traded but not its size, so they do not know how much the dealer has left to sell. **14.** If it holds ETF shares or can short them; selling ETF shares is not selling the bond, but it may hedge the bond’s credit exposure until the bond is sold. **15.** Where the bond should trade, before asking, so it can judge the bids it receives. **16.** They price the client, the size and their own inventory; for a client whose trades precede moves, they bid lower, and they may bid only to learn. **17.** Compare prices after each RFQ with prices after comparable trades done with fewer dealers, controlling for size and market moves. **18.** High-yield bonds are less liquid and leakage is costlier, so fewer dealers may be best; but private terms may be more dispersed, favouring more. **19.** Named result: *the best number of dealers* is three, at an expected cost of 7.77 basis points, about USD 19 400 on USD 25 million. **20.** Because every dealer asked also learns what the client wants to do.

## 22.10 Interview questions

**Interview question 22.1 ★ trader, developer.**

How is a corporate bond bought and sold, compared with a stock?

**Solution of Interview question 22.1.**

A stock trades on exchanges with continuous public order books; a corporate bond, one of many issues of the company, trades over the counter, mostly by requests for quotes to dealers, with trades reported to TRACE after the fact. Liquidity is concentrated in recent large issues; most bonds trade rarely.

*What the interviewer is looking for: OTC and RFQ, fragmentation by issue, post-trade transparency.*

**Interview question 22.2 ★ trader, researcher.**

What is TRACE, and what does it not show?

**Solution of Interview question 22.2.**

FINRA’s system that collects reports of every OTC trade in eligible bonds within fifteen minutes and publishes them. It shows price, time and size, but sizes of large trades are capped, it shows no quotes or depth, and it shows trades only after they happen.

*What the interviewer is looking for: what is published and what is hidden.*

**Interview question 22.3 ★★ researcher.**

How many dealers should a client ask in an RFQ? Build a simple model.

**Solution of Interview question 22.3.**

Model bids as a common value less a markup plus independent private terms; the best of $n$ improves by $\sigma e_n$; each loser costs leakage $\ell$; minimise $m - \sigma e_n + \ell(n-1)$. The answer rises with the dispersion of dealers’ terms and falls with leakage.

*What the interviewer is looking for: the trade-off and its comparative statics.*

**Interview question 22.4 ★★ trader, bank.**

How does a dealer price a [portfolio trade](#def-m2-how-bonds-trade-a2a) of 400 bonds?

**Solution of Interview question 22.4.**

Value each bond from composites and the issuer curves; aggregate the basket’s risk (duration, spread duration, sectors, liquidity); price the cost of hedging it with index swaps and ETFs and of working out the bonds over days, bond by bond according to liquidity; add a charge for the basket’s residual risk and capital; quote one price.

*What the interviewer is looking for: basket-level risk, hedging instruments and liquidation cost.*

**Interview question 22.5 ★★ researcher, trader.**

Why can a bond ETF trade at a discount to its net asset value, and which price is right?

**Solution of Interview question 22.5.**

Its net asset value uses bond prices that may be stale or estimated, while the ETF trades continuously; in stress, sellers use the ETF and its price falls first. The authorised participants’ arbitrage is limited by the cost and risk of trading the bonds. The ETF price is often the better measure of where the bonds could actually be sold.

*What the interviewer is looking for: stale NAV and limits to arbitrage.*

**Interview question 22.6 ★★★ developer.**

Design a system that answers 20 000 bond RFQs a day with prices within 100 milliseconds.

**Solution of Interview question 22.6.**

Precompute composites and hedging sensitivities for every bond and update them on market events; on each RFQ, look up the bond, apply client, size and inventory adjustments from cached tables, check limits, and answer; keep the path free of I/O and allocation; log decisions for later analysis; monitor hit ratios and mark-outs to recalibrate.

*What the interviewer is looking for: precomputation, fast lookups, limits, feedback.*
