How clean and dirty gilt prices differ, why accrued interest goes negative in the ex-dividend window, and how to spot it in a daily report.
The price on the screen is not the price you pay.
Every gilt in the daily report carries a clean price and an accrued interest figure. Add them together and you have the dirty price — the cash that actually changes hands, per £100 of nominal. Get that wrong and your carry, your ranking, and your idea of which bonds are cheap are all quietly wrong. And once a year, twice a year, every gilt does something that turns the arithmetic negative.
Here is what it looks like in real numbers, and how to detect it in one field.
A gilt pays a fixed coupon twice a year. Between coupon dates, the seller has been holding the bond and earning that coupon; the buyer will collect the whole thing on the next payment date. So the buyer compensates the seller for the interest earned but not yet paid.
That compensation is accrued interest. The market therefore quotes the clean price — the price excluding accrued interest — so that a bond trading the day before a coupon date still looks comparable to the same bond trading the day after. What you settle is:
dirty price = clean price + accrued interest
Both components are printed in the report, so the dirty price is a subtraction-free addition away. From the 3 September gilt report:
| Gilt | Coupon | Matures | Clean | Accrued | Dirty |
|---|---|---|---|---|---|
| 0 3/8% Treasury Gilt 2026 | 0.38% | 2026-10-22 | 99.60 | 0.142 | 99.742 |
| 6% Treasury Stock 2028 | 6.00% | 2028-12-07 | 103.39 | 1.525 | 104.915 |
| 4¾% Treasury Gilt 2035 | 4.75% | 2035-10-22 | 97.26 | 1.804 | 99.064 |
| 4¼% Treasury Gilt 2046 | 4.25% | 2046-12-07 | 82.04 | 1.080 | 83.120 |
| 2% Index-linked Treasury Stock 2035 | 2.00% | 2035-01-26 | 241.96 | 0.217 | 242.177 |
Two things fall out of that table immediately.
Accrued interest scales with the coupon, not the price. The 6% 2028 has accrued of 1.525; the 0 3/8% 2026, on a coupon sixteen times smaller, has 0.142. A low-coupon bond therefore looks almost identical clean and dirty, while a high-coupon bond can differ by more than a point and a half. If you are comparing a portfolio using clean prices and settling using dirty prices, the gap between the two is not a constant — it moves with the coupon.
Index-linked gilts are not a special case. The 2% Index-linked 2035 shows a clean price of 241.96, because that price is RPI-adjusted. But the clean-plus-accrued identity still holds exactly: 242.177. The mechanics do not change just because the price does.
Now look at 3¾% Treasury Gilt 2027 across nine consecutive reports:
| Report | Clean | Accrued | Days | Gross yield | Rank |
|---|---|---|---|---|---|
| 2026-08-19 | 99.83 | +1.732 | 166 | 3.99% | 38 |
| 2026-08-24 | 99.84 | −0.112 | 171 | 7.66% | 1 |
| 2026-08-25 | 99.85 | −0.102 | 172 | 7.67% | — |
| 2026-08-26 | 99.85 | −0.061 | 173 | 7.76% | 1 |
| 2026-08-27 | 99.84 | −0.051 | 174 | 7.80% | — |
| 2026-08-28 | 99.84 | −0.041 | 178 | 7.97% | 1 |
| 2026-09-01 | 99.80 | −0.031 | 179 | 8.07% | 1 |
The Days column is the day-counter the report prints beside the accrued figure: days elapsed since the last coupon date. The accrued value itself is quoted to three decimal places, which is the precision the report publishes.
The clean price barely moves: 99.83 to 99.80 across the whole window. And yet the gross yield goes from 3.99% to 8.07% in nine business days, and the bond is suddenly ranked the cheapest in a 104-gilt book.
That is not an opportunity. That is the ex-dividend window.
A gilt goes ex-dividend a few business days before each coupon date. Buy it during that window and you will not receive the upcoming coupon — the seller keeps it. So the compensation reverses direction: instead of the buyer paying the seller for interest earned, the seller effectively owes the buyer a whole coupon’s worth of value.
The accrued figure goes negative, and the dirty price falls below the clean price.
You can see the size of the swing in that table. Between 19 and 24 August the accrued steps from +1.732 to −0.112 — a 1.844-point move, which is essentially one full semi-annual coupon of 1.875 on a 3.75% gilt. Nothing was priced differently; the buyer simply stopped being entitled to the next coupon.
The negative figure then decays toward zero as the coupon date approaches, because the accrued interest the buyer forgoes converges on the full coupon. By 1 September it is −0.031, and by the coupon date itself the forgone interest has grown to the whole coupon — the adjustment nets to nothing and the gilt is back to a normal cum-dividend accrual.
The report’s own fields pin the window precisely: exDividendDate 26 August, nextCouponDate 7 September. Any settlement date in between is ex-dividend, and every gilt sharing that coupon date carries a negative accrued figure for the whole stretch.
This is the part worth internalising. On 1 September, eleven gilts were simultaneously carrying negative accrued:
| Gilt | Clean | Accrued | Dirty |
|---|---|---|---|
| 3¾% Treasury Gilt 2027 | 99.80 | −0.031 | 99.769 |
| 4 3/8% Treasury Gilt 2028 | 99.84 | −0.036 | 99.804 |
| 4 3/8% Treasury Gilt 2030 | 99.08 | −0.036 | 99.044 |
| 4 1/8% Treasury Gilt 2031 | 97.61 | −0.034 | 97.576 |
| 4 1/8% Treasury Gilt 2033 | 95.71 | −0.034 | 95.676 |
| 4½% Treasury Gilt 2034 | 96.54 | −0.037 | 96.503 |
| 4½% Treasury Gilt 2035 | 95.84 | −0.037 | 95.803 |
| 4¼% Treasury Stock 2036 | 92.92 | −0.035 | 92.885 |
| 4 5/8% Green Gilt 2037 | 94.57 | −0.038 | 94.532 |
| 1¾% Treasury Gilt 2037 | 70.37 | −0.014 | 70.356 |
| 4¼% Treasury Gilt 2039 | 88.56 | −0.035 | 88.525 |
They are not a random eleven. Every one of them matures on either 7 March or 7 September, and UK gilts pay coupons on the anniversary of their maturity date — so all eleven share the same 7 September coupon date, all go ex-dividend together, and all carry negative accrued together.
Once you see that, the shape of the risk becomes obvious: this is a calendar event affecting a whole cohort of the book at once, not an idiosyncratic pricing anomaly on one bond. Anything that screens, ranks, or scores gilts will light up across that cohort simultaneously — which is exactly the mechanism behind the divergence flags in the previous post in this series.
The failure mode is not exotic. It is a yield calculation that uses the clean price where it should use the dirty price, or a screen that treats the accrued column as information to display rather than a state to filter on.
Concretely:
The fix is not to model the ex-dividend window more precisely. It is to recognise it and exclude those gilts from whatever you were about to conclude.
You do not need a coupon calendar, a record-date table, or a day-count implementation to detect this. A negative accrued interest figure is the ex-dividend signature. It cannot occur for any other reason: accrued interest is either a small positive number growing toward the coupon, or a negative number during the window between the ex-dividend date and the next payment.
Encode that, and the rest follows:
/** A single priced gilt as it appears in the daily report. */
public record PricedGilt(
String isin,
String name,
BigDecimal couponRate,
LocalDate maturity,
BigDecimal cleanPrice,
BigDecimal accrued) {
/** What actually settles: the quoted clean price plus accrued interest. */
public BigDecimal dirtyPrice() {
return cleanPrice.add(accrued);
}
/**
* A negative accrued figure means the next coupon has already gone
* ex-dividend. A buyer today will not receive it, so the seller owes it
* back instead of the other way round.
*/
public boolean isExDividend() {
return accrued.signum() < 0;
}
/** Yields are only comparable between gilts in the same state. */
public boolean isScreenable() {
return !isExDividend();
}
}
And then, at the point where the book is actually used, make the exclusion explicit rather than relying on everyone downstream remembering:
List<PricedGilt> screenable = book.stream()
.filter(PricedGilt::isScreenable)
.toList();
int excluded = book.size() - screenable.size();
log.info("{} of {} gilts excluded: ex-dividend window", excluded, book.size());
Logging the count matters more than it looks. It is the difference between “the book has 104 gilts” and “the book has 104 gilts and 11 of them are currently unquotable” — and only one of those tells you when the window opens again.
Accrued interest is the bridge between the quoted price and the settled price, and the clean-versus-dirty distinction exists so that coupons do not masquerade as price moves. Its sign tells you which way the bridge runs.
When accrued is positive, the buyer compensates the seller. When it is negative, the gilt is ex-dividend, the seller compensates the buyer, and the dirty price sits below the clean price. That single sign flip moves a gilt’s apparent yield by hundreds of basis points, and it happens to whole cohorts of the book at once, several times a year, on dates you can predict from the maturity calendar alone.
If you run a gilt book, or anything that screens fixed income, and want the clean-versus-dirty handling checked before it costs you a trade, send me the details.