RSI (Relative Strength Index) 매매전략

개념

RSI(상대강도지수)는 기술적 분석에서 자주 사용되는 지표로, J. 웰스 와일더(J. Welles Wilder Jr.)가 1978년에 개발했다. 이 지표는 주가의 최근 가격 변동 폭을 기반으로 하여, 시장의 과매수/과매도 상태를 판단하는 데 사용된다.

RSI는 0에서 100 사이의 값으로 표현되며, 일반적으로 70 이상이면 과매수 구간, 30 이하이면 과매도 구간으로 해석한다. 수식은 다음과 같다:

RSI = 100 - (100 / (1 + RS))
RS = 평균 상승폭 / 평균 하락폭

여기서 RS(상대강도)는 일정 기간 동안의 주가 상승폭과 하락폭의 평균값 비율을 의미한다. 웰스 와일더는 14일간의 기간을 사용할 것을 제안했다.

RSI의 핵심 아이디어는 주가가 지속적으로 상승하면 RSI 값이 높아져 과매수 구간에 진입하고, 주가가 지속적으로 하락하면 RSI 값이 낮아져 과매도 구간에 진입한다는 점이다. 이를 활용하여 시장의 반전 시점을 예측하고 매매 시그널을 생성할 수 있다.

매매전략

RSI 지표를 활용한 대표적인 매매전략은 다음과 같다.

  1. 과매수 구간 진입 시 매도: RSI 값이 70 이상으로 상승하면 과매수 구간에 진입한 것으로 판단하여 매도한다.
  2. 과매도 구간 진입 시 매수: RSI 값이 30 이하로 하락하면 과매도 구간에 진입한 것으로 보고 매수한다.
  3. RSI 수렴/발산 활용: RSI 값이 주가 추세와 발산할 경우 반전 시그널로 판단하여 매매한다.

파이썬 코드 예시

아래는 야후파이낸스에서 VOO ETF 데이터를 가져와 RSI 지표와 매매전략을 파이썬으로 구현한 예시 코드이다.

import yfinance as yf
import pandas as pd

def rsi(df, window=14):
    delta = df['Close'].diff()
    up, down = delta.clip(lower=0), -1 * delta.clip(upper=0)
    ema_up = up.ewm(com=window - 1, adjust=False).mean()
    ema_down = down.ewm(com=window - 1, adjust=False).mean()
    rs = ema_up / ema_down
    return 100 - (100 / (1 + rs))

def rsi_strategy(df, rsi_series):
    buy_signals = (rsi_series.shift(1) < 30) & (rsi_series > 30)
    sell_signals = (rsi_series.shift(1) > 70) & (rsi_series < 70)
    
    df['Signal'] = 0.0
    df['Signal'][buy_signals] = 1.0
    df['Signal'][sell_signals] = -1.0
    
    return df

# 데이터 로드
voo = yf.Ticker("VOO")
data = voo.history(period="max")

# RSI 계산
data['RSI'] = rsi(data)

# 매매 시그널 생성
trading_signals = rsi_strategy(data, data['RSI'])

# 백테스트
trading_signals['Returns'] = trading_signals['Signal'].shift(1) * data['Close'].pct_change()
trading_signals['Strategy'] = trading_signals['Returns'].cumsum().apply(np.exp)
trading_signals['Buy_and_Hold'] = data['Close'] / data['Close'].iloc[0]

# 결과 시각화
trading_signals[['Strategy', 'Buy_and_Hold']].plot()

이 코드에서는 먼저 yfinance 라이브러리를 사용하여 VOO ETF의 역사적 데이터를 불러온다. 그 후 rsi 함수를 통해 RSI 값을 계산하고, rsi_strategy 함수에서 구매 신호와 판매 신호를 생성한다.

매매 시그널을 활용하여 백테스트를 수행한다. 각 거래일의 수익률을 계산하고, 전략 수익률과 Buy & Hold 수익률을 비교할 수 있다. 마지막으로 결과를 시각화한다.

이 코드를 통해 RSI 매매전략의 성과를 평가하고, 실제 거래에 적용할 수 있다.

Leave a Reply

error: Content is protected !!