예제 #1
0
        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);
            }
        }
예제 #2
0
        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;
            }
        }