← Home

Calculation Methodology

Every rule behind the ActiveACB ACB calculator, with CRA references and known limitations.

By Published Last reviewed

1. Adjusted Cost Base Pooling

Canadian tax law (ITA s. 47(1)) requires that identical securities held in a taxable account form a single ACB pool. When you buy, the total ACB increases by the full cost (price × quantity + commission). When you sell, you remove a proportional slice of the pool: ACB removed = (ACB per share) × (quantity sold). The remaining shares carry the adjusted per-share ACB forward. The rules themselves, with worked examples, are in the guide to adjusted cost base.

ACB per share = Total ACB of pool ÷ shares currently held. This updates after every buy, sell, corporate action, and ACB adjustment event. The engine processes all transactions chronologically from the earliest date in your upload, regardless of the tax year selected for reporting.

For accurate results, upload your full trading history from account inception. If part of your history is genuinely unavailable, reconstruct the missing early trades in the starter template from the column mapper guide and upload it alongside your broker files; the engine derives opening positions and opening foreign-cash balances from the trades before your tax year. These pooled figures are what the CRA expects on your return; see T5008 and Schedule 3 for how they replace the broker’s Box 20 numbers.

CRA reference: IT-387R2 “Meaning of Identical Properties”

2. Superficial Loss Rules

A superficial loss (ITA s. 54) occurs when you sell a security at a loss and you, or an affiliated person, buys the same or identical property within the 61-day window: 30 days before the sale, the day of the sale, and 30 days after. For a complete breakdown with worked examples, see the superficial loss rule guide.

The three-limiter formula:
Denied loss = min(window buys, shares held at window end, shares sold at a loss).
The denied amount is added to the ACB of the replacement shares (deferred, not permanent).

CRA references: ITA s. 54, s. 40(2)(g)(i); IT-387R2

3. Foreign Currency (FX) ACB

Every purchase or sale of a foreign security requires converting to CAD at the exchange rate on the settlement date. The exchange rate used is the Bank of Canada nominal rate for that date (or the annual average if the daily rate is unavailable). Cost converts at the buy-date rate and proceeds at the sell-date rate; broker gain/loss reports typically convert net P&L at a single rate, which is not the CRA method. For explicit currency conversions, the engine uses the actual rate at which your broker executed the conversion.

USD cash held in your account is itself a foreign currency and subject to FX gain/loss rules. The engine maintains a running ACB pool for USD (and any other foreign currency) just like a security pool. Each purchase of USD (when you buy a USD security) adds to the pool at the rate paid. Each sale of USD (when you sell a USD security) removes a proportional slice and computes a gain or loss. See USD cash ACB Canada for a worked example.

Annual exemption (ITA s. 39(1.1)): For an individual, only the amount in excess of $200 CAD of the net gain or loss from all currency dispositions in the year is taxable or deductible. A net within ±$200 is not reported at all, and a net beyond it is reduced by $200 in either direction. The exemption is available to individuals only, so a corporation or a trust reports the full amount. The engine tracks this and notes it in the report.

CRA reference: ITA s. 39(1), 39(1.1); Folio S5-F4-C1

4. Options

The CRA treats options premiums and the shares acquired or disposed through them as linked events. The engine applies the following four-way matrix:

The engine links exercise and assignment events to the original option opening trade by matching symbol, expiry, strike, and option type within your uploaded data.

CRA reference: IT-479R “Transactions in Securities”; ITA s. 49

5. Corporate Actions

6. T1135 Foreign Property Warnings

If the total cost of your foreign property (securities, real property, and other specified foreign property) exceeds $100,000 CAD at any point in the tax year, you are required to file Form T1135. The engine monitors the running cost of foreign-currency securities and flags a warning when the $100,000 threshold is approached or exceeded based on your uploaded data.

The warning is informational. The engine does not generate a T1135 form. Use CRA My Account or tax software for that.

CRA reference: ITA s. 233.3; Form T1135

7. Verification, Reconciliation, and Corrections

8. Test Coverage

The engine runs over 2,800 automated tests on every release. Test categories include:

9. Known Limitations