Skip to content
Knowledge base

ACB Tracking in Depth

How Luum tracks adjusted cost base using the average-cost method, what happens on splits and mergers, and the limitations you should know about.

Adjusted cost base (ACB) is the average price you paid for a security, including commissions. Accurate ACB is essential for calculating capital gains at tax time. This article explains how Luum computes and maintains ACB — and where you need to verify manually.

**Tax disclaimer.**Luum's ACB figures are estimates based on the transaction data available from your brokerage. Always verify ACB with a qualified tax advisor before filing your return. Luum does not provide tax advice.

The average-cost method

The CRA requires most Canadian investors to track ACB using theaverage-cost method (also called the adjusted cost base pool method). Under this approach, every security you hold has a single pool ACB — not a per-lot ACB. Each time you buy shares, the new cost is added to the pool and a new average is calculated:

`New ACB per share =
  (Previous ACB total + Purchase cost) ÷ Total shares held`

When you sell, the capital gain or loss is calculated as: proceeds minus (ACB per share × shares sold). The remaining pool ACB per share is unchanged by a sale.

How Luum updates ACB

ACB is recomputed automatically every time your brokerage syncs new transactions. Luum processes transactions in chronological order and applies the average-cost formula across all buy events (including reinvested dividends, if your broker reports them as purchases).

Stock splits and consolidations

When a stock splits (e.g., 2-for-1), the number of shares doubles and the ACB per share halves — the total pool cost remains the same. Luum applies a split when it appears as a transaction in your imported or synced history, adjusting the share count and leaving the pool cost unchanged.

There is no corporate-action fallback. If your broker does not report the split as a transaction, Luum will not know about it, and every later disposition of that security will be computed against the wrong share count — which can turn a gain into a reported loss. Add the split to your transaction history yourself if it is missing.

Mergers and acquisitions

M&A events (all-cash acquisitions, all-stock mergers, spin-offs) require manual review. In an all-cash deal, Luum treats the acquisition as a sale at the deal price. In a stock-for-stock merger, the new security should appear in your brokerage data with the correct exchange ratio — Luum will use the cost as reported by your broker. Spin-offs require ACB to be allocated between the parent and the new entity; Luum does not perform this allocation automatically. You should adjust ACB manually in these cases.

What Luum does not handle

  • Superficial loss rule — If you sell a security at a loss and repurchase it (or an identical security) within 30 days before or after, the CRA disallows the loss and adds it back to your ACB. Luum does not apply superficial-loss adjustments. If this rule applies to your trades, you must adjust ACB manually.
  • Pre-connection history — Luum can only use transaction history that your brokerage makes available through Snaptrade. If your broker provides less than 24 months of history, ACB may be understated for positions held longer than that window.
  • Spin-off ACB allocation— splitting the parent's cost base between the parent and the new entity is a judgement call based on the issuer's own guidance. Luum does not attempt it.

What Luum does handle

Worth stating explicitly, because these are the adjustments most often missing from a brokerage export:

  • Per-transaction-date FX— a disposition in a foreign currency is converted at the Bank of Canada rate published for that trade date, not at today's rate. Where a trade date has no published rate — a weekend or a holiday — the previous business day's rate is used, and the report says so. A currency with no rate on record at all is left out and named, rather than reported at an assumed rate.
  • Return of capital — reduces the cost base, and once the pool reaches zero the excess is reported as a deemed capital gain in the year received. Reinvested (phantom) distributions raise the cost base.
  • One pool per security across your accounts — the CRA pools identical properties per taxpayer, not per account, so a report for one non-registered account is computed from all of them. The same ticker on two different exchanges is kept as two pools, because those are two different securities.
  • Anything it could not account for — a sale with no purchase history, a sale larger than the units on record, a split with no matching position. These are listed on the report by security and quantity rather than being dropped from it.

For capital gains reports and RRSP/TFSA contribution room, see the Tax Centre deep dive →