본문 바로가기

주식/공부

딥러닝을 이용한 주식 시장 예측 (LSTM)

인공지능의 등장부터 이를 금융에 적용하기 위해 사람들은 많은 연구를 해왔다. 월가나 기관 투자자는 이미 인공지능을 사용할 것이다. 

개인 투자자들은 시장의 유동성을 위해 기부할 수 밖에 없는 구조인 것일까?

 

해당 글에는 필자가 할 수 있는 실력 내에서 인공지능을 이용하여 시장을 예측해보겠다. 

https://towardsdatascience.com/deep-learning-2-f81ebe632d5c

CNN (Convolutional Neural Network)의 단점은 '기억'이 없다는 것이다. 

위 이미지와 같이 주변 픽셀의 패턴 분석으로 대상의 특징을 구분할 수 있지만 주식 시장과 같이 시간이 있고 트렌드가 있다면 CNN은 효력을 발휘할 수 없다. 

 

RNN (Recurrent Neural Network) 역시 CNN 과 유사하다. 구조적인 문제로 'Vanishing gradient problem'으로 '기억'에 약하다.

 

LSTM (Long short-term Memory) 는 CNN과 RNN의 단점을 해결해준다. 과거 일어난 데이터 역시 포함 시켜 기억을 하여 다음 값을 예측하는데 사용된다. 

 

서론이 길었다. 필자는 사실 코딩을 못하지만 인터넷을 뒤지며 어찌 해보았다. 재미있게 감상부탁한다.

 

 

우선 야후API에서 코스피 지수를 pandas 데이터프레임으로 가져왔다.

날짜는 보시다시피 2000년 1월 1일부터 2020년 8월 18일

 

개인적으로 코스닥 중소형주에 투자하는 개미로써 코스닥을 분석하고 싶지만 야후API는 제대로된 데이터가 없는게 많다.

코스닥은 2013년 부터 데이터가 있어서 코스피로한다.

 

 

matplotlib 으로 종가 그래프를 그려본다.

데이터프레임에서 종가만 사용하겠다.

 

(실제로 시가 고가 저가 종가 모두 사용할 수 있지만 결과는 비슷했다)

 

 

sklearn으로 데이터 정규화를 한다. 

이 작업이 없으면 예측 효율이 떨어진다고 한다. 사실 굉장히 중요한 전처리 작업이다.

모든 종가 데이터는 0~1사이에 값으로 비율로 저장된다.

 

 

훈련 데이터는 전체 중 0.8의 비중으로 한다. 

 

아래 for루프는 LSTM에서 요구하는대로 formatting 한 것이다. 

PAST_SET은 예측 날짜로부터 기억할 전 날들이다.

즉, 10은 예측일로부터 10일 전까지의 데이터까지 모두 예측하는데 고려할 날들이다. LSTM의 '기억'이 10일이라고 생각하면 편하다. 

 

(PAST_SET을 30과 100으로도 해보았지만 결과는 오히려 안 좋았다. 노이즈가 너무 많은 것일까)

 

 

훈련 데이터셋과 테스트셋의 formatting이다.

라인 15의 훈련 데이터셋의 차원 크기를 주목하라.

4054개의 데이터가 각각 10일 전까지 포함된다. 뒤 1은 LSTM에서 요구하는 형태이다. 필자는 여기서 애 좀 먹었다. 

 

 

keras에서 딥러닝 모델을 구성한다.

LSTM 레이어 2개와 Dense 2개로 했다. (옛날에 쓴거라서 왜 그랬는지 기억은 안난다...)

Epoch은 너무 많으면 효율이 떨어진다. 또한 아주 간단한 구현이기 때문에 3으로 하였다. 

(시간이 너무 오래 걸려서 3으로 한건 함정)

 

 

0~1로 정규화된 데이터 값을 원래 값으로 되돌린다. 

rmse는 평균 제곱 오차이다... 26이면 꽤 수치가 큰 것이며 좋은것은 아니다...

 

 

오른쪽 Close가 실제 값이고

왼쪽 Predictions이 예측 값이다.

 

보시다시피 차이가 꽤 크다

 

 

멀리서 보면 꽤 그럴싸하다만

 

 

가까이에서 보면 이런 쓸데없는 그래프가 보인다. 아마 손실을 줄이기 위해 바로 전 날의 값을 그대로 결과 값으로 출력한듯 싶다... 

 

주식에서는 1이라는 차이도 굉장히 중요해서 사실상 이런식으로 주식을 예측하면 안된다...

이게 가능했으면 모두가 부자였다.... ㅜㅜ

 

실제로 알고리즘 트레이딩을 하는 사람들은 호가창을 위주로 한다고 한다. 방대한 양의 데이터와 시간이 필요하며 컴퓨터의 속도 또한 중요하다. 그렇다고 해서 알고리즘 트레이딩이 가장 강하나?

 

개인적으로 그건 아니라고 생각한다.

https://www.mk.co.kr/premium/special-report/view/2018/02/21430/

 

미국 증시 폭락장세 주도한 `알고리즘 매매`의 리스크

[최은수의 경제기사로 부자되는 법-123] [뉴스읽기=공포의 '알고리즘 투매'…글로벌 증시 동반 폭락] 컴퓨터에 의한 알고리즘 투매가 미국 증시를 뒤흔들었다. 일본, 홍콩, 상하이 증시도 동반 폭�

www.mk.co.kr

해당 링크는 알고리즘 매매의 획일화된 매매에 의문을 던진다.

 

또한 요즘엔 퀀트라고 유행한다. 알고리즘 트레이딩이라기보단 주식의 변화와 상관성이 있는 요소를 분석하고 투자하는 방법이다.

필자도 위 인공지능으로 트레이딩 안한다. (못하기도 하지만 하면 한강 정모다)

물론 퀸트 속에 알고리즘 트레이딩이 포함되는 개념이지만 필자는 알고리즘 트레이딩보단 퀸트 투자를 한다. 다음에는 나의 투자 방법을 아주 조금 보여줄까한다.

 

결론은 개인이 기본적인 인공지능으로 시장을 예측하기엔 불가능에 가깝다. 

이상 허접한 주식에 인공지능 구현이었다.

 

워낙 실력이 부족하다보니까 피드백과 비판 환영합니다.

'주식 > 공부' 카테고리의 다른 글

2022년 상반기 주도주  (0) 2022.07.10
[2편] 주식 투자 유튜버 순위 3  (0) 2020.08.27
[1편] 주식 투자 유튜버 순위 5  (1) 2020.08.24