I'm trying to build my libor curve using (Deposit, FRAs and Swap) instruments with the goal that my curve match the murex curve, my parameters are :

  • My today date is : 23/10/2019
  • Start of my deposit 6m contract is 25/10/2019 end date is 27/04/2020,day count is act/360 with rate 5%
  • Start of my fra 6x12m contract is 27/04/2020 end date is 27/10/2020,day count conv is act/360 with rate 5.2%

My results are :

  • DF1=0.9749492213947191
  • DF2=0.9498417381171556

but the correct results (from murex) are :

  • DF1=0.9746818596344575
  • DF2=0.9495812616189955

Can someone please explain how extrapolate between today and the spot date curve building ? or why I get different results ? or if you have a guide/book for curve construction for practitioners it would be helpful ? thanks in advance.

  • $\begingroup$ You have 3 pieces of information; the discount factor today is 1.00, the 6m rate out o f spot is x % and the 6x12 FRA is y %, and you are trying to solve 4 discount factors; today (1.00), spot, spot + 6m, spot + 12m. You cannot do this without an assumption. The assumption you make is your model assumption. There may be some fairly common approaches but one method may not necessarily be better than another. I dont know what 'murex' is but the curve it constructs it not necessarily the 'best' or even a good model - but maybe. You can reverse engineer its construction to see what it does. $\endgroup$
    – Attack68
    Commented Jan 7, 2020 at 12:37
  • $\begingroup$ I'm trying to reverse engineer it but getting different results ... Could you please detail more your comment with the example I've or just set the equations so I can have a look at it see what I get as results ? thanks @Attack68 $\endgroup$
    – Gogo78
    Commented Jan 7, 2020 at 12:55
  • $\begingroup$ Does Murex have a helpdesk? Surely they will be able to give you guidance on their methodology or provide some sort of documentation. $\endgroup$
    – oronimbus
    Commented Jan 8, 2020 at 10:47
  • $\begingroup$ Are you only using these two instruments to generate the curve? Is Murex using other instruments to build the whole curve, including the long end? $\endgroup$
    – AlRacoon
    Commented Jan 8, 2020 at 20:18
  • $\begingroup$ @AlRacoon yes, I'm trying to use only this two instruments for the short end of the curve it's the same as murex, but we still get different results how is that possible? ... $\endgroup$
    – Gogo78
    Commented Jan 8, 2020 at 21:08

2 Answers 2


Could it be that the discount factors from Murex are referencing todays date and not the settlement date? What are the O/N and T/N rates in Murex?

Try this to see if it gets you closer...

$$ DF_{O/N} = \frac{1}{1+r_{O/N} \times 1 / 360} $$

$$ DF_{T/N} = \frac{DF_{O/N}}{1+r_{T/N} \times 1 / 360} $$

$$ DF_{6M} = \frac{DF_{T/N}}{1+r_{6M} \times 185 / 360} $$

Incidentally, if you try a O/N and T/N rate of 4.937182%, you get pretty close.

from scipy.optimize import root
def get_6m(r):
    ''' Get 6M DF for a given O/N and T/N rate'''
    df = lambda r, n: 1 / (1+r * n / 360)
    df_on = df(r, 1)
    df_tn = df_on * df(r,1)
    df_6m = df_tn * df(0.05, 185)
    return df_6m

target = 0.9746818596345
rate = root(lambda r: target - final(r), 0)['x'][0]
print(f"Solver result for the O/N and T/N rate: {rate}")

Solver result for the O/N and T/N rate: 0.04937181969259679

df_6m = get_6m(rate)

df_fra = df_6m / (1 + 0.052 * 183/360)



  • $\begingroup$ But this assumes we know target what if we want to do the curve without having any idea what dfs will be it's more complex no ? $\endgroup$
    – Gogo78
    Commented Jan 8, 2020 at 11:36
  • $\begingroup$ No, I was just finding what would be the O/N rate to match your DFs. Do those calculations with the O/N and T/N rates you have in your system to see if you get the desired result. $\endgroup$ Commented Jan 8, 2020 at 11:42
  • 1
    $\begingroup$ I gave you the bounty even though the solution isn’t complete but it still helped me a lot. $\endgroup$
    – Gogo78
    Commented Jan 15, 2020 at 10:07

Murex is using a compounded rate (1+.05/360)^185, while you are using non-compounded: ( 1+ .05 * 185/360). If I remember right - you are correct if you are using LIBOR fixings since they are quoted as straight ACT/360.

  • $\begingroup$ Even when I tried compounded rates I still get different values from them .... $\endgroup$
    – Gogo78
    Commented Jan 7, 2020 at 19:35
  • $\begingroup$ Hmm. You get a slight difference after the 6th or 7th decimal place. It could be from the convexity adjustment. Can you turn it off in Murex and rerun? $\endgroup$
    – JoshK
    Commented Jan 7, 2020 at 23:08
  • $\begingroup$ Also tried that but nothing changes ... can you please have a try at it ? $\endgroup$
    – Gogo78
    Commented Jan 8, 2020 at 8:05
  • $\begingroup$ What vol did you use for the convexity adjustment? There's no absolutely correct number but probably very small if the fixing is the next day... The other thing is that they are probably taking a stub rate for today since you are looking for a DF. So what is today's rate in Murex-land? $\endgroup$
    – JoshK
    Commented Jan 8, 2020 at 12:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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