기술적 분석 3장: RSI 30 이하면 정말 매수 기회인가?
RSI가 30 이하이면 과매도라고 설명하는 경우가 많습니다. 그러나 강한 하락 추세에서는 RSI가 30 아래에 오래 머물 수 있습니다. 이번에는 RSI가 30 아래로 내려간 사실 자체가 아니라, 30 아래에서 다시 30을 상향 돌파한 날을 신호로 정의했습니다.
RSI 계산과 신호
Section titled “RSI 계산과 신호”change = df.groupby("code")["close"].diff()gain = change.clip(lower=0)loss = -change.clip(upper=0)
avg_gain = gain.groupby(df["code"]).transform(lambda x: x.rolling(14).mean())avg_loss = loss.groupby(df["code"]).transform(lambda x: x.rolling(14).mean())df["rsi14"] = avg_gain / (avg_gain + avg_loss) * 100
df["rsi_recovery"] = ( (df.groupby("code")["rsi14"].shift(1) <= 30) & (df["rsi14"] > 30))df["forward_return_20d"] = ( df.groupby("code")["close"].shift(-20) / df["close"] - 1)검증 구간에서 RSI 회복 신호는 1,258회 발생했습니다.
| 신호 | 발생 횟수 | 20일 양수 비율 | 평균 수익률 | 중앙값 |
|---|---|---|---|---|
| RSI 30 상향 회복 | 1,258회 | 47.1% | +2.14% | -0.91% |
평균 수익률은 양수였지만 중앙값은 -0.91%였습니다. 일부 큰 반등이 평균을 끌어올렸고, 전형적인 신호의 결과는 평균보다 약했습니다.
RSI는 단독 매수 신호라기보다 시장 상태를 설명하는 지표로 쓰는 편이 낫습니다. RSI 회복 신호가 다음 조건과 함께 나타나는지 확인할 필요가 있습니다.
- 종가가 MA20 위에 있는가
- 20일 수익률이 양수인가
- 거래량이 평소보다 증가했는가
- 산업 전체가 같은 방향으로 움직이는가
RSI 30이라는 숫자만 보고 매수하면 하락 추세 중간의 일시적 반등을 잡을 가능성이 큽니다. 평균회귀 전략은 특히 손절 기준과 보유 기간을 함께 정해야 합니다.
전체 결과는 신호별 결과 CSV, 계산 코드는 technical_analysis.py에서 확인할 수 있습니다.