Skip to main content

Managing Investment Accounts

Investment accounts in Sure go beyond simple balance tracking. They help you understand your portfolio through holdings, trades, cost basis tracking, and investment activity labels.

Understanding Holdings

A holding represents your position in a specific security. For example, if you own 50 shares of Apple stock, that’s one holding. Each holding tracks:
  • Security - What you own (stock, ETF, mutual fund, crypto)
  • Quantity - How many shares or units you hold
  • Price - Current market price per share
  • Amount - Total current value (quantity x price)
  • Cost Basis - What you originally paid
The holdings list shows a rounded share count for readability. When you open the detail drawer for a holding, the Shares field displays the exact quantity with up to 8 decimal places, so you can see the precise position size for fractional shares or crypto holdings.

Cross-account holdings roll-up

The Investments panel on the dashboard and in reports aggregates your holdings by security across all investment accounts. If you hold the same security in multiple accounts — for example, Apple shares split between a brokerage and an IRA — Sure sums those positions into a single row rather than listing each account separately. Portfolio weight shown in the top holdings table and in the allocation view is calculated as a percentage of your total portfolio value (including cash). Both views share the same denominator, so the same security always shows the same weight in both places.

Provider-synced holdings

When a provider (such as SimpleFIN, SnapTrade, or CoinStats) imports your holdings, it delivers a snapshot of your positions on a specific day. Sure tracks which day each snapshot came from and only shows holdings from the most recent provider import day in investment views. Holdings from earlier snapshots are excluded so that stale positions do not appear alongside your current portfolio. If a provider reports prices for individual securities on different dates within the same import batch, Sure preserves those per-security price dates while still treating the entire batch as a single import day. This means your portfolio view reflects the most up-to-date information from each sync, without mixing in older snapshots. For accounts that have no provider connection, Sure shows the most recent holding per security from your manually entered or calculated data.

Chart history and inception dates

For linked investment and crypto accounts, the balance chart only displays data from the point where Sure has reliable provider history. The chart start date is determined by the earliest date your provider supplied activity or holdings data — data from before that point is excluded so the chart never shows misleading zero or estimated values. When the chart period begins exactly at the inception date (the first supported history date), Sure inserts an anchor point on that date with the correct opening balance. For balance and cash views this is the account’s recorded opening balance; for gains and holdings views the anchor starts at zero. This anchor ensures the chart line begins at the right value rather than appearing to jump up from nothing on the first real data point. The same scoping applies to the 30-day sparkline shown in the sidebar for investment and crypto account groups.

Recording Trades

Investment accounts support manual trade entry to track your buy and sell activity.

Trade Types

When recording a trade, you can specify:
  • Buy: Purchase of securities
  • Sell: Sale of securities
  • Dividend: Dividend income (recorded as a trade with qty: 0 and price: 0)
  • Interest: Interest income (recorded as a trade with qty: 0 and price: 0)

Recording Dividends and Interest

Dividends and interest are recorded as trades to maintain data integrity: Dividends:
  • Require a security selection (the security that paid the dividend)
  • Recorded with qty: 0 and price: 0
  • Amount represents the dividend payment received
Interest:
  • Security selection is optional
  • If no security is selected, Sure creates a synthetic cash security for the account
  • Recorded with qty: 0 and price: 0
  • Amount represents the interest earned
This approach ensures all investment income is properly tracked while maintaining the requirement that trades reference a security.

Transaction Fees

Trades support an optional fee field to track transaction costs:
  • Fees are included in the total amount calculation: qty × price + fee
  • Fees default to 0 if not specified
  • Useful for tracking brokerage commissions, exchange fees, or other trading costs
For example:
  • Buy 10 shares at 100/sharewitha100/share with a 5 fee = $1,005 total
  • Sell 10 shares at 110/sharewitha110/share with a 5 fee = $1,095 total (proceeds after fee)
To add a fee to a trade:
  1. Open the trade form (create or edit)
  2. Enter the fee amount in the fee field
  3. The total amount updates automatically to include the fee
Fees are automatically factored into your cost basis calculations and realized gains/losses.

Securities types

Sure supports various security types:

Asset classification

Each security can be classified by asset class, sub-class, sector, industry, and region. This classification data will power allocation breakdowns — letting you see how your portfolio is distributed across equities, fixed income, real estate, and other categories. Asset classes Asset sub-classes bond, cash, collectible, commodity, cryptocurrency, etf, loan, mutual_fund, precious_metal, private_equity, real_estate, stock Sector and industry hold the vocabulary your data provider supplies. Because different providers use different taxonomies, these fields accept any string rather than a fixed list. Region is derived from the security’s country code against a list Sure owns, so it uses a closed vocabulary. No provider writes this field directly. Classification source records who set the classification: Classification locked is a boolean flag. When true, no automated source — provider, AI, or default — can overwrite the classification. Sure sets this automatically when you change a security’s classification manually.

Cost Basis Tracking

Cost basis is the original purchase price of your investments. It’s essential for:
  • Calculating gains and losses
  • Understanding investment performance
  • Tax reporting

Cost Basis Sources

Sure tracks cost basis from three sources, in order of priority: This hierarchy ensures your manual entries always take precedence, calculated values override provider data, and provider data is used when nothing else is available.

How calculated cost basis works

Sure uses the weighted-average cost method to compute your cost basis from trades:
  • Buys raise the running average: the new share cost is folded into the existing position at the average weighted by quantity.
  • Sells relieve the position at the current average cost, leaving the per-share average unchanged for the shares that remain.
  • Full liquidation resets the tracker completely. If you sell your entire position and buy again later, the new lot starts from a clean basis — the old (realized) lots do not carry over and corrupt the new position’s cost basis.
  • Outbound transfers (shares moved to another account you own) are treated the same as sells: they relieve the running average so the transferred shares no longer affect the basis of any shares remaining in the account.
This means avg_cost on a holding — shown in the holdings list, the holding drawer, and the API — reflects only the cost of the shares you currently hold, not an average across every purchase the account ever made for that security.

Transfers and cost basis

When securities are transferred into an account, Sure cannot determine what those units originally cost. Because the purchase happened elsewhere — at a price nothing in this account recorded — any calculated cost basis for that position would be fabricated rather than real. Sure marks the position’s cost basis as unknown so you are not shown a misleading figure. When securities are transferred out of an account, Sure does not touch the cost basis of the shares that remain. Those remaining shares came from real purchases this account recorded, and their cost basis is correct. You can set it manually if you need to record it explicitly. Once you sell all of the transferred shares and the position reaches zero, Sure releases the unknown mark. Any shares you buy after that point are treated as a fresh purchase with a known cost basis, so gains and losses calculate correctly from that repurchase forward.
[!NOTE] Only a calculated cost basis is cleared on an inbound transfer. If you have set a manual cost basis, or your institution provided one, Sure keeps that value — it represents an explicit assertion about what the position cost, which the app respects.

Setting Cost Basis Manually

You can set cost basis in two ways: From the Holdings List:
  1. Navigate to your investment account
  2. Find the holding in your portfolio
  3. Click the pencil icon next to the average cost
  4. Enter either:
    • Total cost basis: The total amount you paid for all shares
    • Per-share cost: The average price per share
  5. Click Save
From the Holding Drawer:
  1. Click on a holding to open its detail drawer
  2. In the Overview section, click the pencil icon next to “Average Cost”
  3. Enter the cost basis (total or per-share)
  4. Click Save
[!TIP] The cost basis editor provides real-time conversion between total and per-share values. Enter whichever format you have available, and Sure calculates the other automatically.

Lock Protection

When you manually set a cost basis, Sure automatically locks it to prevent automatic updates from overwriting your value. You’ll see a lock icon indicating the value is protected. This ensures your manual entries remain intact during account syncs.

Unlocking Cost Basis

If you want Sure to recalculate cost basis from your trades:
  1. Open the holding drawer
  2. Scroll to the Settings section
  3. Find “Cost basis locked”
  4. Click Unlock
After unlocking:
  • The lock icon disappears
  • Future syncs can update the cost basis
  • Calculated values (from trades) will replace the manual value

Recording Trades

Investment accounts support recording various types of trades to track your portfolio activity.

Trade Types

Deposits and withdrawals

A deposit or withdrawal moves cash between your investment account and a second account (the transfer account). Because the trade books an entry on both sides, Sure requires write access on the transfer account — the same requirement that applies when creating a transfer directly. The transfer account picker only shows accounts you can write to. If an account is shared with you as view-only, it does not appear in the list. When using the API, passing a transfer_account_id that belongs to a read-only or inaccessible account returns a 404 Not Found response.

Recording Dividends and Interest

Dividends and interest are recorded as trades with zero quantity and zero price, allowing them to be associated with specific securities while maintaining data integrity. Dividends:
  • Require a security selection (the stock/fund paying the dividend)
  • Recorded as a trade with qty: 0 and price: 0
  • Amount represents the dividend payment received
Interest:
  • Security selection is optional
  • When no security is selected, Sure creates a synthetic cash security for the account
  • Recorded as a trade with qty: 0 and price: 0
  • Amount represents the interest earned
To record a dividend or interest payment:
  1. Navigate to your investment account
  2. Click + New Trade
  3. Select Dividend or Interest from the type dropdown
  4. For dividends: Select the security that paid the dividend
  5. For interest: Optionally select a security, or leave blank for cash interest
  6. Enter the amount received
  7. Set the date
  8. Click Save
[!NOTE] Dividends require a security selection, while interest can be recorded without one. When no security is selected for interest, Sure automatically creates a per-account synthetic cash security (kind: cash, offline: true) to maintain data integrity.

Trade Fees

All trades support an optional fee field to track transaction costs:
  • Fees are included in the total amount calculation: total = (qty × price) + fee
  • Fees default to 0 if not specified
  • Fees are tracked separately for accurate cost basis calculations

Investment Activity Labels

Activity labels help you classify investment transactions. They appear as badges in your transaction list and help you understand your investment activity at a glance. The trade detail header reflects the activity label recorded against the trade. If a label is present and Sure has a name for it, the header shows that label in your selected display language (for example, “Transfer” or “Reinvestment”). If the trade has no label, or carries a label Sure does not name, the header falls back to “Buy” or “Sell” based on the trade’s quantity sign: a positive quantity is a buy, and a negative quantity is a sell.

Recording Dividends and Interest

Dividends and interest are recorded as trades with zero quantity and zero price. This approach maintains data integrity while properly tracking investment income:
  • Dividends require a security to be selected (the stock or fund paying the dividend)
  • Interest can optionally specify a security, or will use a synthetic cash security for the account
  • Both appear in your holdings and trade history
  • Both are properly labeled with their respective activity types
  • The zero-quantity, zero-price approach preserves the trade model’s required security association
When creating a dividend or interest transaction:
  1. Select Dividend or Interest from the trade type dropdown
  2. For dividends: Choose the security paying the dividend (required)
  3. For interest: Optionally select a security, or leave blank to use the account’s cash position
  4. Enter the amount received
  5. The trade is created with qty: 0 and price: 0, maintaining the security association

Trade Fees

All trades support an optional fee field to track transaction costs like brokerage commissions, exchange fees, or other trading expenses.

How Fees Work

  • Fees are included in the total transaction amount: Total = (Quantity × Price) + Fee
  • Fees default to 0 if not specified
  • Fees can be added when creating or editing trades
  • The fee field auto-submits like other trade fields

Adding Fees to Trades

When creating or editing a trade:
  1. Enter the quantity and price as usual
  2. Add the fee amount in the Fee field
  3. The total amount updates automatically to include the fee
  4. Save the trade
Example: Buying 10 shares at 50witha50 with a 5 commission:
  • Quantity: 10
  • Price: $50
  • Fee: $5
  • **Total: 505∗∗(10×505** (10 × 50 + $5)
Fees are particularly important for:
  • Accurate cost basis calculations
  • Understanding true investment returns
  • Tax reporting and record keeping

Available Activity Labels

[!NOTE] Dividends and interest are recorded as trades with zero quantity and zero price. Dividends require a security selection, while interest can optionally use a synthetic cash security if no specific security is selected.

Setting Labels Manually

  1. Open a transaction from an investment or crypto account
  2. Scroll to the Settings section
  3. Find “Activity type”
  4. Select a label from the dropdown
  5. The change saves automatically

Setting Labels with Rules

Create rules to automatically label transactions based on patterns:
  1. Go to Settings > Rules
  2. Create a new rule
  3. Set conditions (e.g., “IF transaction name contains ‘DIVIDEND’”)
  4. Add action: “Set investment activity label”
  5. Choose the label (e.g., “Dividend”)
  6. Save the rule
Example rules:
  • IF name contains “DIVIDEND” THEN set label to “Dividend”
  • IF name contains “INTEREST” THEN set label to “Interest”
  • IF name contains “FEE” THEN set label to “Fee”
[!NOTE] Transfer, Sweep In, and Sweep Out are excluded from budget calculations and from the investment sales report, since they represent assets moving between accounts you own rather than actual sales. Exchange is excluded from budget calculations, but security exchanges remain in the investment sales report because they can represent a taxable disposition.

Tax Treatment Categories

Investment accounts have different tax implications based on their type: Sure automatically assigns tax treatment based on account subtype, but you can adjust it manually if needed.

Portfolio returns: time-weighted vs. money-weighted

Sure tracks two different return figures for your investments, because no single number answers every question about performance. Time-weighted return (TWR) measures what the investments themselves did. It strips out the effect of your cash flow timing — when you added money or withdrew it — so you can compare your portfolio against a benchmark on equal terms. Money-weighted return (MWR) measures what you, the investor, got. It is the internal rate of return (IRR) of your actual cash flows: money you put in is negative, money you took out or the terminal value of the portfolio is positive. Two investors holding the same fund over the same year, one of whom bought most of their position the week before a large fall, did not have the same year — MWR captures that difference.

How Sure calculates the money-weighted return

Sure solves for the rate that makes the present value of your cash flows equal to zero. The solver uses Newton-Raphson with a bisection fallback:
  • Newton converges in a handful of iterations for most portfolios.
  • Every loss and other ill-conditioned series is handed off to bisection, which is slower but cannot diverge.
  • The result is expressed as an annualised rate unless the period is short enough that annualising would produce an unreliable extrapolation, in which case the period rate is used instead.
The returned rate is a BigDecimal rounded to the same precision Sure uses for all monetary figures.

When a money-weighted return is not available

Three situations produce no rate rather than an approximate one: In each case Sure shows nothing rather than a fallback guess.

Series with more than one valid rate

A cash flow series that changes sign more than once can have two rates that both satisfy the equation — for example, a portfolio with a withdrawal between two deposits. Sure returns the rate the solver reaches from its starting point (10%), which matches the behaviour of Excel’s XIRR function. The ambiguous? flag on the calculation is a conservative signal: false guarantees the figure is the only rate that fits; true means it may be one of several. Over-hedging a unique figure is a smaller error than presenting one of several as definitive.
[!NOTE] The money-weighted return display in the UI is coming in a follow-up release. The calculation engine described here is already in place.

Understanding Gains and Losses

Sure helps you track two types of gains:

Unrealized Gains/Losses

Paper gains or losses on holdings you still own:
If you bought 10 shares at 100(100 (1,000 total) and they’re now worth 1,200,youhaveanunrealizedgainof1,200, you have an unrealized gain of 200.

Realized Gains/Losses

Actual gains or losses from securities you’ve sold. These are what matter for taxes. The Trend indicator on each holding shows your unrealized gain or loss, calculated from your cost basis. If cost basis is unknown (no trades and no manual entry), the trend won’t display. Trades labeled Transfer, Sweep In, or Sweep Out are not counted as sales in the investment report. These labels mean the asset moved to another account you own, so no gain or loss is realized. The investment report excludes them and realized_gain_loss returns nothing for them. Trades labeled Exchange are included in the report. For cash this label means a currency exchange, which is internal. For a security it covers a security-for-security exchange, which can dispose of an appreciated asset. Because the two cases are not distinguishable by label alone, and because a missing realized gain is harder to spot than an extra line, exchange trades on securities remain visible so you can review them.

Multi-currency realized gains

When a security is priced in a different currency from the one your account uses, Sure converts the sale proceeds into the basis currency before calculating the gain or loss. The conversion uses the exchange rate recorded for the disposal date and the direction the data holds (from the security’s currency into the account’s currency). There is no fallback to a nearby date and no default rate of 1.0 — if the rate for that day is missing, Sure shows no figure rather than an incorrect one. The same applies to exchange rates that are zero or negative. Sure treats those as absent, so a bad rate in the database does not silently produce a wrong gain or loss. If a realized gain figure is absent for a foreign-currency disposal, check that an exchange rate exists for the security’s currency against your account’s currency on the disposal date. You can add missing rates at Settings → Exchange rates.

Automatic exchange rate import for foreign-currency securities

When an account holds securities priced in a currency other than the account currency — for example, a USD-priced crypto asset in a EUR account — Sure automatically imports exchange rates for those price currencies during each sync. Rates are fetched starting from the first date the account needs a price for each security, based on your own trades and holdings rather than the security’s global price history. Security prices are imported before exchange rates so the relevant currencies are known at the start of each sync. Only price currencies that have a price on or after the first required date are included, so currencies from older listings used by other accounts do not trigger unnecessary rate imports. This means the portfolio cache can always convert each security price into your account currency without falling back to live per-day provider requests. Syncs that previously repeated hundreds of exchange rate lookups because rates were missing from the database complete in normal time after upgrading.

Crypto-Specific Features

Crypto accounts work similarly to investment accounts but have unique characteristics:
  • Exchange accounts support manual trade entry, letting you record buys and sells
  • Wallet accounts are sync-only, holdings are updated through provider connections
Crypto is taxable by default, though it can be held in tax-advantaged accounts (for example, a self-directed IRA).

Adding Investment Accounts

  1. Click + Add Account on your dashboard
  2. Select Investment or Crypto
  3. Choose the appropriate subtype (see Account Types for all options)
  4. Enter your account details:
    • Account name
    • Current balance
    • Tax treatment (if different from default)
  5. Click Create Account
After creating the account, you can add holdings manually or connect a provider to sync them automatically.