Table of Contents

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).