강화학습 기반 주식 트레이딩 시스템

머신러닝 알고리즘 분류(유형)는 크게 목적(라벨) 변수 유무에 따라 지도학습과 비지도학습으로 분류한다. 또 하나  재미있는 분류로는 강화학습이 있다. 강화학습은 에이전트와 환경이 주어질 때, 에이전트가 행하는 행위에 대한 보상(reward)으로 학습한다. 데이터 1건1건마다 라벨링값이 주어지는 지도학습과 달리 강화학습에서는 행위에 대한 보상(지도학습에서의 라벨링 역할)이 매번 주어질 필요가 없다. 이를 지연 보상(delayed reward)이라고 한다. 따라서 매번 행위 때마다 reward를 할 […]

LDA 토픽 모델링

가끔 주식 관련 특징주 기사를 보면 주가에 영향을 줄만한 기사가 뜨는 경우가 있다. 물론 좋은 기사가 뜬다고 해서 주가가 항상 오르지는 않는다. 다만 테스트를 해보고 싶었다. 데이터 수집 먼저 기계 학습을 위해 관련 데이터 수집이 필요하다. 특정 사이트 URL를 선정해서 인터넷 기사와 주가와의 연관성 분석을 위해 5년간의 특징주 관련 기사를 수집했다. 그런 다음 기사가 뜬 […]

순환 신경망 (LSTM) 활용 주가 예측

시계열 데이터 예측에 좋은 성능을 낸다는 순환 신경망을 통해 제가 현재 보유하고 있는 내츄럴엔도텍 주식에 대한 예측을 해보고자 합니다. 내츄럴엔도텍은 한 때 백수오로 알려진 업체이며 최근 홈쇼핑 판매 개시로 많은 관심을 받고 있습니다.  LSTM이란… 순환 신경망은 보통 RNN(Recurrent Neural Network)라고 하는데 그레디언트 소실(Gradient Vanishing Problem)을 해결하고자 메모리를 도입한 LSTM(Long-Short Term Memory)을 주로 이용합니다. LSTM은 시계열 […]

RBM (제한된 볼츠만 머신) 이해

요즘 한창 뜨고 있고 있는 딥러닝을 공부하고자 한다면 RBM (Restricted Boltzmann machine)이라는 제한된 볼츠만 머신이라는 알고리즘을 최소 한번은 들어 보았을 것이다. 확률적인 개념이라 다소 이해하기 어려운 면도 있어 가급적 쉽게 설명해보고자 한다. RBM을 로봇 트레이딩에 어떻게 활용할지는 아직 잘 모르겠지만… (아래 등장하는 수식에 있어서는 설명의 편의를 위해 간소화시킨 부분도 있음을 미리 언급해둔다.) RBM은 우선 DBN(DBN, […]

나이브 베이즈 분류 개념 이해

나이브 베이즈(Naïve Bayes Classification)는 확률 기반 분류기의 일종으로 1950대 이후 광범위하게 연구되고 있다. 쉽게 설명하면 다음과 같다. 예로 흡연과 간암과의 상관 관계는 널리 알려진 사실이다. 하지만 흡연을 할 경우에 간암에 걸릴 확률을 추정할 수 있을까? 이때 사용하는 방법이 나이브 베이즈 방법이다.  p(간암|흡연) = p(흡연|간암)*p(간암)/p(흡연) 즉 간암 확률과 흡연 확률 그리고 간암이 걸린 상태일 때의 흡연 […]

챠트 패턴 매칭을 위한 DTW

주가는 관성의 원리에 따라 추세를 지속하려는 속성이 있으며 파동과 사이클을 반복하려는 속성이 있다. 주가의 추세를 담고 있는 챠트는 그런 면에서 의미가 있다. 차트의 대표적인 유형으로는 상승 추세와 하강 그리고 횡보 추세 등 다양하게 존재한다. 이러한 점은 로봇 트레이딩에서 중요한 정보로 사용된다. 로봇 트레이딩에서 기계적으로 챠트 유형이나 패턴을 분석하고자 할 때 DTW(Dynamic Time Warping)이라는 알고리즘을 사용하기도 […]

의사 결정 트리 (Decision Tree)를 활용한 주식 예측 방법

의사 결정 트리는 데이터 마이닝에서 일반적으로 사용되는 방법으로 입력 변수에 대하여 분류/예측하는 모델을 생성하는 것을 목표로 한다. (위키백과에서 그림 발췌) 위 그림은 타이타닉 생존자에 대한 결정 트리를 나타낸 것이다. 의사 결정 트리는 화이트 박스(white box)로 분류 기준을 쉽게 파악할 수 있는 장점이 있다. 주식에 있어서는 비슷한 방법으로 활용 가능하다. 가령 다음날 주가를 예측한다면 주가에 영향을 […]

머신 러닝을 위한 프로그래밍 언어

머신러닝에 사용할 수 있는 여러 가지 프로그래밍 언어를 소개한다. 파이썬(Python) 파이썬은 배우기 쉽고, 이해하기 쉬워 사용자가 늘고 있다. 파이썬에는 scikit-learn, PyML, pybrain와 같은 머신 러닝 라이브러리가 있다. Jython은 JVM 기반 파이썬이다. R R은 오픈 소스 통계 프로그래밍 언어이다. 문법이 배우기 쉬운 건 아니지만 머신 러닝과 시각화를 위한 도구가 많다. rJava 프로젝트를 사용하면 자바 코드에서 R의 함수를 사용할 […]

머신 러닝 퀵 가이드

로봇(시스템) 트레이딩을 연구하기 위해서는 인공지능에 대한 이해도 필요하니 꾸준히 인공지능 관련 내용도 보완할 예정이다. 인공지능은 조금 막연하고 머신러닝이라는 이름 최근에는 딥러닝이라는 이름으로 구체화되고 있다. 머신러닝을 간단히 정의하면 아래와 같다 (카네기멜론 대학교 톰 미첼 교수 정의) 태스크 T에 대하여 경험 E를 학습하여 성능 P만큼 개선 머신러닝을 적용하기 위한 태스크가 있어야 하며 머신러닝이 학습하기 용이한 경험이 있어야 […]

SVM 활용 주가 예측 방법

이번에는 SVM(Support Vector Machine)을 활용한 주가 등락 예측에 대해서 언급하고자 한다. SVM은 신경망과 같은 지도학습이며 주로 패턴을 분류할 때 사용한다. SVM의 기본적인 원리는 간단하다. 아래 그림처럼 상단 빨간색 패턴과 하단 파란색 패턴이 분류되어 있을 때 이러한 패턴을 가장 잘 분류할 수 있도록 방법을 제시하는 것이 SVM이다. 마치 눈으로 보고 분리하듯이 패턴간의 마진(margin)이 가장 크도록 분리한다. […]