Package: cgt-calc
UK capital gains calculatorCalculate capital gains tax by transaction history exported from Charles Schwab, Trading 212 and Morgan Stanley. Generate PDF report with calculations.Automatically convert all prices to GBP and apply HMRC rules to calculate capital gains tax: "same day" rule, "bed and breakfast" rule, section 104 holding.Report examplecalculations_example.pdfInstallationInstall it withpipx(or regular pip):pipxinstallcgt-calcPrerequisitesPython 3.8 or above.pdflatexis required to generate the report.Install LaTeXMacOSbrewinstall--caskmactex-no-guiDebian basedaptinstalltexlive-latex-baseWindowsInstall MiKTeX.UsageYou will need several input files:Exported transaction history from Schwab in CSV format since the beginning.
Or at least since you first acquired the shares, which you were holding during the tax year. Schwab only allows to download transaction for the last 4 years so keep it safe. After that you may need to restore transactions from PDF statements.See example.Exported transaction history from Schwab Equity Awards (e.g. for Alphabet/Google employees) since the beginning (Note: Schwab now allows for the whole history of Equity Awards account transactions to be downloaded). These are to be downloaded in JSON format. Instructions are available at the top of theparser file.Exported transaction history from Trading 212.
You can use several files here since Trading 212 limit the statements to 1 year periods.See example.Exported transaction history from Morgan Stanley.
Since Morgan Stanley generates multiple files in a single report, please specify a directory produced from the report download page.Exported transaction history from Sharesight
Sharesight is a portfolio tracking tool with support for multiple brokers.You will need the "All Trades" and "Taxable Income" reports since the beginning.
Make sure to select "Since Inception" for the period, and "Not Grouping".
Export both reports to Excel or Google Sheets, save as CSV, and place them in the same folder.Sharesight aggregates transactions from multiple brokers, but doesn't necessarily have balance information.
Use the--no-balance-checkflag to avoid spurious errors.Since there is no direct support for equity grants, addStock Activityas part of the comment associated with any vesting transactions - making sure they have the grant price filled.See example.CSV file with initial stock prices in USD at the moment of vesting, split, etc.initial_prices.csvcomes pre-packaged, you need to use the same format.(Optional) Monthly exchange rates prices fromgov.uk.exchange_rates.csvgets generated automatically using HMRC API, you need to use the same format if you want to override it.Then run (you can omit the brokers you don't use):cgt-calc--year2020--schwabschwab_transactions.csv--trading212trading212/--mssbmmsb_report/Seecgt-calc --helpfor the full list of settings.DisclaimerPlease be aware that I'm not a tax adviser so use this data at your own risk.ContributeAll contributions are highly welcomed.
If you notice any bugs please open an issue or send a PR to fix it.Feel free to add new parsers to support transaction history from more brokers.TestingThis project usesPoetryfor managing dependencies.For local testing you need toinstall it.After that runpoetry installto install all dependencies.Then activatepre-commithook:poetry run pre-commit installYou can also run all linters and tests manually with this command:poetryrunpre-commitrun--all-files