RSI 30 이하(과매도)에서 사면 무조건 반등할까? 코스피 전 종목 2015~2025 데이터로 검토

파란색 레일 위에서 빨간 구슬이 굴러가고 아래에서 파란 구슬이 떨어지는 모습을 표현

핵심 요약: “RSI 30 이하면 과매도이니 매수하라”는 말은 널리 퍼져 있지만, 코스피 전 종목 데이터를 보면 ‘무조건 반등’과는 거리가 있습니다. RSI 30 하향 돌파(전통적 과매도 매수)는 5일 평균 +0.32%(승률 52.78%), 20일 평균 +1.39%(승률 52.87%)로 ‘약한 확률 우위’ 수준이었습니다. 반면 RSI 30 상향 돌파(회복 확인 후 진입)는 5일 평균 +0.90%, 20일 평균 +2.26%로 더 높은 성과를 보였습니다. 결론적으로 RSI는 “저점 예측”이 아니라 “확률을 약간 기울이는 보조 신호”이며, 국면 필터와 함께 사용할 때 의미가 커집니다.


RSI 30이면 저점이라는 말, 정말 맞을까요?

유튜브나 투자 서적을 보면 “RSI 30 이하는 과매도 구간이니 매수하라”는 말이 거의 공식처럼 등장합니다. 마치 30을 찍는 순간 반등이 예약된 것처럼 들리기도 합니다. 하지만 시장에서 ‘공식처럼 들리는 문장’이 실제로도 통한다면, 누구나 쉽게 이길 수 있어야 합니다. 그래서 이 글은 감으로 판단하지 않고, 코스피 전 종목을 대상으로 2015~2025년 구간에서 RSI 신호를 전수 검증한 결과를 정리합니다.


분석 규칙

  • 대상: symbol.category='STOCK' AND symbol.exchange='KOSPI' 종목
  • 기간: 2015-01-01 ~ 2025-12-31
  • 가격: daily_price.close (동일 date 중복은 created_date DESC 1건만 사용)
  • RSI: RSI(14), Wilder 방식, 종가 기준
  • 신호(돌파 기준):
    • RSI30_DOWN: 전일 RSI ≥ 30 이고 당일 RSI < 30
    • RSI30_UP: 전일 RSI ≤ 30 이고 당일 RSI > 30
    • RSI70_UP: 전일 RSI ≤ 70 이고 당일 RSI > 70
  • 수익률: 신호 발생일 종가 대비 +5거래일, +20거래일 종가 수익률
  • 국면: 200일 이동평균(종가) 위=UP, 아래=DOWN

1) 전체 결과: “무조건 반등”은 데이터로 지지되지 않습니다

신호 이벤트 수(n) 5일 평균 5일 중앙값 5일 승률 20일 평균 20일 중앙값 20일 승률
RSI30_DOWN (과매도 진입) 33,055 +0.32% +0.39% 52.78% +1.39% +0.68% 52.87%
RSI30_UP (회복 확인) 33,317 +0.90% +0.41% 52.99% +2.26% +0.86% 54.07%
RSI70_UP (추세 추종) 33,540 +0.42% -0.70% 43.76% +1.27% -1.57% 43.51%

핵심 해석: RSI30_DOWN의 평균 수익률은 양수이고 승률이 50%를 약간 상회하므로 “단기 반등 확률은 있다”고 말할 수 있습니다. 그러나 승률이 70% 이상처럼 압도적이지 않고, 평균도 크지 않습니다. 즉, RSI 30을 “저점 확정 버튼”으로 쓰는 것은 위험합니다.

반대로 RSI30_UP(회복 확인)은 5일·20일 모두 평균이 더 높고, 20일 승률도 54.07%로 상승합니다. 바닥을 ‘맞추는 것’보다 반등을 ‘확인하고 들어가는 것’이 더 안정적일 수 있다는 결론이 데이터로 지지됩니다.

RSI70_UP은 평균 수익률이 플러스이지만, 5일·20일 승률이 43%대이며 중앙값이 음수입니다. 이는 “비싸 보여도 더 오르는 구간”은 존재하지만, 손실 구간도 빈번해 단독 규칙으로 쓰기 어렵다는 의미입니다.


2) 국면 분리: RSI는 단독 신호가 아니라 “환경 의존적”입니다

RSI는 시장이 어떤 상태인지에 따라 신호의 의미가 달라질 수 있습니다. 그래서 200일 이동평균 기준으로 상승 국면(UP)과 하락 국면(DOWN)으로 나눠 같은 신호를 비교했습니다.

신호 국면 이벤트 수(n) 5일 평균 5일 승률 20일 평균 20일 승률
RSI30_DOWN DOWN 31,052 +0.27% 52.59% +1.35% 52.79%
UP 2,003 +0.99% 55.72% +1.98% 54.17%
RSI30_UP DOWN 30,951 +0.91% 53.16% +2.30% 54.34%
UP 2,366 +0.69% 50.80% +1.79% 50.55%
RSI70_UP DOWN 8,408 +0.66% 44.72% +1.98% 45.41%
UP 25,132 +0.34% 43.44% +1.03% 42.87%

관찰 1: RSI30_DOWN은 상승 국면(UP)에서 5일 평균 +0.99%(승률 55.72%)로 더 강했습니다. 즉, RSI30은 ‘무조건 바닥’이 아니라 상승 추세 속 과매도에서 더 잘 작동하는 경향이 확인됩니다.

관찰 2: RSI30_UP은 하락 국면(DOWN)에서 20일 평균 +2.30%(승률 54.34%)로 더 유리했습니다. 하락 추세에서는 “과매도 진입”보다 회복 확인이 더 의미가 있을 수 있습니다.

관찰 3: RSI70_UP은 국면과 무관하게 승률이 낮습니다. 평균이 플러스여도, 승률/중앙값 관점에서는 불안정합니다.


3) 숫자 뒤에 숨은 리스크: 평균은 플러스였지만, 고통도 있었을 가능성이 큽니다

RSI30_DOWN의 20일 평균 수익률은 +1.39%였습니다. 하지만 평균만 보면 실제 체감 난이도가 가려질 수 있습니다. RSI 30을 하향 돌파한 뒤 곧바로 반등하는 종목도 있지만, RSI 20, 심지어 RSI 10까지 추가로 밀리는 구간도 존재합니다. 즉, “평균은 플러스”여도 중간에 큰 추가 하락을 겪은 뒤 회복한 사례가 포함되어 있을 수 있습니다.

따라서 RSI30 전략은 단독 신호로 ‘몰빵 진입’하기보다, 분할 진입 또는 국면 필터와 결합해 리스크를 관리하는 접근이 필요합니다.


4) 종목 단위로도 통할까: ‘전 종목 마법 공식’은 아닙니다

이벤트 단위 결과만 보면 “평균 플러스니까 된다”라고 착각할 수 있습니다. 그래서 종목 단위로도 승패를 확인했습니다. 아래는 RSI30_DOWN 기준입니다.

구분 총 종목 수 승리 종목 수(평균수익 > 0) 패배 종목 수(평균수익 ≤ 0)
RSI30_DOWN 이후 5일 935 547 388
RSI30_DOWN 이후 20일 935 636 299

20일 기준으로는 935개 종목 중 636개(약 68%)가 평균적으로 양(+)의 수익을 기록했습니다. 그러나 299개(약 32%)는 평균적으로 음(0이하)이었습니다. 즉, RSI30은 “모든 종목에 통하는 마법 공식”이 아니라, 종목·국면·변동성에 따라 결과가 갈리는 확률적 신호입니다.

5) 대형주 vs 소형주: 결과가 달라질 가능성

이번 분석은 코스피 전 종목을 동일 기준으로 집계한 결과입니다. 다만 일반적으로 역추세 전략은 펀더멘털이 비교적 견고한 대형주에서 더 안정적으로 작동하는 경향이 있습니다. 반면 소형주는 RSI 30을 찍고도 추가 급락하거나, 유동성 부족으로 반등이 지연되는 경우가 존재합니다. 따라서 실전 적용에서는 시가총액이나 재무 안정성 필터를 추가하는 것이 전략의 안정성을 높일 수 있습니다.


6) “반대로 한다면?” 데이터가 제시하는 현실적인 사용법

RSI를 “저점 맞추기 도구”로 쓰면 실전에서 흔히 무너집니다. 이번 결과를 행동 지침으로 바꾸면 다음처럼 정리됩니다.

  • ① 떨어질 때 받지 말 것: RSI 30 하향 돌파는 반등 확률이 있더라도 우위가 크지 않습니다(5일 승률 52.78%).
  • ② 회복을 확인할 것: RSI가 30을 다시 상향 돌파한 뒤 진입(RSI30_UP)은 평균 수익률이 더 높았습니다(20일 평균 +2.26%).
  • ③ 국면 필터를 함께 둘 것: RSI30_DOWN은 상승 국면(UP)에서 성과가 더 높았습니다(5일 평균 +0.99%).
  • ④ RSI70은 단독 신호로 조심: 평균이 플러스여도 승률/중앙값이 약해 단독 사용은 위험할 수 있습니다.

그래서 RSI는 언제 쓰는 게 최적인가?

데이터상 RSI는 “하락장에서 무조건 바닥을 맞추는 도구”가 아니었습니다. 오히려 다음 조건에서 상대적으로 효율적이었습니다.

  • ① 상승 추세 내 조정 구간: 200일 이동평균 위에서 RSI 30이 형성될 때(RSI30_DOWN이 더 유리하게 나타남).
  • ② 하락장에서는 ‘회복 확인’ 우선: 하락 국면에서는 RSI30_UP(상향 돌파)이 평균적으로 더 나은 결과를 보였습니다.
  • ③ 단독 사용 지양: 추세(200MA), 유동성(거래량), 리스크 관리(분할/손절)와 함께 사용할 때 전략의 체감 난이도가 낮아집니다.

결국 RSI는 “저점 예측 지표”가 아니라, 과열·과매도 상태에 근접했는지를 알려주는 확률적 도구에 가깝습니다.

RSI는 저점을 맞추는 도구일까요, 아니면 변동성 구간을 알려주는 경고등일까요?

계산 로직 일부 공개

본 분석은 아래와 같은 방식으로 RSI와 이벤트를 정의했습니다. 계산식은 공유드리니 나중에 한번 사용해보시는 것도 추천 드립니다.

RSI(14) 계산

										
def compute_rsi(series, period=14):
    delta = series.diff()
    gain = delta.clip(lower=0)
    loss = -delta.clip(upper=0)

    avg_gain = gain.ewm(alpha=1/period, adjust=False).mean()
    avg_loss = loss.ewm(alpha=1/period, adjust=False).mean()

    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

									

이벤트(돌파) 정의

										
df["rsi"] = compute_rsi(df["close"], 14)

df["rsi30_down"] = (df["rsi"].shift(1) >= 30) & (df["rsi"] < 30)
df["rsi30_up"]   = (df["rsi"].shift(1) <= 30) & (df["rsi"] > 30)
df["rsi70_up"]   = (df["rsi"].shift(1) <= 70) & (df["rsi"] > 70)
										
										
									

수익률 측정(거래일 기준)

										
df["ret_5d"]  = df["close"].shift(-5)  / df["close"] - 1
df["ret_20d"] = df["close"].shift(-20) / df["close"] - 1

									

결론: RSI는 ‘확률 신호’이며, 국면과 결합할 때 의미가 커집니다

데이터가 말하는 결론은 단순합니다. RSI30_DOWN은 단기 반등 확률이 존재하지만, 우위가 크지 않아 “무조건 반등”이라는 믿음은 위험합니다. 반면 RSI30_UP(회복 확인)은 평균적으로 더 나은 성과를 보였습니다. 또한 200일 이동평균 국면에 따라 같은 RSI 신호의 의미가 달라지므로, RSI는 단독 규칙이 아니라 국면 필터와 함께 사용하는 편이 현실적입니다.

한계

과거 상장폐지 된 주식들은 종목명을 찾기 힘들어 2월 18일 기준 코스피 상장사 대상만으로 분석을 진행했습니다.


본 글은 공개된 자료와 개인적 해석을 바탕으로 작성된 정보 제공 목적의 콘텐츠입니다.
특정 종목에 대한 매수·매도 권유나 투자 자문을 의미하지 않습니다.
모든 투자 판단과 그에 따른 책임은 독자 본인에게 있습니다.

이 블로그의 인기 게시물

SK하이닉스의 실적 성장과 HBM, 그리고 AI 메모리 시장의 변화

주식 투자 멘탈 관리 (타이밍, 위험관리, 장기투자)

돈의 흐름 읽기 (거시경제, 시장분석, 리스크관리)