[英]Error in Xpath when scraping last close price of a bond using Selenium
[英]FixedRateBond class is giving error to price bond
我想為固定利率債券定價如下 -
import QuantLib as ql
import pandas as pd
import math
todaysDate = ql.Date(31, 8, 2019)
ql.Settings.instance().evaluationDate = todaysDate
## define available Spot rates
spotDates = [ql.Date(1,10,2019), ql.Date(1,11,2019), ql.Date(1,12,2019)]
spotRates = [0.066682, 0.067199, 0.067502] ### Compounded continuously
dayCount = ql.Actual365Fixed()
calendar = ql.UnitedStates()
interpolation = ql.Linear()
compounding = ql.Compounded
compoundingFrequency = ql.Continuous
spotCurve = ql.YieldTermStructureHandle(ql.ZeroCurve(spotDates, spotRates, dayCount, calendar, interpolation, compounding, compoundingFrequency))
## Define Fixed rate bond with only one coupon payment at maturity
issueDate = todaysDate
maturityDate = ql.Date(1,11,2019)
businessConvention = ql.Following
monthEnd = False
dates = [maturityDate]
rolling_convention = ql.Following
schedule = ql.Schedule(dates, calendar, businessConvention)
dayCount = ql.Actual365Fixed()
couponRate = .05
settlementDays = 0
faceValue = 100
fixedRateBond = ql.FixedRateBond(settlementDays, faceValue, schedule, couponRate, dayCount, businessConvention, issueDate)
bondEngine = ql.DiscountingBondEngine(spotCurve)
fixedRateBond.setPricingEngine(bondEngine)
fixedRateBond.NPV()
print(fixedRateBond.NPV())
上述實施失敗; 我無法理解的原因。 在線生成fixedRateBond
,我得到以下錯誤 -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/QuantLib/QuantLib.py", line 15250, in __init__
_QuantLib.FixedRateBond_swiginit(self, _QuantLib.new_FixedRateBond(*args))
TypeError: Wrong number or type of arguments for overloaded function 'new_FixedRateBond'.
Possible C/C++ prototypes are:
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date,Calendar const &,Period const &,Calendar const &,BusinessDayConvention,bool)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date,Calendar const &,Period const &,Calendar const &,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date,Calendar const &,Period const &,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date,Calendar const &,Period const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real,Date)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,Real)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &,Calendar const &,Period const &,Calendar const &,BusinessDayConvention,bool)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &,Calendar const &,Period const &,Calendar const &,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &,Calendar const &,Period const &,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &,Calendar const &,Period const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real,Date const &)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention,Real)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Real,Schedule const &,std::vector< InterestRate,std::allocator< InterestRate > > const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool,Calendar const &,Period const &,Calendar const &,BusinessDayConvention const,bool)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool,Calendar const &,Period const &,Calendar const &,BusinessDayConvention const)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool,Calendar const &,Period const &,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool,Calendar const &,Period const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool,Calendar const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule,bool)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &,DateGeneration::Rule)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &,Date const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real,Date const &)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention,Real)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &,BusinessDayConvention)
FixedRateBond::FixedRateBond(Integer,Calendar const &,Real,Date const &,Date const &,Period const &,std::vector< Rate,std::allocator< Rate > > const &,DayCounter const &
我期待價格應該是-
print(105*math.exp(-0.067199*dayCount.yearFraction(issueDate,maturityDate)))
任何指向正確方法的指針都將受到高度贊賞。
David Duarte 回復后的修改:
現在,我為債券定價的新代碼集如下所示 -
import QuantLib as ql
import pandas as pd
import math
todaysDate = ql.Date(31, 8, 2019)
ql.Settings.instance().evaluationDate = todaysDate
spotDates = [ql.Date(1,10,2019), ql.Date(1,11,2019), ql.Date(1,12,2019)]
spotRates = [0.066682, 0.067199, 0.067502] ### Compounded continuously
dayCount = ql.Actual365Fixed()
calendar = ql.UnitedStates()
interpolation = ql.Linear()
compounding = ql.Compounded
compoundingFrequency = ql.Continuous
spotCurve = ql.YieldTermStructureHandle(ql.ZeroCurve(spotDates, spotRates, dayCount, calendar, interpolation, compounding, compoundingFrequency))
issueDate = todaysDate
maturityDate = ql.Date(1,11,2019)
businessConvention = ql.Following
monthEnd = False
dates = [maturityDate]
rolling_convention = ql.Following
schedule = ql.Schedule(dates, calendar, businessConvention)
# pd.DataFrame({'date': list(schedule)})
dayCount = ql.Actual365Fixed()
couponRate = .05
settlementDays = 0
faceValue = 100
fixedRateBond = ql.FixedRateBond(settlementDays, calendar, faceValue, issueDate, maturityDate, ql.Period(ql.Once), [couponRate],dayCount)
bondEngine = ql.DiscountingBondEngine(spotCurve)
fixedRateBond.setPricingEngine(bondEngine)
fixedRateBond.NPV()
有了這個,我得到錯誤 -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/QuantLib/QuantLib.py", line 8767, in NPV
return _QuantLib.Instrument_NPV(self)
RuntimeError: negative time (-0.0767123) given
知道為什么我會收到此錯誤嗎?
進一步修改以糾正負值錯誤:
基本上我添加了一個rate of 0
來對應today's spot rate
來定義spotCurve
import QuantLib as ql
import pandas as pd
import math
todaysDate = ql.Date(31, 8, 2019)
ql.Settings.instance().evaluationDate = todaysDate
spotDates = [todaysDate, ql.Date(1,10,2019), ql.Date(1,11,2019), ql.Date(1,12,2019)]
spotRates = [0, 0.066682, 0.067199, 0.067502] ### Compounded continuously
dayCount = ql.Actual365Fixed()
calendar = ql.UnitedStates()
interpolation = ql.Linear()
compounding = ql.Compounded
compoundingFrequency = ql.Continuous
spotCurve = ql.YieldTermStructureHandle(ql.ZeroCurve(spotDates, spotRates, dayCount, calendar, interpolation, compounding, compoundingFrequency))
issueDate = todaysDate
maturityDate = ql.Date(1,11,2019)
businessConvention = ql.Following
monthEnd = False
dates = [maturityDate]
rolling_convention = ql.Following
schedule = ql.Schedule(dates, calendar, businessConvention)
# pd.DataFrame({'date': list(schedule)})
dayCount = ql.Actual365Fixed()
couponRate = .05
settlementDays = 0
faceValue = 100
fixedRateBond = ql.FixedRateBond(settlementDays, calendar, faceValue, issueDate, maturityDate, ql.Period(ql.Once), [couponRate],dayCount)
bondEngine = ql.DiscountingBondEngine(spotCurve)
fixedRateBond.setPricingEngine(bondEngine)
fixedRateBond.NPV()
但是我得到的值是99.68276963841888
。 我應該得到一個103.808278875
的值,它來自這個計算 - 105*math.exp(-0.067199*dayCount.yearFraction(issueDate,maturityDate))
試試這個構造函數:
fixedRateBond = ql.FixedRateBond(settlementDays, calendar, faceValue, issueDate, maturityDate, ql.Period(ql.Once), [couponRate],dayCount)
更新:另外,如果您想要 5 的完整優惠券,您需要將發行日期提前一年調整,否則優惠券將是該天數的應計系數的 5% 倍。
檢查現金流量以了解我的意思:
for cf in fixedRateBond.cashflows():
print(cf.date().ISO(), cf.amount())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.