public void AddCashFlow(double rate, InterestRateTenorType frequencyType, int frequency, InterestRateTenorType maturityType, int maturity, DayCountConvention dayCount) { // Console.WriteLine("Add Cashflow:" + rate + " " + frequencyType + " " + frequency + " " + maturityType + " " + maturity + " " + dayCount); DateTime expiryDate = new DateTime(); switch (maturityType) { case InterestRateTenorType.Daily: expiryDate = _startDate.AddActualDays(maturity, TimeSeries.DateSearchType.Next).DateTime; break; case InterestRateTenorType.Weekly: expiryDate = _startDate.AddActualDays(maturity * 7, TimeSeries.DateSearchType.Next).DateTime; break; case InterestRateTenorType.Monthly: expiryDate = _startDate.AddMonths(maturity, TimeSeries.DateSearchType.Next).DateTime; break; case InterestRateTenorType.Yearly: expiryDate = _startDate.AddYears(maturity, TimeSeries.DateSearchType.Next).DateTime; break; default: break; } CashFlowRate cf = new CashFlowRate(frequencyType, frequency, maturityType, maturity, dayCount, rate); if (!_cashFlows.ContainsKey(expiryDate)) { _cashFlows.Add(expiryDate, cf); } }
public void GenerateCashFlows(DateTime creationDate) { BusinessDay date = Calendar.GetClosestBusinessDay(StartDate, TimeSeries.DateSearchType.Previous); BusinessDay end = Calendar.GetClosestBusinessDay(EndDate, TimeSeries.DateSearchType.Next); BusinessDay expiryDate = date; for (int i = 1; expiryDate.DateTime <= end.DateTime; i++) { switch (Frequency) { case InterestRateTenorType.Daily: expiryDate = date.AddActualDays(i, TimeSeries.DateSearchType.Next); break; case InterestRateTenorType.Weekly: expiryDate = date.AddActualDays(7 * i, TimeSeries.DateSearchType.Next); break; case InterestRateTenorType.Monthly: expiryDate = date.AddMonths(i, TimeSeries.DateSearchType.Next); break; case InterestRateTenorType.Yearly: expiryDate = date.AddYears(i, TimeSeries.DateSearchType.Next); break; default: break; } CashFlow cf = CashFlow.CreateCashFlow(Name + "-" + expiryDate, Currency, Calendar.GetBusinessDay(creationDate), Amount, expiryDate, this, SimulationObject); this.AddCashFlow(cf, creationDate); //date = expiryDate; } }