SHOULD I BALANCE MY CHECKBOOK?

EXECUTIVE SUMMARY

Here we address the question: Should I balance my checkbook? As part of answering that you will learn a little of the history of financial record keeping and the role it plays in measuring success. Starting with how we value things in a secular world, you will learn about optimization. This will lead to making choices that help you achieve a particular goal. Success is measured accordingly. It is important that you question specifics about the information that describes your life, who gets that information and when.

CONTENTS

Why maintain records? Whose life is it anyway?

In this chapter you will learn about record keeping, a pedestrian but important aspect of data curation. Banking has a storied history in society. Most of it is told from the perspective of the institution. Here we will zoom in on you, the bank customer, the most micro of viewpoints, who is an individual data point. This is your chance to see how your actions fit into the wider world of personal finance.

Economics uses a sterile term to describe a financial beginning point, your “initial endowment.” Regardless of the circumstances of your birth you begin with a brain and natural abilities. Some people are born into wealth but most of us are not. There are many examples of people beginning with nothing more than their physical and mental abilities who accomplish great things and amass substantial wealth. We will assume you have augmented your initial endowment at birth with an education you pursued with enthusiasm, having studied hard and earned high marks from your teachers. You have graduated, obtained a job and received a few paychecks which you deposited into a bank account. Naturally, you have also incurred expenses, received a credit card, rented an apartment, signed up with the local utility company for gas, electric and water. The draw of online commerce finds you a willing customer. You avail yourself of the convenience of Amazon, auto-draft payments and other electronic means of survival in the digital age. You are Living the Dream.

Each month your bank sends you a statement, perhaps to your cell phone. Or perhaps just tells you the statement is available to be downloaded. Why, you ask, should you engage in the time-consuming, antiquated and quaint task of checking the bank’s calculations against your own to see if they agree? This is a process called “reconciling” your bank statement with your checkbook balance. When you download your statement you may find something like the illustration below intended to guide you through the process. In pre-historic days when statements only arrived on paper, some of us actually used a #2 lead pencil to fill in the form below and make the calculations it implies. How very prosaic.

Again, you ask: “Why bother? I don’t even own any checks. Everything I do is online, cashless. This is something that went out with cassette tape recorders. I can just use a commercial accounting software or better yet, just let the bank do it for me. Why is it important to do this?” These are valid questions. In the old days you wrote checks, handed them to whomever you wanted to pay and it might take that person several days or several weeks for the check to be cashed and find its way back to your bank. Thus “reconciliation” was about comparing the checks you had written leading to the resulting balance shown in your personal check register to the checks that had actually cleared the bank and the balance the bank shows on the statement. With near instantaneous electronic transactions today it is possible for all transactions to clear in the same month they took place. This definitely reduces the importance of reconciliation. But there are other good reasons to do it.

Before we dismiss this as a useless exercise lets take a look at an average month

The budget process

keys={"rec no","date","item","debit","credit"};
list={{1,DateObject[{2020,11,01},DateFormat->{"Month","/","Day","/","Year"}],"Paycheck",0,3000.00},
{2,DateObject[{2020,11,01},DateFormat->{"Month","/","Day","/","Year"}],"Taxes",745.00,0},
{3,DateObject[{2020,11,01},DateFormat->{"Month","/","Day","/","Year"}],"Rent",1500.00,0},
{4,DateObject[{2020,11,02},DateFormat->{"Month","/","Day","/","Year"}],"Utilities",143.75,0},
{5,DateObject[{2020,11,04},DateFormat->{"Month","/","Day","/","Year"}],"Groceries",244.80,0},
{6,DateObject[{2020,11,05},DateFormat->{"Month","/","Day","/","Year"}],"Restaurant",127.60,0},{7,DateObject[{2020,11,07},DateFormat->{"Month","/","Day","/","Year"}],"Restaurant",85.96,0},
{8,DateObject[{2020,11,10},DateFormat->{"Month","/","Day","/","Year"}],"Student Loan Pmt",497.33,0},
{9,DateObject[{2020,11,15},DateFormat->{"Month","/","Day","/","Year"}],"Credit Card",510.88,0},
{10,DateObject[{2020,11,15},DateFormat->{"Month","/","Day","/","Year"}],"Paycheck",0,3000.00},
{11,DateObject[{2020,11,01},DateFormat->{"Month","/","Day","/","Year"}],"Taxes",755.00,0},
{12,DateObject[{2020,11,17},DateFormat->{"Month","/","Day","/","Year"}],"Hotel",575.21,0},
{13,DateObject[{2020,11,25},DateFormat->{"Month","/","Day","/","Year"}],"Netflix & other",204.67,0},{14,DateObject[{2020,11,05},DateFormat->{"Month","/","Day","/","Year"}],"Amazon",346.85,0},
{15,DateObject[{2020,11,05},DateFormat->{"Month","/","Day","/","Year"}],"Travel",505.00,0}};
convertListToAssociation=list|->AssociationThread[keys,list];
data=Map[convertListToAssociation,list];
ds=Dataset[data]

We have a problem. When we total up all the payments for this month that total exceeds the deposits to the account. Now we have a second reason for reconciliation. We are want to make sure we have enough money in our account to pay all our bills. If we started out with a positive balance in the account at the beginning of the month of more than the deficit for the present month, we are still solvent. But we must be careful about future months, for eventually a series of deficit months will erase our reserves and some payments will not be made.

ds[All,"credit"]//Total
ds[All,"debit"]//Total
%%-%

The opposite occurs for people who are more frugal. Suppose your personal spending restraint eliminates “Credit Card” and “Travel”? There is a net positive balance at the end of the month.

ds[All,"credit"]//Total
(ds[All,"debit"]//Total)-Plus@@(ds[#,"debit"]&/@{9,15})
%%-%

Reconciling your bank statement is really an exercise in discipline. A big part of discipline is controlling one’s spending. The phrase “living within your means” is often used to describe people who are living on a budget and work hard to spend less than they earn. So the act of bank reconciliation brings with it the comparison of your spending to your budget. Let’s add a budget to our dataset.

budget={0,-750.00,-1500.00,-150.00,-250.00,-125.00,-100.00,-500.00,-500.00,0,-750.00,-625.00,-200.00,-350.00,-100.00};
ds1=ds[MapThread[Append[#1,"budget"->#2]&,{#,budget}]&]

It is then easy to compare our actual spending to the budget and see how much each actual item varied from the budget

ds2=ds1[All,<|#,"variance"->#"debit"+#"budget"|>&];
ds2[[All,3;;7]]

ds2[All,"variance"]//Total

A dedicated savings plan

Eliminating credit card and travel saves $1,015.90. Such a spending reduction is dramatic. It is 1/6 of your gross income in this example. More depressing is the fact that it is nearly a quarter of your net income after taxes. To not spend $1,000 is a lot of deprivation. Going without all those credit card purchases and travel takes a lot of the fun out of life. Later we will become more formal about how these choices are made. For now we will reduce the spending-budget difference in the next example to make it more "livable" and realistic.

Suppose you are very disciplined, adjust all your spending in various ways, and are certain that you have $50 remaining each month. There is a very famous  book written nearly 100 years ago about a time 4,000 years ago, The Richest Man in Babylon, that describes what it means to "pay yourself first" by putting aside money in savings before giving money to other people. If you work for 40 years you will accumulate nearly $60,000 from just that $50 a month if interest rates average 4% per annum.

SumOfAnnuity[n_,i_]:=(((((1+i))^n)-1)/i);
SumOfAnnuity[480,.04/12];
Print["$50 per month at 4% for 40 years becomes $"<>ToString[AccountingForm[% 50,{8,2},DigitBlock->3]]]

It is likely that you will enjoy periodic salary increases. Suppose those increases average 5% annually and you increase your annual contribution to savings by the same increment each year. Under those conditions you would have nearly $135,000 at the time of retirement. The alert reader will note that I have changed from $50 monthly to $600 annually to simplify the calculation. With monthly compounding this amount would be more.

fvGA[cf_,intrt_,grrt_,n_]:=cf (((((1+intrt))^n)-(((1+grrt))^n))/(intrt-grrt));
fvGA[600,.04,.05,40];
Print["$50 per month increased 5% annually and saved at 4% interest for 40 years becomes $"<>ToString[AccountingForm[% ,{8,2},DigitBlock->3]]]

Perhaps it is useful to know how the answer changes with monthly interest compounding. Over that long period of time it adds nearly $5,000

moComp[sav_]:=AccountingForm[Plus@@(MapThread[#1 (((1+((.04)/12)))^(#2))&,{Flatten[ConstantArray[NestList[(1.05 #)&,sav,40][[#]],12]&/@Range[40]],Range[480,1,-1]}]),{8,2},DigitBlock->3]
moComp[50];
Print["$50 per month increased 5% annually and saved at 4% compounded monthly for 40 years becomes $"<>ToString[AccountingForm[% ,{8,2},DigitBlock->3]]]

One might object that interest rates might not be as high as 4%, which is true. But they might also be much higher. Over the past 100 years interest rates have varied between near zero and 18%. There are also many different interest rates for different types of interest bearing investments. Over the next 40 years it is reasonable to assume that interest rates could average 4%. Another objection might be the risk one takes in achieving any rate of return. Generally, higher rates mean higher risk. For our purposes we assume that 4% can be earned with security that comes with a guarantee from a responsible institution or government.

Other modules deal with probability. There is a place for it here as well. Perhaps the most common objection to all of this is that it is boring. People who manage their spending and save their money over decades are the plodders in our world. They don’t make headlines; they don’t appear on television or the cover of fashion magazines. Rather than all this tedious saving at virtually guaranteed returns, why don’t we just buy lottery tickets and make a bundle fast?

Lotteries in the small and the large

It has been said that government run lotteries are a tax on people who are bad at math. There is some truth in that. It is also true that you are playing the lottery with your life when you cross a busy street. Perhaps the most challenging decision people face is when to take risk and how much. Often that is a challenge because risk is hard to measure precisely.

Not so with The Lottery. Odds of winning are widely available. It is not uncommon for the odds to be 1 in 200 million, making the chance of winning very small

1/200000000.//AccountingForm

However, that is just for one lottery ticket. Suppose a ticket costs $2 and you have $50 in your budget (formerly for saving) so you can buy 25 of them. The odds improve somewhat

25/200000000.//AccountingForm

This is still pretty small. And it does not change from week to week. Only buying multiple tickets for the same lottery changes the odds. Suppose you are willing to put your entire life commitment to saving ($50 per month for 480 months) in a single lottery. You could buy 25 x 480 = 12,000 tickets for $24,000. The odds are then

100 ((25 480)/200000000.)//AccountingForm

Your odds are now six one-thousandths of a percent. Here is a sobering question: Assume you have available $24,000. Are you willing to bet all of it for a six one-thousandths of a percent chance at winning anything? Questions like these should stimulate your thinking about your preference for risk when your entire financial life is involved. However, it may be said that your life is the sum of your choices. Thus, a weekly choice adds up over time.

Finally, the answer to our question

Should you balance your checkbook? The answer is not what you might expect.

Notice that we have 15 lines in our database in a typical month. That includes, for ease of exposition, some lines that are aggregates (Utilities are usually at least two or three, Groceries are multiple trips to the store and multiple items, credit card statements have a dozen or more individual purchases, likewise for Amazon). In fact, in a 30 day period it would be normal to have perhaps 100 transactions. Your working life is about 480 months. That is 48,000 data points. 

Companies pay real money to talented programmers to figure out what a segment of the population is doing based on that segment producing 48,000 transactions. Whose life is it? It is yours and it constitutes a database, just stretched over time. Maybe you do not actually reconcile your checkbook. But there are good reasons for paying attention to your personal finances. The steady drip, drip, drip of deficit months takes its toll. Someday you will be old and either told to retire or want to retire. A lifetime of good habits pays off. If you don’t smoke, you eat properly and exercise, your body is healthy in its later years. If you budget and control your spending, your finances are healthy at retirement. Every major corporation, every successful investor, every well-respected organization keeps financial records very similar to your checkbook. They all follow the data produced by those records to make sure things are running well. Your finances deserve the same. It is your life, your data and you should be the first to know what it contains and what it says about your habits.

The functional relationship between choices and money

Moving from the practical to the theoretical, we look for general rules we can use to measure and predict outcomes. To introduce this we will simplify both our dataset structure and time itself. We will assume (1) you only purchase three items, food, clothing and shelter (f, c, s); and (2) you live an ordered existence within each of four distinct ten-year time periods. Your purchase pattern and behavior is a function of location. That is, where you live is the independent variable which influences the response variables f, c, and s. We will expand all of this later to make it more realistic. Model building must start slow and simple.

The framework of our new dataset appears below where only spending is shown. Income is another issue.

list2={
{1,"recurring","Food",f[x],0},
{2,"recurring","Clothing",c[x],0},
{3,"recurring","Shelter",s[x],0}
};
data2=Map[convertListToAssociation,list2];
dsFct=Dataset[data2]

The four ten year time periods are NOT independent, as we shall see. And, the four locations, {a,b,c,d}, are very different. The first of these, a, where you get your first job out of college is a small town in rural Minnesota where a large farm implement company hires you as the manager of its local retail outlet. Below is the framework for the subset of data for that time period in that location where “a” = Minnesota determines your buying habits.

dsOne=dsFct/.x->a

The specific functional form chosen to model your economics in these first ten years is fairly simple, with a single variation occurring when get your first salary increase, you marry and start a family.

ListLinePlot[Table[If[x<=3,3,5],{x,0,10}],PlotRange->All,AxesOrigin->{0,0},Frame->{True,True,False,False},FrameLabel->{"Year","Spending/Income",None,None},FrameTicks->{Automatic, None}]

[A side comment] There are various mathematical conveniences that, if observed, makes for well-behaved and useful models. One of these is avoiding sharp corners or “kinks” in a plot of your function as you see above. Analysis is easier when curves are smooth. Below you see an example with a slider to allow for introducing variety.

Manipulate[Plot[Evaluate[1/(1+Exp[-a x])],{x,-5,5},
PlotStyle->Red,Ticks->None, Axes->None],
{{a,2,"shape factor"},.5,6, Appearance->"Labeled"},Paneled->False
]

Time passes. At the end of your tenth year you have impressed your company and they promote you to a large facility in Baton Rouge, LA. The transfer brings with it many changes. Housing in a city is more expensive so you buy a condo instead of renting a house as you did in MN. Your clothing needs are starkly different in the humid semi-tropical area where you relocate. Nearer the ocean you eat more seafood. You prosper in b, your new location.

dsTwo=dsFct/.x->b

A new functional form may be appropriate for the new you as your career takes off. At the 5 year mark you are promoted to regional manager with a big salary increase. It just seems like it can’t get any better. While spending is our primary focus we must not completely ignore income. The plot below indicates a non-decreasing function. Two concepts are important here. One is that very few things (nearly none of them in economics or personal finance) go up continuously. It is dangerous to assume that everything will continue as it has in the past. The second is the subject of a very good book reporting research on people who do organise their lives and spending well. The book is The Millionaire Next Door. It describes the important difference between income wealth and asset wealth.

Plot[(E^(.2 x)),{x,1,10},PlotRange->All,AxesOrigin->{0,0},Frame->{True,True,False,False},FrameTicks->{Automatic, None},FrameLabel->{"Year","Income/Spending",None,None}]

Near the end of the second epoch of your life a strange thing happens. One day you wake up and realize that about half of your life is in the books, the spring in your step is not so light anymore, and the future has something you had not considered before now: a limit. This is known as “mid-life crisis” in many cultures. This is a state of mind that frays nerves, tests marriages, and wreaks havoc on finances. For a year or two around this time the specific function form of your life path looks somewhat like this.

sample=RandomFunction[WienerProcess[], {0,1,.001},2]["States"];
ListLinePlot[Transpose@sample,ColorFunction->"Rainbow",ImageSize->300]

Change is demanded. You resign from Megacorp after twenty years, cash in your company retirement plan, move to the foothills of Southern California, join a nudist colony and become a Vegan. You start a company to make bongo drums out of recycled automobile tires. This, third phase of adulthood in location c, influences your buying habits.

dsThree=dsFct/.x->c

Operating a business is not like drawing a salary. As you settle into your new life you recapture some of your sanity, again embrace the mathematics of life and a more complex specific functional form. Below you see just one example of such a form, a sort of barely controlled chaos. On the right a positive trend line. This is your dedication to your lifelong savings plan. In good times and bad, no matter what, you put away 10% of your earnings, paying yourself first.

npvPlt=Plot[(((500 (((1+0.04+0.04 Sin[((2 π k)/3)]))^k)/.1)/(((1+.05))^k))+((∑_(n=1)^k)Evaluate[((500 (((1+0.04+0.04 Sin[((2 π k)/3)]))^(n-1)))/(((1+.05))^n))])-500/.08),{k,1,10},PlotStyle->{Hue[0.9`],AbsoluteThickness[2]},Axes->None,Frame->{True,True,False,False},FrameLabel->{"Time","Income/Spending"},FrameTicks->{Automatic,None}];
line2=Graphics[{Dashing[{0.05,0.01}],Line[{{3,23.508},{9,2463.4}}]}];
GraphicsRow[{npvPlt,Show[{npvPlt,line2}]}]

Note: Convoluted as it may seem, this is the real world. The equation that produces the plot above includes the familiar net present value equation learned in every business school on the planet. The large bumps and grinds as it climbs in an upward drift are the occasional war, pandemic or sub-prime housing meltdown. The smaller blips are local earthquakes, fires and floods. Life is messy.

Your hard work and good fortune pay off. Bongos Are Us attracts a following, then capital and goes public. After ten years you have key personnel in place to take it to the next level. Weary of the wars of commerce, you take an offer of a leveraged buyout from your employees, move to a small farm on a lake in New Hampshire, location = d, where you learn about semi-retirement. Once again, your tastes and requirements change so the functional form changes as well

dsFour=dsFct/.x->d

The alert student will note below that what follows is quite a different illustration. The axes are labeled differently and we have some new Greek letters representing parameters. With a lifetime of saving and investing comes stability in your income and spending levels (the patterns may change but the quantities have leveled off) so we leave that discussion for the moment. What is now paramount is managing the nest egg you have nurtured over the decades so that your remaining lifetime resources equal or exceed your remaining lifetime obligations. The word “resources” is broader than salary or income and can include spending accumulated principal; likewise with “obligations” which may include bequests to heirs in addition to personal consumption. In this process you learn about a new tradeoff: Risk and Return. Your primary “job” during retirement is managing your wealth in a way that supports you for the remainder of your life (and is the subject of an entirely different story for another time).

Manipulate[
asset1s=SRandom[1000,{alpha, beta,gamma,delta},1];
asset2s=SRandom[1000,{alpha, beta,gamma,delta},1];
asset3s=SRandom[1000,{alpha, beta,gamma,delta},1];
pfloS=Transpose[{asset1s,asset2s,asset3s}];
samples100=Partition[SRandom[100000,{alpha,0,1,0},1],1000];
asset1n=RandomReal[NormalDistribution[Mean[asset1s],StandardDeviation[asset1s]],1000];
asset2n=RandomReal[NormalDistribution[Mean[asset2s],StandardDeviation[asset2s]],1000];
asset3n=RandomReal[NormalDistribution[Mean[asset3s],StandardDeviation[asset3s]],1000];
pfloN=Transpose[{asset1n,asset2n,asset3n}];
samplen100=Partition[SRandom[100000,{2,0,1,0},1],1000];
plotN=ParametricPlot[EfficientFrontier[MeanVector[pfloN],covariance[pfloN],x],{x,-0.1,1},Frame->{True,True,False,False},FrameLabel->{"Risk","Return"}, PlotRange->All,PlotLegends->Placed[LineLegend[{Black,Red},{"normal","stable"}],{{0.7,1.1},{0.5,1.1}}],Background->{255/256,244/256,212/256},PlotStyle->{Black,Thickness[.001]}];
plotS=ParametricPlot[EfficientFrontier[MeanVector[pfloS],covariance[pfloS],x],{x,-0.1,1},PlotRange->All,Background->{255/256,244/256,212/256},PlotStyle->Hue[0.9]];
Switch[tab,1,
Show[plotN,plotS,AspectRatio->1.2,AxesOrigin->{0,0},PlotRange->All,ImageSize->{350,400},PlotLegends->LineLegend[{Black,Red},{"normal","stable"}]],
2,If[normal==True,ListPlot[StandardDeviation/@samplen100,PlotRange->All,PlotLabel->"Plot of σ for 100 Stable Random Samples\n of n = 1000 with α = 2",Axes->False,Frame->{True,True,False,False},FrameLabel->{"Sample Number","Standard Deviation"},AspectRatio->1.5,ImageSize->{350,400}],ListPlot[StandardDeviation/@samples100,PlotRange->All,PlotLabel->StringJoin["Plot of σ for 100 Stable Random Samples\n of n = 1000 with α = ",ToString[alpha]],Axes->False,Frame->{True,True,False,False},FrameLabel->{"Sample Number","Standard Deviation"},AspectRatio->1.5,ImageSize->{350,400}]]],
Grid[{{Control[{{alpha,1.8,"α"},1.6,2,.1,ControlType->SetterBar}],Control[{{beta,0,"β"},-1,1,.5,ControlType->SetterBar}]},{Control[{{gamma,.4,"γ"},.3,.5,.1,ControlType->SetterBar}],Control[{{delta,.04,δ},.02,.06,.01,ControlType->SetterBar}]},{Control[{{tab,1,""},{1->"frontier",2->"why"}}],PaneSelector[{1->" ",2->Control[{{normal,True,"normal"},{True,False}}]},Dynamic[tab]]}},Alignment->Left,Spacings->{1,1}],
TrackedSymbols:>{alpha,beta,gamma,delta,normal,tab},SynchronousUpdating->False,Paneled->False,SaveDefinitions->True,
Initialization:>(
$Post:=If[MatrixQ[#1],MatrixForm[#1],#1]&;
EfficientFrontier[mean_, covariance_, w_, opts___Rule] := 
Module[{c, temp, weights, x},
c = {0, Apply[Plus, mean]}; 
x = Map[Inverse[covariance] . (mean - #)&, c];
x /= Apply[Plus, Transpose[x]];
weights = {w, 1 - w} . x;
{weights.covariance.weights, weights.mean} // Simplify
];
MeanVector[l_?MatrixQ] := Apply[Plus, l] / Length[l];
covariance[l_?MatrixQ]:=Module[{len,dim,t,mean,upper,rest},{len,dim}=Dimensions[l];t=Transpose[l];mean=MeanVector[l];upper=Apply[((t[[#1]].t[[#2]])/len)-mean[[#1]] mean[[#2]]&,Table[{i,j},{i,dim},{j,i,dim}],{2}];rest=Prepend[Table[upper[[j]][[i-j+2]],{i,dim-1},{j,i}],{}];Apply[Join,Transpose[{rest,upper}],{1}]];
SRa=Compile[{{n,_Integer},a, b}, Block[{z,at0,theta,w},
z=-b Tan[(π a)/2];
at0= ArcTan[-z];
z+Table[w=-Log[RandomReal[]];theta=π (-(1/2)+RandomReal[]);
Sec[at0] Sec[theta] (1/w Cos[at0-theta+a theta] Sec[at0] Sec[theta])^(-1+1/a) Sin[at0+a theta],{n}]
]];

SR1=Compile[{{n,_Integer},b},Block[{w, theta},
Table[ w = -Log[RandomReal[]];theta=π (-(1/2)+RandomReal[]); 1/π (-2 b Log[(π w Cos[theta])/(π+2 b theta)]+(π+2 b theta) Tan[theta]),{n}]]];

srandom[n_Integer,{a_,b_:0,c_:1,d_:0}]:=c If[a==1,SR1[n,b],SRa[n,a,b]]+d;

SRandom[n_Integer,{a_,b_:0,c_:1,d_:0}, iparam_Integer:1]:= Module[{},
Which[iparam==0,srandom[n,{a,b,c,d}],
iparam==1&&a!=1,srandom[n,{a,b,c,d}]+b c Tan[Pi a/2],
iparam==1&&a==1,srandom[n,{a,b,c,d}]+b 2/Pi c Log[c]
]];
SRandom[{a_,b_:0,c_:1,d_:0}, iparam_Integer:1]:= SRandom[1,{a,b,c,d},iparam][[1]];
)
]

Let’s revisit the notion that your life is a database. Below we join the four ten-year periods to represent 40 years of adult life leading up to retirement. Imagine replacing “recurring” with actual dates when you visited the grocery store, restaurant, department store, cruise ship, hotel, Amazon and the myriad other opportunities you had to spend over those for decades. This would be a very large dataset with thousands of transactions. The functional form in the debit column, naturally, changed dramatically between your 20s and your 60s. But the one constant throughout was that every month your savings deposit was made before any outflow of your income to third parties.

Join[dsOne,dsTwo,dsThree,dsFour]

The principal of indifference as a touchstone of measurement

Warning: Graphic Content - This section has a little calculus in it!
In a subject as serious as economics one might think the word “indifference” is misplaced. But, applied properly, it is a useful concept. Tradeoffs are ubiquitous. You cannot go to the movie and the ballgame on the same night. Making a choice is often highly subjective but people do it every day at a variety of levels. Suppose your favorite team is playing at home tonight but the movie features your favorite actress. The choices offer essentially the same value making choosing impossible. Their values are the same and, in essence, they “price” each other at the “indifference point” where your value of each of them is the same and you are indifferent about which you choose.

It is easier when we have a way to quantify things. The economist’s tool of choice is “utility.” The economist argues that different choices lead to different levels of utility. Utility is not happiness, mostly because happiness has spiritual and theological connotations. Utility is more sterile and austere. The emotionless act of choosing to maximize utility is the domain of Homo Economicus, the soul-less numbers crunching Economic Man.

Utility is achieved by receiving some desirable good, often in exchange for money or some other tangible desirable good. There are a number of utility functions. One common specific functional form is the Cobb-Douglas utility function:

U=((Subscript[C, 1])^α)((Subscript[C, 2])^β)

Where (Subscript[C, n]) is a particular good, α and β are each positive numbers between zero and 1, with their sum = 1. It is easier to work with the log of this equation so we define

utility[c1_,c2_,α_,β_]:=α Log[c1] + β Log[c2];

Life is choices and the way we manage that is with a budget constraint. Suppose movie tickets are ten dollars and tickets to the ballgame are also ten dollars. If you only have ten dollars you are constrained by economics as much as time, space and preference. Our interest now is in when you choose to spend. We assume, for simplicity, only two time periods, (Subscript[C, 1])= now and (Subscript[C, 2])= later. We further assume that all funds will be exhausted in those two periods. The budget constraint limits your spending over those two periods.

If there are no banks you keep your money in your pocket. You either spend it today or tomorrow. But life is longer, sums of money are larger and spending comes with a cost. Banks were invented to “smooth” that process. Banks offer an interest rate earned on deposits as a reward for those who delay their spending; they also offer loans at an interest rate for those who wish to spend more today than they have today. Spoiler Alert: This leads to a world of “net spenders” and “net borrowers”  who compete for capital and whose bidding process determines interest rates in a free market.

Because second period consumption must exhaust all income it is the sum of (a) second period income ((Subscript[M, 2])) and (b) the funds not spent in period 1 ((Subscript[M, 1])-(Subscript[C, 1])), multiplied times the 1 plus the rate of interest, (1+r). Thus, we define the constraint as:

(Subscript[C, 2]) = (Subscript[M, 2])+((Subscript[M, 1])-(Subscript[C, 1]))(1+r)   ⟺   (Subscript[M, 2])+((Subscript[M, 1])-(Subscript[C, 1]))(1+r) - (Subscript[C, 2]) = 0

Rearranging to create the implicit function which will be used in the LaGrangian, ℒ, we have

const=m2+(m1-c1) (1+r)-c2;
ℒ=utility[c1,c2,α,β]+λ const;

Solving for first order conditions, we have

grad[s_,vars_List]:=Map[Function[{v},D[s,v]],vars];
{(SuperStar[c1]),(SuperStar[c2]),(SuperStar[λ])}={c1,c2,λ}/.First[Solve[grad[ℒ,{c1,c2,λ}]==0,{c1,c2,λ}]]

With these relationships we can ask general questions about specific variables, some of which are obvious. We don’t need math to tell us that consumption is positively related to income. More subtle is the fact that the utility elasticities are positively related to demand in each period (which is actually a property of the chosen Cobb-Douglas functional form).

Clear[α,β,m1,m2];
{D[(SuperStar[c1]),α],D[(SuperStar[c2]),β]}//FullSimplify

A more important generalization has to do with interest rates. Intuitively we would expect that higher interest rates would induce more savings. Below we take the derivative of (SuperStar[c1]) with respect to r and find the sign is negative. This is a satisfying result because we expect period 1 spending to decline with increasing interest rates.

D[(SuperStar[c1]),r]//FullSimplify

Providing fixed values for many of the variables permit us to plot the foregoing in two dimensions

Plot[(SuperStar[c1])/.{α->.75,β->.25,m1->100,m2->150},{r,0,1},Frame->{True,True,False,False},PlotLabel->"First period spending\ndeclines with increasing interest rates",FrameLabel->{"interest rate","(SuperStar[c1])",None,None}]

We can combine the utility function and the constraint, then insert some real valued parameters to see the optimal amount of consumption and borrowing at a particular interest rate, given the consumer’s preferences. Recall the parameters α and β represent relative preference for spending now (α = .75 and β = .25). In the plot below E is the initial endowment of $100 to spend today and $150 to spend tomorrow; A is the optimum combination of spending in periods 1 and 2.

Clear[r,α,β,m1,m2,r];
parms={α->(3/4),β->(1/4),m1->100,m2->150,r->(1/10)};
V1=utility[(SuperStar[c1]),(SuperStar[c2]),α,β]/.parms;
V2=utility[(SuperStar[c1]),(SuperStar[c2]),.25,.75]/.{α->.25,β->.75,m1->100,m2->150,r->.1};
uPlt1=Plot[c2/.Solve[V1==utility[c1,c2,α,β]/.parms,c2],{c1,0,300},PlotRange->{0,300}];
uPlt2=Plot[c2/.Solve[V2==utility[c1,c2,α,β]/.{α->.25,β->.75,m1->100,m2->150,r->.1},c2],{c1,0,300},PlotStyle->Dashed,PlotRange->{0,300}];
c2a = c2/.Solve[const==0,c2]/.parms;
cPlt=Plot[c2a,{c1,0,300}];
pt1=(*Endowment*)Graphics[{Red,PointSize->.02,Point[{m1,m2}]}]/.parms;
pt2=(*optimum*)Graphics[{Red,PointSize->.02,Point[{(SuperStar[c1]),(SuperStar[c2])}]}]/.parms;
ln1=Graphics[{Dashed,Line[{{m1,0},{m1,m2}}]}]/.parms;
ln2=Graphics[{Dashed,Line[{{0,m2},{m1,m2}}]}]/.parms;
ln3=Graphics[{Dashed,Line[{{(SuperStar[c1]),0},{(SuperStar[c1]),(SuperStar[c2])}}]}]/.parms;
ln4=Graphics[{Dashed,Line[{{0,(SuperStar[c2])},{(SuperStar[c1]),(SuperStar[c2])}}]}]/.parms;
allPlt1=Show[{uPlt1,(*uPlt2,*)cPlt,pt1,pt2,ln1,ln2,ln3,ln4},AxesLabel->{"Spend today\nC1","Spend tomorrow\nC2"},Ticks->{{{m1/.parms,"m1\n100"},{(SuperStar[c1])/.parms,"(SuperStar[c1])\n177.27"}},{{(SuperStar[c2])/.parms,"(SuperStar[c2])\n65"},{m2/.parms,"m2\n150"}}},Epilog->{Text["E",{109,155}],Text["A",{185,69}]}]

The same answer may be obtained with the built in Mathematica function Maximize

N[Maximize[{utility[c1,c2,α,β],const==0},{c1,c2}]/.parms]

Note that the sum of (SuperStar[c1]) and (SuperStar[c2]), $177.27+$65.00 = $242.27, falls short of the $250 initial endowment by 7.73 which is 10% interest on the $77.27 borrowed to support spending in period 1 in excess of period 1 income.

(SuperStar[c1])+(SuperStar[c2])/.parms//N
((150+100-%)/(.1))

To the above we add a second, dashed, utility function for another person for whom the spend-now-versus-later preference parameters are reversed (α = .25 and β = .75). This is a consumer with a penchant for saving who prefers spending less today and saving for tomorrow. If a red dot were added to the tangent point and extended to the axes we would see smaller current purchases, interest earned in period 1 and larger delayed purchases.

allPlt2=Show[{uPlt1,uPlt2,cPlt,pt1,pt2,ln1,ln2,ln3,ln4},AxesLabel->{"Spend today\nC1","Spend tomorrow\nC2"},Ticks->{{{m1/.parms,"m1\n100"},{(SuperStar[c1])/.parms,"(SuperStar[c1])\n177.27"}},{{(SuperStar[c2])/.parms,"(SuperStar[c2])\n65"},{m2/.parms,"m2\n150"}}},Epilog->{Text["E",{109,155}],Text["A",{185,69}]}]

Now assume the second consumer, a net saver, earns the interest paid by the net borrower in addition to saving the same amount through disciplined frugality. The interest earned and the same amount not spent added together is, of course, twice the interest. Now assume that the time period is a week and there are approximately four weeks in a month. Thus, the saver/lender has $61.81 per month more than the spender/borrower.

(SuperStar[c1])+(SuperStar[c2])/.parms;
2 ((150+100)-%)//N
4 %

Recalling our function for monthly compounding with annual inflation adjustment, a lifetime of this behavior adds more than $170,000 to the net saver/lender’s retirement fund.

moComp[61.8]

The Wolfram Demonstration Project provides an elaborate analysis of this model. Elsewhere at the same site one can find a fifty year animation of interest rates.

The importance of timing

It is not possible to over-emphasize the importance of starting early. A famous saying has it that compound interest is the Eighth Wonder of the World. True, especially over long time periods, hence the need to begin young. Recall from above the $50 per month increased 5% per year savings plan over 40 years grew to more than $139,000

AccountingForm[Plus@@(MapThread[#1 (((1+((.04)/12)))^(#2))&,{Flatten[ConstantArray[NestList[(1.05 #)&,50,40][[#]],12]&/@Range[40]],Range[480,1,-1]}]),{8,2},DigitBlock->3]

Note the smaller result when saving is delayed

TableForm[Table[With[{n=x},AccountingForm[Plus@@(MapThread[#1 (((1+((.04)/12)))^(#2))&,{Flatten[ConstantArray[NestList[(1.05 #)&,50,n][[#]],12]&/@Range[n]],Range[12 n,1,-1]}]),{8,2},DigitBlock->3]],{x,40,20,-5}],TableHeadings->{{"40 yrs","35 yrs","30 yrs","25 yrs","20 yrs"},None}]

So, what is the conclusion?

Should you balance your checkbook? Like many questions, the answer is “yes” and “no” given circumstances on the ground. If you were born independently wealthy and have various minions working for you, this might be something you delegate. If you are 100% online you have no checks, so what is there to balance?

For normal people, balancing a checkbook is a meme for an important quality: discipline. Regularly  reviewing and tracking your finances is a hallmark of self-sufficient people. There can be no self-government without self-discipline. This applies at all levels of society. Those who want someone else to take care of them neglect their finances hoping someone else will pick up the pieces at sometime or another. Others prefer to be captain of their own destiny. This takes time and effort, much of it having to do with your bank account.

In another module we discuss renting vs. buying a home. People who pay attention to their personal spending, save and invest, tend to be homeowners. Renters have a different attitude. The first financial decision is a decision not to spend.