【问题标题】:Showing lognormal distribution in stock prices显示股票价格的对数正态分布
【发布时间】: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


    【解决方案1】:

    来源:Log-normal_distribution

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多