Comparing our data to other sources

Many of our customers compare our data with other free sources like Yahoo Finance or Bloomberg. We strongly support this practice and believe that only data that is throughly checked for errors can give reliable results in your backtesting and analysis.

Please make sure that you understand how Yahoo Finance data is organized before trying to compare our data with theirs. We are going to give you some useful suggestions that will help you with your analysis.

Problems with the new Yahoo Finance web site

Yahoo has recently changed the main Yahoo Finance web site and introduced some errors. Their "Adj Close" column now shows unadjusted prices instead of the adjusted prices. Until they change it, please use their Singapore web site for all future analysis. Our adjusted data should be more or less the same as prices in their "Adj Close" column. Similarly, our unadjusted close prices are the same as the ones in the "Close" column.

An example of Yahoo error

Here is a good example of how Yahoo uses the price outside of the regular session (after 4 PM) and then calculates both High and Close values incorrectly for the company Borders Group, Inc. (BGP) on 11/24/2008. Chart below shows the intraday data and makes it obvious how you can miscalculate your trading system results and use completely wrong High and Close prices for the day in your analysis.

Click on the image below to see the larger version:

Adjusting Yahoo prices for splits and dividends

Our standard data format produces adjusted prices. Before doing any comparison you need to adjust Yahoo prices. First get the multiplier by dividing the price from the "Adj Close" column with the price from the "Close" column. Multiply Yahoo prices from Open, High, Low and Close columns with that multiplier to get the adjusted prices.

The last "Adj Close" column on Yahoo contains the adjusted version of the close price. Use these calculations to get the adjusted date, open, high, low, close, volume values:

Date = Date
Adjusted Open = Open * (AdjClose/Close)
Adjusted High = High * (AdjClose/Close)
Adjusted Low = Low * (AdjClose/Close)
Adjusted Close = AdjClose
Volume = Volume

There are a few differences in closing prices caused by the fact that we use the last trade price for daily close. The official closing price can be a transaction that occurred after the market close. For more information, please see this section on our support web page.

Here is an example for Baidu, Inc. (BIDU) on July 25, 2007:

Open,High,Low,Close: 178.9, 185.3, 173.43, 183.23

AdjClose = 18.32
Multiplier = AdjClose / Close = 18.32 / 183.23 = 0.09998
Adjusted Open = Open * Multiplier = 178.90 * 0.09998 = 17.89
Adjusted High = High * Multiplier = 185.30 * 0.09998 = 18.53
Adjusted Low = Low * Multiplier = 173.43 * 0.09998 = 17.34
Adjusted Close = Close * Multiplier = 183.23 * 0.09998 = 18.32

Getting the correct volume value from Yahoo

Although OHLC data is shown as unadjusted, volume on the Yahoo web site is already adjusted. If you want to compare their volume data with ours, just leave the Yahoo value as-is. You will find out that the volume is more or less the same. The difference, if any, is probably the result of a few transactions outside the regular market session.

Open and Close prices are sometimes outside regular session hours

As already explained, sometimes daily Open/Close prices from Yahoo (or other sources) do not match with our data. That is the result of how the official Open/Close price is calculated. Open price for the day is not necessarily the first intraday price. Also, the official closing price can be a transaction that occurred after the market Close and, similarly, is not always the last price during the regular market session. The Open and Close of the regular market session are the most volatile periods of the trading day. The price other data sources register as Open/Close can often be misaligned with the first/last tick and intraday data. The market specialist on NYSE can also delay the open after 9:30 AM for a particular stock and set a fixed open price disregarding the accumulated buy and sell orders. Price after the Close of the session can become the Close price for the day. That is why we make the daily data match the intraday records exactly and use only data within the regular session.

High and Low prices on Yahoo can be produced by bad ticks

Whenever our high/low price do not match other sources, that is usually caused by a spike which has been filtered out on our side. Spike or a bad tick can be sent by an exchange as a result of either an error or the real transaction that has occurred outside the normal price range for a day. The data is filtered against the most obvious errors only. You can also filter out the extreme prices in data if you compare them with the previous and/or next bars' prices. If a Yahoo Open/Close price is outside of regular session hours and it is simultaneously High or Low price for a day, that will not be reflected in our data. This exact case is shown on the chart above for BGP on 11/24/2008.