GPT is an expert
import QuantLib as ql
# Setting the evaluation date
calculation_date = ql.Date(1, 1, 2022)
ql.Settings.instance().evaluationDate = calculation_date
# Bond parameters
face_value = 100
coupon_rate = 0.05
coupon_type = ql.Annual
bond_maturity = 10
# Create a flat yield term structure
interest_rate = ql.SimpleQuote(0.03)
rate_handle = ql.QuoteHandle(interest_rate)
day_count = ql.ActualActual()
term_structure = ql.FlatForward(calculation_date, rate_handle, day_count)
ts_handle = ql.YieldTermStructureHandle(term_structure)
# Construct the bond schedule
issue_date = calculation_date
maturity_date = issue_date + ql.Period(bond_maturity, ql.Years)
schedule = ql.Schedule(issue_date, maturity_date, ql.Period(coupon_type),
ql.TARGET(), ql.Unadjusted, ql.Unadjusted,
ql.DateGeneration.Backward, False)
# Construct the bond
bond = ql.FixedRateBond(0, face_value, schedule, [coupon_rate], day_count)
# Get the bond's present value
bond_engine = ql.DiscountingBondEngine(ts_handle)
bond.setPricingEngine(bond_engine)
print("Bond's present value:", bond.NPV())