Simplicity & Complexity: What Go Teaches Us About Investing, Part 1
I was recently reading a splendid article in WIRED magazine specifically addressing the the lack of computer dominance over human players in the Chinese strategy game Go. This post borrows heavily from that article, and I would strongly encourage you to go read it in full (if you have time for 5,000+ words).
The first half of the WIRED article dealt with the reasons that Go has so frustrated computer programmers over the decades. In their simplest forms, they are as follows:
1. There are many potential moves each player can make, and hence there are an incredibly large amount of board positions that the game can take on. The number of forms (or “game states,” to use the technical term) a game can take is determined by two things. First there is the “branching factor,” or the average number of different moves a player can make per turn throughout a game. In chess – the most complex game that most American board gamers grow up playing – the branching factor is 35. In contrast, Go’s is 250.
This difference in branching factor compounds quickly, too. In the simplest example, after the first two moves of a chess game (one move per player), there are 400 possible board positions. In Go, after two moves, there are 129,960. But this is just the beginning because the second contributing factor to total game states is the average number of moves per game. A typical chess games is approximately 40 turns while Go is approximately 200. Given the branching factor and game length, the sheer magnitude of the problem starts to emerge. So let’s be perfectly clear here: when compared to chess, Go is many, many orders-of-magnitude more complex. Of course, the sheer number of potential board positions wouldn’t be such an overwhelming problem, except that…
2. …in Go, it is quite difficult to eliminate seemingly absurd moves and board positions. Simpler games with lower branching factors (think tic-tac-toe, connect 4, checkers, othello and chess) all have game states where it is relatively easy to reject potential moves, thereby “pruning” branches. However, the rules of Go encourage gameplay that is far more open; moves that seem absurd in the moment can prove pivotal later in the game.
The mind boggling scope and complexity of Go obviates a brute force approach. As a result, despite the difficulty in doing so, the only reasonable option for an algorithmic approach is a “pruning the branches” type of approach. It is the only path that gives computers a fighting chance. Many strategies have been proposed and tested to accomplish this, from segmenting the board into smaller “mini-games,” to cataloging and replicating the positions of real life games, to using a probabilistic approach that attempts to select a small set of the most promising branches and then do a “deep dive.” All have proven promising steps forward in the evolution of algorithmic Go. Yet all have failed to consistently defeat the best human player.
That such a staggeringly complex problem can be created by such a seemingly simple game is a tough pill to swallow. A computer with natural language skills beat the best Jeopardy! players, after all. Go is a game that has 12 simple rules, played in a closed system on a small board. And yet, it is still beyond the modeling capabilities of our brightest minds using the fastest computers on the planet.
So here is the question: if we can’t even model a relatively simple closed system, how are we supposed to accurately model markets and economies? These systems have a virtually unknowable quantity of inputs each behaving with some level of randomness, and interacting with each other in dynamic ways that are quite vulnerable to exogenous shocks. It’s enough to make your head spin…how do we even start to analyze this hot mess?
Well, as the article suggests, even if it’s difficult the best option is still:
Prune the branches.
The amount of complexity that would be involved in modeling the global economy with pinpoint accuracy would make Go look like tic-tac-toe. It makes my brain hurt to even think about the scope of such an undertaking. But at the end of the day, we cannot allow ourselves to be paralyzed by the complexity of any situation.
In order to make meaningful progress, we must distill the system down to it’s most salient drivers, and we must endeavor to grasp the most powerful connections. This is how we move forward: by identifying useful relationships that can give us meaningful insight and light an otherwise dark path.
On our blogs, we write a lot of articles that describe the relationship between two different things. Off the top of my head we’ve written about price-to-earnings (among a myriad of valuation factors) and investment returns, volatility and growth decay, sequence of returns and failure risk, momentum lookback horizon and growth, and so on. Often we receive feedback along the lines of “…but you didn’t consider [whatever]…”
Often we did, but we just didn’t write about it.
When we write an article we’re trying to make a powerful point by simplifying a relationship into the most critical elements. This is NOT the same thing as saying that the full complexity of the situation can be distilled into that simple relationship, or that the simple relationships are as statistically robust as more multifaceted incarnations might be. We’re just trying to make things simple because, as our old pal Albert famously said…