Пример #1
0
        public double Price(DateTime evaluationDate, MarketCurve marketCurve)
        {
            // Cashflow table
            SortedDictionary <double, double> cashflows = GetCashflows(evaluationDate);

            if (cashflows.Count == 1)
            {
                return(0);
            }

            // Build zero coupon curve
            ZeroCouponCurve zeroCouponCurve = marketCurve.BuildZeroCouponCurve();

            // Discount
            double price = 0;

            foreach (KeyValuePair <double, double> pair in cashflows)
            {
                double yearFrac = pair.Key;
                double cashflow = pair.Value;
                price += cashflow * zeroCouponCurve.DiscountFactor(yearFrac);
            }

            return(price);
        }
Пример #2
0
 public Bond(DateTime issueDate, DateTime maturityDate, double couponRate, int couponFrequency, bool isForward, SortedDictionary <double, double> marketCurve)
 {
     IssueDate       = issueDate;
     MaturityDate    = maturityDate;
     CouponRate      = couponRate;
     CouponFrequency = couponFrequency;
     IsForward       = isForward;
     MarketCurve     = new MarketCurve(marketCurve, couponFrequency);;
 }