You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I really like this package but unless I am misusing it I think it suffers terribly from lack of speed. I am currently trying to calculate the greeks of a portfolio of 4 call options by two methods, namely AD and finite differences. Even when using the gradient function from ad the finite differences method still outperforms the ad implementation in terms of speed by quite a bit. I am still relatively new to python, so I may just be implementing it in a way so that it is slower. I have attached my code below, any advice would be appreciated.
from ad import adnumber
from ad.admath import *
import numpy as np
import time
I really like this package but unless I am misusing it I think it suffers terribly from lack of speed. I am currently trying to calculate the greeks of a portfolio of 4 call options by two methods, namely AD and finite differences. Even when using the gradient function from ad the finite differences method still outperforms the ad implementation in terms of speed by quite a bit. I am still relatively new to python, so I may just be implementing it in a way so that it is slower. I have attached my code below, any advice would be appreciated.
from ad import adnumber
from ad.admath import *
import numpy as np
import time
time_start = time.clock()
def AD_vega_singlesim(M,S,v,T,r,delta,K,S1,v1,T1,r1,K1,S2,v2,T2,r2,K2,S3,v3,T3,r3,K3):
sensi1 = np.zeros(4)
sensi = np.zeros(4)
sensi2 = np.zeros(4)
sensi3 = np.zeros(4)
for j in range(1, int(M)):
z = np.random.normal(0,1)
price = ((S_exp((r - delta - .5_(v2))T + ( v * z_sqrt(T))) - K)* exp(-r_T))/M
price1 = ((S1.exp((r1 - delta - .5*(v12))T1 + ( v1 * z_sqrt(T1))) - K1)* exp(-r1_T1))/M
price2 = ((S2_exp((r2 - delta - .5(v2__2))T2 + ( v2 * z_sqrt(T2))) - K2) exp(-r2_T2))/M
price3 = ((S3_exp((r3 - delta - .5_(v3__2))T3 + ( v3 * z_sqrt(T3))) - K3) exp(-r3*T3))/M
print AD_vega_singlesim(1000,adnumber(100),adnumber(.2),adnumber(1.0),adnumber(.05),.01,100.0,adnumber(110),adnumber(.25),adnumber(2),adnumber(.06),125,adnumber(125),adnumber(.31),adnumber(2.5),adnumber(.07),122,
adnumber(150),adnumber(.13),adnumber(1.5),adnumber(.05),143)
time_elapsed = (time.clock() - time_start)
print time_elapsed
The text was updated successfully, but these errors were encountered: