Ejemplo n.º 1
0
        private static void Demo_HW()
        {
            var marketT = new[] {
                0, 0.255555556, 0.511111111, 0.761111111, 1.013888889, 1.269444444, 1.530555556, 1.775, 2.027777778,
                2.291666667, 2.541666667, 2.797222222, 3.047222222, 3.302777778, 3.555555556, 3.805555556, 4.058333333,
                4.313888889, 4.569444444, 4.819444444
            };

            var marketP = new[] {
                1, 0.993664, 0.989978, 0.98618, 0.982123, 0.977784, 0.973149, 0.968688, 0.963922, 0.958764, 0.95371,
                0.948381, 0.943253, 0.937892, 0.932477, 0.927016, 0.921614, 0.916074, 0.91046, 0.904898
            };

            var marketF = new[] {
                .0115761, 0.0134633, 0.0145677, 0.015404, 0.016344, 0.0173619, 0.0182408, 0.0188542, 0.0195574,
                0.0203891, 0.0212078, 0.0219844, 0.0217523, 0.0223657, 0.0229775, 0.0235635, 0.0231886, 0.0236636,
                0.0241312, 0.0245827
            };
            var hw = new HullWhiteModel("hw1", .5, .05, marketT, marketP, marketF);

            for (var i = 0; i < marketT.Length; i++)
            {
                var t = marketT[i];
                var p = hw.HW_ZBPrice_CF(0, t, marketF[0]);
                Console.WriteLine($"{t}: {p} <- {marketP[i]}");
            }
        }
Ejemplo n.º 2
0
        private static void Demo_HW()
        {
            var marketT = new[] {
                0, 0.255555556, 0.511111111, 0.761111111, 1.013888889, 1.269444444, 1.530555556, 1.775, 2.027777778,
                2.291666667, 2.541666667, 2.797222222, 3.047222222, 3.302777778, 3.555555556, 3.805555556, 4.058333333,
                4.313888889, 4.569444444, 4.819444444
            };

            var marketP = new[] {
                1, 0.993664, 0.989978, 0.98618, 0.982123, 0.977784, 0.973149, 0.968688, 0.963922, 0.958764, 0.95371,
                0.948381, 0.943253, 0.937892, 0.932477, 0.927016, 0.921614, 0.916074, 0.91046, 0.904898
            };

            var marketF = new[] {
                .0115761, 0.0134633, 0.0145677, 0.015404, 0.016344, 0.0173619, 0.0182408, 0.0188542, 0.0195574,
                0.0203891, 0.0212078, 0.0219844, 0.0217523, 0.0223657, 0.0229775, 0.0235635, 0.0231886, 0.0236636,
                0.0241312, 0.0245827
            };

            var hw = new HullWhiteModel("hw1", .00883, .01, marketT, marketP, marketF);

            var zb  = hw.HW_ZBPrice_CF(0, 2, marketF[0]);
            var zb2 = hw.HW_ZBPrice_SM(0, 2, marketF[0]);

            Console.WriteLine($"T = 2: c{zb:F10} <> s{zb2:F10} <- m{hw.MarketP(2):F10}");


            for (var i = 0.94; i < 0.98; i += 0.002)
            {
                var p1 = hw.HW_ZBPut_CF(0, 1, 2, i, marketF[0]);
                var p2 = hw.HW_ZBPut_SM_Q(0, 1, 2, i, marketF[0], n: 30000, m: 360);
                var p3 = hw.HW_ZBPut_SM_T(0, 1, 2, i, marketF[0], n: 30000);
                Console.WriteLine($"x = {i:F3}: c{p1:F10} <> q{p2:F10} <> t{p3:F10}");
            }
        }