Я хотел бы создать несколько анализов Монте-Карло для 10 различных компаний. Функция M C имеет 3 параметра, которые меняются в зависимости от компании, и код для нее выглядит следующим образом:
import numpy as np
def monte_carlo(start_price, days, mu, sigma):
price = np.zeros(days)
price[0]= start_price
shock = np.zeros(days)
drift = np.zeros(days)
for x in range (1,days):
shock[x] = np.random.normal(loc = mu *dt, scale = sigma * np.sqrt(dt) )
drift[x] = mu*dt
price[x] = price[x-1] + (price[x-1] * (drift[x] + shock[x]) )
return price
Эта функция затем отображается 100 раз a для l oop:
for run in range(100):
plt.plot(monte_carlo(start_price,days,mu,sigma))
plt.xlabel('Days')
plt.ylabel('Price')
plt.title('MCA for ')
все это прекрасно работает для одного набора значений для start_price, mu, sigma, но я хочу, чтобы l oop через 10 различных наборов.
У меня есть нечто, похожее на это:
for stock in start_price, sigma, mu:
for run in range(100):
plt.plot(monte_carlo(start_price[stock],days,mu[stock],sigma[stock]))
plt.xlabel('Days')
plt.ylabel('Price')
plt.title('MCA for %' %stock)
но это не работает вообще, я получаю сообщение об ошибке «Необходимо передать DataFrame только с логическими значениями».
Я надеюсь, что это имеет смысл, я полный нуб, поэтому любая помощь приветствуется