Example #1
0
        /// <summary>
        /// Regard Rate as zero coupon rate, given a zero date and return discount factor.<br/>
        /// zero => discount factor
        /// </summary>
        /// <param name="asof"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public double DiscountValue(KDateTime asof, KDateTime date)
        {
            CheckDate(asof, date);
            if (CompFreq == Frequency.Continuous)
            {
                return(System.Math.Exp(-Rate.GetValue(date)
                                       * TimeUtil.AccurateYearSpan(asof, date, DayCount)));
            }

            return(System.Math.Pow(
                       1 + Rate.GetValue(date) / (int)CompFreq,
                       -(int)CompFreq * TimeUtil.AccurateYearSpan(asof, date, DayCount)));
        }
Example #2
0
        /// <summary>
        /// Regard Rate as discount rate, given a present date and return zero rate.<br/>
        /// discount factor => zero
        /// </summary>
        /// <param name="asof"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public double ReturnValue(KDateTime asof, KDateTime date)
        {
            CheckDate(asof, date);
            if (CompFreq == Frequency.Continuous)
            {
                return(-System.Math.Log(Rate.GetValue(date))
                       / TimeUtil.AccurateYearSpan(asof, date, DayCount));
            }

            return((int)CompFreq * (System.Math.Pow(
                                        Rate.GetValue(date),
                                        -1 / (int)CompFreq / TimeUtil.AccurateYearSpan(asof, date, DayCount))
                                    - 1));
        }