Skip to content
All library documents

Inferring Swap Roll Dates and End-of-Month Conventions

Article Quant Q&A · Author: Magnyz

Summary

The note examines how to infer annual payment dates for a plain vanilla swap when its effective date and maturity have an ambiguous relationship to month-end. It explains that an end-of-month roll cannot produce a regular schedule without stubs when the effective date is not month-end but the maturity date is. Given matching day numbers at both endpoints, a numeric day-of-month roll is presented as the more logical inference, while emphasizing that quoted swap conventions can vary by market and tenor.

The discussion illustrates the schedule outcomes and notes that market practice may apply end-of-month rules differently across currencies and maturities. A second answer raises a distinction between calendar month-end and last business day under updated definitions, but acknowledges uncertainty about how that applies to standard swaps. The examples clarify schedule mechanics; they do not establish a universal convention. Traders and researchers should confirm the relevant trade terms and market conventions rather than infer them from dates alone.

Key ideas

  • An end-of-month roll can create a stub when the effective date is not month-end.
  • Matching endpoint day numbers can support inferring a numeric roll day.
  • Swap end-of-month conventions may differ by currency and tenor.
  • Schedule examples explain possible conventions but do not settle every market's practice.

Tags

Full text
# end-of-month or not for plain vanilla interest rate swap


# end-of-month or not for plain vanilla interest rate swap












Quick and hopefully simple question about a standard swap schedule. Let's say we have a plain vanilla 3y fix-flt interest rate swap with cpn-freq = 1, no stubs, in for example EUR. Start date: 2021-11-29 (NOT last bus day in month) Maturity: 2024-11-29 (last bus day in month) If I just have a quote on a screen what should be assumed regarding the intermediary roll dates? Should they be on the end-of-moth dates or not i.e. [2022-11-29, 2023-11-29] or [2022-11-30, 2023-11-30]? Thanks.

## Answer by Attack68 (score 1, accepted)

https://quant.stackexchange.com/a/80339

This is, in general, quite a difficult question. One which I have had extensive discussions with my internal quants at various different banks and with the fixed income coordinator at Bloomberg who decides on their definitions on tickered instruments (i.e. those with monikers such as EUSA4Y).

If we just address the item in the question:

> 29 Nov 2021 (not EoM) -> 29 Nov 2024 (EoM) what should be assumed regarding the roll dates?

This swap cannot be EoM roll dates and be a regular schedule (one without stubs); that is impossible because the effective date is not end-of-month. If you try to create this schedule with those specific dates and roll you will define a stub: short by default or long if specified. This should be fairly consistently implemented across all schedule builders.

```
from rateslib import *  # python==3.12, rateslib==1.4.0

schedule = Schedule(
    effective=dt(2021, 11, 29), 
    termination=dt(2024, 11, 29), 
    roll="eom", 
    frequency="a",
    calendar="bus",
)
###
freq: A,  stub: SHORTFRONT,  roll: eom,  pay lag: 2,  modifier: MF
    Period Unadj Acc Start Unadj Acc End  Acc Start    Acc End    Payment
0     Stub      2021-11-29    2021-11-30 2021-11-29 2021-11-30 2021-12-02
1  Regular      2021-11-30    2022-11-30 2021-11-30 2022-11-30 2022-12-02
2  Regular      2022-11-30    2023-11-30 2022-11-30 2023-11-30 2023-12-04
3  Regular      2023-11-30    2024-11-30 2023-11-30 2024-11-29 2024-12-03
###
```

Since the 29th is the day number on both `effective` and `termination` and both of those are valid and at least one is not EoM then the most logical explanation is that the `roll` is 29 and the swap should be scheduled as follows:

```
schedule = Schedule(
    effective=dt(2021, 11, 29), 
    termination=dt(2024, 11, 29), 
    frequency="a",
    calendar="bus",
)
###
freq: A,  stub: SHORTFRONT,  roll: 29,  pay lag: 2,  modifier: MF
    Period Unadj Acc Start Unadj Acc End  Acc Start    Acc End    Payment
0  Regular      2021-11-29    2022-11-29 2021-11-29 2022-11-29 2022-12-01
1  Regular      2022-11-29    2023-11-29 2022-11-29 2023-11-29 2023-12-01
2  Regular      2023-11-29    2024-11-29 2023-11-29 2024-11-29 2024-12-03
###
```

rateslib makes the subjective assumption that inferred rolldays when "eom" is impossible are numeric only. A counter example might be 15 march 20xx to 15 march 20xy where obviously 15th satisfies as a rollday but it might also be an "imm" rollday. This is documented in rateslib's released book: "Coding Interest Rates: FX, Swaps and Bonds"

#### Termination as Tenor

When the termination is a tenor such as 3Y, effective from a date which is "eom" rateslib assumes two possibilities;

- either eom is True and the end date is determined as eom,

- eom is False and the end date is determined from the day of the effective date and may not be eom.

In markets this choice is usually a market convention. Some markets, e.g. GBP tend to apply eom rules across the whole curve, whereas other markets such as Eur, Us, and Canada seem to apply the eom rule only for short dated swaps (upto 1y or 2y) and don't apply eom for longer tenors.

#### Effective and Termination as Tenors (the 1y1y problem)

These issues branch to more complicated cases when both dates are defined as tenors, and these are explored in that book.

## Answer by BerndSchmitz (score 1)

https://quant.stackexchange.com/a/78709

Actually a tricky question. In the 2021 ISDA the end-of-month convention was specified to mean last calendar date of the month instead of last business day (see https://www.isda.org/a/BNEgE/Key-Changes-in-the-2021-ISDA-Interest-Rate-Derivatives-Definitions-June-2021.pdf). As Sebastian correctly pointed out, swaps are usually rolled out from maturity. So I would say that, if you contractually agree that the eom-rule applies to the swap in scope, then it gets activated if the maturity date is the last calendar date of the month. But I couldn't find any document verifying this statement.

Having that said I always hear from my traders that the eom-rule does not apply to standard swaps. Assume you would have traded a 10y EURIOBOR swap on 2024-02-26, starting on 2024-02-28 and maturing on 2034-02-28. Assume further that the eom-rule applies to that swap and gets activated as maturity date is the last calendar date of the respective month. Then one would roll over 2024-02-29 (leap year) and this would imply a natural stub of 1d - which is definitely not standard.

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.