When there's a 2-for-1 stock split,

  • the number of shares doubles, while
  • the value of the stock halves

For symbol 2154 on the Tokyo Stock Exchange, there was such a 2-for-1 split on 2016/3/29.

However when looking at csv data download from Yahoo, I see the "adjusted close" doubling (not halving), while the unadjusted "Close", as well as Open, High, Low, barely move.

Here's an excerpt:

       2154     Open     High      Low    Close  Volume  Adj Close 
 2016-03-30  1576.00  1602.00  1530.00  1530.00   63600    1503.08 
 2016-03-29  1455.00  1620.00  1455.00  1551.00   86700    1523.71 
 2016-03-28  1450.00  1452.50  1425.50  1450.00   29000     712.24 
 2016-03-25  1469.50  1475.00  1438.50  1442.50   23200     708.56 

How does this all add up? What was the actual price used on 2016/03/28 when 2154 was traded? Somewhere around 1450? Or 700? Or 2900?

I just looked at another set of Yahoo data for 2170 on the Tokyo Stock Exchange, which had a 100-for-1 split on 2014/3/27, and here everything looks as I would have expected.

       2170        Open        High         Low       Close  Volume  Adj Close 
 2014-03-28      230.00      230.00      219.00      230.00   74700   190.4468 
 2014-03-27      224.00      229.00      191.00      225.00  119300   186.3067 
 2014-03-26    23500.00    23500.00    22000.00  22339.9994  181700   184.2366 
 2014-03-25  23739.9994  24080.0003  22810.0006  23230.0003  278800   191.5764 

Is Yahoo's data for 2154 just wrong? Did they perhaps get already adjusted OHLC data for 2154, used those values as their OHLC values, and then re-adjusted the already adjusted close, which lead to incorrect "Adj Close" values?

That would also mean that the actual share price of symbol 2154 on 2016/3/28 would have been around 2900.


1 Answer 1


I've used various data sources (including Yahoo) and their data is sometimes wrong. You can write code for sniffing out the errors. For all providers I've had to add "cleaners" to look for errors and make adjustments. If you use Google Finance etc you'll have random errors too. If you're making a private database then the adjustments need to be tracked in a table so you know what your program did. And some day later, Yahoo will correct the error and your adjustment needs to be removed. The trigger is comparing the new prices from Yahoo with the previous ones you had. A big change means a split or correction happened and you need to re-assess if the data is messed up or now clean.

  • $\begingroup$ Thanks for sharing your experience. I wonder if getting your data from professional financial data vendors like Reuters would ensure always correct data... $\endgroup$ Apr 26, 2016 at 23:04
  • $\begingroup$ I've used paid services: DTN IQFeed, Money.net etc. They ALL needed a cleanup function. Currently I use Interactive Brokers for Option and Stock data for Day Traders. The feed is the cleanest I've seen yet, but it's not for distribution. And they pace the data for that reason. It's fast and very good. But even there, they have Tick data and RTB (Real Time Bars) and History bars. The Tick has odd spikes that they and I clear out of the RTBs. It is being done. Just gotta rollup the sleeves and get at it. :) Clearly there is a need for clean data. Good business for someone to start. Try BATS?? $\endgroup$ May 2, 2016 at 23:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.