Функция отлично работает при передаче констант. Я почти уверен, что это связано с тем, как я нарезаю массив констант montecarlo[j], но понятия не имею, как его переписать, чтобы обеспечить векторизацию.
примечание x — это массив формы 250х20, случайные числа подойдут.
Код: Выделить всё
import numpy as np
np.random.seed(5)
x = stats.montecarlo_brownian(4.5, 1, 250, .15, sims=20)
j = 249
otype = 'p'
k = 4.0
def montecarlo_payouts(montecarlo, j, otype, k, kotype = None, b = 0, i=1):
#adjust daycount for index starting at 0
i = i - 1
j = j - 1
#vanilla option payoffs for call and put
payoff = np.where(otype=='c', np.maximum(montecarlo[j] - k, 0), np.maximum(k - montecarlo[j], 0))
return payoff.mean()
df = pd.DataFrame({'days': [230,250], 'otype': ['c','p'], 'strike': [4.8,4.3]})
payout = montecarlo_payouts(x, 250, df['otype'], 5)
Подробнее здесь: https://stackoverflow.com/questions/791 ... error-oper
Мобильная версия