src/pricehist | ||
tests | ||
.flake8 | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
pricehist
A command-line tool for fetching and formatting historical price data, with support for multiple data sources and output formats.
Installation
Install via pip:
pip install pricehist
Sources
coindesk
: CoinDesk Bitcoin Price Indexcoinmarketcap
: CoinMarketCapecb
: European Central Bank Euro foreign exchange reference rates
Output formats
csv
: Comma-separated valuesledger
: Ledger and hledgerbeancount
: Beancountgnucash-sql
: GnuCash SQL
Examples
Show usage information:
pricehist -h
usage: pricehist [-h] [--version] [--verbose | --debug]
{sources,source,fetch} ...
Fetch historical price data
optional arguments:
-h, --help show this help message and exit
--version show version information
--verbose show INFO messages
--debug show INFO and DEBUG messages
commands:
{sources,source,fetch}
sources list sources
source show source details
fetch fetch prices
Fetch prices after 2021-01-04, ending 2020-01-15, as CSV:
pricehist fetch ecb EUR/AUD -sx 2021-01-04 -e 2021-01-15 -o csv
date,base,quote,amount,source,type
2021-01-05,EUR,AUD,1.5927,ecb,reference
2021-01-06,EUR,AUD,1.5824,ecb,reference
2021-01-07,EUR,AUD,1.5836,ecb,reference
2021-01-08,EUR,AUD,1.5758,ecb,reference
2021-01-11,EUR,AUD,1.5783,ecb,reference
2021-01-12,EUR,AUD,1.5742,ecb,reference
2021-01-13,EUR,AUD,1.5734,ecb,reference
2021-01-14,EUR,AUD,1.5642,ecb,reference
2021-01-15,EUR,AUD,1.568,ecb,reference
In Ledger format:
pricehist fetch ecb EUR/AUD -s 2021-01-01 -o ledger | head
P 2021-01-04 00:00:00 EUR 1.5928 AUD
P 2021-01-05 00:00:00 EUR 1.5927 AUD
P 2021-01-06 00:00:00 EUR 1.5824 AUD
P 2021-01-07 00:00:00 EUR 1.5836 AUD
P 2021-01-08 00:00:00 EUR 1.5758 AUD
P 2021-01-11 00:00:00 EUR 1.5783 AUD
P 2021-01-12 00:00:00 EUR 1.5742 AUD
P 2021-01-13 00:00:00 EUR 1.5734 AUD
P 2021-01-14 00:00:00 EUR 1.5642 AUD
P 2021-01-15 00:00:00 EUR 1.568 AUD
Generate SQL for a GnuCash database and apply it immediately:
pricehist fetch ecb EUR/AUD -s 2021-01-01 -o gnucash-sql | sqlite3 Accounts.gnucash
pricehist fetch ecb EUR/AUD -s 2021-01-01 -o gnucash-sql | mysql -u username -p -D databasename
pricehist fetch ecb EUR/AUD -s 2021-01-01 -o gnucash-sql | psql -U username -d databasename -v ON_ERROR_STOP=1
Design choices
To keep things simple, pricehist
provides only univariate time series of
daily historical prices. It doesn't provide other types of market, financial or
economic data, real-time prices, or other temporal resolutions. Multiple or
multivariate series require multiple invocations.
Alternatives
Beancount's bean-price
tool fetches historical prices and addresses other workflow concerns in a
Beancount-specific manner.
The GnuCash wiki documents wrapper scripts for the Finance::QuoteHist Perl module.
Some other projects with related goals include:
hledger-stockquotes
: Generate an HLedger journal containing daily stock quotes for your commodities.ledger_get_prices
: Uses Yahoo finance to intelligently generate a ledger price database based on your current ledger commodities and time period.- LedgerStockUpdate: Locates any stocks you have in your ledger-cli file, then generates a price database of those stocks.
market-prices
: Downloads market values of commodities from a few different sources.- price-database: A Python library and a CLI for storage of prices.