QuantLib Day Counts

import QuantLib as ql # Define two dates date1 = ql.Date(1, 1, 2025) date2 = ql.Date(1, 7, 2025) # Initialize the day counter dc = ql.Actual360() # Calculate days and fraction days = dc.dayCount(date1, date2) fraction = dc.yearFraction(date1, date2)

Actual/360

# Initialize the day counter dc = ql.Actual360()

Actual/Actual

# Initialize day counters isda_dc = ql.ActualActual(ql.ActualActual.ISDA) isma_dc = ql.ActualActual(ql.ActualActual.ISMA) afb_dc = ql.ActualActual(ql.ActualActual.AFB)

Thirty/360

dc = ql.Thirty360(ql.Thirty360.USA) dc = ql.Thirty360(ql.Thirty360.European) dc = ql.Thirty360(ql.Thirty360.Italian)

Actual/365

dc = ql.Actual365Fixed() #assumes no leap days dc = ql.Actual365Fixed(ql.Actual365Fixed.NoLeap)

SimpleDayCounter

day_counter = ql.SimpleDayCounter()
import QuantLib as ql # 1. Set dates and schedule today = ql.Date(19, 6, 2026) ql.Settings.instance().evaluationDate = today issue_date = ql.Date(15, 1, 2026) maturity_date = ql.Date(15, 1, 2027) calendar = ql.UnitedStates(ql.UnitedStates.Settlement) convention = ql.Following schedule = ql.Schedule( issue_date, maturity_date, ql.Period(ql.Semiannual), calendar, convention, convention, ql.DateGeneration.Backward, False ) # 2. Define bond parameters settlement_days = 2 face_amount = 10000.0 coupons = [0.05] # 5% annual rate day_counter = ql.ActualActual(ql.ActualActual.ISDA) # 3. Create FixedRateBond bond = ql.FixedRateBond( settlement_days, face_amount, schedule, coupons, day_counter ) # 4. Extract and print payment amounts and dates print("--- Cash Flow Schedule ---") for cashflow in bond.cashflows(): # Attempt to cast as a coupon to see accrual start/end dates coupon = ql.as_coupon(cashflow) if coupon: print(f"Date: {cashflow.date().ISO()} | Type: Coupon | Amount: {cashflow.amount():.2f} | Rate: {coupon.rate():.2%}") else: # Fallback to redemption/principal payment print(f"Date: {cashflow.date().ISO()} | Type: Redemption | Amount: {cashflow.amount():.2f}")