📌 이번 실습 목표
- 볼린저 밴드와 RSI를 활용한 전략 수립
- 매수/매도 조건을 구현하고 실제로 시뮬레이션
- 누적 수익률 계산 및 시각화
📈 전략 아이디어 수립
이번 실습에서는 다음과 같은 조건으로 매수 전략을 수립합니다.
- 매수 조건: RSI < 30 and 주가 < 볼린저 하단선
- 매도 조건: RSI > 70 or 주가 > 볼린저 상단선
이 조건은 심리적 침체 구간에서 매수하고, 과열 구간에서 매도하는 전략입니다.
🧮 조건 계산 및 매수/매도 시점 구하기
# 매수/매도 조건 계산
buy_signal = (df['RSI'] < 30) & (df['Close'] < df['Lower'])
sell_signal = (df['RSI'] > 70) | (df['Close'] > df['Upper'])
# 포지션 열 생성 (1=보유, 0=미보유)
df['Position'] = 0
position = 0
for i in range(1, len(df)):
if buy_signal.iloc[i] and position == 0:
df.at[df.index[i], 'Position'] = 1
position = 1
elif sell_signal.iloc[i] and position == 1:
df.at[df.index[i], 'Position'] = 0
position = 0
else:
df.at[df.index[i], 'Position'] = df.at[df.index[i-1], 'Position']
💹 수익률 및 누적 수익률 계산
df['Daily Return'] = df['Close'].pct_change()
df['Strategy Return'] = df['Daily Return'] * df['Position']
df['Cumulative Return'] = (1 + df['Strategy Return']).cumprod()
df['Cumulative BuyHold'] = (1 + df['Daily Return']).cumprod()
📊 전략 vs 단순 보유 수익률 비교 시각화
plt.figure(figsize=(14, 6))
plt.plot(df['Cumulative BuyHold'], label='Buy & Hold')
plt.plot(df['Cumulative Return'], label='Strategy (RSI + Bollinger)')
plt.title('전략 백테스트 누적 수익률 비교')
plt.legend()
plt.grid(True)
plt.show()
📌 전략 결과 해석
- Buy & Hold: 단순히 계속 보유했을 경우의 수익률
- Strategy: RSI와 볼린저 조건에 따라 매수/매도한 결과
그래프를 통해 전략이 시장보다 더 좋은 성과를 냈는지, 혹은 손실 회피에 유리했는지를 파악할 수 있습니다.
✅ 오늘의 요약
- 기술적 지표 조합으로 실전 전략 수립 가능
- 조건에 따라 매매 시뮬레이션 → 누적 수익률 분석
- 단순 보유 전략과 비교해 전략의 유효성 검증
'Python' 카테고리의 다른 글
[주식 분석 프로젝트] 6편 – 전략 조건 최적화 실험 (0) | 2025.04.27 |
---|---|
[주식 분석 프로젝트] 5편 – 전략의 종목별 확장 및 비교 (0) | 2025.04.26 |
[주식 분석 프로젝트] 3편 - 기술적 지표 입문 (볼린저 밴드 & RSI) (0) | 2025.04.24 |
[주식 분석 프로젝트] 2편 – 이동평균선과 골든/데드크로스 (0) | 2025.04.23 |
[주식 분석 프로젝트] 1편 – Jupyter Notebook으로 한국/미국 주식 데이터 조회하기 (0) | 2025.04.22 |