PRAESENTIA
[AFML] 2장 금융 데이터 구조 ~ 6장 앙상블 기법 본문
Advances in Financial Machine Learning
2장. 금융 데이터 구조
- 금융 데이터의 형태는 크게 4가지
- 기본 데이터: 자산, 부채, 영업, 비용/수익 등 회계 데이터
- 시장 데이터: 가격, 이자율, 변동성, 거래량, 시중 금리 등 거래소에서 발생하는 모든 데이터
- 분석: 분석가 추천, 신용 평가, 뉴스 감성 등 다른 원시 데이터를 분석한 파생 데이터
- 대체 데이터: 위성, CCTV 영상, 구글 검색, 트위터, 메타 데이터 등 다른 소스에 사용되지 않은 정보들
- 바(Bar) : 데이터가 테이블 형식으로 정리된 것(데이터프레임과 사실상 동일)
- 표준 바
- 시간 바: 거래량 가중 평균가(VWAP), 시가, 종가, 고가, 거래량 등
- 틱 바: 시간 바 변수들을 특정 거래 건수(ex. 1000건)가 발생할 때마다 추출
- 거래량 바: 틱 개수와 무관하게 증권 거래가 일어날 때마다 표본 추출(ex. 선물 계약이 1000단위로 거래될 때마다 추출)
- 달러 바: 사전에 정해둔 시장 가치(Market Value)가 거래될 때마다 관측값을 표본 추출하는 것
- 정보 주도 바
- 시장에 새로운 정보가 도달할 경우 더 자주 표본 추출하기 위함
- 틱 불균형 바(TIB): 정보의 불균형이 있을 경우 쓰임
- 표준 바
- 복수 상품 계열 다루기
- 개념: 가중치를 시간에 따라 동적으로 조정해야 하는 시계열 모델링 문제(대표적으로 리밸런싱)
- ETF 트릭
- 선물 스프레드를 거래하는 전략 수립 상황 가정
- 스프레드: 시간에 따라 변동하는 비중 벡터
- 가격은 수렴하지 않더라도 스프레드 자체는 수렴이 가능함
- 스프레드를 다루는 것의 문제점
- 1. 모델의 손익이 스프레드의 수렴으로부터 기인한 것으로 오해할 수 있음
- 2. 스프레드가 음의 값이 될 수 있음
- 3. 모든 자산의 거래 시점이 정확히 일치하지 않으므로 스프레드는 가장 최근 가격 레벨에서 항상 거래되는 것이 아님
- 해결책
- 1달러를 투자한다고 가정한 시계열 데이터를 생성하는 것, 일종의 ETF인 것처럼 모델링하고, 신호를 생성하고 거래하는 것과 마찬가지
- 선물 스프레드를 거래하는 전략 수립 상황 가정
- PCA 가중값
- PCA 기법을 통해 주성분별 리스크에 대한 기여도를 뽑아볼 수 있음
- 단일 선물 롤 오버
- 롤 오버: 금융 상품의 만기를 연장하는 방법
- “누적 롤 갭 시계열을 형성한 후 그 갭 시계열만큼을 가격 시계열에서 차감하는 것” - p.81
- 특성 샘플 추출
- ML의 특징
- 1. 표본크기가 커지면 몇몇 알고리즘은 효율적이지 못함(ex. SVM)
- 2. ML은 연관된 예제로부터 학습할 때 높은 정확성을 보임.
- 다운 샘플링
- 알고리즘 최적화를 위해 사용하는 데이터 양을 의도적으로 줄이는 방식 => 이건 좀 의외였음. 되려 학습 데이터 수를 줄인다니,,,
- 다만 무작위 다운 샘플링은 가장 연관된 예측값을 포함한다는 보장이 없기 때문에 비판을 많이 받음
- 이벤트 기반의 표본 추출
- 특정 이벤트(ex. 변동성 확대, 균형 레벨로부터 스프레드의 과도한 이탈, 거시 경제 통계량 발표 등)에 근거해서 표본을 추출하는 방식
- 예시1) CUSUM 필터
- 측정값이 목표값의 평균으로부터 얼마나 벗어났는지 계산하는 것.
- CUSUM 필터의 장점은 임계값 근처에서 발생하는 다수의 이벤트가 걸러진다는 것. 이 문제는 볼린저 밴드와 같은 보조지표들이 갖고 있는 취약한 문제점인데 이를 보완할 수 있음
- ML의 특징
3장 레이블링
- 고정기간 기법
- ML 논문이 가장 많이 쓰는 기법, 타임 바(h)를 고정시켜서 이익률과 전략을 고려하는 방식
- 가령 고정 기간 h 동안에 가격 변동률(수익률)이 일정 임계값 이하라면 라벨을 0으로, 그보다 양의 방향으로 크다면 1, 음의 방향으로 크다면 -1로 라벨을 부여하는 방식
- 그런데 이런 방식은 피하는 게 좋음
- 1. 타임 바는 좋은 통계적 성질을 갖지 못함
- 2. 관측된 변동성과 상관없이 동일한 임계값이 적용됨, 시점에 따라 변동성은 얼마든지 달라지는데 동일한 의사결정 1로 처리해버리는 것
- 대안
- 수익률의 임계값을 가중 표준 편차로 측정해 라벨링 하는 것
- 거래량 바나 달러 바를 활용하는 것 => 훨씬 더 상수에 가깝기 때문
- 그러나 위 두 가지 방식 역시 본질적인 해결책은 아님
- 동적 임계값 계산
- 변동성을 고려하여 이익 실현 및 손실 제한값 설정이 가능
- ML 논문이 가장 많이 쓰는 기법, 타임 바(h)를 고정시켜서 이익률과 전략을 고려하는 방식
- 삼중 배리어 기법
- 세 가지 배리어 중 최초로 도달한 배리어에 따라 관측값을 레이블하는 방식
- 2개의 수평 배리어와 1개의 수직 배리어 설정
- 두 수평 배리어는 이익 실현과 손절 한도에 의해 결정
- 세 번째 배리어는 포지션을 취한 후 지나간 바의 개수(만기 한도)
- 상단 배리어에 먼저 도달하면 1, 하단은 -1, 수직 배리어에 먼저 도달하면 두 가지 선택
- 바로 손익 부호로 하거나 0으로 설정하거나
- (저자는 전자를 선호한다 하나, 후자도 테스트는 해봐야 함)
- 방향 설정
- 다만 이 방식을 쓰려면 이익 실현 배리어와 손절 배리어를 구분하는 게 필요. 방향을 알아낸다는 것은 수평 배리어가 없거나 수평 배리어가 대칭이라는 의미
- 베팅 크기 설정
- 베팅 방향이 정해진 상태에서 크기를 결정하는 문제를 ‘메타 레이블링’이라 함
- 메타 레이블링을 사용하면 F1-score를 높이는데 좋음
- 이런 메타 레이블링 기법은 1차 모델이 ML이 아닌 계량경제나 기술적 트레이딩이라 하더라도 어디에든 부착하는 것이 가능한 게 장점
- 세 가지 배리어 중 최초로 도달한 배리어에 따라 관측값을 레이블하는 방식
4장 표본 가중값
- 금융 데이터의 또 다른 문제
- IID(Independent & Identically Distribution)이 위배됨, 즉 데이터 표본이 독립적이고 같은 확률 분포에서 추출되어야 하는데 이게 충족되지 않는 경우가 발생
- 대부분의 ML 모델은 IID 가정을 깔고 가기 때문에 문제가 됨
- 때문에 IID가 아닌 레이블을 다루는 방법이 필요, 이때 쓸 수 있는 게 표본 가중값 설계
- 배깅 분류기와 고유도
- 금융 데이터 추출은 푸아송 분포를 따르기에 IID로 가정하고 표본 추출을 하면 과대 적합이 됨
- 즉, 2가지 문제점이 발생. 1) 관측값이 서로 중복되거나, 2) OOB 관측치와 유사해짐
- 1번 문제는 부트스트랩을 비효율적으로 만듦. (6장 참고) 가령 랜덤 포레스트는 모든 트리가 비슷한데, 이 경우 과적합된 단일 결정 트리들이 여럿 복제되는 꼴
- 2번 문제는 IB와 OOB를 유사하게 만들어 정확도를 과하게 부풀림. (7장 참고)
- 이번 절에서는 1번 문제 해결에 집중
- 관측치 배깅
- 세 가지 해법이 존재함
- 1) 중첩된 결과를 전부 삭제하는 것.
- 그런데 완전 중복이 아닌 부분 중복이기에 무조건 삭제하면 정보 손실이 큼
- 2) 평균 고유도를 활용하여 불필요한 정보가 미치는 영향을 줄이는 것
- 6장에서 자세히 다룰 예정
- 3) 순차적 부트스트랩을 실행함.
- 중복을 통제하는 확률 변화에 따라 추출을 진행
- 순차적 부트스트랩
- 하나의 특정값을 추출한 다음에 이후 추출에서는 높은 중첩 결과를 가진 X_j의 추출 확률을 낮추는 방식
- 수익률 기여도
- 머신러닝 알고리즘 학습을 위해 표본에 가중값을 두는 기법도 존재
- 고유도와 절대 수익률을 함께 고려하는 함수를 사용해야 한다는 것
- 시간 감쇠
- 시간이 지날수록 과거의 표본 가중값을 감쇠시키는 방법
- 클래스 가중값
- 표본 가중값과 함께 클래스 가중값을 적용하는 게 좋을 때도 있음
- 클래스 가중값은 과소 출현한 레이블의 가중값을 교정하는 것
- 가장 중요한 클래스(이벤트)의 빈도수가 낮을 때 특히 유용
- 이런 드문 레이블에 가중값을 높게 주지 않으면 ML 알고리즘은 흔한 레이블에 대해서만 정확도를 극대화할 것이고, 이러면 이런 드문 레이블을 아웃라이어 취급하게 됨
- 그리고 sklearn에서 class_weight 변수를 잘 지정하면 이건 쉽게 통제 가능(p.132)
5장 분수 미분의 특징
- 정상성 대 기억 딜레마
- 수익률과 같은 정수 미분 계열의 데이터는 기억을 지운다는 단점이 있음
- 이를 만회하고자 복잡한 수학 기법을 가져다 쓰면 되려 잘못된 결과 도출
- 정상성은 추론의 목적에서는 필요하나, 신호 처리 관점에서는 부적절. 기억력이 모델 예측력의 기반이기 때문
- 가령, 정상성 모델을 통해 예측할 때, 가격이 장기 기대 가격보다 얼마나 벗어났는지 확인하려면 어느 정도의 기억이 필요
- 수익률은 기억이 없고 정상성이지만, 가격은 기억이 있고 비정상성 => 딜레마 발생
- 기억을 최대한 보존하면서 가격 계열을 정상성으로 만들 수 있는 최저 미분이 어느 정도인지, 이게 중요
- 공적분은 기억을 가진 채 모델링이 가능해서 중요, 반면 제로 미분(?)은 임의적인 대신 최고의 결과를 냄
- 두 극단 사이의 간극을 ML로 채워야 함. 이때 분수 미분이 필요
- 완전 미분과 아예 미분을 하지 않는 사이의, 분수 단위의 미분이 필요하다는 의미
- 수익률과 같은 정수 미분 계열의 데이터는 기억을 지운다는 단점이 있음
- 분수 미분의 두 가지 방법
- 확장 윈도우
- 초기 포인트가 최종 포인트 대비 기억량이 적음. 때문에 각 L(현 시점에서 과거 초기 포인트까지의 길이)에 대해 상대적인 ‘가중값-손실’을 결정하여 곱해줌
- 가중값-손실을 통제하여 추세를 유지하면서도 기억을 보존하는 방식
- 고정 너비 윈도우 분수 미분(FFD)
- 계수가 특정 임계값 이하로 떨어지면 가중값을 삭제해버리는 방식
- 결과적으로 미분 차수 d가 0.35 근처에서 원 시계열과 미분된 시계열의 상관관계는 0.995로 여전히 높은 기억을 보유하고 있으며, 정상성도 확보하는데 성공.
- 대부분의 논문에서는 d=1을 적용해 정상성만을 회복할 뿐 기억을 유지하지 못함
- 확장 윈도우
6장 앙상블 기법
- 금융 데이터 주요 오류
- 편향: 비현실적인 가정 때문, 흔히 알고리즘이 과소 적합되었다 함
- 분산: 훈련 데이터의 작은 변화에 대한 민감도에서 비롯, 과대 적합되었다 함
- 잡음: 예측 못한 변화나 측정 오류 등의 문제, 어떤 모델로도 해결 불가능
- 배깅
- 예측 시 분산을 축소하는 방법
- 복원 랜덤 표본 추출을 통해 N개의 훈련 데이터셋 생성
- 각 훈련셋에 적합화된 N개 추정 계수를 도출
- 이렇게 도출된 예측의 평균으로 앙상블 예측
- 계산 자원만 충분하다면 보통 어떤 분류기든 배깅을 하는 게 좋음
- 다만 배깅은 부스팅과 달리 성과가 좋지 않은 분류기의 정확도를 개선하지는 못함, 개별 학습기가 형편 없는데 그들의 투표 결과가 좋을 리 없기 때문
- 즉 편향을 줄이기 보단 분산을 줄이는 데 적합한 게 배깅
- 관측 중복의 문제
- 복원 표본 추출은 배깅이 분산을 줄이지 못하게 함. 때문에 순차적 부트스트랩 기법을 적용하는 걸 추천(4.5절 참조)
- 또 중복 관측은 OOB(out of bag)의 정확도가 부풀려짐. 이때 stratifiedKFold를 사용, 배깅 분류기의 교차 검증 후 OOB 정확도 결과는 무시하는 게 좋음
- 예측 시 분산을 축소하는 방법
- 랜덤 포레스트
- 기본 원리
- 랜덤 추출한 데이터셋에서 개별 추정 모수를 산출한다는 점은 배깅과 비슷
- 그러나 RF는 2차 수준의 무작위성을 반영한다는 게 차이. 각 노드 분할을 최적화할 때 추정기 간 상관관계를 더욱 축소하려는 목적을 갖고 있음
- 장점
- 배깅처럼 예측 분산을 과적합 없이 축소할 수 있음
- 특성의 중요도를 계산할 수 있음(8장 참조)
- OOB의 정확도를 계산할 수 있음. 다만 금융 데이터는 정확도가 부풀려질 가능성 있음
- 한계
- 중복 관측에 대해서는 여전히 취약. 과적합이 존재.
- 한계 극복을 위한 몇 가지 팁(p.168)
- Max_features를 더 낮은 값으로 설정
- Early stopping 설정.
- 기본 분류기로 decision tree를 쓰되 max_samples는 표본 간 평균 고유도로 설정
- 기본 분류기로 randomforest를 쓰되 이때도 max_samples는 표본 간의 평균 고유도
- Class_weight를 ‘balanced_subsample’로 설정해 소수 클래스 예측률을 높임
- 기본 원리
- 부스팅
- 기본 원리
- 특정 샘플 가중치에 따라 복원 랜덤 샘플링을 활용해 하나의 데이터셋 생성
- 하나의 추정기로 이 훈련 데이터셋을 적합화
- 단일 추정기가 허용 임계값(ex. 정확도 50%)을 넘기면 그 추정기를 유지, 아니면 폐기
- 잘못 분류된 관측값에는 더 많은 가중치를 부여, 정확히 분류한 관측값은 적은 가중치
- N개의 추정기가 생성될 때까지 이 과정 반복
- 앙상블 예측은 개별 예측 추정기의 가중 평균으로 결정
- 부스팅 vs. 배깅
- 부스팅은 예측의 분산과 편향을 둘 다 감소시킴. 다만, 편향을 교정하면 과적합이 될 가능성이 높아짐
- 금융에 있어서 부스팅보다 배깅이 일반적으로 더 선호됨. 배깅은 과대적합, 부스팅은 과소적합. 과대적합이 종종 더 문제가 되기 때문.
- 또 배깅은 병렬 처리가 가능하나 부스팅은 일반적으로 순차 진행한다는 단점
- 기본 원리
'퀀트 공부 > 금융공학' 카테고리의 다른 글
| [AFML] 12장 교차검증 백테스트 ~ 16장 자산배분 (0) | 2023.05.17 |
|---|---|
| [AFML] 7장 금융에서의 교차검증 ~ 11장 앙상블 기법 (1) | 2023.05.16 |
| [패스트캠퍼스] Ch3. 팩터모델링 - 2 (1) | 2023.05.12 |
| [패스트캠퍼스] Ch3. 팩터모델링 - 1 (1) | 2023.05.11 |
| [패스트캠퍼스] Ch2. 자산배분 모델링 - 2 (1) | 2023.05.10 |
Comments