A fixed-rate bond priced from either a quoted price or a yield, on a stated day-count basis. Returns the other side of that pair with accrued interest, both prices, the invoice amount and the full set of risk measures. Every input is encoded in the URL and everything computes in the browser.
| Enable JavaScript for the computed figures. The formulas, the day-count algorithms and the worked reference figures below are static. |
The curve is the exact quoted price at each yield. The straight line is the first-order estimate implied by modified duration at the marked point. The gap between the two is convexity: the exact price lies above the tangent in both directions, which is what a positive convexity number means.
| Enable JavaScript for the schedule. |
P is the quoted or clean price per 100 of par and P_full = P + AI the full or dirty price, where AI is accrued interest per 100 of par. C is the annual coupon rate in percent of par, f the coupon periods per year and c = C/f the periodic coupon. y is an annual yield quoted nominal and compounded f times a year. A is accrued days and E days in the coupon period, so A + (E - A) = E. w is the fraction of the current period still to run and w + A/E = 1. A day-count fraction is written D/B.
On ACT/ACT (ICMA) accrual is measured against the coupon period, not the year:
AI = (C/f) * A/E
On a fraction-of-year convention it is measured against the year:
AI = C * D/B
Accrual runs from the last coupon date up to but excluding settlement date. Settlement date counts as a day of the buyer, not the seller.
P_full = P + AI and Invoice = par * P_full / 100. Yield, duration, DV01 and convexity are all functions of P_full, never of P. Setting the quoted price equal to the present value instead of the full price puts the yield on the reference bond out by roughly 18.8 basis points.
P_full = sum over k of CF_k * (1 + y/f)^-n_k, with n_k = (k-1) + w
w = (days from settlement to the next coupon) / E
That is the street convention. Going the other way there is no closed form, so the yield here is solved numerically: a bisection over a bracketing interval to isolate the root, then Newton iterations on the analytic derivative until the price residual is below 1e-12. No approximation formula is used.
D_mac = sum over k of (n_k/f) * PV_k / P_full
D_mod = D_mac / (1 + y/f)
Money duration = D_mod * P_full and DV01 = PVBP = money duration * 0.0001
Cx = sum over k of n_k*(n_k+1)*PV_k / (f^2 * (1+y/f)^2 * P_full)
The second-order price approximation is dP/P = -D_mod * dy + 0.5 * Cx * dy^2. It is local. On the reference bond a 100 basis point rise gives an exact -6.444691 percent against a first-order estimate of -6.706168 percent; adding the convexity term brings that to -6.437029 percent, leaving a residual of -0.007662 percentage points.
Every interest calculation begins with a day-count fraction: a numerator D counting days in a period under a stated rule, over a denominator B standing for days in a year under the same rule. The rules are not interchangeable, and the convention is a term of the instrument rather than a modelling choice. The algorithms below are what this page implements.
| Basis | Numerator D | Denominator B | Algorithm as implemented |
|---|---|---|---|
ACT/ACT (ICMA)actacticma | Actual days elapsed in the coupon period, A | None fixed; the period itself, E | Accrued = (C/f) * A/E. As a year fraction, A/(E*f). Defined per coupon period, so no leap-year handling is required anywhere. |
ACT/ACT (ISDA)actactisda | Actual days, split at each 31 December | 365 or 366 per calendar year | D/B = (days falling in non-leap years)/365 + (days falling in leap years)/366. A period spanning three calendar years has three terms. |
30/360 Bond Basis30360 | 30-day months, with three month-end adjustments | 360 | D = 360*(Y2-Y1) + 30*(M2-M1) + (D2-D1), applying in this order: if D1 and D2 are both the last day of February then D2 = 30; if D1 is the last day of February then D1 = 30; if D1 is 31 then D1 = 30; if D2 is 31 and D1 is now 30 then D2 = 30. |
30E/360 Eurobond30e360 | 30-day months, one symmetric adjustment | 360 | Same summation with D1 = min(D1, 30) and D2 = min(D2, 30), unconditionally at either end. February is not special. |
30E/360 (ISDA)30e360isda | 30-day months, month-end test generalised | 360 | D1 = 30 if D1 is the last day of its month; D2 = 30 if D2 is the last day of its month, unless D2 is the termination date and falls in February. The test needs a calendar, not a comparison against 31. |
ACT/360act360 | Actual days | 360 | D/B = actual days / 360. A 365-day year accrues 365/360 = 1.013889 of the stated rate; the denominator does not change in a leap year. |
ACT/365Fact365f | Actual days | 365, fixed | D/B = actual days / 365, in leap years as well as ordinary ones. The Fixed suffix distinguishes it from ACT/ACT (ISDA). |
NL/365nl365 | Actual days less every 29 February in the half-open interval (start, end] | 365 | D = actual days minus the count of 29 February dates after the start date and up to and including the end date. Any period of n calendar days accrues the same amount whether or not it contains a leap day. |
The four ACT-numerator conventions differ only in the denominator, so on any single period they scale each other exactly. The three 30-numerator conventions differ only in the month-end adjustment, so they agree on most dates and diverge precisely where semiannual schedules land. See day count and accrual for the worked month-end cases.
The reference bond's current accrual period, 2026-05-15 to settlement on 2026-08-27, at a 4.500 percent annual coupon paid semiannually. A = 104 actual days, E = 184 actual days in the period, 80 days remaining to the next coupon. These are the figures this page reproduces on the default inputs.
| Basis | D | B | D/B | Accrued per 100 | On 10,000,000 par |
|---|---|---|---|---|---|
| ACT/ACT (ICMA) | 104 | 184 x 2 | 0.282608696 | 1.271739 | 127,173.91 |
| ACT/ACT (ISDA) | 104 | 365 | 0.284931507 | 1.282192 | 128,219.18 |
| 30/360 Bond Basis | 102 | 360 | 0.283333333 | 1.275000 | 127,500.00 |
| 30E/360 Eurobond | 102 | 360 | 0.283333333 | 1.275000 | 127,500.00 |
| 30E/360 (ISDA) | 102 | 360 | 0.283333333 | 1.275000 | 127,500.00 |
| ACT/360 | 104 | 360 | 0.288888889 | 1.300000 | 130,000.00 |
| ACT/365F | 104 | 365 | 0.284931507 | 1.282192 | 128,219.18 |
| NL/365 | 104 | 365 | 0.284931507 | 1.282192 | 128,219.18 |
Eight conventions, four distinct accrued figures, on one period of one instrument. The spread between the widest pair is 0.028261 per 100 of par, or 2,826.09 on 10,000,000. A basis mismatch shows up as a settlement break rather than a valuation error, which is why it is usually caught by operations rather than by trading.
One instrument runs through this corpus: a 4.500 percent semiannual bond with coupon dates of 15 May and 15 November, maturing 2034-11-15, settling 2026-08-27 at a quoted price of 98.750 per 100 of par, which is 98-24 in thirty-seconds. Those are this page's default inputs, so loading it with no query string reproduces the figures below.
| Measure | Value | Basis of the figure |
|---|---|---|
| Accrued days A, period days E | 104, 184 | 2026-05-15 to 2026-08-27 to 2026-11-15 |
| w, the fraction of the period still to run | 0.434783 | 80 / 184 |
| Accrued interest | 1.271739 | 2.250 * 104/184, ACT/ACT (ICMA) |
| Quoted price | 98.750000 | Input |
| Full price | 100.021739 | 98.750000 + 1.271739 |
| Yield to maturity, street convention | 4.684070 percent | Nominal semiannual, solved from the full price |
| Macaulay duration | 6.863229 years | 686.472072 / 100.021739 |
| Modified duration | 6.706168 | 6.863229 / 1.023420352 |
| Money duration | 670.762576 | 6.706168 * 100.021739 |
| DV01, PVBP | 0.067076 | Per 100 of par, per basis point |
| DV01 on 10,000,000 par | 6,707.63 | Currency per basis point |
| Convexity | 53.827761 | 22556.349247 / (4 * 1.047389217 * 100.021739) |
| Invoice on 10,000,000 par | 10,002,173.91 | 9,875,000.00 principal + 127,173.91 accrued |
Every input is a query parameter, so any calculation on this page is a link. Supply price to solve for the yield, or yield to solve for the price. If both carry a value the price is treated as the input; if neither does, the page falls back to the default price.
| Parameter | Meaning | Default |
|---|---|---|
settle | Settlement date, ISO format | 2026-08-27 |
maturity | Maturity date, ISO format. The coupon schedule is generated backwards from it | 2034-11-15 |
coupon | Annual coupon rate, percent of par | 4.500 |
freq | Coupon periods per year: 1, 2, 4 or 12 | 2 |
basis | actacticma, actactisda, 30360, 30e360, 30e360isda, act360, act365f, nl365 | actacticma |
price | Quoted price per 100 of par; leave blank to solve from yield | 98.750 |
yield | Yield in percent, nominal at the coupon frequency; leave blank to solve from price | blank |
par | Par amount for the invoice calculation | 10000000 |
A single yield discounts every flow, so there is no curve, no spread and no optionality here. Coupon dates are unadjusted calendar dates: no business-day convention, holiday calendar or payment-date roll is applied, which is correct for a bond paying an exact half-coupon and wrong for a floating leg whose accrual follows the adjusted dates. There is no ex-dividend period, so accrued is never negative; markets that fix the coupon recipient before payment need the treatment in ex-dividend dates and negative accrued interest. Irregular first and last periods are not constructed from quasi-coupon periods, so a bond whose issue date is off its own schedule will show the regular-period accrual. Rounding follows no market's settlement convention; the invoice figure is shown to the cent but is not rounded before scaling. Sinking funds, call and put schedules, amortisation, index-linked adjustment and floating resets are all out of scope for this page.