Skip to main content

Manual

Everything you need to know to use the calculator effectively.

1

Import

Get your trade data into the calculator

Overview

There are three ways to get data into the calculator: upload a file, paste from a spreadsheet, or skip the import step entirely and add trades manually in the Review step.

On the import screen you will see three buttons:

  • Import Trades — opens the file upload and paste dialog
  • Load Sample Data — loads example trades so you can explore the calculator without your own data
  • Skip → — skips directly to the Review step where you can add trades manually one at a time

File Upload

Upload a file by clicking the drop zone or dragging a file into it. Supported file types:

  • .csv
  • .tsv
  • .txt
  • .xls
  • .xlsx

The first row must be a header row containing column names. Data rows start from the second row.

Paste from Spreadsheet

Copy rows including the header from Excel or Google Sheets, then paste into the text area. Tab-separated and comma-separated data both work.

Select the rows you want to import (including the header row), press Ctrl+C (or Cmd+C on Mac), click inside the paste text area, and press Ctrl+V (or Cmd+V).

Supported Formats

CSV example:

Date,Type,Symbol,Quantity,Price,Fees,Currency,Exchange Rate 2024-03-15,Buy,VWRL,50,87.42,0,GBP,1 2024-01-22,Buy,AAPL,10,195.50,0,USD,1.2651 2024-09-03,Sell,AAPL,8,225.10,1.00,USD,1.3032 2024-06-10,Split,NVDA,10,1,,,

TSV example (tab-separated):

Date Type Symbol Quantity Price Fees Currency Exchange Rate 2024-03-15 Buy VWRL 50 87.42 0 GBP 1 2024-01-22 Buy AAPL 10 195.50 0 USD 1.2651 2024-06-10 Split NVDA 10 1

Excel: .xls and .xlsx files are supported. The first sheet is read and should have the same column structure as CSV/TSV. No macros or formulas are needed — just plain data.

Note about delimiters: The parser auto-detects the delimiter (tab, semicolon, or comma) from the first line of data.

Importing Stock Splits

Stock splits can be included directly in your import file alongside regular trades. Use the same columns with these values:

ColumnValue for splits
DateEffective date of the split
TypeSplit (or Stock Split)
SymbolTicker of the split stock
QuantityRatio To (e.g. 10 for a 10-for-1 split)
PriceRatio From (usually 1)
Fees, Currency, Exchange RateLeave empty or 0 (ignored for splits)

Example: NVDA's 10-for-1 split on 10 June 2024 would be:

2024-06-10,Split,NVDA,10,1,,,

Splits are automatically separated from trades during import and loaded into the calculator's split events. They appear in the Review step alongside your trades.

Column Auto-Detection

The importer automatically matches your column headers to the required fields using the aliases below. Matching is case-insensitive.

FieldRecognized Column Headers
Datedate, trade date, transaction date, settlement date, datetime
Typetype, action, side, trade type, buy/sell, direction
Symbolsymbol, ticker, stock, instrument, security, isin, name
Quantityquantity, qty, shares, amount, units, no. of shares, volume
Unit Priceprice, unit price, price per share, execution price, avg price, rate
Feesfees, commission, fee, charges, costs, stamp duty
Currencycurrency, ccy, cur
Exchange Rateexchange rate, fx rate, fx, rate

If your headers don't match any alias, you can manually select the correct mapping in the next step.

Column Mapping

After parsing, a mapping screen appears showing dropdown selectors for each field. A preview of the first 5 data rows is displayed so you can verify the mapping looks correct.

Required fields are marked with a red asterisk (*). If auto-detection matched a column incorrectly, use the dropdown to change it. You can also set a column to "Skip" if it contains data you don't need.

Click "Import X trades" to confirm and load the trades into the calculator.

Field Reference

FieldRequiredDefaultDescription
DateYesTrade date in any supported format (see below)
TypeYesbuybuy/b, sell/s, transfer/t, or split (case-insensitive)
SymbolYesTicker or identifier (e.g. AAPL, VWRL.L). Converted to uppercase
QuantityYesNumber of shares. Negative values are converted to positive
Unit PriceYesPrice per share in the trade currency
FeesNo0Broker fees, stamp duty, commission in trade currency
CurrencyNoGBPISO 3-letter code (GBP, USD, EUR, etc.)
Exchange RateNo1Foreign currency units per 1 GBP

Date Formats

The following date formats are auto-detected:

  • YYYY-MM-DD (recommended, unambiguous)
  • DD/MM/YYYY
  • DD-MM-YYYY
  • DD.MM.YYYY
  • MM/DD/YYYY(used when month value > 12 to disambiguate)
Tip: We recommend YYYY-MM-DD (e.g. 2024-03-15) as it's unambiguous and sorts correctly.

Exchange Rate Convention

The exchange rate is the number of foreign currency units equal to 1 GBP.

  • Example: if £1 = $1.27, enter 1.27
  • For GBP-denominated trades, leave as 1
  • The calculator divides the trade value by this rate to convert to GBP
Tip: If you don't know the rate, you can leave it blank during import and fill it in later on the Review screen. The Add/Edit form has a button to fetch the official HMRC rate for the trade date.

Validation

Rows with missing required data (no date, no symbol, or unparseable numbers) are silently skipped. A success message shows how many trades were imported.

If zero valid trades are found, an error is shown explaining that no rows could be parsed. Check your column headers and data format if this happens.

Sample Files

Download sample files to see the expected format or to test the import process:

2

Review

Inspect, edit, and manage your trades before calculating

Overview

The Review step displays all your trades in a sortable table. Here you can add, edit, or delete individual trades, record stock splits, and export your data. Fix any validation errors before proceeding to Calculate.

Trades Table

The table shows all trades and stock splits in chronological order. A header displays the total count (e.g. "42 trades + 2 splits"). Trades with validation errors are highlighted with a red border.

Columns displayed:

  • Date — trade date in YYYY-MM-DD format
  • Type — coloured badge: green for buy, red for sell, violet for transfer/split
  • Symbol — ticker identifier
  • Quantity — number of shares
  • Unit Price — price per share in trade currency
  • Currency — ISO currency code
  • Fees — broker fees, stamp duty, etc.
  • Exchange Rate — foreign units per GBP

Add Trade

Click "Add Trade" (green button) to expand an inline form. Fill in the following fields:

  • Date — date picker, minimum 6 April 2008
  • Type — dropdown: Buy, Sell, or Transfer
  • Symbol — text input with autocomplete suggestions from existing symbols in your portfolio
  • Quantity — number input (positive)
  • Unit Price — number input (price per share in trade currency)
  • Fees — number input, defaults to 0. Enter broker fees, stamp duty, etc.
  • Currency — text input (e.g. USD, GBP, EUR)
  • Exchange Rate— number input, defaults to 1. For non-GBP trades, enter the rate (foreign units per £1)

The form has "Add Trade" (submit) and "Cancel" buttons.

Edit Trade

Click "Edit" on any trade row to open a large modal with the same form, pre-populated with the trade's current values. Make changes and click "Save", or "Cancel" to discard.

Delete Trade

Click "Delete" on any trade row. A confirmation dialog appears: "Are you sure you want to delete this trade? This action cannot be undone." Click "Delete" to confirm or cancel.

Stock Splits

Click "Add Split" (violet button) to expand the split form. Fields:

  • Symbol — text input with autocomplete from existing symbols
  • Effective Date — date picker
  • Ratio From — number (usually 1)
  • Ratio To — number (e.g. 20 for a 20-for-1 split)
Example: For Amazon's 20-for-1 split on 6 June 2022, enter Symbol: AMZN, Date: 2022-06-06, From: 1, To: 20.

How splits work: The calculator multiplies the quantity of all trades BEFORE the split date by the split ratio (To / From) while keeping the total cost basis the same. This means the cost per share decreases but total value is unchanged — exactly as HMRC requires. Trades ON or AFTER the split date are not adjusted (they should already use post-split quantities/prices).

Splits appear in the table with a violet "split" badge and can be removed individually.

Export

Click "Export ▾" to see format options:

  • CSV — comma-separated values (trades.csv)
  • TXT — tab-separated values (trades.txt)
  • Excel (CSV) — CSV file with .xlsx.csv extension for Excel compatibility

The export includes both trades and stock splits (splits exported with type "split", using quantity for ratioTo and unitPrice for ratioFrom). All entries sorted by date. Use this to back up your data or transfer it between sessions.

Validation Errors

If your data has issues, a red alert box appears at the top listing each error:

  • Format: Trade #N (field): message
  • Common errors: selling more shares than you own, invalid dates, missing required fields
  • Trades with errors are highlighted in the table with a red border
  • You must fix all errors before proceeding to Calculate

Clear All

The red "Clear All" button removes ALL trades and stock splits permanently. A confirmation dialog appears first. This cannot be undone.

Use with caution — consider exporting your data first.
3

Calculate

View your capital gains results and generate reports

Overview

The Calculate step applies HMRC's share matching rules to your trades and produces tax year summaries, disposal breakdowns, and Section 104 pool tracking. Results are grouped by UK tax year (6 April to 5 April). The current tax year is expanded by default.

Tax Year Summaries

Each tax year appears as a collapsible section showing at a glance:

  • Net Gain/Loss — total gains minus total losses for the year
  • Taxable Gain — the amount exceeding the Annual Exempt Amount (AEA)
  • Total Proceeds — sum of all disposal proceeds
  • Reporting badge— "Report" (amber) if you must file, "No report" (green) if not
  • Disposal/acquisition/transfer counts shown as small indicators

Summary cards inside each year show: Total Gains, Total Losses, Net Gain/Loss, Annual Exempt Amount, Taxable Amount, and whether the proceeds reporting threshold was exceeded.

HMRC Matching Rules

HMRC mandates three matching rules applied in strict priority order for every disposal:

  1. Rule 1: Same-day rule — A disposal is first matched against any acquisitions of the same security on the same day. If you bought and sold on the same day, they are matched together regardless of order. Multiple same-day purchases are merged into a single weighted-average composite before matching.
  2. Rule 2: Bed & breakfast rule (30-day) — Any remaining unmatched disposal quantity is then matched against acquisitions in the following 30 days (day+1 to day+30), taking the earliest purchase first (FIFO). This prevents selling at a loss and immediately rebuying to crystallise the loss.
  3. Rule 3: Section 104 pool — Any quantity still unmatched after the above rules is matched against the Section 104 pool — a running weighted-average of all prior unmatched acquisitions of that security.

A single disposal can be partially matched by different rules. For example, selling 100 shares might match 20 via same-day, 30 via bed & breakfast, and 50 from the pool.

See these rules applied to real figures in the worked examples.

Disposals

Each disposal (sell or transfer) shows:

  • Date, symbol, type, quantity sold
  • Proceeds — selling price x quantity minus fees, converted to GBP
  • Allowable cost — purchase cost allocated via matching rules
  • Gain or loss — proceeds minus cost

Each disposal can be expanded to show its matching breakdown — which rule was applied, the matched date (or "Section 104 pool"), matched quantity, cost per share, and the gain/loss from that portion. Rules are colour-coded: same-day (blue), bed & breakfast (amber), Section 104 (grey).

Acquisitions

Each acquisition (buy) shows the date, symbol, quantity, total cost in GBP, and fees. This shows how each purchase feeds into the Section 104 pool after any same-day or B&B matching has consumed it.

Section 104 Pool

Click "View Pool" on any event to see a detailed overlay showing:

  • Pool state BEFORE the transaction — total shares, total cost (GBP), cost per share
  • Pool state AFTER the transaction — updated shares, cost, cost per share
  • The impact — shares added/removed, cost added/removed

The pool tracks a per-symbol weighted average. When you buy, shares and cost are added. When you sell (from pool), a proportional cost is removed. Stock splits multiply the share count but leave total cost unchanged, reducing cost per share.

Transfers

A transfer is a no-gain/no-loss disposal (e.g. gift to a spouse or civil partner). The disposal proceeds are deemed equal to the allowable cost, so no gain or loss arises. Transfers are shown with a violet badge and participate fully in matching rules — if you buy on the same day as a transfer, the same-day rule applies. If you buy within 30 days after a transfer, bed & breakfast applies. This can produce surprising cost bases for the recipient.

Advanced Analysis

A collapsible "Advanced Analysis" section provides deeper insights:

  • Overview charts — visual comparison of gains vs losses and proceeds vs reporting threshold across all years
  • Yearly gains trend — line/bar chart showing how gains evolved over time
  • Pool composition — breakdown of your current pool value by symbol
  • Effective transactions— table showing trades after same-day merging (what HMRC actually sees as input). Toggle between "Original" and "Split-adjusted" quantities if splits exist. Shows merged-from column indicating which raw trades were combined.

PDF Download

Click the "PDF" button on any tax year header to download a report. A modal offers two options:

  • This year only — single tax year report
  • All years — complete history across all tax years

The PDF includes: summary cards, all disposals with matching details, acquisitions, pool state, and a disclaimer. Suitable for attaching to your Self Assessment tax return or sending to an accountant.

Optimise Gains

Available only for the current tax year. A green banner appears: "Optimise your tax-free allowance." Click to open a modal that:

  • Shows a dropdown of symbols from your current pool
  • Auto-fetches the current market price and exchange rate (editable)
  • Toggle: "Whole shares only" or "Fractional shares allowed"
  • Click "Calculate" to find the optimal number of shares to sell to maximise your AEA usage without exceeding it
  • Shows result: optimal quantity, expected gain, proceeds in GBP
  • "Add Trade" button adds the suggested sell as a real trade

Cannot optimise if: the pool is at a loss (you'd realise a loss, not a gain), AEA is already exhausted, or no shares are available.

Display Options

A "Display Options" bar at the bottom lets you choose decimal precision from 0 to 6 places. This affects all monetary values and share quantities in the results display. The underlying calculation always uses full precision — this only changes how values are shown.

Reporting Rules

Key HMRC rules to be aware of:

  • Tax year — 6 April to 5 April (e.g. 2024/25 runs 6 April 2024 to 5 April 2025)
  • Annual Exempt Amount (AEA)— £3,000 for 2024/25 onwards (was £6,000 in 2023/24, £12,300 before that)
  • Reporting threshold— £50,000 total proceeds triggers mandatory reporting even if gains are within the AEA
  • You must report if— taxable gain > 0 OR total proceeds > £50,000
  • Tax rates (shares & other non-property assets) — rates changed mid-year on 30 October 2024: disposals on or before 29 October 2024 were 10% (basic rate) / 20% (higher rate); disposals from 30 October 2024 onwards are 18% / 24%. The calculator applies the correct rate per disposal date and shows a per-period breakdown when a tax year spans the change.
  • Deadline — 31 January following the end of the tax year (e.g. 31 January 2026 for 2024/25)
This calculator computes gains only. It does not determine your tax rate — that depends on your total income. Consult HMRC guidance or a tax advisor for your specific situation.