2021.12.09 - [Python] - [Python] finterstellar를 사용하여 RSI로 주식 매매 시그널 만들기
먼저 finterstellar가 처음이라면 이전 글을 보고 와주세요.
Bollinger Band
Bollinger Band는 이동평균에 변동성을 결합한 그래프 입니다.
Z-Score: 표준 점수
X: 각 데이터 값
µ: 평균 값
σ: 표준편차
즉, X 값이 평균에서 표준편차의 몇 배만큼 떨어져 있는가를 나타내며, 표준편차가 곧 변동성이므로 주가가 변동성 대비 어느 정도 수준에 위치해 있는지를 나타내게 됩니다.
볼린저 밴드의 각각의 선은 다음과 같습니다.
밴드 상단선: N일 간의 이동평균 + k × 표준편차
밴드 중심선: N일 간의 이동평균
밴드 중심선: N일 간의 이동평균 - k × 표준편차
볼린저 밴드를 사용한 매매 전략은 envelope과 유사합니다.
모멘텀 전략을 사용할 때는 밴드 상단에서 매매를 하며, 평균회귀 전략을 사용할 때는 밴드 하단에서 매매를 합니다.
볼린저 밴드 매매법을 만든 존 볼린저는 모멘텀 전략을 더 추천했으며, 단타를 하는 투자자들에게 매우 애용되는 지표입니다.
백테스팅
2021.12.11 - [Python] - [Python] finterstellar를 사용하여 Envelope로 주식 매매 시그널 만들기
볼린저 밴드는 envelope과 유사한 면이 많으니 이전 글을 보시면 조금 더 도움이 되실 거에요.
finterstellar는 bollinger() 함수로 이 기능을 제공하고 있습니다.
bollinger(데이터, 기간, 밴드 폭)
요번에는 애플 사의 주식으로 테스트 해보겠습니다.
df = fs.get_price('AAPL', start_date='2021-01-01', end_date='2021-11-30')
fs.bollinger(df, w=20, k=2)
fs.draw_band_chart(df)
오를 때는 밴드 상단을 타고 오르고, 내릴때는 하단을 타고 내리는 모습이 보이네요.
다음으로 매매 시그널을 만들어봐야겠죠?
이번에도 모멘텀 전략과 평균회귀 전략을 모두 사용해 보겠습니다.
먼저, 모멘텀 전략입니다.
fs.band_to_signal(df, buy='A', sell='B')
fs.position(df)
fs.evaluate(df, cost=.0025)
fs.draw_trade_results(df)
그다지 좋은 성과를 얻진 못한 것 같네요. ^^;;
다음으로 평균회귀 전략입니다.
fs.band_to_signal(df, buy='D', sell='B')
fs.position(df)
fs.evaluate(df, cost=.0025)
fs.draw_trade_results(df)
애플같은 경우 올 한해 성장 모멘텀이 있는 주가 추이를 보였지만, 볼린저 밴드를 사용한 매매로는 좋은 성과를 얻지 못했을 것으로 보입니다.
투자 성과분석
모멘텀 전략 | 평균회귀 전략 |
볼린저 밴드만 이용했다면 어떤 전략을 썼더라도 좋은 성과를 거두진 못했을 거 같네요.
합성 전략
한 번 모멘텀투자도 하면서 평균회귀 투자도 하면 어떨까요?
finterstellar는 이런 합성 전략도 손쉽게 할 수 있게 도와줍니다.
df = fs.bollinger(df, w=20, k=2)
df['s1'] = fs.band_to_signal(df, buy='A', sell='B')
df['s2'] = fs.band_to_signal(df, buy='D', sell='B')
fs.combine_signal_or(df, 's1', 's2')
fs.position(df)
fs.evaluate(df, cost=.0025)
fs.performance(df, rf_rate=.01)
fs.draw_band_chart(df)
fs.draw_trade_results(df)
파이썬이 익숙하시면 쉽게 이해하실 수 있을 거에요.
각각의 전략을 s1, s2라는 이름으로 데이터 프레임을 만들어 준 후, combine_signal_or() 함수를 사용하여 합성을 해줄 수 있습니다.
이 경우에는 합쳐도 개선되는 모습을 보이진 못했네요.
맺음말
볼린저 밴드를 사용한 투자 전략은 모멘텀과 평균회귀 전략 모두에 사용할 수 있지만, 모멘텀 전략이 더 추천됩니다.
주로 단타를 하는 투자자들이 애용하는 지표이며, 이전에 소개해드린 지표들과 함께 사용하여 자신만의 좋은 투자법을 만들어나가시길 바래요.
이동평균선을 구하는 기간, 밴드 폭 등을 변경하면서 튜닝도 해보시고요.
'Python' 카테고리의 다른 글
[Python] Pandas Course on Kaggle - 1 (0) | 2022.01.15 |
---|---|
[Python] finterstellar를 사용하여 Stochastic으로 주식 매매 시그널 만들기 (2) | 2021.12.14 |
[Python] finterstellar를 사용하여 Envelope로 주식 매매 시그널 만들기 (0) | 2021.12.11 |
[Python] Getting Started with Kaggle (0) | 2021.12.11 |
[Python] finterstellar를 사용하여 MACD로 주식 매매 시그널 만들기 (0) | 2021.12.10 |
댓글