Wealth Sim
Let’s tune this thing up a bit. And let’s try to avoid momentum calculations. P.S. The rich get richer.
- Full Disclosure
- There is a serious defect in the code, which I’ll discover two articles from now. The effect of the defect is that certain players are more likely to win than others: the game isn’t fair. As we’ll see, all that really does is speed up the rich getting richer. They still win all the chips even with the defect fixed.
-
For extra credit, see if you can spot the defect before I did. With that hint it should be easy.
As you’ve seen in the previous article, we’re definitely seeing that as the simulation runs, more and more of the wealth falls into fewer and fewer hands. Today, we’ll see about adjusting the colors a bit, and increasing the randomness a bit. We’ll see if any of the code needs improvement, and maybe we’ll start on displaying some more detailed information. We’re working toward making it worth while to push a movie to my hard-working web host.
I wish I could host the actual application, but that’s outside my knowledge, and sounds like a lot of painful work. Suggestions welcome for how we might do that.
First thing: change coloration and a bit of sizing:
- Keep the low-wealth dots from disappearing: set a fixed minimum radius.
- Show three colors of dots, cyan for wealth above 500, yellow for 500-100, red for below 100.
Here’s the current draw:
def draw(self, screen):
pygame.draw.circle(screen, "red", self.pos, self.radius, 0)
Let’s do the color first. Extract variable:
def draw(self, screen):
color = "red"
pygame.draw.circle(screen, color, self.pos, self.radius, 0)
We could commit. I’m not quite that fanatical. Change the coloration:
def draw(self, screen):
wealth = self.person.wealth
if wealth < 100:
color = "red"
elif wealth < 500:
color = "yellow"
else:
color = "cyan"
pygame.draw.circle(screen, color, self.pos, self.radius, 0)
Run that to see how it looks, and I don’t quite like it. Let’s fix the size minimum, and change the numbers a bit. I think the interactions are too infrequent. Let’s change the screen size too.
I work out a few changes such that I like the resulting picture.
- Cyan until 500, then yellow until 250, then red.
- Dot radius never less than 4.
- Move faster.
- Screen size 750.
- Do not transact unless both players have at least 100 wealth.
That last rule just speeds things up. Once a dot is essentially broke, the bigger dots ignore it. Thus the bigger dots tend to compete with each other, having consumed most of the money of the lower classes. This just makes the process go faster. and once a dot is essentially broke, he can’t engage in commerce any more.
I need to do one more change, so that I can get a decent movie for you. Let’s not start things moving until I type a character. OK, here’s the final frame. If you click it, we’ll open the video: it’s about 20 meg, so click at your own risk.
Above: Image showing 14 out of 100 players have almost all the money. Click for 20MB movie.
Summary
We’ll review and improve the code next time. This morning I want to reflect a bit on what we have so far.
The most compelling aspect of this program, I think, is that it shows that a large number of pair-wise transactions, even though scaled to the wealth of the least wealthy of the pair, tends to result in a few mega-rich individuals and a lot of very poor individuals. If this reminds you of things where you live, well, try to remember that it’s just a simulation.
But there’s another key finding in the simulation. Who winds up with the most money? Is it the smartest, the wisest, the best negotiator? No! It’s pure luck. If by chance, a player gets a bit ahead, he tends to be able to stay ahead. He can absorb more losses, just because he is more wealthy.
The rich get richer, just because they are rich!
Of course this is just a very simple simulation. It has no provision for working hard, or giving up avocado toast. It also has no provision for it being harder to find work when you are a person of color, harder to get a decent education if your family doesn’t have much money, and so on.
In the articles linked in my first article, and also below, there’s a bit of discussion of ways to make this simulation more “fair”, as well as some informal discussion about generalizing these results. We really shouldn’t read too much into this very simple simulation of a very simple game. Life and economics are much more complicated than this. But does this simulation capture an essential aspect of our reality?
Is it possible that the rich get rich mostly by already being rich? Is it possible that striking it rich when you’re not is more a matter of luck than it is some kind of business acumen? Is it possible that the rich are not special in some way?
I have known a number of some “self-made” quite wealthy people and I am inclined to observe that, yes, they did tend to work hard, and yes, they were of at least average intelligence, but mostly, they happened to join a small company that happened to grow large enough, and they managed to get enough stock … to begin to use their wealth to directly create more wealth, quite often by the standard vulture capital means of investing in other small companies, capturing stock, and quite often ruthlessly shutting the little companies down and selling off their assets. Venture capital is, I think, a perfect example of how the rich get richer.
You can draw your own conclusions. My conclusions are somewhere between tax the rich and eat the rich, but I have to admit, I held that view coming into this simulation.
We’ll have at least one more article, cleaning up the code for publication. (If you want it, please toot me up and let me know.) And we’ll probably see about displaying more information, and perhaps even having some ways to tune the thing.
Meanwhile, you’re reading this, and the rich are getting richer.
See you next time!