[Trading Machine Project] Orderbook Aggregation

immanuelk1m·2024년 2월 4일
0

Trading Machine Project

목록 보기
8/20

Instruction

Future 10 min Reailzed Volatility Prediction을 목표로 두고

DeepLOB 모델을 사용하며 겪은 문제 및 기존 방식을 고민.

DeepLOB

Code From

https://github.com/zcakhaa/DeepLOB-Deep-Convolutional-Neural-Networks-for-Limit-Order-Books/blob/master/jupyter_pytorch/run_train_pytorch.ipynb
  • 코드는 해당 Github에서 참조한 틀을 일부 수정해서 진행
  • 기존 코드는 Lookback 100개 Orderbook을 사용해 향후 방향성 예측
  • Upbit는 1초에 6개 orderbook이므로 약 1800개(10분)이상의 Lookback을 두고 진행해야 함

Problem 1 : RAM * T

수십만개의 행을 데이터 셋으로 만드려면 하나의 행이 이전 T개의 행을 담은 2차원 데이터로 확장되는 문제가 발생

기존 코드에서는 이전 100개의 행을 하나의 행으로 다뤄서 RAM 공간에 무리없이 많은 양의 데이터를 저장 후 모델에 전달이 가능했지만, 현재 목표에서는 이전 1800개의 orderbook을 다 다뤄야하는 상황이 발생해 메모리 공간의 부담이 커지게 됨

Parameter

  • Train / Val / Test 에 필요한 데이터 개수를 약 85000개로 고정
  • Lookback 값인 T 값을 줄임

Orderbook Aggrigation

  • ticksize의 데이터에서 가격과 호가잔량의 큰 변화가 나타나지 않으므로 Orderbook Aggrigation 진행하여 Data Size를 감소

이렇게 하면 Grouping에서 문제가 발생하게 됨

Model Save

  • 85000개로 고정 시켜 학습한 모델을 저장 후 메모리 초기화 후 다른 데이터로 다시 학습

Time Grouping or Row Count Grouping

  • '2024-01-21T10:39:58.276Z' 라면 '2024-01-21T10:39:58'에 해당하는 모든 행을 평균, 최빈, 최대, 최소 값으로 묶는 방법

혹은

  • 초에 6개 정도 들어오는 데이터임을 생각할 때, 6개의 행을 이전에 말한 방법대로 묶는 방법

다만 위 방법을 사용하게 되면 호가 단위의 가격이 이상하게 바뀌는 현상이 발생하게 됨

Same Price Grouping

위의 방식에 따른 방안으로 호가 단위가 같은 가격을 모으는 방법을 시도

  • 가격은 변하지 않고, 호가 잔량만 바뀌는 행들을 모아서 Grouping

Problem 2 : Vaildation Loss / Performance

Github에서 진행한 사항들을 보면
모델의 Train Loss: 0.6513, Validation Loss: 0.8832 정도이고
정확도도 0.75로 꽤 정확한 모습을 보여주고 있음

  • Github 내용에서도 마찬가지로 Vaildation Loss가 이상적으로 줄어드는 모습은 보이지 않지만, 해결할 필요성은 있음.

Bid-Ask Spread

  • 현재 호가를 Bid Ask 각각 10개 사용하는데, 업비트에서 제공하는 최대 호가인 10개를 사용하거나 개수를 줄여서 5개로 하거나 해서 각각에 대한 성능 비교

Tail Model

  • 현재 마지막 부분을 LSTM을 사용해 Prediction에 사용하고 있는데, Inception 이후 부분의 데이터를 EDA하거나 LSTM이 아닌 Transformer, GBM 모델을 사용

  • AutoML 또한 적용

profile
개발 새발

0개의 댓글

관련 채용 정보