개요
Relative Strength Index (RSI, 상대강도지수)는 1978년 J. Welles Wilder Jr.가 저서 New Concepts in Technical Trading Systems에서 발표한 모멘텀 오실레이터다1. RSI는 0에서 100 사이의 값을 가지며, 특정 기간 동안 상승폭과 하락폭의 상대적 크기를 비교하여 현재 가격 움직임의 강도(strength)와 속도(velocity)를 측정한다.
핵심 아이디어: RSI는 "가격이 얼마나 올랐는가"가 아니라, "최근 상승과 하락 중 어느 쪽이 더 우세한가"를 측정한다.
창시자
Wilder(1935~2021)는 North Carolina State University에서 기계공학을 전공한 엔지니어 출신이다. 노스캐롤라이나주 Greensboro에서 부동산 개발 사업을 하다가 트레이딩에 전향했으며, Trend Research LTD를 설립하여 기술적 분석을 체계화했다. Forbes지(1980년 10월호)는 그를 "오늘날 가장 뛰어난 기술적 트레이딩 저술가"로 평가했다. 기계공학적 배경은 가격 데이터에 대한 수학적·체계적 접근법의 기반이 되었으며, RSI 외에도 ATR(Average True Range), Parabolic SAR, ADX(Average Directional Index) 등 현재까지 널리 사용되는 지표들을 같은 저서에서 동시에 발표했다1.
개발 동기와 시대적 맥락
1970년대 선물(commodity) 시장에서 트레이더들은 가격 움직임의 강도와 속도를 객관적으로 측정할 도구가 부족했다. 닉슨 쇼크(1971년 금본위제 폐지), 오일쇼크(1973, 1979)로 원자재 시장 변동성이 극대화된 시기였다. 기존 모멘텀 지표들은 종목이나 자산마다 절대값이 달라 비교가 어려웠다. Wilder는 모든 상품과 주식을 하나의 0~100 스케일로 통일하는 최초의 모멘텀 오실레이터를 만들고자 했다.
1978년 당시 개인 컴퓨터가 보급되지 않아, Wilder는 수작업 계산을 전제로 공식을 설계했다. 저서에 계산 워크시트를 포함하여 트레이더가 직접 계산할 수 있게 한 것이 특징적이다. Charles Dow의 이론(1900년대 초) 이후, 기술적 분석이 수학적 지표로 구체화되는 전환기에 RSI가 등장한 것이다.
수학적 정의
기본 공식
RSI는 두 단계로 정의된다. 먼저 RS(Relative Strength)를 구한 뒤, 이를 0~100 스케일로 정규화한다1.
여기서 은 기간의 평균 상승폭(Average Gain), 은 기간의 평균 하락폭(Average Loss), 은 룩백 기간(Wilder 기본값: 14)이다.
이 공식은 동치 변환하면 다음과 같다:
이 형태가 RSI의 본질을 더 직관적으로 드러낸다: 전체 움직임(상승 + 하락) 중 상승이 차지하는 비율(%).
변수 정의
각 기간 에서 종가(Close Price) 의 변화량:
이 변화량을 상승폭(Gain)과 하락폭(Loss)으로 분리한다:
는 항상 양수로 취급한다. 하락 -3%이면 이다. 이렇게 해야 RS가 항상 이 되고, RSI가 0~100 범위를 유지한다.
SMMA (Smoothed Moving Average)
Wilder는 평균 상승폭/하락폭 계산에 단순이동평균(SMA)이 아닌 자신만의 평활법을 사용했다1.
초기값 (최초 기간):
이후 값 (재귀적 평활):
이 재귀 공식을 EMA 형태로 다시 쓰면:
즉, Wilder의 SMMA는 평활 계수 인 EMA와 수학적으로 동일하다2. 일반적인 EMA의 과 다르며, Wilder의 방식이 더 느리게 반응한다.
| 평활법 | 평활 계수 () | 일 때 | 동등 EMA 기간 |
|---|---|---|---|
| Wilder SMMA | 0.0714 | 27 () | |
| 표준 EMA | 0.1333 | 14 |
따라서 RSI(14)의 Wilder SMMA는 사실상 27일 EMA와 같은 반응 속도를 가진다. 이 점은 RSI의 "느린" 반응 특성을 이해하는 데 중요하다.
단계별 계산 예시
14일간의 종가 데이터로 RSI를 계산하는 전체 과정을 보인다.
| 일자 | 종가 | 변화량 () | Gain () | Loss () |
|---|---|---|---|---|
| 1 | 44.34 | -- | -- | -- |
| 2 | 44.09 | -0.25 | 0 | 0.25 |
| 3 | 43.61 | -0.48 | 0 | 0.48 |
| 4 | 44.33 | +0.72 | 0.72 | 0 |
| 5 | 44.83 | +0.50 | 0.50 | 0 |
| 6 | 45.10 | +0.27 | 0.27 | 0 |
| 7 | 45.42 | +0.32 | 0.32 | 0 |
| 8 | 45.84 | +0.42 | 0.42 | 0 |
| 9 | 46.08 | +0.24 | 0.24 | 0 |
| 10 | 45.89 | -0.19 | 0 | 0.19 |
| 11 | 46.03 | +0.14 | 0.14 | 0 |
| 12 | 45.61 | -0.42 | 0 | 0.42 |
| 13 | 46.28 | +0.67 | 0.67 | 0 |
| 14 | 46.28 | 0.00 | 0 | 0 |
| 15 | 46.00 | -0.28 | 0 | 0.28 |
Step 1: 14개의 변화량(일자 2~15)에서 Gain과 Loss를 분리한다. 변화량이 0이면 양쪽 모두 0이다.
Step 2 (초기 평균, SMA):
Step 3 (초기 RS와 RSI):
Step 4 (SMMA 평활): 일자 16의 종가가 46.03이면, , :
SMMA의 효과: 새 데이터(0.03)가 작음에도, 이전 평균의 가중이 크기 때문에 RSI가 66.93에서 67.38로 소폭만 변동한다. 이것이 Wilder가 의도한 "안정적인 신호"다.
비유적 설명: 줄다리기
RSI를 줄다리기 경기로 이해할 수 있다. 상승 팀(Bulls)과 하락 팀(Bears)이 매일 한 라운드씩 진행하고, 이긴 팀이 승리 폭만큼 밧줄을 당긴다. RS는 "최근 14라운드에서, 상승 팀이 당긴 평균 거리 / 하락 팀이 당긴 평균 거리"이며, RSI는 이 힘의 비율을 0~100점 채점표로 변환한 것이다.
| 상황 | RS | RSI | 해석 |
|---|---|---|---|
| 상승 팀 완전 독주 | 100 | 하락이 전혀 없음 | |
| 상승 팀 2배 우세 | 2.0 | 66.7 | 상승이 2배 더 강함 |
| 균형 | 1.0 | 50.0 | 양 팀 힘이 같음 |
| 하락 팀 2배 우세 | 0.5 | 33.3 | 하락이 2배 더 강함 |
| 하락 팀 완전 독주 | 0 | 0 | 상승이 전혀 없음 |
특수 케이스 (경계값)
- (전체 상승): , . 구현 시 나누기 오류를 피해 직접 100을 반환해야 한다.
- (전체 하락): , .
- 양쪽 모두 0 (변동 없음): 은 수학적으로 미정(undefined). 실무적으로 시장에 방향성이 없으므로 RSI = 50(균형)으로 처리하는 것이 관례다.
- 데이터 부족 (데이터 수 < ): 초기 SMA를 계산할 수 없으므로 RSI를 산출하지 않는다(null/NaN 반환).
파라미터
기본값: 14기간
Wilder는 14일을 기본값으로 제안했다1. 널리 받아들여지는 근거는 다음과 같다:
- 반주기(Half-Cycle) 원칙: 오실레이터 설계에서 "분석하려는 사이클의 절반 기간을 사용한다"는 원칙이 있다. Wilder는 약 28일의 음력 주기(lunar cycle)를 시장의 자연적 사이클로 보고, 그 절반인 14일을 채택했다.
- 실용적 이유: 당시 달력일 기준 14일은 약 10 거래일(2주)에 해당하며, 수작업 계산에 적합한 단위였다.
Kirkpatrick & Dahlquist는 "기간 선택은 분석 대상의 사이클 주기와 연관되어야 한다"고 강조한다3.
기간 변경의 수학적 효과
기간 을 줄이면 SMMA의 평활 계수 이 커져 최신 데이터에 더 민감해진다:
| 기간 () | 동등 EMA 기간 () | 반응 속도 | 노이즈 | |
|---|---|---|---|---|
| 5 | 0.200 | 9 | 매우 빠름 | 매우 높음 |
| 9 | 0.111 | 17 | 빠름 | 높음 |
| 14 | 0.071 | 27 | 중간 | 중간 |
| 21 | 0.048 | 41 | 느림 | 낮음 |
| 28 | 0.036 | 55 | 매우 느림 | 매우 낮음 |
타임프레임별 권장값
| 시장 | 특성 | 권장 조정 |
|---|---|---|
| 전통 주식 (일봉) | 주 5일 거래, 비교적 낮은 변동성 | 14 (표준) |
| 외환 (일봉) | 주 5일 24시간, 중간 변동성 | 14 (표준) |
| 암호화폐 (일봉) | 주 7일 24시간, 높은 변동성 | 10~14 (축소 검토) |
| 암호화폐 (4H/1H) | 연속 시장, 극도로 높은 변동성 | 14 유지 또는 21로 확대 |
암호화폐 24시간 시장 고려사항
암호화폐는 전통 시장과 근본적으로 다른 특성을 가진다:
- 주 7일 거래: 전통 시장의 14 달력일 = 10 거래일이지만, 암호화폐의 14 달력일 = 14 거래일. 동일한 기간 파라미터가 더 많은 데이터를 포함한다.
- 높은 변동성: 일일 변동폭이 전통 자산 대비 크므로, 표준 30/70 임계값이 빈번하게 접촉될 수 있다. Constance Brown의 추세별 범위 조정(상승: 40
80, 하락: 2060)이 더 유용할 수 있다4. - 실증 연구 결과: Zatwarnicki et al.(2023)의 연구에서 전통적 RSI 해석(과매수/과매도)은 암호화폐에서 비효과적이었고, RSI 50
100 범위를 활용한 추세 감지 전략이 우수했다(수정 전략 773.65% vs 매수후보유 275.22%, 20182022)5.
해석 방법
원저자 정의 (Wilder, 1978)
과매수/과매도
Wilder의 원래 정의1:
- RSI > 70: 과매수(Overbought) 영역
- RSI < 30: 과매도(Oversold) 영역
Wilder는 과매수 상태가 강한 상승 추세를 의미할 수도 있다고 명시했다. 과매수 = 즉시 매도가 아니다. RSI는 현재 상태의 진단이지 방향 예측이 아니다.
다이버전스
Wilder가 RSI의 "가장 특징적인(most indicative)" 신호로 설명한 패턴이다1.
Bearish Divergence (하락 다이버전스): 가격은 고점을 높이지만(Higher High), RSI는 고점을 낮추는(Lower High) 패턴. 상승 모멘텀이 약화되고 있음을 경고한다.
Bullish Divergence (상승 다이버전스): 가격은 저점을 낮추지만(Lower Low), RSI는 저점을 높이는(Higher Low) 패턴. 하락 모멘텀이 약화되고 있음을 경고한다.
다이버전스는 단독 신호가 아니라 경고(warning)로 해석해야 한다. Wilder 자신도 다이버전스 발생 후 실제 반전까지 상당한 시차가 있을 수 있다고 인정했다.
Failure Swing
Wilder가 다이버전스보다 더 신뢰할 수 있다고 강조한 패턴이다1. 가격 차트가 아닌 RSI 자체의 패턴만으로 판단한다는 점이 핵심이다.
Bullish Failure Swing:
- RSI가 30 아래로 하락
- RSI가 반등하여 중간 고점(fail point) 형성
- RSI가 다시 하락하지만 30 아래로 내려가지 않음
- RSI가 이전 중간 고점을 돌파 → 매수 신호
Bearish Failure Swing:
- RSI가 70 위로 상승
- RSI가 하락하여 중간 저점(fail point) 형성
- RSI가 다시 상승하지만 70 위로 올라가지 않음
- RSI가 이전 중간 저점을 하향 돌파 → 매도 신호
Failure Swing의 강점: 가격 차트와의 비교가 필요 없이 RSI 단독으로 판단 가능하며, Wilder는 이를 "매우 강한 반전 지표(very strong indication of a market reversal)"로 평가했다.
후속 발전 1: Constance Brown의 Range Shift (1999)
Brown은 Technical Analysis for the Trading Professional에서 Wilder의 고정 30/70 수준에 근본적 의문을 제기했다4.
핵심 주장: RSI의 작동 범위는 추세에 따라 이동한다.
| 시장 상태 | RSI 작동 범위 | 지지 | 저항 |
|---|---|---|---|
| 상승 추세 | 40~80 | 40~50 | 70~80 |
| 하락 추세 | 20~60 | 20~30 | 50~60 |
실무적 의미:
- 상승 추세에서 RSI가 40~50까지 하락하면 이것이 사실상 "과매도" 수준이다. 30까지 기다리면 기회를 놓친다.
- 하락 추세에서 RSI가 50~60까지 상승하면 이것이 사실상 "과매수" 수준이다. 70까지 기다리면 이미 추세가 전환된 것이다.
- 추세 전환 시 RSI의 작동 범위 자체가 이동하는 것이 추세 변화의 초기 신호가 될 수 있다.
Brown은 이 이론을 RSI 범위 규칙(Range Rules)으로 체계화했으며, CMT(Chartered Market Technician) 필독서에 포함되었다.
후속 발전 2: Andrew Cardwell의 Positive/Negative Reversal
Cardwell은 1981년부터 RSI를 전문적으로 연구하여, 기존 다이버전스 해석과 정반대의 패턴을 발견했다. John Bollinger가 FNN 방송에서 그를 "Dr. RSI"로 소개했을 정도로 RSI 권위자로 인정받는다. Cardwell은 Constance Brown의 RSI 멘토이기도 하다.
Positive Reversal (양의 반전) -- 상승 추세 전용:
- 가격: Higher Low (저점 상승), RSI: Lower Low (저점 하락)
- 기존 다이버전스 이론에서는 "약세 신호"로 읽지만, Cardwell은 상승 추세에서 이 패턴이 추세 지속 신호라고 재해석
Negative Reversal (음의 반전) -- 하락 추세 전용:
- 가격: Lower High (고점 하락), RSI: Higher High (고점 상승)
- 기존 다이버전스 이론에서는 "강세 신호"로 읽지만, Cardwell은 하락 추세에서 이 패턴이 추세 지속 신호라고 재해석
Wilder와의 핵심 차이: Wilder는 RSI를 주로 추세 반전 신호로 사용했으나, Cardwell은 RSI를 추세 확인 및 가격 목표 산출 도구로 재정의했다. 같은 RSI 패턴을 보면서 정반대 결론을 내릴 수 있으므로, 어떤 프레임워크를 사용하는지 명확히 해야 한다.
신호 유형 분류 요약
| 신호 유형 | 조건 | 방향 | 신뢰도 | 출처 |
|---|---|---|---|---|
| 과매도 반등 | RSI < 30 → 30 상향 돌파 | 매수 | 보통 | Wilder (1978) |
| 과매수 하락 | RSI > 70 → 70 하향 돌파 | 매도 | 보통 | Wilder (1978) |
| Bullish Failure Swing | 30 하회 후 fail point 돌파 | 매수 | 높음 | Wilder (1978) |
| Bearish Failure Swing | 70 상회 후 fail point 이탈 | 매도 | 높음 | Wilder (1978) |
| Bullish Divergence | 가격 LL + RSI HL | 매수 | 보통~높음 | Wilder (1978) |
| Bearish Divergence | 가격 HH + RSI LH | 매도 | 보통~높음 | Wilder (1978) |
| Range Shift 지지 | 상승 추세에서 RSI 40~50 반등 | 매수 | 높음 | Brown (1999) |
| Range Shift 저항 | 하락 추세에서 RSI 50~60 저항 | 매도 | 높음 | Brown (1999) |
| Positive Reversal | 상승 추세 + 가격 HL + RSI LL | 매수 | 높음 | Cardwell |
| Negative Reversal | 하락 추세 + 가격 LH + RSI HH | 매도 | 높음 | Cardwell |
실용적 활용
매매 전략
보수적 진입 (Wilder 원전 기반):
- Failure Swing 완성 확인 (fail point 돌파/이탈 시점)
- 다이버전스와 Failure Swing이 동시에 발생하면 신호 강도 상승
- 50선 돌파/이탈을 추세 방향 확인 보조 신호로 활용
추세 추종 진입 (Brown/Cardwell 기반):
- 먼저 추세 방향을 판단 (상승/하락)
- 상승 추세: RSI가 40~50 범위로 눌림 후 반등 시 진입
- 하락 추세: RSI가 50~60 범위로 반등 후 하락 시 진입
청산 조건:
- 사전 설정된 목표 수익률 도달
- 진입과 반대 방향의 Failure Swing 또는 다이버전스 발생
- 추세 추종 포지션에서 RSI가 50선을 반대 방향으로 돌파 시 추세 약화 경고
- 상승 추세에서 RSI가 40 이하로 하락 시 추세 전환 가능성
다른 지표와의 조합
RSI + 거래량 (Volume): RSI는 가격 변동의 크기만 측정하고 거래량을 무시한다. RSI가 과매수/과매도에서 반전 신호를 보일 때 거래량 증가가 동반되면 신호 신뢰도가 상승한다. 반대로 RSI가 과매수이지만 거래량이 계속 증가하면 강한 추세 지속의 근거가 된다.
RSI + 이동평균 (MA): 가격이 장기 이동평균(예: 200 MA) 위에 있을 때만 RSI 매수 신호를 취하고, 아래에 있을 때만 매도 신호를 취한다. 이동평균이 추세의 큰 그림을 제공하고, RSI가 그 추세 안에서 진입 타이밍을 잡는다.
RSI + 볼린저 밴드 (Bollinger Bands): 가격이 밴드 하단을 터치하면서 동시에 RSI < 30이면 강한 과매도 신호다. 서로 다른 수학적 기반(표준편차 vs 상승/하락 비율)에서 같은 결론이 나오면 확신도가 높아진다.
조합 시 주의사항: 유사한 원리의 지표를 중복 사용하는 것은 "이중 확인"이 아니라 "동어반복"이다. RSI와 Stochastic Oscillator를 함께 사용하는 것은 권장되지 않는다. 둘 다 모멘텀 오실레이터로, 거의 같은 정보를 약간 다른 방식으로 표현할 뿐이다. 조합의 가치는 서로 다른 차원의 정보를 결합할 때 발생한다.
암호화폐 시장 적용
파라미터 조정 가이드:
| 타임프레임 | 권장 RSI 기간 | 과매수/과매도 수준 | 비고 |
|---|---|---|---|
| 1시간 (1H) | 14 | 80/20 | 높은 변동성 반영, 극단값 확대 |
| 4시간 (4H) | 14 | 75/25 | 스윙 트레이딩 표준 |
| 일봉 (1D) | 14 | 70/30 | Wilder 원래 설정 적용 가능 |
| 주봉 (1W) | 14 | 70/30 | 장기 추세 분석 |
Zatwarnicki et al.(2023)의 연구는 암호화폐 시장에서 RSI를 "반전 신호"보다 "추세 확인 도구"로 사용하는 것이 더 효과적임을 시사한다5. 이는 Cardwell의 관점과 일맥상통한다.
학술적 검증
실증 연구 결과
Wong, Manzur & Chew (2003) -- 싱가포르 주식 시장6:
- RSI(14)의 표준 30/70 전략을 테스트하여 거래 비용 차감 후에도 양의 초과 수익을 관찰했다.
- 이동평균(MA)과 RSI 모두 시장 진입/이탈 타이밍에 유의미한 역할을 수행했다.
- 약형 효율적 시장 가설에 대한 반례로, 개발도상 금융 시장에서 기술적 분석의 수익성을 입증한 초기 연구다.
Chong, Ng & Liew (2014) -- OECD 5개국 주식 시장7:
- MACD(12,26,0)와 RSI(21,50) 규칙을 다국가 비교 분석했다.
- RSI(21,50) 규칙이 밀라노 Comit General 등 일부 시장에서 유의미한 초과 수익을 생성했으나, 모든 시장에서 일관된 수익성을 보이지는 않았다.
- 표준 파라미터(14,30/70)가 아닌 대안 파라미터(21,50)의 유효성을 확인했다.
Zatwarnicki, Zatwarnicki & Stolarski (2023) -- 암호화폐 시장5:
- 10개 암호화폐 대상, 2018~2022년 일봉 데이터로 백테스트했다.
- 전통적 RSI 해석(과매수/과매도, 다이버전스)은 수익성 있는 암호화폐에서 비효과적이었다.
- RSI 50
100 범위를 활용한 추세 감지 전략이 표준 접근법보다 우수했다: 수정 전략 포트폴리오 수익률 773.65% vs 매수후보유 275.22% (20182022). - 2022~2023 사후 검증(out-of-sample)에서도 하락장 회복력을 확인했다.
유효성 요약
| 조건 | RSI 유효성 | 근거 |
|---|---|---|
| 개발도상/신흥 시장 | 상대적으로 높음 | 정보 비대칭이 큰 시장에서 예측력 상승6 |
| 파라미터 최적화 적용 시 | 높음 | 표준 30/70이 아닌 시장별 최적 임계값 적용 시 |
| 추세 감지 도구로 사용 시 | 높음 | 과매수/과매도가 아닌 추세 강도 측정5 |
| 모든 시장에 표준 파라미터 일괄 적용 | 낮음 | 5개국 중 일부에서만 유효7 |
| 암호화폐 + 전통적 해석 | 낮음 | 높은 변동성으로 전통적 반전 신호가 작동하지 않음5 |
효율적 시장 가설(EMH)과의 관계
Fama(1970)의 효율적 시장 가설8에 따르면, 약형 효율적 시장에서는 과거 가격 정보(기술적 분석)로 초과 수익이 불가능하다. 그러나 실증 연구들은 이에 대한 중요한 반례를 제시한다:
- 시장별 효율성 차이: Wong et al.(2003)의 결과는 모든 시장이 동일한 수준의 효율성을 가지지 않음을 시사한다6.
- 시간 가변적 효율성: Chong et al.(2014)에서 일부 시장에서만 RSI가 유효했다는 결과는 시장 효율성이 시간과 상황에 따라 변동할 수 있음을 뒷받침한다7.
- 암호화폐 시장의 비효율성: Zatwarnicki et al.(2023)의 773.65% 수정 전략 수익률은 암호화폐 시장의 구조적 비효율성(24시간 거래, 높은 개인 투자자 비율, 정보 비대칭)을 반영한다5.
- 자기실현적 예언: RSI가 널리 사용됨으로써 시장 참여자들이 동일한 신호에 반응하여 예측이 일시적으로 실현되는 현상도 논의된다.
현재 학계의 중론: RSI의 예측력은 시장, 기간, 자산 클래스, 파라미터 설정에 따라 달라지며, 단독 사용보다는 다른 분석 방법과 병행이 권장된다3.
한계점
1. 후행성 (Lagging Nature)
RSI는 SMMA 기반이므로 본질적으로 과거 데이터의 가중 평균이다. 14기간 RSI는 최소 14개 캔들의 정보를 반영하므로, 급격한 가격 전환에 대한 반응이 지연된다. 갑작스러운 악재(규제 발표, 해킹 사건)로 가격이 한 캔들에서 20% 급락한 경우, RSI는 급락이 완료된 후에야 과매도 영역에 도달한다. 짧은 기간(RSI 7)을 사용하면 반응이 빨라지지만 노이즈가 증가하는 트레이드오프가 존재한다.
2. 고정 임계값의 한계
Wilder의 30/70 임계값은 모든 시장 환경에 최적화된 값이 아니다. Brown은 상승 추세에서 4080, 하락 추세에서 2060으로 범위가 이동한다고 지적했고4, Zatwarnicki et al.(2023)은 암호화폐 시장에서 표준 30/70 해석이 비효과적임을 실증적으로 입증했다5. 고정 임계값을 사용하면 강한 추세에서 조기 반전 신호(false reversal signal)가 빈번하게 발생한다.
3. 횡보장 약점
방향 없이 좁은 범위에서 등락을 반복하는 횡보장에서 RSI는 40~60 사이를 무의미하게 오간다. 50선 부근에서 잦은 교차가 발생하여 허위 신호가 누적된다. 대안으로 볼린저 밴드의 밴드 폭(Bandwidth) 등 변동성 지표로 횡보장을 먼저 식별하고, 횡보 구간에서는 RSI 신호를 무시하는 것이 일반적이다.
4. 강한 추세에서의 왜곡
강한 상승 추세에서 RSI가 70 이상에 장기간 머무르는 현상이 발생한다. 20202021년 BTC 상승장에서 RSI(14, 일봉)는 수개월간 6090 범위에 머물렀다. 70 이상에서 매도한 트레이더는 69,000 상승의 대부분을 놓쳤다. Brown의 Range Shift 적용이나 RSI를 추세 확인 도구로 사용하는 Cardwell 접근법이 대안이다.
5. 파라미터 과최적화(Overfitting) 위험
과거 데이터에 맞춰 최적화된 파라미터가 미래에도 유효하리라는 보장이 없다. 백테스트에서 좋은 성과를 보인 비표준 파라미터(예: RSI 9, 25/75)를 실전에 적용할 때는 과적합 가능성을 항상 염두에 두어야 한다. Wilder의 표준 설정(14기간, 30/70)이 여전히 가장 많이 사용되는 이유는, 특정 시장에 최적화되지 않았기 때문에 오히려 범용성이 높기 때문이다.
6. 바운드된 오실레이터의 구조적 한계
RSI는 0~100 범위로 제한(bounded)되므로, 극단적 추세에서 RSI가 상한/하한에 고착(saturate)되어 추가 정보를 제공하지 못한다. 연속 상승 시 Average Loss가 0에 수렴하면 RS가 무한대로 발산하고 RSI가 100에 수렴하여, 추가 상승이 있어도 모멘텀의 강도 차이를 구분할 수 없다. Brown은 이 한계를 보완하기 위해 CMB Composite Index라는 언바운드 지표를 개발했다4.
흔한 오용
- "과매수 = 즉시 매도, 과매도 = 즉시 매수": 가장 흔하고 위험한 오해. Wilder 본인이 원저에서 과매수가 강한 상승 추세의 신호일 수 있다고 경고했다1.
- 추세를 무시한 역추세 매매: 하락 추세에서 RSI 30 이하 진입은 반등이 아니라 하락 추세의 정상적 진행일 수 있다(Brown의 Range Shift).
- 다이버전스를 즉각적 반전 신호로 사용: 다이버전스는 모멘텀 약화의 경고이지 반전의 확정이 아니다. Wilder 자신도 Failure Swing을 더 신뢰했다.
- 단독 지표로 매매 결정: RSI는 가격 변동의 한 측면만 측정한다. 거래량, 추세 방향, 변동성 등 다른 차원의 정보를 종합해야 한다.
구현 예시
Wilder의 원래 SMMA 방식에 충실한 RSI 계산 구현이다. 교육 목적이므로 가독성을 우선한다.
interface RSIInput {
/** 종가(close price) 배열. 시간순 정렬 (오래된 것부터) */
prices: number[];
/** 계산 기간. Wilder의 기본값은 14 */
period?: number;
}
interface RSIResult {
/** RSI 값 배열 (0~100). 길이 = prices.length - period */
values: number[];
}
function calculateRSI(input: RSIInput): RSIResult {
const { prices, period = 14 } = input;
// 엣지 케이스: 빈 배열 또는 데이터 부족
if (prices.length < period + 1) {
return { values: [] };
}
// NaN/undefined 값 검증
for (let i = 0; i < prices.length; i++) {
if (prices[i] === undefined || prices[i] === null || isNaN(prices[i])) {
throw new Error(
`Invalid price at index ${i}: ${prices[i]}. All prices must be valid numbers.`
);
}
}
// 1단계: 가격 변화량 → Gain/Loss 분리
const gains: number[] = [];
const losses: number[] = [];
for (let i = 1; i < prices.length; i++) {
const delta = prices[i] - prices[i - 1];
gains.push(delta > 0 ? delta : 0);
losses.push(delta < 0 ? Math.abs(delta) : 0);
}
// 2단계: 초기 평균 (SMA)
let avgGain = 0;
let avgLoss = 0;
for (let i = 0; i < period; i++) {
avgGain += gains[i];
avgLoss += losses[i];
}
avgGain /= period;
avgLoss /= period;
// 3단계: RSI 계산
const rsiValues: number[] = [];
rsiValues.push(computeRSI(avgGain, avgLoss));
// 4단계: SMMA 평활화
// Wilder 공식: avg = (prev * (period - 1) + current) / period
for (let i = period; i < gains.length; i++) {
avgGain = (avgGain * (period - 1) + gains[i]) / period;
avgLoss = (avgLoss * (period - 1) + losses[i]) / period;
rsiValues.push(computeRSI(avgGain, avgLoss));
}
return { values: rsiValues };
}
/**
* avgGain과 avgLoss로부터 RSI 값을 계산한다.
* 특수 케이스: 전체 상승(100), 전체 하락(0), 변동 없음(50).
*/
function computeRSI(avgGain: number, avgLoss: number): number {
if (avgLoss === 0 && avgGain > 0) return 100;
if (avgGain === 0 && avgLoss > 0) return 0;
if (avgGain === 0 && avgLoss === 0) return 50;
const rs = avgGain / avgLoss;
return 100 - (100 / (1 + rs));
}
엣지 케이스 처리
| 케이스 | 입력 | 출력 | 설명 |
|---|---|---|---|
| 빈 배열 | { prices: [] } | { values: [] } | 에러 없이 빈 결과 |
| 데이터 부족 | { prices: [100, 101], period: 14 } | { values: [] } | 최소 period+1개 필요 |
| 전체 상승 | 연속 상승 가격 | RSI = 100 | avgLoss = 0 처리 |
| 전체 하락 | 연속 하락 가격 | RSI = 0 | avgGain = 0 처리 |
| 변동 없음 | 동일 가격 반복 | RSI = 50 | 0/0 → 균형 상태 |
| NaN 입력 | 가격에 NaN 포함 | Error 발생 | 조기 검증으로 디버깅 지원 |
technicalindicators 라이브러리와의 비교
technicalindicators npm 패키지(anandanand84)는 동일한 Wilder SMMA 알고리즘을 사용하되, Generator 기반 OOP 패턴으로 실시간 스트리밍(nextValue())을 지원한다. 핵심 차이는 "양쪽 모두 0"인 케이스에서 이 구현이 50(균형)을 반환하는 반면, technicalindicators는 0을 반환한다는 점이다. 또한 technicalindicators는 toFixed(2)로 소수점 2자리 반올림을 적용하므로, 정밀한 비교 시 미세한 차이가 발생할 수 있다. 프로덕션 환경에서는 검증된 라이브러리 사용을 권장한다.
요약
| 항목 | 내용 |
|---|---|
| 개발자 | J. Welles Wilder Jr. (1978) |
| 유형 | 모멘텀 오실레이터 (바운드형, 0~100) |
| 기본 기간 | 14 (SMMA 평활, 동등 EMA 27일) |
| 주요 수준 | 70 (과매수), 30 (과매도) |
| 주요 신호 | 과매수/과매도, 다이버전스, Failure Swing, Range Shift, Positive/Negative Reversal |
| 핵심 후속 연구 | Constance Brown (1999): Range Shift, Andrew Cardwell: 추세 확인 도구 재해석 |
| 적합 시장 | 추세가 있는 시장에서 추세 확인 도구로 사용할 때 가장 효과적 |
| 암호화폐 적용 | 전통적 30/70 해석보다 추세 감지 전략(50~100 범위)이 우수 |
| 오버레이 | 아니오 (별도 패널에 표시) |
Footnotes
-
Wilder, J.W. (1978). New Concepts in Technical Trading Systems. Trend Research. ISBN: 978-0894590276. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Achelis, S.B. (2001). Technical Analysis from A to Z (2nd ed.). McGraw-Hill. ISBN: 978-0071363488. pp. 243-245. ↩
-
Kirkpatrick, C.D. & Dahlquist, J.R. (2015). Technical Analysis: The Complete Resource for Financial Market Technicians (3rd ed.). FT Press. ISBN: 978-0134137049. ↩ ↩2
-
Brown, C.M. (1999). Technical Analysis for the Trading Professional. McGraw-Hill. ISBN: 978-0070120624. ↩ ↩2 ↩3 ↩4
-
Zatwarnicki, M., Zatwarnicki, K. & Stolarski, P. (2023). Effectiveness of the Relative Strength Index Signals in Timing the Cryptocurrency Market. Sensors, 23(3), 1664. DOI: 10.3390/s23031664. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Wong, W.K., Manzur, M. & Chew, B.K. (2003). How Rewarding Is Technical Analysis? Evidence from Singapore Stock Market. Applied Financial Economics, 13(7), 543-551. DOI: 10.1080/0960310022000020906. ↩ ↩2 ↩3
-
Chong, T.T.L., Ng, W.K. & Liew, V.K.S. (2014). Revisiting the Performance of MACD and RSI Oscillators. Journal of Risk and Financial Management, 7(1), 1-12. DOI: 10.3390/jrfm7010001. ↩ ↩2 ↩3
-
Fama, E.F. (1970). Efficient Capital Markets: A Review of Theory and Empirical Work. The Journal of Finance, 25(2), 383-417. DOI: 10.2307/2325486. ↩