Beancount portfolio allocation report
Project description
beancount_portfolio_allocation
Reports on portfolio asset allocations in beancount. Useful for risk analysis and for rebalancing purposes.
Installation
From source
$ python3 setup.py install
PIP
$ pip install beancount_portfolio_allocation
Usage
usage: Report on portfolio asset classes allocation vs targets. [-h] --portfolio PORTFOLIO bean positional arguments: bean Path to the beancount file. optional arguments: -h, --help show this help message and exit --portfolio PORTFOLIO Name of portfolio to report on
Example
$ bean-portfolio-allocation-report ledger.beancount --portfolio pension CASH ==== Subclass Market Value Percentage Target % Difference ---------- -------------- ------------ ---------- ------------ cash 380.00 19.00 0.00 -380.00 EQUITY ====== Subclass Market Value Percentage Target % Difference ---------- -------------- ------------ ---------- ------------ ca-stock 700.00 35.00 30.00 -100.00 us-stock 600.00 30.00 30.00 0.00 FIXED ===== Subclass Market Value Percentage Target % Difference ---------- -------------- ------------ ---------- ------------ ca-bond 320.00 16.00 40.00 480.00
Prerequisites
Before running this tool, your beancount files will need some additional metadata to help it do its job.
Commodities
All the commodities/currency you want to track will need to have the
asset-class
and asset-subclass
metadata strings filled in. The actual
values are up to you. Here are some examples:
1867-01-01 commodity CAD asset-class: "cash" asset-subclass: "cash" 1986-03-13 commodity MSFT asset-class: "equity" asset-subclass: "us-stock" 1977-01-03 commodity AAPL asset-class: "equity" asset-subclass: "us-stock" 2007-04-04 commodity VAB asset-class: "fixed-income" asset-subclass: "ca-bond"
You will also need valid price directives for all commodities held at cost and at least one 'operating_currency' option defined. The values in the report will all be converted to the first 'operating_currency' defined. A future version will offer a way to specify the currency to use for reporting.
Accounts
Accounts need to be part of a specific portfolio to track. Only one portfolio is supported by account, but you can have multiple portfolios over multiple accounts:
2000-01-01 open Assets:CA:Employer:PensionPlan portfolio: "pension" 2000-01-01 open Assets:CA:Questrade:RRSP portfolio: "pension" 2000-01-01 open Assets:CA:Questrade:Trading portfolio: "day-trading"
Cash Based Accounts
It is possible to specify asset-class
and asset-subclasse
or accounts that
are reported as a cash-value, but are backed by specific asset classes.
This is use in particular for managed retirement accounts.
2000-01-01 open Assets:CA:Employer:PensionPlan portfolio: "pension" asset-class: "fixed-income" asset-subclass: "ca-bond"
Target allocations
You can currently define your target allocation percentages for different asset subclasses in a portfolio using custom directives. There can currently be only one directive for the same portfolio and asset subclass. Missing allocation targets will be assumed to be 0%. An example 60/40 portfolio target might look like this (NOT a financial advice):
2018-06-14 custom "allocation" "pension" "ca-stock" 30 2018-06-14 custom "allocation" "pension" "us-stock" 30 2018-06-14 custom "allocation" "pension" "ca-bond" 40
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size beancount_portfolio_allocation-0.3.0-py3-none-any.whl (9.6 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size beancount_portfolio_allocation-0.3.0.tar.gz (6.5 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for beancount_portfolio_allocation-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c66d8c3eb893ee43048e3ba1fa1b35cdb8a96130bf1e4024fc15ed1f17edbdf6 |
|
MD5 | 095f7453f237081295d758d497d0a2ec |
|
BLAKE2-256 | 1d0460f93ac9ea61a286421c3e81336e1c6f4720766cdaad84e7a0f4b86138a8 |
Hashes for beancount_portfolio_allocation-0.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9336d8ff7e4407bb11b35d4539f214d27efa5620eb56e04102ba3e77ea979654 |
|
MD5 | d1ea0f81c1cd494508b85a322b1d3779 |
|
BLAKE2-256 | a6553ce2a842480f554d41b1ca38a37d1d8df65d7a4e95e53ffdd41acda8d484 |