显示股票价格的对数正态分布

时间:2019-08-19 04:11:34

标签: python matplotlib scipy distribution

我具有特定股票的以下价格数据。使用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

使用df['pct_change'] = df['Adj Close'].pct_change()获取pct_change,而使用df['log_ret'] = np.log(df['Adj Close']) - np.log(df['Adj Close'].shift(1))导出log_ret。

首先,我证明股票的日收益率是正态分布的:

plt.hist(df['log_ret'].loc[df.index >= '2018-01-01'], 100)
plt.show()

Distribution of daily returns of the stock

由于股票的日收益率是正态分布的,因此股票的价格应遵循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()

Distribution of log(Adj Close) of the stock

但是,价格似乎并不遵循对数正态分布。我想证明价格遵循对数正态分布,所以我做错了什么?

1 个答案:

答案 0 :(得分:-1)

来源:Log-normal_distribution

如果Y具有正态分布,则Y的指数函数X = exp(Y)具有对数正态分布

但是在您的代码中,您记录了错误的日志,因此请更正代码,有关更多详细信息,请遵循Wikipedia。