Exemplo n.º 1
0
 //! Plain tree build-up from short-rate dynamics
 public ShortRateTree(TrinomialTree tree1,
                      TrinomialTree tree2,
                      ShortRateDynamics dynamics)
     : base(tree1, tree2, dynamics.correlation())
 {
     dynamics_ = dynamics;
 }
            //! Tree build-up + numerical fitting to term-structure
            public ShortRateTree(TrinomialTree tree,
                                 ShortRateDynamics dynamics,
                                 TermStructureFittingParameter.NumericalImpl theta,
                                 TimeGrid timeGrid)
                : base(timeGrid, tree.size(1))
            {
                tree_     = tree;
                dynamics_ = dynamics;
                theta.reset();
                double value = 1.0;
                double vMin  = -100.0;
                double vMax  = 100.0;

                for (int i = 0; i < (timeGrid.size() - 1); i++)
                {
                    double discountBond = theta.termStructure().link.discount(t_[i + 1]);
                    Helper finder       = new Helper(i, discountBond, theta, this);
                    Brent  s1d          = new Brent();
                    s1d.setMaxEvaluations(1000);
                    value = s1d.solve(finder, 1e-7, value, vMin, vMax);
                    // vMin = value - 1.0;
                    // vMax = value + 1.0;
                    theta.change(value);
                }
            }
Exemplo n.º 3
0
        public override Lattice tree(TimeGrid grid)
        {
            ShortRateDynamics dyn   = dynamics();
            TrinomialTree     tree1 = new TrinomialTree(dyn.xProcess(), grid);
            TrinomialTree     tree2 = new TrinomialTree(dyn.yProcess(), grid);

            return((Lattice)(new ShortRateTree(tree1, tree2, dyn)));
        }
 //! Plain tree build-up from short-rate dynamics
 public ShortRateTree(TrinomialTree tree,
                      ShortRateDynamics dynamics,
                      TimeGrid timeGrid)
     : base(timeGrid, tree.size(1))
 {
     tree_     = tree;
     dynamics_ = dynamics;
 }