Exemplo n.º 1
0
        /// <summary>
        /// Returns the known reset rate if necessary, either via user-specified known rate or rate fixings file. Returns null if either reset rate is not necessary or not found.
        /// </summary>
        private static double?GetKnownResetRate(TDate baseDate, TDate resetDate, TDate paymentDate, YesNo useKnownRate, double knownRate, string rateFixing, RateFixingsProvider rateFixingsProvider, Deal deal)
        {
            double?knownResetRate = null;

            if (paymentDate >= baseDate && resetDate <= baseDate)
            {
                if (useKnownRate == YesNo.Yes)
                {
                    knownResetRate = knownRate;
                }
                else if (!string.IsNullOrWhiteSpace(rateFixing) && rateFixingsProvider != null)
                {
                    // Try get realized reset rate from Rate fixing file.
                    DateTime[] missingDates = { DateTime.FromOADate(resetDate) };
                    var        fixings      = CashflowsFixingsHelper.GetRateFixings(rateFixing, missingDates, rateFixingsProvider, baseDate, deal);

                    if (fixings != null && fixings.Length != 0 && !double.IsNaN(fixings[0]))
                    {
                        knownResetRate = fixings[0];
                    }
                }
            }

            return(knownResetRate);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Clones the cashflow list and applies missing fixings from the fixings file.  If
        /// fixings are applied, the clone is stored in place of the original deal.
        /// </summary>
        public override void HeadNodeInitialize(PriceFactorList factors, BaseTimeGrid baseTimes, RequiredResults requiredResults)
        {
            base.HeadNodeInitialize(factors, baseTimes, requiredResults);

            var baseDate = factors.BaseDate;
            var deal     = (CFFloatingInterestListDeal)fDeal;

            fCashflows = deal.Cashflows;

            // Apply any missing rate fixings, performing minimal cloning
            if (fCashflows.HasMissingRates(baseDate))
            {
                fCashflows = CashflowsFixingsHelper.ApplyRateFixings(factors, deal, fCashflows);
            }
        }