주식 관리 대시보드
보유 종목, 손익 현황, 포트폴리오 통계를 한눈에 확인할 수 있는 개인용 주식 관리 대시보드입니다.
주요 기능
- 보유 종목 목록 및 손익 현황: 종목별 수량 / 평균단가 / 현재가 / 평가금액 / 평가손익 / 누적수익률
- 거래 내역 기반 관리: 한 종목을 여러 번 매수/매도해도 평균단가·실현손익이 누적 반영 (평균단가법)
- 포트폴리오 요약 통계: 총자산(주식+예수금), 실현손익 / 평가손익 / 배당금을 구분 표시, 누적손익.
실현손익 카드에는 "{연도}년 수익률"도 함께 표시됩니다 — 누적 실현손익을 그 해 시작금액(작년 말
투입원금 + 작년까지 누적 실현손익)으로 나눈 값으로, 올해의 최종 수익률로 보시면 됩니다.
- 계좌 관리: 계좌별 예수금(현재 현금)과 계좌투입금(누적 납입액)을 구분 관리, 계좌별 필터.
계좌투입금은 한 번에 입력하거나, 계속 넣는 경우 계좌 필터에서 계좌 선택 시 나오는
"입금 내역"에 건별(날짜+금액)로 기록하면 자동 합산됩니다.
- 배당금 추적: 예상 배당금 등록 → 실제 지급 시 확정, 배당 캘린더에서 월별로 확인
- 목표금액 대비 달성률: 진행률 바로 표시
- 관심종목(워치리스트): 실시간 시세만 추적하다가 매수 시 보유 종목으로 전환
- 리밸런싱 제안: 종목별 목표 비중(%) 설정 시 현재 비중과 비교해 매수/매도 제안
- 자산 배분 차트: 환율 환산 기준 비중 계산 (KRW/USD 등 혼합 포트폴리오 지원)
- 연도별 실현손익 차트: 연도별 실현손익 자동 계산 + 수동 입력/덮어쓰기 가능. 계좌 입금
내역을 기록해두면 연도별 누적 총 투입원금과, 그 해 실현손익 대비 수익률(실현손익/투입원금)도
표로 함께 표시됩니다
- 가격 추이 차트: 종목별 최근 5년 종가 추이
- AI 종목 분석: 관심종목·보유종목에서 "AI 분석" 클릭 시 Claude가 가격 추세/최근 뉴스를 요약 분석 (Anthropic API 키 필요, 아래 참고)
- 해외주식 양도소득세 추정: 해외 상장 종목의 연간 실현손익 기준으로 기본공제 후 예상 세액을 참고용으로 계산
- 데이터 백업/복원: 전체 데이터를 JSON으로 내보내기/가져오기
- 기기 간 자동 동기화 (선택): Upstash Redis + 공유 비밀번호를 설정하면 PC/폰 등 여러 기기에서
같은 데이터를 자동으로 볼 수 있습니다 (아래 "기기 간 동기화 설정" 참고, 설정하지 않으면
기존처럼 기기별
localStorage만 사용합니다)
- 리서치 노트: 종목분석·시장 인사이트 등을 마크다운으로 작성/보관 (종목코드로 필터링 가능)
- 키워드 인사이트 자동 수집: 종목명/코드 입력 → DART 공시·네이버 뉴스를 모아 Claude가
핵심 인사이트로 요약, 결과를 바로 리서치 노트로 저장 가능 (아래 "인사이트 수집 기능 설정" 참고)
- PDF 리포트 분석: 증권사 리포트 PDF 업로드 → 텍스트 추출 후 Claude가 요약·리스크 정리,
결과를 리서치 노트로 저장 가능
- 거래내역 일괄 가져오기 (엑셀/CSV): 증권사 앱·홈트레이딩에서 내려받은 거래내역 파일을 그대로
업로드하면 열 이름을 자동으로 추측해서 매칭하고(틀리면 직접 바로잡기 가능), 미리보기에서
확인한 뒤 가져올 수 있습니다. 종목이 없으면 자동으로 새로 만들고, 이미 들어있는 거래(종목·날짜·
수량·가격·매수매도 동일)는 자동으로 건너뛰어 중복 저장되지 않습니다. 실시간 자동 연동은 아니지만,
파일을 받아서 올리는 것만으로 수기 입력 없이 반영할 수 있습니다.
- 순자산 목표 트래커: 이 대시보드가 추적하는 주식 자산 외에 부동산·RSU·성과급(OPI)·현금성·기타
자산을 직접 등록하면, 전체 순자산과 주식 포트폴리오 각각의 목표금액 대비 진행률을 도넛 차트(자산
구성)와 게이지(목표 달성률)로 확인할 수 있습니다. RSU·OPI처럼 세금이 붙는 항목은 세율(%)을
입력하면 세후 금액이 자동 반영되고, 가정 연수익률·연간 추가납입액을 입력하면 목표금액 도달
예상 시점(향후 20년 내)도 함께 계산됩니다. RSU는 수량을 입력하면 연동된 종목(예: 삼성전자)의
실시간 시세로 평가액이 자동 갱신됩니다. 가정(연수익률·연간 추가납입액·기타자산 성장률)을 바꾸면
"목표 달성 시뮬레이션" 꺾은선 차트와 목표 도달 예상 시점이 바로 다시 그려져, 입력값을 바꿨을 때의
효과를 시각적으로 바로 확인할 수 있습니다. 세전 금액을 마이너스로 입력하면 부채(예: 세준 집의
전세보증금처럼 나중에 돌려줘야 할 돈)로 처리되어 순자산에서 차감되므로, 순수 지분 기준의
순자산을 볼 수 있습니다.
- 섹터 집중도 경고: 종목 추가/수정 화면에서 섹터/테마(예: "반도체")를 입력해두면, 보유 종목의
섹터별 비중을 계산해 설정한 경고 기준(기본 20%)을 넘는 섹터를 빨간 배지로 표시합니다.
- 비상자금 트래커: 월 필수 생활비를 입력하면, 계좌 예수금과 순자산의 "현금성" 자산을 합쳐
몇 개월치가 확보돼 있는지 자동 계산하고 목표 개월수 대비 진행률을 보여줍니다.
- 최근 수정일 표시: 종목을 추가/수정하거나 거래 내역을 추가/삭제하면 "최근 수정일"이 자동
기록되어 보유 종목 목록에 표시되므로, 다시 입력하기 전에 마지막으로 손댄 시점을 바로 확인할 수
있습니다.
기술 스택
Next.js(App Router) · TypeScript · Tailwind CSS · Recharts · Anthropic SDK · pdf-parse
실시간 데이터 연동에 대해
가격/환율 API는 서버 사이드 라우트(/api/quote, /api/history, /api/fx)에서
Yahoo Finance의 비공식 엔드포인트를 호출합니다. 별도의 API 키가 필요 없지만
비공식 엔드포인트이므로 언제든 변경되거나 요청이 실패할 수 있습니다.
실시간 조회가 실패하면 자동으로 시드 기반 모의(mock) 데이터 또는 근사 환율로 대체되어
대시보드가 항상 정상적으로 동작합니다. 이 경우 해당 데이터에 MOCK 표시나 환율 경고 문구가
붙습니다. (샌드박스처럼 외부 네트워크가 차단된 환경에서는 항상 대체 데이터로 표시됩니다 —
로컬 PC나 일반적인 배포 환경에서 실행하면 실시간 데이터가 정상적으로 연동됩니다.)
별도의 뉴스 목록 화면은 제공하지 않으며, "AI 분석" 기능 내부에서만 최근 뉴스 헤드라인을
참고 자료로 가져와 Claude가 직접 요약·해석합니다 (헤드라인 자체에 대한 자동 호재/악재 태깅은
정확도가 낮아 제거했습니다).
AI 종목 분석 기능 설정
"AI 분석" 버튼은 Anthropic API를 호출합니다. 사용하려면:
- https://console.anthropic.com 에서 API 키 발급
- 배포 환경(Vercel 등)의 환경변수에
ANTHROPIC_API_KEY 추가
- 재배포
키가 설정되지 않은 경우 버튼을 눌러도 에러 메시지만 표시되고, 나머지 기능에는 영향이 없습니다.
API 호출은 클릭할 때마다 비용이 발생합니다(Claude Opus 5 기준 요청당 약 1~3센트 수준).
기기 간 동기화 설정 (선택)
기본적으로 모든 데이터는 브라우저의 localStorage에만 저장되어 기기/브라우저마다 따로
관리됩니다. PC와 폰 등 여러 기기에서 같은 데이터를 보고 싶다면 무료 Upstash Redis를
연결해 자동 동기화를 켤 수 있습니다:
- Upstash 콘솔에서 무료 Redis 데이터베이스 생성
(또는 Vercel 프로젝트의 Marketplace 탭에서 Upstash 연동을 추가하면 아래 환경변수가
자동으로 채워집니다)
- 배포 환경(Vercel 등)의 환경변수에 다음을 추가:
UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN (Upstash 콘솔에서 복사)
— Vercel Marketplace로 연동했다면 KV_REST_API_URL / KV_REST_API_TOKEN 이름으로도
인식합니다
SYNC_PASSCODE: 기기 간 공유할 임의의 비밀번호 (직접 정하는 값)
- 재배포 후 대시보드 상단에 나타나는 동기화 배너에 비밀번호를 입력하면 연결됩니다.
같은 비밀번호를 다른 기기에서도 입력하면 데이터가 자동으로 맞춰집니다.
SYNC_PASSCODE를 설정하지 않으면 동기화 UI 자체가 나타나지 않고 기존처럼
기기별 localStorage만 사용합니다 (완전히 선택 사항이며 기본 동작에 영향 없음).
동시에 여러 기기에서 편집하는 상황의 충돌 해결은 지원하지 않으며, 마지막으로
저장을 마친 기기의 데이터가 우선합니다.
인사이트 수집 기능 설정 (선택)
"키워드 인사이트 수집" 섹션은 공시·뉴스를 모아 Claude로 요약합니다. 아래 두 API는
각각 독립적으로 선택 사항이며, 설정하지 않은 항목은 자동으로 건너뜁니다:
- DART 공시 조회: OpenDART에서 무료 API 키 발급 후
환경변수
DART_API_KEY 추가. 종목코드(6자리, 예: 138080)를 함께 입력해야 공시를
조회합니다. 없으면 "공시 조회 생략"으로 표시됩니다.
- 네이버 뉴스 검색: 네이버 개발자센터에서
애플리케이션 등록 후 발급되는
NAVER_CLIENT_ID, NAVER_CLIENT_SECRET을 환경변수로
추가. 없으면 기존 Yahoo 뉴스 또는 예시 데이터로 자동 대체됩니다.
두 API 모두 공식 API를 사용하며 별도의 크롤링은 하지 않습니다. "PDF 리포트 분석"
기능은 추가 설정 없이 ANTHROPIC_API_KEY만 있으면 바로 사용할 수 있습니다.
알려진 제한사항
- 환율은 근사치: 실시간 환율 조회가 실패하면 고정된 근사 환율(USD/JPY/EUR/GBP/HKD → KRW)로
대체됩니다. 화면에 경고 문구가 표시됩니다.
- 기본은 로컬 저장: 위 동기화를 설정하지 않으면 모든 데이터는 브라우저의
localStorage에만
저장됩니다. 기기/브라우저를 바꾸면 데이터가 유지되지 않으니, 동기화를 쓰지 않는다면
상단의 "내보내기"로 주기적으로 백업하는 것을 권장합니다.
- 세금 미반영: 양도소득세 등 세금은 계산에 포함되지 않습니다 (단, 해외주식 양도소득세는
위 "해외주식 양도소득세 추정" 기능에서 참고용으로만 근사 계산). 거래 수수료는
거래 내역에 선택적으로 입력할 수 있습니다.
- 연도별 실현손익은 거래내역 기준: 종목별로 입력된 매도 거래의 실현손익을 매도 연도별로
합산합니다. 거래내역을 입력하지 않은 연도는 0으로 계산되므로, 필요하면 직접 금액을
입력해 덮어쓸 수 있습니다.
시작하기
npm install
npm run dev
브라우저에서 http://localhost:3000 접속.
AI 분석 기능을 로컬에서 테스트하려면 .env.local 파일에 다음을 추가하세요:
ANTHROPIC_API_KEY=sk-ant-...
프로덕션 빌드:
npm run build
npm run start