Indexes and fixings
An index knows its conventions (its tenor, fixing days, calendar, day counter and currency) and holds the curve it
forecasts from. The Ibor indexes (Euribor6M, USDLibor, Tibor, …) and the overnight ones (Sofr, Estr,
Sonia, Tonar, Corra, …) are QuantLib's presets.
Past fixings and forecasts
A past fixing is stored in the evaluation context's Fixings; a fixing on a later date is forecast from the index's
curve. Today's fixing is the stored one if there is one, and otherwise forecast when asked to:
var euribor = new Euribor6M(curve);
Date yesterday = euribor.FixingCalendar.Advance(Curves.Today, -1, TimeUnit.Days);
EvaluationContext context = Curves.Context with
{
Fixings = Curves.Context.Fixings.AddFixing(euribor, yesterday, 0.0212),
};
Date[] fixingDates =
[
yesterday,
Curves.Today,
euribor.FixingCalendar.Advance(Curves.Today, new Period(6, TimeUnit.Months)),
];
double fixing = euribor.Fixing(d, context, forecastTodaysFixing: true);
Date valueDate = euribor.ValueDate(d);
Date maturity = euribor.MaturityDate(valueDate);
| Fixing date | Value date | Maturity | Fixing | Source |
|---|---|---|---|---|
| 2026-10-14 | 2026-10-16 | 2027-04-16 | 2.1200% | stored |
| 2026-10-15 | 2026-10-19 | 2027-04-19 | 2.1000% | forecast |
| 2027-04-15 | 2027-04-19 | 2027-10-19 | 2.2388% | forecast |
AddFixing returns a new store, so a context's fixings never change under it. A fixing the store lacks on a past date
is refused, with the date and the index's name, as QuantLib refuses it.
The same index on another curve
An index built without a curve can still be read for its past fixings and its dates. index.Clone(curve) gives the
same index forecasting from another curve, as QuantLib's clone does.
Conventions
The presets take QuantLib's values. With the NanoQL.Extensions package an index's conventions can be overridden, and
a family member added (Euribor at two months, say), as data (conventions.md).