User guide · 6 of 9
Investments
The Investments section tracks your brokerage activity — separate from spending, with its own ledger and portfolio view. Start by creating a Brokerage account in Accounts.
The portfolio page (Investments)
- Portfolio value (SGD) — your open positions plus cash, valued at the latest cached prices and converted to SGD with cached FX rates.
- Unrealized P&L (SGD) — current value vs your average cost.
- Realized P&L and Dividends & interest — per currency, over the selected range.
- Portfolio value chart — your value over time for the selected range.
- Holdings — each open position: quantity, average cost, last price, value in its native currency and in SGD, and unrealized P&L.
- Cash — derived per broker and currency from your deposits, withdrawals, trades, fees, and dividends. Cash is always computed from the ledger, never typed in.
With more than one brokerage account, filter pills let you view one broker at a time. The range selector works like the spending one.
Prices — how valuation works
Perfi caches daily closing prices (and FX rates like USD→SGD) and refreshes them lazily when you open the page, at most every ~12 hours. The header shows "prices as of {date}"; if a refresh fails you simply keep the stale date — the page never errors out. Refresh prices forces an update. A holding whose price isn't available shows "—" rather than a guess, and the headline notes "some holdings unpriced".
Cost basis is average cost: buys re-average (fees included), sells realize P&L at the running average.
The ledger (Investments → View ledger)
Every row is one event: Buy, Sell, Dividend, Interest, Deposit, Withdrawal, Fee. Amounts are signed cash flows — money out (buys, withdrawals, fees) is negative; money in (sells, dividends, interest, deposits) is positive.
Filter by account, type, symbol, and amount; sort by date, symbol, or
amount; per-currency net totals are shown. Export CSV downloads the
filtered ledger (perfi-trades-YYYY-MM-DD.csv).
Recording a trade manually
Add trade and pick the type — the form adapts:
- Buy / Sell: symbol, quantity, price, fees; the total cash effect is previewed live.
- Dividend / Interest: amount (symbol optional for interest).
- Deposit / Withdrawal / Fee: amount only.
- All types: brokerage account, date, currency (e.g. USD, SGD), optional notes.
Manually entered rows can be edited or deleted. Rows that came from a statement import are marked Imported and locked — the statement is their source of truth.
Importing a Webull statement
Investments → Import mirrors the bank upload flow: pick Webull,
upload up to 5 PDFs (5 MB each), review, confirm. Differences from bank
uploads:
- The whole file belongs to one brokerage account, auto-assigned when your Webull account is unambiguous, otherwise you pick.
- The preview lists every activity (trades, dividends, interest, deposits, withdrawals, fees, currency exchanges as paired withdrawal+deposit legs) with the same duplicate / possible duplicate flags, unchecked by default.
- Options trades are imported with their correct cash impact.
- Some dividend lines (e.g. tax adjustments on a sold position) can't be tied to a ticker — they import without a symbol and still count in your dividend totals.
Re-importing the same file is blocked; the uploaded PDF is deleted after a successful import, same as bank statements.