I wrote a bit of a rant recently about the structural changes in our economy and society that need to be addressed. What we are getting instead – not surprisingly – is a lame last minute compromise on the debt ceiling that includes absolutely no additional revenues for the government (“it’s all cuts!”). This essentially means that the Democrats and the President caved completely on their original positions (that’s simply an assessment of the outcome, whether or not you happened to agree with the positions). But I believe that the revenue side will have to be addressed and we have to stop punting on that. In the comments to my previous post there was a good bit of discussion around the tax code that seems worth turning into a separate post.
Our tax code is a mess. It is the equivalent of the worst spaghetti code you might have ever encountered as a developer/software engineer, with many of the same consequences: there no longer is such a thing as a simple change to the tax code. Because of its complexity even a minor modification requires lots of other changes and/or results in tons of unforeseen side effects. In the case of the tax code these take the form of amazing distortions to real economic activity in order to exploit dependency “bugs.”
The tax code is beyond refactoring. It is time to hit the rewrite from scratch button instead. What should a tax code and implementation look like for the Internet age? Here are a bunch of design principles:
1. The code should be as simple as possible using flat percentages for income, capital gains, inheritance/gifts and sales. Subcategories can have varying tax rates (e.g. different tax for sale of gasoline than food staples). There should be no exemptions, i.e. all taxes should start with the first dollar.
2. The code should be published both in human readable and machine readable formats. It should be easy to build and maintain systems that calculate and/or collect taxes. That includes being able to build classifiers that sort transactions into the categories listed above.
3. Lots of data should be required by the code to be made available for the public to analyze the effectiveness and impact of the tax system. Ideally this goes down to anonymized tax records (subject to the caveat that we now have fairly powerful de-anonymization techniques).
Together I believe that these three principles would allow us to create a tax code that would be fair, transparent and efficient.
Here are answers to some questions that people might have.
Why no exemptions? Exemptions lead to horrible non-linearitites as you get close to the exemption amounts that result in all sort of strange manipulations. Some exemptions originated with the idea that it is too difficult to collect taxes on small amounts. With more and more of this information in electronic form (soon enough all of it), that objection falls away.
Aren’t a lot of exemptions designed to help people with less income? Yes. Except that using the tax code for this is a really bad idea. We should be making sure that other programs (e.g. Social Security) work well. Also, with our current system the effective tax rate tends to decline with income as people have more means to figure out how to exploit loopholes to avoid paying taxes.
Isn’t sales tax a regressive tax (and hence unfair)? The idea with this argument is that as a percentage of income rich people tend to spend less and hence wind up paying less tax. Having no or minimal sales tax on staples food, clothing, property addresses this to some degree, but overall I see sales tax as a critical instrument for steering consumption behavior and that far outweighs the downside of it being a bit regressive.
The biggest question though is the most difficult to answer. How can we ever get a majority for a fundamental rewrite of the tax code? I don’t know. That’s why some of the changes around us will provide interesting tests for the limits of democracy. Democracy seems excellent at making incremental improvements to existing systems. But what if you need a new system?