← Back to Financial Concepts
Fixed Income

Duration & Convexity

Duration measures interest rate sensitivity (years). Modified Duration = Macaulay / (1+y). Convexity captures curvature—important for large rate changes.

Macaulay
0
Modified
0
Convexity
0

The Formulas

Duration = Σ t×PV(CFₜ) / Price
Modified Duration = MacDur / (1+y)
Convexity = Σ t(t+1)×PV(CFₜ) / (Price×(1+y)²)

How It Works

function durationAndConvexity(coupon, yield, years) {
    const c = coupon / 100;
    const y = yield / 100;
    let price = 0, macNumerator = 0, convNumerator = 0;
    
    for (let t = 1; t <= years; t++) {
        const cf = t < years ? c : 1 + c;
        const pv = cf / Math.pow(1 + y, t);
        price += pv;
        macNumerator += t * pv;
        convNumerator += t * (t + 1) * pv;
    }
    
    const macDuration = macNumerator / price;
    const modDuration = macDuration / (1 + y);
    const convexity = convNumerator / (price * Math.pow(1 + y, 2));
    
    return { macDuration, modDuration, convexity };
}