Machine Learning을 이용한 여러가지 분석이 이루어지고 특히 돈이 되는 금융 공학에서는 더욱 활발합니다. ML에서 비중있게 다루어지는 LSTM 역시 금융 공학쪽에 응용이 되고 있으나 맹점이 있습니다.
LSTM은 Long-Short-Term-Memory의 약어로서 전문성이 부족해 설명이 어려우나 Machine Learning에서 각광받는 기법 정도로만 참고하고 있습니다.
다만 금융 공학에서 LSTM 응용시 아래와 같은 문제가 있습니다.
OHLC를 통해 다음날 C값을 찾도록 Training Data Window를 20으로 설정하여 만들어 주면 8개의 data가 생깁니다. 이 값을 다음날 종가에 맞추도록 설정하면 7개의 데이터가 생기게 되어 총 7개의 비교 그래프를 만들 수 있습니다.
이렇게 하여 3개의 데이터만으로 그래프를 그려보면 아래와 같습니다. 오차는 있지만 변곡점이 같은 두개의 실제 데이터와 예측 데이터가 생깁니다.
이것을 다시 많은 데이터를 확보할 경우 아래와 같은 그래프가 그려집니다. 보시다시피 아래와 같은 예측값이 실제값이 따라다니는 즉 실제 종가가 예측값 그래프를 Lagging하는 그래프가 그려집니다. 이것 때문에 저는 코드상의 오류로 인해 shift되어 있다고 생각하고 한참을 고민했는데 위의 짧은 주기의 그래프로 확인했듯이 코드로는 전혀 문제가 없습니다. 이는 금융 공학에서 흔히 발생하는 LSTM의 특성 때문이라고 합니다.
많은 사람들이 금융 데이터로 딥러닝을 시작할 때 Time-series에 대해 시도해보는 것은 LSTM을 이용한 시계열 예측입니다. 하지만 시계열은 실제로 AR(1)에 가까운 특성 때문에 직전값을 예측값으로 내놓는 경우가 많습니다. 이런 이유로 LSTM으로 주가 예측을 시도할 때 멀리서 보면 잘 맞추는 것 같아보이지만, 가까이서 보게되면 Lagging되는 형태로 예측값이 나오는 것입니다.
(https://www.qraftec.com/blog/2019/3/6/deep-time-series-denosier)
블로그상에 LSTM을 이용한 주가 예측이라는 많은 코드 공유가 되고 있으나 혹시 저처럼 Lagging되는 것에 궁금함을 갖고 계셨던 분들은 LSTM 특성에 의한 것이라고 생각하시면 될 것 같습니다. 저도 참 순진하게도 코드 몇 개로 다음 날 종가를 예측하고자 했으니 어리석네요. 이런 간단한 코드로 주가 예측이 가능하다면 돈 못버는 사람은 하나도 없겠죠. 기관도 털리고, 외국인도 털리는게 주식시장인데 간단한 코드 몇자로 감히 주가를 예측하려한 저의 우매함을 반성합니다. 혹시나 코드 따라해보시고 저런 점이 이상한 분은 참고하시기 바랍니다.
그렇다고 해도 누군가는 저 문제를 해결했을텐데..
'주식' 카테고리의 다른 글
할 수 있다! 퀀트 투자(1) (0) | 2021.05.02 |
---|---|
PositionSize 전략 (0) | 2021.02.16 |
쉬었다 갑시다. (0) | 2020.12.29 |
또 다른 고수의 주식 조언 (0) | 2020.12.15 |
[열네번째] 고수는 어떤 로그를 남기는가? (0) | 2020.10.25 |