Clean & dirty price
A bond quotes one price but a buyer pays another. The difference is accrued interest. This page explains why, with a worked example.
The clean price
The clean price is what the bond is quoted at — a percent of par (face value). Caravan returns it as clean_price_micros, where 100000000 micros = 100.000% of par. A clean price of 97250000 means 97.25% of par. It excludes any interest that has built up since the last coupon, so the quote moves with the market, not with the calendar.
Accrued interest
A bond pays a coupon on a schedule (say, twice a year). Between coupon dates, interest is steadily "building up" for whoever holds the bond. When you buy partway through a coupon period, you owe the seller the interest accrued so far:
accrued ≈ face_value × (coupon_rate_bps / 10000) × (days_since_last_coupon / day_count_basis)The day_count_convention (e.g. ACT/365) sets the basis. A zero-coupon bill has coupon_rate_bps = 0, so accrued is always zero.
The dirty price
The dirty price — the actual consideration — is the clean price plus accrued:
dirty = clean + accruedWorked example
A bond with:
- face value
1000000000micros (1,000 EGP par), coupon_rate_bps = 1200(12.00% annual),- semi-annual coupons,
90days since the last coupon on anACT/365basis,- a clean price of
100000000micros (100.000% of par).
Accrued ≈ 1000000000 × 0.12 × (90 / 365) ≈ 29,589,041 micros (≈ 29.59 EGP).
So a clean quote of 100% par becomes a dirty consideration of roughly 1,029,589,041 micros (≈ 1,029.59 EGP) per unit. The clean price is what's displayed; the dirty price is what's reserved and charged.
Where this shows up
/v1/bonds returns the clean price and the bond terms needed to compute accrued. When the bond money path opens, a fill will itemize accrued_micros and the dirty consideration so the buyer sees both. The figures are copied from the bond's terms — Caravan does no hidden arithmetic.
Clean vs. dirty is mechanics, not merit. A higher coupon means more accrued, not a "better" bond — yield is disclosure, not a ranking.