변혁적인 삶

[AI | 데이터분석] 3. 모멘텀 기반 지표(RSI, Stochastic Oscillator, CCI) 본문

AI

[AI | 데이터분석] 3. 모멘텀 기반 지표(RSI, Stochastic Oscillator, CCI)

revolutionarylife 2024. 11. 20. 09:14
반응형

📊 [AI | 데이터분석] 3. 모멘텀 기반 지표(RSI, Stochastic Oscillator, CCI)

목차

  • 1. RSI (Relative Strength Index)
  • 2. Stochastic Oscillator
  • 3. CCI (Commodity Channel Index)

1. RSI (Relative Strength Index)

RSI(상대 강도 지수)는 가격의 과매수과매도 상태를 평가하는 모멘텀 지표로, 0에서 100 사이의 값을 가집니다.

RSI는 보통 다음 기준으로 해석됩니다:

  • RSI 70 이상: 과매수 상태 → 매도 신호 가능.
  • RSI 30 이하: 과매도 상태 → 매수 신호 가능.

1.1 RSI 공식

RSI는 다음 공식으로 계산됩니다:

$$ \text{RSI} = 100 - \frac{100} {1 + RS} $$

RS(Relative Strength)는 다음과 같이 계산됩니다:

$$ RS = \frac{\text{평균 상승폭}}{\text{평균 하락폭}} $$

1.2 코드 예시

# RSI 계산 함수
def calculate_rsi(data, period=14):
    delta = data["close"].diff()
    gain = delta.where(delta > 0, 0).rolling(window=period).mean()
    loss = -delta.where(delta < 0, 0).rolling(window=period).mean()
    rs = gain / loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

# RSI 계산
df["rsi"] = calculate_rsi(df)

# 결과 출력
print(df[["close", "rsi"]].tail())

1.3 출력 예시

    close    rsi
95 57300.0  55.6
96 57350.0  57.3
97 57400.0  59.1
98 57320.0  56.8
99 57300.0  54.2

2. Stochastic Oscillator

Stochastic Oscillator는 현재 가격이 일정 기간의 고점과 저점 사이에서 어느 위치에 있는지를 평가하는 지표입니다. 이 지표는 가격이 상승 추세에서는 고점 근처에서, 하락 추세에서는 저점 근처에서 마감되는 경향이 있다는 가정에 기반합니다.

2.1 공식

%K(빠르게 움직이는 단기 지표): $$ \text{%K}= \frac{\text{현재 종가 - 최저가}}{\text{최고가 - 최저가}} × 100 $$

%D(느리게 움직이는 장기 지표): %K의 3일 이동평균.

2.2 코드 예시

# Stochastic Oscillator 계산
low_14 = df["low"].rolling(window=14).min()
high_14 = df["high"].rolling(window=14).max()
df["%K"] = (df["close"] - low_14) / (high_14 - low_14) * 100
df["%D"] = df["%K"].rolling(window=3).mean()

# 결과 출력
print(df[["close", "%K", "%D"]].tail())

2.3 출력 예시

    close    %K    %D
95 57300.0  45.6  50.2
96 57350.0  48.3  47.8
97 57400.0  51.2  48.4
98 57320.0  46.8  48.8
99 57300.0  44.3  47.4

3. CCI (Commodity Channel Index)

CCI는 현재 가격평균 가격 간의 차이를 평가하여 과매수과매도를 판단합니다.

CCI 값이 100 이상이면 과매수 상태, -100 이하이면 과매도 상태로 간주됩니다.

3.1 공식

$$ \text{CCI} = \frac{\text{TP} - \text{SMA(TP)}}{\text{0.015} × \text{MAD(TP)}} $$

$$ \text{TP(Typical Price)}: \frac{\text{고가 + 저가 + 종가}}{3} $$

3.2 Python 코드

# CCI 계산
df["tp"] = (df["high"] + df["low"] + df["close"]) / 3
df["sma_tp"] = df["tp"].rolling(window=20).mean()
df["mad_tp"] = df["tp"].rolling(window=20).apply(lambda x: pd.Series(x).mad())
df["cci"] = (df["tp"] - df["sma_tp"]) / (0.015 * df["mad_tp"])

# 결과 출력
print(df[["close", "cci"]].tail())

3.3 출력 예시

    close     cci
95 57300.0   45.3
96 57350.0   50.1
97 57400.0   58.7
98 57320.0   40.2
99 57300.0   35.9

마무리

3부에서는 모멘텀 기반 지표인 RSI, Stochastic Oscillator, CCI를 다뤘습니다. 각 지표는 시장의 과매수 및 과매도 상태를 파악하고, 매수와 매도 신호를 제공합니다. 다음 4부에서는 변동성 및 거래량 지표를 다뤄보겠습니다. 🚀

 

 

반응형