Data & AI

딥러닝 트레이딩 - Timeseries Forecast (ICLR 2023 Timesnet)

JeTech 2023. 10. 15. 01:29
반응형

안녕하세요.

 

최근 들어서는 글을 많이 쓰지 않았습니다. 

 

공부하던 것도 좀 진행하고 추천받은 책들도 많아서 

 

지식들을 다시 좀 쌓는 시간을 갖기도 했습니다. 

 

 

오늘은 최신 딥러닝 모델을 살펴보고

 

해당 모델을 학습시켜서 트레이딩에 접목시켜 보았습니다. 

 

 

딥러닝의 활용

이미지처리를 중심으로 딥러닝이 일상에 정말 많이 사용되고 있죠?

 

언어모델과 생성형 모델까지 나오고 있는 단계에서

 

트레이딩을 위해 사용될 수 있는 부분은 무엇인지 고민을 많이 하고 있습니다. 

 

트레이딩을 위해선 저는 투자하는 종목의 가격데이터가 기초가 되는 데이터라고 생각합니다. 

 

가격데이터도 시계열 데이터이기 때문에 딥러닝을 통해 시계열을 분석하는 것이 도움이 될 수 있겠다고 생각했고

 

시계열 예측, 분석 모델을 만들어 자산배분투자, 트레이딩에 접목시킬 수 있고 주식 종목의 메타데이터로 활용할 예정입니다. 

 

 

전통적 시계열 분석 알고리즘

시계열 분석의 뿌리는 인류의 오랜 역사와 깊게 연결되어 있습니다.

 

인간은 수 천 년 동안 다양한 목적으로 시간에 따른 변화를 관찰하고 이해하려고 노력해 왔습니다.

 

고대 문명에서부터 천체의 움직임을 관찰하기 위해 시간별 천체들의 움직임을 기록하고 농업활동을 계획하거나

 

종교적 행사를 위해 준비했고, 중세시대에는 신대륙을 이동하면서 천체의 움직임, 조석의 패턴을 예측하고 이용

 

산업혁명 이후, 생산관리에서 품질 변동을 모니터링하고 개선하기 위해 인류는 시계열 데이터 분석을 이용해 왔습니다. 

 

대표적인 전통적인 시계열알고리즘으론 ARIMA모델이 있습니다. 

 

ARIMA는 자기 회귀(AR), 차분(I), 이동평균(MA)의 세 가지 구성 요소를 결합하여 시계열을 분석합니다. 

 

자기 회귀는 과거 값의 영향을 모델링, 이동평균은 시계열의 오차를 모델링하고

 

비정상성 데이터를 정상화(Stationary) 하기 위해 차분을 사용합니다. 

 

 

AI를 활용한 시계열 분석 알고리즘

전통적인 모델이지만 ARIMA모델에도 여러 한계점이 나오고

 

계절성과 추세를 반영한 모델이나 정상성 데이터를 위해 분수미분을 이용하는 등의 시도가 이루어졌지만

 

다른 여러 분야와 마찬가지로 딥러닝을 활용해서 시계열 분석을 진행하도록 발전하게 되었습니다. 

 

교과서적인 내용으론 시계열 분석을 위한 RNN, LSTM 모델등이 대표적인데

 

 

RNN 셀과 연속적 셀의 구조를 가진 RNN

장기 의존성 문제를 해결하기 위해 설계된 LSTM은 시계열데이터의 의존성 모델을 위해 연속적인 시계열 데이터를 접합시키고

 

RNN에서 여러 데이터들을 처리하다 보니 Vanishing gradient, exploding gradient 문제들이 발생했던 것을

 

Gate를 도입해서 정보가 흐르는 정도를 조절하여 해결하고자 했습니다. 

 

LSTM 셀 구조

 

RNN보다 장기 의존성을 다루는 능력이 향상되었지만

 

매우 긴 시퀀스의 데이터에서는 여전히 정보의 손실이 발생할 수 있습니다. 

 

그리고 RNN 모델의 특성상 병렬처리가 어려워 학습 시간이 길었고, 구조 자체가 복잡하기도 했습니다. 

 

이러한 한계점들을 느끼고 있을 때 Transformer모델이 제안되었습니다. 

 

Transformer는 'Attention Is All You Need'라는 논문에서 처음 소개되었고

 

언어모델에서 Attention 메커니즘, 시퀀스 내의 모든 단어 간의 관계를 동시에 고려하여 한 문장 안에서 문맥을 파악하는데 유용했습니다.

 

이를 응용하여 시계열  데이터의 각 타임스텝이 다른 타입스텝과 관계가 어떤지 학습하여 

 

각 시간 단계가 과거, 현재 및 미래의 모든 시간 단계와 상호작용을 파악하는 게

 

시간에 따라 다른 패턴과 종속성을 파악하는데 도움이 되었습니다.

 

Transformer 구조의 시계열 데이터 분석 구조

 

AutoFormer, FEDFormer 등의 알고리즘을 만들어 내었지만 

 

Transformer는 지역성을 잘 표현하지 못하기도 하고 시계열데이터가 결국 연속적으로 변화하는 특징들을

 

잘 잡아내지 못하기도 했습니다. 

 

그때 마침 DLinear라는 간단한 선형모델이 추세와 잔차들을 분석하는 구조로 기존 Transformer 모델 성능을 

 

뛰어넘어 SOTA가 되기도 했습니다. 

DLinear 모델의 구조

 

이렇듯 딥러닝 연구원들의 활발한 연구로 계속해서 새로운 논문들이 나오고 있고

 

이런 새로운 지식들이 넘쳐나는 시대에 필요로 하는 곳에 접목해서 가치를 찾아내면 정말 좋겠죠?

 

그래서 이런 춘추전국시대에 버금가는 여러 모델들에서 현시점 시계열분석 계열 SOTA모델인

 

Timesnet모델을 살펴보려고 합니다. 

 

 

Timesnet

ICLR 2023, Timesnet 모델이 시계열 분석 SOTA 알고리즘으로 등장했습니다. 

 

Timesnet은 추세, 계절성, 주기성을 가지는 시계열데이터에서 "주기성"에 초점을 둔 모델입니다.

 

추세, 계절성, 잔차들은 관찰된 시계열데이터를 분해해서 구할 수 있습니다. 

 

주기성은 주기, 진폭을 가지며 발생하는 신호와 같은 데이터입니다. 계절성이 규칙적이고 균일된 기간에서 예측 가능한 패턴이라면 

 

주기성은 불규칙적 시간 간격으로 발생하는 반복적인 패턴을 나타냅니다.

 

계절성과 같이 1시간, 하루, 1년이라는 시간에 상관없이 나타납니다. 

 

예를 들자면, 특정 기간마다 진행되는 미국 선거기간에 따라 주가가 영향을 받는 건 계절성

 

우리가 예측할 수 없는 긴축사이클, 경제의 호황과 불황 사이클 등은 주기성으로 볼 수 있습니다.

 

일정한 시간간격으로 발생하지 않고 원인과 지속시간도 다양합니다. 

 

 

Multi Periodicity

시계열데이터는 위에서 말한 주기를 가지고 있습니다. 

 

그리고 한 주기만 있을 뿐 아니라 여러 주기를 가지고 있고, 하나의 주기 안에도 많은 데이터가 담겨있습니다. 

 

Timesnet이 집중하는 것은 이런 여러 주기들 사이, 주기 안에서의 데이터를 파악하는데서 시작합니다. 

 

Timesnet Multi Periodicity

위 사진을 보면 시계열 데이터 안에 여러 주기들이 있고

 

Intraperiod(주기안), Interperiod(주기 간) variation들을 2차원 텐서로 변환하여 사용합니다. 

 

우리가 긴축사이클 내에서도 다양한 변수들이 있고

 

긴축사이클과 유동성 사이클 간에서도 영향을 주는 포인트들이 있을 수 있습니다. 

 

우리가 모르는 이런 주기들 내외적 패턴들을 캡처해 내겠다는 뜻입니다. 

 

 

Fourier Transform

우리가 모르는 걸 어떻게 하는지 대략적으로 설명드리자면

 

먼저 주기함수로 입력받은 데이터를 Fourier Transform을 진행하여 분석합니다. 

 

Fourier Transform은 시계열데이터를 여러 주기함수로 분해하여 주기별 Period, Amplitude를 분석합니다. 

 

여러 주기함수로 분해하는 이유는 

 

주기를 가진 파동은 아무리 복잡하게 이루어져 있더라도

 

단순한 파동의 결합으로 이루어질 수 있다는 이론적 접근에서 시작됩니다. 

 

즉, 주기성을 파악해 두면 복잡한 파동들을 결국 간단한 식으로 나타낼 수 있습니다. 

 

시계열데이터 t를 sin, cos 삼각함수로 표현되는 주기로 나타낼 수 있고

 

이런 상수와 삼각함수를 Euler Equation을 통해 하나의 간단한 식으로 표현할 수 있는데

 

이 과정은 이론을 증명하는 과정이기 때문에 넘어가고

 

시계열데이터, 그중 주기함수를 손쉽게 이용하기 위해 사용된다고 이해하고 Timesnet의 구조로 넘어가도록 하겠습니다. 

 

 

Timesnet Structure

 

FFT Reshape

먼저 시계열데이터들을 Fast Fourier Transform을 적용합니다.

 

Fast Fourier Transform은 Discrete Fourier Transform을 좀 더 효율적으로 계산하기 위한 알고리즘입니다. 

 

FT : n^2, FFT : n x log(n) 시간복잡도를 가집니다. 

 

FFT를 통해서 Top K 개의 의미 있는 주기를 찾아냅니다. 

 

의미 있는 주기의 기준은 Amplitude값이 높은 것을 찾는 것으로 했습니다. 

 

선정된 Top K 개의 Frequency에 해당하는 Period를 구하고 Reshape 과정을 진행합니다. 

 

Frequency와 Period를 바탕으로 K개의 2 DTensor 형태로 변환을 합니다. 

 

이제 이 변환된 텐서들에서 variation들을 capture해나 가면 됩니다. 

 

 

Capture Temporal varians using Inception block

 

2D Tensor를 Inception block을 통해서 처리합니다. 

 

Inception block은 이미지 분류 작업에서 많이 사용되는 구조인데

 

GoogLeNet, Inception Network로 알려져 있습니다. 

 

주요 아이디어는 하나의 네트워크 레벨에서 다양한 크기의 Conv 필터를 적용하여 다양한 스케일 특징을 잡아내는 것입니다. 

 

설명은 너무 어려워질 것 같기도 하고 저도 깊게는 알고 있지 않아서

 

이 모델을 이용해서 무얼 할 건지 관심 있는 여러분들에겐 대략적으로 상관관계를 파악한다 정도로 이해해도 좋습니다. 

 

 

상관관계를 파악한 후에는 역변환 과정을 통해 집계를 진행하고 

 

서로 다른 주기들의 variation을 고려한 multi scale 2D 데이터들을 얻을 수 있습니다. 

 

이 데이터를 기반으로 시계열 예측, 분류모델로 사용할 수 있습니다. 

 

주기를 띄고 있는 상태에서 가격을 예측하거나

 

현시점이 어느 사이클에 있는지 거시적으로 확인할 때 활용할 수 있을 것으로 생각합니다. 

 

 

단기 시계열 예측 테스트

GPU를 사용해서 직접 4년간의 암호화폐 1시간 데이터를 가져와서 학습시켰습니다. 

 

168시간을 input으로 다음 24시간을 예측하는 모델로 학습했고

Prediction(예측값)과 GroundTruth(실제값)을 나타내어 보았습니다. 

 

예측을 잘 한 케이스

 

SOTA 알고리즘답게 단기 예측을 잘하는 순간들이 정말 많았습니다. 

 

시계열이 가지는 주기성을 잘 분석해서 예측을 잘 수행할 수 있고

 

예측뿐 아니라 분류문제에 쓰이게 된다면

 

특정 시기가 경제 사이클 중 어떤 사이클에 존재하는지 잘 라벨링 할 수 있어서 

 

다음 모델을 위한 메타데이터 생성에도 크게 기여할 것으로 기대됩니다. 

 

하지만 시계열데이터는 주기성뿐 아니라 추세나 계절성

 

그리고 이것들로는 설명되지 않는 데이터들로 이루어져 있습니다. 

 

그리고 긴 시계열데이터를 모두 학습하면서 현재 시점엔 의미 없는 주기가 있을 수도 있어서

 

주기성을 이용한 Timesnet 모델이더라도

 

급변하는 구간이나 예측이 차이가 많이 나는 사례도 있었습니다. 

예측을 잘 못한 케이스

 

결과가 어떻더라도 연구자들이 현재시점, 지금까지 만들어온 최고 수준의 모델을 설명드렸고

 

학습하는 과정, 데이터를 조작하는 과정에 따라서 성능은 아주 큰 차이를 만들어낼 수 있습니다. 

 

앞으로 이런 모델들을 자산처럼 쌓아나가서 시장 참여자들에게 제공해 주려고 노력하고 있습니다. 

 

제가 개발자이지만 자산시장에 참여한 많은 사람들, 그들이 위대한 투자자이건, 투기장세의 트레이더건

 

그들이 만들어낸 문화나 커뮤니티 소통의 장들이 즐거웠고

 

제가 가진 지식과 기술을 통해 이 분야에 가치로 만들어낼 것이 무엇인가 고민을 많이 하고 있습니다.

 

투자자, 트레이더들이 투자원칙이나 매매 아이디어를

 

저의 AI모델에서 주는 시그널 혹은 데이터들에 영향을 받아가는 것이 저의 작은 목표이기도 한데요

 

그러기 위해선 저도 시장참여자들이 어떤 데이터를 원하는지

 

그리고 가치 있는 데이터 전달을 위해서 새로운 지식을 계속 받아들이고 연구하는 과정을 진행할 예정입니다. 

 

많은 투자자, 트레이더분들에게 제가 전하는 것들이 가치로 여겨졌으면 좋겠고

 

그러기 위해서 더 노력하겠습니다. 

 

감사합니다. 

반응형