1 · The inputs
A five-trade broker CSV: two buys, two partial sells, one late buy that legally can't match either sale.
Download the sample CSV →This page documents every calculation the engine performs: the rule in plain English, the exact formula applied, and the ATO guidance it is based on. It is written from the engine source code, not from marketing copy. At the bottom you can download the sample inputs, the Evidence Pack they produce, and a plain spreadsheet that recomputes the same result with visible cell formulas.
When you sell part of a holding bought in several parcels, ATO guidance lets you identify which parcels you sold, provided your records support it. The method changes the cost base, and therefore the gain.
A parcel is eligible to match a sale when it is the same security on the same platform and account, and was bought on or before the day of the sale. Eligible parcels are then consumed in an order set by the method you chose:
The five specific-selection strategies order eligible parcels by:
Based on ATO guidance on identifying when shares or units were acquired. ATO: identifying shares and units for CGT →
All money is carried in integer cents. When a disposal spans several parcels, proceeds and fees are split pro-rata in cents using largest-remainder allocation, so the per-parcel figures always sum exactly to the disposal total, with no rounding drift.
Based on the ATO's method for working out a capital gain or loss. ATO: calculating your CGT →
A gain is discount-eligible when the asset was held for more than 12 calendar months, excluding both the acquisition day and the disposal day: a "clear year". The engine tests this as:
eligible = sell date > (buy date + 12 calendar months) example: bought 1 Jul 2023 → sold 1 Jul 2024 not eligible; sold 2 Jul 2024 eligibleCalendar months, not 365 days. The discount rate depends on the entity that owns the workspace: 50% for individuals and trusts, 33⅓% for complying super funds, 0% for companies.
Deliberate design decision: per-disposal figures in CGT Strategist are gross (undiscounted). The discount is applied once, at year level, after capital losses are netted, because applying it per-disposal before losses can overstate the discount. Each disposal is flagged as eligible or not, and the year summary shows the discount as its own line.
Based on s 115-25 ITAA 1997 and TD 2002/10 (the "clear year" rule). ATO: CGT discount →
The year total is not a simple sum of per-disposal gains. It follows the ATO method statement:
1. capital losses offset non-discount gains first 2. remaining losses offset discount-eligible gains 3. the discount rate applies to whatever discount-eligible gain survives net capital gain = net non-discount gains + discounted remainder − any losses still unusedApplying losses to non-discount gains first preserves as much of the discount as possible, which is the ordering that favours you. Losses are never discounted; a $1 loss always offsets a full $1 of gain. If losses exceed all gains, the year total is a net capital loss. The Evidence Pack shows each step of this netting as separate lines so your accountant can follow it.
Based on the method statement in s 102-5 ITAA 1997. ATO: calculating your CGT →
Foreign amounts are translated to AUD at the exchange rate for the transaction date: buys at the buy date, sells at the sell date, dividends at the payment date. Rates are published as foreign units per 1 AUD, so conversion divides:
AUD amount = foreign amount ÷ (foreign units per AUD) example: USD 243.00 at 0.6225 USD per AUD = AUD 390.36You choose the rate source per workspace, and the ATO accepts either applied consistently:
Every converted figure records which rate was used and where it came from. Anything not confirmed against an official table, for example a rate for a month the ATO has not published yet, is marked estimated and highlighted in amber in the app and in every report, so you know to re-check it.
Based on the translation rules in Subdiv 960-C ITAA 1997 and the ATO's published exchange rates. ATO: foreign exchange rates →
Splits and consolidations scale quantity by the ratio and unit cost inversely; the parcel's total cost base is unchanged.
new quantity = quantity × (new units ÷ old units) new unit cost = unit cost ÷ (new units ÷ old units)Return of capital reduces the cost base per share. If a payment exceeds a parcel's remaining cost base, the excess is a capital gain under CGT event G1 (s 104-135 ITAA 1997), discount-eligible if the parcel was held 12+ months at the payment date.
Demergers split the cost base between parent and demerged entity by the allocation percentage, and the new parcel inherits the parent's acquisition date, so the 12-month clock keeps running.
Mergers and takeovers support both treatments. With scrip-for-scrip rollover, the old cost base carries into the new holding (adjusted for any cash component). Without rollover, the takeover is a deemed disposal under CGT event A1 (s 104-10): proceeds are the cash plus the value of scrip received, a gain or loss is realised, and the new parcel starts fresh at the offer value and action date.
Based on ATO guidance for mergers, takeovers and demergers, and non-assessable payments. ATO: mergers & demergers → · ATO: non-assessable payments →
From your AMMA statement, the engine takes the cost base shortfall (increase) and excess (decrease) amounts and applies the net per-unit adjustment across the units you still held at the financial year end:
net adjustment = shortfall − excess (negative = cost base decrease) per unit = net adjustment ÷ units held at 30 June new unit cost = old unit cost + per unit (floored at $0)If a decrease pushes a parcel's cost base below zero, the overshoot is a capital gain in that year: CGT event E10. The engine detects it automatically, applies the discount if the parcel was held 12+ months at the adjustment date, and shows the E10 amount as its own line in the Evidence Pack.
Based on the AMIT cost base netting rules for members of attribution managed investment trusts. ATO: attribution managed investment trusts →
GST-registered workspaces (AUD trades): the pro-rata GST on buy brokerage is excluded from the cost base (it is claimable as an input tax credit), and the pro-rata GST on sell brokerage is excluded from proceeds. The adjustment is shown per disposal.
Rounding, everywhere in the engine:
The engine's results are pinned by automated tests against the ATO's own worked examples, including the guide examples for a basic gain, a discounted gain, and a capital loss, and must match them to the cent for every release.
Every figure on the marketing site was generated by the engine from the sample CSV below, not typed into the page. Download all three files and trace any number from input to formula to output. If you find a discrepancy of even one cent, we want to know.
A five-trade broker CSV: two buys, two partial sells, one late buy that legally can't match either sale.
Download the sample CSV →The Evidence Packs the engine generates from that CSV: +$230.92 under FIFO, −$269.08 under minimise-gain specific selection.
FIFO Evidence Pack (PDF) →A plain spreadsheet that recomputes both results with visible cell formulas, no macros, built from the same five rows. Open it, click any cell, follow the maths.
Download the recompute spreadsheet →Illustrative example using fictional trades. Not tax advice.
Modelling is free and unlimited. Upload your broker CSV and compare methods in minutes.