파이썬, Pandas, NumPy, Scikit-learn | 케라스를 활용한 효과적인 거래 전략
스테판 젠슨 지음| 홍창수, 이기홍 옮김|에이콘출판 | 2020년 07월 31일 출간
디지털 데이터의 폭발적인 증가로 머신러닝을 사용하는 거래 전략의 전문지식에 대한 요구가 높아졌다. 이 책은 지도학습과 비지도학습 알고리즘으로 다양한 데이터 원천에서 신호를 추출해 효과적인 투자 전략을 만들 수 있도록 안내한다. 또한 API와 웹 스크래핑을 통해 시장, 기본, 대체 데이터에 접근하는 방법을 보여준다. 최신의 머신러닝, 딥러닝 알고리즘과 더불어 알고리즘 트레이딩을 위한 아이디어 창출부터 백테스팅까지의 과정, Pandas, NumPy, Statsmodel, Scikit-learn 등과 같은 라이브러리를 학습한다. 알고리즘 트레이딩의 과정을 학습하면서 머신러닝과 딥러닝의 기본을 다질 수 있는 유용한 예제가 포함돼 있다.
CFA이며, 어플라이드 에이아이(Applied AI)의 창립자이고, 선임 데이터 과학자다. 여러 산업에서 사업 목적을 데이터와 AI 전략으로 전환하고자 하는 포춘 500 기업과 스타트업 회사들을 자문하고 있으며, 데이터 과학 팀을 구축하고 ML 솔루션을 개발하고 있다. 현재의 사업을 하기 이전에 국제적 투자 회사의 매니징 파트너 겸 선임 데이터 과학자였으며, 예측 분석 도구와 투자 리서치 실무를 구축했다. 또한 15개 시장에서 사업을 하는 국제적 핀테크 스타트업의 임원이었으며, 세계은행(World Bank)에서 근무했고, 신흥시장의 중앙은행들을 자문한 바 있으며 4개 대륙의 6개 언어로 작업했다. 하버드대학교와 베를린대학교에서 석사학위를 취득했고, 제네럴 어셈블리(General Assembly)와 데이터캠프(Datacamp)에서 데이터 과학을 가르치고 있다.
경북대에서 경영학석사(재무전공)학위를 받고, 한국외국어대학교에서 “장외개별주식옵션 내재변동성 실증분석”으로 경영학 박사학위를 받았다. 외환선물㈜, 리딩투자증권, 한국투자증권, 한화투자증권에서 애널리스트, 옵션딜러, 리스크퀀트, 장외파생상품 마케터로 근무했다. 이후 NICE채권평가가 이름을 바꾼 NICE P&I에서 금융공학연구소 실장으로 근무했고, 현재 AI사업본부 정보사업실장으로 재직하고 있다. 저서로는 서울경제경영에서 출간한 『장외파생상품 실무입문』(서울경제경영, 2014)이 있으며, PLOS ONE, 증권학회지, 재무관리연구, 금융공학연구에 재무 및 파생상품 관련 논문을 게재했다. 삼성경제연구소(SERI) 한국금융공학포럼 시샵과 한국금융공학회 산학협력위원으로 활동하고 있다.
카네기멜론대학교에서 석사학위를 받고, 피츠버그대학교 Finance Ph.D, CFA, FRM이며 금융, 투자 및 경제분석 전문가다. 삼성생명, HSBC, 새마을금고 중앙회 및 한국투자공사 등의 국내 유수 금융기관 및 금융 공기업에서 자산운용 포트폴리오 매니저로 근무했으며, 현재 딥러닝과 강화학습을 금융에 접목시켜 이의 전파와 저변확대를 보람으로 삼고 있다. 저서(공저)로 『금융공학 프로그래밍』(한빛미디어, 2009)이 있으며, 번역서로는 길벗에서 출간한 『딥러닝 부트캠프 with 케라스』(길벗, 2017), 『프로그래머를 위한 기초 해석학』(길벗, 2018) 등이 있다. 누구나 자유롭게 머신러닝과 딥러닝을 자신의 연구나 업무에 적용해 활용하는 그날이 오기를 바라며 매진하고 있다.
다양한 데이터의 가용성이 증가하면서 알고리즘 트레이딩 전략의 전문성에 대한 수요도 늘고 있다. 이 책을 통해 광범위한 데이터 원천에 머신러닝(ML)을 선택하고 적용해, 강력한 알고리즘 전략을 개발할 수 있을 것이다.먼저 데이터베이스의 평가, 파이썬을 이용한 데이터 API의 접근, 퀀들(Quandl)을 이용한 금융 데이터 접근과 예측 오차 관리와 같은 본질적 요소를 소개한다. 그리고 Pandas, Seaborn, StatsModels, Scikit-learn을 사용해 알고리즘 모델을 구축하고 훈련하는 데 사용할 수 있는 다양한 머신러닝 기법과 알고리즘을 다룬다. 그다음 StatsModels를 사용한 AR(p), MA(q)와 ARIMA(p, d, q)를 구축, 추정 및 해석한다. PyMC3를 사용해 불확실성 개념을 구별하고자 하며, 이를 위해 사전확률(prior), 증거(evidence) 및 사후확률(posterior)의 베이지안 개념을 적용한다. 또한 NLTK, Scikit-learn과 spaCy를 활용해 감성 점수를 금융 뉴스에 할당하고, 트레이딩 시그널을 추출하기 위해 문서를 분류한다. 복잡한 고급 알고리즘을 설계하고자 케라스를 사용해 순전파 신경망(Feedforward Neural Network), 순환 신경망(RNN, Recurrent Neural Network)과 합성곱 신경망(CNN, Convolutional Neural Netowrk)을 설계하고 구축하고 조정하고 평가하는 방법을 배운다. 경제활동을 예측하기 위해 위성 이미지 데이터에 전이학습(transfer learning)을 적용한다. 마지막으로 강화학습(reinforcement learning)을 적용해 최적 트레이딩 결과를 얻는다.이 책의 마지막에 이르게 되면 알고리즘 트레이딩을 채택해 현명한 투자 전략을 구현하게 될 것이다.
1장. 트레이딩을 위한 머신러닝
____이 책을 읽는 법
____기대하는 것
____이 책을 읽어야 하는 독자
____이 책의 구성
____성공하기 위해 필요한 것
____투자업계에서 머신러닝의 부상
____전자거래에서 고빈도 매매까지
____팩터 투자와 스마트 베타 펀드
____알고리즘 개척자는 규모에 있어 인간보다 우위에 있다
____머신러닝과 대체 데이터
____거래 전략의 설계와 실행
____데이터의 소싱 및 관리
____알파 팩터 리서치 및 평가
____포트폴리오 최적화와 리스크관리
____전략 백테스팅
____머신러닝과 알고리즘 트레이딩 전략
____거래를 위한 머신러닝의 사용 사례
____요약
2장. 시장 데이터와 기본적 요인 데이터
____시장 데이터 사용 방법
____시장 미시구조
____주문 호가창 데이터의 사용
____틱 데이터의 규제
____시장 데이터에 대한 API접근
____pandas를 이용한 원거리 데이터 접근(remote data access)
____기타 시장 데이터 공급자
____기본적 데이터 작업 방법
____재무제표 데이터
____기타 기본적 데이터 소스
____판다스를 이용한 효율적 데이터 저장
____요약
3장. 금융을 위한 대체 데이터
____대체 데이터 혁명
____대체 데이터의 원천
____대체 데이터셋 평가
____평가 기준
____데이터의 질
____대체 데이터 시장
____데이터 제공업체와 사용 사례
____대체 데이터로 작업하기
____오픈테이블 데이터 스크레이핑
____어닝 콜 녹취록
____요약
4장. 알파 팩터 리서치
____알파 팩터 엔지니어링
____중요한 팩터 분류
____팩터로의 데이터 변환
____시그널 찾기 - zipline 사용법
____구조-이벤트 주도형 트레이딩 시뮬레이션
____시장 데이터로부터 산출한 단일 알파 팩터
____다양한 데이터 소스의 팩터 결합
____시그널과 잡음의 분리-alphalens의 사용법
____미래 수익률과 팩터 분위수의 생성
____팩터 분위수에 의한 예측 성과
____정보 계수
____팩터 회전율
____알파 팩터 리소스
____기타 알고리즘 트레이딩 라이브러리
____요약
5장. 전략 평가
____zipline으로 포트폴리오 구축과 테스트
____예정된 거래와 포트폴리오 리밸런싱
____pyfolio로 성과를 측정하는 방법
____샤프 비율
____적극적 운용의 기본 법칙
____파이폴리오를 통한 표본 내 및 표본 외 성과
____백테스팅의 함정을 피하는 방법
____데이터 도전
____구현 이슈
____데이터 스누핑과 백테스트 과적합
____포트폴리오 위험과 수익률 관리 방법
____평균 분산 최적화
____평균 분산 최적화의 대안
____리스크 패리티
____리스크 팩터 투자
____계층적 리스크 패리티
____요약
6장. 머신러닝 프로세스
____데이터로부터 학습
____지도학습
____비지도학습
____강화학습
____기계학습 작업 흐름
____기본 작업 개요-k-최근접 이웃
____문제의 구성-목적과 성과 측정
____데이터의 수집과 준비
____특성 탐험, 추출과 공학
____ML 알고리즘 선택
____모델 설계와 조정
____모델 선택을 위한 교차 검증의 활용
____사이킷런을 이용한 파라미터 조정
____금융에서 교차 검증의 문제점
____요약
7장. 선형 모형
____추론과 예측을 위한 선형 회귀
____다중 선형 회귀 모형
____모형을 만드는 방법
____모형을 훈련하는 방법
____가우스 마르코프 정리
____통계적 추론을 수행하는 방법
____문제를 진단하고 해결하는 방법
____실제로 선형 회귀를 실행하는 방법
____선형 요인 모델을 구축하는 방법
____자본자산 가격결정 모형부터 파마-프렌치 5요인 모델까지
____위험 요인 입수하기
____파마-맥베스 회귀 분석
____수축 방법-선형 회귀에 대한 규제화
____과적합을 방지하는 방법
____리지 회귀 분석의 작동 방식
____라쏘 회귀 분석의 작동 방식
____선형 회귀를 사용해 수익률을 예측하는 방법
____데이터 준비
____statsmodels를 사용한 선형 OLS 회귀
____sklearn을 이용한 선형 OLS 회귀
____sklearn을 이용한 리지 회귀 분석
____sklearn을 이용한 라쏘 회귀 분석
____선형 분류
____로지스틱 회귀 모델
____statsmodels로 추론을 수행하는 방법
____예측에 로지스틱 회귀를 사용하는 방법
____요약
8장. 시계열 모델
____진단과 특성 추출을 위한 분석 도구
____시계열 패턴 분해
____롤링 윈도우 통계량 계산
____자기상관계수 계산
____정상성 진단 및 회복
____시계열 변환의 적용
____일변수 시계열 모델
____자기 회귀 모델의 구축
____이동 평균 모델의 구축
____ARIMA 모델 구축 및 확장
____매크로 펀더멘털 예측
____시계열 모델을 활용한 변동성 예측
____다변수 시계열 모델
____방정식 체계
____벡터 자기회귀 모델
____VAR 모델을 활용한 매크로 펀더멘털 예측
____공적분-공통 추세를 가진 시계열
____페어트레이딩 전략의 공적분 활용
____요약
9장. 베이지안 머신러닝
____베이지안 머신러닝 작동 방식
____경험적 증거로부터 가정을 업데이트하는 방법
____정확한 추론: 최대 사후확률 추정
____근사적 추론: 확률론적 접근법과 결정론적 접근법
____PyMC3를 사용한 확률적 프로그래밍
____테아노를 이용한 베이지안 머신러닝
____PyMC3 워크플로
____실무적 응용
____요약
10장. 결정 트리와 랜덤 포레스트
____결정 트리
____트리의 결정 규칙규칙 학습과 적용
____결정 트리 실용적 사용법
____과대적합과 규제화
____하이퍼파라미터의 조정
____랜덤 포레스트
____앙상블 모델들
____어떻게 배깅이 모델 분산을 낮추는가
____배깅 결정 트리
____어떻게 랜덤 포레스트를 구현하는가
____랜덤 포레스트의 학습과 조정
____랜덤 포레스트의 장점과 단점
____요약
11장. 그래디언트 부스팅 머신
____적응형 부스팅
____에이다부스트 알고리즘
____사이킷런으로 에이다부스트 구현
____그래디언트 부스팅 머신
____GBM 모형을 훈련하고 조정하는 방법
____사이킷런으로 그래디언트 부스팅을 사용하는 방법
____빠르고 확장 가능한 GBM 구현
____알고리즘 혁신이 성능을 향상시키는 방법
____XGBoost, LightGBM, CatBoost 사용법
____GBM 결과를 해석하는 방법
____특성의 중요성
____부분 의존도
____SHapley 첨가 설명
____요약
12장. 비지도학습
____차원 축소
____선형과 비선형 알고리즘
____차원의 저주
____매니폴드 학습
____군집화
____k-평균 군집화
____요약
13장. 텍스트 데이터로 작업하기
____텍스트 데이터에서 특성을 추출하는 방법
____자연어 처리의 도전
____자연어 처리 워크플로
____사용 사례
____텍스트에서 토큰으로-NLP 파이프라인
____spaCy와 textacy를 이용한 NLP 파이프라인
____TextBlob을 사용한 자연어 처리
____토큰에서 숫자로-문서 단어 행렬
____단어 주머니 모형
____sklearn을 사용해 문서 단어 행렬 처리
____텍스트 분류와 감성 분석
____나이브 베이즈 분류기
____뉴스 기사 분류
____감성 분석
____요약
14장. 토픽 모델링
____잠재 토픽의 학습: 목적과 방법
____선형대수에서 계층적 확률 모델로
____잠재 의미 인덱싱
____sklearn을 이용한 LSI의 구현법
____장점과 단점
____확률적 잠재 의미 분석
____sklearn을 이용한 pLSA의 구현법
____잠재 디리클레 할당
____LDA의 원리
____LDA 토픽 평가
____sklearn을 이용한 LDA의 구현법
____pyLDAvis를 이용한 LDA 결과의 시각화
____gensim을 이용한 LDA의 구현법
____실적발표를 위한 토픽 모델링
____옐프 사업보고서를 위한 토픽 모델링
____요약
15장. 단어 임베딩
____단어 임베딩은 어떻게 의미를 인코딩하는가
____신경 언어 모델이 문맥에서 사용법을 배우는 방법
____Word2vec 모델-규모에 따른 임베딩 학습
____임베딩을 평가하는 방법-벡터 산술과 유추
____사전 훈련된 단어 벡터를 사용하는 방법
____자신의 단어 벡터 임베딩을 훈련시키는 방법
____케라스의 Skip-Gram 아키텍처
____젠심을 사용해 증권거래위원회 재무신고 단어 벡터
____전처리
____모델 훈련
____Doc2vec을 사용해 감성 분석
____옐프 감성 데이터에 대한 Doc2vec 훈련
____보너스-번역을 위한 Word2vec
____요약
16장. 딥러닝
____딥러닝과 AI
____고차원 데이터의 문제점
____신경망의 설계
____신경망 작동법
____주요 설계 선택
____심층 신경망의 규제화
____DL을 위한 최적화 기법
____파이썬을 이용한 신경망 구축법
____입력층
____은닉층
____출력층
____신경망 학습법
____파이썬을 이용한 역전파 구현법
____종합
____신경망 학습
____DL 라이브러리 사용법
____케라스 사용법
____텐서보드 사용법
____파이토치 1.0 사용법
____텐서플로 2.0 사용법
____신경망 구조 최적화
____자산 가격 움직임을 예측하기 위한 주식 수익률 시계열 생성
____플레이스홀더를 사용한 신경망 구조의 정의
____조기 종료를 위한 손실 척도의 맞춤형 정의
____신경망 구조의 조정을 위한 GirdSearchCV의 실행
____결과를 더욱 개선하는 법
____요약
★ 이 책에서 다루는 내용 ★
■ 투자와 트레이딩 문제를 푸는 머신러닝 기법 구현
■ 시장, 기본, 대체 데이터를 활용한 알파 팩터
■ 지도, 비지도, 강화학습 모델 설계와 세부 조정
■ Pandas, NumPy, Scikit-learn을 이용한 포트폴리오 위험과 성과 최적화
■ Quantopian 플랫폼에서 머신러닝 모델을 실전 트레이딩 전략에 통합하기
■ 신뢰성 있는 시계열 백테스트 방법을 사용한 전략 평가
■ 케라스, 파이토치, 텐서플로를 사용해 딥신경망 설계 및 평가
■ OpenAI Gym에서 강화학습을 이용한 트레이딩 전략
★ 이 책의 대상 독자 ★
금융 및 투자 산업에서 일하는 투자 분석가, 포트폴리오 매니저와 함께 데이터 분석가, 데이터 과학자와 파이썬 개발자를 위한 책이다. ML 알고리즘으로 현명한 투자 전략을 개발해 효율적 트레이딩을 실행하고 싶다면 반드시 필요한 책이다. 파이썬과 ML 기법에 대한 어느 정도의 지식은 필수다.
★ 이 책의 구성 ★
1장, ‘트레이딩을 위한 머신러닝’에서는 머신러닝이 거래전략의 설계와 실행을 위한 신호 생성과 평가에서 어떻게 중요한지를 개략적으로 설명함으로써 이 책의 핵심을 확인한다. 여기에는 가설 생성, 모델링, 데이터 선택, 백테스팅부터 위험 관리를 포함한 포트폴리오 관점의 평가 및 실행에 이르는 전략 프로세스가 요약돼 있다.
2장, ‘시장과 기초 데이터’에서는 이 책 전체에서 신뢰할 수 있는 수많은 오픈 소스 데이터 제공업체에 접근하는 방법뿐만 아니라 원천 거래소가 제공한 원본 틱(tick) 데이터 및 재무 보고 데이터를 사용한 소스와 작업에 대해 설명한다.
3장, ‘금융을 위한 대체 데이터’에서는 폭발적으로 증가하는 제공업체를 평가하는 범주와 기준을 제시한다. 또한, 이 책의 두 번째 부분에서 자연어 처리(NLP)와 감성 분석 알고리즘과 함께 사용하는 데 필요한 어닝 콜 음성 녹취록(earning call transcripts)을 수집하기 위해 웹사이트를 스크랩해 대체 데이터셋을 작성하는 방법을 보여 준다.
4장, ‘알파 팩터 리서치’에서는 정보 계수(IC)를 사용해 팩터가 작동하는 방식과 성과를 측정하는 방법을 이해하기 위한 프레임워크를 제공한다. 퀀토피안(Quantopian) 플랫폼에 대한 오프라인 및 온라인 파이썬 라이브러리를 사용해 데이터에서 알파 팩터를 추출하는 것을 보여 준다. 또한, 팩터를 백테스팅하기 위한 집라인(zipline)과 예측력을 평가하기 위한 알파렌즈(alphalens)를 소개한다.
5장, ‘전략 평가’에서는 집라인 오프라인 및 퀀토피안 플랫폼으로 역사적 데이터를 사용해 거래전략을 테스트하고 평가하는 법을 소개한다. 파이폴리오(pyfolio) 라이브러리를 사용해 포트폴리오의 성과 및 위험지표를 계산하는 방법을 보여 준다. 또한, 전략 백테스팅의 방법론적 과제를 관리하는 방법을 기술하고, 포트폴리오 위험 측면에서 전략을 최적화하는 방법을 알아본다.
6장, ‘머신러닝 프로세스’에서는 어떻게 형성하고, 훈련하고, 조정해서 체계적인 워크플로(workflow)로서 머신러닝 모형의 예측 성능을 평가하는지를 개략적으로 설명한다.
7장, ‘선형 모형’에서는 추론과 예측을 위해 선형 및 로지스틱 회귀 분석을 사용하는 방법과 과적합(overfitting) 위험을 관리하기 위한 규제화(regularization) 방법을 보여 준다. 퀀토피안 트레이딩 플랫폼을 보여 주고, 요인 모델을 구축하고 자산 가격을 예측하는 방법을 알아본다.
8장, ‘시계열 모형’에서는 벡터자기회귀 모형과 공적분 검증을 포함하는 단변량 및 다변량 시계열을 설명하고, 페어 트레이딩 전략에 어떻게 적용할 수 있는지를 다룬다.
9장, ‘베이지안 머신러닝’에서는 확률 모형을 공식화하는 방법, 마르코프체인 몬테카를로(MCMC) 샘플링, 변형 베이즈가 근사 추론을 용이하게 하는 방법을 제시한다. 또한, 파라미터와 모형 불확실성에 대한 더 깊은 통찰력을 얻고자 확률적 프로그래밍을 위해 PyMC3를 사용하는 방법을 설명한다.
10장, ‘의사결정 트리와 랜덤 포레스트’에서는 통찰력과 예측을 위해 비선형 모형을 구축하고, 훈련하고, 조정하는 방법을 보여 준다. 트리 기반 앙상블 모형을 소개하고, 랜덤 포레스트가 의사결정 트리의 약점을 극복하기 위해 부트스트랩 수집(bootstrap aggregation)을 사용하는 방법도 소개한다.
11장, ‘그래디언트 부스팅 머신 앙상블 모형’에서는 고성능 훈련과 예측을 위해 xgboost, lightgbm, catboost 라이브러리를 사용하는 방법과 수많은 하이퍼파라미터를 조정하는 방법을 심층적으로 검토한다.
12장, ‘비지도학습’에서는 알고리즘 트레이딩을 위한 차원 감소와 군집을 사용하는 방법을 소개한다. 데이터 기반 위험요소를 추출하기 위해 주요인 분석(PCA) 및 독립 요인 분석(ICA)을 사용한다. 여러 군집 분석 기법을 제시하고, 자산 분배를 위한 계층적 군집을 사용하는 방법을 보여 준다.
13장, ‘텍스트 데이터로 작업하기’에서는 텍스트 데이터를 수치형식으로 전환하는 방법을 보여 주고, 감성 분석을 위해 2부에서 소개한 분류 알고리즘 기법을 대규모 데이터셋에적용한다.
14장, ‘토픽 모델링’에서는 많은 수의 문서를 요약할 수 있는 잠재적인 토픽을 추출하는 베이지안 비지도학습을 적용한다. 또한 텍스트 데이터를 탐색하는 효과적인 방법과 특징으로서 토픽을 분류 모형에 사용하는 것을 설명한다. 이 기법은 제3장, ‘금융을 위한 대체데이터’에서 본 어닝콜 녹취록과 증권거래위원회(SEC)에 제출한 연례보고서에 적용하는 방법을 보여 준다.
15장, ‘단어 임베딩’에서는 신경망을 사용해 기존 텍스트 특징보다 훨씬 나은 의미 맥락을 훨씬 잘 포착하고 텍스트 데이터에서 거래 신호를 추출할 수 있는 매우 유망한 방법인 워드 벡터(word vector) 형태의 최첨단 언어 특징을 학습한다.
16장, ‘딥러닝’에서는 4부 전체에 걸쳐 사용할 가장 인기 있는 딥러닝 프레임워크인 케라스(Keras), 텐서플로(TensorFlow), 파이토치(Pytorch)를 소개한다. 또한 규제화와 공통 아키텍처의 개요를 포함한 훈련과 튜닝 기법을 제시한다.
17장, ‘합성곱 신경망’에서는 비정형 데이터로 분류 작업에 매우 강력한 CNN을 다룬다. 성공적인 아키텍처 디자인을 소개하고, 경제 활동을 예측하기 위해 위성 데이터를 훈련시키며, 훈련 속도를 높이기 위한 전이학습(transfer learning)을 사용하는 것을 설명한다.
18장, ‘순환신경망’에서는 RNN이 시계열을 포함해 시퀀스-투-시퀀스(Seq2Seq) 모델링에 어떻게 유용한지를 보여 준다. RNN이 어떻게 장기에 걸쳐 비선형 패턴을 포착하는지 보여 준다.
19장, ‘오토인코더와 적대적 생성 신경망’에서는 고차원 데이터의 비선형 압축을 위한 오토인코더와 합성 데이터를 생성하는 가장 중요한 혁신 중 하나인 GAN을 포함한 비지도 딥러닝에 대해 설명한다.
20장, ‘강화학습’에서는 시간에 따라 자신의 환경에 대응해 의사결정을 최적화하는 방법을 배우는 에이전트(agent)의 설계와 훈련을 허용하는 강화학습을 제시한다. 오픈 AI gym을 이용해 시장 신호에 대응하는 에이전트를 어떻게 구축하는지 알 수 있게 된다.
21장, ‘다음 단계(Next Step)’는 1~20장의 내용을 요약한다.