Skip to content

Latest commit

 

History

History
154 lines (113 loc) · 5.59 KB

File metadata and controls

154 lines (113 loc) · 5.59 KB

📘 Personal Finance Tracker - PRD (Product Requirements Document)

📌 개요

개인 사용자 1인을 위한 금융 자산(주식 및 암호화폐) 관리 시스템.
Streamlit 기반의 웹 앱으로 구성되며, PostgreSQL을 사용하여 데이터를 저장하고 관리한다. 주기적인 자산 현황 확인 및 수익률 계산을 위해 Airflow를 사용하여 자동화된 워크플로를 구현한다. Docker를 통해 쉽게 배포하고 관리할 수 있다.


🎯 목적

  • 여러 금융 플랫폼(증권사, 암호화폐 거래소)의 자산 데이터를 통합하여 한 눈에 확인
  • 일일 수익률, 자산 구성 비율 등의 시각화를 통해 자산 흐름 파악
  • 입출금 및 거래 기록의 수동 등록 또는 자동 동기화 지원
  • 주기적 자산 현황 확인: Airflow를 활용하여 매일 자산 데이터를 자동으로 업데이트
  • 혼자만 사용하는 경량화된 구조로 구현

🧑‍💻 대상 사용자

  • 개인 투자자 1인
  • 다양한 자산을 통합해 관리하고 싶은 사용자
  • 외부 클라우드 서비스나 구독제 모델을 원치 않는 사용자

⚙️ 기능 명세

1. 자산 현황 동기화

  • ✅ 수동 등록 (초기 입력, CSV 업로드 등)
  • 🔄 API를 통한 실시간 시세 반영
    • 바이낸스, Bitget, Bithumb (암호화폐)
    • 한국투자증권 (향후 지원)
  • 💾 PostgreSQL에 최신 잔고 저장

2. 거래/입출금 내역 관리

  • 📥 입금, 출금, 매수, 매도 기록 수동 입력
  • 🗂 거래 내역 필터링 및 정렬 기능
  • 📄 CSV 내보내기 지원

3. 수익률 계산

  • 📆 일일 기준 자산 가치 계산
  • 💹 일일 수익률 및 총 수익률 시각화
  • ⏳ 백테스트 가능하도록 과거 기록 저장

4. 대시보드

  • 💰 총 자산, 수익률, 전일 대비 증감률
  • 📊 Pie Chart: 자산 카테고리 비율
  • 📈 Line Chart: 일별 자산 가치 변화
  • 🧾 최근 거래 내역 테이블

5. 시스템 관리

  • 🔐 API 키 관리 (로컬에서 환경변수로 저장)
  • 📄 초기 설정 파일 (예: JSON, TOML)
  • 🧹 데이터 초기화 기능

6. 주기적인 자산 현황 확인

  • 🔄 Airflow를 활용한 자동화 워크플로 설정
    • 매일 자산 시세 동기화 및 평가 금액 계산
    • Airflow DAG로 자동 실행 (주기 설정: 매일, 매주 등)
  • Airflow UI에서 상태 및 로그 확인
  • 실패한 작업은 알림 시스템으로 처리 (이메일/Slack)

🧱 기술 스택

항목 내용
언어 Python
프레임워크 Streamlit
DB PostgreSQL
시각화 Plotly
API 연동 requests, aiohttp, 또는 거래소 SDK
워크플로 관리 Airflow
환경 관리 .env, dotenv, 환경변수 사용
배포 Docker, Docker Compose

🗃 데이터베이스 스키마 (초안)

assets - 자산 정보

필드 타입 설명
id SERIAL PK
name TEXT 자산명 (예: 비트코인)
symbol TEXT 심볼 (예: BTC, AAPL)
category TEXT 암호화폐 / 주식 등
platform TEXT 거래소 또는 증권사
current_price NUMERIC 현재 시세
quantity NUMERIC 보유 수량
created_at TIMESTAMP 등록일

transactions - 거래 내역

필드 타입 설명
id SERIAL PK
asset_id INTEGER FK -> assets.id
type TEXT 매수/매도/입금/출금
quantity NUMERIC 수량
price NUMERIC 단가
timestamp TIMESTAMP 거래 일시

daily_performance - 수익률 캐싱용

필드 타입 설명
date DATE 일자
total_value NUMERIC 총 자산 평가액
profit NUMERIC 당일 수익률(%)

📆 개발 일정 (예시)

주차 내용
1주차 DB 설계 및 Streamlit 초기 레이아웃 구성
2주차 자산 수동 등록 + 거래 내역 UI 구현
3주차 API 연동 (바이낸스, Bitget, Bithumb)
4주차 수익률 계산, 대시보드 구성 완료
5주차 Airflow 워크플로 자동화 설정
6주차 테스트 및 CSV 업로드/다운로드 기능 추가
7주차 Docker 설정 및 배포 준비

💡 향후 확장 아이디어

  • 리밸런싱 추천 (자산 비율 기반)
  • 자동 알림 (특정 수익률 초과/미달 시)
  • 백업/복원 기능
  • Telegram 연동으로 일일 리포트 발송

🐳 Docker 배포

  • Docker 및 Docker Compose를 활용한 컨테이너화
  • 각 서비스별 컨테이너 구성:
    • Streamlit 웹 앱
    • PostgreSQL 데이터베이스
    • Airflow 웹서버 및 스케줄러
  • 환경별 설정 파일 분리 (.env.dev, .env.prod)
  • 볼륨 마운트를 통한 데이터 영속성 보장
  • 자동 백업 및 복원 스크립트 지원