Balance Group report

Balance Group report is combined report of multiple balance reports based on time selector.

Report Time Zone
        TZ name : UTC

BALANCE GROUPS BY MONTH
-----------------------
2019-01
-------
                 0.00   -2.00  Assets
                -2.00   -2.00  Assets:Cash
                 0.00    2.00  Expenses
                 2.00    2.00  Expenses:Ice_cream
=====================
                 0.00

2019-02
-------
                 0.00   -1.00  Assets
                -1.50   -1.50  Assets:Cash
                 0.00    1.50  Expenses
                 1.50    1.50  Expenses:Lemonade
=====================
                 0.00

In above we can see that in January 2019 spending was dominated by ice cream and during February 2019 by lemonade.

Available group operators to select balance groups are: year, month, day, iso-week and iso-week-date.

ISO-8601 week date rules are used for iso-week and iso-week-date.

Balance-group report provides handy way to produce subreports over reporting period, for example weekly balance group reports could be used for detailed weekly reports with summarizing monthly balance report.

Format

Output format of Balance-group report is same as balance report, except that there are multiple subset balances included into same report.

First (the leftmost) sum is sum of postings which are directly debiting or crediting that account (account tree node). If there are no such transactions, then this first sum is zero.

Second sum is recursive balance sum for that account tree (account and all its sub-accounts).

The sum reported under line is balance delta, e.g. value difference of reported accounts.

Balance delta is based and calculated only by values reported on the first column.

Balance group report configuration

Balance Groups are selected by reports.balance-group.group-by conf-setting.

See tackler.toml and report.balance-group.* for full information of balance group report configuration options.

If report-timezone is set, then transaction timestamps are converted into report’s time zone and zone info will not be displayed for balance groups.

If report-timezone is not active, then transaction timestamps are used as is, and no conversion will be done.

It is possible change how transactions are grouped by selecting different time zones for report-timezone. This will also change values of balance groups as transactions move to different balance groups.

Account Selectors

By default, all accounts are included into balance-Group report, but that’s not very interesting balance group report because balance over all accounts will be zero always.

Balance-Group report accounts can be selected by Accounts Selectors. This can be done by cli option --accounts, global report.accounts configuration option or by using report specific report.balance-group.accounts setting.

If there are no accounts selected within some balance group time period, then that balance group is not reported (e.g. not included into reports).

Balance delta is based and calculated only by values reported on the first column. This means that if sub-account is not listed by balance-group report, it will not be part of balance calculations.

If Accounts Selector is used balance-group report, please be make sure that all intended accounts and especially sub-accounts are listed for report.

For example: select only top-level "Assets" and all its sub-accounts: "Assets(:.*)?"

Compare following two reports:

--reporting.accounts "e1(:.*)?"
BALANCE GROUPS
--------------
2019-01
-------
                 1.00    6.00  e1
                 2.00    5.00  e1:e2
                 3.00    3.00  e1:e2:e3
=====================
                 6.00
--reporting.accounts "e1"
BALANCE GROUPS
--------------
2019-01
-------
                 1.00    6.00  e1
=====================
                 1.00

These two reports demonstrates difference between balance group deltas and recursive balance group sums for specific account tree.

Example report

Below are links to example balance-group reports with full auditing metadata.

Example output of balance-group report

Below is part of performance test output. Time span of Transaction set is one year, and each balance group is calculated by week (iso-8601 weeks with UTC timezone 'Z').

In the report em01 is monthly-day based expence account, and "am01" is monthly based assets account. For that reason, "e:ey2016:em01:ed01" and "e:ey2016:em01:ed02" have transactions on week 2016-W01 and "e:ey2016:em01:ed03, …​" on week 2016-W02.

BALANCE GROUPS
--------------
2016-W01
--------
                 0.00   -8.0000005  a
                 0.00   -8.0000005  a:ay2016
           -8.0000005   -8.0000005  a:ay2016:am01
                 0.00    8.0000005  e
                 0.00    8.0000005  e:ey2016
                 0.00    8.0000005  e:ey2016:em01
            2.0000002    2.0000002  e:ey2016:em01:ed01
            6.0000003    6.0000003  e:ey2016:em01:ed02
=====================
            0.0000000
2016-W02
--------
                 0.00   -114.0000019  a
                 0.00   -114.0000019  a:ay2016
         -114.0000019   -114.0000019  a:ay2016:am01
                 0.00    114.0000019  e
                 0.00    114.0000019  e:ey2016
                 0.00    114.0000019  e:ey2016:em01
            9.0000003      9.0000003  e:ey2016:em01:ed03
            8.0000002      8.0000002  e:ey2016:em01:ed04
           15.0000003     15.0000003  e:ey2016:em01:ed05
           18.0000003     18.0000003  e:ey2016:em01:ed06
           21.0000003     21.0000003  e:ey2016:em01:ed07
           16.0000002     16.0000002  e:ey2016:em01:ed08
           27.0000003     27.0000003  e:ey2016:em01:ed09
=====================
            0.0000000

Example report with commodities

Below is one entry of monthly based balance group report.

BALANCE GROUPS
--------------
2017-05
-------
                 0.00           3.00 ACME  Assets
                 3.00           3.00 ACME  Assets:Stocks
                 0.00        -359.75 EUR   Assets
              -359.75        -359.75 EUR   Assets:Cash
==========================
                 3.00 ACME
              -359.75 EUR
...