pizzaplanet

[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(3) 본문

Participation

[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(3)

scio 2019. 2. 17. 04:30

큰 제목을 누르면 발표 영상으로 이동합니다.



강화학습을 이용한 주식 트레이딩 알고리즘






Data


2010.08.06 ~ 2018.09.12

시가총액 300위 해당 종목(date, open, high, low, close, volume, code, name, etc)

코스피 지수(일자, 체결가, 거래량, 거래 대금, 등락, etc)



전처리


1. 시계열 변수와 주가 관련 보조지표 계산

RSI, MACE, EMA, WMA, DMI, BB, ETC


2. 거래 정지 이유 별 데이터 수정

액면 분할 / 병합, 기업 분할 / 병함, 등


3. Target : 다음 날 주가 등락

일자 기준 다음날의 주가 등락 여부를 Target 데이터로 생성




Test


DNN, SVM, Decision Tree, RandomForest 등 10개 모델로 K-FOLD 적용 시 최대 60% 초반대


많이 부족하다고 생각하여 뉴스 데이터 추가 + LSTM, GRU, CNN_RNN 등을 썼으나 50% 전후




RL


데이터 수집


Ebest 증권사의 Xing API 이용



전처리


1. 거래 정지 이유 별 데이터 수정


2. 종목 별로 변수를 다르게 추가. 종목별로 결과가 잘 나오는 변수 조합이 있었음

ex)  메리츠화재 : 코스피지수 + BB 등

KCC : ADX, DMI, BOX 등



구성요소


에이전트 - 투자자

환경 - 데이터

액션 - 매수, 매도, 관망

보상 - 이익, 손해


보상 규칙 - 이익률 3% 달성 시 이익.



Model


5 은닉층의 LSTM.

입력층 : 학습 데이터 차원 + 에이전트 상태(주식 보유 비율, 포트폴리오 가치 비율)

출력층 : 매수, 매도, 관망


강화학습 기법으로 정책 경사 사용.

이유: Q러닝은 기대 손익을 예측하나, 정책 경사는 어떤 행동이 현재 상태에서 가장 좋을지를 확률 적으로 판단하기 때문.


확률적 경사 하강법(SGD)에 Learning rate는 0.01, 0.001 등 종목별로 다르게 설정



결과


아모레퍼시픽 : 6개월 +10.86%

동원산업 : 6개월 6% + 하락 방어




폭락 방지 알고리즘


1. 익일 주가 등락 여부에 따른 긍부정 강도 생성


  • 뉴스 파싱
  • 주가 등락 심했을 때, 이전의 뉴스를 직접 모음
  • 뉴스마다 긍정 / 부정 라벨링
  • 단어마다 긍정 / 부정 뉴스 등장 빈도수 측정

  • Diff = (긍정 뉴스 등장 수 - 부정 뉴스 등장 수) / 총 뉴스 등장 수
  • Strength1 = Diff의 합
  • Strength2 = Diff의 합 / 뉴스 총 단어 수 
  • Pos_count1 = Diff > 0 단어 수 
  • Pos_count2 = Diff > 0.2 단어 수 
  • Pos_count3 = Diff > 0.2 이고, 빈도수가 100 이상인 단어 수 
  • Neg_count1 = Diff < 0 단어 수 
  • Neg_count2 = Diff < -0.2 단어 수 
  • Neg_count3 = Diff < -0.2 이고, 빈도수가 100 이상인 단어 수

2. 시간대별 뉴스 처리

  • 20분마다 동작하도록 배치
  • 시간대별 종목에 대한 긍부정 점수 계산 -> 부정 점수 급등 시점 포착
  • 부정점수와 MACD 보조지표의 매도 신호 모두 1일 경우 전량 매도




결론


1. 등락 예측이 목표인 기존 주식 방법은 사용하지 마라. 

2. 주식 트레이딩에는 강화학습을 추천한다. 

3. 학습기간이 길다고 무조건 좋은것이 아니다. 

4. 백테스트의 수익률은 절대로 반복되지 않는다. 

5. 투자를 할때, 강화학습의 결과를 참고로 사용하면 좋다. 




한계점 


1. 폭락 방지 알고리즘을 제대로 만들어야 한다. 

-> 안정적인 수익이 우선이기 때문! 

-> 폭락이 빠르게 감지가 안되는 점 보완. 

-> 예시) 아모레퍼시픽 폭락임에도 신호 X




Q&A 


Q : 종목마다 다른 피쳐를 사용하였는데 어떤 기준으로 피쳐셀렉션 했는지.

A : 사람의 손





종목별로 강화학습 모델을 생성하신 듯 했다. 종목별로 다른 피쳐를 사용하기 때문인 듯 하다.

발표를 듣기 전 생각했던 방법은 전체 종목 데이터를 활용하여 학습하는 것이었으나, 각 종목 별로 학습을 하셨다. 피쳐셀렉션도 수작업으로 하나씩 다 테스트 해보신 듯 했다. 처음에 300개 종목에 어떻게 다 다른 보조지표를 부여하셨는지 여쭤보려 했으나 300개 종목 중 일부 종목 하나씩만 테스트 하신 것 같아 질문을 말았다. 


수익도 중요하지만 발표 말씀처럼 하락을 잘 방어하는 것이 키 포인트라 생각한다. 그 점에서 방어를 어떻게 하셨는지 흥미롭게 들을 수 있었던 발표였던 듯 하다.

Comments