시작하기무료로 시작하기

이동 평균과 RSI 특성 만들기

더 나은 예측을 위해 Machine Learning 모델에 과거 데이터를 추가하고 싶지만, 많은 시계열 시점을 그대로 넣는 것은 까다롭습니다. 대신, 지표를 사용해 이전 시점의 정보를 한 시점으로 요약할 수 있어요.

이동 평균은 가장 단순한 지표 중 하나로, 이전 데이터 포인트의 평균입니다. 이는 TAlib 라이브러리의 talib.SMA() 함수로 계산합니다.

또 다른 일반적인 기술적 지표는 RSI(Relative Strength Index, 상대강도지수)입니다. 정의는 다음과 같습니다.

\(RSI = 100 - \frac{100} {1 + RS}\)

\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)

여기서 기간 ntalib.RSI()timeperiod 인자로 설정합니다.

RSI의 흔한 기간은 14이므로, 계산에서 하나의 설정값으로 14를 사용하겠습니다.

이 연습은 강의의 일부입니다

Python으로 배우는 금융 분야 Machine Learning

강의 보기

연습 안내

  • 특성 이름 목록을 만드세요(먼저 '5d_close_pct'만 포함한 리스트로 시작하세요).
  • 보정 종가(lng_df['Adj_Close'])를 사용해 talib.SMA()로 14, 30, 50, 200 기간의 이동 평균을 계산하세요.
  • 계산한 이동 평균을 Adj_Close로 나누어 보정 종가 대비로 정규화하세요.
  • 루프 안에서 Adj_Close를 입력으로 하고, timeperiodn을 사용해 talib.RSI()로 RSI를 계산하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

feature_names = ____  # a list of the feature names for later

# Create moving averages and rsi for timeperiods of 14, 30, 50, and 200
for n in [____]:

    # Create the moving average indicator and divide by Adj_Close
    lng_df['ma' + str(n)] = talib.SMA(lng_df['Adj_Close'].values,
                              timeperiod=n) / lng_df[____]
    # Create the RSI indicator
    lng_df['rsi' + str(n)] = talib.____(lng_df['Adj_Close'].____, timeperiod=____)
    
    # Add rsi and moving average to the feature name list
    feature_names = feature_names + ['ma' + str(n), 'rsi' + str(n)]

print(feature_names)
코드 편집 및 실행