Equivalent Rates for Monthly and Quarterly Compounding
Summary
The note explains how to convert a nominal interest rate compounded monthly into an equivalent rate compounded quarterly over a specific calendar interval. It first computes the elapsed time using the day-count convention, then calculates the accumulated value under monthly compounding. The quarterly rate is found by solving for the rate that produces the same accumulated value over that same interval.
The example applies this method to a 6.75% rate from January 14 to April 14, 2020, using Actual/365 Fixed. The conversion reproduces QuantLib’s reported result and verifies equivalence by comparing the two ending amounts. The document addresses the calculation behind the reported output, but does not explain why the questioner’s separate manual result differed. Its method assumes the stated compounding conventions and day-count fraction; changing those inputs can change the equivalent rate.
Key ideas
- Equivalent rates preserve the accumulated value over a specified time interval.
- Calculate the interval using the selected day-count convention before converting compounding frequencies.
- Solve for the new nominal rate that produces the same accumulation under the target frequency.
- Verify a conversion by comparing the accumulated amounts under both rates.
Tags
Full text
# equivalentRate not matching for compounding cashflows
# equivalentRate not matching for compounding cashflows
> I am calculating equivalentrate between two days in quantlib python using following functions but the output is not matching with the manual calculation.
```
couponrate = ql.InterestRate(.0675, ql.Actual365Fixed(), ql.Compounded, ql.Monthly)
coupon = couponrate.equivalentRate(ql.Actual365Fixed(),ql.Compounded, ql.Quarterly,ql.Date(14,1,2020), ql.Date(14,4,2020)).rate()
print(coupon)
```
> 0.06788039941406243 but correct equivalentRate value is 0.067879171338466
## Answer by Luigi Ballabio (score 0, accepted)
https://quant.stackexchange.com/a/69563
There are 91 days between January 14th and April 14th 2020, so the time between them is $T = 91/365$.
Given 1\$ today, a rate $r = 6.75\%$ compounded monthly over $T$ gives an amount $A = (1 + r/12)^{T \times 12}$, so:
```
>>> import math
>>> T = 91/365
>>> r = 0.0675
>>> A = math.pow(1 + r/12, T*12)
>>> print(A)
1.0169232152238288
```
The rate that gives the same amount when compounded quarterly is $R$ such that $(1 + R/4)^{T \times 4} = A$, so $R = 4 \times (A^{1/(T \times 4)} - 1)$:
```
>>> R = 4 * (math.pow(A, 1/(T*4)) - 1)
>>> print(R)
0.06788039941406243
```
You can check, of course, that this gives you the same compounded amount:
```
>>> print(math.pow(1 + R/4, T*4))
1.0169232152238288
```
How did you calculate your result?Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.