paperswithbacktest/awesome-systematic-trading · 형식 Awesome List(awesome.re 배지) · 중국어판 README_zh.md 동봉 · 전략 상세는 paperswithbacktest.com으로 이전 · TrendShift 데일리 10위 · 최신 커밋 2025-01)
먼저 이름을 풀자. Systematic Trading(시스터매틱 트레이딩)은 사람의 직관·기분이 아니라 미리 정한 규칙과 데이터·수학 모델로 매매 결정을 내리는 방식이다. "이 조건이 되면 산다/판다"를 코드로 못 박아 컴퓨터가 실행한다. 흔히 퀀트(quant, 계량) 트레이딩, 알고리즘 트레이딩과 겹쳐 쓰인다. 셋은 강조점이 조금씩 다르지만 이 저장소에서는 사실상 같은 세계를 가리킨다.
README.md 문서 한 장으로 이뤄진다. awesome.re 배지가 붙으면 "커뮤니티 기준을 지킨 어썸 리스트"라는 표식이다. 즉 이 저장소의 "제품"은 소프트웨어가 아니라 잘 정돈된 목록 그 자체다.왜 이런 게 인기일까? 퀀트 트레이딩은 배울 게 사방에 흩어져 있다. 데이터를 어디서 받고, 어떤 백테스트 도구를 쓰고, 어떤 논문의 전략이 실제로 통했는지, 어떤 책부터 읽어야 하는지 — 초보자는 첫걸음에서 길을 잃는다. 이 저장소는 그 흩어진 조각을 "카테고리별로 줄 세운 한 장의 지도"로 묶어 준다.
이 저장소는 냄비도 레시피도 아니다. "좋은 냄비(라이브러리)는 여기, 검증된 레시피(전략 논문)는 저기, 기초 요리책(입문서)은 이것부터"라고 분류해 놓은 목록이다.
중요한 건 목록을 넘어 "순서와 근거"를 준다는 점이다. 라이브러리는 인기순(별 수)으로, 전략은 샤프 지수(위험 대비 수익) 높은 순으로 줄 세워, 초보자가 "무엇부터, 왜"를 판단하도록 돕는다.
단, 반드시 짚을 것 — 이 저장소가 나열한 전략의 샤프 지수는 과거 데이터 백테스트 결과이지 미래 수익 보장이 아니다. 저장소 스스로도 전략 상세는 별도 사이트(paperswithbacktest.com)로 옮겼고, 여기 남은 값은 "학습용 참고 지표"로 봐야 한다. 이 문서 역시 투자 권유가 아니라 기술·개념 학습 자료다.
이 저장소는 새로 만들어진 프로젝트가 아니라 오래 쌓여 온 큐레이션인데, TrendShift 데일리 상위(10위)에 다시 올랐다. 이유는 크게 세 가지다.
요즘 트렌딩 목록을 보면 Vibe-Trading, ai-berkshire, qsx-strategy-score처럼 AI 에이전트로 매매 전략을 만들고 검증하려는 저장소가 쏟아진다. 그런 시도를 하려면 결국 "검증된 백테스터·데이터 소스·전략 논문"이 필요하고, 그 원천 지도가 바로 이 어썸 리스트다. AI 붐이 오래된 큐레이션을 다시 끌어올린 셈이다.
개별 라이브러리나 논문은 검색하면 나오지만, 서로의 관계와 우선순위는 초보자가 스스로 잡기 어렵다. 이 저장소는 97개 라이브러리를 기능별(백테스트/지표/최적화/데이터/ML…) + 언어별 + 인기순으로, 전략을 자산군별 + 샤프순으로 정렬해 "선택의 피로"를 줄인다. 밀도와 정렬 기준이 명확한 게 강점이다.
퀀트 관련 어썸 리스트는 여럿 있지만, 이 저장소는 전략마다 샤프 지수·변동성·리밸런싱 주기·QuantConnect 구현 코드 링크·원 논문을 함께 붙여 둔 점이 두드러진다. 단순 나열을 넘어 "바로 재현해 볼 수 있는 형태"를 지향한다. 운영 주체(paperswithbacktest.com)가 백테스트 사업을 하는 팀이라 실전 감각이 반영돼 있다.
백테스터는 backtesting.py·backtrader부터, 데이터는 yfinance부터, 책은 입문(Beginner) 칸부터 — 각 칸의 맨 위(인기·평점 상위)만 따라가도 안전한 첫 코스가 된다.
저장소는 크게 5개 대분류로 나뉜다: ① 라이브러리·패키지(실제 코드 도구), ② 전략(논문 기반), ③ 책, ④ 블로그, ⑤ 강의. 이 중 라이브러리 분류가 가장 방대하며, 퀀트 트레이딩 시스템을 만들 때 필요한 부품이 기능별로 정리돼 있다.
| 분류 | 역할 | 대표 도구(별 수 상위) |
|---|---|---|
| 백테스트·실거래 (이벤트 기반) | 주문·체결을 사건 단위로 시뮬레이션 | vnpy, zipline, backtrader, nautilus_trader, QuantConnect(Lean) |
| 백테스트 (벡터 기반) | 배열 연산으로 수천 전략을 한 번에 | vectorbt, bt, pysystemtrade |
| 크립토 봇 | 암호화폐 자동매매 | Freqtrade, Jesse, OctoBot, Hummingbot |
| 지표(Indicators) | 이동평균·RSI 등 기술적 지표 계산 | ta-lib, pandas-ta, finta |
| 지표(Metrics)/최적화 | 성과 지표·포트폴리오 최적화 | quantstats, PyPortfolioOpt, Riskfolio-Lib |
| 가격결정(Pricing) | 옵션·파생상품 가치 계산 | tf-quant-finance, FinancePy, PyQL(QuantLib) |
| 브로커 API | 거래소·증권사 연결 | ccxt, ib_insync |
| 데이터 소스 | 시세·재무 데이터 수집 | OpenBB, yfinance, AkShare, TuShare |
| 머신러닝 | AI 기반 투자 연구 | QLib(Microsoft), FinRL, mlfinlab |
| 시계열/시각화/DB | 분석·차트·저장 | Prophet, statsmodels, mplfinance, ArcticDB |
눈여겨볼 점: 대부분 파이썬이지만, 속도가 중요한 영역에는 C++(PandoraTrader), Rust(FlashFunk, ta-rs), Go(gobacktest, Marketstore)가 섞여 있다. "연구는 파이썬, 실전 고빈도는 저수준 언어"라는 업계 관행이 목록에 그대로 드러난다.
전략은 주식·채권·상품·통화·암호화폐·REITs 등 자산군으로 묶이고, 각 묶음 안에서 샤프 지수가 높은 순으로 정렬된다. 예를 들어 주식(Equities) 칸에는 "자산성장 효과(0.835)", "단기 반전 효과(0.816)"처럼 학술 논문에서 나온 이상현상(anomaly) 전략들이 성능 순으로 줄지어 있고, 각 줄에 원 논문 링크와 QuantConnect 구현 코드가 붙는다.
55권은 입문 → 코딩 → 일반/심화 → 고빈도(HFT) → 머신러닝 → 전기(biography)로 나뉜다. 아마존 리뷰 수·평점이 배지로 붙어 "많이 읽히고 평가 좋은 책"을 고르기 쉽다. 대표작으로 로버트 카버의 Systematic Trading(이 책에서 pysystemtrade가 나왔다), 어니스트 챈의 Algorithmic Trading 등이 있다.
이 저장소를 "부품 상자"라고 했는데, 부품들은 사실 하나의 조립 순서를 따른다. 퀀트 트레이딩 시스템을 만드는 표준 파이프라인이다. 목록의 각 분류가 이 흐름의 어느 칸에 꽂히는지 보면 저장소 전체가 한눈에 정리된다.
이 그림의 핵심은 "저장소가 왜 그런 분류를 택했는지"가 파이프라인과 정확히 대응한다는 것이다. 데이터 → 지표 → 전략 → 백테스트 → 평가 → 최적화 → 실거래. 초보자는 이 순서대로 각 칸의 상위 도구 하나씩만 익혀도 끝에서 끝까지 도는 최소 시스템을 만들 수 있다.
(수익률 − 무위험수익률) ÷ 변동성으로 계산한다. 수익이 아무리 커도 가격이 널뛰면(변동성↑) 샤프는 낮아진다. 그래서 "얼마 벌었나"가 아니라 "얼마나 안정적으로 벌었나"를 비교할 때 쓴다. 통상 1이면 좋고, 2 이상이면 매우 우수, 0 근처면 위험 대비 매력이 없다는 뜻이다.저장소의 전략 표를 보면 대부분 0.1~0.9 사이다. "생각보다 낮네?"라고 느낄 수 있는데, 이게 현실이다. 단일 학술 전략 하나로 높은 샤프를 내기는 어렵고, 실전에서는 여러 낮은-샤프 전략을 분산 결합해 전체 샤프를 끌어올린다. 이 목록이 "전략을 자산군별로 잘게 쪼개 놓은" 이유도 결국 조합용 재료를 제공하기 위해서다.
샤프 지수는 "돈을 얼마 벌었나"가 아니라 "심장이 얼마나 덜 철렁였나 대비 벌었나"를 재는 자다. 한 해 +50%지만 중간에 -40%까지 빠졌다 온 전략보다, +12%인데 내내 잔잔했던 전략이 샤프는 더 높을 수 있다. 저장소가 이 자로 줄 세운다는 건 "화려함이 아니라 승차감"으로 평가한다는 뜻이다.
awesome 리스트답게 파일 구조는 아주 얇다. 핵심은 README.md 단 하나이고, 나머지는 이미지와 예시 전략 코드다.
구조가 이렇게 단순한 것 자체가 학습 포인트다. awesome 리스트는 "코드가 아니라 잘 관리된 목록"이 가치이므로, 유지보수는 곧 README를 최신·정확하게 지키는 일이다. 그래서 이런 저장소의 기여(contribution)는 대부분 "링크 추가/수정 PR"이고, 문법·정렬 규칙을 지키는 게 핵심 규율이다.
LEAN(목록의 백테스트 칸에도 있음)이다. 저장소의 전략 표에 붙은 "QuantConnect" 링크는 그 전략을 LEAN 문법으로 구현한 파이썬 코드로 연결된다 — 논문을 읽고 바로 코드로 확인하라는 설계다.전략 상세는 이미 paperswithbacktest.com으로 이전됐고, 라이브러리 중 일부(예: quandl, 일부 크립토 봇)는 유지보수가 멈췄거나 서비스가 바뀌었다. 목록은 "출발점"으로 쓰되, 실제 도입 전 각 도구의 현재 상태(마지막 커밋·이슈)를 반드시 확인해야 한다.
이 저장소의 진짜 가치는 매매 비법이 아니라, 데이터를 다루고 가설을 검증하는 엔지니어링 훈련장이라는 데 있다. 개발·데이터 관심사가 있는 사람에게 배울 거리를 뽑아 본다.
목록의 데이터 소스(yfinance)·지표(pandas-ta)·시각화(mplfinance)를 엮으면, pandas·numpy·matplotlib를 "목적 있는 프로젝트"로 익힐 수 있다. 막연히 "판다스 공부"보다, "애플 주가 받아서 이동평균 그리기"가 훨씬 잘 남는다.
가설(전략)을 세우고 → 과거 데이터로 검증하고 → 성과를 정량 지표로 판단하는 흐름은 데이터 사이언스의 실험 설계와 똑같다. backtesting.py 한 개만 익혀도 "내 아이디어가 데이터상 통하는가"를 스스로 확인하는 감각이 생긴다.
백테스트에서 파라미터를 계속 조정해 과거 수익을 극대화하면, 과거 데이터의 우연한 잡음까지 외워 버린 전략이 된다. 실전에 넣으면 무너진다. 트렌딩 목록에 함께 오른 qsx-strategy-score 같은 도구가 바로 이 오버피팅·행운 여부를 점검하려는 시도다. 이 저장소로 백테스트를 배울 때 가장 먼저 경계해야 할 개념이다.
같은 "백테스터"인데 파이썬(느리지만 생산적), Rust/C++(빠르지만 까다로움), Go(중간)로 나뉘어 있다. "왜 이 영역엔 이 언어를 쓸까"를 목록으로 관찰하면, 성능·생산성 트레이드오프를 실제 사례로 배운다.
잘 만든 awesome 리스트는 정보 설계의 교본이다. "무엇을 어떤 축으로 나누고, 어떤 기준으로 정렬하고, 각 항목에 어떤 메타데이터(별·평점·샤프)를 붙일까." 자기 분야의 awesome 리스트를 만들어 보는 것만으로도 훌륭한 학습이 된다.
저장소 자체는 문서라 읽는 데는 브라우저만 있으면 된다. 목록의 도구를 실제로 돌려 보려면 아래 정도가 표준 출발선이다.
| 용도 | 준비물 | 메모 |
|---|---|---|
| 기본 실습 환경 | Python 3.10+ / Jupyter 또는 VS Code | 대부분의 라이브러리가 파이썬 |
| 필수 패키지 | pandas, numpy, matplotlib | 데이터·계산·차트의 3종 세트 |
| 시세 데이터 | yfinance (무료) | API 키 없이 야후 파이낸스에서 수집 |
| 백테스트 | backtesting.py 또는 backtrader | 입문은 backtesting.py가 가벼움 |
| 크립토 실습 | ccxt + 거래소 API 키 | 실거래 전 반드시 페이퍼/테스트넷 |
| 고성능/대량 테스트 | vectorbt (Numba 가속) | 수천 파라미터 조합을 초 단위로 |
이 저장소는 "등산로 안내판"이다. 안내판을 보는 데는 준비물이 필요 없지만, 실제로 산을 오르려면(도구를 돌리려면) 신발·물·지도(파이썬 환경·데이터·백테스터)가 필요하다. 그리고 실거래는 "정상 등반" — 충분히 연습한 뒤에, 잃어도 되는 규모로만.
yfinance로 관심 종목(예: AAPL) 5년치 종가를 받아 matplotlib로 그린다. 여기에 20일·60일 이동평균선을 얹어 본다. 목표: "데이터 소스 → pandas → 차트" 흐름을 몸으로 익히기.
backtesting.py로 "단기선이 장기선을 상향 돌파하면 매수, 하향이면 매도" 규칙을 백테스트한다. 결과에서 총수익·최대낙폭(MDD)·샤프 지수를 읽어 본다. 목표: 파이프라인의 [3]→[4]→[5]를 한 바퀴 돌리기.
저장소의 전략 표에서 이해하기 쉬운 것(예: Turn of the Month — 월말·월초 며칠만 보유)을 골라, 원 논문 링크를 훑고 static/strategies/의 QuantConnect 코드를 읽어 규칙을 파이썬으로 직접 옮겨 백테스트한다. 목표: "논문 → 규칙 → 코드" 번역 훈련.
과제 2의 이동평균 기간을 여러 값으로 바꿔 가며 "과거 수익이 가장 좋은 조합"을 찾은 뒤, 데이터를 앞/뒤 절반으로 나눠(in-sample / out-of-sample) 뒤 절반에서 성능이 유지되는지 확인한다. 목표: 과최적화가 실제로 어떻게 무너지는지 눈으로 보기.
상관이 낮아 보이는 전략 두 개(예: 주식 모멘텀 + FX 캐리)를 각각 백테스트한 뒤 quantstats로 결합 포트폴리오의 샤프·낙폭·상관 리포트를 만든다. 목표: 섹션 4에서 말한 "낮은-샤프 전략 분산 결합"을 직접 체감.
저장소를 "링크 모음"에서 "순서 있는 커리큘럼"으로 바꾸면 이렇게 된다. 개발 배경이 있는 사람이 6주 안에 최소 시스템까지 도달하는 경로다.
| 주차 | 주제 | 이 저장소에서 쓸 자료 |
|---|---|---|
| 1주차 | 파이썬 데이터 기본기 | 데이터 소스(yfinance) + pandas/numpy로 시세 다루기, mplfinance로 시각화 |
| 2주차 | 기술적 지표 | ta-lib / pandas-ta로 이동평균·RSI·볼린저밴드 계산·의미 이해 |
| 3주차 | 백테스트 기초 | backtesting.py로 첫 전략 검증, 성과 지표(샤프·MDD) 해석 |
| 4주차 | 전략 논문 읽기 | 전략 표에서 1~2개 골라 논문+QuantConnect 코드 대조 재현 |
| 5주차 | 리스크·최적화 | quantstats로 리포트, PyPortfolioOpt로 비중 배분 개념 |
| 6주차 | 결합·검증 심화 | 여러 전략 결합, in/out-of-sample로 오버피팅 점검 |
| 이후 | 선택 심화 | ML(QLib·FinRL) / 크립토(Freqtrade·ccxt) / 고빈도(HFTBacktest) 중 택1 |
| 용어 | 뜻 |
|---|---|
| Systematic Trading | 직관이 아닌 규칙·데이터·모델로 매매하는 방식. 퀀트/알고 트레이딩과 사실상 동의어로 쓰임 |
| Awesome List | 한 주제의 좋은 자료만 골라 정리한 GitHub 큐레이션 저장소(주로 README 문서) |
| Backtest | 매매 규칙을 과거 데이터에 대입해 성과를 시뮬레이션하는 것 |
| Sharpe Ratio | 위험(변동성) 한 단위당 수익. 안정성 대비 수익성을 재는 대표 지표 |
| Overfitting | 과거 데이터에만 완벽하게 맞춰져 실전에서 무너지는 상태(과최적화) |
| Event-driven / Vector-based | 백테스트 방식. 사건 단위 순차 처리 vs 배열 일괄 계산(빠름) |
| Rebalancing | 포트폴리오 비중을 주기적으로 다시 맞추는 것(일/주/월/분기/연) |
| Anomaly(이상현상) | 효율적 시장 가설로 설명 안 되는, 초과수익을 낳는 패턴(모멘텀·반전 등) |
| Carry Trade | 금리 낮은 통화로 빌려 금리 높은 통화/자산에 투자하는 전략 |
| MDD (Max Drawdown) | 최대낙폭. 고점 대비 가장 크게 빠진 폭. 위험 체감의 핵심 숫자 |
| QuantConnect / LEAN | 클라우드 퀀트 플랫폼과 그 오픈소스 엔진. 저장소 전략의 구현 코드 링크처 |
| ccxt | 100+ 암호화폐 거래소를 하나의 API로 다루는 라이브러리 |