【发布时间】:2019-12-24 07:10:22
【问题描述】:
我有特定股票的以下价格数据。使用df.head(),我有:
Adj Close pct_change log_ret
Date
2018-01-02 167.701889 0.017905 0.017746
2018-01-03 167.672668 -0.000174 -0.000174
2018-01-04 168.451508 0.004645 0.004634
2018-01-05 170.369385 0.011385 0.011321
2018-01-08 169.736588 -0.003714 -0.003721
pct_change 是使用df['pct_change'] = df['Adj Close'].pct_change() 获得的,而 log_ret 是使用df['log_ret'] = np.log(df['Adj Close']) - np.log(df['Adj Close'].shift(1)) 派生的。
首先,我证明股票的日收益是正态分布的:
plt.hist(df['log_ret'].loc[df.index >= '2018-01-01'], 100)
plt.show()
由于股票的每日收益是正态分布的,股票的价格应该遵循lognormal distribution。如果我解释正确,它的意思是 log(['Adj Price']) ~ N(mean,var)。因此,我创建了一个新列 log_price 并尝试绘制以下内容:
df['log_price'] = np.log(df['Adj Close'])
plt.hist(df['log_price'].loc[df.index >= '2018-01-01'], 100)
plt.show()
但是,价格似乎并不遵循对数正态分布。我想证明价格服从对数正态分布,那么我做错了什么?
【问题讨论】:
标签: python matplotlib scipy distribution