🚀 Executive Summary
프로젝트 목적
BruDash에 "기업 스크리닝" 메뉴를 신설하여, 한국 주식시장(KOSPI/KOSDAQ) 약 4,000개 종목을 다양한 투자 전략 기준으로 필터링하고, 장기투자 리포트의 종목 발굴 프로세스를 체계화합니다.
🌟 핵심 결론 4가지
xang1234의 80+ 필터 + Minervini/CANSLIM 프리셋 구조가 BruDash에 가장 적합한 레퍼런스
Graham/Greenblatt(밸류), CAN SLIM/Minervini(모멘텀), Piotroski(퀄리티), Fama-French(멀티팩터)
Finviz(70필터), TradingView(500+), Stock Rover(650+), 네이버, 키움, FnGuide
1단계(2주): 기본+프리셋5개, 2단계(4주): 커스텀+알림, 3단계(6주): 백테스트+자동연동
📈 기대 효과
📋 프로젝트 진행 현황
💻 GitHub 오픈소스 스크리너 조사
총 14개 GitHub 오픈소스 프로젝트를 분석했습니다. 테이블 헤더를 클릭하면 정렬됩니다.
| # ▲▼ | 프로젝트 ▲▼ | Stars ▲▼ | 언어 ▲▼ | 시장 ▲▼ | 핵심 기능 | 참고도 ▲▼ |
|---|---|---|---|---|---|---|
| 1 | Screeni-py | 673 | Python | 인도(NSE) | 브레이크아웃 확률, 차트패턴, CLI | 3 |
| 2 | PKScreener | 317 | Python | 인도(NSE) | 45+ 전략, 통합 로테이션, 백테스트 | 4 |
| 3 | xang1234/stock-screener | 15 | Python | 글로벌 | 80+ 필터, AI챗봇, Minervini/CANSLIM, 복합스코어링 | 5 |
| 4 | OpenBB | 35000 | Python | 글로벌 | 100+ 데이터소스, Finviz 연동, 모듈형 | 4 |
| 5 | finvizfinance | 500 | Python | 미국 | Finviz 래퍼, 스크리너/뉴스/차트 | 3 |
| 6 | stockscreener | 400 | Python | 미국 | FastAPI 기반 웹 스크리너, 교육용 | 3 |
| 7 | growth-stock-screener | 80 | Python | 미국 | CAN SLIM 자동화, 성장주 필터 | 4 |
| 8 | pykrx | 2000 | Python | 한국(KRX) | KRX/네이버 스크래핑, PER/PBR/EPS | 5 |
| 9 | hyunyulhenry/quant_py | 600 | Python | 한국 | 퀀트 투자 포트폴리오, 팩터 모델 | 5 |
| 10 | quantylab/rltrader | 1000 | Python | 한국 | 강화학습 트레이딩, 딥러닝 | 3 |
| 11 | awesome-quant | 17000 | 목록 | 글로벌 | 퀀트 금융 큐레이션 리스트 | 4 |
| 12 | awesome-systematic-trading | 3000 | 목록 | 글로벌 | 체계적 트레이딩 큐레이션 리스트 | 4 |
| 13 | OpenDartReader | 400 | Python | 한국 | DART 공시/재무제표 API 래퍼 | 5 |
| 14 | pykrx-mcp | 0 | Python | 한국 | pykrx MCP 서버 (자연어 쿼리) | 3 |
★ 참고도: 1~5 (5=최고). 강조 행 = BruDash 최우선 레퍼런스
🔎 핵심 프로젝트 상세 분석
⭐ xang1234/stock-screener -- BruDash 최우선 레퍼런스
이 프로젝트가 BruDash에 가장 적합한 레퍼런스인 이유:
구조적 강점
- 80+ 설정 가능 필터 -- 기본적 + 기술적 필터를 동시에 제공
- 복합 스코어링 -- 여러 필터의 결과를 가중 합산하여 단일 종합 점수 생성
- 프리셋 전략 -- Minervini Trend Template, CANSLIM, IPO 스캔, Volume Breakthrough 등
- AI 챗봇 통합 -- Groq/DeepSeek/Gemini 등 LLM과 연동
- StockBee 스타일 지표 -- 시장 전체의 breadth(폭) 지표
참고해야 할 설계 패턴
- 스캔(전략)별로 독립 모듈화 → 새 전략 추가가 쉬움
- 필터마다 가중치 설정 가능 → 멀티팩터 모델 구현
- 결과를 CSV/JSON/Web UI로 다양하게 출력
📈 pykrx + OpenDartReader -- 한국 시장 데이터 기반
BruDash는 이미 pykrx를 사용 중이며, company_info.db에 14,667개 종목의 기본적 분석 데이터가 있습니다.
pykrx로 수집 가능한 데이터
get_market_fundamental: PER, PBR, EPS, BPS, DIVget_market_ohlcv: OHLCV (일봉/주봉/월봉)get_market_cap: 시가총액, 상장주식수get_market_trading_volume_by_investor: 투자자별 매매동향get_market_net_purchases_of_equities: 투자자별 순매수
OpenDartReader로 보강할 데이터
- 분기별 재무제표 (매출액, 영업이익, 당기순이익, 부채비율)
- 공시 정보 (유상증자, 전환사채, 주요 계약)
- 임원 보수, 최대주주 변동
📚 hyunyulhenry/quant_py -- 한국 퀀트 투자 실전
한국 시장에 특화된 팩터 투자 전략을 구현한 코드입니다.
- 밸류 팩터: PBR, PER, PSR, PCR, EV/EBITDA
- 퀄리티 팩터: GP/A, ROE, 부채비율
- 모멘텀 팩터: 12개월 수익률, 상대강도
- 멀티팩터 조합: Z-Score 합산
- 마법공식(Greenblatt): 이익수익률 + 자본수익률
BruDash 적용 가치: 팩터별 순위 산출 → 종합 순위 로직을 그대로 차용 가능. 백테스트 프레임워크도 포함.
🌐 OpenBB -- 올인원 금융 분석 플랫폼 (35K+ Stars)
직접 사용하기보다는 아키텍처 참고용입니다.
- 모듈형 데이터 프로바이더: 데이터 소스별로 독립 모듈
- 표준화된 데이터 모델: 어떤 소스에서든 동일한 형식으로 정규화
- 확장 포인트: 커스텀 스크리너를 Finviz 엔진 위에 구축
- REST API + Python SDK: 프론트엔드 불문 백엔드 API로 제공
📚 프로페셔널 스크리닝 방법론
《현명한 투자자》 7가지 기준:
| 적정 규모 | 시총 3,000억원+ |
| 재무 건전성 | 유동비율 2:1 이상 |
| 이익 안정성 | 5년 연속 흑자 |
| 배당 이력 | 10년 연속 배당 |
| 이익 성장 | 5년 EPS +20% |
| PER | 15배 이하 |
| PBR | 1.5배 이하 |
⚠️ 한국은 코리아 디스카운트로 PBR < 1.0이 60%+. 기준 조정 필요.
두 가지 팩터를 결합:
데이터: DART 재무제표 영업이익, company_info.db 시총
| C | Current Earnings | 분기 EPS +25%↑ |
| A | Annual Earnings | 연간 EPS 3년 +25%↑ |
| N | New Product | 신제품/신고가 |
| S | Supply/Demand | 유통주식 적음 + 거래량↑ |
| L | Leader | 업종 내 RS 상위 |
| I | Institutional | 기관/외인 보유↑ |
| M | Market | 시장 상승 추세 |
한국: 외국인 보유비율 변화 + 연기금 매수가 핵심 시그널
Stage 2 상승 추세 진입 시점 8가지 기준:
보조: 분기 EPS +20%, 매출 +15%, ROE > 17%
9가지 이진(0/1) 기준으로 재무 건전성 측정:
ROA > 0
영업CF > 0
ROA 개선
영업CF > 순이익
장기부채 감소
유동비율 개선
유상증자 없음
매출총이익률↑
자산회전율↑
F-Score 8~9: 연 13.4% 초과수익 (Piotroski 연구). F-Score 0~2: 밸류 트랩.
★ 수급 + 테마는 BruDash만의 한국 시장 특화 팩터
📊 벤치마크 (국내외 상용 스크리너)
🎯 Finviz -- 미국 기준선 (70개 필터)
| 카테고리 | 필터 수 | 주요 필터 |
|---|---|---|
| Descriptive | ~20 | 시총, 섹터, 국가, 거래소, IPO일 |
| Fundamental | ~25 | PER, PBR, PEG, EPS성장률, ROE, 배당 |
| Technical | ~25 | SMA20/50/200, RSI, 52주고저, 갭, 차트패턴 |
UI 특징: 히트맵 시각화, 차트 패턴 자동 인식(33가지), 3탭(D/F/T) 구조
BruDash 시사점: 히트맵 → 테마별 시각화 적용 가능. 3탭 구조 깔끔.
📊 TradingView Screener -- 500+ 필터
핵심 특징: 필터 바 축소/확장(Shift+H), 스크린 저장/공유, Popular Screens, Pine Script 연동, 실시간 자동 갱신
BruDash 시사점: "저장된 스크린" = 유료 가치 핵심. Popular Screens = "프리셋 전략". 자동 갱신은 3단계에서 WebSocket.
📈 Stock Rover -- 650+ 메트릭
핵심 특징: 14개 빌트인 스크린, 사용자 정의 수식 빌더, 리서치 리포트, 비교 테이블, 포트폴리오 통합
BruDash 시사점: 수식 빌더는 2단계 파워유저용. "스크리닝 → 분석 → 포트폴리오" 흐름이 장투 리포트와 연결.
🇰🇷 네이버 / 키움 / FnGuide -- 한국 서비스
네이버: 매우 단순한 슬라이더 UI. 저장/알림 없음. BruDash가 훨씬 깊은 분석 제공.
키움: HTS 전용, 실시간 조건검색, 조건식 공유. 웹 불가 → BruDash의 웹 접근이 차별점.
FnGuide: 수급 종목검색이 핵심. BruDash도 반드시 포함해야 할 기능.
🏆 BruDash 경쟁 우위
| 경쟁 서비스 | BruDash 차별점 |
|---|---|
| Finviz / TradingView | 한국 시장 특화 (테마, 수급, 외인 데이터) |
| 네이버 종목발굴기 | 8개 전문 프리셋 + 멀티팩터 스코어 + 알림 |
| 키움 조건검색 | 웹 기반(HTS 불필요) + AI 분석 연동 |
| FnGuide | 개인투자자 친화적 UI + 테마 데이터 통합 |
🏗️ 시스템 아키텍처
💻 사용자 (브라우저)
brudash.com/screener
⚙️ Flask 웹서버 (Waitress)
/api/screener/run · /presets · /save · /alert · /backtest
⚙️ Screener Engine (Python)
🗃️ Data Aggregator (데이터 통합)
pykrx
시세 데이터
DART API
재무제표
LS증권 API
실시간 시세
🔌 기존 인프라 연동
| 기존 DB | 스크리너 활용 | 연동 |
|---|---|---|
company_info.db (14,667종목) | PER, PBR, EPS, BPS, 배당, 시총 | 직접 JOIN |
kiwoom_data.db (4,558종목) | 실시간 가격, 등락률, 거래량, 수급 | 직접 JOIN |
sector_cache.db | 테마 소속, confidence, 대장주 | 직접 JOIN |
outlook_feedback.db | 추천 적중률, 스윙 picks | 참조 |
telegram_data.db | 핫멘션, 뉴스 빈도 | 참조 |
★ 핵심: screener_data.db 1개만 추가, 기존 DB는 JOIN으로 활용. 데이터 중복 최소화.
🕑 데이터 수집 주기
| 주기 | 데이터 | 소스 |
|---|---|---|
| 실시간 10초 | 현재가, 등락률, 거래량 | LS증권 API |
| 일 1회 | OHLCV, 이평선, 기술지표, 투자자별 매매 | pykrx / LS |
| 주 1회 | PER, PBR, 시총, 배당 | pykrx / 네이버 |
| 분기 1회 | 재무제표, F-Score, Z-Score | DART API |
| 3개월 1회 | 전종목 기본정보 갱신 | 네이버 API |
🗃️ DB 스키마 설계 -- screener_data.db
🎨 UI/UX 설계안 -- 3가지 대안
대안 A: 프리셋 중심형 초보 친화
대안 B: 필터 빌더형 Finviz 스타일
대안 C: 하이브리드형 추천
⭐ 모든 수준의 사용자를 커버하는 하이브리드가 최적
📅 3단계 로드맵 (총 12주)
- 1~2일: screener_data.db 생성 + 스키마
- 3~4일: 기술지표 수집기 (pykrx) -- collector.py --daily
- 5~6일: FilterEngine + 5개 프리셋
- 7~8일: 프론트엔드 UI (프리셋 카드 + 결과 테이블)
- 9~10일: Flask API 엔드포인트
- 11~12일: 모바일 반응형 + 테스트
- 13~14일: 서버 배포 + cron 설정
- 1주: DART 재무제표 수집기 + F-Score/Z-Score
- 2주: MultiFactorScorer + BruDash Score
- 3주: 커스텀 필터 빌더 UI + 저장 기능
- 4주: 알림 시스템 (텔레그램) + 비교 모드
- 1~2주: 백테스트 엔진 (과거 N개월 성과 시뮬)
- 3주: 장투 리포트 자동 연동 (스크리너 → Claude → HTML)
- 4주: 팩터 가중치 자동 조정 (적중률 피드백 기반)
- 5주: 히트맵 시각화 + 레이더차트
- 6주: 종합 테스트 + 최적화 + 문서화
💰 데이터 소스 우선순위 & 비용
| 우선순위 | 소스 | 데이터 | 비용 |
|---|---|---|---|
| 1 | pykrx | OHLCV, PER/PBR, 투자자별 | 무료 |
| 2 | company_info.db | 14,667종목 기본분석 | 보유중 |
| 3 | kiwoom_data.db | 실시간 가격, 수급, 테마 | 보유중 |
| 4 | sector_cache.db | 테마, confidence | 보유중 |
| 5 | DART OpenAPI | 재무제표, 공시 | 무료 |
| 6 | LS증권 API | 실시간 시세 | 무료(계좌) |
| 7 | 네이버 금융 | 컨센서스, 목표가 | 무료 |
✅ 추가 비용 없이 기존 인프라 + 무료 API만으로 구현 가능
🎯 BruDash Score 인터랙티브 계산기
각 팩터의 가중치를 조절해서 BruDash Score 계산 방식을 직접 체험해보세요.