Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlphaFolio — 투자 데이터를 시각화하라

CI

2026-07-12에 Dacon-Organization/Dacon 모노레포에서 독립 저장소로 이관했습니다. 새 개발과 이슈는 이 저장소에서 관리하며, 과거 PR·브랜치 이력은 umbrella 저장소에 보존됩니다.

Skills.md 기반 투자 대시보드 설계 대회

AlphaFolio — 투자 데이터를 올리면, AI가 분석하고 대시보드를 자동으로 만든다

AlphaFolio · 개인 투자자를 위한 분석 & 회고 대시보드
🔗 라이브 데모 · 🧭 시스템 구성도 · 🖼️ 화면 미리보기 · ⚙️ 실행 방법

한 줄 요약 — 증권사 CSV·샘플·직접 입력 등 어떤 채널로 투자 데이터를 올려도, 30개 Skills 문서에 선언적으로 정의된 규칙대로 파싱→분석→시각화→리포트가 자동 실행되어 7개 페이지 대시보드가 생성됩니다. 분석 로직이 코드가 아닌 문서에 있어, 문서만 교체하면 다른 자산군(채권·코인 등)으로 확장됩니다.

성과 (Results)

무대 결과 비고
PLAF Demo Day 🏆 대상 수상 Dacon 제출 이후 기능·발표 산출물을 추가 보강하여 발표
Dacon 월간 해커톤 (본 대회) 아쉽게 예선 탈락 1차 대중 투표 단계 · 본선 진출 실패

이 저장소는 Dacon 제출 시점의 결과물을 기준으로 하며, 이후 PLAF Demo Day를 위해 추가된 기능(시계열 분석, HTML 리포트, 관리자 모드 등)이 누적되어 있습니다. 아래 대회 정보는 원 제출 대회(Dacon) 기준으로 유지합니다.


대회 개요

항목 내용
대회명 월간 해커톤 : 투자 데이터를 시각화하라
플랫폼 Dacon
기간 2025년 4월
핵심 과제 Skills.md 기반으로 투자 데이터 분석·시각화 규칙을 설계하고, 이를 기반으로 대시보드를 자동 생성하는 시스템 구축

평가 기준

항목 배점 핵심 포인트
범용성 25점 다양한 투자 데이터 구조에 대응, 재사용 가능성
Skills.md 설계 25점 분석 규칙 명확성, 시각화 기준, 인사이트 생성 규칙의 체계성
대시보드 자동 생성 25점 자동 분석, 시각화 적절성, UI 완성도
바이브코딩 활용 15점 Skills.md → 코드 자동 생성 구조, AI 친화적 문서 설계
실용성 및 창의성 10점 실제 활용 가능성, 확장 기능, UX

제출물

  1. 기획서 (PDF) — 서비스 개요, 분석 흐름, 대시보드 구성, Skills.md 설계 방향, 확장 기능
  2. Skills 문서 (5개 도메인 30개 파일, PDF 변환 제출) — 파싱/분석/시각화/인사이트/리포트 규칙 문서
  3. 웹 페이지 (배포 URL) — Skills.md 기반 바이브코딩으로 구현한 Streamlit 대시보드

라이브 데모: https://alphafolio.streamlit.app (Streamlit Cloud 배포 예정 — 아래 배포 방법 참고)


서비스 컨셉 — AlphaFolio

"투자 데이터를 올리면, AI가 분석하고 대시보드를 자동으로 만들어주는 서비스"

핵심 차별화: 분석 로직을 코드가 아닌 **Skills 문서(30개 파일)**에 선언적으로 정의하여, 문서만 교체하면 다른 자산군(채권, 암호화폐 등)에도 대응 가능한 구조.

주요 분석 기능: 수익률·샤프·MDD 등 기본/고급 지표 | 상관관계·분산 분석 | 배당·인컴 분석 | 회전율·보유기간 탐지 | 규제 준수 안전 고지 | 다중 벤치마크 비교 | 세금·수수료 영향 분석


시스템 구성도

투자 데이터가 들어오면 5개 도메인 30개 Skills 문서가 정의한 규칙대로 단방향 파이프라인을 따라 흐릅니다. 각 단계의 함수는 @uses_skill 데코레이터로 계측되어, 런타임에 "어떤 Skill이 어떤 분석에 쓰였는지"가 사이드바·카드 뱃지·리포트에 그대로 노출됩니다.

AlphaFolio 시스템 구성도 — 입력 채널부터 Streamlit 대시보드까지의 Skills 파이프라인

레이어 역할 핵심 산출물
① 입력 채널 파일 업로드 · 샘플 3종 · 직접 입력(ticker_master 2,768종) 원천 데이터
② parsing (5) 파일 인식·컬럼 매핑·정규화·증권사 프리셋·무결성 검사 표준 스키마 DataFrame
③ analysis (10) + 시계열 수익률·샤프·MDD·베타·HHI·자산곡선·상관·배당·회전율 지표 · 시계열 메트릭
④a viz (3) 조건 기반 차트 자동 선택 · 스타일 · 레이아웃 Plotly 인터랙티브 차트
④b insight (3) 패턴 감지 · 인사이트 카드 · 투자 안전 고지 인사이트 카드
⑤ report (4) 섹션 구성 · 내보내기 · 에러 처리 대시보드 / MD / CSV / HTML

텍스트 기반 파이프라인 의존도(상세)는 아래 Skills 파이프라인 섹션을 참고하세요.


화면 미리보기

🏠 홈 — 개요 & 인사이트 📋 종목 상세 — 보유 테이블
홈 대시보드 종목 상세
KPI 카드(평가금액·수익률·종목 수) + 핵심 인사이트 + 비중 도넛·수익률 차트 검색·정렬 가능한 보유 종목 테이블, 수익률·평가금액·비중 미니바
📈 성과분석 ⚠️ 리스크 📄 리포트
성과분석 리스크 리포트

모든 화면은 다크 테마 기반이며, 모바일 반응형 레이아웃을 지원합니다. (위 이미지는 data/sample_full.csv 로드 후 캡처)


프로젝트 구조

investment-dashboard-hackathon/
├── README.md                        ← 이 파일
├── AlphaFolio_기획서_이동원.pdf     ← 제출용 기획서
├── docs/                            ← Phase별 설계 문서
│   ├── phase1_service_concept.md    ← 서비스 컨셉 정의
│   ├── phase2_analysis_flow.md      ← 분석 파이프라인 흐름
│   ├── phase3_skills_design.md      ← Skills.md 설계 전략
│   ├── phase4_dashboard_design.md   ← 대시보드 UI 설계
│   └── phase5_vibecoding_extension.md ← 바이브코딩 & 확장 기능
├── skills/                          ← Skills 규칙 문서 (핵심, 30개 파일)
│   ├── parsing/                     ← 데이터 파싱 규칙 (5개)
│   │   ├── file-detection.md        ← 파일 인식·인코딩 감지
│   │   ├── column-mapping.md        ← 컬럼 동의어 매핑
│   │   ├── normalization.md         ← 숫자·날짜·마켓 정규화
│   │   ├── broker-presets.md        ← 증권사별 CSV 프리셋
│   │   └── data-integrity-check.md  ← 데이터 무결성 검사
│   ├── analysis/                    ← 투자 지표 분석 규칙 (10개)
│   │   ├── basic-metrics.md         ← 수익률·평가금액·비중
│   │   ├── portfolio-metrics.md     ← 포트폴리오 전체 지표
│   │   ├── advanced-metrics.md      ← 샤프·MDD·변동성·베타
│   │   ├── benchmarks.md            ← KOSPI/S&P 500 벤치마크
│   │   ├── benchmark-selection.md   ← 벤치마크 자동 선택 규칙
│   │   ├── currency-rules.md        ← KRW/USD 통화 처리
│   │   ├── tax-fee-impact.md        ← 세금·수수료 영향 분석
│   │   ├── correlation-diversification.md ← 상관관계·분산 분석
│   │   ├── income-analysis.md       ← 배당·인컴 분석
│   │   └── turnover-holding.md      ← 회전율·보유기간 분석
│   ├── viz/                         ← 시각화 규칙 (3개)
│   │   ├── chart-selection.md       ← 조건 기반 차트 자동 선택
│   │   ├── chart-style.md           ← 색상·포맷·테마
│   │   └── layout.md                ← 페이지 레이아웃·반응형
│   ├── insight/                     ← AI 인사이트 생성 규칙 (3개)
│   │   ├── pattern-rules.md         ← 패턴 감지 규칙
│   │   ├── display-rules.md         ← 인사이트 카드 표시 규칙
│   │   └── safety-disclaimer.md     ← 투자 안전 고지·면책 규칙
│   └── report/                      ← 리포트 구성 규칙 (4개)
│       ├── report-flow.md           ← 리포트 생성 흐름
│       ├── section-specs.md         ← 섹션별 구성 명세
│       ├── export-rules.md          ← PDF·CSV 내보내기 규칙
│       └── error-handling.md        ← 에러·경고 처리 규칙
├── src/                             ← Streamlit 대시보드 소스코드
│   ├── main.py                      ← 홈 대시보드
│   ├── pipeline/                    ← 파서·분석기·시각화·인사이트 엔진
│   └── components/                  ← 사이드바·KPI카드·인사이트카드·헤더
├── pages/                           ← Streamlit 멀티페이지
│   ├── 1_📊_포트폴리오.py
│   ├── 2_📈_성과분석.py
│   ├── 3_⚠️_리스크.py
│   ├── 4_📋_종목상세.py
│   └── 5_📄_리포트.py
├── scripts/
│   └── generate_samples.py          ← 빌드타임 샘플 데이터 생성 (KRX+yfinance)
├── data/
│   └── sample_full.csv              ← 한국+미국 10종목 샘플 (커밋 포함)
├── .streamlit/
│   └── config.toml                  ← 다크 테마 + headless 배포 설정
├── tests/                           ← pytest + E2E 스모크
└── assets/                          ← 이미지, 아이콘 등 리소스

Skills 파이프라인

30개 Skills 파일(5개 도메인)은 아래와 같은 의존 관계로 동작합니다:

CSV 업로드
    ↓
parsing/   → file-detection, column-mapping, normalization, broker-presets, data-integrity-check
            (파일 인식·인코딩 감지 → 컬럼 매핑 → 데이터 정규화 → 표준 스키마 생성)
    ↓
analysis/  → basic-metrics, portfolio-metrics, advanced-metrics
            benchmarks, benchmark-selection, currency-rules, tax-fee-impact
            correlation-diversification, income-analysis, turnover-holding
            (수익률·비중·고급 지표·상관관계·배당·회전율 등 전체 분석)
    ↓
    ├── viz/     → chart-selection, chart-style, layout
    │             (조건 기반 차트 자동 선택 & 렌더링)
    └── insight/ → pattern-rules, display-rules, safety-disclaimer
                  (패턴 감지 → 인사이트 카드 생성 → 투자 안전 고지)
            ↓
    report/ → report-flow, section-specs, export-rules, error-handling
              (섹션 구성, 레이아웃, 내보내기(대시보드/PDF/CSV), 에러 처리)

기술 스택

영역 기술 선택 이유
프론트/대시보드 Streamlit ≥ 1.44 빠른 프로토타이핑, Python 단일 스택
데이터 분석 pandas ≥ 2.2, numpy ≥ 1.26 투자 데이터 가공·지표 계산 표준 도구
시각화 Plotly ≥ 5.22 인터랙티브 차트, Streamlit 네이티브 지원
데이터 수집 pykrx, yfinance KRX 국내주식, Yahoo Finance 해외 ETF
배포 Streamlit Cloud 무료 배포, URL 즉시 공유 가능

설계 3원칙

  1. 선언적 (Declarative) — Skills.md는 "무엇을" 정의하고, 코드가 "어떻게"를 처리
  2. 교체 가능 (Swappable) — 모든 문서에 extension_points 섹션 포함, 규칙 교체만으로 다른 자산군 대응
  3. 바이브코딩 친화 — YAML 구조화 포맷으로 AI가 읽고 코드 생성 가능

실행 방법

로컬 실행

# 1) 의존성 설치
pip install -r requirements.txt

# 2) (선택) 샘플 데이터 재생성 — KRX·yfinance 실제 가격 수집
#    data/sample_full.csv 가 이미 커밋되어 있으므로 생략 가능
python scripts/generate_samples.py --variant all

# 3) Streamlit 실행
streamlit run streamlit_app.py

샘플 데이터: data/sample_full.csv는 한국 6종목(KRX 합성가) + 미국 ETF 4종목(yfinance 실가격)으로 구성된 10종목 샘플입니다. API 없이도 즉시 대시보드를 체험할 수 있습니다.

멀티페이지 구성 (M1 ~ M8 완료)

# 페이지 파일 모드 조건
0 🏠 홈 (개요) streamlit_app.pysrc/main.py 데이터 업로드
1 📊 포트폴리오 pages/1_📊_포트폴리오.py 보유 현황 필요
2 📈 성과분석 pages/2_📈_성과분석.py 매수가+현재가 필요
3 ⚠️ 리스크 pages/3_⚠️_리스크.py 보유 현황 필요
4 📋 종목 상세 pages/4_📋_종목상세.py 데이터 업로드
5 📄 리포트 pages/5_📄_리포트.py 데이터 업로드 (MD/CSV export)

사이드바 공통 필터(시장/섹터/수익률 범위)가 페이지 1·2·3·4·5 모두에 적용됩니다.

테스트

# pytest (parser/analyzer/skills_loader)
python -m pytest tests/ -q

# E2E 스모크 (전체 차트 9종 + 분석 파이프라인)
python tests/smoke_e2e.py

# Playwright E2E (실시간 시세 주입 검증, 브라우저 자동화)
pip install -r requirements-dev.txt; playwright install chromium
$env:RUN_LIVE="1"; python -m pytest tests/test_e2e_live_prices.py -v

Streamlit Cloud 배포

  1. share.streamlit.io 접속 → GitHub 계정 연결
  2. Repository: mygithub05253/Dacon
  3. Branch: main
  4. Main file path: investment-dashboard-hackathon/streamlit_app.py
  5. Python 버전 3.10+ 선택
  6. requirements.txt 자동 인식 (Secrets 불필요 — 런타임은 업로드 데이터만 처리)
  7. 배포 완료 후 공개 URL을 이 README의 라이브 데모 링크에 업데이트

참고: .streamlit/config.toml에 다크 테마와 headless = true가 설정되어 있어 Cloud 환경에서도 동일한 UI로 동작합니다.


QA 검증 결과 (M8)

data/sample_full.csv 로드 후 Playwright 브라우저 QA 통과 확인:

페이지 주요 검증 항목 결과
🏠 홈 KPI 카드(총 평가금액·수익률·종목 수), 인사이트 카드, 차트 2종
📊 포트폴리오 도넛 차트(종목별 비중), 비중 테이블
📈 성과분석 수익률 KPI(최고·최저·평균), 종목별 수익률 바 차트
⚠️ 리스크 집중도 바+누적선 차트, HHI 요약 테이블, 경고 카드
📋 종목상세 10종목 전체 테이블 (수익률·평가금액·비중 미니 바 포함)
📄 리포트 도넛 + 섹터 Treemap + 수익률 바 차트 복합 렌더링

M9 — 데이터 입력 UX 통합 (Spec-1)

평가자가 어떤 입력 채널을 선택해도 100% 동작하는 통합 데이터 입력 표면.

입력 채널 컴포넌트 비고
📁 파일 업로드 upload_guide + file_uploader 필수/선택 컬럼·예시·5사 헤더 가이드
🎯 샘플 데이터 sample_full / sample_kr_basic / sample_trades 3종 모두 정상 빌드·로드
✏️ 직접 입력 manual_entry ticker_master 자동완성 + 시세 자동 조회

핵심 자료

  • data/ticker_master.sqlite (~344KB) — KR 2,768종목 (KOSPI 948 + KOSDAQ 1,820) + US 화이트리스트 10종
    • DART 메타 (fiscal_month, industry_code) 보강 적용
  • broker preset 5종 자동 인식: 키움 / 미래에셋 / 삼성 / 토스 / 한국투자증권
  • price_provider: pykrx (KR) / yfinance (US) + 5분 ttl 캐시 + fallback

빌드 명령

# 종목 마스터 (KRX_ID/KRX_PW 와 DART_API_KEY 가 .env 에 있어야 풀빌드)
python scripts/build_ticker_master.py --variant all

# 샘플 데이터 3종
python scripts/generate_samples.py --variant all

환경 변수

.env.example 복사 → .env 후 채우기:

변수 용도 미설정 시
KRX_ID, KRX_PW KRX 정보데이터시스템 회원 (pykrx 1.2.x 인증) KOSPI 시드 20종으로 폴백
DART_API_KEY 전자공시 OpenDART 인증키 DART 메타 보강 스킵

Windows PowerShell 한국어 인코딩

requirements.txt 한글 주석이 cp949 환경에서 파싱 오류를 낼 수 있으므로:

$env:PYTHONUTF8=1
pip install -r requirements.txt

M9 통합 스모크

python tests/smoke_e2e.py

분석 파이프라인 + 샘플 3종 파싱 + ticker_master 자동완성 + Skills 도메인 커버리지 모두 검증.


M9.2 — Skills 활용 가시화 (Spec-2)

평가자에게 "30개 Skill 중 어떤 게 어느 분석에 쓰였는가"를 런타임에 가시화.

계측 구조

@uses_skill("analysis/basic-metrics")        ← 데코레이터 자동 계측
trace.record("report/report-flow", ctx)      ← 명시 호출
        │
        ▼
session_state["skill_usages"]  (테스트 환경은 _local_usages 폴백)
        │
   ┌────┼────┐
   ▼    ▼    ▼
사이드바  카드/차트  MD 리포트
패널     뱃지      Skills 섹션
영역 노출 위치 파일
🧩 사이드바 "사용된 Skills (N/25)" 분석 후 자동 갱신 src/components/skills_panel.py
📐 KPI 카드 뱃지 홈/리스크 KPI 하단 src/components/skills_badge.py, kpi_cards.py, pages/3_⚠️_리스크.py
🔍 인사이트 카드 뱃지 pattern/display/safety src/components/insight_cards.py
📄 MD 리포트 Skills 섹션 마크다운 다운로드 끝 pages/5_📄_리포트.py _build_skills_section()

도메인별 활성도 (sample_full 시연 기준)

도메인 활성/전체 메모
parsing 5/5 업로드 시 file-detection ~ data-integrity-check 전수 호출
analysis 6/10 시계열·거래·배당 의존 4종(benchmarks, correlation-diversification, turnover-holding, income-analysis)은 추가 샘플 로드 시 활성
viz 3/3 chart-selection / chart-style / layout
insight 3/3 pattern-rules / display-rules / safety-disclaimer
report 4/4 리포트 페이지 방문 시 report-flow ~ error-handling
합계 17~21/25 시연 데이터에 따라 증감

평가 매핑

기능 직결 평가 항목
@uses_skill 데코레이터 + 자동 계측 바이브코딩 15점 — 수동 구현 최소화, skill .md 직결
사이드바 N/25 카운트 Skills.md 설계 25점 — 30개(현 25개) skill 활용도 정량 지표
뱃지 클릭 → .md 원문 팝업 바이브코딩 15점 — 문서 기반 생성 직접 시연
MD 리포트 Skills 섹션 양 항목 — 심사위원 오프라인 검토 자료

스모크 커버리지 검증

tests/smoke_e2e.pysmoke_skills_coverage() 가 도메인별 목표치를 자동 검증.

$env:PYTHONUTF8=1
python tests/smoke_e2e.py

기대 출력:

[M9.2] 활성 skills: 17 (snapshot 전체 17)
  ✅ parsing: 5/5+
  ✅ analysis: 6/6+
  ✅ viz: 3/3+
  ✅ insight: 3/3+
  ✅ report: 0/0+   (리포트 페이지 미실행 — 정상)

M9.3 — 종목 상세 강화 (Spec-3)

📋 종목상세 페이지에 재무 / 공시 / 가격 / 한 줄 진단 4탭을 추가. KR=OpenDartReader, US=yfinance 빌드타임 캐시로 평가자 측에 API 키 노출 없이 즉시 시연.

4탭 구조

pages/4_📋_종목상세.py
  └─ selectbox 종목 선택
        ↓
  src/components/stock_detail_panel.py
        ├─ 📊 재무 탭     → PER/PBR/ROE/부채비율 카드 + 자산/부채/자본 + 손익 막대
        ├─ 📰 공시·뉴스   → KR 타임라인 + 종류 필터 + 이상 패턴 마커 / US 뉴스 + 링크
        ├─ 📈 가격        → Plotly 캔들 + 60일 MA + 거래량 + 1M/3M/6M/1Y 수익률·MDD
        └─ ✨ 한 줄 진단  → 펀더멘털 + 공시 + 6개월 추이 종합, severity → 색상 분기
        ↓
  src/pipeline/fundamentals.py
        ├─ load_financials(ticker, market)       → BS/IS/CF DataFrame
        ├─ load_disclosures(ticker, market)      → 공시(KR) / 뉴스(US) DataFrame
        ├─ compute_fundamental_metrics(...)      → @uses_skill('analysis/fundamental-metrics')
        └─ detect_disclosure_anomaly(df)         → @uses_skill('insight/disclosure-anomaly')

빌드 명령

# 보유 샘플 10종 (KR 6 + US 4) — 기본
python scripts/build_fundamentals.py --variant sample

# KR 전 종목 (~7~10시간, 1차 투표 진행 중 비동기 보강)
python scripts/build_fundamentals.py --variant kr

# US 화이트리스트만
python scripts/build_fundamentals.py --variant us

산출물:

디렉토리 내용
data/financials/<ticker>.json.gz KR 6자리 DART 사업보고서 BS/IS/CF
data/disclosures/<ticker>.json.gz KR 6자리 최근 1년 공시 메타
data/financials_us/<ticker>.json.gz US 티커 yfinance income/balance (ETF는 빈 응답)
data/news_us/<ticker>.json.gz US 티커 yfinance.news (2026 구조 자동 평탄화)

신규 skill 2종 (Skills.md 설계 25점 직결)

skill 파일 내용
analysis/fundamental-metrics skills/analysis/fundamental-metrics.md PER/PBR/ROE/부채비율/EPS 성장률 계산 규칙, EPS TTM 4분기 trailing 합산, 업종 평균 비교, ZeroDivision graceful fallback, extension_points 4종
insight/disclosure-anomaly skills/insight/disclosure-anomaly.md 유상증자(high)/자기주식(medium)/임원거래(medium) 3종 이상 패턴 감지, severity → 한 줄 진단 색상 연동, KR/US 대칭 처리, extension_points 5종

실데이터 검증값 (삼성전자 005930, current_price=100,000 가정)

지표
PER 13.21배
PBR 1.37배
ROE 10.36%
부채비율 29.94%

tests/test_fundamentals.pytest_KR_005930_실데이터_지표_합리성 가 자동 검증 (빌드 산출물 없으면 skip).

평가 매핑

기능 직결 평가 항목 예상 효과
재무 탭 (3장표 + 4개 핵심 지표) 범용성 25 + 실용성 10 "DB처럼 보유" 시연
공시 탭 (타임라인 + 이상 감지) 범용성 25 + 실용성 10 투자 판단 지원 시연
fundamental-metrics.md skill Skills.md 설계 25 + 바이브코딩 15 분석 스킬 체계화
disclosure-anomaly.md skill Skills.md 설계 25 + 바이브코딩 15 인사이트 스킬 체계화
한 줄 진단 카드 실용성·창의성 10 종합 인사이트 차별화
US/KR 대칭 처리 범용성 25 다국가 지원 시연
누적 약 15~25점 보강 영향권

환경 변수

.env.example 복사 후 채우기 (Spec-1과 공유):

변수 용도 미설정 시
DART_API_KEY OpenDartReader 인증 (빌드타임 전용) KR 빌드 자동 스킵, US만 빌드

런타임은 빌드 산출물만 읽으므로 키 불필요.

테스트

# Spec-3 유닛 (19 케이스)
python -m pytest tests/test_fundamentals.py -v

# 통합 smoke (M7 + M9 + M9.2 + Spec-3 skill 존재 검증)
$env:PYTHONUTF8=1
python tests/smoke_e2e.py

기대: 19 passed / ALL SMOKE PASSED.


A 시리즈 — Demo Day 보강 (시간축 분석 + 관리자 모드)

PLAF Demo Day 시연 강화를 위해 시간축(시계열) 분석, 시각화 포함 리포트, 관리자 모드를 추가했다. 모든 데이터는 결정론적·오프라인 생성이라 키 없이 Streamlit Cloud 에서 즉시 동작한다.

A1 — 샘플 데이터 확장 (시계열·배당·매매일지)

파일 내용 활성화 분석
data/sample_prices.csv 6개월 일별 종가(보유 10종 + 벤치마크 ^KOSPI/^SP500), long 포맷 자산곡선·낙폭·롤링·벤치마크·상관
data/sample_dividends.csv 최근 6개월 배당 지급 내역(분기/반기/연) 배당·인컴 분석
data/sample_journal.csv 매매일지 시드(근거·감정·메모·실현수익률) 매매일지 패턴 분석
# 시계열·배당·매매일지 일괄 생성 (오프라인, fallback 가격 기준 결정론)
python scripts/generate_samples.py --variant demo

홈 → 샘플 → 🎬 데모 풀 시나리오 한 번으로 보유+시계열+배당+매매일지를 session_state(df, prices_long, dividends, trades, journal_entries)에 적재. 적재 로직: src/pipeline/demo_seed.py.

A2 — 시간축 시각화 (src/pipeline/timeseries.py + visualizer.py)

  • 성과분석: 자산곡선+낙폭, 벤치마크 대비(시작=100), 롤링 변동성·샤프, 배당·인컴
  • 리스크: 시계열 기반 샤프/MDD + 종목 상관 히트맵 + 평균 상관
  • 매매일지 › 거래 성과: FIFO 실현손익 타임라인, 승/패 도넛, 보유기간 분포, 종목별 실현손익

핵심 계산: portfolio_equity_curve(보유×일별종가, USD 고정환율 환산), realized_trades(FIFO 매칭), dividend_summary(연환산 수익률). 이로써 휴면 상태였던 skill 4종(benchmarks, correlation-diversification, income-analysis, turnover-holding)이 런타임에 활성화된다.

A3 — 시각화 포함 HTML 리포트 (src/pipeline/html_report.py)

리포트 페이지에 📊 HTML 다운로드 추가. Plotly 차트를 인터랙티브 그대로 임베드(plotly.js CDN 1회 로드, kaleido 등 추가 의존성 0). 브라우저로 열거나 인쇄→PDF 변환 가능. CSV/MD 는 기존대로 유지.

A4 — 관리자 모드 (pages/7_🛠️_관리자.py)

세션 데이터를 직접 관리하는 콘솔(실제 DB 미도입, 세션 메모리 기반).

기능
📊 데이터 편집 보유/거래/시계열/배당 data_editor CRUD → 저장 시 전 페이지 즉시 반영
📔 매매일지 일지 항목 표 편집
🗂️ 샘플 관리 data/sample_*.csv 미리보기 + 임의 세션 키로 적재
🔍 무결성 필수 컬럼·중복·음수·결측 점검 + session_state 인스펙터
💾 스냅샷 세션 전체 JSON 백업/복원

A 시리즈 테스트

$env:PYTHONUTF8=1
python -m pytest tests/test_timeseries.py -q   # 9 passed

의존성 변경

  • streamlit>=1.57.0 (번들 agent-skills developing-with-streamlit 활용)

About

AlphaFolio — 투자 데이터를 분석하고 회고하는 Streamlit 포트폴리오 대시보드

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages