A distracted walk down Wall Street
"The difficulty lies not so much in developing new ideas as in escaping from old ones."
The above quote can be found in “The General Theory of Employment, Interest and Money” by John Maynard Keynes.
It points towards the difficulty in accepting a different point of view if we have a lot of prestige, reputation or influence tied up with the current view. The current view among a lot of academic market thinking is that an asset price follows what is called a random walk.
A random walk is essentially unpredictable, because it moves based on the random values obtained from a normal distribution, where there’s complete independence between these. A specific implementation of such a random walk is called a Brownian motion, with the formula seen below.
There are two parameters in this formula, mu (μ) and sigma (σ). These represent the drift and volatility of the asset being modeled. A typical setup might put these at 10% and 20%.
Now there’s maybe nothing too wrong about that, especially if all you need is some simplistic approximation. But how do you estimate mu and sigma? You’ll need to eventually put some value in if you’re writing a paper on how to price some derivative or do some portfolio optimizations and then apply that to the real world. The academic literature tends to gloss over this quickly with a few lines about how to find the average returns over some arbitrary length of time, and then calculate mu and sigma based on that.
Job done, right?
What can you do with these parameters in general?
Well, if you want to model your bank account, set sigma to zero and mu to your interest rate. Of course that’s a bit boring to look at, but isn’t it missing out on something? You know, sometimes your bank changes the interest rate they pay you, but this formula has no method of incorporating this. Neither mu nor sigma have any dependency on time. They are fixed for life.
That’s honestly not very realistic, and even if all we wanted was a simple approximation of reality, I think fixing both the drift and volatility forever is a bit drastic. We know for example that volatility changes over time, and we can look at this by looking at the VIX index. So clearly at least sigma should be time dependent.
But I think the drift very much needs to be time dependent as well. How would you otherwise incorporate that you bank account interest changes over time, or that a stock market bubble can happen? So let’s extend the formula:
The change is minor, do you even notice it? We’ve added a time subscript to the mu and sigma parameters.
There’s certainly an acceptance for making volatility time dependent, and a lot of academic research in later years have been focusing on this with the development of models called autoregressive conditional heteroskedasticity, or ARCH. That’s a fancy way of saying that volatility tends to be persistent. So if it’s low now, it’s probably low tomorrow as well. But if it’s high now, it’s probably high tomorrow as well. It’s like the cattle I talked about in the previous post. If they’re all panicking and running around like crazy, they’ll probably do that for a little while longer.
There’s no further predictive power in an ARCH model. Do not expect it to be able to help you figure out when the VIX is going to shoot up next time.
But it does help in improving our Brownian motion. Because you can help estimate how good your model is, by looking at how close to a normal distribution your error term is. The more normal, the closer to pure white noise you have. And if you have that, you have no further explaining to do. So if adding ARCH to our volatility estimate help in making the error term cleaner, we’re moving in the right direction.
So what about the drift then? Any acceptance for making this time dependent? Yeah, maybe with something called autoregressive integrated moving average, or ARIMA for short. Again, this is a fancy way of saying that a current value, like the drift, depends on previous values. But again, it doesn’t really predict anything more than expecting things to be similar to how they were yesterday. It just helps us get the error term a bit closer to pure white noise.
So we’ve improved on the model by allowing the drift and volatility to change over time by using ARIMA and ARCH models. But if we are to really improve upon our predictive abilities, we need to take a more active role. We can’t just say that things will be like they are today most of the time, and be happy with that.
Cattle will move towards food and run away from things they don’t like, and we need to incorporate that in our Brownian motion.
Playing with a distracted walk..
I’m calling it a distracted walk rather than a random walk, because we are enforcing a certain external force upon it, which make it less random. We take a view and see how the model behaves when we do so.
On the widget at the top, we have a few different parameters we can play with. They are split into sections.
Mu and sigma
The first two allow us to set the mu and sigma to whatever fixed value we want right now. The graph (or Brownian motion) will then use these going forward. It’s an easy method of getting a feel for how they change the outcome.
The next section allow you to set a min and max value for mu, and then have it move between these using a certain type of movement. For example, we could try to model how bubbles are created by saying that the drift go up and down based on a cyclic movement. People become more positive to the asset, before going less positive and eventually negative.
If you click that link and drag sigma down to zero, you’ll see the pure impact of the drift, BTW..
Observing this for a while doesn’t maybe seem to create the dramatic bubble pop we’d expect. Maybe people go negative a lot quicker? Let’s change the mu movement to be two-stated, making it either be the upper or lower limit, jumping between these.
Sigma movement and mu-sigma phase shift
Like for the mu movement, we can set a lower and upper range for the volatility parameter, sigma. And just like for the drift, we can let this follow some movement.
What we can also do is shift the phase between mu and sigma. Dragging the “mu-sigma phase shift” all the way to the left makes them in sync. Putting it in the middle causes them to be 180 degrees out of sync.
Our speculative mania modeling attempt so far doesn’t feel like it contains enough drama. Let’s assume that panic sets in at some point near the top, causing it to pop. We model this panic with an increased, but lagging, volatility. We accomplish the drift/volatility lag by phase shifting it.
The above doesn’t in itself give us a better model for how investors behave, but it allows us to start thinking about how we can approach this task with a more active view. Investors will move towards increased gain and run away from things they don’t like, so let’s incorporate this.
I’m going to use this as background during the next few blog posts were we dig into this in more detail. And if you like looking at code, there’s an open source version of the widget for you to build upon.