Hi guys!
I am interested about passing from this linear function created below, to a non-linear one, in order to estimate the second derivative. Is there exist some trick that I can use to have the second derivative different from zero? I am trying to estimate a greek called “Gamma” for a Call Option, that is priced using Montecarlo method
import torch as np
values = torch.tensor([1., 1.1, 1.2], requires_grad=True)
def delta_gamma(xi):
k,T,j,sigma = 1.5,1.,10000,0.5
S = np.broadcast_to(xi,(j,) + xi.shape).T
mean = -.5 * sigma * sigma * T
volatility = sigma
BM = torch.randn(1, j)*volatility+mean
product = S*np.exp(BM)
p = torch.maximum(product-k,torch.zeros_like(product))
result = torch.mean(p, 1)
return result
for i in values:
print(torch.autograd.functional.hessian(delta_gamma,i))