I have a function that typically takes in constant args and calculates volatility. I want to pass in a vector of different C's and K's to get an array of volatilities each associated with C[i], K[i]
def vol_calc(S, T, C, K, r, q, sigma):
        
        d1 = (np.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
     
        vega = (1 / np.sqrt(2 * np.pi)) *  np.exp(-q * T) * np.sqrt(T) * np.exp((-si.norm.cdf(d1, 0.0, 1.0) ** 2) * 0.5)
    
        tolerance = 0.000001
        x0 = sigma
        xnew  = x0
        xold = x0 - 1
        while abs(xnew - xold) > tolerance:
            xold = xnew
            xnew = (xnew - fx - C) / vega
        
        return abs(xnew)
but if I want to pass two arrays without turning into a nested loop, I thought I could just do:
def myfunction(S, T, r, q, sigma):
    for x in K,C:
return same size as K,C
but I can't get it to work
 
    