Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
0
        /// <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;
            }
        }
Beispiel #5
0
        /// <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
            }
        }
Beispiel #7
0
        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,
                });
            }

        }
Beispiel #8
0
        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);
         }
     }
 }
Beispiel #11
0
    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());
            }
        }
Beispiel #13
0
        private void AyCalendarDateList_Loaded(object sender, RoutedEventArgs e)
        {
            Loaded -= AyCalendarDateList_Loaded;

            DateList.SetBinding(ListBox.ItemsSourceProperty, new Binding {
                Source = items
            });
        }
Beispiel #14
0
        /// <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;
            }
        }
Beispiel #15
0
 public MainViewModel(string phone)
 {
     or.HistoryInitiator(phone);
     foreach (Item date in or.Dates)
     {
         hvm = new HistoryViewModel(date);
         DateList.Add(hvm);
     }
 }
Beispiel #16
0
        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); });
                }
            }
        }
Beispiel #17
0
    public List <ClassStatus> getDateListClassesStatus(int id)
    {
        DateList dl = getAllDatesLists().Find(p => p.ID == id);

        if (dl == null)
        {
            return(null);
        }
        return(getDateListClassesStatus(dl));
    }
Beispiel #18
0
        /// <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));
        }
Beispiel #20
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);
        }
Beispiel #22
0
        /// <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;
        }
Beispiel #23
0
    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;
            }
        }
Beispiel #25
0
        /// <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);
        }
Beispiel #27
0
    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);
    }
Beispiel #28
0
 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);
 }
Beispiel #29
0
        /// <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;
        }
Beispiel #30
0
        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);
        }