Example #1
0
        public IPriceCurve RebaseDate(DateTime newAnchorDate)
        {
            var newSpotDate = newAnchorDate.SpotDate(SpotLag, SpotCalendar, SpotCalendar);
            var newSpot     = GetPriceForDate(newSpotDate);
            var fwds        = PillarDates.Select(p => GetPriceForDate(p)).ToArray();
            var times       = PillarDates.Select(p => newSpotDate.CalculateYearFraction(p, Basis)).ToArray();
            var newCtgos    = fwds.Select((f, ix) => times[ix] == 0 ? 0.0 : (f / newSpot - 1.0) / times[ix]).ToArray();

            var o = new ContangoPriceCurve(newAnchorDate, newSpot, newSpotDate, PillarDates, newCtgos, _currencyProvider, Basis, PillarLabels)
            {
                AssetId      = AssetId,
                Currency     = Currency,
                Name         = Name,
                SpotCalendar = SpotCalendar,
                SpotLag      = SpotLag
            };

            return(o);
        }
Example #2
0
        private void Initialize()
        {
            var pillarsAsDoubles = PillarDates.Select(x => x.ToOADate()).ToArray();

            _interp = InterpolatorFactory.GetInterpolator(pillarsAsDoubles, Contangos, Interpolator1DType.Linear);
        }
Example #3
0
 public IrCurve Clone() => new IrCurve((DateTime[])PillarDates.Clone(), (double[])_rates.Clone(), BuildDate, Name, _interpKind, Currency, CollateralSpec, RateStorageType)
 {
     SolveStage = SolveStage
 };