모든 리포트는, 결국 시장의 판결을 받는다.
6개 대학 투자학회의 리서치 리포트를 point-in-time 시세로 검증하는 아카이브 & 전략 랩. 리포트 PDF를 전사·파싱해 목표가와 투자의견을 추출하고, 발간 이후의 실제 주가 경로로 점수를 매깁니다.
Live: verdict-archive.vercel.app
홈 — 매수 의견 911건의 성적표. 적중률 60.5%, 더블 이상 320건, 판결까지 중앙값 185일.
서울대 SMIC · 연세대 YIG · 성균관대 STAR · 고려대 KUVIC · 이화여대 EIA · 홍익대 VOERA — 여섯 학회가 공개한 리포트 PDF 1,569건을 수집, 1,395건을 전사·파싱했습니다.
핵심은 사후 판단(hindsight)이 아닌 발간 시점 기준(point-in-time) 검증입니다.
- 여섯 학회가 나란히 비교되는 2019년 7월 이후 매수 의견 911건을 채점하고, 발간 90일이 지나지 않은 신생 건은 판결을 보류합니다.
- 판결은 둘로 나뉩니다 — 현재 판결(오늘 다시 읽은 같은 보고서의 성적)과 전성기 판결(발간 후 24개월 내 최고점). "맞았지만 라운드트립을 탔다"가 한눈에 드러납니다.
- 모든 판결문은 원본 PDF·전사 markdown·출처 게시글로 역추적할 수 있습니다.
종목 페이지 — 캔들 차트 위에 학회별 발간 시점(▲)과 목표가(점선)를 중첩. 3개 학회가 같은 종목을 어떻게 판단했는지 시간 순으로 비교.
- 증거의 서가 — 911건의 매수 의견을 숨김 없이 전부 전시. 급락도 텐배거도 같은 벽에 걸립니다.
- 이중 판결 — 현재 판결 vs 전성기 판결. 전성기 +100% 도달 비율 37.2%(320건), 그러나 그 수익이 현재까지 남았는지는 별개의 질문.
- 전략 랩 — "전성기 수익을 어떻게 수확할 것인가"에 대한 26개 전략 변형 실험. SOTA
U. 샹들리에+과열 스케일아웃은 KOSPI 적립식(DCA) 대비 1.12× (IS Sharpe 1.26, OOS Sharpe 1.70). 판정 칩은 매 실행 수치로 자동 생성. - 오늘의 신호 — SOTA 전략이 지금 규칙대로 굴러간다면 일어날 매매. 뉴스 피드가 아니라 임박 주문서.
- 통계 페이지 — 배거의 관상(배거 도달 종목 패턴 분석), 전략별 KRW 환산 손익, 누적 수익 곡선.
- 본문 읽기 — 판결문 안에서 전사된 리포트 원문을 즉시 열람. PDF 다운로드 없이 리포트 논거 확인 가능.
- 시그널 API — 헤드라인 전략의 매매 신호를 정적 JSON으로 서빙. 매일 갱신, CDN 캐시, CORS 허용. 자세한 내용은
docs/API.md. - 학회별 성적표 — 학회마다 최신순 장부와 연도별 요약, QA 플래그(파싱 신뢰도) 포함.
- 원문 추적 — 판결문 → 전사 markdown → 원본 PDF → 출처 게시글. 모든 숫자에 출처가 달립니다.
flowchart LR
A["수집<br/>collect_*.py<br/>6개 학회 사이트"] --> B["전사<br/>transcribe_pdfs.py<br/>+ OCR 폴백"]
B --> C["파싱<br/>목표가·투자의견<br/>티커 매칭"]
C --> D["시세 결합<br/>build_report_performance.py<br/>KRX/yfinance PIT"]
D --> E["판결·백테스트<br/>backtest_momentum.py<br/>이중 판결 + 26개 전략"]
E --> F["SSG 배포<br/>Next.js → Vercel"]
데이터 복구 체인: 일반 전사 → 파일명/수집 메타데이터 힌트 → 네이버 자동완성 티커 복구 → Windows OCR 표지 폴백.
사람이 검증한 교정값은 data/sources/corrections.json으로 유지됩니다.
| 학회 | 학교 | 수집(PDF) | 출처 |
|---|---|---|---|
| SMIC | 서울대학교 | 776건 | http://snusmic.com/research/ |
| STAR | 성균관대학교 | 281건 | http://starskku.com/board/board_list?code=research |
| EIA | 이화여자대학교 | 200건 | https://ewhainvest.com/research |
| YIG | 연세대학교 | 104건 | https://yig.yonsei.ac.kr/research |
| KUVIC | 고려대학교 | 104건 | https://www.kuvic.com/research |
| VOERA | 홍익대학교 | 104건 | https://www.voera.co.kr/Research |
수집 원칙: 각 PDF는 1회만 다운로드하고 SHA256 manifest(data/sources/manifest.json)로 관리하며,
요청 간 지연(2.5초)을 두어 원 서버에 부하를 주지 않습니다. 이메일 등 비공개 채널 수집은 하지 않습니다.
npm install && npm run dev # http://localhost:3000
# 1) 수집 (1회만 다운로드, manifest 관리, 요청 간 2.5초 지연)
.venv/Scripts/python scripts/collect_smic.py # SMIC (증분, WP REST API)
.venv/Scripts/python scripts/collect_smic.py --full # SMIC 전체 순회
.venv/Scripts/python scripts/collect_reports.py --source all
.venv/Scripts/python scripts/collect_kuvic_browser.py # KUVIC (Playwright)
.venv/Scripts/python scripts/collect_ewha.py # EIA (plain requests)
.venv/Scripts/python scripts/collect_voera.py # VOERA (Playwright)
# 2) 전사 + OCR 폴백 (텍스트 없는 PDF 표지, Windows 전용)
.venv/Scripts/python scripts/transcribe_pdfs.py
.venv/Scripts/python scripts/ocr_fallback.py
# 3) 파싱 + 시세 결합 (.env의 KRX_ID/KRX_PW 사용, data/prices/ 증분 캐시)
.venv/Scripts/python scripts/build_report_performance.py
# 4) 종목 차트 데이터 → public/prices/{slug}.json
.venv/Scripts/python scripts/export_stock_charts.py
# 5) 전략 백테스트 (IS/OOS 분리, 민감도 그리드 포함) → src/data/strategy-backtest.json
.venv/Scripts/python scripts/backtest_momentum.py헤드라인 전략의 매매 신호를 매일 정적 JSON으로 서빙합니다. 서버리스 컴퓨팅 없이 Vercel CDN에서 직접 제공되며 CORS가 허용됩니다.
# 오늘의 신호 (보유 포지션·매수 임박·매도 임박)
curl https://verdict-archive.vercel.app/api/v1/signals/latest.json | python -m json.tool
# 전략 목록 (IS/OOS 지표 포함)
curl https://verdict-archive.vercel.app/api/v1/strategies.json | python -m json.tool엔드포인트 전체 명세: docs/API.md · OpenAPI 스펙: /api/v1/openapi.json
로컬 재현성 및 셀프호스팅을 위한 멀티스테이지 이미지 — pipeline(Python 파이프라인)과 web(Next.js 프로덕션).
# 전체 파이프라인 실행 (백테스트 + API export)
docker compose --profile pipeline run --rm pipeline
# Next.js 프로덕션 서버 (localhost:3000)
docker compose --profile web up web자세한 빌드·플랫폼(Mac M-series, Linux, Windows) 가이드: docs/DOCKER.md
| 워크플로 | 주기 | 내용 |
|---|---|---|
refresh-daily.yml |
평일 18:30 KST (장 마감 후) | 증분 수집 → 새 PDF만 전사 → 데이터셋·차트·백테스트 재생성 → 커밋 |
refresh-reports.yml |
수동 실행 전용 | 전체 페이지 스윕(--full) — 수집기 복구·과거 누락 의심 시에만 |
레포 Settings → Secrets에 KRX_ID, KRX_PW 등록이 필요합니다. 갱신 커밋이 푸시되면 Vercel이 자동 재배포합니다.
운영 상세는 docs/OPS.md, 릴리스별 변경 기록은 docs/CHANGELOG.md 참고.
- 백테스트는 과거 데이터 기반 시뮬레이션이며 미래 수익을 보장하지 않습니다. 투자 권유가 아닙니다.
- 과최적화 방지를 위해 파라미터는 문헌 표준값으로 고정하고(200MA, ATR×5 등), 인샘플(2020-01
2023-12)/아웃오브샘플(2024현재)을 분리해 검증했습니다. 그리드 서치로 고른 전략이 아니라 IS 샤프 최상위가 자동 채택됩니다. - 목표가·의견 파싱은 자동화되어 있어 오류가 있을 수 있습니다. 신뢰도가 낮은 건은 QA 플래그로 표시하고, 검증된 교정값만 overlay로 반영합니다.
- 2019년 7월 이전 SMIC 단독 수집분 445건은 학회 간 비교가 불공정하므로 채점 없이 아카이브로만 보관합니다.
이전 버전(리서치 워크스테이션, 422 커밋)은 legacy 브랜치에 보존되어 있습니다.
파서 교정 규칙·시세 웨어하우스 등은 legacy에서 선별 이식했습니다.



