Skip to content
All library documents

Interpreting iborStartDate in QuantLib Futures Rate Helpers

Article Quant Q&A · Author: Mitridate

Summary

This document explains what the iborStartDate argument represents in QuantLib’s FuturesRateHelper. It is the start date of the interest-rate fixing’s underlying accrual period, rather than the futures contract’s expiration date. The fixing itself is for a forward period set by the index’s conventions, such as a business-day adjustment and a three-month tenor.

The response points to the helper’s date calculations: it uses iborStartDate as the earliest date, then advances by the specified tenor to determine maturity and the curve pillar date. A short example illustrates a three-month period beginning on the supplied date. This clarifies how to map an IBOR futures quote into the term structure, but the example does not cover other index conventions, calendars, or futures-specific adjustments.

Key ideas

  • iborStartDate marks the start of the underlying IBOR accrual period.
  • The fixing date and accrual start date can differ because index conventions may apply a business-day offset.
  • The helper calculates maturity by advancing from iborStartDate by the configured tenor.
  • The resulting maturity date is also used as the term-structure pillar date in the described implementation.

Tags

Full text
# Quantlib - Clarification on iborStartDate in FuturesRateHelper


# Quantlib - Clarification on iborStartDate in FuturesRateHelper












I'm currently working with QuantLib's FuturesRateHelper and I'm a bit confused about the iborStartDate parameter. According to the documentation and some code snippets, iborStartDate is used like this:

From the example, it's not entirely clear what iborStartDate refers to specifically. Does it correspond to the expiration date of the futures contract, or is it related to something else?

I have looked on Refinitiv, but couldn't find additional information that clarifies this point. Any insights or explanations would be greatly appreciated!

## Answer by Luigi Ballabio (score 2)

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

An IBOR fixing (for instance, a fixing for the 3-months Euribor) is an interest rate corresponding to an underlying period determined by various index conventions. For instance, the Euribor 3M fixing for today, Friday, November 8th 2024, is the interest rate for a period starting two business days from today (Tuesday 12th) and ending three months later (February 12th, 2025).

The futures is based on such a fixing at a future date. The `iborStartDate` is the start of the underlying period.

## Answer by Xiarpedia (score 0)

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

Upon examining the C++ code, we observe the following implementation for the FuturesRateHelper constructor:

```
    FuturesRateHelper::FuturesRateHelper(const Handle<Quote>& price,
                                         const Date& iborStartDate,
                                         Natural lengthInMonths,
                                         const Calendar& calendar,
                                         BusinessDayConvention convention,
                                         bool endOfMonth,
                                         const DayCounter& dayCounter,
                                         Handle<Quote> convAdj,
                                         Futures::Type type)
    : RateHelper(price), convAdj_(std::move(convAdj)) {
        CheckDate(iborStartDate, type);
 
        earliestDate_ = iborStartDate;
        maturityDate_ =
            calendar.advance(iborStartDate, lengthInMonths * Months, convention, endOfMonth);
        yearFraction_ = DetermineYearFraction(earliestDate_, maturityDate_, dayCounter);
        // Sets the pillar date for the term structure
        pillarDate_ = latestDate_ = latestRelevantDate_ = maturityDate_;
 
        registerWith(convAdj_);
    }
```

In this code, the variable iborStartDate determines the start date of the contract, consequently impacting its maturity date as seen in

```
calendar.advance(iborStartDate, lengthInMonths * Months, convention, endOfMonth);
```

Which will calculate the maturity starting from iborStartDate. Meaning it is a forward starting contract. This can be observed in the following example:

```
import QuantLib as ql
import datetime

ref_date = ql.Date.from_date(datetime.date(2024, 1, 1))
ql.Settings.instance().evaluationDate = ref_date
ibor_start_date = ql.Date().from_date(datetime.date(2024, 3, 20))
future_helper = ql.FuturesRateHelper(100, ibor_start_date, ql.Euribor3M())
print(future_helper.pillarDate())
```

Running this Python code will display the maturity date of the futures contract, which in this case will be 2024-06-20, three months after the IBOR start date of 2024-03-20.

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.