/// <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))); }
/// <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)); }