mirror of
https://github.com/shawnkim1997/All-in-one-Financial-Analysis.git
synced 2026-08-12 18:18:03 +00:00
9.3 KiB
9.3 KiB
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 링크.
- Analyst consensus:
- 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로 저장되었으며, 다운로드 후 공유·보관용으로 사용할 수 있습니다.