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