Files
All-in-one-Financial-Analysis/ATLAS_EVALUATION.md
T
shawnkim1997andClaude Opus 4.6 b2acda81ee feat: add Atlas Terminal — Next.js 14 + FastAPI full-stack migration
Complete migration from Streamlit to Next.js 14 App Router + FastAPI backend.

Frontend (Next.js 14):
- 10 pages: Overview, Research, Valuation, Technical, Markets, Earnings, News, Portfolio, Filings, Settings
- Terminal Noir dark theme with custom Tailwind config
- TradingView Lightweight Charts for candlestick/volume
- Valuation: DCF, Sensitivity Matrix, Monte Carlo, Tornado, Reverse DCF
- Financial Statements table with YoY growth badges and margin rows
- SEC EDGAR inline filing viewer with section tabs
- News split-view with iframe article embedding
- Technical Analysis with RSI, MACD, Bollinger, Fibonacci, Moving Averages
- Earnings beat/miss visualization
- AI Copilot chat panel with Gemini integration

Backend (FastAPI):
- 13 routers: market_data, financials, valuation, technical, earnings, insider, edgar, news, portfolio, analysis, chat, estimates, fx
- Services: DCF engine, Monte Carlo simulation, sensitivity analysis, risk metrics, SEC parser, technical indicators
- yfinance + yahooquery data sources with fallback pattern
- SQLite caching layer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 02:10:10 +00:00

168 lines
9.0 KiB
Markdown

# ATLAS Terminal — 종합 프로젝트 평가 & 빌딩 가이드
---
## PART 1: 현재 프로젝트 평가
### 🟢 잘한 점 (Strengths)
**1. 하이브리드 아키텍처 — 이건 진짜 좋다**
정성(LLM)과 정량(Pandas/yfinance)을 분리한 설계는 비용 효율성과 정확도를 동시에 잡는 프로덕션 레벨 판단이다. Gemini를 텍스트 분석에만 쓰고, 숫자는 무료 API에서 가져오는 구조는 실제 FinTech 스타트업에서도 채택하는 패턴이다.
**2. 429 토큰 최적화 — 실전 문제 해결**
200페이지 10-K를 통째로 보내지 않고, Item 1A~9A만 슬라이싱 → regex 파싱 → smart_chunk로 head+tail 보존하는 전략은 토큰 80%+ 절감을 달성했다. 이건 면접에서 강력한 스토리가 된다.
**3. 다단계 폴백 시스템**
yahooquery → yfinance(fast_info → info → balance_sheet) → TTM/분기 합산 → 수동 입력 순으로 떨어지는 폴백 체인은 실사용에서 데이터 누락을 최소화한다. `_safe_float()` 일관 사용도 좋다.
**4. 10년 2단계 DCF**
5년 DCF의 터미널밸류 왜곡 문제를 인식하고 Y6~10 선형 Fade를 적용한 건 학부생 수준을 넘어선다. Damodaran 참조 패널까지 있어서 학술적 근거도 확보했다.
**5. Piotroski F-Score, Altman Z, DuPont — 정량 깊이**
단순 밸류에이션이 아닌 재무 건전성 지표까지 커버한 점이 Bloomberg Terminal 컨셉과 맞다.
### 🟡 개선이 필요한 점 (Weaknesses)
**1. app.py 단일 파일 2,846줄 — 가장 큰 기술 부채**
SEC 파싱, Gemini 호출, DCF 계산, 차트 생성, UI 렌더링이 전부 하나에 있다. 디버깅, 테스트, 협업 모두 어렵다. 모듈 분리가 최우선이다.
**2. Streamlit 한계 — Bloomberg 터미널 UI와 거리가 있다**
Streamlit은 프로토타이핑엔 최고지만, 다중 패널 동시 업데이트, 실시간 웹소켓, 커스텀 레이아웃에 제약이 크다. Next.js + FastAPI로 전환하면 진정한 터미널 UX가 가능하다.
**3. 글로벌 시장 커버리지 — 아직 US 중심**
한국(DART), 일본(EDINET), 유럽, 중국/홍콩 공시 파싱이 "Phase 2" 상태다. 가격 데이터는 yfinance 접미사로 커버되지만, 공시 분석은 미국만 된다.
**4. 포트폴리오 — 스크린샷 OCR은 있지만 지속성 부족**
Trading 212, IBKR 스크린샷 분석은 구현되었으나, 포지션 이력 추적, 수익률 시계열, 리밸런싱 인사이트가 없다. Supabase에 저장하면 해결된다.
**5. 뉴스 통합 없음**
회사 관련 뉴스가 아예 없다. Bloomberg 터미널의 핵심 기능 중 하나인 뉴스 피드가 빠져 있다.
**6. 환율/암호화폐 — 별도 탭이지만 메인 대시보드와 통합 부족**
Bithumb/Binance 가격은 있지만, 포트폴리오 총 수익률에 FX 영향이 실시간으로 반영되는 통합 뷰가 없다.
### 🔴 위험 요소 (Risks)
- `app.py` 3000줄 단일 파일은 더 커지면 유지보수 불가능해진다
- yfinance/yahooquery는 언제든 차단될 수 있다 (IP 제한)
- Gemini 무료 티어 rate limit은 프로덕션에서 문제가 된다
- SEC EDGAR User-Agent 정책 위반 시 IP 차단 가능
---
## PART 2: 발전 방향 — Next.js 기반 ATLAS Terminal
### 목표 아키텍처
```
atlas-terminal/
├── apps/
│ └── web/ # Next.js 14 (App Router)
│ ├── app/
│ │ ├── layout.tsx # 루트 레이아웃 (다크 테마, 글로벌 네비)
│ │ ├── page.tsx # 메인 대시보드 (그리드 레이아웃)
│ │ ├── (dashboard)/
│ │ │ ├── overview/ # 포트폴리오 오버뷰 + 뉴스 피드
│ │ │ ├── research/ # 10-K 분석 + 뉴스 (회사별)
│ │ │ ├── valuation/ # DCF + RIM + Comps
│ │ │ ├── markets/ # 히트맵 + 환율 + 암호화폐
│ │ │ ├── portfolio/ # 포지션 관리 + 스크린샷 OCR
│ │ │ └── filings/ # SEC/DART/EDINET 원문 뷰어
│ │ └── api/ # Route Handlers (BFF 패턴)
│ │ ├── search/
│ │ ├── news/
│ │ └── portfolio/
│ ├── components/
│ │ ├── ui/ # shadcn/ui 기반 원자 컴포넌트
│ │ ├── charts/ # Recharts/D3 차트 컴포넌트
│ │ │ ├── SankeyFlow.tsx
│ │ │ ├── RadarHealth.tsx
│ │ │ ├── DCFWaterfall.tsx
│ │ │ └── HeatmapGrid.tsx
│ │ ├── terminal/ # 터미널 스타일 컴포넌트
│ │ │ ├── TickerBar.tsx # 상단 실시간 티커 바
│ │ │ ├── CommandPalette.tsx # ⌘K 검색
│ │ │ ├── PanelGrid.tsx # 리사이즈 가능 패널
│ │ │ └── NewsFeed.tsx # 실시간 뉴스 피드
│ │ └── portfolio/
│ │ ├── ScreenshotUpload.tsx
│ │ └── PositionTable.tsx
│ ├── lib/
│ │ ├── api-client.ts # FastAPI 호출 래퍼
│ │ └── format.ts # 통화/숫자 포맷 유틸
│ └── styles/
│ └── terminal-theme.css # Bloomberg 스타일 CSS 변수
├── server/ # FastAPI 백엔드
│ ├── main.py # FastAPI 엔트리포인트
│ ├── routers/
│ │ ├── edgar.py # SEC EDGAR 다운로드/파싱
│ │ ├── dart.py # 한국 DART API
│ │ ├── edinet.py # 일본 EDINET API
│ │ ├── analysis.py # Gemini LLM 분석 (MD&A, Risk)
│ │ ├── valuation.py # DCF, RIM, Comps 계산
│ │ ├── market_data.py # yfinance/yahooquery 래퍼
│ │ ├── news.py # 뉴스 집계 (RSS + API)
│ │ ├── crypto.py # Bithumb/Binance API
│ │ ├── fx.py # 환율 데이터
│ │ └── portfolio.py # 포트폴리오 CRUD + OCR
│ ├── services/
│ │ ├── gemini_service.py # Gemini API 래퍼 (retry, chunk, stream)
│ │ ├── sec_parser.py # 10-K HTML → 섹션 추출
│ │ ├── text_chunker.py # smart_chunk, clean_text_for_llm
│ │ ├── dcf_engine.py # 10Y 2-stage DCF + Reverse DCF + RIM
│ │ ├── financial_metrics.py # DuPont, Altman Z, F-Score, Red Flags
│ │ ├── market_fetcher.py # yfinance/yahooquery 폴백 체인
│ │ └── screenshot_ocr.py # Gemini Vision 포트폴리오 OCR
│ ├── models/
│ │ ├── schemas.py # Pydantic 요청/응답 스키마
│ │ └── db.py # Supabase 클라이언트
│ └── utils/
│ ├── safe_float.py # _safe_float, _na 유틸
│ ├── ticker_utils.py # get_global_ticker, infer_market
│ └── cache.py # Redis/인메모리 캐시 래퍼
├── supabase/
│ └── migrations/ # DB 스키마 (포트폴리오, 캐시, 사용자)
├── claude.md # ← 이 파일 (에이전트 빌딩 가이드)
├── .github/
│ └── workflows/
│ └── update-readme.yml # README 자동 업데이트 (GitHub Actions)
└── package.json
```
### UI 디자인 방향 — "Terminal Noir"
Bloomberg Terminal + Notion의 깔끔함 + 다크 모드를 결합한 디자인
**컬러 팔레트:**
- Background: `#0A0A0F` (거의 검정, 살짝 네이비)
- Surface: `#12121A` (카드/패널 배경)
- Border: `#1E1E2E` (구분선)
- Primary: `#00D4AA` (민트 그린 — 핵심 액션, 상승)
- Danger: `#FF4757` (하락, 경고)
- Text Primary: `#E8E8F0` (거의 흰색)
- Text Secondary: `#6B7280` (설명 텍스트)
- Accent: `#818CF8` (인디고 — AI 분석 결과 강조)
**타이포그래피:**
- 숫자/데이터: `JetBrains Mono` (모노스페이스, 가독성)
- 제목: `Satoshi` (기하학적 산세리프, 모던)
- 본문: `Inter` (가독성 최우선)
**핵심 UI 패턴:**
1. **Command Palette (⌘K)**: 회사 검색, 기능 이동 — Notion/Linear 스타일
2. **리사이즈 가능 패널 그리드**: react-grid-layout으로 사용자가 패널 배치 커스텀
3. **상단 티커 바**: 실시간 가격 스크롤 (주식 + 암호화폐 + 환율)
4. **사이드바 워치리스트**: 즐겨찾기 종목 실시간 업데이트
5. **AI 분석 결과**: 인디고 보더 카드 안에 스트리밍 텍스트
---
## PART 3: claude.md (Claude Code 빌딩 가이드)
아래 내용을 프로젝트 루트의 `claude.md`로 저장하면 Claude Code가 참조한다.
---