1. 대회 설명
- 목표: 일본 도쿄 증권거래소에서 상장된 주식의 단기 수익률(returns) 을 예측
- 문제 유형: 시계열 기반의 순위 예측(rank prediction)
- 데이터 배경
-> 주식별 일간 데이터(stock_price.csv)와 경제 지표(financials.csv) 등이 제공
-> 다수의 파생 변수 및 금융 지표가 포함되어 있으며, 학습 시 시계열 데이터 처리와 결측치 처리가 중요
2. 성능 평가 방식 이해
- RankIC(TOP200)
-> 예측한 리턴값을 기준으로 상위 200개 종목을 선정한 후, 실제 리턴과의 순위 상관계수(rank correlation) 를 기반으로 한 누적 점수로 평가
-> 단순 RMSE와 달리 예측값의 상대적 순서가 중요
3. 데이터 전처리
3-1) EDA
- 데이터는 종목별 일별 시계열 구조이며, 특정 날짜 또는 종목에서 일부 결측이 발생함
- Close, Open, Volume, AdjustmentFactor 등의 기본 지표가 존재하며, 보정 종가 생성이 필요함
3-2) Data Cleansing
- AdjustmentFactor를 활용해 보정 종가(AdjustedClose) 생성
- 예측 날짜 이전 데이터만 활용하여 정보 누수 방지
- ExpectedDividend 컬럼은 Kaggle에서는 주어지지만, Colab에서는 별도로 수동 생성 진행
3-3) Feature Engineering
- return_1day, close/open 비율, high/low 비율, 변동성(rolling std), 이동평균 등을 생성
- ExpectedDividend > 0일 경우 1로 처리하여 리워드 항목으로 활용
- 개별 종목에 대해 하루치 피처를 생성 후 예측 점수 계산
4. 모델링
4-1) 모델
- 순수한 rule-based 방식으로 모델은 사용되지 않음
4-2) 데이터 분할
- train_files 내 과거 데이터를 누적하여 특정 날짜 이전만 활용 (정보 누수 방지)
- 예측 대상 날짜(test_date)는 수동으로 지정하여 진행
4-3) 하이퍼파라미터 튜닝
4-4) 최종 성능
5. 정리(Lesson & Learned)
- Kaggle API (iter_test, env.predict)는 Colab에서 작동하지 않으므로 로컬 방식으로 예측 및 제출 구조를 재구성해야 함
- Rank 기반 평가에서 중요한 것은 절대값보다 순서라는 점을 체감
- 시계열 데이터를 다룰 때는 정보 누수 방지와 시간 순서 기반 피처 설계가 중요
JPX Tokyo Stock Exchange Prediction