1. Overview
Harvest Ledger Starter is a single HTML file that runs entirely in your browser. All data is stored locally using browser localStorage — no account, server, or internet connection required for core features.
Key Features
- Multi-portfolio support — manage taxable, IRA, Roth, 401k, and HSA accounts separately
- Portfolio tracking with cost basis, market value, gain/loss, yield on cost, and income
- Dividend income logging, reinvestment tracking, and projection
- Ex-dividend event calendar with bulk import for 11 built-in ticker schedules
- Forward Dividend Calendar — month-view grid of upcoming ex-div and pay dates
- Automatic dividend cut and raise detection (⚠️ Cuts tab)
- 12-month income planning calendar with gap analysis and goal tracking
- Scenario Planner — project side-by-side outcomes for up to 3 stocks with DRIP compounding
- Rebalancing Assistant — sector and per-holding drift analysis with buy/sell recommendations
- Watchlist with composite scoring, safety ratings, dividend type classification, and compare tool
- Options / Wheel Tracker for covered calls, puts, and premium income tracking
- Cash management ledger for tracking uninvested capital
- Tax reports & estimates (Tax Year Summary, ROC basis tracking) — available in Plus & Pro
- Historical dividend growth chart per stock from ex-div event history
- Dark mode, print/PDF snapshot, and full JSON export/import backup
How to Open
Double-click HarvestLedger_Starter.html to open it in your browser. No installation required.
| Detail | Value |
| File type | Single-file HTML (self-contained) |
| Data storage | Browser localStorage — persists across sessions in the same browser |
| Internet required | Only for live price refresh via Polygon.io API |
| Dark mode | Toggle via 🌙/☀️ button in the header |
| Mobile | Responsive layout; tabs scroll horizontally, tables have sticky first column |
2. Tab Reference
The dashboard has 12 tabs accessible from the scrollable tab bar at the top. On mobile, swipe the tab bar horizontally.
| Tab | Purpose |
| 🏠 Overview | Portfolio KPIs, allocation charts, sector breakdown, upcoming dividends for the current month |
| 🌐 All Portfolios | Combined view across all your portfolios with per-account breakdown |
| 📊 Portfolio | Per-holding table: cost basis, market value, gain/loss, yield on cost, annual income |
| 💵 Dividends | Log dividends, Forward Calendar, Tax Year Summary, growth chart, and ex-div events |
| 📅 Income | 12-month income calendar and gap analysis |
| 🛠️ Tools | Paycheck Simulator, DRIP Compounding Projector, per-stock DRIP Projector, Scenario Planner |
| 🔍 Watchlist | Monitor stocks with scoring, safety ratings, dividend type, and side-by-side compare |
| 🧮 Buy Planner | Investment calculator: income from shares, shares for target income, required yield |
| 📋 Log | Full audit log of all add/edit/delete transactions |
| 📊 Metrics | KPI dashboard, income trends, Rebalancing Assistant, dividend growth rate table |
| ⚠️ Cuts | Automatic dividend cut and raise tracker derived from ex-div event history |
| 🎯 Options | Options trade log and Wheel Strategy tracker with premium income summary |
| 💰 Cash | Cash and uninvested capital ledger with running balance |
3. Portfolio & Multi-Portfolio
Multiple Portfolios
The dashboard supports multiple portfolios — one per brokerage account or account type. Use the portfolio switcher in the header (the dropdown next to the portfolio name) to switch between them.
- Click + New Portfolio to create a new account. Give it a name and select an account type.
- Account types: Taxable, Traditional IRA, Roth IRA, 401k, HSA, Other.
- Each portfolio maintains its own holdings, dividends, ex-div events, watchlist, and options.
- The 🌐 All Portfolios tab shows a combined view across all accounts.
The Tax Year Summary is account-type aware — tax-advantaged accounts (IRA, Roth, 401k, HSA) are flagged as "not currently taxable" and reported separately.
Adding Holdings
Click + Add Holding on the Portfolio tab. Required: Symbol, Shares, Cost Basis, and Purchase Date. Recommended: Sector, Company name.
To add additional lots of the same ticker (e.g. a new purchase), add another row with the same symbol. They are combined in the performance view but tracked separately for lot-level cost basis and ex-div eligibility.
Lot dates matter. The ex-div share count is calculated from lots purchased strictly before each ex-div date. If you buy more shares before the ex-div cutoff, add them as a new lot with the correct purchase date — the system will automatically include them in projected income for that event.
Updating Prices
Polygon.io API (Automatic)
- Click Refresh Prices in the header
- Enter your free Polygon.io API key — it is saved locally and remembered
- Click Fetch Live Prices to pull current prices for all holdings automatically
Manual Paste
- Click Refresh Prices → expand the Manual paste fallback section
- Paste prices as JSON:
{"SCHD": 28.42, "O": 53.10, "BLOX": 15.22}
- Click Apply
Portfolio Tab Columns
| Column | Description |
| Shares | Total shares across all lots for this ticker |
| Avg Cost | Average cost per share (total cost ÷ shares) |
| Market Price | Last price entered or fetched |
| Market Value | Shares × Market Price |
| Gain/Loss $ | Market Value minus total cost basis |
| Gain/Loss % | Gain/Loss ÷ Cost Basis |
| Yield on Cost | Annual dividend ÷ Avg Cost (from Watchlist) |
| Current Yield | Annual dividend ÷ Market Price |
| Annual Income | Projected annual dividend income for this holding |
4. Dividend Logging
Logging Received Dividends
Use the Log Dividend form on the Dividends tab. Fields: Symbol, Date, Amount/Share, Shares, Type (Cash or DRIP), and optional Notes.
Reinvestment Log
The + Log Reinvestment shortcut records when dividend cash is used to buy additional shares. It adds a portfolio lot and links it to a dividend event in one step, keeping your cost basis accurate.
Dividend Charts
- Income by Stock — bar chart of total dividends received per holding for the selected year
- Cash vs DRIP by Stock — stacked bar showing cash vs reinvested dividends
- Monthly Income Trend — 12-month bar chart of total dividends received
Dividend Growth Rate
The Dividend Growth Rate card on the Metrics tab shows year-over-year income change per stock from your logged dividends. Switch to Chart view to see a historical annual dividend-per-share chart derived from your Ex-Div event history, with CAGR-based projection lines.
5. Ex-Dividend Events & Forward Calendar
Ex-Div Events tracks upcoming and past ex-dividend dates. This data drives the Upcoming Dividends card, the Forward Calendar, income projections, and the ⚠️ Cuts tracker.
Manual Entry
Use the Add Ex-Div Event form at the bottom of the Dividends tab. Required: Symbol and Ex-Div Date. Recommended: Pay Date, Div/Share amount.
Shares Held is auto-calculated. The dashboard computes shares eligible for each dividend by looking at your portfolio lots purchased before the ex-div date. A ⚡ badge in the Shares column confirms auto-calculation is active. You do not need to enter shares manually — just keep your lot purchase dates accurate.
Bulk Import
Click Bulk Import to paste an entire annual schedule at once. If the selected ticker has a built-in schedule, it auto-loads into the paste area. Paste format (tab-separated):
| Col 1 | Col 2 | Col 3 | Col 4 (optional) |
| Declaration Date | Ex-Div Date | Pay Date | Amount ($) |
| MM/DD/YYYY | MM/DD/YYYY | MM/DD/YYYY | 0.5000 |
If the Amount column is provided and non-zero, it is locked and will not be overwritten by Polygon.io price fetches. Leave Amount blank or 0 for future dates where the amount is not yet announced.
Built-in Schedules
| Ticker | Frequency | Coverage | Notes |
| BLOX | Weekly | Jun 2026 – Jan 2027 | Amounts TBD |
| GPIQ | Monthly | Dec 2023 – Jun 2026 | All amounts known |
| IDVO | Monthly | Sep 2022 – Dec 2026 | Jun–Dec 2026 TBD |
| JEPI | Monthly | Jul 2025 – Jun 2026 | All amounts known |
| JEPQ | Monthly | Jul 2025 – Jun 2026 | All amounts known |
| O | Monthly | Oct 1994 – Jun 2026 | Full history, all amounts |
| QQQI | Monthly | Feb 2024 – Dec 2026 | Jul–Dec 2026 TBD |
| SCHD | Quarterly | Jun 2016 – Mar 2026 | All amounts known |
| SPYI | Monthly | Sep 2022 – Dec 2026 | Jul–Dec 2026 TBD |
| XBCI | Monthly | Feb 2026 – Dec 2026 | Jul–Dec 2026 TBD |
| XQQI | Monthly | Feb 2026 – Dec 2026 | Jul–Dec 2026 TBD |
Forward Dividend Calendar
The Forward Calendar card (top of the Dividends tab) shows a month-view grid of upcoming events. Color coding:
| Color | Meaning |
| Green cell | Ex-dividend date |
| Blue cell | Pay date |
| Red cell | Ex-div and pay date fall on the same day |
| Blue border | Today |
Use the ‹ / › arrows to navigate months, or click Today to return to the current month. A scrollable event list below the grid shows all events for the month with type badges.
Table Filters
- Symbol — filter to a specific ticker
- Year — defaults to current year; select All Years for full history
- Month — defaults to current month; select All Months for the full year
6. Overview Tab
KPI Strip
The top KPI strip shows portfolio value, total cost, unrealized gain, yield on cost, projected annual income, and upcoming ex-div income — all calculated live from your holdings and watchlist.
Charts
- Portfolio Allocation — pie chart by market value (falls back to cost basis if prices not set)
- Market Value by Stock — horizontal bar chart ranked by position size
- Sector Breakdown — bar chart grouped by sector (requires Sector field on holdings)
- Portfolio vs Benchmark — compare your portfolio return to a benchmark index
Upcoming Dividends
Shows ex-dividend events for the current calendar month, sorted by ex-div date. Share counts and projected income are calculated live from your portfolio lots — they update automatically whenever you add or modify holdings.
7. Income Planning
The Income Planning tab (📅 Income) houses the 12-month calendar and gap analysis. The Paycheck Simulator, DRIP Projectors, and Scenario Planner live in the 🛠️ Tools tab.
12-Month Income Calendar
Projects dividend income for each calendar month based on your portfolio holdings and the Watchlist annual dividend and frequency settings.
| Card color | Meaning |
| Green border | Income meets or exceeds monthly goal |
| Orange border | Income is below goal but greater than zero |
| Red border | No projected income this month |
| Blue outline | Current month |
Gap Analysis
Shows how far current projected income falls short of your monthly income goal, and how much additional capital (at your current average yield) would close the gap.
Paycheck Simulator
Projects portfolio growth assuming a fixed monthly contribution and reinvestment. Enter monthly contribution, years, dividend growth rate, and price growth rate — the chart shows portfolio value over time and the projected monthly income at maturity.
DRIP Projector
Models the compounding effect of reinvesting dividends for a single stock. Select a symbol from your Watchlist, set a starting share count, years, and growth assumptions — the chart shows annual income and share accumulation over time.
8. Scenario Planner — "What If?"
The Scenario Planner (bottom of the Income Planning tab) lets you compare up to 3 stocks side-by-side to answer questions like: "If I add $200/month to SCHD, BLOX, and O for 10 years, which grows fastest?"
How It Works
- Select up to 3 stocks from your Portfolio or Watchlist
- Set a starting share count for each
- Enter a monthly contribution, projection years, and annual dividend growth rate
- The planner projects: portfolio value, annual income, and monthly income at maturity
Assumptions
- Monthly contributions purchase new shares at the current price (no price appreciation)
- Dividends grow at the rate you specify, compounded annually
- Starting shares are included in all calculations
Output
Three KPI cards show final portfolio value, annual income, monthly income, and total capital invested for each stock. A dual-axis chart shows portfolio value (solid) and annual income (dashed) over time. A milestone table shows outcomes at Years 1, 3, 5, 10, 15, and 20.
9. Rebalancing Assistant
The Rebalancing Assistant (Metrics tab → bottom card) helps you identify which positions are overweight or underweight relative to your targets, and tells you exactly how many shares to buy or sell.
Modes
| Mode | Use case |
| By Sector | Groups holdings by industry/sector. Set a target allocation % per sector. Shows current %, drift, and estimated $ to deploy into each sector to rebalance. |
| By Holding | Per-symbol targets. Set a target % for each individual ticker. Shows exact share counts to buy or sell to reach the target based on current price. |
Setting Targets
Enter target percentages in the input fields next to each sector or ticker. Click 💾 Save Targets — your targets persist and are restored the next time you open the Rebalancing Assistant.
Targets do not need to sum to 100%. The assistant calculates drift relative to your current portfolio value and the targets you set.
10. Watchlist & Scoring
The Watchlist (🔍 tab) tracks stocks you are monitoring. All fields feed data to other parts of the dashboard — Income Planning, the Buy Planner, and the Scenario Planner all pull from the Watchlist.
Core Fields
| Field | Description |
| Symbol | Ticker symbol |
| Company | Name of the company or fund |
| Current Price | Latest price — updated via Refresh Prices or manually |
| Annual Dividend | Expected annual dividend per share — the primary driver of Income Planning projections |
| Div Frequency | Monthly, Quarterly, Semi-Annual, Annual, or Weekly |
| Payout Ratio % | Dividends ÷ earnings. Above 80% shows ⚠️; above 100% shows ⛔ |
| Div Growth Rate % | Historical annual dividend growth rate — used in scoring |
| Safety Rating (1–5 ★) | Your subjective assessment of dividend safety. 1–2★ triggers a low-safety warning banner. |
| Dividend Type | Qualified, Ordinary, REIT/Pass-Through, MLP Distribution, or Return of Capital — used for tax classification |
| Industry | Used for sector grouping in Rebalancing Assistant |
| Target Buy Price | Your personal buy target (optional; shown in table) |
| Thesis / Notes | Research notes visible in the table |
Composite Score
Each watchlist entry receives a 0–100 composite score based on four factors:
| Factor | Max Points | How It's Scored |
| Yield | 30 | Scales linearly up to 6% yield = full 30 pts |
| Dividend Growth Rate | 20 | Scales up to 5% annual growth = full 20 pts |
| Payout Safety | 20 | Full points below 50% payout; zero points above 100% |
| Safety Rating | 30 | 5★ = 30 pts; unknown rating defaults to 15 (neutral) |
Score badges: 80+ = Strong, 60–79 = Good, below 60 = Weak. Click ⭐ Sort by Score to rank your watchlist by composite score.
Compare Tool
Tick the checkbox on up to 4 watchlist rows, then click Compare Selected for a side-by-side panel showing price, yield, payout, safety, score, and projected income.
Alerts
A yellow banner appears at the top of the Watchlist tab if any holding has a Safety Rating of 1 or 2★, prompting review before the next ex-div date.
11. Buy Planner
Three calculation modes for planning new investments (🧮 Buy Planner tab):
| Mode | Use case |
| Income from Shares | Enter a stock, share count, and price → get projected annual and monthly income |
| Shares for Target Income | Enter a target monthly income and yield → get required shares and capital |
| Required Yield | Enter available capital and income target → find the yield needed to meet your goal |
When a stock is selected from your Watchlist, the Annual Dividend and current price auto-fill.
12. Dividend Cut Tracker (⚠️ Cuts Tab)
The Cuts tab automatically identifies dividend increases and decreases by comparing consecutive payments per ticker in your Ex-Div Events data. No manual entry is required.
How Detection Works
- All ex-div events with non-zero known amounts are grouped by ticker
- Within each ticker, events are sorted chronologically
- Each consecutive pair is compared — cut if new < prior, raise if new > prior, flat if change < 0.01%
- Future placeholder entries (amount = 0) are excluded
Summary KPIs
| KPI | Description |
| Total Cuts | Dividend reductions detected across all tickers and all time |
| Total Raises | Dividend increases detected |
| Worst Cut | Ticker with the largest single percentage decrease |
| Most Recent Cut | Ticker and date of the most recent cut as of today |
The tab shows a live badge (e.g. ⚠️ Cuts (3)) for cuts detected in the current calendar year.
Filters
- Ticker — filter to a specific stock
- Type — All Changes, Cuts Only, Raises Only, or Flat/Unchanged
- Year — defaults to current year
13. Options & Wheel Tracker
The Options tab (🎯) tracks individual options trades and organizes them by the Wheel Strategy cycle: sell a cash-secured put → get assigned → sell covered calls → repeat.
Logging a Trade
Click + Log Trade and fill in the trade details:
| Field | Description |
| Symbol | Underlying ticker |
| Type | Covered Call, Cash-Secured Put, Long Call, Long Put, or Other |
| Strike / Expiry | Strike price and expiration date |
| Contracts | Number of contracts (1 contract = 100 shares) |
| Premium | Premium received or paid per share |
| Net Credit | Total net credit/debit after commissions (auto-calculated if left blank) |
| Status | Open, Closed, Expired, Assigned, or Exercised |
Wheel Tracker View
Switch to the Wheel View to see all trades grouped by underlying symbol. Each symbol shows its current cycle status, total premium collected, and remaining days to expiry on open positions.
Income Summary
Option premium income is included in the Tax Year Summary (Section 15) and the Income Planning tab's options income strip, so it is counted alongside dividend income in your total projected income.
14. Cash Management
The Cash tab (💰) maintains a running ledger of uninvested cash across your portfolio. Use it to track money waiting to be deployed, dividends received as cash, and withdrawals.
Adding Transactions
Click + Add Transaction and select a type:
| Type | Effect |
| Deposit | Adds cash to the balance |
| Withdrawal | Removes cash from the balance |
| Dividend Received | Adds cash; links to dividend income tracking |
| Purchase | Removes cash; links to a stock buy |
| Option Premium | Adds cash from option premium income |
The running balance is displayed at the top of the tab and in the Overview KPI strip.
15. Tax Year Income Summary
The Tax Year Income Summary and dividend tax estimate live in the dedicated 🧾 Taxes tab of the Plus and Pro editions — a 1099-style breakdown of qualified vs ordinary income, return-of-capital basis tracking, and estimated tax owed. Upgrade to unlock them.
Income Classification
Each dividend is classified using the Dividend Type set on the Watchlist entry for that ticker:
| Dividend Type | Tax Line |
| Qualified | Qualified Dividends — typically taxed at long-term capital gains rates |
| Ordinary / Non-Qualified | Ordinary Dividends — taxed at ordinary income rates |
| REIT / Pass-Through | REIT/MLP — may qualify for 20% QBI deduction (Section 199A) |
| MLP Distribution | Included in REIT/MLP line |
| Return of Capital | ROC — not immediately taxable; reduces cost basis |
| DRIP reinvestments | Reported separately — taxable when shares are eventually sold |
Option premiums received during the year are shown as a separate line item.
Tax-Advantaged Accounts
If your active portfolio is a Traditional IRA, Roth IRA, 401k, or HSA, the summary displays a green "Not currently taxable" banner — income in these accounts is not reported on current-year taxes.
Export
Click ⬇ Export CSV to download a three-section CSV: dividend income by stock, option premiums, and summary totals — suitable for sharing with a tax preparer.
16. Data Management
Export
Click Export in the header to download portfolio positions, lot detail, dividend history, or a full JSON backup of all data across all portfolios.
Import
Click Import and select a previously exported JSON file to restore a backup. This replaces your current data.
Local Storage
Each portfolio is stored in its own localStorage key (dp_pf_{id}). Portfolio metadata (names, account types) is stored under dp_pf_meta. Data persists across browser sessions unless you clear browser storage.
Important: Clearing browser history or storage will permanently delete all dashboard data. Export a full JSON backup regularly and keep it somewhere safe.
Data Structure
| Key | Stores | Description |
dp_pf_meta | Portfolio list | Array of {id, name, accountType} for all portfolios |
dp_pf_{id} | Portfolio data | Full state blob per portfolio: holdings, watchlist, dividends, ex-div events, goals, options, cash |
dp_pf_active | Active portfolio | ID of the currently selected portfolio |
17. Tips & Best Practices
Getting Started
- Create a portfolio for each brokerage account via the portfolio switcher in the header
- Add holdings on the Portfolio tab — include lot dates for accurate ex-div share counting
- Add each ticker to the Watchlist with Annual Dividend, Frequency, Safety Rating, and Dividend Type — these fields drive Income Planning, Tax Summary, and Scoring
- Use Bulk Import on the Dividends tab to load ex-div schedules for your tickers (11 built-in; see Section 5)
- Set monthly income goals in the Income tab so calendar cards show progress toward your target
Keeping Data Current
- When you buy more shares before an ex-div cutoff, add them as a new lot with the correct purchase date — share counts in ex-div projections update automatically
- Refresh prices regularly via Polygon.io or manual JSON paste
- Log dividends as you receive them to keep income charts and the Tax Summary accurate
- After a dividend change is announced, update the ex-div event — the ⚠️ Cuts tab will automatically detect the change
Watchlist Best Practices
- Set Dividend Type on every watchlist entry — the Tax Year Summary uses it to classify income
- Assign a Safety Rating (1–5★) to each holding — 1–2★ triggers a warning banner before the next ex-div date
- Use the Payout Ratio field — anything above 80% shows a caution badge; above 100% shows a danger badge
- Use ⭐ Sort by Score to quickly rank holdings and identify which to prioritize for new capital
Backup
- Export a Full JSON Backup regularly (header → Export) and save it outside the browser
- The HTML file does not store your data — only the browser's localStorage does
- After major additions (new lots, bulk ex-div import, options trades), export immediately
Dark Mode
Click 🌙 / ☀️ in the header to toggle dark mode. Your preference is saved automatically and restored on next open.