Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
@davidosborn/crypto-tax-calculator
Advanced tools
A tool to calculate the capital gains of cryptocurrency assets for Canadian taxes
A tool to calculate the capital gains of cryptocurrency assets for Canadian taxes. The source data comes from a set of trade logs, which are provided by the exchanges. The adjusted cost base (ACB) is used to calculate the capital gains.
I created this software to calculate the capital gains from my 2017 cryptocurrency trades for tax purposes. For my 2018 taxes, I refined the software with many new options to handle missing logs, stolen assets, and other complex issues.
Please note that I am not an accountant, and I do not warrant the validity of the results.
The following exchanges are supported out-of-the-box:
It is easy to add support for additional exchanges.
Simply add a parser in trade-parse-stream.js
to convert a CSV row to the normalized format.
You can look at the existing parsers as examples of how to do this.
Run the program with npm start
or node index
.
Add the --help
option to see the available options.
Typical usage involves running the program with a set of trade logs in the form of CSV files. For example:
node index data/*-2018.csv -odata/results-2018.md --init=\
BTC:0.73396222:12721.04,\
ETH:4.18451232:3478.97,\
LTC:11.09684:3113.88
The resulting Markdown or HTML contains:
There are options for filtering by currency, defining the initial balance, limiting the number of trades, and providing historical data.
Short option | Long option | Argument | Description |
---|---|---|---|
-a | --assets | <spec> [1] | Only consider trades involving the specified assets. |
-h | --help | Display this usage information and exit. | |
-i | --init | <spec> [2] | Define the initial balance and ACB of the assets. |
-m | --html | Format the results as HTML instead of Markdown. | |
-o | --output | <file> | Write the results to the specified file. |
-q | --quiet | Do not write the results. | |
-s | --show | <spec> [1] | Only show the specified assets. |
-t | --take | <count> | Do not process more than the specified number of trades. |
-v | --verbose | Write extra information to the console. | |
-w | --web | Request historical asset values from the internet. | |
-y | --history | <path> [3] | Read historical asset values from the specified directory. |
[1]
A subset of the available assets can be considered for the calculation by the --assets
option, or used to filter the results by the --show
option.
The argument in both cases is a comma-separated list of assets.
[2]
The balances can be carried forward from last year by the --init
option.
The argument is a comma-separated list of assets, each with its balance and adjusted cost base, in the form of <asset>:<balance>[:<acb>],...
, such as --init=BTC:1:5000,ETH:5:1000,LTC:10:80
.
[3]
Historical data may be provided to the program using the --history
option.
The data for each currency pair must be stored in a JSON file named <base>-<quote>.json
.
Each JSON file must contain an array of historical samples, ordered by time.
Each historical sample must contain the following fields:
Field | Type | Semantics | Description |
---|---|---|---|
time | Number | UNIX timestamp | The opening time of the trading period. |
open | Number | Currency | The price at the opening of the trading period. |
close | Number | Currency | The price at the closing of the trading period. |
Compatible files can be generated by the @davidosborn/crypto-history-parser npm package.
FAQs
A tool to calculate the capital gains of cryptocurrency assets for Canadian taxes
The npm package @davidosborn/crypto-tax-calculator receives a total of 0 weekly downloads. As such, @davidosborn/crypto-tax-calculator popularity was classified as not popular.
We found that @davidosborn/crypto-tax-calculator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.