Start your dividend journal
Add your first investment, or bring your existing records with a JSON backup.
Your investment journal
Your portfolio, dividends and income goals. Five markets, one base currency, saved in your browser.
Saved only in this browser. Back up before clearing site data or moving to another device.
Add your first investment, or bring your existing records with a JSON backup.
Portfolio value
—Annual estimates use your entered annual dividend per share. Net estimates apply the entered tax rate, before other fees.
Based on your entered annual dividend estimates. Update the monthly target in Settings.
Expected payments dated today or earlier. Open Dividends to review.
Select a bar for exact amounts. On small screens, swipe the chart horizontally.
Annual includes recorded received payments and upcoming expected payments in the selected year. YTD includes only received payments through today. Next 12 months shows expected payments. Recorded settlement FX takes priority; otherwise reference FX is used.
| Month | Received | Expected | Net amount |
|---|
Uses your selected market and base currency. This month selector is independent of the annual chart above.
Plan next month’s cashflow and emergency fundRefresh reference prices above or enter them manually. Each holding shows its price date. Open a card to edit the price or annual dividend estimate.
Existing lots are opening balances. Add only trades after those balances, otherwise the same purchase may be counted twice. The opening date is a cut-off, not a reconstructed trade history.
Buys include fees in weighted average cost. Sells reduce positions and retain realized gains. For one stock on one day, either record times for every trade or leave all times blank and enter trades in order. Equal times use saved order. Short sales and corporate actions are not supported.
Realized gains use weighted average cost, including buy and sell fees. Settlement-currency gains appear only when both purchase costs and sale proceeds have recorded FX for that currency. “—” means insufficient history. Portfolio valuation still uses current reference FX.
| Trade date | Ticker / stock code | Buy / sell | Shares | Price per share | Total fees (stock currency) | Realized gain / loss | Shares after trade | Recorded settlement | Actions |
|---|
Enter the shares and average cost held when you start this journal. Include purchase fees in the average cost. For later buys and sells, use Record buy / sell.
| Ticker / stock code | Market | Name (optional) | Opening balance date (optional) | Shares | Cost per share | Actions |
|---|
Choose a filled-trades CSV, then check each column. Moomoo export layouts vary; column suggestions are a starting point, not verified compatibility with every export. Only stock/ETF buys and sells are supported. Files are processed locally.
Use a nickname such as Moomoo MY, not your account number. A deal ID identifies one fill; do not map an order ID to it.
| File row | Ticker / stock code | Trade date | Buy / sell | Shares | Trade price | Total fees (stock currency) | Payment status |
|---|
Optionally enter the broker’s position after these trades. Any difference blocks import until corrected. A matching balance does not verify costs or fees. Without a deal ID, identical date/time, stock, side, quantity, price and fee are skipped as possible duplicates; review genuine repeated fills manually.
| Ticker / stock code | Before import | After import | Broker shares (optional check) | Difference |
|---|
Received payments grouped by payment month. Original-currency amounts stay unchanged; base-currency totals use recorded settlement FX where available, otherwise reference rates.
Enter the shares entitled to this payment, not necessarily today’s holdings. Tax is a percentage; fees are in the market currency. Expected payments are entered manually and must be marked received after you verify the actual amount.
Check the actual receipt date, amount, deductions and any settlement FX below. The date starts at today. Nothing changes until you save; this updates the original expected record.
| Payment date | Ticker / stock code | Market | Payment status | Gross amount | Net amount | Actions |
|---|
Browse the dividends you recorded. Expected dates are entered manually, not fetched forecasts. This calendar follows the market filter and has its own month selector.
Monthly amounts use the selected base currency; — means a needed FX rate is missing. Received totals exclude future-dated records. Actual settlement is used when recorded; other conversions use reference FX. Due counts include today and earlier expected payments, across all months.
| Payment date | Ticker / stock code | Market | Net amount | Payment status | Actions |
|---|
Yahoo Finance reference prices may be delayed. Automatic refresh is optional and requires a working connection. Only stock codes or your search words are sent; shares, costs and dividend records stay in your browser. Prices refresh without changing dividend estimates.
Yahoo FinanceThe default service is included in the upload package and needs PHP 8.1+ with cURL. Use a service path on this website. Local file previews cannot connect; manual entry remains available.
JSON restores opening balances, trades, settlement rates, dividends, prices and preferences. Earlier web and Android backups remain supported. CSV transaction import is under Holdings; CSV reports do not replace a full JSON backup.
Add current holdings, then record each payment from your statements. For example, 1,000 shares receiving 0.20 per share gives 200 gross. At 10% withholding and a fee of 2, net income is 178 in that market’s currency. These are fictional inputs, not current stock data or tax advice.
Five markets use MYR, USD, HKD, SGD and CNY. Choose one base currency. Current portfolio values use reference FX. Recorded settlement FX preserves received dividend amounts in its settlement currency; other bases use reference conversion. Missing rates produce an unavailable total, not a partial sum.
English and Chinese pages share this journal on the same website origin. Different devices, browser profiles, private sessions, www/non-www hosts and local file previews may have separate storage. This is not an encrypted vault or cloud backup. The tool makes no network request for your records; emailed attachments and downloaded files are your responsibility. Avoid using shared devices for private records.
Review per-market counts before restoring. Keep the original Android backup. Imported annual estimates use saved price × entered yield percentage and remain editable. To repair an earlier web import, choose Fill missing prices & estimates only; existing records and values are preserved.
Net dividends = shares × dividend per share × (1 − tax / 100) − fees. Buys add price × shares + fees to cost; sells remove the weighted average cost of sold shares. Realized gain = sale proceeds − selling fees − removed cost. Existing lots are opening balances, not reconstructed trades. These records are not tax statements or investment advice.
Suppose a fictional holding has 100 shares and pays MYR 0.20 per share. Gross dividends are MYR 20.00. With a hypothetical 10% withholding and MYR 1.00 fee, net receipts are MYR 17.00: 100 × 0.20 − 2.00 − 1.00. The tax and fee are examples, not a country’s tax rule.
Expected dividends remain unconfirmed until you check the receipt. Enter the actual payment date and net amount from your statement. This example is separate from your private journal and does not create any records.
Start with holdings and transactions, then add paid dividends separately from expected dividends. The base currency provides one reporting unit; the original market currency still matters. Import previews and backups help you inspect data before replacing a journal.
A purchase cost does not provide a current share price or an annual dividend forecast. Missing prices, FX rates or dividend assumptions can leave a summary incomplete. Fill or refresh the relevant inputs and inspect the price/rate dates; do not replace a missing value with zero just to make every card display a total.
Compare holdings and cash distributions with the broker statement, check pending versus received dividends, then export a dated backup. Annual and YTD views answer different questions; neither turns expected payments into received cash. Data stays in the browser journal, so deleting browser storage can erase it.