我试图根据10k迭代的蒙特卡罗模拟绘制直方图。使用plt.plot(price_list)
进行绘图很好,但直方图没有加载或者它需要花费很长时间(我认为)。
我已经运行了一个小时的代码,但在它仍然无法加载后放弃了。我已经尝试将后端更改为qt5agg并降低垃圾箱无效。
如果我显着降低迭代次数,代码就可以工作。我尝试使用100并且图表很好。
我正在使用jupyter笔记本来运行。以下是我写的代码。
import numpy as np
import pandas as pd
import pandas_datareader.data as wb
import matplotlib.pyplot as plt
from scipy.stats import norm
%matplotlib inline
plt.rc("axes.spines", top=False, right=False)
ticker = 'PG'
data = pd.DataFrame()
data[ticker] = wb.DataReader(ticker, 'yahoo', '2007-1-1')['Adj Close']
log_returns = np.log(data / data.shift(1))
u = log_returns.mean()
var = log_returns.var()
stdev = log_returns.std()
drift = u - (0.5 * var)
t_intervals = 250
iterations = 10000
daily_returns = np.exp(drift.values + stdev.values * norm.ppf(np.random.rand(t_intervals, iterations)))
s0 = data.iloc[-1]
price_list = np.zeros_like(daily_returns)
price_list[0] = s0
for t in range(1, t_intervals):
price_list[t] = price_list[t - 1] * daily_returns[t]
plt.figure(figsize=(20,12))
plt.plot(price_list);
plt.figure(figsize=(20,12))
plt.hist(price_list, bins = 20);