예제 #1
0
 /// <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);
 }