Portfolio Manager 사용 설명서 Portfolio Manager User Guide
미국·한국 주식·ETF 포트폴리오를 한 곳에서 관리하는 무료 도구. 실시간 가격, 배당 캘린더, 30년 자산 예측, 세후 수익 분석을 모두 제공합니다. 모든 데이터는 브라우저에 로컬로 저장됩니다. Free tool to manage US and Korean stocks & ETFs in one place. Live prices, dividend calendar, 30-year wealth forecast, after-tax analysis. All data is stored locally in your browser.
가입 없이 바로 시작Start without signing up
처음 방문하면 가입 화면이 아니라 샘플 포트폴리오 36종목이 즉시 로드된 체험 모드로 진입합니다. 카드·이메일·휴대폰 모두 필요 없으며, 본인 포지션을 처음 추가하는 순간에만 이 기기에 잠금을 설정합니다. First visit lands you in demo mode with 36 sample holdings already loaded — no card, email, or phone required. A device lock is only set when you add your first real position.
- 모든 기능을 즉시 사용 가능 — 헬스 점수·배당 캘린더·예측·보고서 모두 샘플로 체험Every feature works immediately — health score, dividend calendar, forecast, reports all run on the sample
- "+ 포지션 추가" 버튼을 누르면 체험 종료 → 잠금(닉네임 + 비밀번호) 설정 모달이 열림 → 설정 후 샘플은 깨끗이 비워지고 첫 진짜 포지션을 입력하는 화면으로 자동 전환Click + Add Position to leave demo → a lock-setup dialog opens (nickname + password) → samples are cleared and the first real position editor opens
- 잠금은 회원가입이 아닙니다 — 같은 PC를 쓰는 가족·동료가 본인 자산을 보지 못하도록 막는 로컬 보호 장치. 모든 데이터는 이 브라우저에만 저장됩니다The lock is not a sign-up — it just prevents others on the same PC from seeing your assets. Data stays in this browser only
- 비밀번호는 PBKDF2-SHA256(10만 회 + 랜덤 Salt)으로 해시되어 이 기기에만 저장됨Password is hashed with PBKDF2-SHA256 (100k rounds + random salt) and stored only on this device
전체 레이아웃Full app layout
좌측 사이드바 · 상단 토픽바 · 메인 영역 + 4개 탭 (Overview / Positions / Forecast / Report)으로 구성됩니다. 게시판은 사이드바 액션의 ‘게시판’ 버튼으로 접근합니다. Left sidebar · top bar · main area with 4 tabs (Overview / Positions / Forecast / Report). The community board lives in the sidebar action strip.
키보드 한 번에 어디든One shortcut, any screen
Ctrl+K(Mac은 ⌘K) 또는 사이드바 상단 "빠른 이동" 버튼을 누르면 모든 화면·계좌·액션을 검색해 즉시 이동할 수 있는 명령 팔레트가 열립니다. Press Ctrl+K (Mac ⌘K) or click the sidebar Quick Jump pill — a command palette opens to search every screen, account, and action.
- "예측" 입력 → Forecast 탭, "새로고침" → 시세 재조회, "잠금" → 로그아웃 등Type "forecast", "refresh", "lock" — instant action
- ↑↓로 항목 이동, Enter로 실행, Esc로 닫기. 마우스 hover도 동기화됨↑↓ navigate, Enter run, Esc close. Mouse hover stays in sync
- 액션: 포지션 추가 · 시세 새로고침 · 설정 · 언어/통화 토글 · 데이터 내보내기 · 잠금Actions: Add Position · Refresh · Settings · Toggle Language/Currency · Export · Lock
오늘의 포트폴리오 한눈에Your portfolio at a glance
총 평가액 Hero + 헬스 점수 + 목표 추적 + 자산 구성·배당 캘린더(상하 배치) + 수익률 트리맵 + 섹터 분석·목표 비중(좌우 2열) 순서로 한 화면에 정렬됩니다. Hero (total value) → Health Score → Goal Tracking → Allocation/Dividend (stacked) → Return Treemap → Sector/Target (2-col) — laid out top-to-bottom on a single screen.
주요 인터랙션Key interactions
- 배당 캘린더 월 hover — 그 달의 종목 상위 6개 + 합계 + % 즉시 표시 (클릭은 상세 패널 펼침)Dividend month hover — top 6 + total + % popup (click expands a detail panel)
- 배당 범례 종목 hover — 종목 상세(연/월/회당, 다음 지급월, 비중, 평가액·손익, 지급월 스케줄)Dividend legend hover — stock detail (annual/monthly/per-pay, next pay, share %, value/gain, schedule)
- 트리맵 박스 hover — 평가액·손익·수량·매입·현재·배당·섹터 글래스 툴팁Treemap tile hover — value, gain, shares, cost, current, dividend %, sector
- 섹터 분석 행 hover → 해당 섹터 종목 12개 팝업Sector Analysis row hover → up to 12 holdings popup
- 목표 비중 입력 시 매수/매도 계획 자동 계산Enter % in Target Allocation → auto buy/sell plan
포트폴리오 진단 한눈에Diagnose your portfolio at a glance
Overview 최상단에 등급(A+~D) + 4개 영역 sub-score 카드가 표시됩니다 — 분산도 / 배당 / 성장성 / 리스크. 각 항목을 클릭하면 평가 기준·본인 데이터·구체적 개선 사례가 담긴 단일 섹션 팝업이 열립니다. The top of Overview shows your grade (A+~D) plus 4 sub-scores — Diversification / Dividend / Growth / Risk. Click any one for a focused popup with grading criteria, your data, and concrete improvement examples.
- 분산도: 섹터 HHI(낮을수록 분산) + Top5 종목 비중Diversification: sector HHI + Top5 weight
- 배당: 포트폴리오 가중 배당률Dividend: weighted yield curve
- 성장성: 성장 섹터 비중 + 미국 비중 (균형 50% 적정)Growth: growth-sector weight + US weight (~50% optimal)
- 리스크: 단일 종목 최대 비중 + 종목 수Risk: largest single-stock weight + holdings count
총 자산과 월 배당, 동시에Wealth and monthly dividend — together
총 자산 목표(예: 10억)와 월 배당 목표(예: 300만)를 함께 또는 따로 설정합니다. 진행률 게이지 + "현재 페이스로 X년 후 도달 예상"이 즉시 계산됩니다 — 자산은 7%/년, 배당은 5%/년 복리 가정. Set wealth goal (e.g., $1M) and monthly dividend goal (e.g., $3K) independently or together. Progress + "reachable in X years" computed live — 7%/yr assumed for wealth, 5%/yr for dividends.
- 편집 모달에서 각 목표를 체크박스로 활성화/비활성화. KRW/USD 통화 선택 가능Edit modal toggles each goal on/off via checkbox. KRW/USD currency selectable
- 구버전 단일 목표 데이터는 자동 마이그레이션됨Legacy single-goal data is migrated automatically
매수 결정을 캘린더에 남기고 회고하기Log and review your buy decisions on a calendar
연간 12개월 캘린더가 한 화면에 표시됩니다. 매수 기록이 있는 날은 점(●)과 배경 틴트로 강조되고, 클릭하면 그 날의 종목 상세가 하단에 펼쳐집니다. 빈 날짜에 "+ 이 날 매수 기록"을 누르면 그 날짜가 자동 입력된 포지션 추가 모달이 열립니다. A 12-month calendar fills the page. Days with purchases get a dot + tint; click any day to see records below. On a blank day, "+ Log purchase" opens the Add modal with the date pre-filled.
- 연도 ◀▶ 네비 + 오늘 버튼으로 현재 연도/날짜로 즉시 복귀◀▶ year nav + Today button to jump back instantly
- 날짜 클릭 → 그 날 매수 기록 카드 노출. 메모 없는 항목은 클릭으로 메모 추가 가능Click a day → records list. Click a record without note to add one
- 날짜 미상 메모는 별도 섹션에 분리 표시 (구 데이터 호환)Notes without dates appear in a separate "no date" section (legacy compat)
보유 종목 표The holdings table
기본 6개 핵심 컬럼 (종목 / 계좌 / 수량 / 매입가 / 현재가 / 평가액 / 손익)만 표시됩니다. 추가 컬럼은 ⚙ COLUMNS 토글로 켜고 끌 수 있습니다. Default to 6 core columns (Stock / Account / Shares / Buy / Current / Value / Gain). Toggle extra columns via the ⚙ COLUMNS button.
- Quick Add: 우측 패널에서 ticker · 수량 · 매입가 · 계좌만 입력하면 즉시 추가Quick Add: enter ticker / shares / buy price / account on the right panel
- + Add Position (토픽바 우측): 더 자세한 항목 (배당 주기, 지급월, 메모, lots)을 모달에서 입력+ Add Position (top right): full modal with dividend frequency, payout months, notes, tax lots
- cell을 더블클릭하면 인라인 편집됩니다 (수량/가격/배당)Double-click a cell to inline-edit shares / price / div yield
30년 자산 성장 예측30-year wealth forecast
배당 성장률, 가격 성장률, 배당 재투자(DRIP) 옵션을 슬라이더로 조정하면 곡선이 즉시 갱신됩니다. 10/20/30년 카드는 마일스톤 한눈 확인용, 아래 표는 1년 단위 상세 (마일스톤 행 강조). Adjust the three sliders (dividend growth, price growth, reinvest) and the curve updates live. 10/20/30-year cards summarise milestones, the table below shows year-by-year detail with highlighted milestone rows.
세후 수익 · 분산 · 환율 종합 리포트Tax · diversification · FX comprehensive report
① 현황 요약 → ② 종목별 분석 (컬럼 클릭으로 정렬) → ③ 세후 수익 (미국 22% 배당 + 한국 양도세) → ④ 섹터/지역 분산 (행 hover 시 종목 팝업) → ⑤ 환율 리스크 시나리오 — 5개 섹션을 순서대로 읽어 내려가는 한 장짜리 리포트입니다. ① Summary → ② Per-stock (click columns to sort) → ③ After-tax (US 22% div + KR cap-gain) → ④ Sector/Region (hover for holdings) → ⑤ FX risk scenarios — a single-page report you read top-down.
한 종목 정확히 추가하기Adding a single position precisely
토픽바 우측 + Add Position 버튼으로 모달이 열립니다. ticker 자동완성, 수량·평균 매입가·계좌 선택은 필수, 그 외 (배당주기·지급월·메모·tax lots)는 옵션입니다. Click the + Add Position button in the top right. Ticker autocomplete, shares / avg buy / account are required; dividend cadence, payout months, notes, lots are optional.
🇰🇷 한글 + 초성 검색Korean + initial-consonant search
티커 입력란에 한글 종목명 또는 초성만 입력해도 즉시 매칭됩니다. Type the Korean name or just initial consonants in the ticker box — instant match.
- 한글 부분 일치: "하이닉스" → SK하이닉스Korean substring: "하이닉스" → SK하이닉스
- 초성 매칭: 자음만 입력 시 (예: ㅅㅅㅈㅈ → 삼성전자)Chosung matching: only consonants (e.g., ㅅㅅㅈㅈ → 삼성전자)
- 티커 prefix: "AAPL", "005930" 등 영문/숫자 검색 그대로 동작Ticker prefix: "AAPL", "005930" still work the same
- 선택 시 종목명·통화·섹터·기본 배당률 자동 채움Selection auto-fills name, currency, sector, default yield
무료로 실시간 가격 받기Live prices, free
이 앱은 가격 데이터를 두 가지 방식으로 받습니다 — 미국 주식은 사용자가 직접 발급한 무료 API 키로, 한국 주식은 키 없이 야후/네이버에서 마지막 거래일 종가 기준으로 가져옵니다. 모든 외부 호출은 자체 Cloudflare Worker 프록시를 거치고, 한국 주식은 D1 데이터베이스에 일별 캐시되어 호출 한도를 사실상 받지 않습니다. The app fetches prices in two ways — US stocks via free API keys you register, Korean stocks via Yahoo/Naver (no key, last-close price). All upstream calls go through our Cloudflare Worker proxy. Korean quotes are cached in D1 once per trading day, so rate limits effectively don't apply.
🇺🇸 미국 주식 — 무료 API 키 발급 후 등록US stocks — register free API keys
아래 3개 무료 서비스 중 하나 이상 가입해 키를 받아, 사이드바 ⚙ Settings 모달에 붙여넣으세요. 모두 등록하면 한 곳이 한도에 걸려도 자동으로 다음 provider로 폴백됩니다. Sign up for at least one of the three free services below, paste the key into the ⚙ Settings modal. Register all three for automatic fallback when one hits its limit.
| Provider | 무료 한도 | Free limit | 가입 링크 | Sign up | 특징 | Notes |
|---|---|---|---|---|---|---|
| Finnhub | 분당 60회60/min | finnhub.io/register | 가장 빠름 · 미국 주식 실시간(15분 지연)Fastest · US realtime (15-min delay) | |||
| Twelve Data | 일 800회800/day | twelvedata.com/register | 배치 조회 지원 (한 번에 8개)Batch quotes (8 at a time) | |||
| Alpha Vantage | 일 25회25/day | alphavantage.co | 백업용 (한도가 작아 1회 5종목만)Fallback only (small limit, 5 symbols/run) |
- 가입 절차: 위 링크 → 이메일/비번으로 회원가입 → 대시보드에서 API key 복사 → 본 앱 ⚙ Settings 에 붙여넣고 저장Steps: open link → sign up with email + password → copy API key from dashboard → paste into our ⚙ Settings and save
- 키별 호출 한도는 사용자 본인 키 단위로 적용되므로, 사용자마다 별도 한도를 가집니다 (사실상 분산됨)Rate limits are enforced per key, so each user has independent quota (effectively distributed)
- Worker 프록시는 같은 심볼 응답을 60초 Edge 캐시로 묶어, 동일 종목 중복 호출은 한도에서 제외됩니다The Worker proxy edge-caches identical symbol responses for 60s, so repeats don't count against your limit
🇰🇷 한국 주식 — 키 없이, 마지막 거래일 종가Korean stocks — keyless, last-close
한국 주식(.KS/.KQ)은 위 3개 무료 API가 지원하지 않습니다. 본 앱은 가입·키 등록 불필요로 다음 두 단계 자동 폴백을 사용합니다.
Korean stocks (.KS/.KQ) are not covered by the three free APIs above. We use a keyless two-tier fallback automatically.
- 1차: Yahoo Finance 비공식 chart endpoint로 종가 조회1st: Yahoo Finance unofficial chart endpoint for the closing price
- 2차: 네이버 금융 (polling.finance.naver.com) — Yahoo 실패 시 자동 폴백2nd: Naver Finance (polling.finance.naver.com) — auto-fallback when Yahoo fails
- 둘 다 실패 시 마지막으로 받아온 캐시 가격을 그대로 표시 (가용성 우선)If both fail, the last cached price is returned (availability first)
- 장중(09:00–15:30 KST)에는 전일 종가가 표시될 수 있음 — 마감 + 30분 후 새 종가로 갱신During market hours (09:00–15:30 KST) you'll see yesterday's close; updates 30 min after close
- 주말·공휴일에는 직전 영업일 종가가 그대로 유지됨Weekends/holidays keep the most-recent business-day close
- 한국 주식 평가액은 USD/KRW 환율(아래 ⚙ Settings에서 자동 갱신)로 USD 환산 표시KRW-priced positions are converted using the USD/KRW rate (auto-refreshed daily)
갱신 · 새로고침 · 자동 갱신Refresh · auto-refresh · persistence
- 토픽바 ↻ Refresh 버튼: 즉시 모든 종목 재조회Top-bar ↻ Refresh button: re-fetches all symbols immediately
- 토픽바 Auto select: 1·5·15·30분 주기 자동 갱신Top-bar Auto select: 1/5/15/30-min auto-refresh
- 받아온 가격과 마지막 갱신 시각은
localStorage에 저장 — 새로고침 후에도 마지막 평가금액이 유지됩니다Fetched prices and last-update time are saved tolocalStorage— reloads keep the last total value
localStorage에만 저장되며, 가격 조회 시 X-API-Key 헤더로만 Worker 프록시에 전달됩니다. URL이나 Referer에 노출되지 않으며, 우리 서버는 키를 영속화하지 않습니다.
API keys live in your browser localStorage and are forwarded only as an X-API-Key header at quote time. They never appear in URLs or referers, and our server does not persist them.
모바일에서도 그대로Same app on mobile
모든 핵심 화면이 1열 단일 컬럼으로 적층되며, hero 숫자와 액션은 그대로 큼지막하게 보입니다. 사이드바는 햄버거 토글 (≤640px)로 접근합니다. All key screens stack as a single column on mobile; the hero number and action remain prominent. The sidebar is reachable via the hamburger toggle (≤640px).
실수로 삭제해도 되돌릴 수 있게Undo accidental deletes
포지션을 잘못 지우거나 전체 데이터를 비우는 실수를 해도, 모든 삭제 동작은 자동으로 휴지통에 보관됩니다. 사이드바 ♻ 휴지통 버튼을 눌러 언제든 복원하거나 영구 삭제할 수 있습니다. Every delete action — single positions or the whole dataset — is automatically moved to Trash. Click the sidebar ♻ Trash button to restore or permanently delete any item.
어떤 삭제가 휴지통으로 가나요?What goes to Trash?
| 삭제 유형Action | 저장되는 정보What is saved | 복원 효과Restore effect |
|---|---|---|
| 개별 포지션 삭제Single position delete | 해당 포지션 전체 (티커·수량·매입가·계좌·메모·tax lots)Full position object (ticker · shares · buy · account · notes · lots) | 포지션 목록에 즉시 추가됨 (새로고침 없음)Re-added to your positions instantly (no reload) |
| 전체 데이터 삭제 (사이드바 🗑️)Delete All (sidebar 🗑️) | pfm3_* 모든 키 (포지션 · 계좌 · 스냅샷 · 목표 비중 · 가격 · 환율 · 필터 · API 키 등)All pfm3_* keys (positions · accounts · snapshots · targets · prices · FX · filters · API keys) |
이전 상태로 완전 복원 후 페이지 자동 새로고침Full state restored, page reloads automatically |
5초 Undo 토스트와의 차이vs. 5-second Undo toast
- 5초 Undo: 포지션 삭제 직후 화면 하단에 잠깐 뜨는 "되돌리기" 버튼 — 5초 후 사라짐5-sec Undo: a small "undo" button at the bottom right after deleting — disappears after 5 seconds
- 휴지통: 5초가 지나도, 다음 세션에도, 새로고침 후에도 그대로 남아 영구 보관 (최대 100개)Trash: persists across sessions and reloads, kept permanently up to 100 items
- 두 기능 모두 동시에 작동 — Undo 토스트로 복원하면 휴지통에서도 자동 제거됩니다Both work in parallel — restoring via Undo toast also removes the entry from Trash
휴지통 모달 사용법Using the Trash modal
- ♻ 휴지통Trash 버튼 클릭 → 항목 리스트가 최근순으로 표시button → items listed newest-first
- 각 항목의 복원 버튼 → 확인 후 즉시 복원 (전체 삭제 항목은 새로고침 동반)Per-item Restore → confirm and restore (Delete-all items reload the page)
- 각 항목의 완전 삭제 버튼 → 확인 후 영구 제거 (되돌릴 수 없음)Per-item Delete permanently → confirm and remove forever (irreversible)
- 하단 휴지통 비우기 → 모든 항목을 한꺼번에 영구 삭제Bottom Empty trash → permanently remove all items at once
localStorage에만 저장됩니다. 브라우저 데이터를 초기화하거나 다른 기기로 옮기면 휴지통도 함께 사라집니다. 중요한 변경 직전에는 ⚙ Settings → JSON 백업으로 별도 export를 권장합니다.
Trash lives in this browser's localStorage. Clearing browser data or switching devices wipes Trash too. Before major changes, take a JSON backup via ⚙ Settings → Export.
모든 데이터는 당신의 브라우저 안에All data lives in your browser
- 포트폴리오·계좌·메모는
localStorage에만 저장됩니다 — 서버로 전송되지 않습니다Portfolio · accounts · notes live inlocalStorageonly — never sent to a server - 비밀번호는 PBKDF2-SHA256 (10만 회) 해시 후 저장; 원본은 어디에도 남지 않습니다Password is stored as a PBKDF2-SHA256 hash (100k iterations); original never persisted
- API 키는 가격 조회 시에만
X-API-Key헤더로 Worker 프록시에 전달되어 외부 API로 forward되며, 우리 서버는 키를 저장하지 않습니다API keys are forwarded only as anX-API-Keyheader to the Worker proxy at quote time; our server never persists them - 전체 응답에 CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy 등 5종 보안 헤더가 적용됩니다Every response carries 5 security headers (CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy)
- 매일 자동으로 7개 스냅샷 백업이
localStorage에 보관됩니다 — Settings → 자동 백업 메뉴에서 시점별 복원 가능7 daily auto-backups are kept locally — restore any of them via Settings → Auto Backup