Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 滚动标准差_Python_Pandas_Standard Deviation - Fatal编程技术网

Python 滚动标准差

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

其他人对pandas中的新
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)