Features¶
Main table¶
One row per holding. Click a column header to sort, click a row for full details.
Each row shows the symbol and name, current price and day change, the 52-week range with a marker for where the price sits, core focus (fund category, or sector/industry for stocks), payout frequency (inferred from the payment history), expense ratio, trailing and forward yield, 12-month price and total return, distribution type, top holdings, next ex-dividend date, and your position size and income.
Portfolio tiles¶
Market value, annual and monthly income, portfolio yield, yield on cost, unrealized gain, weighted expense ratio and the next ex-dividend date.
Income by month and the ex-dividend calendar¶
Projected income by month, plus a calendar of upcoming ex-dividend and pay dates. Click any day to see every symbol on it, with amounts.
Yahoo announces at most one pay date per holding, so the calendar estimates the rest as ex-date plus that holding's usual gap (shown as dashed green chips).
Detail view¶
Click any row for a 1-year price chart, dividends per share by year, dividend growth (1-year and 5-year CAGR), years of consecutive increases, payout variability, recent payments, the full top 10 holdings, sector and asset-class mix, fund description, 3- and 5-year annualized total return, beta and AUM.
Warning flags¶
The dashboard calls out:
- very high yield
- a recent dividend cut
- price falling while yield is high (possible NAV decay)
- expense ratio over 0.75%
- erratic payouts
Flagging holdings to watch¶
Tick Flag in Edit holdings for anything you're not adding to or are watching cautiously. Its symbol is highlighted in amber everywhere: the main table, the ex-dividend list and calendar, the overlap panels and the detail view. The All / Flagged / Not flagged switch filters the table.
Tabs¶
Strategy & overlap¶
Each holding's underlying exposure (Nasdaq-100, S&P 500 and so on) and options strategy (selling calls, selling puts, ELNs, partial overwrite, index options); overlap between holdings based on their top 10 holdings; exposure groups; a look-through of your biggest underlying stocks across all funds; and a plain-English glossary of the strategies.
Holdings & performance¶
Quantity, average cost, current price, total cost, market value, unrealized gain or loss ($ and %), portfolio weight, income and yield on cost, with totals.
Monthly projections¶
Projected income for each holding over the next 12 months, with monthly totals and a chart. Monthly and weekly payers count in every month; quarterly, semi-annual and annual payers repeat the month of their latest payment. Annual projection by holding splits the year's income into a stacked bar and a list, in dollars or percent.
Symbol comparison¶
Compare up to 10 tickers side by side, held or not, over 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y, 10Y or Max, as total return (dividends reinvested) or price only. The Key stats table covers returns, the part that came from dividends, annualized return, yield, volatility, max drawdown and the period's low and high.
Research¶
Look up any single symbol: price, headline numbers, the same chart and stats as Symbol comparison, and everything from the detail view. + Compare sends it to the comparison tab.
Using it on more than one computer¶
Put holdings.csv in a OneDrive, Dropbox, iCloud Drive or Google Drive
folder, then create holdings_path.txt next to server.py on each computer
containing that path:
Both computers then read and save the same file. You can also use
--holdings PATH or the DIVIDEND_HOLDINGS environment variable.
- On the computer with the latest holdings: Export CSV → Holdings file.
- Move the file to the other computer.
- There: Import CSV, check the preview, and choose Replace or Merge.
Before an import saves, the current file is copied to backups/ (the newest
20 are kept).
Other touches¶
- Auto / Light / Dark theme switch, remembered per browser.
- Export CSV of the dashboard table, the filtered rows, or your holdings file.
- Data cached for 15 minutes; Refresh prices forces a new pull, and it falls back to cached data if Yahoo is unreachable.