Budget Requirements
This section defines the requirements for Gnucash budgets. It is intended to present exactly what we want out of budgets so that we can stop going around in circles on the variety of issues.
Contents
Some Fundamentals
Before getting into the types of budgeting it is worth considering some fundamentals that apply to all budgets.
Time Periods
Budgets need to allows the user to set the overall time period for the budget (e.g. FY 17/18) and also the gradation of time within (e.g. budget by the month or the fortnight). Fortunately this is already a fundamental property of Gnucash and is easily implemented and maintained.
Constrained vs Planned Budgeting
For some entities, a budget is just a plan that informs whether they are meeting what they intended at the start of the period. In this case, it is no large issue to them if they overspend in one area - they are able to adjust their plans dynamically (typically because they are their own master and have enough cash in hand). Others are legally or morally constrained to their budget. They cannot (physically or perhaps morally) overspend on this allocated budget. If they don't have enough, they simply cannot spend. Note that this constraining action is subtly different from cash flow dependence constraints, discussed in the next section.
Constrained vs planned is not a type of budget - any of the budget discussed in sections below can be constrained or planned. It is a consideration to know what the entity using Gnucash is looking for (i.e. someone legally constrained will need to more accurately track their spending and plan better to ensure they don't go over, whilst a planned budget may not even be checked until the time period is over.
Cash flow dependent Budgeting
Again, not a type of budgeting, but simply constraints that may be applied to any type of budget. In this situation, the entity is dependent on sufficient cash coming in BEFORE being able to pay expenses or make transfers. Different from 'constrained vs planned' of the previous section because in that situation the person was constrained to meeting a defined budget amount. In this one, the person is constrained by not being able to spend the money until they receive it.
This situation is difficult to allow for in a budget, because it requires knowledge of when income/expenses are expected within the reporting period - something Gnucash budgets currently don't allow for. Gnucash budgets need a way of handling this situation, without an overly complex and unusable gui.
Budget "Categories", and grouping budget accounts in Gnucash
Budget Categories are used in some financial programs to allow users to group expenditures and allocate overall budgets to that group.
In Gnucash, the account tree groups together common accounts (which are basically categories of expenditure from a budget perspective), meaning the user does need anything separate to budget.
In some circumstances, users require a different way of grouping their budgeted accounts to make the overall budgeting process more useful. For example, say the user's account breakdown groups all expenses under one branch, and income under another. However, for budgeting they want to view everything from their rental property under one branch, everything from their shares account in another etc etc. Without being able to have a separate budgeting account tree from the main tree, this would require would require amending the main tree (which is not good accounting practice). Additionally, being able to create more than one different structure for different budget analysis would be impossible.
Long-term Budgeting, and saving up money in a budget
Many businesses and individuals need to track budgets over a long time period - even after closing the books and reopening new ones. Therefore budgets need some way of being able to hand across the budgeted amount to the next reporting period. If I budgeted $100 per month into my 'holiday' account, I want this amount to increase every time period until I eventually have a massive holiday expense out of that account when I take a trip to, let's say Cairns, Australia (awesome beaches! Where the bloody hell are ya?). In this case, I want the budgeted amount to continually get passed across to the total for the budget of the year, getting carried over to the next year (or time period) if I close the books. This money should not be touched for day to day use - i.e. When I check how much I can afford to budget I don't want this money being shown as able to be spent.
One question to be considered: Is this situation best handled by budgets increasing in value over time, or by users setting up virtual sub-accounts under the main cash account? I.e. if I set up a 'holiday' sub account to my main savings account, this amount still shows up within the total for the savings account, but I can see at a glance how much of that savings amount has been set aside for my holiday.
Types of Budgets People Use
Gnucash is designed to be a powerful and versatile accounting tool for both business and personal use. For this reason, it must allow budgeting for both typical business applications, and typical personal applications. Nothing implemented in budgets should violate the existing principles of the program (e.g. the double-entry book-keeping nature of Gnucash).
!!!!! PLEASE EDIT THE WIKI OR POST TO Gnucash USER EMAIL (gnucash-user@gnucash.org) if you think of any more types of budgeting!!!!!
Cash Flow Only Budgeting
Some people are only interested only in budgeting their expenses against their income (i.e. do not take into account. "Zero Sum Budgeting" is a form of cash flow budgeting that is based on having nothing left over - allocating every dollar of income (see section in this wiki on Zero Sum budgeting). In Cash flow budgeting, some people are dependent on this cash flow and some are not (i.e. some require the income before it can be spent, whilst others have reserves of cash that mean they are more interested in the figures at the end of the time period.
Others, who have reserves in place are more interested in being able to balance out the amount they are spending so that by the end of year they should be roughly on target. Others still prefer the zero-sum budgeting strategy of forcibly assigning expected income to expected expenses. The Gnucash Gui should be set up to allow intuitive and easy budgeting for people in these circumstances.
- Cash flow only budgeting doesn't necessarily mean "no" reserves - it simply means that the budget is only managing cash flow***
Ideally one looking to implement a cash flow budget would have a set amount of reserves to start with. This money would be allocated in either a reserve (savings) bucket and used towards expenses or not, it's really up to the user. As new income comes in a new decision is made by the user to either send the new income to the reserve bucket or to be used towards expenses, and the cycle repeats itself when the next paycheck comes in.
Some do not have reserves up front so they would need to save something towards the reserve each cycle until the reserve is built up to a set amount ie...3 months salary and the budget software should be flexible enough to allow this. --Chazdiezal (talk) 12:37, 30 December 2015 (UTC)
Full Budgeting
!!! ANYONE WHO KNOWS THE REAL NAME FOR THIS, PLEASE EDIT THIS WIKI OR EMAIL the user request email (gnucash-user@gnucash.org). !!!
The term full budgeting in this context refers to the concept of fully planning for the future states within an accounting system. I.e. it considers both cash flow (income and expense) but also the overall effect on the entity (change in assets, liabilities and/or equity). For example, If an entity (person, business, alien overlord...) budgets for receiving an income of $1000 per fortnight, but only budget expenses of $900. A cash flow budget is simply happy that we are 'in the green', spending less than we are earning (although zero sum will tell you to put the extra $100 to work...). In a full budget, every expected 'transaction' has an effect on the business. So we are budgeting for not only the $1000 income and $900 of expenses, but also for where the extra $100 is going to end up. Perhaps this is simply an increase to a cash account of $100. Or perhaps this residual is going to be transferred to a liability account to reduce debt. Perhaps $500 needed to be transferred from a shares account at the start of the month with that and $600 staying in a cash account at the end of the period. Regardless, a full budget must consider the initial state of all accounts (whether they be Income, expense, Assets, Liability or Equity) at the start of the period, then budget the changes made to them throughout the time.
Do not confuse this with testing the viability of different possible options (coming up next)...
Financial Options Analysis
Again, not sure what this is called (PLEASE EDIT THE WIKI OR WRITE TO THE USER EMAIL, gnucash-user@gnucash.org if it has a common name).
In this type of budgeting an entity wishes to compare a variety of different options available in order to analyse what the "best" course forward is. These get very complicated very quickly and would typically require multiple separate 'budgets' for each potential option, with the ability to nicely compare them at the end.
Mobile Integration For Budgeting
Many users also require integration with the mobile application and desktop version. The basic desire is to be able to check their phone/tablet whilst out/about and be able to review their budget and expenditure against an account to help inform purchasing decisions (e.g. "should I get pizza tonight? I budgeted $100 this month and I've already spent $130! Damn, I better buy a cheap frozen meal..."). At the time of writing (Dec 15), the mobile application does not open '.gnucash' files meaning that full integration is not available. This is separate from budgets - users should file enhancement requests with the Gnucash mobile app for this (or better yet, help them out with their development efforts!!!).
User Gui Requests/Wants
In this section we break down some of the specific design/layout requests that some persons wish for.
Hiding accounts not of Interest
Budgets can often get quite large. Most users are interested in being able to hide accounts that are not of interest to them. It is unclear (to the present author, Matt G, 31 Dec 15) whether they are aware of Gnucash's ability to set accounts as hidden and show/hide them at will.
Ability to look at Budget Evolution over time
It can be very handy to be able to understand how your budget has changed over time. This allows the user to better analyse the surprises that occurred and improve their budgets for future. A LOT MORE ANALYSIS IS NEEDED HERE! How would this information be viewed for more than one budget? Should the user select 'baselines' of budgets? Or is a new baseline formed everytime the user changes and clicks "Save"? More thought on who would use this and how is needed.
Automation of Common Actions
The following ideas are present for actions the budget should be able to do when requested: - Spread Amount over all future periods. Example: Want to budget $1000 over the course of a whole a whole year when budgeting monthly. Want to be able to enter 1000 in the first spot to begin the budgeting, right click and select "Spread over whole period". The budget then calculates the amount to put in each period from this spot to the end of the budget to spread the $1000 over the rest of the period broken into even chunks. - Be able to set the future budget based on past expenditure. Sometimes this expenditure will be the average of the last X months, and sometimes it would be the average of a specific defined time period by the user. - ANY MORE AUTOMATION IDEAS? PLEASE EDIT THE WIKI OR EMAIL gnucash-user@gnucash.org.
Gnucash Budget Implementation
This section looks more at how Gnucash budgets are to be implemented, noting the user requirements identified above.
General Gui vs Reports
Fundamentally, Gnucash should be useful. Having said this, a degree of design simplicity is required. For this reason, it should be fairly clear what should be expected out of the gnucash budget gui, and what is created by running reports.
Basically, anything needed to create/update/edit the budget needs to be within the gui. Any information gathered for processing of information or analysis should be done within reports.