/// <summary> /// Create a curve that linearly interpolates the provided forward rates. Rates are not used to get discount factors. /// </summary> /// <remarks> /// If you want to obtain discount factors from the provided rates rather use: <see cref="DatesAndRates" /> /// </remarks> /// <param name="anchorDate"></param> /// <param name="index"></param> /// <param name="dates"></param> /// <param name="rates"></param> /// <param name="maximumDate"></param> public ForecastCurve(Date anchorDate, FloatRateIndex index, Date[] dates, double[] rates, Date maximumDate = null) { _index = index; _floatingRateSourceDescription = new FloatingRateSourceDescription(index); _dateAndRates = new DatesAndRates(index.Currency, anchorDate, dates, rates, maximumDate); }
private DatesAndRates InitializeCurve(Date calibrationDate, InitialValueCollector initialValueCollector, ObjectiveFunction objective, DiscountingSourceDescription curveToStrip, IEnumerable <FloatRateIndex> indicesToBaseOffCurve) { if (curveToStrip == null) { return(null); } var curveNames = new List <string> { curveToStrip.Name }; var indices = indicesToBaseOffCurve.ToList(); curveNames.AddRange( indices.Select(ind => new FloatingRateSourceDescription(ind).Name)); var initial = initialValueCollector.GetValues(curveNames); var curve = new DatesAndRates(curveToStrip.Currency, calibrationDate, initial.dates, initial.values); foreach (var index in indices) { var name = new FloatingRateSourceDescription(index).Name; _floatingRateSources[name] = new ForecastCurveFromDiscount(curve, index, null); } objective.AddCurve(curve, initial.values); return(curve); }
public FRACurveInstrument(Tenor startTenor, Tenor endTenor, FloatRateIndex floatRateIndex, double simpleRate) { _startTenor = startTenor; _endTenor = endTenor; _floatRateIndex = floatRateIndex; _simpleRate = simpleRate; _floatingRateSourceDescription = new FloatingRateSourceDescription(floatRateIndex); }