/// <summary> /// Creates the datatime vector for the request Central Bank. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="validCentralBank">The requested central bank.</param> /// <param name="centralBankDateRuleMonths">The rules.</param> /// <param name="lastDate">The last date required.</param> /// <returns>An aray of relevant dates.</returns> public object[,] GetCentralBankDates(DateTime baseDate, string validCentralBank, int centralBankDateRuleMonths, DateTime lastDate) { var result = CentralBanksHelper.GetCBDates(baseDate, validCentralBank, centralBankDateRuleMonths, lastDate); var resVals = RangeHelper.ConvertArrayToRange(result); return(resVals); }
private static TermCurve ConvertTermCurve(TermCurve termCurve, DateTime baseDate, int centralBankDateRuleMonths, IDayCounter dayCounter) { var interpolationMethod = new InterpolationMethod { Value = "PiecewiseConstantRateInterpolation" }; termCurve.interpolationMethod = interpolationMethod; var lastDate = (DateTime)termCurve.point[termCurve.point.Length - 1].term.Items[0]; return(InterpolateGapStepTermPoints(termCurve, CentralBanksHelper.GetCentralBankDays(baseDate, _centralBank, centralBankDateRuleMonths, lastDate), baseDate, dayCounter));//Add the extra points.. }
//TODO add EOM, EOQ and EOY perturbation: this transfers the step to the specific day. //Also needs to add EOM swaps to the asset config file. /// <summary> /// The main ctor. /// </summary> /// <param name="termCurve"></param> /// <param name="baseDate"></param> /// <param name="centralBankDateRuleMonths"></param> /// <param name="centralBank"></param> /// <param name="dayCounter"></param> public GapStepInterpolator(TermCurve termCurve, DateTime baseDate, int centralBankDateRuleMonths, CentralBanks centralBank, IDayCounter dayCounter) : base(ConvertTermCurve(termCurve, baseDate, centralBankDateRuleMonths, dayCounter), baseDate, dayCounter) { CentralBankDateRuleMonths = centralBankDateRuleMonths; _centralBank = centralBank;//var names = Enum.GetNames(typeof(AssetFactory.Types)); //TODO remove this once working. var lastDate = (DateTime)termCurve.point[termCurve.point.Length - 1].term.Items[0]; CentralBankDays = CentralBanksHelper.GetCentralBankDays(baseDate, centralBank, centralBankDateRuleMonths, lastDate); TermCurve = InterpolateGapStepTermPoints(termCurve, CentralBankDays, baseDate, dayCounter); }