[Kaggle] Optiver Realized Volatility Prediction | Tentative 3rd Place Solution (6th in Public) - life is volatile

immanuelk1m·2023년 7월 15일
0

Kaggle

목록 보기
6/8

Overview

https://www.mk.co.kr/news/it/10196007

https://portfoly-yoonniverse.vercel.app/user/62d53db4ca5fd788ffaa8727/yoonsoo-kim

https://www.upstage.ai

2등 코드가 국내 스타트업에서 제출.

4등 코드는 LightGBM과 ANN을 단순히 쌓아서 구성한 모델이지만,
마찬가지로 모델보다는 Feature engineering를 중요하게 봄

LightGBM(tree)에서 feature importance가 확인 가능함.
https://www.kaggle.com/code/tommy1028/lightgbm-starter-with-feature-engineering-idea

Nearest Neighbor

해당 solution도 1등 코드와 마찬가지로 Nearest Neighbor 기반의 Feature를 생성하였음.

1등 코드에 비해 구체적으로 설계하지는 않았지만, 하나의 time_id와 비슷한 상황(similar market conditions)을 가진 다른 time_id를 찾으려고 하였음.

또한 해당 코드에서는 Time order를 어떻게 정렬해야 하는지 구체적으로 다루지 않았다고 함.

Differences

- Adding the distance ratio of the 1st nearest time_id and k-th nearest time_id
첫번째로 가까운 Nearest Neighbor과의 distance ratio Feature를 추가

- No time-series cross-validation
the idea of time-series reverse engineering에 대한 아이디어가 없었으므로, time-series cross-validation 검증은 진행하지 않음

Target Transformation

모델의 견고성(Robustness)을 높이기 위해 Target을 수정하였음.

Stock volatility could behave as a non-stationary series, meaning that the level of volatility might be unstable over time but the change of volatility is less likely so.

주식 변동성은 non-stationary, 평균, 분산이 시간이 지남에 따라 변하기 때문에 변동성의 수준도 시간이 지남에 따라 변한다.
하지만, 변동성의 변화율은 변하는 수준이 크지는 않다.

e.g. 평소에 -2% ~ +2% 대의 변화를 가지던 삼성전자가 내일 갑자기
-5% ~ +5% 대의 변화를 가지고 움직일 확률은 적다는 이야기?

따라서 이러한 기저를 바탕으로, target를 재정의

(transformedtarget)=targetrealizedvolatility of 0 to 600 seconds(transformed\,target) = \frac{target}{realized\,volatility\ of\ 0\ to\ 600\ seconds}

Question

Volatility Clustering??
VIX??

300 seconds Model

(1) train data + test_data를 concat
(2) 600초(seconds_in_buckets)을 절반으로 나누어
(3) 0~300초 사이의 특성을 뽑아내고,
(4) 해당 특성을 사용해, 300~600초의 realized volatility를 예측
(5) 마찬가지로 300 ~ 600초 사이의 특성을 뽑아내고,
(6) 해당 특성을 사용해, 600~900초의 realized volatility를 예측

(3) ~ (6) 모든 과정에서 뽑아낸 특징과 예측값을 main model에 사용

지난번 미팅 때 이야기한 과거 데이터 및 시계열의 흐름을 담아내는 특징이 새로 추가 됨.

The best part of this idea was that we were able to train our model based on test data. ??

Macro Estimation

개별 주식들은 각각의 매크로 환경에 의해 가격이 결정 됨.

정확한 설명은 아니지만 CAPM에서 베타와 각각의 시장 프리미엄이 다르다는 것을 의미.

따라서 개별 주식의 변동성을 예측하기보다 각 time_id 마다 모든 stock_ids의 평균 값을 예측하였음.

profile
개발 새발

0개의 댓글

관련 채용 정보