public DateTimeOffset?UseRates(RateDefinitions rateSetInput)
        {
            var rates = new RateDateRange[MinutesInAWeek];

            var rateDateRanges = rateSetInput.BuildRateDateRanges();

            foreach (var rateDateRange in rateDateRanges)
            {
                var start = DayOfWeekToTimespansWithThatDuration[rateDateRange.DayOfWeek] + rateDateRange.Start;
                var end   = DayOfWeekToTimespansWithThatDuration[rateDateRange.DayOfWeek] + rateDateRange.End;

                for (int i = (int)start.TotalMinutes; i < (int)end.TotalMinutes; i++)
                {
                    if (rates[i] != null)
                    {
                        // If we're visiting a minute we've already processed, there's overlap in the rate definitions.
                        // Return null to indicate the rates are not valid.
                        return(null);
                    }
                    rates[i] = rateDateRange;
                }
            }

            _rates = rates;
            return(DateTimeOffset.UtcNow);
        }
Пример #2
0
 public override void MergeDependencies(MarketDataDefinition mergeData)
 {
     if (mergeData is RateMktData)
     {
         if (RateDefinitions.Count(x => x.Name.Equals(mergeData.Name)) > 0)
         {
             for (var i = 0; i < RateDefinitions.Length; i++)
             {
                 if (RateDefinitions[i].Name.Equals(mergeData.Name))
                 {
                     RateDefinitions[i] = (RateMktData)mergeData;
                 }
             }
         }
         else
         {
             var list = new List <RateMktData>();
             list.AddRange(RateDefinitions);
             list.Add((RateMktData)mergeData);
             RateDefinitions = list.ToArray();
         }
     }
     else if (mergeData is CurveConvention)
     {
         CurveConvention = (CurveConvention)mergeData;
     }
 }
        public bool SetUpConfiguredDefaultRates()
        {
            var  rateFileInput    = RateDefinitions.ParseFromJsonFile(_rateConfigurationSettings.DefaultRatesInputFilePath);
            var  timeRatesChanged = UseRates(rateFileInput);
            bool success          = timeRatesChanged != null;

            return(success);
        }
Пример #4
0
 public override void RemoveDependencies(MarketDataDefinition mergeData)
 {
     if (mergeData is RateMktData)
     {
         RateMktData rateMkt = RateDefinitions.FirstOrDefault(x => x.Name.Equals(mergeData.Name));
         var         list    = new List <RateMktData>();
         list.AddRange(RateDefinitions);
         list.Remove(rateMkt);
         RateDefinitions = list.ToArray();
     }
 }
Пример #5
0
 public override MarketDataDefinition[] GetDependencies()
 {
     if (BaseCurveDefinition == null)
     {
         return(RateDefinitions.Cast <MarketDataDefinition>().ToArray()
                .Union(new[] { CurveConvention })
                .ToArray());
     }
     return(new MarketDataDefinition[]
     {
         BaseCurveDefinition
     }
            .Union(RateDefinitions.Cast <MarketDataDefinition>().ToArray())
            .Union(new[] { CurveConvention })
            .ToArray());
 }
Пример #6
0
        public DateTimeOffset?UseRates(RateDefinitions rateSetInput)
        {
            var rateDateRanges = rateSetInput
                                 .BuildRateDateRanges()
                                 .GroupBy(x => x.DayOfWeek)
                                 .ToDictionary(x => x.Key, y => y.OrderBy(x => x.Start).ToList());

            DateTimeOffset?timeRatesChanged = null;

            if (AreDateRangesValid(rateDateRanges))
            {
                _rateDateRangesByDayOfWeek = rateDateRanges;
                timeRatesChanged           = DateTimeOffset.UtcNow;
            }

            return(timeRatesChanged);
        }