Manual
Everything you need to know to use the calculator effectively.
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 1Excel: .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.
Importing Stock Splits
Stock splits can be included directly in your import file alongside regular trades. Use the same columns with these values:
| Column | Value for splits |
|---|---|
| Date | Effective date of the split |
| Type | Split (or Stock Split) |
| Symbol | Ticker of the split stock |
| Quantity | Ratio To (e.g. 10 for a 10-for-1 split) |
| Price | Ratio From (usually 1) |
| Fees, Currency, Exchange Rate | Leave 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.
| Field | Recognized Column Headers |
|---|---|
| Date | date, trade date, transaction date, settlement date, datetime |
| Type | type, action, side, trade type, buy/sell, direction |
| Symbol | symbol, ticker, stock, instrument, security, isin, name |
| Quantity | quantity, qty, shares, amount, units, no. of shares, volume |
| Unit Price | price, unit price, price per share, execution price, avg price, rate |
| Fees | fees, commission, fee, charges, costs, stamp duty |
| Currency | currency, ccy, cur |
| Exchange Rate | exchange 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
| Field | Required | Default | Description |
|---|---|---|---|
| Date | Yes | — | Trade date in any supported format (see below) |
| Type | Yes | buy | buy/b, sell/s, transfer/t, or split (case-insensitive) |
| Symbol | Yes | — | Ticker or identifier (e.g. AAPL, VWRL.L). Converted to uppercase |
| Quantity | Yes | — | Number of shares. Negative values are converted to positive |
| Unit Price | Yes | — | Price per share in the trade currency |
| Fees | No | 0 | Broker fees, stamp duty, commission in trade currency |
| Currency | No | GBP | ISO 3-letter code (GBP, USD, EUR, etc.) |
| Exchange Rate | No | 1 | Foreign currency units per 1 GBP |
Date Formats
The following date formats are auto-detected:
YYYY-MM-DD(recommended, unambiguous)DD/MM/YYYYDD-MM-YYYYDD.MM.YYYYMM/DD/YYYY(used when month value > 12 to disambiguate)
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
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:
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)
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.csvextension 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.
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:
- 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.
- 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.
- 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)