Thursday, April 15, 2010

The Object Oriented Tax

In the early days of the object oriented design revolution, I engaged in a thought experiment in which I applied basic object oriented design principles to the problem of taxation. I developed a clever little reform that I like to call the Object Oriented Tax. One can abbreviate this as the OO Tax.

Our current tax system is form based. People accumulate all of their receipts for the year. On tax day, they sum up their income and tax deductible expenses. They then pay taxes on the differences between the two.

The difficulty of taxes lies in this act of keeping the receipts and summing things up.

The complexity of this system is not simply the simply the 1040 form. The system depends on a very complex reporting system that includes payroll withholding, estimated tax payments and W9 forms.

The object oriented tax takes a completely different approach to collecting and filing taxes.

The Object Oriented tax is account based. The system assigns a tax status attribute to financial accounts. An account is either pre-tax or post-tax. All income goes into pre-tax accounts. One pays taxes when transferring money from the pre-tax to the post-tax account.

Let's say you had $1000 in your pre-tax account and your tax rate was 25%. You would pay $250 in taxes during the transfer and end up with $750 for spending.

The tax rate in an object oriented structure can be progressive. The government could assign different tax rates based on past income or estimated net wealth. With a progressive tax rate, Warren Buffet might have a 50% tax rate. His secretary might have a 25% tax rate. Warren Buffet would have to take $1500 from a pre-tax account to get $750 spending cash, while his secretary would have to withdraw only $1000.

BTW, isn't the math interesting? Doubling the tax rate actually triples the taxes Buffet must pay to get $750 spending cash.

Of course, people are apt to have more than two accounts. This is where the object-oriented design comes in. The system simply assigns a tax status attribute to accounts. Transferring money from a pre-tax to a post-tax account charges a tax. People could have a variety of pre-tax investment accounts and a variety of post-tax spending accounts.

For example, a person might have pre-tax savings account, an IRA or a Medical Savings Account. On the post tax side of things, a person would have credit cards, checking accounts and cash.

A person would pay taxes when transferring money from the pre-tax savings account to the post-tax checking account. They would not have to pay taxes on transfers from the post-tax checking account to he post-tax credit card account.

Deductible Expenses

The system could allow currently deductible expenses to take place from pre-tax account. Charitable deductions, business expenses, medical expenses and other deductible expenditures could take place directly from pre-tax accounts.

The OO Tax and Budgeting

The great advantage of the OO Tax is that it has people paying their taxes during the budgeting process.

Having people pay taxes in the budgeting process makes them more aware of the affects of taxes on their spending.

By taxing an abstract object between income and expenses, the OO Tax effectively transitions the income tax into a consumption tax.

OO on Capital Gains

The object oriented tax solves the conundrum of the capital gains. It is bad economic policy to tax capital gains as such taxes adversely affect investment decisions. The OO tax puts investments in a pre-tax status allowing people to adjust their investment portfolio without having to factor in the tax consequences.

Rich investors can be soaked when they go to spend their gains.

Please note, the progressive tax rate can take into account both a person's current income and net wealth. This allows progressives to hit investors with a really high tax rate even if they don't realize much income in a given year.

I think progressives would like the structure. We can have our peoples' struggle against the rich and economic growth too.

Inheriting OO

The OO Tax also solves the problem of inheritance taxes.

Inheritance tax is problematic. People tend to leave estates with a disarray of paid and unpaid taxes. Taxing inheritance results in some double taxation. Removing the death tax leaves large chunks of income and investments untaxed.

The OO Tax provides a mechanism from straightening out this problem. Post-taxed accounts and assets could be distributed to post-tax accounts. Pre-tax assets would be transferred to pre-tax accounts. In some cases, there is substantial capital gains on post-taxed assets. In those cases, one might place the capital gained on post tax income into a pre-tax account.

The family farm, which is held in a pre-tax account, could transfer to a pre-tax account of he children and stay in tact. It only gets slip up if the children sell the farm and must realize tax.

The tax rate on inheritance would be based on the inheritor's wealth. This means inheritance tax becomes progressive.

So, if I left $1000 in pre-tax accounts to Warren Buffet and $1000 to his secretary, Mr. Buffet would have to pay his high tax rate on the gains. His secretary would pay a lower tax.

Because I want to avoid paying taxes, I might decide just to cut Mr. Buffet out my will and give all of the inheritance to his poor, underpaid secretary.

Of course, the converse is true. Let's say a trust fund baby is working as a burger flipper. This person inherits a million dollars. That person will now be hit with the high tax rate the money gained from burger flipping.


Taxing an abstract object between income and expenses allows us to create a hybrid tax with the best features of an income tax and consumption tax.

As tax payments happen in real time during account transfers, the tax is easier to implement than the flat tax, which still requires complex withholding and reporting efforts. One only has to touch each transaction once.

The tax transfers compliance from employers to banks, which reduces burdens on the employer, making America's businesses more competitive.

The tax is conservative in that it essentially treats everyone like a business and allows people to make investment decisions without having to pay a capital gains tax. The tax is progressive in that it allows tax rates based upon one's wealth and assures that the wealthy pay an onerous tax on any money they spend on themselves.

If the object oriented tax were in place, I would already be done with this horrid tax filing process, and could spend tax day with the patriots protesting on the Capitol Steps. Here's my photos from last year's tax day protests.


RD said...

That's only until you add my OOP code into the mix, given...

class a{
int x;
class b{
int x;

class c : public a,b
int result(){ return x; };

in c++ which int x is returned,... Note this is a trick question!

y-intercept said...

It would return the class c int x.

I would actually hope the compiler would warn about the ambiguity.

A more interesting topic is the way tha object oriented language can get in the way of good object oriented design.

I've never been that happy with any of the object languages as I see design more than language.

A lot of what's going on in C++ is attempts to overcome the poor memory management by the first generation of computers.

Perhaps I should come up with a better name the OO Tax. Perhaps the "Transfer Tax." The system taxes the transfer of money from a pre-tax account to a post-tax account.

I liked the phrase "The Object Oriented Tax taxes an object between income and consumption to create an individual based consumption tax."

The one advantage I see to the name "OO Tax" is that it gets people thinking about structure and design of the tax. Although one is taxing the transfer of money from a pre-tax to a post-tax account, I want people to think about the entire struture.

The disadvantage is that people might think the tax has to be written in a particular computer language, when it could as easily be implemented with pen and paper.

One need simply know that the money in account A hasn't been taxed, the money in B has been taxed. To transfer money from A to B requires paying the tax.

In your example, if a.x is pre-tax and b.x is post tax, c.x could make a really big mistake by drawing from a.x instead of b.x.

RD said...

their are in fact 2 x variables, you have to call the namespaces directly within the child class.

now which x variable you get is infact undefined unless you use the namespace as said above, its not in the c++ standard so this can vary from compiler to compiler.

"A lot of what's going on in C++ is attempts to overcome the poor memory management by the first generation of computers."

I am an Anti-Managed memoryist. I hate how C#'s garbage collector has to freeze all my threads so that it can crawl the stack with a single thread, I also hate Java(its slow).

I still go to assembler for some of the work I do however so I am not hardly your typical programmer =p.

I will further note that most computers still use the page table based memory management that has been around sense the beginning of time. As nothing better has been yet through of, I hope to change this someday.

I miss the good old days, I still own my old Commodore 64 =).

I work for weber university doing programming for Utah department of environmental quality, the EPA and a few other states air quality programs. And I do research related to augmented reality in my spare time =p.