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에 이전 값을 input으로 받은 것이 차이점
Self Exciting Threshold Autoregressive (SETAR)
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=4ln(2)1⋅ln(LtHt)2
Garman-Klass 변동성 (V_GK)
Drift(가격 변화의 지속적인 추세)가 없다고(0 이라고) 가정
Open Close 사용하므로, Parkinson 보다 효율적
VGK=21ln(LtHt)2−(2ln(2)−1)ln(OtCt)2
위 두 변동성은 Drift가 0이 아닌 경우 비효율적
Rogers-Satchell 변동성 (V_RS):
변동성이 non-zero-mean 인 경우 적합
VRS=n1∑t=1n[(Ht−Ct)(Ht−Ot)+(Lt−Ct)(Lt−Ot)]
Yang-Zhang 변동성 (V_YZ):
기하 브라운 운동 & Drift 0
Opening Jump (갭상승) 측정 가능
Drift에 대해 독립
Open Close 변동,
V_RS에 대해 가중치 k
VYZ=(VO)+k⋅VC+(1−k)⋅VRS
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=T1t=1∑T(Yt−Y^t)2
Mean Absolute Percentage Error (MAPE):
MAPE=T1t=1∑T∣∣∣∣∣∣YtYt−Y^t∣∣∣∣∣∣
Result
RMSPE
JNN : 0.023
NLANN : 0.0916
SETAR : 0.095
ETH & XRP
- JNN이 다른 모델에 비해 시계열의 persistence (현재의 값이 과거의 값에 강하게 영향 받는 정도)가 큼
Sub volatility
VtSD=SD(ln(Ct))
VtIQR=IQR(ln(Ct))
Conclude
- RNN > NLANN > classical statistical model
- 시계열의 흐름을 읽는 것이 중요
Thought
- 제시한 Graph들로만은 time series lagging 이 발생했는지 확인 어려움.
- Candle Size가 Daily이고, OHLC Feature만 사용한 점이 아쉽지만, 의외로 결과 값이 잘 나오는 것이 주목할 만함.
- 기존 방식에서 Neural Network 방법론으로의 전환이 필요하다 생각