Estimate Macaulay duration, modified duration, and a first-order price-change scenario for a plain fixed-coupon bond. Enter a nominal annual yield, coupon rate, face value, term, payment frequency, and an assumed parallel yield change. All cash flows and market assumptions are supplied by you; this page does not retrieve bond prices or yields.
Calculator
Enter bond terms and a yield change to estimate duration and first-order price sensitivity.
The price-change estimate is approximate, assumes a small parallel yield shift, and ignores convexity. Not financial advice.
Formula, inputs, and source
Formula
For each period t, PVt = cash flowt ÷ (1 + y/f)t. Macaulay duration = Σ[(t/f) × PVt] ÷ bond price. Modified duration = Macaulay duration ÷ (1 + y/f). Approximate percentage price change = −modified duration × yield change in decimal form.
Inputs and units
Face value per bond in the selected currency; annual coupon and nominal annual yield in percent; whole years; 1, 2, 4, or 12 coupon periods per year; number of bonds; yield shift in basis points (100 bp = 1 percentage point).
Output and limits
Modeled price, Macaulay and modified duration in years, and approximate price change per bond and for the entered holding. Assumes equal fixed coupons and a single principal repayment; ignores convexity, accrued interest, irregular periods, credit changes, and embedded options.
Duration summarizes the timing and interest-rate sensitivity of a bond’s modeled cash flows. Macaulay duration is the present-value-weighted average time, in years, when those payments are received. Modified duration adjusts that measure for the bond’s yield convention and estimates the percentage price response to a small yield change. FINRA describes duration as a way to understand how a bond investment’s value may respond when interest rates change; it is not a maturity date or a guaranteed price forecast.
How does this calculator estimate duration?
The model divides the annual coupon by the selected payments per year, discounts each coupon and the final principal at the entered periodic yield, then weights each present value by its time in years. The sum of present values is the modeled bond price. Macaulay duration is the weighted time divided by that price. Modified duration equals Macaulay duration divided by one plus periodic yield. The scenario uses the approximation percentage price change ≈ −modified duration × yield change. Basis points are converted to a decimal yield change by dividing by 10,000. The estimated dollar change multiplies that percentage by the modeled price and number of bonds.
For example, a positive yield change produces a negative first-order price change in this model; a negative shift produces a positive estimate. The size depends on the cash-flow pattern and entered yield. This is a formula illustration, not a claim about a current security or an expected investment result.
Source and date: FINRA’s duration overview (accessed 2026-11-03) explains duration as a measure of sensitivity to interest-rate changes. The calculations here are defined directly by the cash-flow equations shown above.
This simplified tool assumes regular equal coupon periods, a fixed coupon, a single principal payment at maturity, and a nominal annual yield compounded at the selected frequency. It does not model settlement dates, accrued interest, day-count conventions, calls, puts, floating rates, default, changes in credit spreads, taxes, fees, reinvestment, or a nonparallel yield-curve move. The price sensitivity is a linear approximation: large yield changes can make it less representative because bond price changes are curved rather than perfectly linear. Verify a real bond’s cash flows and embedded terms in its offering documents.
Frequently asked questions
Is duration the same as time to maturity?
No. Maturity is when principal is due. Macaulay duration weights the timing of all modeled payments, including coupons, so it can be shorter than maturity.
How should I read modified duration?
It estimates the percentage price move for a one-unit change in yield expressed as a decimal, with the opposite sign. The result is approximate and assumes a small parallel change.
Does the scenario include convexity?
No. It uses only the first-order modified-duration estimate. It can diverge from a repriced bond, especially for a large yield shift or bonds with options.
Does this use live market data?
No. Yield, coupon, face value, holding count, and the yield change are all entered by the user. The modeled price is not a quote.
For periods t=1..N, PV_t = cashflow_t/(1+y/f)^t, where periodic coupon = face_value × annual_coupon_rate/frequency, final cash flow also includes face value, and N = whole_years × frequency. Macaulay duration in years = sum((t/f)×PV_t)/sum(PV_t). Modified duration = Macaulay duration/(1+y/f). Approximate percentage price change = −modified_duration × yield_change_decimal; dollar change = modeled price × percentage change × number of bonds.
face_value_per_bond (user-selected currency): Positive principal amount paid at maturity for each modeled bond.
annual_coupon_rate (percent per year): Nonnegative fixed coupon rate used to calculate equal payments.
nominal_annual_yield (percent per year): User-entered nominal yield compounded at the selected coupon frequency; must be above −99.99%.
years_to_maturity (whole years): Integer modeled term from 1 through 100 years.
payments_per_year (periods per year): One of 1, 2, 4, or 12 equal coupon periods.
bond_count (bonds): Positive number of identical bonds used to scale the estimated dollar change.
Output (years, percent, and user-selected currency): Macaulay duration, modified duration, model price, and approximate first-order price change per bond and for the entered holding. Assumes regular fixed cash flows; excludes convexity, accrued interest, embedded options, credit changes, fees, taxes, and live quotes.