|
From: Philippe H. <phi...@ex...> - 2020-07-12 02:02:34
|
I'm using a Hull-White model to generate forward paths of the short rate,
from which I then build a discounting curve, from which I compute forward
swap values towards Monte-carlo integration of certain path dependent swap
rate linked derivatives. Here, I am looking at a 2y into 10y swaption, and
for each path, I want to calculate the forward swap rate and the swap NPV.
My problem is that I have a curve that has negative rates on a certain
path, the 2y into 10y forward swap.fairRate() function returns like 94bp.
Since all rates are negative, it's pretty clear that fairRate() should be
negative, and if I use the curve's discount factors and use the good old
approximation for the swap rate with the formula C/2 *
Sum_i(FixedLegDiscountFactor(i))/(1-DiscountFactor(TMat)) then I get the
correct -250bp forward swap rate (where i=1 to 20 corresponding to 20
forward semi-annual fixed payments).
So I am wondering if the swap cash flows do not work with negative rates or
else, but as it stands right now, the swap.fairRate() function doesn't
work at all. I also checked that by solving for the fixed rate that would
make the swap net cash-flows to be equal to zero, then I get the value
returned by swap.fairRate(). This would further indicate that the latter
function is correct, but that the cash flows are not. lastly, whether I
select a path with positive or negative forward rates, the cf.amount() is
always positive.
This is the code I use to generate the cash-flows:
def swap_cash_flows(swap: ql.Swap,
crvh,
):
output_list = []
for i, cf in enumerate(swap.leg(0)):
dt = cf.date()
dfact = crvh.discount(dt)
output_list.append(['leg0', cf.date(), dfact, cf.amount()])
for i, cf in enumerate(swap.leg(1)):
dt = cf.date()
dfact = crvh.discount(dt)
output_list.append(['leg1', cf.date(), dfact, cf.amount()])
df1 = pd.DataFrame(columns=['leg', 'cf_date', 'disc_fact',
'cf_amount'], data=output_list)
return df1
The short-rate path corresponding to the curve handle crvh is as follows:
[image: image.png]
and lastly, this is the table of cash flows, dates and discount factors:
leg cf_date disc_fact cf_amount
leg0 2023-01-11 1.031727084 0.004717496
leg0 2023-07-11 1.044326706 0.004640581
leg0 2024-01-11 1.056475309 0.004717496
leg0 2024-07-11 1.067323978 0.004666219
leg0 2025-01-13 1.080208917 0.004768773
leg0 2025-07-11 1.095773345 0.004589303
leg0 2026-01-12 1.107358267 0.004743135
leg0 2026-07-13 1.119706713 0.004666219
leg0 2027-01-11 1.134937064 0.004666219
leg0 2027-07-12 1.148588556 0.004666219
leg0 2028-01-11 1.164662739 0.004691858
leg0 2028-07-11 1.184811281 0.004666219
leg0 2029-01-11 1.202933688 0.004717496
leg0 2029-07-11 1.22143445 0.004640581
leg0 2030-01-11 1.244698418 0.004717496
leg0 2030-07-11 1.268437607 0.004640581
leg0 2031-01-13 1.289269217 0.004768773
leg0 2031-07-11 1.310335034 0.004589303
leg0 2032-01-12 1.330460609 0.004743135
leg0 2032-07-12 1.351119197 0.004666219
leg1 2022-10-11 1.025077227 0.000595151
leg1 2023-01-11 1.031727084 0.000595151
leg1 2023-04-11 1.037740592 0.000582209
leg1 2023-07-11 1.044326706 0.00058868
leg1 2023-10-11 1.050712784 0.001151809
leg1 2024-01-11 1.056475309 0.001190658
leg1 2024-04-11 1.062040699 0.001177708
leg1 2024-07-11 1.067323978 0.001177708
leg1 2024-10-11 1.073341181 0.001190658
leg1 2025-01-13 1.080208917 0.001216557
leg1 2025-04-11 1.087963402 0.00113886
leg1 2025-07-11 1.095773345 0.001322081
leg1 2025-10-14 1.102080743 0.002477114
leg1 2026-01-12 1.107358267 0.002346587
leg1 2026-04-13 1.112978456 0.002372691
leg1 2026-07-13 1.119706713 0.002372691
leg1 2026-10-13 1.127732208 0.002398796
leg1 2027-01-11 1.134937064 0.002346587
leg1 2027-04-12 1.141923849 0.002372691
leg1 2027-07-12 1.148588556 0.002390753
leg1 2027-10-12 1.155929127 0.002537285
leg1 2028-01-11 1.164662739 0.002509671
leg1 2028-04-11 1.174741361 0.002509671
leg1 2028-07-11 1.184811281 0.002509671
leg1 2028-10-11 1.194083437 0.002537285
leg1 2029-01-11 1.202933688 0.002537285
leg1 2029-04-11 1.211815927 0.002482058
leg1 2029-07-11 1.22143445 0.002509671
leg1 2029-10-11 1.232822712 0.002537285
leg1 2030-01-11 1.244698418 0.002537285
leg1 2030-04-11 1.256926582 0.002482058
leg1 2030-07-11 1.268437607 0.003472659
leg1 2030-10-11 1.278474854 0.004092082
leg1 2031-01-13 1.289269217 0.004181226
leg1 2031-04-11 1.299839855 0.003914165
leg1 2031-07-11 1.310335034 0.004047153
leg1 2031-10-14 1.320633529 0.004225801
leg1 2032-01-12 1.330460609 0.004002946
leg1 2032-04-12 1.340898895 0.004047513
leg1 2032-07-12 1.351119197 0.004047513
Regards
Philippe
--
Brokerage services offered through Exos Securities LLC, member of
SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/>. For important
disclosures, click here <https://www.exosfinancial.com/disclosures>.
|