Duration using Python Quantlib
Required Objects
Sample Script
import QuantLib as ql
# 1. Set Evaluation Date
today = ql.Date(24, 6, 2026)
ql.Settings.instance().evaluationDate = today
# 2. Define Bond Parameters
issueDate = ql.Date(24, 6, 2026)
maturityDate = ql.Date(24, 6, 2036)
faceAmount = 100.0
couponRate = 0.05
coupons = [couponRate]
frequency = ql.Annual
dayCounter = ql.ActualActual(ql.ActualActual.Bond)
accrualConvention = ql.Following
bond = ql.FixedRateBond(
2, # Settlement days
faceAmount,
ql.Schedule(issueDate, maturityDate, ql.Period(frequency), ql.TARGET(),
accrualConvention, accrualConvention, ql.DateGeneration.Backward, False),
coupons,
dayCounter
)
# 4. Calculate Duration
# QuantLib's BondFunctions takes an InterestRate object, not a simple float
interest_rate_obj = ql.InterestRate(0.045, dayCounter, ql.Compounded, frequency)
# Calculate Modified Duration
modified_duration = ql.BondFunctions.duration(
bond,
interest_rate_obj,
ql.Duration.Modified
)
print(f"Modified Duration: {modified_duration:.4f}")