선정 방법
목표
향후 5년 내 시가 10배(텐베거) 가능성이 높은 종목을 규칙 기반으로 스크리닝하고, 매일 1종목만 공개합니다. 확정 예측이 아니라 데이터와 점수에 따른 후보 제시입니다.
시장 교대
날짜(일)가 홀수면 한국(KOSPI/KOSDAQ), 짝수면 미국(NYSE/NASDAQ) 유니버스를 스크리닝합니다.
유니버스는 거래소 상장 종목 전체를 매일 갱신합니다(KOSPI·KOSDAQ 약 2,800종목, NYSE·NASDAQ 약 6,300종목). 스크리닝 전에 최근 30일 추천 종목만 제외합니다.
점수 구성 v2 (0–100)
Score v2는 피터 린치 GARP(저평가 성장주)와 Yartseva(2025) 멀티배거 연구를 반영합니다. 소형·FCF·지속 가능 성장·역발상 진입을 강조합니다.
- 규모 15%: 시총이 작을수록 가산 (한국 ≤2조·미국 ≤$20억 달러 구간 만점)
- 밸류 25%: PER·PEG, FCF 수익률, PBR
- 성장 20%: 매출·이익 혼합 성장, 20~50% 스위트스팟 (50% 초과 페널티)
- 품질 20%: ROE, 부채비율, 영업이익률, FCF/순이익, ROA
- 진입 10%: 12개월 가격대·52주 고점 대비 (고점 근접 페널티)
- 모멘텀 10%: 6개월 수익률만 사용 (52주 고점 위치는 진입 축으로 이전, v1 대비 축소)
Score v3 후보 (측정 게이트)
아래는 라이브 Score v2 가중치(%)가 아닙니다. ADR 0004 GO와 성과 측정 검증 전까지 Score v3 후보 팩터로만 문서화합니다 (Issue #68 · #69 · #70 · Epic #74 Phase 2).
Yartseva(2025)를 참고한 투자 더미(investment dummy): 총자산 YoY 성장률이 EBITDA YoY 성장률을 초과하면(자산 성장 > EBITDA 성장) 후보 경로에서 소프트 페널티와 red-flag 라벨을 부여합니다. 유니버스 하드 제외가 아니며, 기존 red flag(자본잠식·이중 음수 CF)를 대체하지 않습니다.
같은 Yartseva(2025) 연구에서 trailing(후행) 성장의 예측력이 약하다는 점에 맞춰, Issue #69 후보 그리드는 WEIGHT_GROWTH를 줄이고 여분을 Valuation·Quality·Size에 재배분합니다(기본 그리드에서 Entry/Momentum으로는 재배분하지 않음). Growth 팩터 자체는 유지하며, WEIGHT_GROWTH 하한은 0.05입니다. ADR 0004 GO 전까지 측정 게이트이며 라이브 Score v2 가중치는 변하지 않습니다. GO 채택 경로에서는 명시적 설정 PR로만SCORE_VERSION=3과 승인된 상위 WEIGHT_*를 반영합니다.
금리 인상기 멀티배거 연수익률 약화를 반영하는 Issue #70금리/매크로 게이트 후보: 커밋된 Fed 인상 국면 dummy로 복합 임계값 상향(+5) 또는 최소 시총 밴드 축소(×1.5)를 후보 경로에서만 적용합니다. KR·US 모두 v1에서는 동일 글로벌 Fed dummy를 쓰며, 한국은행(BOK) 전용 시계열은 보류입니다. 복잡한 매크로 팩터 집합은 범위 밖입니다. ADR 0004 GO 전까지 라이브 임계값·시총 필터는 변하지 않으며, GO/NO-GO/wontfix는 #66/#67 OOS on/off 비교로 기록합니다.
v1에서는 금융·자산집약 섹터 carve-out을 두지 않습니다(알려진 한계). 기본 라이브 일일 스크리닝의 가중치·임계값에는 반영되지 않습니다.
1차 필터
한국 종목은 시가총액 500억 원 미만을 제외합니다(상장 목록에 시총이 없으면 포함). 미국 종목은 Yahoo Finance 시가총액 3억 달러 미만을 제외합니다(시총 데이터가 없으면 포함).
Red flag: 자본잠식(B/M 음수) 또는 FCF·영업CF 동시 음수 종목은 제외합니다. 애널리스트 커버리지가 낮은 종목에는 규모 점수에 소폭 가산합니다.
선정·없음 규칙
- 복합 점수 70점 이상인 종목만 후보
- 후보 중 최고 점수 1종목 선정
- 임계 미달 시 해당 일은 「없음」으로 표시
- 최근 30일 내 추천된 종목은 제외
생성 시각
매일 06:00 KST에 GitHub Actions가 데이터를 수집·스크리닝하고 정적 페이지를 배포합니다.
백테스트
v1 vs v2 비교: cd scripts && python backtest_screen.py KR
데이터
상장 목록: FinanceDataReader(거래소). 가격·재무: Yahoo Finance (yfinance). DB 없이 JSON 파일로 Git에 저장됩니다.
Goal
Screen for stocks with high potential for a 10x price move within five years, using rule-based scoring. One pick per day—not a guaranteed forecast.
Market rotation
Odd calendar days: Korea (KOSPI/KOSDAQ). Even days: US (NYSE/NASDAQ).
The universe is refreshed daily from full exchange listings (~2,800 KR, ~6,300 US). Only symbols recommended in the last 30 days are excluded before screening.
Score weights v2 (0–100)
Score v2 blends Peter Lynch GARP heuristics with Yartseva (2025) multibagger factor research: size, cash yield, sustainable growth, and contrarian entry timing.
- Size 15%: smaller market cap scores higher (ideal ≤KRW 2T / ≤$2B)
- Valuation 25%: P/E, PEG, FCF yield, P/B
- Growth 20%: blended revenue & earnings growth, 20–50% sweet spot (penalty above 50%)
- Quality 20%: ROE, debt/equity, operating margin, FCF/net income, ROA
- Entry 10%: 12-month price range and distance from 52-week high
- Momentum 10%: 6-month return only (52-week high position moved to Entry; reduced vs v1)
Score v3 candidates (gated)
The following is not a live Score v2 weight percentage. Until ADR 0004 GO and measurement validation, it is documented only as a Score v3 gated candidate(Issue #68 · #69 · #70 · Epic #74 Phase 2).
Informed by Yartseva (2025), the investment dummy flags names where year-over-year total-asset growth exceeds year-over-year EBITDA growth. On the candidate path only, that yields a soft score penalty plus a visible red-flag label—not a hard universe exclude, and additive with existing red flags (negative book equity; dual negative FCF/OCF).
Also following Yartseva (2025)—that trailing growth has weak predictive power— the Issue #69 candidate grid shrinks WEIGHT_GROWTH and redistributes the freed mass to Valuation, Quality, and/or Size (Entry/Momentum do not receive redistributed Growth mass in the default grid). The Growth factor itself remains;WEIGHT_GROWTH stays at least 0.05. This stays measurement-gated until ADR 0004 GO; live Score v2 weights are unchanged. On GO, adoption is only via an explicit config PR that sets SCORE_VERSION=3 and the approved top-level WEIGHT_* vector.
Issue #70 rate/macro gate candidate (Yartseva: weaker multibagger annual returns in hiking regimes): a committed Fed hiking-phase dummy may raise the composite threshold (+5) or tighten minimum market-cap floors (×1.5) on the candidate path only. KR and US share the same global Fed dummy in v1; a BOK-specific series is deferred. No macro factor zoo. Live threshold/size filters stay frozen until ADR 0004 GO; GO / NO-GO / wontfix is recorded via #66/#67 OOS on/off comparison.
v1 applies no sector carve-outs for financials or other asset-heavy industries (known limitation). Default live daily screening weights and thresholds stay unchanged.
Pre-filter
KR names below KRW 50B market cap are excluded when cap data is available. US names below USD 300M market cap are excluded when Yahoo Finance cap data is available.
Red flags: negative book equity or both FCF and operating cash flow negative. Low analyst coverage receives a small size bonus.
Pick vs none
- Only stocks with composite score ≥ 70
- Highest score wins for that day
- Below threshold → none for that day
- Exclude symbols recommended in the last 30 days
Schedule
Daily at 06:00 KST via GitHub Actions: fetch, screen, commit JSON, build static site.
Data
Listings: FinanceDataReader (exchanges). Prices & fundamentals: Yahoo Finance (yfinance). No database—truth lives in committed JSON files.
Backtest
Compare v1 vs v2 snapshots: cd scripts && python backtest_screen.py US