Balance Group Report

Balance Group Report is combined report of multiple balance reports based on time selector. Each Balance Group produces sum of selected accounts, and total of those account sums for the time period of that group (year, month, day, etc.).

Tackler’s Balance family reports produce more information than what you find in other PTA tools.

The default Balance and Balance Group calculate sums for all accounts which have postings, but also for all children (aka account tree balance). In some cases this information of children balances is not needed, and Tackler supports two different balance family reports, Flat and Tree Balance Group Reports.

In examples belwo we can see that in June 2024 our spending was dominated by candy and December 2024 by ice cream.

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 sub-reports over selected reporting period. For example weekly balance group reports could be used for detailed weekly reports combined with summarizing monthly balance report.

Flat Balance Group

With flat Balance Group Report the balance is reported only for those accounts which have had postings. This is similar report what you will find in other PTA tools.

report.balance-group.type = "flat"
Report Time Zone
        TZ name : UTC

Balance Group Report
--------------------
2024-06
-------
                 2.50   Expenses:Sweets:Candy
=====================
                 2.50
2024-09
-------
                12.00   Expenses:Food:FastFood
=====================
                12.00
2024-12
-------
                 3.00   Expenses:Sweets:Ice·Cream
=====================
                 3.00

This report type is selected by configuration setting report.balance-group.type = "flat" in tackler’s configuration file tackler.toml.

Tree Balance Group

With tree Balance Group Report the first column is postings for that account and second is cumulative sum of that account and all children.

report.balance-group.type = "tree"
Report Time Zone
        TZ name : UTC

Balance Group Report
--------------------
2024-06
-------
                 0.00    2.50  Expenses
                 0.00    2.50  Expenses:Sweets
                 2.50    2.50  Expenses:Sweets:Candy
=====================
                 2.50
2024-09
-------
                 0.00    12.00  Expenses
                 0.00    12.00  Expenses:Food
                12.00    12.00  Expenses:Food:FastFood
=====================
                12.00
2024-12
-------
                 0.00    3.00  Expenses
                 0.00    3.00  Expenses:Sweets
                 3.00    3.00  Expenses:Sweets:Ice·Cream
=====================
                 3.00

This report type is selected by configuration setting report.balance-group.type = "tree" in tackler’s configuration file tackler.toml.

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

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

The flat and tree balances can be selected with report.balance-group.type = "flat" or report.balance-group.type = "tree" configuration settings.

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

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:

--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
----

.`--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 are example balance group reports with mixed commodities in flat and tree form.

The group-by set to month.

report.balance-group.type = "flat"
BALANCE GROUPS
--------------
2017-05
-------
                 3.00        ACME  Assets:Stocks
              -359.75        EUR   Assets:Cash
==========================
                 3.00 ACME
              -359.75 EUR

And same report in tree form:

report.balance-group.type = "tree"
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