【发布时间】:2019-08-19 03:02:26
【问题描述】:
我有雅虎从 2000 年 1 月 1 日到 2018 年 12 月 31 日特定股票的每日价格数据。我了解股票价格的每日百分比变化遵循正态分布,因此我做了以下操作:
df['pct_change'] = df['Adj Close'].pct_change()
df = df.dropna()
# Plot normal distribution of daily returns
mu = df['pct_change'].mean()
std = df['pct_change'].std()
x = np.linspace(mu - 5*std, mu + 5*std,100)
plt.plot(x, stats.norm.pdf(x, mu, std))
plt.show()
现在,我想用对数正态分布绘制股票价格,但我对 stats.lognorm.pdf() 函数和要包含的参数感到非常困惑。由于价格的日志是正态分布的,我应该在原始数据框中创建Adj Price 列的日志的新列吗?如果有帮助,这里是数据框的head()。谢谢。
High Low Open Close Volume Adj Close \
Date
2000-01-03 4.017857 3.631696 3.745536 3.997768 133949200.0 3.488905
2000-01-04 3.950893 3.613839 3.866071 3.660714 128094400.0 3.194754
2000-01-05 3.948661 3.678571 3.705357 3.714286 194580400.0 3.241507
2000-01-06 3.821429 3.392857 3.790179 3.392857 191993200.0 2.960991
2000-01-07 3.607143 3.410714 3.446429 3.553571 115183600.0 3.101249
pct_change
Date
2000-01-03 0.088754
2000-01-04 -0.084310
2000-01-05 0.014634
2000-01-06 -0.086539
2000-01-07 0.047368
【问题讨论】:
-
什么是
stats?您应该在示例中显示相关的导入语句。 -
@wwii:是
scipy.stats(问题标记为scipy)。不过,我并不清楚这个问题:您是否完全不考虑时间,是否试图将日志与您的价格(以及哪个价格?)相匹配? -
@fuglede:我正在尝试拟合“调整价格”,因为我想显示价格遵循对数正态分布。这是我使用对数正态分布的方式吗?或者正确的解释方式是:给定“Adj Price”的均值和标准差,价格 x 将遵循某个对数正态分布?
-
如果您想确定数据是否遵循某种分布,除了适合您的目的的任何统计测试之外,您可能还需要一个 QQ 图;它们往往比仅仅根据数据绘制拟合分布更容易阅读。
标签: python matplotlib scipy