Python 滚动标准差
其他人对pandas中的新Python 滚动标准差,python,pandas,standard-deviation,Python,Pandas,Standard Deviation,其他人对pandas中的新rolling.std()有问题吗?不推荐使用的方法是rolling\u std()。新方法运行良好,但生成一个不随时间序列滚动的常量 下面是示例代码。如果你交易股票,你可能会认识到布林带的公式。我从rolling.std()获得的输出逐日跟踪股票,显然没有滚动 这在0.19.1中。任何帮助都将不胜感激 import datetime import pandas as pd import pandas_datareader.data as web start = da
rolling.std()
有问题吗?不推荐使用的方法是rolling\u std()
。新方法运行良好,但生成一个不随时间序列滚动的常量
下面是示例代码。如果你交易股票,你可能会认识到布林带的公式。我从rolling.std()
获得的输出逐日跟踪股票,显然没有滚动
这在0.19.1中。任何帮助都将不胜感激
import datetime
import pandas as pd
import pandas_datareader.data as web
start = datetime.datetime(2012,1,1)
end = datetime.datetime(2012,12,31)
g = web.DataReader(['AAPL'], 'yahoo', start, end)
stocks = g['Close']
stocks['Date'] = pd.to_datetime(stocks.index)
stocks['AAPL_LO'] = stocks['AAPL'] - stocks['AAPL'].rolling(20).std() * 2
stocks['AAPL_HI'] = stocks['AAPL'] + stocks['AAPL'].rolling(20).std() * 2
stocks.dropna(axis=0, how='any', inplace=True)
你能添加你实际期望的输出吗?
stocks['AAPL'].rolling(20).std()
的输出与pd.rolling\u std(stocks['AAPL'],window=20)
的输出完全相同。我在这里无法复制:听起来你好像在说stocks['AAPL']。rolling(20).std()
是常数,但我看到了一个非常数的时变结果。例如,在绘图时,我看到2012年7月左右的色带比2012年4月左右的色带薄得多。感谢您显示std()工作正常。我原以为20天的回溯会更顺利,但似乎我也必须使用mean()。
import pandas as pd
from pandas_datareader import data as pdr
import numpy as np
import datetime
end = datetime.date.today()
begin=end-pd.DateOffset(365*10)
st=begin.strftime('%Y-%m-%d')
ed=end.strftime('%Y-%m-%d')
data = pdr.get_data_yahoo("AAPL",st,ed)
def bollinger_strat(data, window, no_of_std):
rolling_mean = data['Close'].rolling(window).mean()
rolling_std = data['Close'].rolling(window).std()
df['Bollinger High'] = rolling_mean + (rolling_std * no_of_std)
df['Bollinger Low'] = rolling_mean - (rolling_std * no_of_std)
bollinger_strat(data,20,2)