Re: Changing Second/Third Fixing on Vanilla Swap

Posted by Peter Caspers-4 on
URL: http://quantlib.414.s1.nabble.com/Changing-Second-Third-Fixing-on-Vanilla-Swap-tp15890p15906.html

sorry, I read the example too fast. For GBP Libor there are 0 fixing
days, so in _this_ case and if you take the _start_ of the calculation
period generated with UK calendar, it is at the same time the fixing
date. So it should be fine.
Peter

On 21 September 2014 16:41, KK <[hidden email]> wrote:

> Hey Peter
> I suspect I may have fallen foul of this. I have submitted a piece of code
> to the user group as I find that the 2nd reset implied by the schedule
> function isn't what I would expect it to be - or what the iborleg function
> implies. If it doesn't get posted, can I send to you for your perusal?
> Sent from my BlackBerry device on the Rogers Wireless Network
> ________________________________
> From: "Peter Caspers-4 [via QuantLib]" <[hidden email]>
> Date: Sun, 21 Sep 2014 05:43:28 -0700 (MST)
> To: KK<[hidden email]>
> Subject: Re: Changing Second/Third Fixing on Vanilla Swap
>
> Hi Khalid,
> you have to be careful. I'd say floatingLeg[4].date() is the payment
> date of this flow and index.fixing( ... ) called on this date gives
> the forecast of the index's fixing on this date (which is probably not
> what you want).
> Peter
>
>
> On 20 September 2014 23:09, KK <[hidden email]> wrote:
>
>> Hi Peter
>>
>> After a little (a lot) of experimentation, I managed to get this working:
>>
>> for x in schedule:
>>     print index.fixing(x)
>>
>> print index.fixing(floatingleg[4].date()) will pull the 5th fixing up if
>> needed.
>>
>> Many thanks for the help here!
>>
>>
>>
>>
>>
>> On Sat, Sep 20, 2014 at 1:08 PM, Peter Caspers-4 [via QuantLib] <[hidden
>> email]> wrote:
>>>
>>> I think someone else should jump in here, I am not really a Python
>>> expert.
>>> Peter
>>>
>>>
>>> On 20 September 2014 18:37, KK <[hidden email]> wrote:
>>>
>>> > Thanks for replying so fast Peter. I am a little embarrassed to admit
>>> > my
>>> > c++
>>> > knowledge is very weak. Do you happen to know the equivalent method for
>>> > retrieving the schedule of implied fixings using python?
>>> > Sent from my BlackBerry device on the Rogers Wireless Network
>>> > ________________________________
>>> > From: "Peter Caspers-4 [via QuantLib]" <[hidden email]>
>>> > Date: Sat, 20 Sep 2014 09:07:22 -0700 (MST)
>>> > To: KK<[hidden email]>
>>> > Subject: Re: Changing Second/Third Fixing on Vanilla Swap
>>>
>>> >
>>> > I'd take the underlying swap from the swap rate helper with maximum
>>> > maturity ( by calling swap() on this helper ), then get the floating
>>> > leg ( by calling floatingLeg() ), iterate over it to get the coupons (
>>> > you have to cast them with something like
>>> > boost::dynamic_pointer_cast<FloatingRateCoupon>( leg[i] ) ) and ask
>>> > each coupon for the fixing date ( by calling fixingDate() ).
>>> > Peter
>>> >
>>> > On 20 September 2014 17:31, Khalid <[hidden email]> wrote:
>>> >
>>> >> Hi Peter
>>> >>
>>> >> Many thanks for the quick and detailed reply. I suspect a simpler
>>> >> solution
>>> >> will be to use the cash flow date schedule specified by the curve and
>>> >> create
>>> >> cashflows myself from my own list of fixings that I want to use.
>>> >>
>>> >>
>>> >> As an aside, is there a way of creating the schedule of 6mth fixings
>>> >> implied by the swap curve? I am able to back out the number using the
>>> >> nominal amount, the cash flow amount and the days accrued period, but
>>> >> wonder
>>> >> if there is a way of directly calling all the fixings on the floating
>>> >> leg.
>>> >>
>>> >>
>>> >> Many thanks again
>>> >>
>>> >>
>>> >>
>>> >> On Sep 20, 2014, at 6:10 AM, Peter Caspers <[hidden email]> wrote:
>>> >>
>>> >>> Hi Khalid,
>>> >>>
>>> >>> the InterestRateIndex class never takes fixings for future dates
>>> >>> (i.e.
>>> >>> dates bigger than the evaluation date set in the settings) into
>>> >>> account. In derived classes like IborIndex or SwapIndex they are
>>> >>> estimated on a curve you can attach to the index, so if you want to
>>> >>> compute scenarios where future fixings are shifted, you probably have
>>> >>> to do appropriate shifts on the curve.
>>> >>>
>>> >>> The evaluation date itself plays a special role (since fixings are
>>> >>> usually available only after a certain time of the day). With the
>>> >>> setting enforceTodaysHistoricFixing you can require that on the
>>> >>> evaluation date a fixing must be used, and if this is not available,
>>> >>> an exception is thrown. This is for example useful if you have an end
>>> >>> of day processing where you know that the fixing should be available.
>>> >>> The default value is false though, allowing to take a fixing into
>>> >>> account if available and otherwise estimate it on a curve.
>>> >>>
>>> >>> Finally the forecastFixing method in InterestRateIndex has a flag
>>> >>> forecastTodaysFixing (defaulted to false) which if true enforces
>>> >>> estimation on a curve even if the fixing is available. This is for
>>> >>> example useful if you don't want to nail today's fixing during
>>> >>> sensitivities calculation.
>>> >>>
>>> >>> Peter
>>> >>>
>>> >>>
>>> >>> On 20 September 2014 05:52, KK <[hidden email]> wrote:
>>> >>>> This code example from:
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> https://github.com/alexpoly/quant-snippets-python-c/blob/master/amortizing%20swap%20valuation%20quantlib.py
>>> >>>>
>>> >>>>
>>> >>>> from  QuantLib import *
>>> >>>> import numpy as np
>>> >>>> from math import *
>>> >>>>
>>> >>>> todaysDate=Date(31,12,2013)
>>> >>>> startDate=todaysDate
>>> >>>> Settings.instance().evaluationDate=todaysDate;
>>> >>>> crvToday=FlatForward(todaysDate,0.0121,Actual365Fixed())
>>> >>>> forecastTermStructure = RelinkableYieldTermStructureHandle()
>>> >>>> index = GBPLibor(Period("6m"),forecastTermStructure)
>>> >>>> maturity = Date(31,12,2018);
>>> >>>> schedule = Schedule(startDate,
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> maturity,Period("6m"),UnitedKingdom(),ModifiedFollowing,ModifiedFollowing,DateGeneration.Forward,
>>> >>>> False)
>>> >>>> nominals=[100.0]*10
>>> >>>> couponRates=[0.05]*10
>>> >>>> floatingleg=IborLeg(nominals,schedule,index,Actual365Fixed())
>>> >>>>
>>> >>>> fixedleg=FixedRateLeg(schedule,Actual365Fixed(),nominals,couponRates)
>>> >>>>
>>> >>>> index.addFixing(index.fixingDate(schedule[0]),0.01)
>>> >>>> #index.addFixing(index.fixingDate(schedule[1]),0.01)
>>> >>>>
>>> >>>> swap1=Swap(floatingleg,fixedleg)
>>> >>>> discountTermStructure = RelinkableYieldTermStructureHandle()
>>> >>>> swapEngine = DiscountingSwapEngine(discountTermStructure)
>>> >>>> swap1.setPricingEngine(swapEngine)
>>> >>>> discountTermStructure.linkTo(crvToday)
>>> >>>> forecastTermStructure.linkTo(crvToday)
>>> >>>> for x in floatingleg:
>>> >>>>    print x.date(), x.amount()
>>> >>>>
>>> >>>>
>>> >>>> can show the floating cashflows on a vanilla swap. By including the
>>> >>>> line:
>>> >>>>
>>> >>>> index.addFixing(index.fixingDate(schedule[0]),0.01)
>>> >>>>
>>> >>>> I can change the first fixing to 1%
>>> >>>>
>>> >>>> How can I *also *change the second fixing to 1.5%?
>>> >>>>
>>> >>>> index.addFixing(index.fixingDate(schedule[1]),0.015)
>>> >>>>
>>> >>>> has no effect.
>>> >>>>
>>> >>>> Thanks
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> --
>>> >>>> View this message in context:
>>> >>>>
>>> >>>>
>>> >>>> http://quantlib.10058.n7.nabble.com/Changing-Second-Third-Fixing-on-Vanilla-Swap-tp15890.html
>>> >>>> Sent from the quantlib-users mailing list archive at Nabble.com.
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> ------------------------------------------------------------------------------
>>> >>>> Slashdot TV.  Video for Nerds.  Stuff that Matters.
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
>>> >>>> _______________________________________________
>>> >>>> QuantLib-users mailing list
>>> >>>> [hidden email]
>>> >>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>> >
>>> >
>>> > ------------------------------------------------------------------------------
>>> > Slashdot TV.  Video for Nerds.  Stuff that Matters.
>>> >
>>> >
>>> > http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
>>> > _______________________________________________
>>> > QuantLib-users mailing list
>>> > [hidden email]
>>> > https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>> >
>>> >
>>> > ________________________________
>>> > If you reply to this email, your message will be added to the
>>> > discussion
>>> > below:
>>> >
>>> >
>>> > http://quantlib.10058.n7.nabble.com/Changing-Second-Third-Fixing-on-Vanilla-Swap-tp15890p15893.html
>>> > To unsubscribe from Changing Second/Third Fixing on Vanilla Swap, click
>>> > here.
>>> > NAML
>>> >
>>> > ________________________________
>>> > View this message in context: Re: Changing Second/Third Fixing on
>>> > Vanilla
>>> > Swap
>>> >
>>> > Sent from the quantlib-users mailing list archive at Nabble.com.
>>> >
>>> >
>>> >
>>> > ------------------------------------------------------------------------------
>>> > Slashdot TV.  Video for Nerds.  Stuff that Matters.
>>> >
>>> >
>>> > http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
>>> > _______________________________________________
>>> > QuantLib-users mailing list
>>> > [hidden email]
>>> > https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>> >
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Slashdot TV.  Video for Nerds.  Stuff that Matters.
>>>
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> QuantLib-users mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>>
>>>
>>> ________________________________
>>> If you reply to this email, your message will be added to the discussion
>>> below:
>>>
>>>
>>> http://quantlib.10058.n7.nabble.com/Changing-Second-Third-Fixing-on-Vanilla-Swap-tp15890p15896.html
>>> To unsubscribe from Changing Second/Third Fixing on Vanilla Swap, click
>>> here.
>>> NAML
>>
>>
>>
>> ________________________________
>> View this message in context: Re: Changing Second/Third Fixing on Vanilla
>> Swap
>> Sent from the quantlib-users mailing list archive at Nabble.com.
>>
>>
>> ------------------------------------------------------------------------------
>> Slashdot TV.  Video for Nerds.  Stuff that Matters.
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
>> _______________________________________________
>> QuantLib-users mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>
> ------------------------------------------------------------------------------
> Slashdot TV.  Video for Nerds.  Stuff that Matters.
> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
> _______________________________________________
> QuantLib-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
>
> ________________________________
> If you reply to this email, your message will be added to the discussion
> below:
> http://quantlib.10058.n7.nabble.com/Changing-Second-Third-Fixing-on-Vanilla-Swap-tp15890p15902.html
> To unsubscribe from Changing Second/Third Fixing on Vanilla Swap, click
> here.
> NAML
>
> ________________________________
> View this message in context: Re: Changing Second/Third Fixing on Vanilla
> Swap
> Sent from the quantlib-users mailing list archive at Nabble.com.
>
> ------------------------------------------------------------------------------
> Slashdot TV.  Video for Nerds.  Stuff that Matters.
> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
> _______________________________________________
> QuantLib-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>

------------------------------------------------------------------------------
Slashdot TV.  Video for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users