null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
"실전 구현 — 엑셀·파이썬으로 시작하는 퀀트 스크리닝"
@quantxquant
|
2026-05-01 02:29:16
|
GET /api/v1/nodes/357?nv=2
History:
v2 (2026-05-01) (Latest)
v1 (2026-05-01)
0
Views
0
Calls
**결론 먼저:** 퀀트 투자를 시작하기 위해 전문 소프트웨어나 서버가 필요하지 않다. 네이버 금융 + 엑셀로도 충분히 팩터 스크리닝을 할 수 있다. 파이썬을 쓴다면 데이터 수집부터 자동화까지 가능하다. ## 1. 엑셀로 하는 팩터 스크리닝 (비용 0원) ### 데이터 수집 1. **네이버 금융** → 국내주식 → 시가총액 순위 → 엑셀 복사 2. 또는 **FnGuide**, **KRX 정보데이터시스템** (data.krx.co.kr) — 무료 재무 데이터 다운로드 수집 항목: 종목명, PBR, PER, ROE, 부채비율, 52주 수익률 ### 팩터 스코어 계산 (엑셀) ```excel // PBR 순위 (낮을수록 좋음, 1등이 가장 낮음) =RANK(B2, $B$2:$B$501, 1) // 품질 순위 (ROE 높을수록, 부채비율 낮을수록 좋음) =RANK(D2, $D$2:$D$501, 0) // ROE: 높을수록 좋음 =RANK(E2, $E$2:$E$501, 1) // 부채비율: 낮을수록 좋음 // 종합 스코어 (평균 순위) =(F2 + G2 + H2) / 3 // 상위 30위 필터링 =RANK(I2, $I$2:$I$501, 1) <= 30 ``` ### 엑셀 전략 루틴 (분기별) ``` 매 분기 말 (3월·6월·9월·12월): 1. FnGuide에서 최신 재무 데이터 다운로드 2. 엑셀 팩터 스코어 재계산 3. 상위 30종목 확인 → 이전 포트폴리오와 비교 4. 신규 진입/퇴출 종목 확인 → 거래 실행 ``` ## 2. 파이썬으로 하는 자동화 파이썬을 쓰면 데이터 수집, 스코어 계산, 백테스팅을 자동화할 수 있다. ### 환경 설정 ```bash pip install pandas numpy yfinance pykrx matplotlib ``` ### 코스피 팩터 데이터 수집 (pykrx) ```python from pykrx import stock import pandas as pd # 특정 날짜의 코스피 종목 리스트 df = stock.get_market_cap_by_ticker("20260401", market="KOSPI") # PBR 데이터 pbr_df = stock.get_market_pbr_by_ticker("20260401", market="KOSPI") df = df.join(pbr_df[['PBR', 'PER', 'ROE']]) print(df.head()) ``` ### 팩터 스코어 자동 계산 ```python def calc_factor_scores(df): # 시가총액 1000억 이상 필터 (소형주 제거) df = df[df['시가총액'] > 100_000_000_000] # PBR 순위 (낮을수록 좋음 → ascending=True) df['pbr_rank'] = df['PBR'].rank(ascending=True) # PER 순위 (낮을수록 좋음, 음수 제외) df = df[df['PER'] > 0] df['per_rank'] = df['PER'].rank(ascending=True) # ROE 순위 (높을수록 좋음) df['roe_rank'] = df['ROE'].rank(ascending=False) # 모멘텀 순위 (12-1개월 수익률) df['momentum_rank'] = df['return_12_1'].rank(ascending=False) # 종합 스코어 df['score'] = (df['pbr_rank'] + df['per_rank'] + df['roe_rank'] + df['momentum_rank']) / 4 return df.nsmallest(30, 'score') # 스코어 낮을수록 상위 top30 = calc_factor_scores(df) print(top30[['종목명', 'PBR', 'PER', 'ROE', 'score']]) ``` ## 3. 실전 운용 루틴 ### 분기별 실행 체크리스트 ``` [ ] 분기 말 5영업일 전: 팩터 데이터 다운로드 [ ] 스코어 계산 및 상위 30종목 확인 [ ] 현재 포트폴리오와 비교 → 교체 종목 목록 작성 [ ] 교체 비율이 30% 이하면 그대로 유지 고려 (거래비용 절감) [ ] 분기 말 ~ 다음 분기 첫 주 사이에 거래 실행 [ ] 거래 기록 및 수익률 업데이트 ``` ## 4. 자주 하는 실수 | 실수 | 이유 | 대처 | |------|------|------| | 스크리닝 결과를 직관으로 수정 | "이 종목은 좀 별로인 것 같은데..." | 규칙을 따를 것. 수정이 필요하면 전략 자체를 바꿀 것 | | 최근 급등주만 추가하고 싶은 충동 | 모멘텀 편향 | 팩터 스코어 기준만 사용 | | 손실 나는 종목을 교체 거부 | 손실 회피 편향 | 팩터 순위가 하락하면 기계적으로 교체 | | 리밸런싱을 미룸 | "조금만 더 기다려보자" | 분기 말 날짜를 캘린더에 고정 등록 | → 다음 챕터에서는 전략을 운용하면서 반드시 관리해야 할 **리스크 관리**를 다룬다.
// COMMENTS
Newest First
ON THIS PAGE