DOCS/journey/plans/251016_bayesian_startup_valuation.md

130 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 베이지안 스타트업 가치평가 프레임워크
**날짜**: 2025-10-16
**목표**: Neo4j + 베이지안 MCMC 확률적 가치평가
---
## 개요
**데이터**: K-Startup 12,703개 기업 (`/mnt/51123data/DATA/startup/data/startup_data_20251016.json`, 14MB)
- 매출 정보: 10,484개 (82.5%)
- 투자금 정보: 9,264개 (73.0%)
- Neo4j 마이그레이션 완료: 26,117개 노드, 532MB (참고: `troubleshooting/251016_neo4j_startup_data_migration.md`)
**구성**: Neo4j 유사 기업 → Bayesian MCMC 확률 분포 → 동적 프리미엄 학습
---
## 아키텍처
```
1. Neo4j → 유사 기업 Top-K 탐색 (공통 태그 K≥3)
2. Bayesian MCMC → 가치평가 확률 분포 (10,000 iterations)
3. PostgreSQL → 프리미엄 학습 및 업데이트 (Beta(α,β))
```
---
## Phase 1: Neo4j 유사 기업 (미구현)
**현재 상태**: Neo4j 데이터 마이그레이션 완료 (12,703개 한국 스타트업, 5,490개 YC 기업)
- Startup 노드 속성: `tagNamesKr`, `bizNamesKr`, `invstCdKr`, `empWholeVal`, `finacRevenueVal`, `invstSumValText`
- 참고: 기존 `get_dynamic_prior_from_neo4j()`는 부분 구현 (토큰 매칭만, 투자 단계 필터링 없음)
### 입력
```python
{
"company_name": "리버스마운틴", # IR 분석에서 추출
"investment_stage": "seed", # invstCdKr 정규화
"team_size": 9, # empWholeVal 또는 IR에서 추출
"business_area": "협업툴,SaaS" # tagNamesKr 또는 bizNamesKr
}
```
### 검색 조건 (Cypher 쿼리)
- `tagNamesKr` 또는 `bizNamesKr`에서 공통 태그 K개 이상 (K=3)
- `invstCdKr` 투자 단계 동일 또는 ±1 (seed → pre-A/series A 허용)
- Top-5 유사 기업 반환 (`finacRevenueVal`, `invstSumValText` 포함)
---
## Phase 2: 베이지안 MCMC (미구현)
**현재 상태**: 단순 베이지안 프레임워크 사용 (`startup_valuation.py`)
- Prior: Stage 기반 고정값 + Neo4j 동적 Prior 혼합 (분위수 기반)
- Posterior: Prior × Likelihood 조정 계수 (MCMC 없음)
### 모델
```
Prior: 로그정규분포 (산업/단계별 평균, 또는 Neo4j 유사기업 분포)
Likelihood: 유사 기업 투자금액 분포 (invstSumValText 파싱)
Posterior: MCMC 샘플링 (PyMC3/Stan, 10,000 iterations)
```
### 출력
```
평균: 7.3억원
중앙값: 6.8억원
90% 신뢰구간: [4.2억 ~ 12.5억]
```
---
## Phase 3: 동적 프리미엄 (미구현)
### DB 구조
```sql
CREATE TABLE valuation_premia (
stage VARCHAR,
industry VARCHAR,
premium_mu FLOAT,
premium_sigma FLOAT,
updated_at TIMESTAMP
);
```
### 학습
- 신규 투자 데이터 → 자동 재학습
- Beta(α,β) 분포로 업데이트
- 30일 주기 재계산
---
## 구현 우선순위
1. **즉시**: Neo4j 유사 기업 (1주)
2. **단기**: MCMC 확률 분포 (2주)
3. **중기**: 동적 프리미엄 (1개월)
---
## 실현 가능성 검증
**테스트**: `rb8001/tests/test_bayesian_valuation_plan_feasibility.py`
**결과**:
- ✅ Phase 1: Neo4j 쿼리 구조 및 데이터 필드 호환성 확인 (환경변수 설정 필요)
- ✅ Phase 2: scipy.stats 사용 가능, PyMC 라이브러리 설치 필요 (requirements.txt 추가)
- ✅ Phase 3: PostgreSQL 스키마 구조 검증 완료, asyncpg 사용 가능
**결론**: 계획 실현 가능, PyMC 라이브러리 설치와 Neo4j 환경변수 설정만 추가 필요
---
## 참고
### 데이터 파일
- 한국 스타트업: `/mnt/51123data/DATA/startup/data/startup_data_20251016.json` (12,703개)
- YC 기업: `/mnt/hdd/data/DATA/startup/yc_companies_all.json` (5,490개)
- Neo4j 저장소: `/mnt/hdd/neo4j/data/` (532MB, 심볼릭 링크: `/var/lib/neo4j/data`)
### Neo4j 연결
- URI: `bolt://192.168.219.45:7687` (51123 서버)
- 사용: `app/services/memory/neo4j_client.py` (Neo4jClient)
### 관련 문서
- 데이터 마이그레이션: `troubleshooting/251016_neo4j_startup_data_migration.md`
- 양자 베이지안 모델 (이론): `research/bayesian_theory/251227_양자_베이지안_스타트업_가치평가_모델.md`
- 가치분석 원칙: `book/300_architecture/314_스타트업_가치분석_원칙.md`