Re: QuantLib Python - pricing a ForwardRateAgreement
Posted by giambologna on Mar 29, 2017; 7:02pm
URL: http://quantlib.414.s1.nabble.com/QuantLib-Python-pricing-a-ForwardRateAgreement-tp18154p18159.html
I think the issue is that you didn't link Libor object to your curve.
Try this:
import QuantLib
nowdate=QuantLib.Date(23,QuantLib.March,2017)
QuantLib.Settings.instance().evaluationDate = nowdate
print "evaluation date: {0}".format(QuantLib.Settings.instance().evaluationDate)
basis=QuantLib.Actual360()
calendar=QuantLib.TARGET()
r = 0.02
rate = QuantLib.SimpleQuote(r)
rate_handle = QuantLib.QuoteHandle(rate)
dc = QuantLib.Actual365Fixed()
flatcurve=QuantLib.FlatForward(nowdate, rate_handle, dc)
curvehandle = QuantLib.RelinkableYieldTermStructureHandle()
curvehandle.linkTo(flatcurve)
maturitydate=QuantLib.Date(3,QuantLib.July,2017)
expirydate=QuantLib.Date(3,QuantLib.October,2017)
euribor3m=QuantLib.Euribor3M(curvehandle)
euribor3m.addFixing(QuantLib.Date(21,QuantLib.March,2017),0.02)
instr=QuantLib.ForwardRateAgreement(maturitydate,expirydate,QuantLib.Position.Long,0.023,1000000.0,euribor3m,curvehandle)
print "is expired? {0}".format(instr.isExpired())
#the following two lines might be redundant
dse = QuantLib.DiscountingSwapEngine(curvehandle)
instr.setPricingEngine(dse)
qlpv=instr.NPV()
fwd = instr.forwardRate()
print(qlpv)