Tôi đang cố gắng định giá một trái phiếu lãi suất thả nổi rất cơ bản trong python bằng cách sử dụng trình bao bọc SWIG Quantlib (v1.2). Tôi đã sửa đổi ví dụ đi kèm với tài liệu.Đặt giá một trái phiếu nổi trong quantlib bằng cách sử dụng Python
Trái phiếu của tôi có thời hạn 4 năm. Các libor được thiết lập để 10% và sự lây lan của trái phiếu là 0. Câu hỏi của tôi là nếu tôi giảm giá với tỷ lệ 10%, tại sao không phải là PV của trái phiếu 100? Tôi nhận được một giá trị 99,54.
Cảm ơn!
from QuantLib import *
frequency_enum, settle_date = 4, Date(5, 1, 2010)
maturity_date = Date(5, 1, 2014)
face_amount = 100.0
settlement_days = 0
fixing_days = 0
calendar = NullCalendar()
settle_date = calendar.adjust(settle_date)
todays_date = calendar.advance(settle_date, -fixing_days, Days)
Settings.instance().evaluationDate = todays_date
rate = 10.0/100.0
flat_forward = FlatForward(settle_date,
rate,
Thirty360(),
Compounded,
frequency_enum)
discounting_term_structure = RelinkableYieldTermStructureHandle(flat_forward)
index_term_structure = RelinkableYieldTermStructureHandle(flat_forward)
index = USDLibor(Period(3, Months), index_term_structure)
schedule = Schedule(settle_date,
maturity_date, Period(frequency_enum),
NullCalendar(),
Unadjusted, Unadjusted,
DateGeneration.Forward, False)
floating_bond = FloatingRateBond(settlement_days,
face_amount,
schedule,
index,
Thirty360(),
Unadjusted,
fixing_days,
[], # Gearings
[0], # Spreads
[], # Caps
[], # Floors
False, # Fixing in arrears
face_amount,
settle_date)
bond_engine = DiscountingBondEngine(discounting_term_structure)
floating_bond.setPricingEngine(bond_engine)
# coupon pricers
pricer = BlackIborCouponPricer()
volatility = 0.0
vol = ConstantOptionletVolatility(settlement_days,
calendar,
Unadjusted,
volatility,
Thirty360())
pricer.setCapletVolatility(OptionletVolatilityStructureHandle(vol))
setCouponPricer(floating_bond.cashflows(), pricer)
print floating_bond.NPV(), floating_bond.cleanPrice(), floating_bond.dirtyPrice()
Cảm ơn rất nhiều. Tôi đã tạo chỉ mục tùy chỉnh và tôi nhận được kết quả chính xác là 100.0! Chỉ mục tùy chỉnh là: 'index = IborIndex ('USD Libor', Period (3, Months), settlement_days, USDCurrency(), NullCalendar(), Unadjusted, False, Thirty360(), index_term_structure)' – ducky