public void NonFlatRates() { ZeroCurve myZero = new ZeroCurve(); myZero.ratepoints = 2; myZero.makeArrays(); myZero.set_r(0, 0.05, 1.0); myZero.set_r(1, 0.075, 2.0); //test interpolation priot to point 0 double tTime = 0.5; double val = myZero.linInterp(tTime); Assert.Greater(val, 0.0499999999); Assert.Less(val, 0.050000001); //test interpolation prior to point 1 tTime = 1.5; val = myZero.linInterp(tTime); Assert.Greater(val, 0.062499999999); Assert.Less(val, 0.06250000001); //test interpolation post point 1 tTime = 2.5; val = myZero.linInterp(tTime); Assert.Greater(val, 0.07499999999); Assert.Less(val, 0.0750000001); //test forward rates //test interpolation priot to point 0 double tl = 0.25; tTime = 0.5; val = myZero.forwardRate(tl, tTime); Assert.Greater(val, 0.0499999999); Assert.Less(val, 0.050000001); //test interpolation prior to point 1 tTime = 1.5; val = myZero.forwardRate(tl, tTime); Assert.Greater(val, 0.06499999); /// 0.065 Assert.Less(val, 0.065000001); //test interpolation post point 1 tTime = 2.5; val = myZero.forwardRate(tl, tTime); ///0.077778 Assert.Greater(val, 0.0777777); Assert.Less(val, 0.07777778); }
public void DivSlopingZero() { DivList mydiv = new DivList(); mydiv.divpoints = 1; mydiv.makeArrays(); mydiv.set_d(0, 5, 0.5); ZeroCurve myZero = new ZeroCurve(); myZero.ratepoints = 2; myZero.makeArrays(); myZero.set_r(0, 0.075, 0.5); myZero.set_r(1, 0.05, 2); //create the tree DiscreteTree myTree = new DiscreteTree(); myTree.Gridsteps = 100; myTree.tau = 1.0; myTree.sig = 0.25; myTree.Spot = 100.0; //myTree.flatFlag = false; myTree.MakeGrid(myZero, mydiv); //create pricer Pricer myPrice = new Pricer(); myPrice.Strike = 100; myPrice.Payoff = "c"; myPrice.Smoothing = "y"; myPrice.Style = "a"; myPrice.MakeGrid(myTree); double prc = myPrice.Price(); myPrice.Payoff = "p"; myPrice.MakeGrid(myTree); double prp = myPrice.Price(); Assert.Greater(prc, 10.37); //Orc pr = 10.38 Assert.Less(prc, 10.39); Assert.Greater(prp, 9.42); //Orc pr = 9.43 Assert.Less(prp, 9.44); }
public void NoDivFlatZero() { DivList mydiv = new DivList(); mydiv.divpoints = 1; mydiv.makeArrays(); mydiv.set_d(0, 0.0, 1.0); ZeroCurve myZero = new ZeroCurve(); myZero.ratepoints = 1; myZero.makeArrays(); myZero.set_r(0, 0.05, 1.0); //create the tree DiscreteTree myTree = new DiscreteTree(); myTree.Gridsteps = 100; myTree.tau = 1.0; myTree.sig = 0.25; myTree.Spot = 100.0; //myTree.flatFlag = false; myTree.MakeGrid(myZero, mydiv); //create pricer Pricer myPrice = new Pricer(); myPrice.Strike = 100; myPrice.Payoff = "c"; myPrice.Smoothing = "y"; myPrice.Style = "a"; myPrice.MakeGrid(myTree); double prc = myPrice.Price(); myPrice.Payoff = "p"; myPrice.MakeGrid(myTree); double prp = myPrice.Price(); Assert.Greater(prc, 12.33); //Orc pr = 12.34 Assert.Less(prc, 12.35); Assert.Greater(prp, 7.98); //Orc pr = 7.99 Assert.Less(prp, 8.00); }
public void DivFlatZero() { DivList mydiv = new DivList(); mydiv.divpoints = 1; mydiv.makeArrays(); mydiv.set_d(0, 5, 0.5); ZeroCurve myZero = new ZeroCurve(); myZero.ratepoints = 1; myZero.makeArrays(); myZero.set_r(0, 0.05, 1.0); //create the tree DiscreteTree myTree = new DiscreteTree(); myTree.Gridsteps = 100; myTree.tau = 1.0; myTree.sig = 0.25; myTree.Spot = 100.0; //myTree.flatFlag = false; myTree.MakeGrid(myZero, mydiv); //create pricer Pricer myPrice = new Pricer(); myPrice.Strike = 100; myPrice.Payoff = "c"; myPrice.Smoothing = "y"; myPrice.Style = "e"; myPrice.MakeGrid(myTree); double prc = myPrice.Price(); myPrice.Payoff = "p"; myPrice.MakeGrid(myTree); double prp = myPrice.Price(); Assert.Greater(prc, 9.455); //BS pr = 9.46277 Assert.Less(prc, 9.475); Assert.Greater(prp, 9.462); //BS pr = 9.46226 Assert.Less(prp, 9.475); }