Drop your transactions file(s) here
or click to browse - CSV, TSV, TXT, XLSX, XLS or ODS
Data loaded successfully
Results
Input Data
All data sources, combined and processed by the calculator. 'Original' shows figures exactly as entered; 'Converted' is provided where FX translations were applied, displaying the sterling equivalent alongside the original amount, currency code and exchange rate.
Annual Summary
Gains, losses, the annual exemption and losses carried forward for each tax year. All Years lists every year in your data; a single year shows just that year.
With All Years selected, this table lists every tax year from your first transaction to the current year, including years with no disposals. Selecting a single year shows just that year. Unused losses are carried forward to future years. The Chargeable gain shown in this table is after deducting any losses brought forward and used that year. Chargeable gain values elsewhere, including the HMRC boxes tab, show each year on its own, before brought-forward losses are used.
Disposals
Sales matched to purchases via HMRC rules (same day, 30-day, S104 pool, then future purchases), detailing individual gains and losses.
Which Figures Go in Which Boxes
Your results mapped onto the Self Assessment forms by year. Self Assessment Box numbering does occasionally move between tax years, so confirm them against the form you are actually filing.
This is a mapping of figures to boxes, not tax advice. The calculator does not know everything your return needs, such as income from other sources, holdings elsewhere, reliefs, or your residence and domicile position - so treat each box as a figure to check, not a figure to copy blindly.
Charts
Your realised gains and losses over time, by tax year and by holding.
Cumulative Realised P&L
Running total of realised gains and losses across your matched disposals, in date order.
Matching Rules
Disposal value, gains and losses, each split by the HMRC rule that matched the sale. Each ring is its own 100%.
Gains and Losses by Tax Year
Top Winners and Losers by Code
Gain vs Holding Period
Each point is one matched disposal, sized by disposal value. Points left of zero are 30-day bed & breakfast and short-sale matches, where the shares were bought after the sale.
Return Multiple vs XIRR
Each point is one matched disposal, sized by disposal value: the return multiple (sale price over pooled cost) against the annualised return implied by its holding period. Same-day, 30-day and short-sale matches are excluded as they have no meaningful annualised return. Extreme XIRRs from very short holds are pinned at the chart edge and shown in grey (hover for the exact figure); switch to the log axis to see every actual value spread out.
Calculation Text
Each matched disposal shown with its full working. Results are rounded to the penny at the transaction level, and to the pound at the summary level using HMRC's rounding rules.
Fund Income
Excess Reportable Income and other fund distributions.
Fund Income per Tax Year
Fund Income per Distribution
Spouse Transfers
Shares passed to a spouse or civil partner at no gain and no loss, with calculated equivalent BUY rows for their records. Spouses must not be separated, and special rules apply in the year of divorce.
Spouse's Acquisition Rows
Ready-to-paste BUY rows for your spouse's own
transaction file: each transfer becomes an acquisition at its no-gain-no-loss cost.
Asset Types
The asset type of every code: from your asset types file, from SELL rows with their own asset_type, or listed (the default) where none was given.
Remaining Positions (Section 104 Pool/Short Positions)
Year-end section 104 units and pooled cost, and any short positions still open. S104 balances may differ from broker holdings: a sale matched under the 30-day rule to a purchase in the next tax year does not reduce the year-end pool, while a broker may show the remaining holdings without reference to matching order.
Investment Lifecycle
Annual Movements
* Trading costs (incidental costs plus stamp duty) are already factored into your gains and shown here for reference only. N/A means the data column was not provided.