Can anyone help on this question? I failed to find any public material discussing this topic.

I have rate, say 5%, quoted in Monthly payment, using Actual/360 basis. Now, I need to convert it to an equivalent rate, quoted in Semi-Annual payment, using 30/360 basis. How should I tackle this? How about convert semi-Annual payment, actual/365 basis?

  • $\begingroup$ The idea to convert from one convention to the other is to write the discount or capitalization factor's expression using both conventions, and equate both expressions. Did you try this? Where are you stuck exactly? $\endgroup$ – byouness May 15 '18 at 18:10
  • $\begingroup$ i am stuck in how to convert a rate based on 30/360 to a rate based on actual/360. $\endgroup$ – Quant2015 May 15 '18 at 18:57
  • 2
    $\begingroup$ I think this can hardly be answered in a general form. The exact conversion between rates with different day count conventions depends on the concrete starting date and end date. I think you can do this only numerically with some kind of software (e.g. QuantLib) for a concrete numerical case. $\endgroup$ – Bernd May 15 '18 at 19:01
  • $\begingroup$ I think you what you need is a textcourse on the topic, maybe the relevant chapter in Hull's book - options futures and other derivatives will be useful. There are maybe day count conventions and many compounding possibilities. $\endgroup$ – byouness May 15 '18 at 22:05
  • $\begingroup$ Dear Quant2015, is your question answered? If yes please mark the question as answered. $\endgroup$ – Bernd Jun 13 '18 at 20:08

Act/360 and 30/360 is the 'day count convention'. It is used to determine the 'year fraction'. Computing this year fraction for different day count conventions gives different values depending on the concrete starting date and end date of the considered period.


print( ActualActual().yearFraction(Date(15,1,2016), Date(15,1,2017)) )
print(    Thirty360().yearFraction(Date(15,1,2016), Date(15,1,2017)) )
print(    Actual360().yearFraction(Date(15,1,2016), Date(15,1,2017)) )

Start and end dates one year later:

print( ActualActual().yearFraction(Date(15,1,2017), Date(15,1,2018)) )
print(    Thirty360().yearFraction(Date(15,1,2017), Date(15,1,2018)) )
print(    Actual360().yearFraction(Date(15,1,2017), Date(15,1,2018)) )

Putting this differently, there is no general answer to your question.

What you could do is converting a monthly compounding rate into a quarterly-compounding or so.

  1. Take this equation from Brigo/Mercurio (2006), page 8: rate = k / ( P^(1/(k*tau)) ) - k

  2. Set tau according to concrete number computed above

  3. Set k equal to the compounding type k you are interested (monthly=1/12)

  4. Set rate equal to the rate you want to convert, e.g. 5%

  5. Solve for P

  6. Write down the equation above for the P you got and the other compounding type you want to convert to (quarterly=1/4).


When one is considering an interest rate that holds to a single date in the future, it is straightforward to convert an interest rate from a source compounding frequency and day count to a target compounding frequency and day count. The key insight is that, however constructed using compounding frequencies and day counts, there is only one discount factor (the present value of $1) associated with a given future date for a given credit quality.

The algorithm is as follows. One starts by computing the discount factor for the future date using the source compounding frequency and day count. Then one uses the discount factor to solve for the rate that recovers the same discount factor using the target compounding frequency and day count.

Let R_S = source interest rate in decimal form R_T = target interest rate in decimal form (what we are solving for) F_S = source rate comp freq (1=ann. ,2=semi-ann,…12=monthly etc.) F_T = target rate compounding frequency AF_S = accrual factor (time in years) using the source rate day count AF_T = accrual factor (time in years) using the target rate day count DF = the discount factor for the future date (the PV of $1)

Assuming discrete compound rates, we have from the source rate information (slightly different equations are used for continuous compounding but the idea id the same):

DF = 1/(1 + R_S/ F_S)^( AF_S*F_S)

Suppose R_S = 0.02, F_S = 2, and AF_S = 2, we then have

DF = 1/(1 + .02/2)^4 = 0. 0.9609803445 

This is the discount factor we must recover. Now assume that the target rate has the following: F_T = 1 and AF_T = 1.98 (different due, say, to an assumed different day count)

  1. 0.9609803445 = 1/(1 + R_S/ 1)^( 1.98*1) Solving, R_S = 0.02030507783 or 2.0305… percent

Finally, we verify that the solved target interest rate generates the same discount factor

DF = 1/(1 + R_T/ F_T)^( AF_TF_T) = 1/(1+0.02030507783/1)^(1.981) DF = 0. 0.9609803445

If, on the other hand, one is dealing with a bond or a swap that has multiple cash flow dates, the work gets more complicated and involves a cumulative or summed discount factor.


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.