퀀트 투자 포트폴리오 실전 구축 | 파이썬으로 종목 스크리닝부터 매수까지

파이썬 코드가 띄워진 노트북 화면 위에 주식 캔들 차트가 반투명하게 겹쳐진 일러스트, 블루·화이트 톤, 텍스트 없음, 한국인 남성이 모니터를 바라보는 뒷모습

퀀트 투자 포트폴리오를 직접 구축하고 싶은데 어디서부터 손대야 할지 막막하다면, 이 글이 정확한 출발점이 됩니다. 파이썬 무료 라이브러리 2개와 증권사 REST API만 있으면 데이터 수집부터 자동 매수까지 4단계로 완성할 수 있거든요.

 
파이썬 퀀트 포트폴리오 구축 핵심 요약
  • 데이터 수집 → FinanceDataReader·pykrx 조합으로 전 종목 재무지표 무료 확보
  • 종목 스크리닝 → pandas 필터 3줄로 PER·PBR·ROE 조건 충족 종목만 추출
  • 백테스팅 → 자동 매수 → 과거 데이터 검증 후 KIS·키움 REST API로 실전 주문 실행

퀀트 투자 포트폴리오 실전 구축, 파이썬이 표준인 이유

퀀트 투자 포트폴리오를 구축하는 도구로 파이썬이 사실상 업계 표준이 된 건 우연이 아닙니다. pandas·numpy 같은 데이터 분석 라이브러리가 완전 무료이고, 증권사 오픈 API가 파이썬 샘플 코드를 공식 지원하기 때문이죠.

한국투자증권은 KIS Developers 포털에서 파이썬 전용 래퍼 라이브러리(python-kis)를 GitHub에 공개했고, 키움증권도 2025년 3월부터 REST API를 정식 운영 중입니다. 엑셀로 기본 필터링은 가능하지만 코스피·코스닥 합산 2,500개가 넘는 종목을 멀티팩터 조건으로 스크리닝하고 백테스팅까지 자동화하려면, 파이썬이 압도적으로 효율적이에요.

초보자라면 구글 코랩(Colab)에서 설치 없이 브라우저만으로 실행할 수 있다는 점도 큰 장점입니다. 다음 단계에서는 실제로 어떤 라이브러리로 데이터를 가져오는지 구체적으로 살펴보겠습니다.

🔧 파이썬과 엑셀, 내게 맞는 도구가 뭘까?
도구 선택을 먼저 정리하면 이후 과정이 훨씬 수월해집니다.

Step 1. 데이터 수집 — 전 종목 재무지표 무료로 가져오기

퀀트 투자 포트폴리오 구축의 출발점은 데이터입니다. 파이썬에서 국내 주식 데이터를 수집하는 대표 라이브러리 두 가지를 먼저 비교해 볼게요.

항목FinanceDataReaderpykrx
데이터 소스KRX·네이버·야후 복합KRX·네이버
수집 가능 지표OHLCV, 종목 리스트, 해외 주가OHLCV, PER, PBR, 배당수익률
설치 명령pip install finance-datareaderpip install pykrx
장점해외 포함 통합 조회 가능밸류에이션 지표 직접 제공
주의점재무제표 지표 별도 크롤링 필요장중 데이터 지연율 높음

한마디로 정리하면, 종목 리스트와 주가는 FinanceDataReader로, PER·PBR 같은 밸류에이션 지표는 pykrx로 나눠 가져오는 조합이 가장 효율적입니다.

두 라이브러리에서 받은 데이터를 pandas DataFrame으로 합치면 스크리닝 준비가 끝나요. ROE·영업이익률 같은 심화 지표가 추가로 필요하다면 KRX 정보데이터시스템(data.krx.co.kr)에서 CSV 파일을 직접 내려받아 보강하는 방법도 있습니다.

Step 2. 종목 스크리닝 — 멀티팩터 조건으로 후보 압축하기

수집한 데이터에 팩터 조건을 걸어 투자 후보를 줄이는 단계입니다. 아래는 실전에서 많이 활용되는 3팩터 조합 예시예요.

  • 조건 1 — PER 3~10: 적자 기업은 제외하되 극단적 저평가 함정도 회피
  • 조건 2 — PBR 0.5~1.0: 자산 대비 저평가 구간만 선별
  • 조건 3 — ROE 10% 이상: 자본 효율성이 검증된 기업만 통과

이 세 조건을 동시에 적용하면 코스피·코스닥 2,500여 종목이 보통 20~40개로 압축됩니다. pandas로 필터를 거는 핵심 코드는 단 3줄이에요.

df = df[(df['PER']>=3) & (df['PER']<=10)]
df = df[(df['PBR']>=0.5) & (df['PBR']<=1.0)]
df = df[df['ROE']>=10]
df.sort_values('ROE', ascending=False).head(20)

이 코드로 상위 20종목을 뽑으면 1차 포트폴리오가 완성되는 거죠.

그런데 왜 하필 20종목일까요? 포트폴리오 이론과 KOSPI200 분산효과 연구에 따르면, 종목 수를 1개에서 20개로 늘리면 비체계적 위험(개별 기업 고유 리스크)이 약 90% 감소합니다. 30개 이상 편입하면 인덱스 펀드와 차이가 거의 없어지기 때문에, 개인 퀀트 투자자에게는 15~20개가 최적 구간이라는 게 다수 연구의 결론이에요.

📊 PER·PBR·ROE, 숫자만 보면 헷갈린다면?
각 지표가 실제 종목 선정에서 어떤 역할을 하는지 정리한 글이 있습니다.

Step 3. 백테스팅 — 과거 데이터로 전략 검증하는 법

스크리닝한 종목으로 곧바로 매수 버튼을 누르면 안 됩니다. 반드시 백테스팅을 거쳐야 해요. 백테스팅이란, 현재 전략을 과거 데이터에 적용해 수익률과 리스크를 미리 확인하는 과정을 뜻합니다.

사례 1 — 직장인 C 씨, 저PER·고ROE 전략

IT 업종에 근무하는 C 씨는 퇴근 후 파이썬으로 PER 7 이하·ROE 15% 이상 조건의 전략을 세웠습니다. 코스피 종목 중 15개를 선별해 2024년 4월 리밸런싱을 실행했고, 2025년 3월까지 약 19.4% 수익을 기록했어요. 같은 기간 코스피 수익률 약 4.3%와 비교하면 15%p 이상의 초과 수익이었던 셈입니다. 초기 세팅에 3시간, 이후 분기 리밸런싱은 10분 수준이었다고 하더라고요.

사례 2 — 대학생 D 씨, 구글 코랩 무료 환경 활용

별도 PC 없이 구글 코랩에서 FinanceDataReader와 pykrx를 조합한 사례도 있습니다. PBR 0.8 이하·영업이익률 10% 이상·부채비율 100% 미만의 3팩터로 20종목을 추출한 뒤 7년 백테스팅 결과 연평균 CAGR 17.2%, MDD 24.8%를 확인하고 실전 투자에 진입했어요.

체크 항목기준미달 시 조치
검증 기간최소 7년 이상데이터 부족 시 전략 신뢰도 하락
MDD(최대낙폭)30% 이내 권장방어 자산 편입 또는 비중 축소
CAGR(연평균 수익률)코스피 대비 초과 수익 여부팩터 조합 재설계
거래비용 반영편도 약 0.015% + 세금 0.18%리밸런싱 주기 조정
과최적화 여부In-Sample vs Out-of-Sample 분리Walk-Forward 분석 적용

이 다섯 항목을 모두 통과해야 실전에 투입할 자격이 생긴다고 보시면 됩니다.

⚠️ 백테스팅 수익률이 실전에서 안 나오는 이유, 혹시 과최적화?
이 함정에 빠지면 아무리 좋은 전략도 실전에서 무너집니다.

Step 4. 실전 매수 — 증권사 API로 주문 자동화까지

백테스팅을 통과한 전략을 실전에 적용하려면 증권사 API 연동이 필요합니다. 현재 개인 퀀트 투자자가 파이썬으로 자동매매를 구현할 때 가장 많이 쓰는 경로는 두 가지예요.

  • 한국투자증권 KIS Developers: REST API 기반, 파이썬 래퍼(python-kis) 공식 지원, API 호출 유량 초당 20건 제한
  • 키움증권 REST API: 2025년 3월 정식 오픈, 파이썬·자바 예제 코드 제공, 기존 OpenAPI+와 병행 가능

연동 흐름은 4단계로 정리됩니다. 첫째, 증권사 계좌 개설 후 API 포털에서 APP_KEY·APP_SECRET을 발급받습니다. 둘째, 발급 키로 인증 토큰을 생성하고 자동 갱신 로직을 설정해 둡니다. 셋째, 스크리닝 결과 종목 리스트를 순회하며 매수 주문 API를 호출합니다. 넷째, 주문 체결 결과를 조회하고 미체결 건은 정정 또는 취소 처리하면 끝이에요.

이 전 과정을 리밸런싱 날짜에 맞춰 스케줄러(cron 또는 APScheduler)로 자동 실행하면, 매번 수동 주문 없이도 퀀트 투자 포트폴리오가 분기마다 스스로 갱신됩니다. API 세팅이 처음이라 막막하다면 아래 글에서 환경 구축부터 따라 해보시는 것도 방법이에요.

🔗 API 연동, 처음이라 어디서부터 시작해야 할지 모르겠다면?
계좌 개설부터 첫 주문 실행까지 3단계로 정리해 뒀습니다.

파이썬 퀀트 포트폴리오 구축 시 꼭 챙겨야 할 3가지

첫째, 데이터 정합성을 반드시 확인하세요. pykrx의 PER·PBR 값은 장중 지연이 발생할 수 있고, 상장폐지 종목이나 관리종목이 섞여 있으면 백테스팅 결과가 왜곡됩니다. 수집 직후 관리종목·거래정지 종목을 제거하는 전처리 과정이 필수예요.

둘째, 거래비용을 반드시 백테스팅에 포함해야 합니다. 국내 주식 매매 시 증권사 수수료 편도 약 0.015%, 매도 시 증권거래세 0.18%가 발생하거든요. 이 비용을 빼고 계산하면 실전 수익률과 괴리가 커집니다.

셋째, 리밸런싱 주기를 전략에 맞게 설정하세요. 밸류 팩터 중심 전략은 분기 1회 또는 반기 1회가 적합하고, 모멘텀 팩터가 포함되면 월 1회가 유리하다는 연구가 많습니다. 퀀트 투자 포트폴리오의 최종 수익은 리밸런싱 주기에 따라 연 7%p까지 차이가 날 수 있어요.

🔄 리밸런싱, 월 1회와 분기 1회 중 뭐가 나을까?
주기별 수익률 차이를 숫자로 비교해 놓은 글이 있습니다.

마무리

퀀트 투자 포트폴리오 실전 구축은 데이터 수집 → 종목 스크리닝 → 백테스팅 → 자동 매수, 이 4단계를 순서대로 밟으면 누구나 완성할 수 있습니다. 파이썬 코드 경험이 전혀 없더라도 구글 코랩에서 FinanceDataReader와 pykrx를 설치하는 것부터 시작해 보시는 걸 권해드려요. 오늘 검색한 이유가 “나도 직접 퀀트 포트폴리오를 만들어 보고 싶다”였다면, 이 글의 Step 1 라이브러리 설치부터 바로 실행에 옮겨 보세요.

자주 묻는 질문

1. 파이썬 퀀트 투자 포트폴리오 구축에 프로그래밍 경험이 꼭 필요한가요?
기초 문법 수준이면 충분합니다. pandas 필터링과 for 반복문 정도만 알면 스크리닝부터 백테스팅까지 가능해요.
2. FinanceDataReader와 pykrx 중 하나만 써도 되나요?
가능하지만, FinanceDataReader는 밸류에이션 지표가 부족하고 pykrx는 해외 데이터를 지원하지 않아 조합이 권장됩니다.
3. 퀀트 투자 포트폴리오 종목 수는 몇 개가 적당한가요?
15~20개가 최적입니다. 20개 이상이면 위험 감소 효과가 급격히 줄어들고 인덱스 펀드와 유사해집니다.
4. 백테스팅 결과가 좋으면 실전에서도 동일한 수익이 나오나요?
과최적화 함정이 있을 수 있어 In-Sample과 Out-of-Sample을 분리해 검증해야 신뢰도가 높아집니다.
5. 퀀트 투자 포트폴리오 자동매매에 최소 자금은 얼마인가요?
20종목 동일 비중 기준 종목당 최소 50만 원씩 약 1,000만 원이면 시작할 수 있습니다.

※ 본 콘텐츠는 보험, 투자, 금융, 재테크, 연금, 대출, 세금, 자산관리 등과 관련된 일반적인 정보를 취합하여 제공하는 정보성 콘텐츠입니다.

본문에서 언급된 내용은 특정 금융상품, 투자방식, 금융기관, 보험사, 대출서비스 등을 직접적으로 권유하거나 보장하지 않으며, 관련 법률, 규제, 제도는 작성 시점을 기준으로 정리되었기에 시간 경과에 따라 변경될 수 있습니다.

사용자의 실제 재무 상황, 계약 조건, 법적 요건 등에 따라 적용 방식이나 결과는 달라질 수 있으며, 본 정보를 기반으로 한 투자, 가입, 청구, 의사결정에 대해서는 책임지지 않습니다.

보다 정확한 판단과 조치를 위해서는 반드시 관련 분야의 전문가, 금융기관, 보험사, 세무사, 또는 공인중개인 등의 자문을 받으시기 바랍니다.