볼린져 밴드란 moving average (rolling mean) 에서 위아래로 two standard deviation 만큼의 경계를 표시한 챠트
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('data/apple_stock.csv', index_col='Date', parse_dates=['Date'])
# 20일 주기의 moving average
df['Close: 20Day Mean'] = df['Close'].rolling(window=20).mean()
# 2 standard deviation upper
df['Upper'] = df['Close: 20Day Mean'] + 2*df['Close'].rolling(20).std()
# 2 standard deviation lower
df['Lower'] = df['Close: 20Day Mean'] - 2*df['Close'].rolling(20).std()
df['2018':][['Close', 'Close: 20Day Mean', 'Upper', 'Lower']].plot(figsize=(15,7))
<matplotlib.axes._subplots.AxesSubplot at 0x7fc6987fec88>