Budgeting - Let's decide what we want!
Justin Kelly
jkelly at bkrrosenbergs.com
Fri Aug 29 12:03:33 CDT 2003
Stewart
Great proposal, but personally i think it would be much easier just to
have a feature that gives you an option to put a monthly budget figure
in for each expense/income account in the chart if accounts and allow
you to classify accounts into different groups(like your proposal
(required, living, fun, etc..)), and have a simple report of actual
total of the classified expense accounts versus budget. Personally i
find the idea of virtual accounts a bit unnecessary.
Just my 2c
Justin Kelly
-----Original Message-----
From: Stewart V. Wright [mailto:svwright+lists at amtp.liv.ac.uk]
Sent: Friday, 29 August 2003 1:22 AM
To: gnucash-user at gnucash.org
Subject: Re: Budgeting - Let's decide what we want!
Hi All,
Me again!
Here is my contribution to the (hopeful) budgeting debate...
(It is a txt version of a LaTeX document that I wrote. Sorry about
the sometimes dodgy line breaks...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Budgeting in GnuCash
Abstract
A discussion of a potential way of implementing
budgeting in GnuCash is presented. This document is
intended as an aid to stimulate discussion and clarify
the GnuCash userbase's wants.
1 Introduction
There are at least two types of budgeting that GnuCash
users would undoubtedly like to see: Personal and Business.
I cannot offer a clear insight for business budgeting
requirements, as each business is different and I've
been out of the game for a few years now.
However I know what I would like to see in a personal
budget and this is what I will be presenting. This is
in fact the sort of thing I did with my business, so it
might be usable for others too.
2 Budgeting in Practice
Budgeting is not as simple as transferring cash from a
bank account into a number of other accounts and then
making transactions from them. It is as simple as
having "virtual" accounts and then pretending that the
transactions occurred in one of these, whilst knowing
in actuality that the transactions are made in a few
real accounts. People might call the "virtual" accounts
something different, envelopes, cookie jars, or the
like but it doesn't change the concept. This is how I
budget, and I expect how most people do it. However let
me make it clear by giving an example.
2.1 An Example
John is a single guy, who has a net income of $24,000.
He sits down and fills in all his financial inflows and
outflows in GnuCash for three months to get an idea of
what he is spending his money on.
John decided to group the various of his expenses into
broader categories to make budgeting easier. His broad
categories are called Required, Living, Fun and
Savings. The Required category includes things like
Rent Payments, House and Medical Insurance. Living are
his everyday expenses on groceries, laundry costs and
the like. Fun is not surprisingly are the categories
that are required to keep him sane, but aren't strictly
necessary costs, like taking his girlfriend out for
dinner, going to the pub and that occasional copy of
Sports Illustrated.
After looking at his Cash Flow report for the last
three months, John decides that the correct
distribution of his income should be:
Required 50%
-------------------
Living 20%
-------------------
Fun 20%
-------------------
Savings 10%
This leaves a little extra about his predicted expenses
in the first three categories, but that is just
prudent... When John's next paycheck comes along he
transfers, on paper, the appropriate percentages into
these virtual categories/accounts.
Further transactions are entered in GnuCash in their
appropriate accounts. John also records the
transactions as income/expenses in the virtual
accounts. Thus he knows exactly how much he has to
spend on expensive gifts for his girlfriend at any one
time by looking at the balance of the Fun (virtual) account.
2.2 The Problem
The problem with this sort of budgeting is that
currently it is not possible to implement this virtual
division of income in a simple manner that also allows
the easy reconciling of bank statements that (in my
opinion) is a great aspect of GnuCash.
I do however have a suggested method of implementing
such a system which I believe will add to the strengths
of GnuCash without changing the behaviour for anyone
who doesn't wish to work in this manner. This is an
important requirement of any budgeting extension to
GnuCash. Those who don't want to budget in GC shouldn't
have to do anything differently to the way they do now.
3 Budgeting in GnuCash
This section suggests a slight extension to the account
structure of GnuCash to allow the budgeting approach of 2.1
without modifying the current behaviour for most users.
3.1 Virtual Accounts
Budgeting is often achieved by the use of an imaginary
division of income and expenses into user defined
categories. Keeping with the terminology of GnuCash
these imaginary categories will be known as Virtual
Accounts (VAs).
In summary VAs are a imaginary asset/liability/expense
source that are used to divide income and expenses as
defined by the user. The major difference from regular
Accounts is that a leaf VA will mirror all expenses to
the first (real) Account that sits above it. VAs will
not contribute to the calculation of assets,
liabilities or expenses of the Accounts under which
they are leaves.
In addition to entries in a VA leaf of an Account each
entry will be listed in a parent VA for each category.
Once again an example might be of assistance.
3.1.1 VA example
Using the example described in 2.1 a simplified account
tree might look something like
+-----------------------------------------------------------------------
-----
| Assets
| \hookrightarrow | Current Assets
| \hookrightarrow | Bank Account
| \hookrightarrow | (V)
Living
| \hookrightarrow | (V) Fun
| \hookrightarrow | Cash in Wallet
| \hookrightarrow | (V)
Living
| \hookrightarrow | (V) Fun
| \hookrightarrow | (V) Living
| \hookrightarrow | (V) Fun
|
| Expenses
| \hookrightarrow | Entertainment
| \hookrightarrow | Music/Movies
| \hookrightarrow | (V) Fun
| \hookrightarrow | Rent
| \hookrightarrow | House
| \hookrightarrow | (V)
Living
+--------------------------------------------------------------+--------
-----
where the virtual accounts are denoted by the '(V)'."
For example John buys a round of drinks at the pub
costing $10 and puts it in his Fun VA. If the round was
bought with cash from John's wallet the transactions
would look like the following. Firstly there would be
the entry in his Expenses:Entertainment:Pub account:
+-----------+-------------------+-----------------+----------+---------+
---------+
| Date | Description | Transfer | Expense | Rebate |
Balance |
+-----------+-------------------+-----------------+----------+---------+
---------+
+-----------+-------------------+-----------------+----------+---------+
---------+
| 18/08/03 | Round at the pub | A:CA:W:(V) Fun | 10.00 | |
|
+-----------+-------------------+-----------------+----------+---------+
---------+
where I have simplified the account structure as A:CA:W
representing Assets:Current Assets:Cash in Wallet. This
would obviously have a corresponding entry in the
Assets:Current Assets:Cash in Wallet:(V) Fun account
+-----------+-------------------+-----------+----------+-------------+--
-------+
| Date | Description | Transfer | Deposit | Withdrawal |
Balance |
+-----------+-------------------+-----------+----------+-------------+--
-------+
+-----------+-------------------+-----------+----------+-------------+--
-------+
| 18/08/03 | Round at the pub | E:E:Pub | | 10.00 |
|
+-----------+-------------------+-----------+----------+-------------+--
-------+
This is all entirely consistent with the current
structure of GnuCash. The difference is in the fact
that there are two other locations where this
transaction would appear. Firstly it would be listed in
Assets:Current Assets:Cash in Wallet, the branch
account of which Assets:Current Assets:Cash in
Wallet:(V) Fun is a leaf.
+-----------+-------------------+-----------+----------+-------------+--
-------+
| Date | Description | Transfer | Deposit | Withdrawal |
Balance |
+-----------+-------------------+-----------+----------+-------------+--
-------+
+-----------+-------------------+-----------+----------+-------------+--
-------+
| 18/08/03 | Round at the pub | E:E:Pub | | 10.00 |
|
+-----------+-------------------+-----------+----------+-------------+--
-------+
The central difference with this transaction is that it
would be a copy of the transaction in A:CA:W:(V) Fun
and all the transactions in the VA leaves would be
mirrored like this. The second location that the "Round
at the pub" transaction would appear is the trunk (V)
Fun account. All transactions in the VAs lying under
any of the Assets or Liabilities accounts linked with
Fun would appear in this account. Thus at a glance the
total value of the VA Fun would be clear, much as it is
with Assets, Liabilities, Income and Expenses currently.
Transfers of money into VAs would work in exactly the
same way, but as the transfer from the Assets account
is to a VA there would be no effective change in the
balance of the accounts. For example if John transfered
$500 into his Fun VA from his savings account the
transaction would look something like:
+-----------+--------------+---------------+----------+-------------+---
------+
| Date | Description | Transfer | Deposit | Withdrawal |
Balance |
+-----------+--------------+---------------+----------+-------------+---
------+
+-----------+--------------+---------------+----------+-------------+---
------+
| 12/08/03 | Salary | I:Salary | 1000.00 | |
1243.45 |
+-----------+--------------+---------------+----------+-------------+---
------+
| 18/08/03 | Budgeting | | | |
|
+-----------+--------------+---------------+----------+-------------+---
------+
| | (V) Required | 500.00 | |
|
+---------------+----------+-------------+---------+
| | (V) Living | 200.00 | |
|
+---------------+----------+-------------+---------+
| | (V) Fun | 200.00 | |
|
+---------------+----------+-------------+---------+
| | (V) Savings | 100.00 | |
1243.45 |
+--------------------------+---------------+----------+-------------+---
------+
| 21/08/03 | Groceries | E:Groceries | | 24.00 |
1219.45 |
+-----------+--------------+---------------+----------+-------------+---
------+
Thus no change in the balance of the savings account
would occur when a transaction was made to or from a VA.
3.2 Limitations
This approach is neither complete or without holes in
the logic. Two that spring to mind I will address
briefly here
3.2.1 Account totals in leaf VAs
The most obvious flaw that would come to light when
using an approach like the one described above in
GnuCash is a result of the Double Entry accounting. It
is probably best described (again) by an example. I go
to the bank and withdraw $100 to put in my wallet.
Currently this sort of transaction is simple in
GnuCash. However with VAs would I need to specify how
much of the $100 in my wallet is to be used for Fun
expenses, and how much for Living costs? If I didn't
transfer money into these VAs I would constantly be in
the red in the leaf accounts of my A:C:Wallet account.
I don't have a perfect solution to this. My current
thinking is that the VA leaves would always be in the
red as the transfer of cash into the VAs would be into
the trunk accounts --- all transactions, both expenses
and liabilities would appear there so it is the branch
accounts that would show your financial position, not
the leaf accounts. Undoubtedly this solution would make
some people feel uncomfortable, so perhaps a judicious
transfer at the end of the pay period to balance the
VAs is an alternative.
3.2.2 Automation, Druids and Future Expenses
An email from Phil Longstaff (see the gnucash-devel
mail archive) made me question whether this approach
answers all the budgeting requirements. Phil pointed
out that there are at least two parts to budgeting:
1. Tools to produce a budget - forecasting, GUI to set
up budget
2. Tools to monitor a budget - budget vs actual reports
I think the current proposal answers some of the
problems of the second point, but as to the first???
Both Phil and I have a need for a month-by-month
budget. As he points out there are other people who
have mentioned a need/desire for longer budgets
possibly for an 18 month project. Perhaps one of these
people can offer some insights for how to implement
such a budget.
4 Resources
The resources that might come in useful for this
discussion are
GnuCash The GNU way to manage your money! [http://www.gnucash.org/]
gnucash-users The GnuCash users mailing list:
[https://lists.gnucash.org/mailman/listinfo/gnucash-user]
gnucash-devel The GnuCash users mailing list:
[https://lists.gnucash.org/mailman/listinfo/gnucash-devel]
The Motley Fool Living Life Below Your Means:
[http://www.fool.com/specials/2000/sp000412lbym.htm]
What Does It Take To Invest Like a Fool?
[http://www.fool.com/school/13steps/13steps.htm]
--
European Citizens: Please do a little work to convince the European
Parliament to reject software patents. This page explains the issue
and provides suggestions for action; take the time to participate.
http://swpat.ffii.org/
More information about the gnucash-user
mailing list