예제 #1
0
 def test_vg(self):
     N = 150
     L = 10
     S0 = 100
     t = 1 / 12
     r = 0.1
     q = 0
     sigma = 0.12
     theta = -0.14
     v = 0.2
     strike = 90
     c1, c2, c4 = cumulants_from_mgf(general_log_moneyness_mgf,
                                     strike,
                                     VarianceGamma(theta, v,
                                                   sigma).set_type('mgf'),
                                     t=t,
                                     r=r,
                                     q=q,
                                     S0=S0)
     intv_a, intv_b = interval_a_and_b(c1, c2, c4, L)
     print(intv_a, intv_b)
     res = cosin_vanilla_call(
         N, strike, intv_a, intv_b, t, r, q, S0,
         VarianceGamma(theta, v, sigma).set_type('chf'))
     exp_res = 10.8289
     self.assertAlmostEqual(exp_res, res, 4)
예제 #2
0
    def test_carr_madan_fft_vg(self):
        N = 2 ** 15
        d_u = 0.01
        alpha = 1

        S0 = 100
        t = 1 / 12
        r = 0.1
        q = 0
        sigma = 0.12
        theta = -0.14
        v = 0.2
        strike, call_prices = carr_madan_fft_call_pricer(N, d_u, alpha, r, t, S0, q, VarianceGamma(theta, v, sigma).set_type('chf'))
        ffn_pricer = spline_fitting(strike, call_prices, 2)
        exp_res = 10.8289
        res = ffn_pricer(90)
        self.assertAlmostEqual(exp_res, res, 4)