Estoy interesado en los griegos con Black-Scholes. En este caso, tengo la fórmula de python para calcular el griego llamado "Vanna", es decir: $\frac{\partial^2 P}{\partial \sigma \partial S}$ la sensibilidad del valor de la opción P con respecto a un movimiento conjunto del subyacente y la volatilidad.
Consideremos ahora el siguiente ejemplo, con S = [100,120] una lista de 50 puntos equiespaciados y $\sigma$ = [0.05,0.7] otra lista de 50 puntos equiespaciados, en el código siguiente soy capaz de generar el gráfico de esta grieta, con respecto a cada elemento de S y $\sigma$ es decir, con respecto al primer elemento de S y al primer elemento de $\sigma$ después con respecto al segundo elemento de ambas listas, hasta el último elemento de ambas listas.
Mi pregunta es: ¿Cómo puedo tomar todas las combinaciones posibles, entre estas 2 listas? ¿Tal vez se pueda hacer con un gráfico tridimensional? ¿Cómo puedo hacer esto en Python?
import numpy as np
import matplotlib.pyplot as plt
underlying = np.linspace(100,120,50)
K = 100
T = 1
r = 0
sigma = np.linspace(0.05,0.7,50)
def Vanna_(S, K, T, r, sigma):
lista = []
d1 = (np.log(S / K) + (r + 1/2 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d2 = d1-vol*T**(1/2)
return (1 / np.sqrt(2 * np.pi) * S * np.exp(-d1 ** 2 * 1/2) * np.sqrt(T))/S * (1- d1/(sigma*np.sqrt(T)))
plt.plot(Vanna_(underlying, K, T, r, sigma))