/// <summary> /// Prepare for valuation anything that is not dependent upon the scenario. /// </summary> public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults resultsRequired) { base.PreCloneInitialize(factors, baseTimes, resultsRequired); // Set up date lists DateGenerationRequest dateGenerationRequest = new DateGenerationRequest { RequiresPayDates = true, RequiresAccrualDates = true, RequiresYearFractions = true }; DateGenerationParams dateGenerationParams = new DateGenerationParams { EffectiveDate = fDeal.Effective_Date, MaturityDate = fDeal.Maturity_Date, CouponPeriod = fDeal.Pay_Frequency, AccrualCalendar = fDeal.GetHolidayCalendar(), AccrualDayCount = fDeal.Accrual_Day_Count, }; DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams); AccrualDates = dateGenerationResults.AccrualDates; PayDates = dateGenerationResults.PayDates; Accruals = dateGenerationResults.AccrualYearFractions; bool cashRequired = resultsRequired.CashRequired(); fT.AddPayDate(fDeal.Upfront_Date, cashRequired); fT.AddPayDates(PayDates, cashRequired); }
/// <summary> /// Prepare for valuation anything that will be shared between scenarios. /// </summary> public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults) { base.PreCloneInitialize(factors, baseTimes, requiredResults); var deal = (BondLendingBase)fDeal; DateGenerationRequest dateGenerationRequest = new DateGenerationRequest { RequiresPayDates = true, RequiresYearFractions = true, RequiresPrincipals = true, }; DateGenerationParams dateGenerationParams = new DateGenerationParams { EffectiveDate = deal.Issue_Date, MaturityDate = deal.Bond_Maturity_Date, CouponPeriod = deal.Coupon_Interval, FirstCouponDate = deal.First_Coupon_Date, PenultimateCouponDate = deal.Penultimate_Coupon_Date, AccrualCalendar = deal.GetHolidayCalendar(), AccrualDayCount = deal.Accrual_Day_Count, Principal = deal.Notional, Amortisation = deal.Amortisation }; DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams); fPayDates = dateGenerationResults.PayDates; fAccruals = dateGenerationResults.AccrualYearFractions; fPrincipals = dateGenerationResults.Principals; fFinalPrincipal = dateGenerationResults.FinalPrincipal; }
/// <summary> /// Generate CTD dates and set CTD coupon rate and conversion factor. /// </summary> protected void GenerateCTD(double baseDate, double issueDate, double maturityDate, double couponInterval, double firstCouponDate, double penultimateCouponDate, DayCount dayCount, IHolidayCalendar calendar, double couponRate, double conversionFactor) { if (conversionFactor <= 0.0) { return; // No CTD details or details invalid } BondFutureOption deal = (BondFutureOption)fDeal; // Validation of settlement date not done for CTD details on price factor if (deal.Settlement_Date >= maturityDate) { throw new AnalyticsException("Settlement date must be before cheapest-to-deliver maturity date."); } DateGenerationResults dateGenerationResults = deal.GetDateGenerationResults(issueDate, maturityDate, couponInterval, firstCouponDate, penultimateCouponDate, dayCount, calendar); fPayDates = dateGenerationResults.PayDates; fAccruals = dateGenerationResults.AccrualYearFractions; fIssueDate = issueDate; fMaturityDate = maturityDate; fCouponInterval = couponInterval; fCouponRate = couponRate; fConversionFactor = conversionFactor; fAccrual = PricingFunctions.AccruedInterest(deal.Settlement_Date, fIssueDate, fPayDates, fAccruals, fCouponRate, 1.0, null); double strike = PriceTransform(deal.Strike); double tSettle = CalcUtils.DaysToYears(deal.Settlement_Date - baseDate); double tMaturity = CalcUtils.DaysToYears(fMaturityDate - baseDate); fStrikeYield = PricingFunctions.BondYieldFromPrice(tSettle, tMaturity, couponRate, couponInterval, strike); }
async Task ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { DateList.Clear(); var items = await DataStore.GetItemsAsync("", true); DateList.ReplaceRange(items); } catch (Exception ex) { Debug.WriteLine(ex); MessagingCenter.Send(new MessagingCenterAlert { Title = "Error", Message = "Unable to load items.", Cancel = "OK" }, "message"); } finally { IsBusy = false; } }
/// <summary> /// Prepare for valuation anything that is not dependent upon the scenario. /// </summary> public override void PreCloneInitialize(PriceFactorList Factors, BaseTimeGrid BaseTimes, RequiredResults ResultsRequired) { base.PreCloneInitialize(Factors, BaseTimes, ResultsRequired); DealCreditLinkedNoteBase deal = (DealCreditLinkedNoteBase)fDeal; DateGenerationRequest dateGenerationRequest = new DateGenerationRequest { RequiresPayDates = true, RequiresResetDates = true, RequiresYearFractions = true, }; DateGenerationParams dateGenerationParams = new DateGenerationParams { EffectiveDate = deal.Effective_Date, MaturityDate = deal.Maturity_Date, CouponPeriod = deal.Coupon_Interval, AccrualCalendar = deal.GetHolidayCalendar(), AccrualDayCount = deal.Accrual_Day_Count, }; DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams); PayDates = dateGenerationResults.PayDates; Accruals = dateGenerationResults.AccrualYearFractions; ResetDates = dateGenerationResults.ResetDates; // Add to valuation time grid bool cashRequired = ResultsRequired.CashRequired(); fT.AddPayDate(deal.Effective_Date, cashRequired); fT.AddPayDates(PayDates, cashRequired); }
private async Task GetBoldedDates(DateTime start, DateTime end) { DateList boldedDates = calendar.BoldedDates; if (!UseAppointmentManager) { // generate test appointment List <object> list = new List <object>(); Appointment app = new Appointment(); app.Start = start.AddDays(12); app.End = app.Start.AddHours(1); app.Subject = Strings.EmulatorAppointmentSubject; list.Add(app); // bind calendar to data calendar.DataSource = list; // don't set StartTimePath and EndTimePath as they are the same as default values } else { // get appointments from the device calendar var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AllCalendarsReadOnly); var appointments = await store.FindAppointmentsAsync(new DateTimeOffset(start), end - start); // bind calendar to the search results calendar.DataSource = appointments; // don't set StartTimePath and EndTimePath as they are the same as default values } }
private void addNewSlide() { var index = DateListCarousel.Position; if (index == DateList.Count() - 1) { DateList.Add(new DateItem { Date = DateList[index].Date.AddDays(1), Text = WicketHelper.ConvertDate(DateList[index].Date.AddDays(1)), MatchList = WicketHelper.GetMatchList(DateList[index].Date.AddDays(1)), Loading = false, }); } else if (DateListCarousel.Position == 0) { DateList.Insert(0, new DateItem { Date = DateList[index].Date.AddDays(-1), Text = WicketHelper.ConvertDate(DateList[index].Date.AddDays(-1)), MatchList = WicketHelper.GetMatchList(DateList[index].Date.AddDays(-1)), Loading = false, }); } }
public void WriteIndexing(int index, object _value) { switch (index) { case 0: ProductId = int.Parse(_value.ToString()); break; case 1: ASIN = _value.ToString(); break; case 2: DateList.Add(new DateTime()); DateList[DateList.Count - 1] = (DateTime)_value; break; case 3: Status.Add(""); Status[Status.Count - 1] = _value.ToString(); break; case 4: Notes.Add(""); Notes[Notes.Count - 1] = _value.ToString(); break; } }
/// <summary> /// Return an amortisation schedule with amortization payments allocated to the nearest payment date in the cashflow list. /// </summary> private static Amortisation AllocateAmortisationToPaymentDates <TCashflow>(Amortisation sourceAmortisation, List <TCashflow> cashflowList) where TCashflow : CFBase { if (sourceAmortisation == null || sourceAmortisation.Count == 0) { return(sourceAmortisation); } var payDates = new DateList(cashflowList.Select(cashflow => (double)cashflow.Payment_Date)); // Allocate amortisation amounts to nearest payment dates var amounts = new double[payDates.Count]; foreach (var payment in sourceAmortisation) { int i = payDates.IndexOfClosestDate(payment.Date); amounts[i] += payment.Amount; } var amortisation = new Amortisation(); for (int i = 0; i < amounts.Length; ++i) { if (amounts[i] != 0.0) { amortisation.Add(new AmountAtDate() { Amount = amounts[i], Date = payDates[i] }); } } return(amortisation); }
/// <summary> /// 保存按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { if (DateList.Text == "") { MessageBox.Show("请设置日期。"); DateList.Focus(); return; } for (int index = 0; index < tabControl1.TabPages.Count; index++) { if (tabControl1.TabPages[index].Tag != null) { MemoryStream stream = new MemoryStream(); PictureBox pic = tabControl1.TabPages[index].Controls[1] as PictureBox; TextBox box = tabControl1.TabPages[index].Controls[0] as TextBox; pic.Image.Save(stream, ImageFormat.Jpeg); stream.Flush(); MapDBClass.SavePicture(_MapId, _LayerId, _ObjectId, DateList.Text, index + 1, stream.GetBuffer(), box.Text); stream.Close(); stream.Dispose(); stream = null; tabControl1.TabPages[index].Tag = null; } else { TextBox box = tabControl1.TabPages[index].Controls[0] as TextBox; MapDBClass.UpdatePictureComment(_MapId, _LayerId, _ObjectId, DateList.Text, index + 1, box.Text); } } }
public List <ClassStatus> getDateListClassesStatus(DateList dl) { List <ClassStatus> ans = new List <ClassStatus>(); Dictionary <int, String> classNames = getDateListClasses(dl.ID); bool[] status = dl.getClassesStatus(Math.Max(classNames.Count, 1)); for (int i = 0; i < classNames.Count; i++) { ClassStatus cs = new ClassStatus(); cs.ClassNum = classNames.Keys.ElementAt(i); cs.Name = classNames[cs.ClassNum]; cs.Status = (Reversed) ? !status[i] : status[i]; cs.ForceStatus = getClassForceStatus(cs.ClassNum); //חזרה למצב הקודם if (cs.ForceStatus > 20 && !cs.Status) { string CurrentStatus = changedClassForceStatusFromPrev(cs.ClassNum); cs.ForceStatus = Int32.Parse(CurrentStatus); bool[] statusTemp = dl.getClassesStatus(Math.Max(classNames.Count, 1)); cs.Status = (Reversed) ? !statusTemp[i] : statusTemp[i]; } ans.Add(cs); } return(ans); }
/// <inheritdoc /> public override void HeadNodeInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults) { base.HeadNodeInitialize(factors, baseTimes, requiredResults); BaseCliquetOption deal = (BaseCliquetOption)fDeal; DateList accrualDates = CashflowGeneration.GenerateStripOfDates(deal.Effective_Date, deal.Maturity_Date, deal.Frequency, deal.GetHolidayCalendar()); fTimes = new double[accrualDates.Count]; for (int i = 0; i < accrualDates.Count; ++i) { fTimes[i] = CalcUtils.DaysToYears(accrualDates[i] - factors.BaseDate); } // Get the asset price from the deal helper var dealHelper = (BaseAssetFxDealHelper)deal.GetDealHelper(); IAssetPrice assetPrice = dealHelper.GetAssetPrice(factors); fKnownPrices = deal.GetKnownPrices(accrualDates, factors, assetPrice); // Add expiry dates to valuation time grid. if (accrualDates.Count > 1) { DateList expiryDates = new DateList(accrualDates); expiryDates.RemoveAt(0); fT.AddPayDates(expiryDates, requiredResults.CashRequired()); } }
private void AyCalendarDateList_Loaded(object sender, RoutedEventArgs e) { Loaded -= AyCalendarDateList_Loaded; DateList.SetBinding(ListBox.ItemsSourceProperty, new Binding { Source = items }); }
/// <inheritdoc /> public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults) { base.PreCloneInitialize(factors, baseTimes, requiredResults); fItems.PreCloneInitialize(factors, baseTimes, requiredResults); int fixedCount = fFixedCashflowList.Count(); int floatCount = fFloatCashflowList.Count(); fDates = new DateList(); // Get a list of all the relevant dates for the deal. for (int i = 0; i < fixedCount; i++) { var fixedDate = fFixedCashflowList[i].Payment_Date; fDates.Add(fixedDate); } for (int i = 0; i < floatCount; i++) { var payDate = fFloatCashflowList[i].Payment_Date; var startDate = fFloatCashflowList[i].Resets[0].Rate_Start_Date; if (!fDates.Contains(payDate)) { fDates.Add(payDate); } if (!fDates.Contains(startDate)) { fDates.Add(startDate); } } int count = fDates.Count; fFixedCouponWeight = new double[count]; fFixedCouponRate = new double[count]; // Calucate the static parts of the coefficients foreach (var cf in fFixedCashflowList) { int idx = fDates.IndexOf(cf.Payment_Date); fFixedCouponWeight[idx] += cf.Accrual_Year_Fraction * cf.Notional; fFixedCouponRate[idx] = cf.Rate; } fFloatingCouponWeight = new double[count]; foreach (var cf in fFloatCashflowList) { int idx = fDates.IndexOf(cf.Payment_Date); double rateYearFraction = cf.Resets[0].Rate_Year_Fraction; double yearFractionRatio = (rateYearFraction < CalcUtils.TINY) ? 1.0 : cf.Accrual_Year_Fraction / rateYearFraction; fFloatingCouponWeight[idx] += cf.Notional * yearFractionRatio; } }
public MainViewModel(string phone) { or.HistoryInitiator(phone); foreach (Item date in or.Dates) { hvm = new HistoryViewModel(date); DateList.Add(hvm); } }
private void PingOne(int index) { if (mainTable[index].Endpoint == string.Empty) { var ip = NetTest.GetIP(mainTable[index].HostsName); if (ip != null) { mainTable[index].Endpoint = ip.AddressFamily == AddressFamily.InterNetwork ? $@"{ip}:{rawTable[index].Port}" : $@"[{ip}]:{rawTable[index].Port}"; } else { return; } } var ipe = IPFormatter.ToIPEndPoint(mainTable[index].Endpoint); double?latency = null; var res = Timeout; var time = DateTime.Now; try { latency = NetTest.TCPing(ipe.Address, ipe.Port, Timeout); } catch { // ignored } if (latency != null) { res = Convert.ToInt32(Math.Round(latency.Value)); } else { //notifyIcon1.ShowBalloonTip(1000, time.ToString(CultureInfo.CurrentCulture), $"{mainTable[index].HostsName}\n{ipe}", ToolTipIcon.Error); } var log = new DateTable { Date = time, Latency = res }; mainTable[index].AddNewLog(log); if (MainList.SelectedRows.Count == 1) { var i = MainList.SelectedRows[0].Cells[0].Value as int?; if (i == index && DateList.Visible) { DateList.Invoke(() => { LoadLogs(log); }); } } }
public List <ClassStatus> getDateListClassesStatus(int id) { DateList dl = getAllDatesLists().Find(p => p.ID == id); if (dl == null) { return(null); } return(getDateListClassesStatus(dl)); }
/// <summary> /// Returns bond option's dirty strike. /// </summary> public double DirtyStrike(double strikePrice, DateList payDates, double[] accruals) { var strike = Percentage.PercentagePoint * strikePrice; if (Strike_Is_Clean == YesNo.Yes) { strike += PricingFunctions.AccruedInterest(Expiry_Date, Issue_Date, payDates, accruals, Percentage.PercentagePoint * Coupon_Rate, 1, null); } return(strike); }
private static IEnumerable <ExchangeRate> LoadExchangeRates(DateTime startingDate, DateTime endingDate, string currency) { IExchangeListBuilder listBuilder = new ExchangeListBuilder( new DailyListCachingBuilder( new DailyListWebLoader(), new DailyListRepository())); return (listBuilder .BuildFor(DateList.BetweenInclusive(startingDate, endingDate)) .Where(rate => String.Compare(rate.Currency, currency, StringComparison.OrdinalIgnoreCase) == 0)); }
public override void OnRefresh() { base.OnRefresh(); AllowCheckedEvent = false; // get a list of all possible dates from datasource DataProcessor Processor = new DataProcessor(); List <string> DefaultFileNames = new List <string>(); UIUtility.OutputFileUtility.GetOutputFiles(Controller, Controller.Selection, DefaultFileNames); Processor.DefaultOutputFileNames = DefaultFileNames; XmlDocument Doc = new XmlDocument(); Doc.LoadXml(Controller.ApsimData.Find(NodePath).FullXML()); DataTable DepthData = Processor.GoFindChildDataTable(Doc.DocumentElement); // get a list of currently selected dates. List <string> SelectedDates = XmlHelper.Values(Data, "Date"); // Convert all dd/mm/yyyy dates in XML to date strings formatted according to current // locale. for (int i = 0; i < SelectedDates.Count; i++) { try { DateTime d = DateTime.ParseExact(SelectedDates[i], "d/M/yyyy", null); SelectedDates[i] = d.ToShortDateString(); } catch (Exception) { SelectedDates[i] = ""; } } DateList.Items.Clear(); if (DepthData != null) { List <string> DateStrings = DataTableUtility.GetDistinctValues(DepthData, "Date"); foreach (string DateString in DateStrings) { string St = DateString.Substring(0, DateString.IndexOf(' ')); int Indx = DateList.Items.Add(St); bool IsSelected = SelectedDates.IndexOf(St) != -1; DateList.SetItemChecked(Indx, IsSelected); } } AllowCheckedEvent = true; }
/// <summary> /// Fills missing known prices with values from the rate fixings. /// </summary> protected void FillMissingKnownPricesFromRateFixings(double[] knownPrices, DateList resetDates, PriceFactorList factors, IAssetPrice assetPrice, string assetCurrency) { List <int> missingIndices; List <DateTime> missingDates; if (!GetMissingIndicesAndDates(knownPrices, resetDates, factors.BaseDate, out missingIndices, out missingDates)) { return; } var rateFixings = factors.RateFixings.GetAssetPriceFixings(factors, assetPrice, assetCurrency, missingDates, factors.BaseDate, this, string.Empty).ToList(); ApplyFixings(missingIndices, rateFixings, knownPrices); }
/// <summary> /// Handles the toggle switch for filter of interesting checks /// </summary> private async void ToggleList(object sender, RoutedEventArgs e) { isToggle = true; ToggleSwitch thisSwitch = sender as ToggleSwitch; if (thisSwitch.IsOn) { try { DateList.ItemsSource = problemDateStrings; CheckList.ItemsSource = problemChecksList; } catch { } try { CheckList.SelectedIndex = 0; } catch { } try { DateList.SelectedIndex = 0; } catch { } await Task.Delay(1000); } else { try { DateList.ItemsSource = dateStrings; CheckList.ItemsSource = ChecksList; } catch { } try { CheckList.SelectedIndex = 0; } catch { } try { DateList.SelectedIndex = 0; } catch { } await Task.Delay(1000); } for (int i = 0; i < DateList.Items.Count; i++) { try { var item = DateList.ContainerFromIndex(i) as ListViewItem; String myString = DateList.Items[i].ToString().Split(':')[0]; if (defectDateStrings.Contains(myString)) { item.Foreground = new SolidColorBrush(Windows.UI.Colors.Red); item.Background = new SolidColorBrush(Windows.UI.Colors.WhiteSmoke); } else { } } catch { } } isToggle = false; }
private List <DateList> getDateListsFromTable(DataTable dt) { List <DateList> ans = new List <DateList>(); foreach (DataRow dr in dt.Rows) { DateList dl = new DateList(); dl.Name = dr["PLC_NAME"].ToString(); dl.DiscretePosition = (int)dr["DiscretePosition"]; dl.StartPosition = (int)dr["StartPosition"]; dl.NotificationPosition = (int)dr["NotificationPosition"]; dl.ID = (int)dr["ID"]; ans.Add(dl); } return(ans); }
private void SplitDataIntoDateAndTime(List <string> receiveDataList) { try { for (var i = 1; i < receiveDataList.Count - 1; i++) { var dateTime = receiveDataList[i].Split(','); DateList.Add(dateTime[0]); TimeList.Add(dateTime[1]); } } catch (Exception e) { Console.WriteLine(e + "Date Cannot be split into Date and Time"); throw; } }
/// <summary> /// Prepare for valuation anything that will be shared between scenarios. /// </summary> public override void PreCloneInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults) { base.PreCloneInitialize(factors, baseTimes, requiredResults); var deal = (BondOptionDeal)Deal; var tExpiry = deal.GetTimeToExpiry(factors.BaseDate); var tMaturity = CalcUtils.DaysToYears(deal.Bond_Maturity_Date - factors.BaseDate); var dateGenerationResults = deal.GetDateGenerationResults(); fPayDates = dateGenerationResults.PayDates; fAccruals = dateGenerationResults.AccrualYearFractions; fPrincipals = dateGenerationResults.Principals; fFinalPrincipal = dateGenerationResults.FinalPrincipal; fStrike = deal.Strike_Price; fStrikeYield = deal.GetStrikeYield(ref fStrike, tExpiry, tMaturity, fPayDates, fAccruals); fT.AddPayDate(deal.Expiry_Date, requiredResults.CashRequired()); }
/// <summary> /// Construct the array of known prices. /// </summary> public override double[] GetKnownPrices(DateList resetDates, PriceFactorList factors, IAssetPrice assetPrice) { bool isCompo = !string.IsNullOrEmpty(fPayoffCurrency) && fPayoffCurrency != Currency && Payoff_Type == PayoffType.Compo; string assetCurrency = isCompo ? fPayoffCurrency : Currency; double[] knownPrices; double[] knownFxRates; AssetPriceFxRateList.GetRates(resetDates, factors.BaseDate, Known_Prices, out knownPrices, out knownFxRates); if (isCompo) { for (int i = 0; i < knownPrices.Length; ++i) { knownPrices[i] *= knownFxRates[i]; } } FillMissingKnownPricesFromRateFixings(knownPrices, resetDates, factors, assetPrice, assetCurrency); return(knownPrices); }
public List <ClassStatus> getForceStatus(int id) { DateList dl = getAllDatesLists().Find(p => p.ID == id); if (dl == null) { return(null); } List <ClassStatus> ans = new List <ClassStatus>(); Dictionary <int, String> classNames = getDateListClasses(dl.ID); for (int i = 0; i < classNames.Count; i++) { ClassStatus cs = new ClassStatus(); cs.ClassNum = classNames.Keys.ElementAt(i); cs.Name = classNames[cs.ClassNum]; cs.ForceStatus = getClassForceStatus(cs.ClassNum); ans.Add(cs); } return(ans); }
private void addNextSlide() { int index; if (DateListCarousel.Position == DateList.Count() - 1) { index = DateList.Count() - 1; DateList.Add(new DateItem { Date = DateList[index].Date.AddDays(1), Text = WicketHelper.ConvertDate(DateList[index].Date.AddDays(1)), MatchList = WicketHelper.GetMatchList(DateList[index].Date.AddDays(1)), }); DateListCarousel.Position = index + 1; } else { index = DateListCarousel.Position + 1; DateListCarousel.Position = DateListCarousel.Position + 1; } DateLabel.Text = WicketHelper.ConvertDate(DateList[index].Date); }
/// <summary> /// Generate CTD dates and set CTD coupon rate and conversion factor. /// </summary> protected void GenerateCTD(double issueDate, double maturityDate, double couponInterval, double firstCouponDate, double penultimateCouponDate, DayCount dayCount, IHolidayCalendar calendar, double couponRate, double conversionFactor) { if (conversionFactor <= 0.0) { return; // No CTD details or details invalid } BondFuture deal = (BondFuture)fDeal; if (deal.Settlement_Date >= maturityDate) { throw new AnalyticsException("Settlement date must be before cheapest-to-deliver maturity date."); } DateGenerationRequest dateGenerationRequest = new DateGenerationRequest { RequiresPayDates = true, RequiresYearFractions = true, }; DateGenerationParams dateGenerationParams = new DateGenerationParams { EffectiveDate = issueDate, MaturityDate = maturityDate, CouponPeriod = couponInterval, FirstCouponDate = firstCouponDate, PenultimateCouponDate = penultimateCouponDate, AccrualCalendar = calendar, AccrualDayCount = dayCount }; DateGenerationResults dateGenerationResults = CashflowGeneration.GenerateCashflowDateAndValueLists(dateGenerationRequest, dateGenerationParams); fPayDates = dateGenerationResults.PayDates; fAccruals = dateGenerationResults.AccrualYearFractions; fIssueDate = issueDate; fMaturityDate = maturityDate; fCouponRate = couponRate; fConversionFactor = conversionFactor; }
private List <DateList> SplitDate(DateTime startdate, DateTime enddate, int num) { List <DateList> list = new List <DateList>(); if (enddate.CompareTo(startdate) > 0) { TimeSpan s = enddate - startdate; int n = s.Days; if (num > n) { num = n; } int m = n / num; for (int i = 1; i <= num; i++) { DateList item = new DateList(); if (i == 1) { item.StartDate = startdate; item.EndDate = startdate.AddDays(m); } else if (i == num) { item.StartDate = list[i - 2].EndDate; item.EndDate = enddate; } else { item.StartDate = list[i - 2].EndDate; item.EndDate = list[i - 2].EndDate.AddDays(m); } list.Add(item); } } else { list = null; } return(list); }