Я только начал использовать QuantLib и разбирался с различными функциями. Вопрос в том, что у меня есть гипотетическая кривая пятна, показанная ниже
spot_tenors = [0,0, 0,5, 1,0, 1,5, 2,0, 2,5, 3,0, 3,5, 4,0, 4,5, 5,0, 5,5, 6,0, 6,5, 7,0, 7,5, 8,0, 8,5, 9,0, 9,5, 10,0]
пятна = [0,0, 5,25, 5,43, 5,76, 6,02, 6,28, 6,55, 6,82, 6,87, 7,1, 7,21, 7,26, 7,31, 7,43, 7,48 , 7.54, 7.67, 7.8, 7.79, 7.93, 8.07]
, когда я пытаюсь создать discount_curve и discount_handle Я получаю ошибки, так как многие из моих теноров являются числами с плавающей запятой 1.5,2.5 и так далее
import matplotlib
matplotlib.use('macosx')
import matplotlib.pyplot as plt
import QuantLib as ql
#create a bond
issueDate = ql.Date(15, 1, 2015)
maturityDate = ql.Date(15, 1, 2025)
tenor = ql.Period(ql.Semiannual)
calendar = ql.UnitedStates()
bussinessConvention = ql.Unadjusted
dateGeneration = ql.DateGeneration.Backward
monthEnd = False
schedule = ql.Schedule (issueDate, maturityDate, tenor, calendar, bussinessConvention,bussinessConvention , dateGeneration, monthEnd)
# Now lets build the coupon
dayCount = ql.Thirty360()
couponRate = .06
coupons = [couponRate]
settlementDays = 0
faceValue = 100
bond = ql.FixedRateBond(settlementDays, faceValue, schedule, coupons, dayCount)
today = ql.Date(30, ql.January, 2020)
nodes = [today + Period(n, Years) for n in spot_tenors] #this is where I get the error
discount_curve = ql.ZeroCurve(nodes, spots, ql.Actual360())
discount_handle = ql.YieldTermStructureHandle(discount_curve)
bond.setPricingEngine(ql.DiscountingBondEngine(discount_handle))
ошибка, которую я получаю
Traceback (most recent call last):
File "/Users/prasadkamath/anaconda2/envs/Pk/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3319, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-301-cc1508b12a56>", line 1, in <module>
[today + Period(n, Years) for n in tenors]
File "<ipython-input-301-cc1508b12a56>", line 1, in <listcomp>
[today + Period(n, Years) for n in tenors]
File "/Users/prasadkamath/anaconda2/envs/Pk/lib/python3.6/site-packages/QuantLib/QuantLib.py", line 183, in __init__
_QuantLib.Period_swiginit(self, _QuantLib.new_Period(*args))
TypeError: Wrong number or type of arguments for overloaded function 'new_Period'.
Possible C/C++ prototypes are:
Period::Period()
Period::Period(Integer,TimeUnit)
Period::Period(Frequency)
Period::Period(std::string const &)
есть идеи, как решить проблему или я что-то упустил?