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); }
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); }
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(); } }
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()); }
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); }