1.1 KiB

Bitcoincharts Beancount converter

This is a quick tool I hacked together to convert historic bitcoin prices from bitcoincharts CSVs into beancount price directives.

The files are gzipped CSVs of (unixtime, price, tradeamount)

For each month with trades on the 1st, the tool calculates a weighted average of trades on that day and outputs a beancount price directive.


The tool does not download files on its own. Download the files before running.

$ node index.js some.csv.gz
# or
$ node index.js some.csv.gz EUR
# or
$ node index.js some.csv.gz EUR BTC


  • filename (gzipped CSV)
  • currency [optional] (currency code used in beancount {USD,EUR, etc})
  • commodity [optional] (currency code of commodity) {BTC,BCH,LTC, etc}


It works. I don't plan on working on it much further.

It's not very efficent. I suspect the main problem is the group function probably doesn't assume that the input is sorted and therefore buffers its entire input. Patches welcome.