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)
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)