투자 보조 지표 볼린저밴드
주가가 이동평균선을 중심으로 일정한 범위 내에서 움직인다는 전제로 개발된 지표이다.
계산방법
중심선 : 이동평균선(20일)
상한선 : 20일 이동평균선 + 2α
하한선 : 20일 이동평균선 - 2α
해석
통계학에서는 평균값에 2표준편차 이내에 95% 표본이 존재한다고 말한다. 이를 볼린저 밴드에 적용해 주가의 95%는 상한과 하한선 사이에서 움직인다는 개념이다.
전략
- 주가의 등락폭이 적은 상황에서 밴드의 상,하한선도 축소되면, 조만간 가격의 변동성이 커질 가능성이 있다.
- 주가의 등락폭이 큰 상황에서 밴드의 상,하한선이 확대되면, 본격적인 추세 전환이 이루어질 가능성이 있다.
- 주가가 볼린저 밴드 상,하한선을 돌파했을 경우 현재 주가가 과대, 과소평가된 상황이므로, 추세 반전 가능성이 높다.
존 볼린저의 매매기법
- 밴드의 폭이 축소되면서 밀집구간을 거친 후 주가가 상한선 돌파시 매수, 하한선 돌파시 매도
- 주가가 상한선에 접근하고 지표가 강세를 보일 때 매수, 하한선에 접근하고 지표가 약세일 땐 매도
- 주가가 상한선을 여러번 터치하지만, 주가지표가 약세일 땐 상한선 근처에서 매도, 주가가 하한선을 여러 번 터치하지만 주가 지표가 강세를 보이면 매수.
파이썬 구현
import ta
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import FinanceDataReader as fdr
import copy
df_krx = fdr.StockListing('KRX')
kospi_data = df_krx[(df_krx["Market"]=="KOSPI") & (~df_krx["Sector"].isna())]
target = kospi_data[kospi_data["Name"]=="KT&G"]
price_data = fdr.DataReader("033780","2020","2022-11-23")
bol_h = ta.volatility.bollinger_hband(price_data['Close'])
bol_avg = ta.volatility.bollinger_mavg(price_data['Close'])
bol_l = ta.volatility.bollinger_lband(price_data['Close'])
price_data["bol_h"] = bol_h
price_data["bol_avg"] = bol_avg
price_data["bol_l"] = bol_l
워낙 간단한 계산식이도 하고, 이번엔 ta 패키지를 이용해 계산했다.
fig, ax1 = plt.subplots(figsize = (14,7))
ax1.set_ylabel('Price')
ax1.plot(price_data["Close"],color = "black",alpha = 0.7)
ax1.plot(price_data["bol_l"],color = "blue",alpha = 0.5)
ax1.plot(price_data["bol_avg"],color = "green",alpha = 0.5)
ax1.plot(price_data["bol_h"],color = "red",alpha = 0.5)
ax1.legend(["Close","bol_l","bol_avg","bol_h"],loc = "upper left")
plt.title(target["Name"].values[0])
plt.show()
2022년 주가와 볼린저 밴드를 보자.
2022년 2월 하한선을 돌파한 후 2022년 6월까지 상한선을 살짝씩 터치하면서 주가가 계속 오르고 있는 것이 보인다. 하지만 존 볼린저 매매기법 3번째에서 주가가 상한을 여러 번 터치하지만 약세를 보일 땐 상한선 근처에서 매도라고 했는데, 2월 부터 6월까지 그런 양상을 나타내고 있다. 6월 이후 하락 후 하한 선 근처를 여러 번 터치하며 다시 상승할 준비를 하고 있는 모습을 보인다.
22년 11월 기준으로는 볼린저 밴드의 폭이 매우 커졌다가 다시 작아지고 있는데, 이는 추세의 전환이 이루어지려 하는 모습을 보이는 것 같다.
하지만, 존 볼린저 매매기법 1번째에서 밀집구간을 지난 후 상향 돌파하면 추가 상승의 여지도 남아있다는 것을 보아 아직 관망할 때라 생각된다.
그나저나 KT&G의 행진을 어디까지 갈지 매우 궁금하다.
이번에는 볼린저 밴드를 간단하게 알아보고 파이썬으로 구현하였다.
항상 말하지만, 상한과 하한이 없는 주가에 기반된 지표는 벡테스팅을 해보기가 참 어렵다. 해당 지표가 수익성이 있는지 가장 깔끔하게 검증하는 방법이 벡테스팅인데 말이다. 결국 여러 종목에 대해 각 지표를 검증 한 후 경험적으로 쌓아서 활용하거나, MFI, MACD 편에서 했던 것 처럼 범위를 갖도록 개량한 수정 지표를 만들어 활용해야할 것이다.
볼린저 밴드의 경우 밴드 폭, 폭의 변동성 등으로 수정 지표를 만들어 볼 수 있을 것 같다. 의미가 있을지 없을지는..
개량 지표에 관해서는 조금 고민해보고 작성하도록 하겠다.
'개발일지' 카테고리의 다른 글
파이썬 투자 보조 지표 분석 / 전략 설계 - ADX, DI (0) | 2022.11.29 |
---|---|
파이썬 투자 보조 지표 분석 / 전략 설계 - CCI (0) | 2022.11.28 |
파이썬 투자 보조 지표 분석 / 전략 설계 - 매물대 차트 (0) | 2022.11.26 |
파이썬 투자 보조 지표 분석 / 전략 설계 - 이격도, 엔벨로프 (0) | 2022.11.25 |
파이썬 투자 보조 지표 분석 / 전략 설계 - MACD (0) | 2022.11.24 |
댓글