gpt4 book ai didi

python - 用 Pandas 计算考夫曼在 Python 中的效率比?

转载 作者:行者123 更新时间:2023-12-03 19:39:11 25 4
gpt4 key购买 nike

我正在尝试使用 Pandas 在 Python 中实现考夫曼效率比 (ER)。

在 Pandas DataFrame 中,我有两列:

  1. 日期
  2. 股票收盘价(德国 DAX 指数,^GDAXI,在本例中):
    Date        Close    2016-01-05  10310.10    2016-01-06  10214.02    2016-01-07   9979.85    2016-01-08   9849.34    2016-01-11   9825.07         2016-01-12   9985.43         2016-01-13   9960.96         2016-01-14   9794.20

What I need is a third column that includes the ER for a given period n.

Definition of the ER:

ER = Direction / Volatility

地点:

Direction = ABS (Close – Close[n])
Volatility = n * ∑ (ABS(Close – Close[1]))
n = The efficiency ratio period.

这是一个 n=3 周期 ER 的例子(取自 http://etfhq.com/blog/2011/02/07/kaufmans-efficiency-ratio/ ):

ER-Calculation

我正在努力解决的问题是如何使用 Pandas 在 Python 中执行此操作?最后,根据上面的计算,我的数据框应该是这样的:

Date        Adj Close   ER(3)2016-01-04  10283.44    2016-01-05  10310.10    2016-01-06  10214.02    2016-01-07  9979.85     0.92016-01-08  9849.34     1.02016-01-11  9825.07     1.02016-01-12  9985.43     0.02016-01-13  9960.96     0.52016-01-14  9794.20     0.1

如何让 Pandas 回顾前 n 行以进行 ER 所需的计算?

非常感谢任何帮助!先感谢您。德克

最佳答案

无需编写滚动函数,只需使用diffrolling_sum:

df['direction'] = df['Close'].diff(3).abs()
df['volatility'] = pd.rolling_sum(df['Close'].diff().abs(), 3)

我认为代码几乎是不言自明的。如果您需要解释,请告诉我。

In [11]: df['direction'] / df['volatility']
Out[11]:
0 NaN
1 NaN
2 NaN
3 1.000000
4 1.000000
5 0.017706
6 0.533812
7 0.087801
dtype: float64

这看起来就是您要查找的内容。

关于python - 用 Pandas 计算考夫曼在 Python 中的效率比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36980238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com