Skip to content
All library documents

Generating Swap Payment Dates with Roll and Business-Day Conventions

Article Quant Q&A · Author: Olórin

Summary

The document explains how swap cash-flow schedules are built from trade and effective dates, a tenor, payment frequency, and market conventions. Its examples describe deriving an effective date by adding business days to the trade date, calculating maturity using the tenor and a roll-day rule, then generating intermediate dates at the payment interval. For a USD floating leg, the example uses three-month intervals. End-of-month handling determines whether dates preserve the effective date’s calendar day or remain at month-end.

The answers differ on whether schedules are usually generated forward or backward, especially when a stub period is present. They agree that accrual dates should be generated on an unadjusted calendar and then adjusted for holidays and weekends using the applicable business-day convention. Modified Following moves a bad date forward unless that crosses into another month, in which case it moves backward. Actual schedules depend on local conventions and the contract terms.

Key ideas

  • Swap schedules depend on trade and effective dates, tenor, payment frequency, roll rules, and market conventions.
  • End-of-month rules determine how dates align when adding or subtracting periods.
  • Stub periods can make forward versus backward schedule generation consequential.
  • Generate accrual dates before applying holiday and weekend adjustments to avoid date drift.
  • Modified Following adjusts a nonbusiness date forward unless that would cross a month boundary.

Tags

Full text
# A question about dates generation


# A question about dates generation












I am actually trying to strip Markit IR curves, following their specs here :

http://www.cdsmodel.com/cdsmodel/assets/cds-model/docs/Interest%20Rate%20Curve%20Specification%20-%20All%20Currencies%20(Updated%20November%208%202014)%20Final.pdf

I have questions about swaps, more specifically about the fixed/floating payment schedule generation, in this Markit/ISDA context (specialist are welcome !) :

- just to be sure : adding/substracting for instance $3$M to a date $dd/mm/yyyy$ means adding/substracting $3$ to $mm$ (and taking the remainder modulo $12$) and adjusting if needed, right ?

- is the generation done forward (for instance for a $3$M floating leg frequency, one adds $3$M to the settlement date to have the first floating payment date and iterate until the tenor maturity of the swap) or backward (one adds let's say $10$Y to the settlement the have the maturity and last floating payment date, and then from this date one moves backward substracting $3$M's from it) ? I guess the generation is done forward, and backward we would have broken periods issues that they don't discuss in the paper. Am I right ?

- whether it is backward or forward, do we generate dates by substracting or adding (let's say) $3$M's and then adjusting the whole series of obtained dates, or do we add/substract $3$M, then adjust (according to a given convention) then add/substract $3$M again and adjust again etc etc ?

## Answer by Helin (score 5)

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

This is really just to elaborate on other contributor's answers:

Generating the cash flow schedule is surprisingly complicated. As a general rule of thumb, the following dates are involved for a swap (though not all of them need to be specified):





- The first interest payment date: This is the date when the first interest payment occurs. For the floating leg of a USD swap, this is usually 3 months after the effective date, though it could be longer than 3 months (long stub) or shorter than 3 months (short stub).

- The penultimate interest payment date: This is the last interest payment before the maturity date. The period between this date and the maturity date can also be longer or shorter than other periods.



For most standard swaps, all you need is the trade date and the tenor/term. Using USD standard swap as an example, the cash flows can be generated as follows:

- Given the trade date, the effective date is trade day + 2 business day.

- With the effective date, the maturity date is the effective date + tenor of the swap. To do this date calculation, you also need to understand the "roll day." In this case, the roll day should be determined from the effective date: If "end-of-month roll" is off: If the effective date is MM-28-YYYY, then the roll day is 28, and the maturity date should also fall on the 28th. If the effective date is MM-31-YYYY, then the roll day is 31, and the maturity date should also fall on the 31st (if that's not possible, move it BACK to the end of the month). If "end-of-month roll" is on (default for US Treasuries): If effective date is month end, all dates in the schedule should also fall on month end. Otherwise, use the same rules above.

- The dates between effective date and maturity can be calculated relatively easily, by incrementally adding the payment period to the previous date, using the same roll day determined in the previous step. For floating leg of a USD swap, for example, start from effective date and incrementally add 3 months.

- Finally, go through all the dates again and adjust them for holidays and weekends as needed. USD swaps follow the "Modified Following" convention – if a date is a bad day (i.e., holiday/weekends), you move it to the next good day; unless the next good day is in the next month, in which case you move it backward to the previous good day.

In practice, you need to carefully read both the proper local market convention AND the actual agreement to determine the cash flow schedule.

## Answer by FinanceGuyThatCantCode (score 3)

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

The forwards/backwards will matter if there is a stub period. Typically it is done backwards though with the end-of-month convention. Also, the way to do it is to calculate all the accrual start/end dates as if there are no holidays and then do the adjustments. This way, all the payment dates will roughly be on the same day of the month except for non-business days and different months having different numbers of days etc. If you add the period then adjust and then add a period to this adjusted date, we can easily drift away from the intended accrual end dates - and by the end of a 30 year swap, you could find that there are only 70 days left in a 3M accrual period!

## Answer by msitt (score 1)

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

Swap dates are usually generated using some periodicity to maturity. All of these dates are generated first, then they are individually adjusted for holidays using a business day convention (e.g. modified following).

With this method there is no distinction between "backwards" or "forwards" because both ways produce the same dates.

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.