Duration using Python Quantlib

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}")