본문 바로가기
Project/BTC Volatility Prediction

BTC 시계열 모델링 워크플로우 및 각 단계별 트러블 정리

by skwkiix 2024. 2. 24.
728x90

워크플로우 (요약)

0. Loading Data

     - resampling 

     - returns, volatility 

 

1. Preprocessing(전처리)

1-1. checking missing value , imputation

    - ohlc, quote_qty : spline interpolate

    - returns : Arima 

    - volatility : Arima

 

2. Technical Indicators(파생변수 생성)

    - MACD

    - Stochastic Oscillator

    - ATR

    - RSI

    - Ultimate Oscilator

    - ROC

    - RSI

    - Boolinger Band

 

2.1. checking Missing Value

 

3. Feature Engineering

    - (Baseline Model Generation)

    - 정상성 만족 데이터셋/ 전체 데이터셋 분류 성능 비교 --- 성능 비교 후 정상성 가정 만족시킬지 결정

    - FI/PI 확인 후, 후진제거법으로 우선 성능 비교

    - 파생변수 조합 생성 후, 성능 비교

 

4. Model Efficiency Optimization

    - Randomsearch 로 하이퍼 파라미터 구간 구체화

    - Gridsearch/ Bayesian 으로 최적화


각 단계별 트러블 및 결정사항 정리

0. Loading Data

: 전체 데이터 개별 불러오기 및 Concat, 리샘플링 단계

 

🔎  개별 함수 처리 후 concat 시에, 결측치가 더 많이 생길 수 있음(변동성 계산 시, window값에 따라 파일 당 결측치 생성)

 👉  리샘플링 함수 처리, concat, 변동성 계산 흐름으로 처리해야함(대용량 데이터 처리 패키지 사용)

https://datapilots.tistory.com/87

 

TICK 데이터 리샘플링 & OHLCV 변환 + 트러블슈팅

0. 공모전 개요 2024-1 데이터 학회 연합 ASCEND 채용 연계 데이터 분석 공모전 틱데이터 활용 비트코인(BTC)의 단기 변동성 예측 모델링 주관/ 주최 : BDA , ASCEND(퀀트 트레이딩 기업) 참여 학회 : BDA, KUB

datapilots.tistory.com

( ☝️ 포스팅 참고 )

 

1. Preprocessing(전처리)

: 리샘플링한 데이터 EDA 및 결측치 처리 단계

 

- 원본데이터(price, quote_qty 등) 결측치 > 가격, 거래량 변동이 심한 코인 특성 상, 선형보간보다는 스플라인 보간이 적합하다고 판단

- 변동성 계산 시, window 값에 따라 가장 앞 부분에서 연속으로 결측치 발생

    - 유사 케이스에서는 bfill, ffill 사용한 경우가 많았으나, 불가함 > 시계열 예측 모델 (Arima) 사용해서 보간, 이때 p,k,q 는 auto arima 사용해서 계산


2. Technical Indicators(파생변수 생성)

- y 변수인 volatility의 예측 성능을 높이기 위한 Technical Indicators 선정

 

🔎 매수/매도 관련 기술지표과 단기적인 가격 변동성과의 관계

  • 매수/매도 관련 지표들은 구매자들의 심리와 행동을 반영하여 단기적인 가격 움직임을 예측하는 데 도움이 된다.
  • 매수 신호가 강하면 가격이 상승할 것이고, 매도 신호가 강하면 하락할 것이다.

🔎  선정한 기술지표

  1. MACD (Moving Average Convergence Divergence): 단기 이동평균과 장기 이동평균의 차이를 측정하여 추세를 파악
    • MACD 두개의 이동평균 사용(일반적으로 12일, 26일)
      • MACD Line = 단기 이동평균 - 장기 이동평균
      • Signal Line = MACD Line의 9일 이동평균
      • MACD Histogram = MACD Line - Signal Line
  2. Stochastic Oscillator: 가격이 일정 기간 동안의 최고가와 최저가에 대해 어디에 위치하는지를 보여주는 지표(FI 낮을 것으로 예상) 
    1. %K = ((현재가격 - n기간 중 최저가격) / (n기간 중 최고가격 - n기간 중 최저가격)) * 100
    2. %D = %K의 m기간 이동평균 (보통 3일)
  3. ATR (Average True Range): 변동성을 측정하는 지표 (FI 높을 것으로 예상)
    • True Range(TR)의 평균
    • TR = max(high - low, abs(high - previous_close), abs(low - previous_close))
    • ATR = (이동평균(TR, n))
  4. RSI (Relative Strength Index): 상승일과 하락일 간의 상대적인 강도
    • RSI = 100 - (100 / (1 + RS))
    • RS :  평균 상승 가격의 평균 손실 가격으로 나눔
    • RS = (평균 상승 가격의 n일 이동평균) / (평균 손실 가격의 n일 이동평균)
  5. Ultimate Oscillator: 단기, 중기 및 장기의 세 가지 기간에 대한 평균가격을 사용하여 상대적인 가격의 힘을 측정
    • BP = 현재 종가 - 현재 가장 낮은 종가 혹은 이전 종가
    • TR = 현재 가장 높은 종가 - 현재 가장 낮은 종가
    • AVG7 = 7일 동안의 BP 합 / 7일 동안의 TR 합
    • AVG14 = 14일 동안의 BP 합 / 14일 동안의 TR 합
    • AVG28 = 28일 동안의 BP 합 / 28일 동안의 TR 합
    • Ultimate Oscillator = ((4 * AVG7) + (2 * AVG14) + AVG28) / 7 + 14 + 28
  6. ROC (Rate of Change): 가격의 변동률을 측정
    • ROC = ((현재가격 - n일 전 가격) / n일 전 가격) * 100
  7. Bollinger Bands: 주가의 변동성을 평가하고 상승 및 하락 트렌드를 파악
    • 중심선(Center Line): n일 동안의 이동평균
    • 상단 밴드(Upper Band): 중심선 + (n일 동안의 표준편차 * K)
    • 하단 밴드(Lower Band): 중심선 - (n일 동안의 표준편차 * K)

👉 macd,atr 등 기술 지표들 간의 관계성(어떤 지표랑 함께 사용하는지 등)서치 및 각각 입력 변수들 값 지정 > 개별 기술 지표간 중요도 1차 평가(예상하는 FI 가 낮더라도 최대한 많이 포함) > 기술 지표 확정 후 입력 변수 값 경우의 수 파악

 


 

3. Feature Engineering

: 정상성 검정 후, 기술 지표 포함 한 여러개의 데이터 프레임 생성 

 

- 정상성 검정

    - 시계열 데이터 예측 모델 사용 시, 정상성 검정 하고 진행하지만, 해당 모델이 아닌 랜덤포레스트를 사용하기에, 정상성을 만족시켜야 하는지에 대한 판단 필요

 

🔎 시계열 모델이 아닌, 랜덤포레스트로 시계열 데이터를 예측할 때에도, 정상성 확보가 필요할까?

  • 전반적으로 정상성을 만족하는 데이터에서 모델의 성능이 더 좋을 수 있다.
    1. 모델은 정상성을 가진 데이터에서 더 일관된 예측을 수행할 가능성이 높음
    2. 모델이 시간 패턴을 더 잘 파악
    3. 모델 신뢰성 증가: 통계적 가정 만족
  • 정상성을 갖추지 않더라도 잘 동작할 수 있다.
    • 랜덤포레스트는 비모수적이고 비선형적인 특성을 가짐

변동성 예측 측면에서 안정성 일관성이 중요하고, 성능 개선 측면에서는 정상성 확보한 데이터에 대한 실험이 필요함

👉 결론, 베이스라인 모델로 가장 먼저 비교하고 판단하는 것이 좋을 것 같다.

📊 결과 , 차분 전 데이터가 더 나은 성능(mape)을 보임

 

- 파생변수 조합 생성

👉 Feature Importance, Permutation Importance 확인 후,

변동성 예측에 가장 낮은 영향력을 보인 변수들을 일부 제거하고 조합 찾기 시작

 


 

4. Model Efficiency Optimization

: MAPE 성능이 가장 좋은 파생변수 조합 결정 후, 랜덤포레스트 하이퍼 파라미터 최적화 단계

 

- randomsearch로 범위 특정 후, 베이지안 최적화를 통해 파라미터를 특정한다.

 

👉 최종 파라미터 결정에는, ascendex API를 통해 추출한 시장데이터로 성능평가를 진행한다.

(3일동안의 예측값과 시장데이터의 실제값 비교, 아래 포스팅 참고)

https://datapilots.tistory.com/91

 

Ascendex 코인 OHLCV 데이터 API 크롤링

코인 ohlcv 데이터를 크롤링해보자. 거래소는 Ascendex 이고, 공식문서는 다음과 같다. ASCENDEX 공식 문서 https://ascendex.github.io/ascendex-pro-api/#ascendex-pro-api-documentation API Reference ascendex.github.io 1. API Key 발

datapilots.tistory.com

 

728x90