Buying the Dip
I have had some version of this conversation with like, a dozen people:
Fred: I want to buy <financial asset>, I think I’ll wait a couple weeks and buy when the price dips.
Me: Why not buy now?
Fred: It’s overpriced! The price is higher than it’s ever been, I’d rather buy at a discount
Me: If it lowers in a couple weeks, that means the market’s assessment of its value is lower. You’re not getting anything at a discount.
Fred: I think I am. The price generally goes up, but of course there are always ups and downs. I’ll wait for it to go down, buy the dip at a discount, and then it will return to its normal price and, over time, rise.
Me: What if the price doesn’t lower? What if it keeps going up over the next few weeks, do you just never buy?
Fred: <Asset>’s price is higher than it’s ever been. Anybody can see that. I’m not trying to do some fancy day-trading where I predict daily variance and buy and sell every day, I’m going to hold this for a long time. I’m just saying it’s better to wait to buy the asset when it’s cheaper. You agree it’s going to go down at some point, right?
Me: It will go down relative to its previous price, but it might not return to this level. And even if it did, you wouldn’t know if you should buy then, or wait for it to fall further. You’re trying to time the market. If you were able to predict low and high reliably, you should go start a hedge fund.
Fred: Oh I see, that makes sense – I definitely don’t feel confident enough to start a hedge fund. I might as well just buy now, or maybe buy a consistent amount over the next few days to hedge.
Ok I haven’t had quite that conversation with a dozen people; that last line is an indulgent fantasy that has never happened once. But the rest of the dialogue is real enough!1
The asset changes – it could be an individual stock, some sector (e.g. tech stocks), the S&P, the Yen, Bitcoin, all kinds of things – but the argument stays the same: asset prices bounce around some equilibrium point that reflects the “real” value of the asset. Why not “buy the dip” – wait for the price to drop below the equilibrium point, and buy then?
On the one hand, I’m fairly certain this is a bad idea – there’s a “beat the market” vibe to it that instinctively rubs me the wrong way. On the other hand, it has a sort of intuitive appeal: prices are variable, we do think that they sort of bounce around the “real” value, so it seems like there should be opportunities to buy at a discount.
Whenever I have this argument live, it goes nowhere; it’s too easy to talk in circles, and in a live discussion you never have the actual data you need. With a blog post, there’s no such constraint! I can show that dip-buying isn’t effective, and maybe more importantly, provide some intuition for why it isn’t.
I’m going to do this with simulation data. I wrote a couple of bots that “invest” in an asset over time; one buys whenever it can, and the other waits to buy the dip. The data shows dip-buying is usually less effective, albeit by a narrower margin than I expected.
Before running through what I did, a little throat-clearing: this is not financial advice! I am not remotely qualified to give financial advice! I am an extremely boring investor who exclusively buys index ETFs. I also have no experience doing financial modeling, so there might be big holes in this – if you have a better idea of how to do this, let me know in the comments!
Here are the steps I’m going go go through:
Formalize some definitions, including “buying the dip”, and my alternative, “buying regularly”
Use a simple model to show that if a price moves up and down unpredictably (but rises over time!), buying regularly will make more money than buying the dip
Argue that, to an unsophisticated investor, prices do move up and down unpredictably
Discuss some cases where this doesn’t apply
So let’s get into it!
The definitions
First, we talk about an asset. This is the thing you are buying, and it can be anything that is freely bought and sold in a competitive, liquid market. It could be an ETF, or it could be stock, or gold, or whatever.
Second, we talk about strategies. A strategy is basically your plan for when to buy stock.
One strategy (my preferred one) I’ll call “buy regularly”. It is simple: just buy stock when you can. There are different ways you could do this. You could literally get a paycheck, set aside however much you want to invest, and spend that on stock immediately. Or you could like, parcel it out (say you want to invest $1.4k from the paycheck – you would then buy $100 of stock every day until your next paycheck, where you get another $1.4k, etc). The details here aren’t important, the important thing is that you are buying regardless of stock price.
Another strategy I’ll call “buy the dip”, and that is Fred’s strategy. The idea is that you wait until you can buy stock at a discount. It’s a bit tricky to formalize what “a discount” means. But generally people talk about some “real value”, and suggest buying when the stock is below that. So you can imagine something like:
Decide on some time range (let’s say 30 days) that you think represents the “real value”
Take the average price of the stock over that range
If the day’s stock is some amount below it (let’s say, 90% of the average), you buy it. You have bought at a 10% “discount” to the “real value”2
The details here aren’t essential, I’m just giving you a sense of the overall shape of the strategy. We’ll get into tweaking the specific numbers later.
There is a third strategy, which I’ll call “buy based on analysis”. The idea is similar to buying the dip – you try to buy the stock at a discount to its “real value” – but the method of calculating that value is different. In this strategy, you are determining the real value of the stock using some information other than how the price has been moving. You are keeping up with financial statements, crunching numbers, reading tweets, watching Jim Cramer, throwing bones, I don’t know. You have some clever method to determine what an asset’s real value is, and you buy when the price is below that.
I’m not really going to engage with this strategy, but I’m including it for completeness.
These are the only definitions we need – the thing we’re buying (the asset) and the strategies we’re using to decide when to buy (buying regularly and buying the dip). We can now see how these perform.
Testing our strategies
To do this, we’re going to use a simplified model. Imagine an asset whose price moves randomly, but tends to go up.
Let’s use the S&P 500 as a baseline. We have data on how it tends to rise and fall on a daily basis, using the last five years of data.3 We can use that data to create a normal distribution that reflects how the price tends to move, which will be the basis for our model of the S&P.4 We start at some price. Then, every day, we randomly pick a number from our distribution that will tell us how the price should move. Then, we adjust the price accordingly.
Below, I show the results of several simulations I ran with this model (if you want to play around with it yourself, you can find it at https://github.com/norseboar/asset-price-simulator). In this simulation, every day, each bot earns $100.5 There’s a single asset they can buy whose price fluctuates using the model above. The bots never sell – they’re holding until retirement – and they “retire” after five years. Then I use the stock’s last price to calculate their net worth.
These two bots are “Reg Buyer” and “Dip Buyer” (there’s also “Never Buy” as a control). Reg Buyer buys regularly – specifically, it buys all the stock it can, whenever it can. Dip Buyer waits for the stock to dip. It looks at the average stock price over the last 30 days, and buys all the stock it can if the current price is below its “dip threshold”.
Let’s see how these bots do, using asset growth modeled after the S&P.
Each row here shows the results of 2,000 trials, where our reg buyer bought every day and our dip buyer waited for the price to dip to the threshold on the left (0.8 means 80% of the average price, 0.9 means 90%, etc).
The columns show ratios between metrics for Reg Buyer vs Dip Buyer — numbers above one indicate that Reg Buyer’s metric was higher than Dip Buyer’s, and numbers below one indicate the opposite.6 The most important metric is the net worth the bots end the simulation with, but it’s also interesting to see how much higher the reg buyer’s average price paid was, and how many days it bought.
The headline here is that the reg buyer ends with a higher net worth than the dip buyer in every case (despite paying a higher price on average!). The dip buyer closes the gap pretty quickly, though. When it waits for an 80% dip it does pretty badly, but when it waits for 85% it improves quite a bit. By the time the threshold it’s waiting for is in the 90s, the difference is basically negligible.
If you thought regular buying is the better strategy, this shouldn’t surprise you: the higher the dip threshold is, the more often the dip buyer is buying, so the closer its behavior is to buying regularly. You can see how “Days with Buy” narrows, to the point where the dip buyer is buying every other day.7
Why is the dip buyer getting beaten? We can examine individual trials to see what’s going on.
I inspected the worst performance, the 80% threshold, first. The problem was obvious: it didn’t buy a single time. The stock just never fell sharply enough.
The 85% threshold is a little more interesting. The below visual helps explain what’s going on. The black line shows the asset price on a day, and the dotted red line shows the discounted price the dip-buyer is waiting for. Every blue line shows a day that the dip-buyer bought.
We can see what’s going on here – the dip buyer waits around for an opportunity to buy at a discount, but those opportunities are rare. About half the time they roll around, the price has risen so much that the dip buyer is paying more than they would have if they bought at an earlier peak. This is clear in the range between 250 and 750: the bot ends up waiting for a higher price, not a lower one.
Now, this asset was based on the S&P. The S&P doesn’t vary much – usually less than 2% a day. Would something much more volatile reward dip-buying more, since there would be more frequent, steeper dips?
I took five years of data for a few assets (some of the most-traded stocks in the last week, some of the most popular index ETFs, and some currencies),8 and calculated the daily % growth for each of them.
The first three columns show the % that the prices tend to move (the 5th, 50th, and 95th percentiles, to give a sense of the breadth). The last two columns are the mean and std dev for the logarithms of the daily percent changes. These are useful for constructing a model for geometric Brownian motion, and is what the simulation actually uses, but they’re not that helpful to look at. The % growth numbers give a better intuitive understanding of the growth pattern.
We want higher variance, so let’s look at an asset modeled after Tesla. We’ll also change the thresholds we’re buying at – we add a 50% through 70% to see if a lower threshold pays off with higher variance, and we can take off the high 90s since those were similar to regular buying.
The first columns here are the same, and things look good for the dip-buyer: both the median (P50) and the mean net worth ratios are below 1 for most thresholds we used, suggesting that dip-buying is paying off. It looks like there’s an inflection point somewhere between the 50% and 60% threshold, where dip-buying flips from good to bad.
But I found it strange that the median and mean net worth ratios diverged so sharply at the 50% threshold. To inspect more, I added a table above with two more data points: the median and mean of the stock’s final price. For reference, the price starts at $100.
The difference between the median and mean here is staggering. Most of the time, the stock loses 98% of its value, but the times that the stock does do well, its price rises so high that the average growth across all trials is ~1,400%.9
It’s no surprise that the dip buyer does well in the median case. By definition, it does not buy as much as the regular buyer does. When you’re investing in something good, this is a bad strategy. But if you’re investing in garbage, the best strategy is the one that buys the least.
The dip buyer also outperforms the regular buyer on the mean, though. This is the case where it really shines — it buys less than the reg buyer, so it doesn’t lose as much money when the price crashes (and it usually does). But in the event that the price does rocket upwards, the dip buyer still buys, and has some exposure.
Here’s a deep-dive on a trial at a 60% threshold:
This is dip-buying at its best. It makes money waiting for that first initial dip, and then manages to avoid the peak at the end.
Let’s do one last example, which has high variance but still grows in the median case: an asset modeled on Bitcoin.
Now we’re back to the old trend: higher thresholds do better for the dip buyer, and its performance approaches that of the reg buyer as the threshold approaches 1.
So what have we learned?
Well, it seems like dip buying does have its place, when we’re dealing with volatile assets. I’m not sure exactly what the conditions are, but it seems like you want the asset to underperform in the median case, and really overperform every now and then. Then, dip buying gives you exposure to it, without taking too heavy a loss if it doesn’t pan out.
For more stable assets, waiting for dips isn’t disastrous – if your threshold is thin enough, it’s really about the same – but it’s never better. If an asset is usually worth buying, it is worth buying regularly
But the model is random!
The big caveat to all this is: the prices in the simulation move randomly. How big a problem is this?
At a first glance, very big. The S&P’s price movements are definitely not random in a true sense – they are deterministically caused by how people are trading the component stocks.
But it’s not actually much of an issue, because we don’t need random. We need unpredictable. In a very technical sense, the random number generator the model used wasn’t truly random either – it just used information that I didn’t have, to generate numbers I couldn’t predict.10
So: does the S&P, or Bitcoin, or the Yen, or whatever asset you’re buying move in a predictable manner?
Not to you, it doesn’t.
I mean, if you have some kind of insider information, sure. Maybe you know that a company will announce good earnings tomorrow and the stock will go up. But absent that…what are you using to predict the price movement?
We can imagine two cases: in one, you think the market has priced the asset correctly. You believe in the free market hypothesis, everything’s been priced in, blah blah blah. If that’s the case, I think it’s pretty obvious that you don’t know what the price will do tomorrow. Anything you could know has already been priced in.
But let’s say you don’t think the market is always right. You think that Tesla is going places, and the market just doesn’t know it yet. Or maybe Tesla stinks, and a bunch of Musk fanboys are propping up the price. In either case, you think the market is wrong.
If it’s wrong today…it also might be wrong tomorrow? Price corrections take a while, “markets can remain irrational longer than you can remain solvent”, all that stuff. You might have every reason to think you know how a stock will move in the medium- or long-term, but that’s equivalent to knowing the growth parameters I gave my model. Those are reasons to buy the asset in the first place, not reasons to think you can predict a specific day.11
If you have some deep conviction that an asset is underpriced, by all means, buy the asset! But buy it regularly. Don’t wait for a dip that might never come – if you think a stock is underperforming its fundamentals, buy based on those fundamentals. Buying based on its previous price movements isn’t worth it.
When to ignore everything I just wrote
Of course, there are exceptions.
One is: it is clearly possible to make money on short-term trades. There are lots of quant funds and high-frequency traders that do this. They trade millions of times a day, they might not hold most assets longer than a few hours, etc.
Now, I don’t know how many of these are actually trying to predict daily price movements; I believe most of them are “market makers”. If you want to sell Tesla stock like, now, you need somebody who will buy. A market maker will do this: they’ll indiscriminately12 buy your Tesla shares. And then when some other retail investor wants to buy Tesla, they’ll have your shares to sell them, they’ll sell them at a slightly higher price than what they paid you, and pocket the difference.
But I’m sure there are high-frequency traders out there that are not market making; they really are doing arcane analysis of trading volumes and bid/ask spreads and other abstruse indicators. I’m sure some of them are making money.
Another exception is scale. If you are investing 20% of your paycheck every two weeks, the market will barely notice you. But if you are BlackRock and manage trillions of dollars, the market, uh, will. You cannot just buy billions of dollars of an asset – there might not be that much of the asset to begin with, and even if there was, other people would notice and start to raise the price. When you are a big fish, buying as much of an asset as you can every day does not work.
But I am assuming you are not a big fish, and you do not run a quant fund. I am assuming that you are a normal guy, with a normal job, who invests maybe 20% of your normal salary. You want to buy normal things, that grow at a steady rate and don’t stress you out by bouncing around. You are just trying to put your money to work without thinking about it too much.
I have good news: the best strategy asks you to think the least.
If you are one of these people and believe I’m creating a strawman of your position, please let me know! I am really trying to engage with the strongest version of this argument.
I apologize for all the scare quotes, but I feel compelled to use them – I don’t believe an average like this represents “real value”, nor do I think you’re getting “a discount”. I think the “real value” is unknowable, and the best approximation most of us have is the stock price that day. But I think this is what the “buy the dip” endorsers believe.
Data taken from Yahoo! Finance
This is based on the Black-Scholes model, which seems widely used in finance. The model uses geometric Brownian motion to determine price changes. We take the mean and standard deviations of the logarithms of the % the asset price changed every day, use that to create a normal distribution, and select from that distribution every “day” to determine how the asset’s price changes.
In one sense, this is unrealistic – very few people get a daily paycheck. But a very common strategy is “Dollar Cost Averaging”, where you basically split up your investing money into smaller chunks and invest those every day, so it actually sort of works realistically for the Reg Buyer. The Dip Buyer probably either under- or over-performs a bit, since a biweekly paycheck would be higher-variance than a daily one, but it doesn’t seem that important.
The first metric is the mean net worth, so that we can calculate a 95% confidence interval. I use medians (P50) for the rest of the metrics, since those are more resistant to outliers.
The regular buyer buys every day. Since it’s buying 2x as often as the dip buyer in the last row, we can figure the Dip Buyer is buying every other day.
More Yahoo! Finance data. This is the most I’ve used Yahoo in years.
This also suggests that I’m at the limits of my financial modeling abilities. I based this data off of Tesla stock price over the last five years. Tesla’s had its ups and downs, but it seems weird that a model based on that asset (which is, in fact, 10x more valuable than it was five years ago) has median performance that’s so poor.
From a math perspective, here’s the issue: we are picking a percentage gain from a normal distribution. A “neutral” distribution could e.g. be one that has 0 growth in the middle, and +/- 10% growth as a standard deviation.
But it doesn’t actually balance out. If you grow by 0% two days, your price stays the same. But if you grow 10% one day and shrink 10% the next, you are actually net worse (0.9 * 1.1 = 0.99).
This can be true even if the mean of the distribution is positive! Imagine something where the midpoint is 20% growth, where the standard deviation is +/- 70%. If you pick the mean twice, you’re good (1.2 * 1.2 = 1.44x growth). But if you pick the outliers, you’re worse off (0.5 * 1.9 = 0.95x growth).
This isn’t always true – if the mean growth is sufficiently high, you’ll still come out ahead. But generally, variance is bad for a model where you’re picking a % growth every time; negative growth hurts more than positive helps.
So that’s why the math doesn’t work. But it doesn’t tell us why the model diverges from reality — the model seems widely-adopted (see footnote 4). I suspect the answer is that real stocks don’t have constant variance, and Tesla has some high-variance periods and some low-variance ones, but I’m pretty far out of my depth. I will leave this question as an exercise for the reader.
As a matter of fact, the “seed” column shows a number that can be used to reconstruct the exact same numbers any trial had, so that we can re-run it to make charts. It’s actually not random at all, it’s entirely deterministic.
You might object that you can’t predict a specific day’s move for certain, but that it will on average be more likely to move in the direction of the “correct” price. If that’s the case, isn’t it fair to say that you have an educated guess on how it will move?
Sure, but this is what our model already did. The assets had a mean growth rate, we did have an educated guess on how the prices would move, and that direction was usually up! But all we really learned was: if it’s going to go up in general, then buy regularly. You have no reason to think a specific day will have a different growth rate than any other.
No, no, they are not actually indiscriminate, but close enough