What is even adjusted data ?
Let’s start from the basics — We want to understand what is adjusted data and how it differs from `normal data`.
As you can imagine, In the financial markets — stocks trade all the time and everyday. Each `trade` has a price and a volume attached to it. In plain words — a trade is just a transaction, where a buyer meets a seller, which both agree on the same price that an asset will be exchanged for. They also agree on the quantity of the transaction (volume) that will take place.
This happens a gazillion times throughout the trading day, for many types of financial assets and mostly automated by advanced software and routing mechanisms.
OK, that’s easy and makes sense — where does adjusted data come in all of this ?
Remember the transactions that are constantly occurring ? Well, each trade is based on the actual real price of the stock at that point (which both sides agreed on). It’s also taking into account the actual number of shares both sides want to integrate into their transaction.
When the buyer and seller come to an agreement, they are looking at all of the information they have in front of them, at that given moment, without any modifications. It’s like you going to the hardware store, looking to purchase a hammer, seeing its price tag as $2 and making the interna/financial decision to purchase it for that $2 price. There’s no way you will get to the cashier and pay a different price.
To sum it all up in a simple way — every trade that takes place in the stock market is transacted with live, actual data, or in other words unadjusted data.
Unadjusted data is just another way of saying — “This was the actual data, as of the day the transaction occurred, without modifications, adjustments or changes to the data. It’s the actual raw data”.
Adjusted data on the other hand is data that was.. well… Adjusted 🙂 It basically means some process of normalization or modification (usually a math calculation) was executed on the data, changing its original unadjusted form.
In our context, when adjusting financial data — it applies both on price data (open/high/low/close) and on volume data.
When does data get adjusted ?
There a few scenarios when we need to adjust historical financial data:
- Splits — when companies increase or decrease their outstanding share count, due to many reasons which we won’t get into, an adjustment to the data needs to be made. Imagine a company decides to increase their share count — the price of the stock can just stay the same ? Well, NO!. The gap needs to be filled somehow. If the share count increases, then the price will decrease appropriately with the same ratio. So if the share count was increased 10 times — then the price will be divided by 10 to balance it.
- Dividends — dividends are issued based on the company choice and are a profit distribution to shareholders. They also have an effect on the stock price, which is usually minor.
Which data gets adjusted — historical or live data ?
Great question, which some experienced traders struggle to understand even today.
When the adjustment event occurs (the split/div date) all data prior to that event needs to be modified because of that event. From that point onwards — all new data would be considered raw actual data since it will capture the live data as it is happening. This should happen on every adjustment event.
Let’s take a look at the AAPL ticker for example. It had 5 splits throughout it’s trading history:
Let’s focus on the latest split, which occurred on 2020–08–31. We would like to see how this split affected our price and volume data, and what are the adjusted & unadjusted values after and before the split. Note we split our analysis to 2 categories — adjusted data and unadjusted data:
As you can see by looking at the image, the split factor after the split is 1, and before it’s 0.25. It means we need to adjust all data prior to the split with this factor, and if you compare the adj/unadj open prices, or the adj/unadj volume before the split you’ll see the values differ. BUT — after the split — those values will be the same. The un_adj columns here represent the real actual values that the market was trading by on that day, like explained above. However, the adj columns you are seeing are those real values multiplied or divided by that split factor (depends if it’s price or volume).
How does this affect the charts that I look at?
So, it varies between charting software and different platforms, but usually the default on these platforms is to show you the chart with the adjusted data, since there will be huge gaps in the chart if you show the unadjusted data (look at the image above, AAPL data). You also have the option to tinker with the settings and change it if you’d really like to.
Here’s the daily chart for AAPL, based on the data we showed above :
You can clearly see that the price range for all the days prior to the split are in the ~$125 range, which is the adjusted price, not the actual real price AAPL traded on that day.
That’s why when analyzing historical data, it’s very important to understand what data you are looking to pull and analyze, adjusted or unadjusted. There is no right or wrong, it just depends on your requirements and what you are looking to achieve.
Pro Tip: usually when fetching or filtering a data point that spans over multiple days, for example the 20 day close moving average, or the gap% — you’ll want to use adjusted values since if there was a split in 1 of those days and you’re using unadjusted — it can mess up your data. But, if you’re pulling a data point from just from 1 day — it’s your call whether to choose the adjusted or unadjusted value — based on your needs and what you hope to gain.
OK I understand what adjusted vs. unadjusted data is … How is it related to gappers ?
In order to pull historical gappers, meaning stocks the gapped up x%, you are filtering for a change in open price to the previous close price.
(Open price on a given day — close price on previous day) / close price on previous day * 100 > X %
If there was a split on a given day and you are using unadjusted data to do the filtering, meaning taking the real open price and real previous close price — there will be a huge gap between the prices, not because of an organic price increase/decrease, but because of the split. You can see this with the previous example of AAPL price we show cased:
If you scan AAPL data, with unadjusted data — you’ll see this huge drop price on 2020–08–31, as the unadjusted previous close price was $499.23 and the open price (adj or unadj , does not matter in this case bcs the split factor is 1) was $127.58.
AAPL clearly did not tank 75% on that day 🙂
CONCLUSION : WHEN SCANNING FOR GAPPERS, ALWAYS USE ADJUSTED DATA IN THE GAP% FILTER.
And that’s why in spikeet.com when you set a GAP% filter we set it as adjusted by default, to make sure you get correct results:
If you are looking to get your hands on previous gappers in the stock market without needing to know how to code — be sure to check spikeet.com
We have built a platform where you can query our system and define your strategies with plain simple words. No coding required, and you can run extremely complex scans , as well as simple ones like scanning for past gappers > 20%, just like shown in this video: https://youtu.be/v-5hOYF6gzM
Noam —I personally struggled understanding this concept at first, and found out many veteran traders still do to this date :_)