Exemple #1
0
        public LiborForwardModelProcess(int size, IborIndex index, IDiscretization disc)
            : base(disc)
        {
            size_              = size;
            index_             = index;
            initialValues_     = new InitializedList <double>(size_);
            fixingTimes_       = new InitializedList <double>(size);
            fixingDates_       = new InitializedList <Date>(size_);
            accrualStartTimes_ = new InitializedList <double>(size);
            accrualEndTimes_   = new InitializedList <double>(size);
            accrualPeriod_     = new InitializedList <double>(size_);
            m1 = new Vector(size_);
            m2 = new Vector(size_);
            DayCounter       dayCounter = index.dayCounter();
            IList <CashFlow> flows      = cashFlows(1);

            if (!(size_ == flows.Count))
            {
                throw new ArgumentException("wrong number of cashflows");
            }

            Date       settlement = index_.forwardingTermStructure().link.referenceDate();
            Date       startDate;
            IborCoupon iborcoupon = (IborCoupon)flows[0];

            startDate = iborcoupon.fixingDate();

            for (int i = 0; i < size_; ++i)
            {
                IborCoupon coupon = (IborCoupon)flows[i];

                if (!(coupon.date() == coupon.accrualEndDate()))
                {
                    throw new ArgumentException("irregular coupon types are not suppported");
                }

                initialValues_[i] = coupon.rate();
                accrualPeriod_[i] = coupon.accrualPeriod();

                fixingDates_[i]       = coupon.fixingDate();
                fixingTimes_[i]       = dayCounter.yearFraction(startDate, coupon.fixingDate());
                accrualStartTimes_[i] = dayCounter.yearFraction(settlement, coupon.accrualStartDate());
                accrualEndTimes_[i]   = dayCounter.yearFraction(settlement, coupon.accrualEndDate());
            }
        }
Exemple #2
0
        public LiborForwardModelProcess(int size, IborIndex index, IDiscretization disc)
            : base(disc)
        {
            size_ = size;
            index_ = index;
            initialValues_ = new InitializedList<double>(size_);
            fixingTimes_ = new InitializedList<double>(size);
            fixingDates_ = new InitializedList<Date>(size_);
            accrualStartTimes_ = new InitializedList<double>(size);
            accrualEndTimes_ = new InitializedList<double>(size);
            accrualPeriod_ = new InitializedList<double>(size_);
            m1 = new Vector(size_);
            m2 = new Vector(size_);
            DayCounter dayCounter = index.dayCounter();
            IList<CashFlow> flows = cashFlows(1);

            if(!(size_ == flows.Count))
                    throw new ArgumentException( "wrong number of cashflows");

            Date settlement = index_.forwardingTermStructure().link.referenceDate();
            Date startDate;
            IborCoupon iborcoupon = (IborCoupon)flows[0];
            startDate = iborcoupon.fixingDate();

            for (int i = 0; i < size_; ++i)
            {
                IborCoupon coupon = (IborCoupon)flows[i];

                if(!(coupon.date() == coupon.accrualEndDate()))
                    throw new ArgumentException("irregular coupon types are not suppported");

                initialValues_[i]=coupon.rate();
                accrualPeriod_[i]=coupon.accrualPeriod();

                fixingDates_[i]=coupon.fixingDate();
                fixingTimes_[i]=dayCounter.yearFraction(startDate, coupon.fixingDate());
                accrualStartTimes_[i]=dayCounter.yearFraction(settlement, coupon.accrualStartDate());
                accrualEndTimes_[i]=dayCounter.yearFraction(settlement, coupon.accrualEndDate());
            }
        }
Exemple #3
0
 protected StochasticProcess(IDiscretization disc)
 {
     discretization_ = disc;
 }
Exemple #4
0
 protected StochasticProcess(IDiscretization disc)
 {
     discretization_ = disc;
 }
 protected ForwardMeasureProcess(IDiscretization disc)
     : base(disc)
 {
 }