random_image

FinRL 리뷰 - 주식 데이터 전처리

tony | June 25, 2023, 11:24 a.m. | paper-review | stock reinforcement-learning

주식 데이터 전처리 방법

최근 주식 관련 강화학습 논문들을 리뷰하고 싶은 욕구가 생겼다. 천천히 리뷰를 진행하고, 기록해보자.

오늘은 주식데이테를 읽어들이는 부분만 집중해본다. 

FinRL Feature Engineer 모듈 리뷰

주식 관련 논문을 보다 FinRL이라는 라이브러리 형태로 오픈소스를 공개를 한 연구 흐름에 흥미가 생겨 파악해보았다. 2018, 2020년 NIPS 에 워크샵 논문을 내더니, 2022년에는 full paper를 게재하였으니 장기간 연구가 진행된 것으로 보인다.

이번 리뷰에서는 Feature Engineering 모듈 관련 리뷰에 집중한다.

주식데이터는 날짜, ticker에 따라 정렬되어있다.

다우지수를 벤치마킹 하기때문에 30개의 다우지수에 해당되는 주식 ticker들을 트래킹한다.

FE 모듈로 주식데이터를 전처리 한다. 주식 가격말고도 INDICATORS 에 여러 정보들을 추가한다. vix, turbulence과 같은 시장 사정 불안정 척도는 옵셔너블하게 사용.

  • 1macd: 장단기(12일, 26일)이동평균선과의 교차
  • boll_[ub|lb]: 2볼린저 밴드, 이동 평균선과 표준편차에 의한 upper, lower bound.
  • 3rsi: 가격의 상승압력과 하락압력 간의 상대적인 강도. 백분률로 나타냄. 70 이상이면 과매수, 30 이하면 과매도로 판단.
  • 4cci: rsi과 비슷한 모멘텀 기반 추세 척도. -100 이하면 과매도, +100 과매수로 판단.
  • 5 dx: rsi, cci 과 비슷한 추세 지표. 일간 연속 추세를 파악.
  • sma: simple moving average 단순 이동 평균.
  • 6 vix: S&P 기반의 변동성 척도. 시장이 불안정할때 증가하므로 공포지수로 사용됨. 30 이상되었을때 높은 것으로 알려짐.
  • 7 Turbulence: 금융시장이 정상적인 상황에서 얼마나 벗어나 있는가를 측정하는 수치

stockstats.StockDataFrame를 사용하면 여러 indicator를 쉽게 얻을 수 있다.

df = YahooDownloader(
    start_date = '2023-06-01',
    end_date = '2023-06-25',
    ticker_list = ['nvda']
).fetch_data()
stock = Sdf.retype(df.copy())
stock['macd']
결과
date
2023-06-01    0.000000
2023-06-02   -0.099381
2023-06-05   -0.175002
2023-06-06   -0.391749
2023-06-07   -0.968838
2023-06-08   -0.854963
2023-06-09   -0.649423
2023-06-12   -0.162535
2023-06-13    0.941149
2023-06-14    2.727689
2023-06-15    3.797150
2023-06-16    4.550990
2023-06-20    5.680093
2023-06-21    6.009265
2023-06-22    6.168969
2023-06-23    5.717713
Name: macd, dtype: float64

총평

주식데이터들을 finRL 로 전처리 해서 사용하면 편리하게 이용할 수 있을거 같다. 다음에는 간단한 논문 리뷰 와 함께, finRL에서 제공하는 notebook 튜토리얼도 수행해보면 좋을거 같다. 그동안 주식들을 그냥 감으로만 사고팔고 했는데, 여러 지수들을 공부해볼 수 있는 유익한 시간이었다.

Footnotes

  1. https://namu.wiki/w/MACD

  2. https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C

  3. https://ko.wikipedia.org/wiki/RSI_(%ED%88%AC%EC%9E%90%EC%A7%80%ED%91%9C)

  4. https://en.wikipedia.org/wiki/Commodity_channel_index

  5. https://en.wikipedia.org/wiki/Average_directional_movement_index

  6. https://www.spglobal.com/spdji/kr/vix-intro/

  7. http://www.finomy.com/news/articleView.html?idxno=42914

Last updated on Aug. 19, 2023, 9:16 a.m.

LEAVE A COMMENT