мой текущий код выглядит следующим образом:
stock_values = np.zeros([path, steps+1])
stock_values[:, 0] = s
for y in range(0, steps):
stock_values[:, y+1] = stock_values[:, y] * (
np.exp(change[:,y]))
с:
change = (r_d - 0.5*(sigma_d ** 2)) * deltat + sigma_d * np.sqrt(deltat) * np.random.normal(0, 1, size=(path, steps)) + np.random.poisson(lambda_j*deltat,size=(path, steps))* np.random.normal(r_j,sigma_j, size=(path, steps))
Stock_values и изменения являются массивом с 1 000 000 x 1015 элементов Итак, я запускаю Монте-КарлоМоделирование с GBM и Jump Diffusion, 1 000 000 путей и 1045 шагов. Таким образом, вычислительное время довольно медленное, особеннотак как я бы предпочел использовать для этого 100 000 000 путей. К сожалению, Python использует только одно ядро для цикла, а остальные 7 не используют. Для матрицы "Изменить" она может использовать все ядра ... (Извините, у меня нет хороших технических / аппаратных навыков и знаний ...)
Я ищу функцию для обмена "цикл for, который вычисляет столбец y + 1 на основе значения в столбце y, y + 2 на основе значения y + 1 и т. д. до y + 1044.
Есть идеи? Большое спасибо!