[논문 리뷰] Deep learning in predicting cryptocurrency volatility

immanuelk1m·2023년 12월 30일
0

Paper Review

목록 보기
1/9

Info

Deep learning in predicting cryptocurrency volatility

  • 원고 접수일: 2020년 12월 23일
  • 수정본 접수일: 2021년 8월 10일
  • 게재일: 2022년 3월 2일

Abstract

암호화폐 변동성을 예측하는 것에 초점

  • RNN 보다 예측력이 좋은 Jordan NN을 사용
  • BTC, ETH, XRP Data 사용

Introduction

  • GARCH Model을 사용한 변동성 예측 많은 연구 진행
  • 2013년 비트코인 가격 폭락에서의 수익률과 변동성 간의 관계 [15]
  • Predicting the Volatility of Cryptocurrency Time-Series [18]
  • Asymmetric volatility in Crypto Market [20] (상승장 / 하락장)
GARCH

ARCH 모형의 파생 모델로 어떤 시계열의 평균보다 분산은 예측에 초점

ML

  • BTC Price Prediction Using Blockchain Data [39, 40] (Onchain data)

  • Generalized Linear Models (GLM), Random Forest, SVM, Bayesian Neural Network, ARIMA, LSTM, seq2seq, Gradient Boosting Decision Trees

  • Section 2 : 암호화폐 변동성을 설명하는데 사용된 구현된 모델 설명

  • Section 3 : 암호화폐 시장의 변동성에 대한 조사와 사용된 모델들의 성능 비교

  • Section 4 : 모델 평가

Section 2

Non-Linear-Autoregressive Neural Network

  • 이전 N개의 변동성을 Input으로 Multilayer을 통해 향후의 변동성 예측

Jordan Neural Network (RNN)

Vanila RNN

  • 기존 RNN 모델

  • 기존 RNN에 이전 값을 input으로 받은 것이 차이점

Self Exciting Threshold Autoregressive (SETAR)

  • AR model

Section 3

Volatility Measurement in Paper

  • ABS(ln(High) - ln(Low))
  • Price Std (Bollinger Band)
  • Price IQR (Candle Size)

Other Volatility Measurement

변동성을 어떻게 정의하느냐에 따라 Time Series의 모습이 다르게 나타남

Parkinson 변동성 (V_P)

기하 브라운 운동을 가정 (BB)
Drift(가격 변화의 지속적인 추세)가 없다고(0 이라고) 가정

VP=14ln(2)ln(HtLt)2V_P = \frac{1}{4\ln(2)} \cdot \ln\left(\frac{H_t}{L_t}\right)^2

Garman-Klass 변동성 (V_GK)

Drift(가격 변화의 지속적인 추세)가 없다고(0 이라고) 가정
Open Close 사용하므로, Parkinson 보다 효율적

VGK=12ln(HtLt)2(2ln(2)1)ln(CtOt)2V_{GK} = \frac{1}{2}\ln\left(\frac{H_t}{L_t}\right)^2 - (2\ln(2) - 1)\ln\left(\frac{C_t}{O_t}\right)^2

위 두 변동성은 Drift가 0이 아닌 경우 비효율적

Rogers-Satchell 변동성 (V_RS):

변동성이 non-zero-mean 인 경우 적합

VRS=1nt=1n[(HtCt)(HtOt)+(LtCt)(LtOt)]V_{RS} = \frac{1}{n} \sum_{t=1}^{n} \left[ (H_t - C_t)(H_t - O_t) + (L_t - C_t)(L_t - O_t) \right]

Yang-Zhang 변동성 (V_YZ):

기하 브라운 운동 & Drift 0
Opening Jump (갭상승) 측정 가능
Drift에 대해 독립
Open Close 변동,
V_RS에 대해 가중치 k

VYZ=(VO)+kVC+(1k)VRSV_{YZ} = (V_O) + k \cdot V_C + (1 - k) \cdot V_{RS}

Section 4

DATA

2013.4.28 ~ 2019.12.15 까지의 BTC, ETH, XRP Daily Price Data

  • Train set 85% (2013.4.28 ~ 2018.12.17)
  • Test set 15% (2018.12.18 ~ 2019.12.15)
  • Target : V = ln(High) - ln(Low)

Model Set

  • R
  • packages: tsDyn for NLANN and SETAR mode
  • RSNNS for JNN

SETAR, NNLAN

  • tsDyn 라이브러리 사용해 모든 hyper-parameter 최적화
  • AIC criterion(모델이 데이터에 fit한 정도)를 최대화하는 값으로 Tune

JNN

  • parameter 1,2 : 이전 시간의 값들을(예측값, 실제값) 어느 범위 값으로 랜덤하게 설정하여 현재 노드의 Input으로 반영할 것인지
  • parameter 3,4 : hidden layer와 out layer의 각각 weight
  • parameter 5 : 이전의 volatility를 y(t)에 어느 정도 반영할 것인지

(1, -1, 0.3, 1, 0.5)로 설정

Validation

  • 데이터 부족으로 인해 b = 10,000 / 369 days Bootstrap (복원추출)
  • Metric : MSE, MAPE

Mean Squared Error (MSE):

MSE=1Tt=1T(YtY^t)2\text{MSE} = \frac{1}{T} \sum_{t=1}^{T} (Y_t - \hat{Y}_t)^2

Mean Absolute Percentage Error (MAPE):

MAPE=1Tt=1TYtY^tYt\text{MAPE} = \frac{1}{T} \sum_{t=1}^{T} \left| \frac{Y_t - \hat{Y}_t}{Y_t} \right|

Result

RMSPE

JNN : 0.023
NLANN : 0.0916
SETAR : 0.095

ETH & XRP

  • JNN이 다른 모델에 비해 시계열의 persistence (현재의 값이 과거의 값에 강하게 영향 받는 정도)가 큼

Sub volatility

VtSD=SD(ln(Ct))\\ V_t^{SD} = SD(\ln(C_t)) \\
VtIQR=IQR(ln(Ct))\\ V_t^{IQR} = IQR(\ln(C_t)) \\

Conclude

  • RNN > NLANN > classical statistical model
  • 시계열의 흐름을 읽는 것이 중요

Thought

  • 제시한 Graph들로만은 time series lagging 이 발생했는지 확인 어려움.
  • Candle Size가 Daily이고, OHLC Feature만 사용한 점이 아쉽지만, 의외로 결과 값이 잘 나오는 것이 주목할 만함.
  • 기존 방식에서 Neural Network 방법론으로의 전환이 필요하다 생각
profile
개발 새발

0개의 댓글