association-list a veritable mint for dunning-kruggerands

Tax modeling

I was bored tonight and procrastinating, as per usual, so I decided to toy around with some simple simulations. The subject for these experiments was taxation, which I’m sure everyone and their dog finds wildly exciting, but these kinds of things are important, and if my life was exciting I wouldn’t be writing simulations.

The setup is this; take some fixed number of individuals, toss them into bins according to a normal distribution (Likely too narrow, really, as a lot of them end up empty. Might need to raise my sigma?), then crudely apply the effects of income, inflation, taxation, random chance, etc. The taxation comes in two modes. Progressive, rising steeply towards the top, and flat for income and capital gains. I eyeballed the curve for progressive, since I didn’t want to calculating each time, and I was too lazy to calculate it in the first place. Rates are 95% for the top bracket.

Some stats:

  • Twenty bins in 5000 unit increments, starting at 20000.
  • 10000 + 0-10000 starting investment capital.
  • 10000 unit tax brackets (at the start).
  • Inflation fixed at 4% per year, and brackets scale with it.
  • Yearly wage increase is inflation +- 2%, with a 5% chance of losing or gaining 0-10% to simulate job changes.
  • Capital gain is 5% if your capital is below a certain point, 8% above that, to simulate incredibly crudely that if you have more money, you have access to a better class of investments. Also there is a 10% chance of losing or gaining 0-20% to simulate above or below average years.
  • No one ever dies or has major life changes.
  • Income is the sum of your post-tax wages and post tax investment capital for bracket calculation purposes.

Initial results are what you would expect, if you’re reasonably familiar with the theory. Flat taxes tend to spread people out over time, eventually popping people off the top of the simulation and dropping them off the bottom.

Progressive taxes tend to squeeze people towards a stable middle, with outliers being fairly quickly corrected. It’s critical to lock the brackets to inflation or everyone falls off of the bottom in short order.


  • Capital tends to vanish if you have very little of it to start. At first, I started each person with 0-20000 unit of investment capitol. After a few thousand iterations, the vast majority of people had nothing. I’m fairly sure that this is a modeling issue.
  • Programming to learn something new is a great way to remember why you started doing it in the first place.
  • This is likely the least interesting post I’ve ever done. I haven’t defamed a single person!

If anyone is interested in looking at the code, or has a suggestion for refining the model, drop me a note. I’d have to clean the code up a little, but it’s not shamefully messy.

<-- Trapped To my fellow commuters -->