PRAESENTIA

[AFML] 2장 금융 데이터 구조 ~ 6장 앙상블 기법 본문

퀀트 공부/금융공학

[AFML] 2장 금융 데이터 구조 ~ 6장 앙상블 기법

박병후 2023. 5. 15. 18:30

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 필터의 장점은 임계값 근처에서 발생하는 다수의 이벤트가 걸러진다는 것. 이 문제는 볼린저 밴드와 같은 보조지표들이 갖고 있는 취약한 문제점인데 이를 보완할 수 있음

 

 

 

3장 레이블링

  • 고정기간 기법
    • ML 논문이 가장 많이 쓰는 기법, 타임 바(h)를 고정시켜서 이익률과 전략을 고려하는 방식
      • 가령 고정 기간 h 동안에 가격 변동률(수익률)이 일정 임계값 이하라면 라벨을 0으로, 그보다 양의 방향으로 크다면 1, 음의 방향으로 크다면 -1로 라벨을 부여하는 방식
    • 그런데 이런 방식은 피하는 게 좋음
      • 1. 타임 바는 좋은 통계적 성질을 갖지 못함
      • 2. 관측된 변동성과 상관없이 동일한 임계값이 적용됨, 시점에 따라 변동성은 얼마든지 달라지는데 동일한 의사결정 1로 처리해버리는 것
    • 대안
      • 수익률의 임계값을 가중 표준 편차로 측정해 라벨링 하는 것
      • 거래량 바나 달러 바를 활용하는 것 => 훨씬 더 상수에 가깝기 때문
      • 그러나 위 두 가지 방식 역시 본질적인 해결책은 아님
    • 동적 임계값 계산
      • 변동성을 고려하여 이익 실현 및 손실 제한값 설정이 가능
  • 삼중 배리어 기법
    • 세 가지 배리어 중 최초로 도달한 배리어에 따라 관측값을 레이블하는 방식
      • 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. 배깅
      • 부스팅은 예측의 분산과 편향을 둘 다 감소시킴. 다만, 편향을 교정하면 과적합이 될 가능성이 높아짐
      • 금융에 있어서 부스팅보다 배깅이 일반적으로 더 선호됨. 배깅은 과대적합, 부스팅은 과소적합. 과대적합이 종종 더 문제가 되기 때문.
      • 또 배깅은 병렬 처리가 가능하나 부스팅은 일반적으로 순차 진행한다는 단점

 

 

Comments