Esempio n. 1
0
        //public spotStar
        /// <summary>
        ///
        /// </summary>
        /// <param name="myZero"></param>
        /// <param name="myDivList"></param>
        private void MakeDivArray(ZeroCurve myZero, DivList myDivList)
        {
            double dt = Tau / Gridsteps;

            if ((myDivList != null) && (myZero != null))
            {
                for (int idx = 0; idx < Gridsteps; idx++)
                {
                    double temp = 0.0;
                    for (int kdx = 0; kdx < myDivList.Divpoints; kdx++)
                    {
                        if ((myDivList.GetT(kdx) > idx * dt) && (myDivList.GetT(kdx) < Tau))
                        {
                            temp += myDivList.GetD(kdx) * Math.Exp(-myZero.ForwardRate(idx * dt, myDivList.GetT(kdx)) *
                                                                   (myDivList.GetT(kdx) - idx * dt));
                        }
                    }
                    SetDiv(idx, temp, dt * idx);
                }
            }
            else //missing either div or zero, load in 0 for _div on tree
            {
                for (int idx = 0; idx <= Gridsteps; idx++)
                {
                    SetDiv(idx, 0.0, dt * idx);
                }
            }
        }
Esempio n. 2
0
        //fill grid forward rates
        private void FillForwardRate(ZeroCurve myZero)
        {
            double dt = Tau / Gridsteps;

            if (myZero != null)
            {
                if (FlatFlag)
                {
                    FlatRate = myZero.LinInterp(Tau);
                }
                for (int idx = 0; idx < Gridsteps; idx++)
                {
                    SetR(idx, FlatFlag ? FlatRate : myZero.ForwardRate(idx * dt, (idx + 1) * dt));
                }
            }
        }