|
From: isilay e. <ero...@gm...> - 2020-10-08 12:10:48
|
Dear David,
I'm working on Anaconda Python,
Thank you for your help,
When I ran your query,
I got negative fwd rates and negative fwd cash flows, am I missing
something?
You can see my results in the following:
import QuantLib as ql
from pandas import DataFrame
dates = [
'07-05-2019', '11-11-2019', '09-12-2019', '09-01-2020', '10-02-2020',
'09-03-2020', '09-04-2020', '11-05-2020', '09-06-2020',
'09-07-2020', '10-08-2020', '09-09-2020', '09-10-2020', '09-11-2020',
'10-05-2021', '09-05-2022', '09-05-2023', '09-05-2024']
dfs = [
1.000000, 1.001185, 1.001352, 1.001561, 1.001766, 1.001941, 1.002146,
1.002355, 1.002534,
1.002712, 1.002897, 1.003069, 1.003232, 1.003395, 1.004146, 1.004549,
1.003148, 0.999840]
ql.Settings.instance().evaluationDate = ql.Date(7,5,2019)
qlDates = [ql.Date(dt, '%d-%m-%Y') for dt in dates]
dayCounter = ql.Actual360()
curve = ql.DiscountCurve(qlDates, dfs, dayCounter, ql.NullCalendar())
forwardStart = ql.Date(15,6,2020)
forwardEnd = ql.Date(15,12,2020)
fwd = curve.forwardRate(forwardStart, forwardEnd, dayCounter,
ql.Compounded, ql.Annual).rate()
print(fwd)
-0.0019082224391586688
yts = ql.YieldTermStructureHandle(curve)
schedule = ql.MakeSchedule(ql.Date(15,6,2020), ql.Date(15,6,2021),
ql.Period('6m'))
index = ql.Euribor6M(yts)
bond = ql.FloatingRateBond(2,100, schedule, ql.Euribor6M(yts),
ql.Actual360())
for dt in schedule:
print(dt, index.fixing(dt))
June 15th, 2020 -0.00190201607110241
December 15th, 2020 -0.001253382120767248
June 15th, 2021 -0.00039680612008295636
On 8 Oct 2020 Thu at 12:21 David Duarte <nh...@gm...> wrote:
> Are you using c++, python or excel?
>
> Since you already have a yield curve, you can build the object by
> inputting spot rates (ZeroCurve class) or discount factors (DiscountCurve).
>
> Here is an example using python:
>
> dates = [
> '07-05-2019', '11-11-2019', '09-12-2019', '09-01-2020', '10-02-2020',
> '09-03-2020', '09-04-2020', '11-05-2020', '09-06-2020',
> '09-07-2020', '10-08-2020', '09-09-2020', '09-10-2020', '09-11-2020',
> '10-05-2021', '09-05-2022', '09-05-2023', '09-05-2024']
>
> dfs = [
> 1.000000, 1.001185, 1.001352, 1.001561, 1.001766, 1.001941, 1.002146,
> 1.002355, 1.002534,
> 1.002712, 1.002897, 1.003069, 1.003232, 1.003395, 1.004146, 1.004549,
> 1.003148, 0.999840]
>
> ql.Settings.instance().evaluationDate = ql.Date(7,5,2019)
> qlDates = [ql.Date(dt, '%d-%m-%Y') for dt in dates]
> dayCounter = ql.Actual360()
> curve = ql.DiscountCurve(qlDates, dfs, dayCounter, ql.NullCalendar())
>
>
>
> To get the forward rates, you can use the "forwardRate" method from the
> curve:
>
> forwardStart = ql.Date(15,6,2020)
> forwardEnd = ql.Date(15,12,2020)
> fwd = curve.forwardRate(forwardStart, forwardEnd, dayCounter,
> ql.Compounded, ql.Annual).rate()
> print(fwd)
>
> or build the floating rate bond object and inspect the rate on the
> cashflows:
>
> yts = ql.YieldTermStructureHandle(curve)
> schedule = ql.MakeSchedule(ql.Date(15,6,2020), ql.Date(15,6,2021),
> ql.Period('6m'))
> index = ql.Euribor6M(yts)
> bond = ql.FloatingRateBond(2,100, schedule, ql.Euribor6M(yts),
> ql.Actual360())
>
> for cf in map(ql.as_coupon, bond.cashflows()):
> if cf:
> print(cf.accrualStartDate().ISO(), cf.accrualStartDate().ISO(),
> f"{cf.rate():.3%}")
>
>
> or even get the rate from the index for given set of dates:
>
> for dt in schedule:
> print(dt, index.fixing(dt))
>
>
>
>
>
> On Thu, 8 Oct 2020 at 06:39, isilay erol <ero...@gm...> wrote:
>
>> Dear Luigi,
>>
>> I just met with quantlib.
>>
>> I try to understand from the examples how cash flows of floating rate
>> bonds are created.
>>
>> But in the examples, I always see that yield curves are established from
>> scratch.
>>
>>
>>
>> I want to calculate forward rates and forward rate coupons with the yield
>> curve which I already have.
>>
>> (I don't want to construct a yield curve from scratch again - I have a
>> zero coupon yield curve)
>>
>> And this way I want to create the cash flows of the floating bond. But I
>> could not understand how I could do this.
>>
>> Can you help me on this issue?
>>
> _______________________________________________
>
>
>> QuantLib-users mailing list
>> Qua...@li...
>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>
>
|