1
$\begingroup$

I have bootstrapped my curve based on end-of-day data for 24th Nov, 2017

I am then using that to price a off-market swap as below:

swap = VanillaSwap(VanillaSwap.Payer, 10000.0,
                       fixed_schedule,
                       fixed_coupon/100,
                       Thirty360(),
                       floating_schedule,
                       index,
                       0.0, # <-- libor fixing
                       Actual360())

My swap details are:-

Valuation date: 27th Nov, 2017
Fixed_coupon = 2.2575
Maturity Date = 27th Nov, 2027
float freq = Period(3, Months)
fixed freq = Period(6, Months)

When I call the below:-

swap.NPV()

I get : {Runtime error} 2nd leg: Missing Euribor3M Actual/360 fixing for November 23rd, 2017

Does this mean I have to pass in a libor fixing when I create my VanillaSwap object?

$\endgroup$
2
$\begingroup$

Yes, you have to pass an Euribor fixing because your coupon is fixing in the past with respect to the valuation date and thus its rate can't be forecast on the interest-rate curve. However, it's not passed through the construtor argument you have commented in your code; that one is used to pass any additional spread (for instance, if the floating leg swap were to pay Euribor plus 10 bps).

The way to store a past fixing is through the index instance. You can do it as

index.addFixing(Date(23,November,2017), rate);

after which it will be available to all Euribor3M instances.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.