책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
http://www.acornpub.co.kr/book/factor-investing-python
요약
투자의 영역에서 어떻게 하면 금융 머신러닝을 올바르게 사용할 수 있는지 제시하고 있는 한 편의 안내서다. 금융 시계열 데이터 처리, 알파 신호 생성, 포트폴리오 최적화, 인과성과 해석성 등 머신러닝 기반의 퀀트 투자에 필요한 모든 단계를 일목요연하게 설명하고 있으며, 동시에 파이썬 코드 및 연습문제를 통해 이론과 실습을 결합한 실용적인 이해를 돕는다.
이 책의 대상 독자
이 책은 두 가지 부류의 독자를 대상으로 한다. 첫째, 투자 및 자산 운용을 목표로 계량 금융을 공부하고자 하는 대학원생이다. 두 번째 대상은 머신러닝에 기반한 자산배분 방법으로 피벗(pivot)하거나 단순히 이러한 새로운 도구에 관심이 있으면서 자신의 역량을 업그레이드하고자 하는 자산 운용 업계의 전문가다. 이 책은 최근 자산 가격 결정 문제와 자산 운용에 적용 가능한 머신러닝 알고리듬에 대한 광범위한 참고 자료가 필요한 학자나 연구자에게도 도움을 줄 수 있다. 대부분 일반적인 방법을 다루고 있지만 인과 그래프(14장), 베이지안 가법성 트리(9장), 하이브리드 오토인코더(7장)와 같은 좀 더 이색적인 모델을 구현하는 방법도 보여준다.
이 책은 대수학(algebra)(행렬 조작), 해석학(analysis)(함수 미분, 그래디언트), 최적화(optimization)(1계 및 2계 조건, 이중 형태), 통계학(statistics)(분포, 적률, 검정, 최우도 같은 간단한 추정 방법)에 대한 기본 지식이 있는 독자를 대상으로 한다. 최소한의 금융 도메인 지식도 필요하다. 주식과 회계 수치(예를 들어, 장부가)와 같은 간단한 개념은 따로 정의하지 않는다.
이 책의 구성
1부에서는 준비 자료를 수집하고 표기법과 데이터 표현(1장)으로 시작해 개요(2장)를 소개한다. 3장에서는 팩터 투자의 (이론적이고 실증적인) 경제학적 기초를 개괄하고 관련된 최근 문헌을 간략히 요약한다. 4장에서는 데이터 준비에 대해 다룬다. 기본적인 팁을 빠르게 리뷰하고 몇 가지 주요 이슈에 대해 경고한다.
2부에서는 지도 학습의 예측 알고리듬을 다룬다. 이러한 알고리듬은 수익률, 변동성, 샤프Sharpe 비율 등 금융 수치를 예측하는 데 사용되는 가장 일반적인 도구다. 페널티가 적용된 회귀(5장)부터 트리 기법(6장), 신경망(7장), 서포트 벡터 머신(8장), 베이지안 접근법(9장)까지를 아우르는 다양한 알고리듬을 다룬다.
3부에서는 이러한 도구와 금융 응용 분야 간의 간극을 해소한다. 10장에서는 앞서 정의한 머신러닝 엔진을 평가하고 개선하는 방법을 자세히 설명한다. 11장에서는 모델을 결합하는 방법과 그것이 종종 좋은 생각이 아닐 수도 있는 이유를 설명한다. 마지막으로, 가장 중요한 장 중 하나인 12장에서는 포트폴리오 백테스팅의 중요한 단계들을 검토하고 이 단계에서 자주 발생하는 실수에 대해 언급한다.
4부에서는 머신러닝과 관련된 다양한 고급 주제를 보다 구체적으로 다룬다. 첫 번째 주제는 해석 가능성(interpretability)이다. 머신러닝 모델은 종종 블랙박스로 간주되며, 이는 신뢰 문제를 야기한다. 머신러닝 기반 예측을 어떻게 신뢰할 수 있으며 왜 신뢰해야 할까? 13장에서는 내부에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 되는 방법을 제시한다. 14장에서는 상관관계보다 훨씬 더 강력한 개념이자 최근 인공지능(AI, Artificial Intelligence) 분야에서 많은 논의의 핵심이 되는 인과성(causality)에 초점을 맞춘다. 대부분의 머신러닝 도구는 상관관계 같은 패턴에 의존하는데, 인과성과 관련된 기술의 이점을 강조하는 것이 중요하다. 마지막으로, 15장과 16장에서는 지도 학습이 아닌 다른 학습 방식에 대해 다룬다. 지도 학습이 아닌 다른 학습 방식은 유용할 수 있지만, 이것을 금융 분야에 적용할 때는 현명하고 신중하게 접근해야 한다.
목차
목차
- 1부 ― 소개
- 1장 표기법과 데이터
- 1.1 표기법
- 1.2 데이터셋
- 2장 개요
- 2.1 이 책의 맥락
- 2.2 포트폴리오 구축: 작업의 흐름
- 2.3 머신러닝은 요술봉이 아니다
- 3장 팩터 투자와 자산 가격 결정 이상 현상
- 3.1 개요
- 3.2 이상 현상 탐지
- 3.2.1 도전
- 3.2.2 단순 포트폴리오 정렬
- 3.2.3 팩터들
- 3.2.4 파마-맥베스 회귀
- 3.2.5 팩터 경쟁
- 3.2.6 고급 기법들
- 3.3 팩터 혹은 특성?
- 3.4 핫한 주제들: 모멘텀, 타이밍, ESG
- 3.4.1 팩터 모멘텀
- 3.4.2 팩터 타이밍
- 3.4.3 그린 팩터
- 3.5 머신러닝과의 연결 고리
- 3.5.1 최근 발표된 참고 문헌 리스트
- 3.5.2 자산 가격 결정 모형과의 명백한 연결
- 3.6 코딩 예제
- 4장 데이터 전처리
- 4.1 너의 데이터를 알라
- 4.2 결측 데이터
- 4.3 이상치 탐지
- 4.4 특성 공학
- 4.4.1 특성 선택
- 4.4.2 예측 인자 스케일링
- 4.5 레이블링
- 4.5.1 단순 레이블
- 4.5.2 범주형 레이블
- 4.5.3 트리플 배리어 기법
- 4.5.4 샘플 필터링
- 4.5.5 수익률의 시간적 구간
- 4.6 지속성 다루기
- 4.7 확장
- 4.7.1 특성 변환
- 4.7.2 거시경제 변수
- 4.7.3 능동 학습
- 4.8 추가 코드 및 결과
- 4.8.1 리스케일링 효과: 시각적 표현
- 4.8.2 리스케일링 효과: 토이 예시
- 4.9 코딩 예제
- 2부 ― 지도 학습 알고리듬
- 5장 페널티 회귀와 최소 분산 포트폴리오를 위한 희소 헤징
- 5.1 페널티 회귀
- 5.1.1 단순 회귀
- 5.1.2 페널티의 형태
- 5.1.3 실제 예시
- 5.2 최소 분산 포트폴리오를 위한 희소 헤징
- 5.2.1 표현 및 전개
- 5.2.2 예시
- 5.3 예측 회귀
- 5.3.1 참고 문헌 리뷰 및 원칙
- 5.3.2 코드 및 결과
- 5.4 코딩 예제
- 6장 트리 기반 기법
- 6.1 단순 트리
- 6.1.1 원칙
- 6.1.2 분류에 대한 추가적인 디테일
- 6.1.3 가지치기의 기준
- 6.1.4 코드 및 해석
- 6.2 랜덤 포레스트
- 6.2.1 원칙
- 6.2.2 코드 및 결과
- 6.3 부스트 트리: 에이다부스트
- 6.3.1 방법론
- 6.3.2 실제 예시
- 6.4 부스트 트리: 익스트림 그래디언트 부스팅
- 6.4.1 손실 관리
- 6.4.2 페널티 적용
- 6.4.3 결합
- 6.4.4 트리 구조
- 6.4.5 확장
- 6.4.6 코드 및 결과
- 6.4.7 인스턴스 가중치 부여
- 6.5 논의
- 6.6 코딩 예제
- 7장 신경망
- 7.1 오리지널 퍼셉트론
- 7.2 다층 퍼셉트론
- 7.2.1 개요 및 표기법
- 7.2.2 보편 근사화
- 7.2.3 역전파를 통한 학습
- 7.2.4 분류에 관한 추가적인 디테일
- 7.3 신경망이 얼마나 깊어야 하는지에 대한 문제 그리고 다른 실무적 이슈들
- 7.3.1 구조 선택
- 7.3.2 가중치 업데이트의 빈도와 학습 듀레이션
- 7.3.3 페널티와 드롭아웃
- 7.4 코드 샘플 및 바닐라 MLP에 대한 코멘트
- 7.4.1 회귀 예시
- 7.4.2 분류 예시
- 7.4.3 커스텀 손실
- 7.5 순환 신경망
- 7.5.1 묘사
- 7.5.2 코드 및 결과
- 7.6 다른 일반적 구조
- 7.6.1 생성형 적대적 네트워크
- 7.6.2 오토인코더
- 7.6.3 합성곱 신경망에 관한 한마디
- 7.6.4 고급 아키텍처
- 7.7 코딩 예제
- 8장 서포트 벡터 머신
- 8.1 분류를 위한 SVM
- 8.2 회귀를 위한 SVM
- 8.3 연습
- 8.4 코딩 예제
- 9장 베이지안 기법
- 9.1 베이지안 프레임워크
- 9.2 베이지안 샘플링
- 9.2.1 깁스 샘플링
- 9.2.2 메트로폴리스-헤이스팅스 샘플링
- 9.3 베이지안 선형 회귀
- 9.4 나이브 베이스 분류기
- 9.5 베이지안 가법 트리
- 9.5.1 일반적인 형태
- 9.5.2 사전 값
- 9.5.3 샘플링 및 예측
- 9.5.4 코드
- 3부 ― 예측에서 포트폴리오로
- 10장 검증 및 튜닝
- 10.1 학습 지표
- 10.1.1 회귀 분석
- 10.1.2 분류 분석
- 10.2 검증
- 10.2.1 분산-편향 트레이드 오프: 이론
- 10.2.2 분산-편향 트레이드 오프: 묘사
- 10.2.3 과최적화의 위험: 원리
- 10.2.4 과최적화의 위험: 몇 가지 해결책
- 10.3 좋은 하이퍼파라미터 찾기
- 10.3.1 방법론
- 10.3.2 예시: 격자 탐색
- 10.3.3 예시: 베이지안 최적화
- 10.4 백테스팅 검증에 대한 짧은 논의
- 11장 앙상블 모델
- 11.1 선형 앙상블
- 11.1.1 원리
- 11.1.2 예시
- 11.2 스택 앙상블
- 11.2.1 두 단계 학습
- 11.2.2 코드 및 결과
- 11.3 확장
- 11.3.1 외생 변수
- 11.3.2 모델 간 상관계수 축소
- 11.4 연습 문제
- 12장 포트폴리오 백테스팅
- 12.1 프로토콜 세팅
- 12.2 신호를 포트폴리오 가중치로 변환하기
- 12.3 성과 지표
- 12.3.1 논의
- 12.3.2 순수한 성과 및 위험 지표
- 12.3.3 팩터 기반 평가
- 12.3.4 위험 조정 지표
- 12.3.5 거래 비용 및 회전율
- 12.4 일반적인 오류 및 이슈
- 12.4.1 미래 참조 데이터
- 12.4.2 백테스트 과최적화
- 12.4.3 간단한 방지책
- 12.5 비정상성에 대한 암시: 예측은 어렵다
- 12.5.1 일반적인 코멘트
- 12.5.2 공짜 점심은 없다
- 12.6 첫 번째 예시: 완전한 백테스트
- 12.7 두 번째 예시: 백테스트 과최적화
- 12.8 코딩 예제
- 4부 ― 추가적인 중요 주제들
- 13장 해석성
- 13.1 전역적 해석
- 13.1.1 대리 모델로서의 단순 모형
- 13.1.2 트리 기반 변수 중요도
- 13.1.3 불가지론적 변수 중요도
- 13.1.4 부분 종속성 플롯
- 13.2 지역적 해석
- 13.2.1 LIME
- 13.2.2 샤플리 값
- 13.2.3 분해
- 14장 두 가지 주요 개념: 인과성과 비정상성
- 14.1 인과성
- 14.1.1 그랜저 인과성
- 14.1.2 인과적 가법성 모델
- 14.1.3 구조적 시계열 모델
- 14.2 변화하는 환경 다루기
- 14.2.1 비정상성: 또 다른 예시
- 14.2.2 온라인 학습
- 14.2.3 동질적 전이 학습
- 15장 비지도 학습
- 15.1 상관관계가 있는 예측 인자의 문제점
- 15.2 주성분 분석과 오토인코더
- 15.2.1 아주 조금의 선형대수
- 15.2.2 PCA
- 15.2.3 오토인코더
- 15.2.4 응용
- 15.3 k-평균을 통한 클러스터링
- 15.4 최근접 이웃
- 15.5 코딩 예제
- 16장 강화학습
- 16.1 이론적 구성
- 16.1.1 일반적인 프레임워크
- 16.1.2 Q-러닝
- 16.1.3 SARSA
- 16.2 차원의 저주
- 16.3 정책 경사
- 16.3.1 원칙
- 16.3.2 확장
- 16.4 단순한 예시
- 16.4.1 시뮬레이션으로 하는 Q-러닝
- 16.4.2 시장 데이터와 Q-러닝
- 16.5 결론
- 16.6 예제
- 5부 ― 부록
- 17장 데이터 설명
- 18장 예제 정답
- 18.1 3장
- 18.2 4장
- 18.3 5장
- 18.4 6장
- 18.5 7장: 오토인코더 모델과 보편 근사화
- 18.6 8장
- 18.7 11장: 앙상블 신경망
- 18.8 12장
- 18.8.1 동일 가중 포트폴리오
- 18.8.2 고급 가중 함수
- 18.9 15장
- 18.10 16장