mirror of
https://github.com/shawnkim1997/All-in-one-Financial-Analysis.git
synced 2026-08-16 11:58:07 +00:00
179 lines
9.3 KiB
Markdown
179 lines
9.3 KiB
Markdown
# AGENT.md 기반 프로젝트 분석 — 새로 추가된 기능 상세
|
|
|
|
> All-in-One Financial Analysis Dashboard
|
|
> 작성 목적: AGENT.md 및 .agent/ 문서를 기준으로, PRD 대비 **현재 프로젝트에 새로 추가·확장된 기능**을 정리한 문서입니다.
|
|
|
|
---
|
|
|
|
## 1. 프로젝트 개요 (AGENT.md 기준)
|
|
|
|
- **프로젝트명:** All-in-One Financial Analysis Dashboard (10-K-summariser-project)
|
|
- **진입점:** `AGENT.md` → `.agent/` 내 PRD, Architecture, Data Flows, Directory Map, ADL, Infra, Rules 등 참조
|
|
- **아키텍처:** 정성(LLM·Gemini) / 정량(yfinance·yahooquery) **하이브리드 분리**
|
|
|
|
---
|
|
|
|
## 2. PRD에 명시된 기본 기능 (기준선)
|
|
|
|
| 탭 | PRD 핵심 내용 |
|
|
|----|----------------|
|
|
| **Tab 1** | 10-K Item 1A·Item 7 → Gemini로 경영 전략·리스크 분석 |
|
|
| **Tab 2** | 10년 2단계 DCF, Bull/Base/Bear, WACC·Terminal Growth 슬라이더 |
|
|
| **Tab 3** | 산업별 동종사 멀티플(P/E, EV/EBITDA, P/B), Gemini 산업 전망 |
|
|
|
|
---
|
|
|
|
## 3. 새로 추가·확장된 기능 (상세)
|
|
|
|
### 3.1 다국가·다시장 지원 (Multi-Market)
|
|
|
|
- **내용:** 미국 외 **한국(KOSPI/KOSDAQ), 일본(Nikkei), 영국(LSE)** 시장 지원.
|
|
- **구현:**
|
|
- `MARKET_OPTIONS`: US, South Korea, Japan, UK 선택.
|
|
- `get_global_ticker(ticker, market)`: 시장별 Yahoo 식별자 접미사 부여 (`.KS`, `.KQ`, `.T`, `.L`).
|
|
- `infer_market_from_ticker(ticker)`: 티커 접미사로 시장 자동 추론 (Deep-Dive 라우팅용).
|
|
- **의미:** PRD는 미국 중심이었으나, 비미국 주식 검색·정량 데이터 조회까지 확장됨.
|
|
|
|
---
|
|
|
|
### 3.2 Forensic Audit (Item 3 & 9A)
|
|
|
|
- **내용:** 리스크 분석에 **Item 3(법적 분쟁)·Item 9A(내부통제)** 기반 포렌식 검토를 추가.
|
|
- **구현:**
|
|
- `_gemini_forensic_audit()`: Item 3·9A 텍스트만 Gemini에 넘겨 회계·내부통제 리스크 요약.
|
|
- Tab 1 "Analyze Risk Factors (Item 1A)" 실행 시: Item 1A 스트리밍 결과 **뒤에** Forensic Audit 블록을 붙여 최종 출력.
|
|
- UI: "View Previous Risk & **Forensic** Analysis" expander로 이전 분석 재표시.
|
|
- **의미:** PRD의 "Item 1A 리스크"를 넘어, 법적·내부통제 리스크까지 한 번에 제공.
|
|
|
|
---
|
|
|
|
### 3.3 실시간 스트리밍 (Streaming)
|
|
|
|
- **내용:** Gemini 응답을 **실시간 스트리밍**으로 표시.
|
|
- **구현:**
|
|
- `_generate_stream()`: `stream=True`로 청크 단위 yield.
|
|
- `get_gemini_item7_strategy_stream()`, `get_gemini_item1a_risks_stream()`: Generator 반환.
|
|
- `st.write_stream(stream_gen)`: 첫 단어는 약 5–10초 내, 이후 실시간 유입.
|
|
- **의미:** PRD에 없던 "스트리밍" 명시였으나, 현재는 MD&A 전략·리스크 모두 스트리밍으로 구현됨.
|
|
|
|
---
|
|
|
|
### 3.4 API 키·이메일 로컬 저장 (Remember me)
|
|
|
|
- **내용:** 사이드바에서 **"Remember API key & email"** 선택 시 로컬에 저장·복원.
|
|
- **구현:**
|
|
- `.app_prefs.json` (프로젝트 루트, `.gitignore` 대상)에 `google_api_key`, `sec_email` 저장.
|
|
- `_load_prefs()` / `_save_prefs()`로 읽기·쓰기.
|
|
- 체크 해제 시 파일 삭제로 저장 중단.
|
|
- **의미:** PRD의 "사이드바 전역 설정"을 넘어 **영구 저장** 옵션이 추가됨.
|
|
|
|
---
|
|
|
|
### 3.5 10-K Item 8 LLM 추출 (정량 보강)
|
|
|
|
- **내용:** Tab 1 Financial Health에서 **10-K Item 8(재무제표)** 본문을 Gemini로 해석해 Sankey·Radar·Piotroski에 사용.
|
|
- **구현:**
|
|
- `get_sec_financials_llm(api_key, item8, ticker)`: Item 8 텍스트 → 구조화된 재무 수치 추출.
|
|
- `sankey_data_from_ai()`, `radar_metrics_from_ai()`, `piotroski_from_ai()`: AI 추출 결과로 차트·F-Score 계산.
|
|
- 미국·API 키·이메일 있을 때만 호출; 실패 시 기존처럼 yfinance 기반으로 폴백.
|
|
- **의미:** ADL-001 "Item 8은 yfinance로 대체"를 유지하면서, **선택적으로** 10-K 원문 기반 정량 분석을 추가한 확장.
|
|
|
|
---
|
|
|
|
### 3.6 Financial Health 확장 (Sankey·Radar·F-Score·Altman·Red Flags·YoY·섹터 지표)
|
|
|
|
- **Sankey:** 손익 흐름 (Revenue → COGS/Gross Profit → OpEx/OpInc → Tax/Interest/Net Income), AI 또는 yfinance.
|
|
- **Radar:** ROE, Current Ratio, Asset Turnover, Equity Multiplier, Revenue YoY 정규화 5축; **수동 입력 폴백**(Manual Data Entry expander) 제공.
|
|
- **Piotroski F-Score:** 9점 체크리스트; Item 8 LLM 또는 yfinance/TTM.
|
|
- **Altman Z-Score:** Safe/Grey/Distress 구간 표시.
|
|
- **Red Flags:** Current Ratio < 1.0, Interest Coverage < 1.5 등 조건부 경고.
|
|
- **Sector-specific metrics:** `get_sector_specific_metrics()` — Tech(Rule of 40, FCF margin, R&D%), Retail(재고회전율, 영업이익률), Financials(ROE, ROA) 등.
|
|
- **YoY 비율 변화:** DuPont·재무 비율의 전년 대비 변화 테이블; **녹색(개선)/빨간색(악화)** 조건부 스타일.
|
|
- **분기 모멘텀:** 분기별(QoQ) 테이블 + Change(%) 컬럼 스타일링.
|
|
- **의미:** PRD의 "Sankey, Radar, F-Score"를 넘어 Red Flags, YoY, 섹터별 지표, 수동 Radar, 분기 테이블까지 포함한 **정량 헬스 대시보드**로 확장됨.
|
|
|
|
---
|
|
|
|
### 3.7 DCF 탭 확장 (Smart Defaults·애널리스트·Damodaran)
|
|
|
|
- **Smart Defaults:** `get_dcf_smart_defaults()`
|
|
Beta(CAPM), revenueGrowth/earningsGrowth 기반으로 WACC·Terminal Growth·FCF 성장률 초기값 자동 설정.
|
|
- **Reference 패널 (expander):**
|
|
- **Analyst consensus:** `get_analyst_consensus()` — 목표가(target mean price), 추천(recommendationKey), Revenue/Earnings growth 추정.
|
|
- **Damodaran:** 섹터별 WACC 참조값, ERP 4.6%, Rf 4.2%, methodology 링크.
|
|
- **5년 트렌드:** Revenue·Net Income·Operating Margin %·FCF YoY 메트릭 + Plotly 5년 Revenue & FCF 라인 차트.
|
|
- **의미:** PRD의 "슬라이더 지원"에 더해 **자동 가정치**, **애널리스트·Damodaran 참조**, **5년 트렌드 시각화**가 추가됨.
|
|
|
|
---
|
|
|
|
### 3.8 기업 검색·다국어 힌트
|
|
|
|
- **내용:** 사이드바 "Company search"에서 **이름 검색** 후 티커 선택.
|
|
- **구현:**
|
|
- `yq_search(query)`로 검색; EQUITY/ETF만 사용, INDEX/MUTUALFUND 제외.
|
|
- placeholder/도움말: "e.g. Apple, **삼성**, Mitsubishi" — 다국어 검색 유도.
|
|
- 선택 옵션: `[Exchange] Symbol - Name` 형식으로 표시.
|
|
- **의미:** PRD의 "전역 설정·검색"을 구체화하고, 비영어권 사용자를 위한 다국어 검색 경로를 명시한 확장.
|
|
|
|
---
|
|
|
|
### 3.9 비미국 시장 안내 (DART·EDINET·LSE)
|
|
|
|
- **내용:** Tab 1 Deep-Dive에서 **한국/일본/UK** 선택 시 별도 안내.
|
|
- **구현:**
|
|
- 한국: "DART API integration for Korean MD&A is currently under construction. Please check back in Phase 2."
|
|
- 일본/UK: "EDINET/LSE document parsing is currently under development."
|
|
- 미국만 전체 정성 플로우(10-K 다운로드·Gemini) 실행.
|
|
- **의미:** PRD에는 없던 **다국가 로드맵**을 UI에 반영한 기능.
|
|
|
|
---
|
|
|
|
### 3.10 10-K 영구 캐시 및 캐시 안내
|
|
|
|
- **내용:** `data/{TICKER}_latest.json`에 Item 1A·3·7·8·9A 추출 결과 저장; 재실행 시 다운로드·파싱 생략.
|
|
- **구현:** `get_10k_sections()`에서 캐시 존재 시 로드만 수행. UI 캡션: "10-K sections are cached in **data/**; repeat runs use cache for instant AI analysis."
|
|
- **의미:** PRD/flows의 "캐싱"을 **영구 캐시**와 **사용자 안내**까지 명확히 한 구현.
|
|
|
|
---
|
|
|
|
### 3.11 Industry Comps 조건부 포맷팅
|
|
|
|
- **내용:** Tab 3 Comps 테이블에서 **열별 최소/최대**에 따라 셀 색상 적용.
|
|
- **구현:** Forward P/E, EV/EBITDA, P/B 각 열에 대해 최소값 녹색, 최대값 빨간색; 캡션으로 "Lowest = green (undervalued), highest = red" 설명.
|
|
- **의미:** PRD의 "동종사 멀티플 비교"에 **시각적 상대 밸류** 판단을 더한 확장.
|
|
|
|
---
|
|
|
|
## 4. 요약 표
|
|
|
|
| 구분 | PRD/기본 | 현재 구현 (추가·확장) |
|
|
|------|----------|------------------------|
|
|
| 시장 | US 중심 | US + 한국·일본·UK (티커 정규화·Phase 2 안내) |
|
|
| 리스크 | Item 1A | Item 1A + **Forensic (Item 3·9A)** |
|
|
| 출력 | 일괄 응답 | **실시간 스트리밍** |
|
|
| 설정 저장 | 없음 | **Remember me → .app_prefs.json** |
|
|
| 정량 소스 | yfinance | yfinance + **Item 8 LLM** (선택) |
|
|
| Financial Health | Sankey·Radar·F-Score | + Altman·Red Flags·YoY·**섹터별 지표**·수동 Radar·분기 테이블 |
|
|
| DCF | 슬라이더·3시나리오 | + **Smart Defaults**·**애널리스트 컨센서스**·**Damodaran**·**5년 트렌드** |
|
|
| 검색 | 전역 설정 | **다국어 힌트**·거래소 표시·EQUITY만 필터 |
|
|
| Comps | 테이블 | **최소/최대 조건부 색상** |
|
|
| 캐시 | 문서상 캐싱 | **영구 캐시** + UI 안내 |
|
|
|
|
---
|
|
|
|
## 5. 참고 문서 (AGENT.md)
|
|
|
|
| 문서 | 경로 | 역할 |
|
|
|------|------|------|
|
|
| PRD | `.agent/prd.md` | 프로젝트 비전, 3탭 요구사항 |
|
|
| Architecture | `.agent/architecture.mermaid` | 시스템 구조 다이어그램 |
|
|
| Data Flows | `.agent/flows.md` | 정성/정량 파이프라인 |
|
|
| Directory Map | `.agent/directory_map.md` | 파일 구조 |
|
|
| ADL | `.agent/adl.yaml` | 아키텍처 결정 (429, 10년 DCF, 폴백) |
|
|
| Infra | `.agent/infra.yaml` | 의존성·인프라 |
|
|
| Rules | `.agent/rules.md` | 개발 가드레일 |
|
|
|
|
---
|
|
|
|
*이 문서는 프로젝트 루트의 `docs/NEW_FEATURES_AND_PROJECT_ANALYSIS.md`로 저장되었으며, 다운로드 후 공유·보관용으로 사용할 수 있습니다.*
|