#beta(volatility of Volatility) beta = 1 #rho rho = -0.3 #Initial stock price s0 = 100.0 #Initial volatility v0 = 0.09 #0.634 K = np.arange(60, 180, 40) for i in range(0, 3): print( call_price_exact(kappa, theta, beta, rho, v0, r, T, s0, K[i].item())) #convert int32 to int #Strikes K = np.arange(60, 180, 40) #simulation imp_vol = np.array([]) for k in K: #calc option price price = call_price_exact(kappa, theta, beta, rho, v0, r, T, s0, k.item()) #calc implied volatility imp_vol = np.append( imp_vol, black_sholes.implied_volatility(price, s0, k, T, r, 'C')) #print (k, price, imp_vol[-1]) #plot result
T = 5.0 #Initial stock price s0 = 1.0 #Initial volatility v0 = 0.1 #risk free rate r = 0.05 #long term volatility(equiribrium level) theta = 0.1 #Mean reversion speed of volatility kappa = 1.1 #lambda(volatility of Volatility) lamda = 0.4 #rho rho = -0.6 #simulation imp_vol = np.array([]) for k in K: call_option = CallOption(k, T) heston = HestonModel(num_steps, num_paths, s0, v0, r, theta, kappa, lamda, rho) price = heston.price(call_option) #calc implied volatility imp_vol = np.append(imp_vol, implied_volatility(price, s0, k, T, r, 'C')) #plot result plt.plot(K, imp_vol) plt.xlabel('Strike (K)') plt.ylabel('Implied volatility') plt.title('Volatility skew by Heston model') plt.show()
sigma = 0.4 #rho rho = -0.6 #Initial stock price s0 = 1.0 #Initial volatility v0 = 0.1 #0.634 print call_price(kappa, theta, sigma, rho, v0, r, T, s0, 0.5) #0.384 print call_price(kappa, theta, sigma, rho, v0, r, T, s0, 1.0) #0.176 print call_price(kappa, theta, sigma, rho, v0, r, T, s0, 1.5) #Strikes K = np.arange(0.1, 5.0, 0.25) #simulation imp_vol = np.array([]) for k in K: #calc option price price = call_price(kappa, theta, sigma, rho, v0 ,r ,T ,s0 ,k) #calc implied volatility imp_vol = np.append(imp_vol, black_sholes.implied_volatility(price, s0, k, T, r, 'C')) print k, price, imp_vol[-1] #plot result plt.plot(K, imp_vol) plt.xlabel('Strike (K)') plt.ylabel('Implied volatility') plt.title('Volatility skew by Heston model') plt.show()