TRENDSHIFT #8 딥다이브 · 2026-06-04

machine-learning-for-trading 딥다이브
— ML로 트레이딩 전략을 만드는 800쪽 책의 '코드 실험실'

"머신러닝으로 주식 전략을 만든다"는 말은 멋지지만, 막상 시작하면 데이터는 어디서 받고, 무엇을 예측하고, 그게 진짜 돈이 되는지 어떻게 검증하나에서 막힙니다. machine-learning-for-trading(줄여서 ML4T)은 Packt 출판사 베스트셀러 책 『Machine Learning for Algorithmic Trading(2판)』의 공식 코드 저장소로, 23개 장 + 부록, 150개가 넘는 주피터 노트북에 "아이디어 → 데이터 → 피처 → 모델 → 백테스트 → 평가"의 전 과정을 실행 가능한 코드로 담았습니다. 선형회귀부터 XGBoost·LSTM·GAN·강화학습 트레이딩 에이전트까지, 퀀트 ML의 거의 모든 기법이 한 저장소에 들어 있습니다. (저장소: stefan-jansen/machine-learning-for-trading · Python · Jupyter · ⭐ 1만+ 규모 · 교육용 공개 저장소)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어/시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

한 문장으로: "ML로 트레이딩 전략을 만드는 전 과정을, 책 한 권 분량의 실행 가능한 노트북 150여 개로 펼쳐 놓은 퀀트 ML 교본."

ML4T는 코드를 '돌리는' 라이브러리가 아니라 '배우는' 저장소입니다. 핵심은 단순합니다 — 책의 각 장(章)이 폴더 하나가 되고, 그 안에 개념을 그대로 손으로 만져 볼 수 있는 주피터 노트북들이 들어 있습니다. "이 알고리즘을 트레이딩에 어떻게 쓰는가"를 글이 아니라 실행되는 코드로 보여 주는 게 전부이자 가장 큰 가치입니다.

다루는 범위가 압도적으로 넓습니다. 시장·재무·대체 데이터를 수집하고(1부), 선형모형·트리·군집 같은 고전 ML로 수익을 예측하고(2부), SEC 공시·실적발표 같은 텍스트에서 신호를 캐내고(3부), CNN·RNN·오토인코더·GAN·강화학습 같은 딥러닝으로 트레이딩 에이전트까지 만듭니다(4부). 그리고 모든 장이 결국 한 곳으로 모입니다 — "이 예측이 실제 시장에서 돈이 됐을까?"를 백테스트로 검증하는 것.

영웅 비유

"요리법 책이 아니라, 23개의 작동하는 주방이 달린 요리 학교"

보통 트레이딩 책은 "이 전략이 좋습니다"라고 레시피만 알려 줍니다. ML4T는 다릅니다. 각 장이 실제로 불이 켜지는 주방(노트북)이라, 재료(데이터)를 직접 손질하고, 칼질(피처 엔지니어링)을 해 보고, 요리(모델 학습)를 한 뒤, 손님에게 내기 전에 시식(백테스트)까지 직접 합니다. 읽고 끝나는 게 아니라 똑같이 다시 만들어 볼 수 있다는 것 — 그게 이 저장소가 퀀트 입문자의 표준 교본이 된 이유입니다.

용어
퀀트(Quant) / 알고리즘 트레이딩
퀀트는 '계량적(Quantitative)'의 줄임말로, 감(感)이 아니라 데이터와 수학·통계 모델로 투자 결정을 내리는 분야를 말합니다. 알고리즘 트레이딩은 그 결정을 사람이 아니라 코드(규칙·모델)가 자동으로 실행하는 것. ML4T는 이 둘을 머신러닝으로 잇습니다 — "데이터로 미래 수익을 예측하는 모델"을 만들고, "그 예측을 매매 규칙으로 바꿔 자동 검증"하는 흐름입니다.
용어
알파 팩터(Alpha Factor)
미래 수익률을 미리 알려 줄 것 같은 '신호'를 숫자로 만든 것. 예를 들어 "최근 12개월 상승률"(모멘텀), "주가 대비 순이익"(밸류) 같은 값이죠. '알파(α)'는 시장 평균을 초과하는 수익을 뜻하는 금융 기호입니다. ML4T의 절반은 사실상 "좋은 알파 팩터를 찾고, 그게 진짜 예측력이 있는지 검증하는" 이야기입니다. 부록(24장)에는 무려 100개 넘는 알파 팩터가 정리돼 있습니다.

2왜 주목받는가

"넓이 + 실행 가능성 + 검증 중심"이라는 다른 책엔 없는 삼박자

퀀트·ML 책은 많습니다. ML4T가 수년째 GitHub 트렌딩에 다시 오르는 건 "읽는 책"이 아니라 "돌리는 책"이기 때문입니다. 150개가 넘는 노트북이 대부분 이미 실행된 상태(출력·차트 포함)로 저장돼 있어, 클론만 하면 결과를 바로 눈으로 보며 따라갈 수 있습니다.

차별점 1 · 한 저장소가 곧 '커리큘럼'

선형회귀부터 강화학습까지, 한 흐름으로 이어진다

대부분의 자료는 "XGBoost 튜토리얼", "LSTM 예제"처럼 조각으로 흩어져 있습니다. ML4T는 23개 장이 난이도 순서로 이어져, 같은 데이터·같은 백테스트 틀 위에서 기법만 바꿔 갑니다. 그래서 "이 기법이 저 기법보다 트레이딩에서 뭐가 나은가"를 동일 조건으로 비교하며 배울 수 있습니다.

차별점 2 · 모델이 아니라 '워크플로'가 주인공

예측 정확도가 아니라 "돈이 됐는가"로 평가한다

일반 ML 강의는 정확도·F1 점수에서 끝납니다. 트레이딩은 다릅니다 — 예측이 맞아도 거래 비용·미끄러짐(slippage)·타이밍 때문에 손해가 날 수 있죠. ML4T는 모든 장을 데이터 → 피처 → 모델 → 백테스트 → 성과지표(샤프 비율 등)라는 'ML4T 워크플로'로 묶어, "현실에서 통하는가"를 항상 마지막에 검증합니다.

차별점 3 · 최신 논문을 코드로 재현

"읽은 논문을 직접 돌려 보는" 드문 경험

2판은 상위 저널 논문 여러 편을 그대로 재현합니다 — 시계열을 이미지로 바꿔 CNN으로 예측(Sezer & Ozbahoglu 2018), 오토인코더로 자산가격 리스크 팩터 추출(AQR 2019), GAN으로 합성 시계열 생성(TimeGAN, NeurIPS 2019). 논문을 읽고 "그래서 코드는?"에서 막혔던 사람에게 실행되는 재현 코드는 큰 가치입니다.

비유로 정리

다른 자료가 "수영 영상"이라면, ML4T는 "단계별 레인이 그려진 수영장"입니다. 얕은 물(선형모형)부터 깊은 물(강화학습)까지 레인이 이어져 있고, 각 레인마다 실제로 들어가 헤엄쳐 볼 수 있죠. 그리고 끝에는 항상 "그래서 기록이 줄었나?"를 재는 스톱워치(백테스트)가 있습니다. 넓이·실행 가능성·검증, 이 셋을 한 저장소에 담은 게 트렌딩의 진짜 이유입니다.

3기술 스택 전체 지도

Python 하나로 데이터부터 백테스트까지 — conda 환경으로 묶인 퀀트 ML 풀스택

ML4T는 처음부터 끝까지 파이썬입니다. 단, 라이브러리 수가 워낙 많아 "한 번에 다 깔지 말고, 장마다 필요한 것만 깔라"고 권합니다(버전 충돌 방지). 핵심은 conda/mamba 환경 하나로 데이터 과학 스택과 트레이딩 전용 도구를 함께 묶는 것입니다.

용어
conda / mamba 환경, ml4t.yml
conda는 파이썬 라이브러리를 '깨끗한 방(가상환경)'에 따로 설치해 버전이 엉키지 않게 해 주는 패키지 매니저입니다. mamba는 그 설치를 훨씬 빠르게 해 주는 도구. 저장소의 installation/ 폴더에는 OS별 ml4t.yml(정확한 버전 고정)과 OS 무관 ml4t-base.yml(최신 버전)이 있어, mamba env update -n ml4t -f ml4t-base.yml 한 줄로 한 방에 환경을 만듭니다. "장비 설명서대로 부품을 한 상자에 모아 주는" 역할입니다.

① 데이터 계층 — 시장·재무·대체 데이터

좋은 모델보다 좋은 데이터가 먼저라는 게 책의 일관된 메시지입니다. 다루는 데이터 소스가 다양합니다.

소스역할
Quandl / WIKI미국 주식 일별 가격의 기본 소스. zipline ingest -b quandl로 약 3,000개 종목 시계열을 받아옴 (API 키 필요)
Algoseek분(分) 단위 인트라데이 주가 데이터. 일중(intraday) 전략 예제(12장 등)의 재료
NASDAQ ITCH틱(tick) 단위 원자료. 이걸로 호가창(limit order book)을 복원하는 법을 배움(2장)
SEC EDGAR / XBRL전자공시 재무제표. 감성분석·수익 예측용 텍스트 소스(3·14·16장)
대체 데이터실적발표 녹취록 스크래핑, 위성 이미지로 토지이용 분류(18장) 등

② 피처·팩터 계층 — 알파를 만드는 도구

원자료를 모델이 먹을 수 있는 신호(피처)로 가공하는 단계입니다.

pandas · NumPy모든 데이터 가공의 토대. 책은 pandas 1.x 기준
TA-Lib이동평균·RSI·MACD 등 수십 가지 기술적 지표를 한 줄로 계산하는 표준 라이브러리(네이티브 설치 필요)
Alphalens만든 알파 팩터가 진짜 예측력이 있는지 분위수·정보계수(IC)로 평가(stefan-jansen의 alphalens-reloaded)
잡음 제거웨이블릿(wavelet)·칼만 필터로 데이터의 노이즈를 줄이는 기법(4장)

③ 모델 계층 — 고전 ML부터 딥러닝·강화학습까지

scikit-learn · statsmodels선형·로지스틱 회귀, 교차검증, 통계 진단의 기본기
XGBoost · LightGBM · CatBoost표 형태 데이터에서 가장 강력한 그래디언트 부스팅 3대 구현(12장)
SHAP"모델이 왜 그렇게 예측했나"를 피처별 기여도로 푸는 해석 도구
PyMC3베이지안 ML — 불확실성을 확률로 다뤄 동적 샤프비율·페어트레이딩에 활용(10장)
TensorFlow 2 · Keras · PyTorch딥러닝 전반(17~22장). FFN·CNN·RNN·오토인코더·GAN
spaCy · gensim · TextBlobNLP 스택 — 감성분석·토픽모델(LDA)·word2vec/doc2vec(14~16장). BERT·트랜스포머는 ch16 README에서 개념·참고링크로만 소개(실행 노트북 없음)
OpenAI Gym강화학습 트레이딩 에이전트가 상호작용할 커스텀 시장 환경(22장)

④ 백테스트·평가 계층 — "돈이 됐는가"를 재는 장치

Zipline (reloaded)이벤트 기반 백테스트 엔진. 저자가 직접 유지보수하는 zipline-reloaded는 ML 예측을 전략에 끼워 넣기 쉽게 개조됨
backtrader또 다른 백테스트 프레임워크. Zipline과 장단점을 비교하며 배움(8장)
pyfolio (reloaded)백테스트 결과를 샤프비율·낙폭(drawdown) 등 성과지표·차트로 분석
empyrical (reloaded)샤프·소르티노 등 금융 성과지표 계산 핵심 엔진

⑤ 실행 환경 — Jupyter · Docker(레거시)

모든 코드는 주피터 노트북으로 제공됩니다(목차 확장 nbextension 활용 권장). 과거엔 appliedai/packt 도커 이미지로 환경을 통째로 배포했지만, zipline-reloaded가 최신 파이썬을 지원하면서 이제 도커 없이 conda만으로 모든 노트북을 돌릴 수 있게 됐습니다(설치 README의 권장 경로).

용어
Zipline / 이벤트 기반 백테스트
Zipline은 과거 시장 데이터를 하루(또는 1분)씩 시간 순서대로 흘려보내며 "이 시점에 모델이 뭘 알았고 어떻게 매매했을까"를 시뮬레이션하는 엔진입니다. 이걸 이벤트 기반(event-driven)이라 부르는데, 미래 데이터를 실수로 엿보는 룩어헤드(lookahead) 편향을 구조적으로 막아 주기 때문입니다. 원래 Quantopian이 만들었고, 회사가 문을 닫은 뒤 ML4T 저자(stefan-jansen)가 zipline-reloaded로 되살려 유지보수하고 있습니다.

4아키텍처 심화 분석

'ML4T 워크플로' — 아이디어에서 백테스트까지 한 바퀴 도는 순환 구조

이 저장소의 진짜 아키텍처는 폴더 구조가 아니라 책 전체를 관통하는 하나의 작업 흐름입니다. 저자는 이걸 ML4T 워크플로라 부르며, 모든 장이 이 순환의 어느 한 칸을 채웁니다.

┌──────────────────────────────────────────────┐ │ ML4T 워크플로 (순환) │ └──────────────────────────────────────────────┘ ① 아이디어 / 유니버스 정의 "어떤 시장의 무엇을 예측할까" │ ▼ ② 데이터 수집 시장·재무(Quandl/Algoseek/ITCH) + 대체(SEC·위성) │ └ 1~3부: 02·03장 ▼ ③ 피처 / 알파 팩터 엔지니어링 TA-Lib·웨이블릿·칼만 → Alphalens로 검증 │ └ 04장 + 부록 24장(알파 100+) ▼ ④ 모델 학습·튜닝 선형 → 트리/부스팅 → 군집 → DL → 강화학습 │ └ 06~22장 (시계열 교차검증으로 과적합 방지) ▼ ⑤ 전략 설계 예측 신호 → 매수/매도 규칙 + 포지션 크기 │ └ 05·08장 (포트폴리오 최적화·HRP) ▼ ⑥ 백테스트 Zipline(이벤트) / backtrader → 과거에서 모의 실행 │ └ 08장 (룩어헤드·생존편향 함정 회피) ▼ ⑦ 성과 평가 pyfolio: 샤프비율·낙폭·턴오버 │ └────── 결과를 보고 ①로 되돌아가 반복(iterate) ──────┐ │ ◀─────────────────────────────────────────────────────┘

핵심 설계 패턴 1 — '예측'과 '전략'을 분리한다

초보자가 가장 많이 하는 착각이 "정확도 높은 모델 = 좋은 전략"입니다. ML4T는 이 둘을 의도적으로 분리합니다. 모델은 '신호(예측 수익률·방향)'만 내놓고, 그 신호를 언제·얼마나 매매할지로 바꾸는 건 별도의 전략 계층이 맡습니다. 그래서 같은 예측이라도 포지션 크기·리밸런싱 주기에 따라 결과가 완전히 달라지죠. 8장에서 모델 예측을 Zipline 백테스트에 '주입'하는 구조가 이 분리의 핵심 예시입니다.

핵심 설계 패턴 2 — 시계열에 맞춘 교차검증

보통 ML은 데이터를 무작위로 섞어 train/test를 나눕니다. 트레이딩에서 이건 치명적입니다 — 미래 데이터로 과거를 학습하는 꼴이라(룩어헤드), 백테스트만 화려하고 실전에선 무너지죠. ML4T는 시계열 교차검증(walk-forward)을 씁니다. 항상 과거로 학습 → 바로 다음 미래 구간으로 검증하고, 그 창을 시간순으로 굴립니다(6장).

# 개념: 시계열 교차검증은 '시간의 벽'을 절대 넘지 않는다
# (무작위 셔플 금지 — 미래로 과거를 학습하면 안 됨)
fold 1:  [학습 ====]      [검증 ▷]
fold 2:  [학습 =======]   [검증 ▷]
fold 3:  [학습 ==========][검증 ▷]
         └─ 항상 과거→미래 방향. 창을 앞으로 굴린다 ─┘

핵심 설계 패턴 3 — 백테스트의 함정을 '먼저' 가르친다

8장은 모델보다 "틀린 백테스트가 어떻게 거짓 수익을 만드는가"를 먼저 짚습니다. 핵심 함정 셋: 룩어헤드 편향(미래 정보 누설), 생존 편향(상장폐지 종목이 데이터에서 빠져 수익률이 부풀려짐), 데이터 스누핑(같은 데이터로 너무 많이 시도해 우연히 좋아 보이는 전략을 고름). 이벤트 기반 엔진(Zipline)을 쓰는 이유도 이 함정들을 구조적으로 막기 위해서입니다.

# 벡터화 vs 이벤트 기반 백테스트의 차이
# 벡터화: 전체 기간을 한꺼번에 계산 → 빠르지만 룩어헤드 실수 쉬움
signals = model.predict(all_data)        # 위험: '전체'를 미리 봄

# 이벤트 기반(Zipline): 하루씩 시간 순서로만 진행 → 미래 못 봄
def handle_data(context, data):       # 매 거래일 호출
    today_features = data.history(...)   # '오늘까지'만 접근 가능
    signal = context.model.predict(today_features)
    order_target_percent(asset, signal)  # 그 시점의 주문만 실행

핵심 설계 패턴 4 — '노트북 하나 = 개념 하나'의 교육 구조

코드가 거대한 애플리케이션이 아니라 150여 개의 독립 노트북으로 쪼개져 있는 것 자체가 설계입니다. 각 노트북은 한 개념을 처음부터 끝까지(데이터 로드 → 모델 → 결과) 자족적으로 보여 줍니다. 덕분에 관심 있는 장만 떼어 실행할 수 있고, 대부분 이미 출력이 저장돼 있어 안 돌려도 결과를 볼 수 있습니다.

비유로 정리

이 아키텍처는 "신약 임상시험 절차"와 닮았습니다. 후보 물질(알파 팩터)을 찾고(③), 동물실험·소규모 시험(모델 학습 ④)을 거쳐, 실제 환자에게 쓰기 전 엄격한 통제임상(백테스트 ⑥)으로 "정말 효과가 있고 부작용(거래비용·낙폭)은 견딜 만한가"를 검증합니다. 그리고 결과가 나쁘면 처음으로 돌아가 다시(⑦→①). ML4T가 가르치는 건 멋진 모델이 아니라 이 검증의 규율입니다.

5디렉토리 구조 해부

'책 목차 = 폴더 구조' — 24개 번호 폴더가 곧 커리큘럼

ML4T의 폴더 구조는 외울 게 없습니다. 책의 장 번호가 그대로 폴더 이름이라, 목차를 아는 순간 저장소 지도를 다 아는 셈이죠. 4개의 부(部)로 묶인 24개 폴더 + 공용 데이터/설치 폴더로 구성됩니다.

machine-learning-for-trading/ │ ├── ◤ 1부: 데이터에서 전략까지 ◢ │ ├── 01_machine_learning_for_trading/ · ML 트레이딩 큰 그림 │ ├── 02_market_and_fundamental_data/ · 시장·재무 데이터(ITCH·XBRL) │ ├── 03_alternative_data/ · 대체 데이터·웹 스크래핑 │ ├── 04_alpha_factor_research/ · ★알파 팩터 + TA-Lib + Alphalens │ └── 05_strategy_evaluation/ · 포트폴리오 최적화 + pyfolio │ ├── ◤ 2부: ML 기초 ◢ │ ├── 06_machine_learning_process/ · 학습·교차검증·과적합 │ ├── 07_linear_models/ · 선형·로지스틱 회귀 │ ├── 08_ml4t_workflow/ · ★백테스트(Zipline·backtrader) │ ├── 09_time_series_models/ · ARIMA·GARCH·공적분 페어 │ ├── 10_bayesian_machine_learning/ · PyMC3 베이지안 │ ├── 11_decision_trees_random_forests/ · 트리·랜덤포레스트 │ ├── 12_gradient_boosting_machines/ · ★XGBoost·LightGBM·CatBoost·SHAP │ └── 13_unsupervised_learning/ · PCA·군집·HRP │ ├── ◤ 3부: 트레이딩을 위한 NLP ◢ │ ├── 14_working_with_text_data/ · 감성분석(나이브베이즈) │ ├── 15_topic_modeling/ · LDA 토픽모델 │ └── 16_word_embeddings/ · word2vec·doc2vec (BERT는 개념·참고링크만) │ ├── ◤ 4부: 딥러닝 & 강화학습 ◢ │ ├── 17_deep_learning/ · FFN(TF2·PyTorch) │ ├── 18_convolutional_neural_nets/ · CNN(시계열→이미지·위성) │ ├── 19_recurrent_neural_nets/ · RNN·LSTM │ ├── 20_autoencoders_for_..._risk/ · 오토인코더 자산가격 │ ├── 21_gans_for_synthetic_time_series/ · GAN(TimeGAN) │ ├── 22_deep_reinforcement_learning/ · ★강화학습 트레이딩 에이전트 │ └── 23_next_steps/ · 마무리·다음 단계 │ ├── 24_alpha_factor_library/ · ★부록: 알파 팩터 100+ (TA-Lib·WorldQuant 101) │ ├── data/ · 공용 데이터 다운로드·전처리 가이드 ├── figures/ · 책 그림의 컬러 버전 ├── installation/ · OS별 ml4t.yml + 설치 README ├── assets/ · 보조 자료 ├── utils.py · 공용 헬퍼 함수 └── README.md · 전체 목차·장별 요약(44KB)
한눈에
읽는 순서 추천
installation/로 환경부터 만들고 → 04_alpha_factor_research로 "신호를 어떻게 만들고 검증하나" 핵심 감 잡기 → 08_ml4t_workflow로 백테스트 틀 이해(여기가 척추) → 12_gradient_boosting_machines로 가장 실전적인 모델 → ⑤ 관심 분야(NLP 14~16 / DL 17~22)로 확장. 1·5·6장은 개념 배경이라 틈틈이 읽으면 됩니다.

6학습 포인트 (기술별)

이 저장소 하나로 '데이터 과학 + 금융 + 딥러닝'을 한 번에 관통한다

① 피처 엔지니어링 · 알파 팩터 (04 · 24장)

모델보다 중요한 게 입력입니다. TA-Lib로 기술적 지표를 만들고, 웨이블릿·칼만 필터로 노이즈를 줄이고, Alphalens로 "이 팩터가 진짜 예측력이 있나"를 정보계수(IC)·분위수 수익률로 검증하는 흐름은 어떤 ML 분야에도 통하는 기본기입니다.

실습 아이디어

내가 좋아하는 지표(예: RSI, 볼린저밴드) 하나를 알파 팩터로 만들어 Alphalens에 넣고, 분위수별 수익률이 단조롭게 줄/늘어나는지 확인해 보세요. 단조롭지 않으면 그 팩터엔 예측력이 거의 없는 겁니다. "신호가 진짜인지 가짜인지 가리는 눈"을 기르는 과제입니다.

② 시계열 교차검증 · 과적합 (06 · 07장)

금융 데이터에서 ML이 무너지는 1순위 이유가 과적합과 룩어헤드입니다. "왜 무작위 셔플이 금지인가", "walk-forward는 어떻게 창을 굴리나", "out-of-sample 검증을 왜 더 엄격히 해야 하나"를 손으로 익히면, ML4T 밖의 어떤 시계열 문제에도 적용됩니다.

③ 그래디언트 부스팅 · 모델 해석 (11 · 12장)

표 형태 금융 데이터에서 가장 강한 무기는 여전히 XGBoost·LightGBM·CatBoost입니다. 셋의 차이(부스팅 방식·범주형 처리·속도)와 하이퍼파라미터 튜닝, 그리고 SHAP 값으로 "어떤 피처가 예측을 끌어올렸나"를 해석하는 법은 캐글·실무 어디서든 즉시 쓰입니다.

④ 비지도학습 · 포트폴리오 (13장)

PCA·ICA로 데이터에서 리스크 팩터(고유포트폴리오)를 추출하고, 계층적 군집으로 계층적 리스크 패리티(HRP) 포트폴리오를 짜는 부분은, "수익 예측"을 넘어 "어떻게 자산을 배분해 리스크를 낮추나"라는 다른 축을 가르칩니다.

⑤ 트레이딩을 위한 NLP (14~16장)

SEC 공시·실적발표 녹취록 같은 텍스트에서 매매 신호를 캐는 법입니다. 문서-단어 행렬·나이브베이즈 감성분석 → LDA 토픽모델 → word2vec/doc2vec로 이어지는 NLP 사다리를 '금융 텍스트'라는 구체적 목표로 오르게 합니다. (BERT·트랜스포머는 ch16에서 개념·참고링크로만 소개되며 실행 가능한 파인튜닝 노트북은 없습니다.)

⑥ 딥러닝 4종 + 강화학습 (17~22장)

한 저장소 안에서 CNN(시계열을 이미지로 변환·위성사진), RNN/LSTM(다변량 시계열), 오토인코더(자산가격 리스크 팩터), GAN(TimeGAN 합성 데이터), 강화학습(커스텀 Gym 시장 환경에서 매매 에이전트 학습)을 모두 만져 봅니다. 각각이 별도 책 한 권 분량인 주제를 "트레이딩"이라는 한 맥락으로 묶어 맛볼 수 있는 건 흔치 않은 기회입니다.

⑦ 백테스트 엔지니어링 (08장)

Zipline(이벤트 기반)과 backtrader를 직접 굴리며 "실전 같은 시뮬레이션"을 만드는 법을 배웁니다. 주문 체결·슬리피지·수수료를 어떻게 모델링하고, 어떤 편향을 피해야 하는지는 퀀트 실무의 핵심 역량입니다.

7하드웨어/시스템 요구사항

"고전 ML 장은 노트북으로 충분, 딥러닝 장은 GPU 권장"

전부를 한 번에 갖출 필요는 없습니다. 장(章)에 따라 요구사항이 크게 다릅니다.

항목권장메모
파이썬Python 3.8 (zipline-reloaded는 3.7~3.9)conda/mamba로 ml4t 환경 생성
메모리(RAM)최소 8GB, 16GB+ 권장NASDAQ ITCH 틱·SEC 공시 예제(2장)는 메모리 집약적 — 도커 사용 시 4→8GB 이상 할당
GPU딥러닝 장(17~22)에 권장tensorflow-gpu + 맞는 CUDA. 없으면 학습이 느릴 뿐 실행은 가능
디스크수~수십 GBQuandl 3,000종목 + Algoseek 분봉 + ITCH 틱 데이터
네이티브 의존성TA-Lib, LightGBM, swigmacOS는 brew, Ubuntu는 apt + 소스 빌드 필요
API 키Quandl(현 Nasdaq Data Link)미국 주가 다운로드용 무료 키. zipline ingest -b quandl
시작 팁
전부 깔지 말고 '장 단위'로 깔아라

저자가 README에서 가장 강조하는 점입니다 — 모든 라이브러리를 한 번에 설치하면 버전 충돌에 빠지기 쉽습니다. 관심 있는 장의 노트북을 열어 import 목록을 보고, 그 장에 필요한 것만 추가로 설치하며 나아가세요. 백테스트(Zipline) 관련 노트북만 별도 환경을 쓰는 경우도 있으니 각 노트북 상단 안내를 확인합니다.

주의
데이터·버전은 '시점' 의존성이 크다

책은 pandas 1.x · TensorFlow 2.2 시점 기준입니다. 최신 라이브러리로 돌리면 일부 API가 바뀌어 경고나 오류가 날 수 있습니다. 그럴 땐 OS별 ml4t.yml(버전 고정)을 쓰거나, 막히는 부분은 저장소 GitHub Issues를 검색하세요(같은 문제를 먼저 겪은 사람이 많습니다). 또 Quandl WIKI 데이터는 갱신이 멈춘 과거 데이터셋이라 '학습용'으로만 보는 게 안전합니다.

8직접 해볼 수 있는 실습 과제

난이도별 5개 — 환경 구축 → 팩터 검증 → 모델 → 백테스트 → 재현/응용
난이도 ★☆☆☆☆ · 입문

1. 환경 만들고 첫 노트북 돌리기

conda create -n ml4t python=3.8mamba env update -n ml4t -f installation/ml4t-base.yml로 환경을 만들고, Quandl 키를 받아 zipline ingest -b quandl로 데이터를 받으세요. 그다음 04_alpha_factor_research의 노트북 하나를 열어 처음부터 끝까지 셀을 실행해 차트가 나오는지 확인합니다. "환경이 돌아간다"를 확인하는 게 8할입니다.

난이도 ★★☆☆☆ · 팩터 검증

2. 내 알파 팩터를 Alphalens로 평가

TA-Lib로 모멘텀(예: 60일 수익률)이나 변동성 팩터를 직접 만들어, Alphalens의 분위수 수익률·정보계수(IC)로 예측력을 측정해 보세요. 분위수 1(하위)→5(상위)로 갈수록 미래 수익이 단조롭게 변하는지, IC가 0에서 의미 있게 떨어져 있는지 봅니다. "신호가 진짜인지 가짜인지" 가리는 첫 훈련입니다.

난이도 ★★★☆☆ · 모델 학습

3. LightGBM 수익 예측 + SHAP 해석

12_gradient_boosting_machines를 따라 여러 알파 팩터를 입력으로 다음 기간 수익률을 예측하는 LightGBM을 학습시키고, 반드시 시계열 교차검증으로 검증하세요. 그다음 SHAP 값으로 어떤 팩터가 예측에 가장 기여했는지 그려 봅니다. 모델을 '블랙박스'가 아니라 '설명 가능한 도구'로 다루는 경험입니다.

난이도 ★★★★☆ · 백테스트

4. 모델 신호로 Zipline 백테스트 돌리기

3번에서 만든 예측을 08_ml4t_workflow의 틀에 따라 Zipline 전략에 주입해, 상위 신호 종목을 롱(매수)·하위를 숏(매도)하는 롱숏 전략을 백테스트하세요. 그리고 pyfolio로 샤프비율·최대낙폭·턴오버를 분석합니다. "예측 정확도"와 "실제 수익"이 얼마나 다른지 직접 충격받아 보는 과제입니다.

난이도 ★★★★★ · 재현/응용

5. 논문 재현 또는 RL 에이전트 만들기

택일: (A) 18장시계열→이미지 변환 CNN이나 21장TimeGAN 합성 데이터를 다른 종목·기간으로 재현, 또는 (B) 22장강화학습 트레이딩 에이전트를 커스텀 Gym 환경에서 학습시키고 보상 함수를 바꿔 행동이 어떻게 달라지는지 실험. 이 단계까지 오면 "논문을 코드로 옮기는" 연구자 역량을 갖추게 됩니다.

9관련 기술 심화 학습 로드맵

8주 코스 — 데이터·팩터 기본기부터 딥러닝·강화학습 트레이딩까지

책이 23개 장으로 방대해, 한 번에 다 보려 하면 지칩니다. 부(部) 단위로 끊어 8주에 나눠 보는 걸 권합니다.

주차주제할 일 (장)
1주차큰 그림 + 환경01장 + installation/로 환경 구축, Quandl 데이터 인제스트, 노트북 실행 흐름 익히기
2주차데이터 다루기02·03장 — 시장·재무 데이터, 호가창 복원, SEC/XBRL, 웹 스크래핑으로 대체 데이터 만들기
3주차알파 팩터 + 평가04·05장 — TA-Lib 팩터, Alphalens 검증, 포트폴리오 최적화·pyfolio (★핵심)
4주차ML 프로세스 + 선형/백테스트06·07·08장 — 시계열 교차검증, 선형모형, Zipline/backtrader 백테스트 (★척추)
5주차트리·부스팅·비지도11·12·13장 — 랜덤포레스트, XGBoost/LightGBM/CatBoost + SHAP, PCA·HRP
6주차시계열·베이지안09·10장 — ARIMA·GARCH·공적분 페어트레이딩, PyMC3 베이지안
7주차트레이딩 NLP14·15·16장 — 감성분석, LDA 토픽모델, word2vec/doc2vec (BERT는 개념·참고링크만)
8주차딥러닝 + 강화학습17~22장 — FFN·CNN·RNN·오토인코더·GAN·강화학습 에이전트 (관심 분야 집중)
학습 전략

이 저장소는 "넓고 깊은 뷔페"라, 다 먹으려다 체하기 쉽습니다. 핵심은 3·4주차(알파 팩터·백테스트)를 가장 단단히 다지는 것 — 여기가 퀀트 ML의 척추이고, 나머지 모델 장들은 결국 "이 틀에 무엇을 끼우느냐"의 변주입니다. 딥러닝(8주차)은 관심 있는 한두 장만 깊게 파도 충분합니다. 모델을 늘리기보다, 검증의 규율을 익히는 데 시간을 쓰세요.

10핵심 키워드 사전

이 글에 나온 용어를 한 줄씩 다시 정리
용어의미
알파 팩터미래 수익률을 예측할 것 같은 신호를 숫자로 만든 것(모멘텀·밸류 등). 부록에 100+ 정리
알파(α)시장 평균을 초과하는 수익. 퀀트의 최종 목표
백테스트전략을 과거 데이터에 적용해 "그때 돈이 됐을까"를 모의 실행하는 검증
이벤트 기반 / 벡터화이벤트 기반=하루씩 시간순 진행(룩어헤드 방지·느림), 벡터화=한꺼번에 계산(빠름·실수 위험)
룩어헤드 편향백테스트가 미래 정보를 실수로 엿보는 오류. 거짓 수익의 1순위 원인
생존 편향상장폐지·파산 종목이 데이터에서 빠져 수익률이 부풀려 보이는 함정
데이터 스누핑같은 데이터로 너무 많이 시도해 우연히 좋아 보이는 전략을 고르는 과적합
시계열 교차검증항상 과거로 학습→미래로 검증하며 창을 굴리는 walk-forward 방식(무작위 셔플 금지)
샤프 비율(Sharpe)리스크 1단위당 초과수익. 전략 품질의 표준 성과지표(pyfolio가 계산)
ZiplineQuantopian이 만들고 ML4T 저자가 zipline-reloaded로 되살린 이벤트 기반 백테스트 엔진
Alphalens알파 팩터의 예측력을 분위수 수익률·정보계수(IC)로 평가하는 도구
pyfolio백테스트 결과를 샤프·낙폭 등 성과지표·차트로 분석하는 도구
TA-LibRSI·MACD 등 수십 가지 기술적 지표를 한 줄로 계산하는 표준 라이브러리
그래디언트 부스팅약한 트리를 순차적으로 쌓아 강한 예측기를 만드는 기법. XGBoost·LightGBM·CatBoost
SHAP"각 피처가 예측을 얼마나 끌어올렸나"를 수치로 푸는 모델 해석 도구
HRP(계층적 리스크 패리티)자산을 군집으로 묶어 리스크를 분산하는 포트폴리오 배분 기법(13장)
공적분 / 페어트레이딩같이 움직이는 두 종목의 가격 차가 벌어지면 좁혀질 것에 베팅하는 전략(9장)
GARCH변동성(리스크)의 군집 현상을 모델링해 미래 변동성을 예측하는 시계열 모형
LDA 토픽모델많은 문서에서 숨은 주제를 자동으로 뽑아내는 비지도 NLP 기법(15장)
word2vec / doc2vec단어·문서를 의미가 담긴 벡터로 바꾸는 임베딩. 유사한 의미는 가까운 위치(16장)
TimeGAN실제와 구분 안 되는 합성 시계열을 만드는 GAN. 학습 데이터 증강용(21장)
강화학습(RL) / Gym에이전트가 환경과 상호작용하며 보상을 최대화하도록 배우는 학습. 커스텀 시장 환경에서 매매 에이전트 훈련(22장)
conda / mamba파이썬 라이브러리를 가상환경에 따로 설치하는 패키지 매니저(mamba는 빠른 버전)

11참고 링크