I am using a large daily data panel for over 250 companies and over several years. I am concerned about adjusting for stock splits. Is there any program in SAS to detect stock splits? How do I adjust the stock splits?
It will only work for the latest data, but you can get latest dividend information and latest split date/ratio from yahoo, it comes with the other company stats (here is a sample of the output):
<ForwardAnnualDividendRate>0.36</ForwardAnnualDividendRate> <ForwardAnnualDividendYield>1.10%</ForwardAnnualDividendYield> <TrailingAnnualDividendYield>0.33</TrailingAnnualDividendYield> <TrailingAnnualDividendYield>1.00%</TrailingAnnualDividendYield> <p_5YearAverageDividendYield>1.40%</p_5YearAverageDividendYield> <PayoutRatio>32.00%</PayoutRatio> <DividendDate>Sep 10, 2013</DividendDate> <Ex_DividendDate>Nov 13, 2013</Ex_DividendDate> <LastSplitFactor term="new per old">5:4</LastSplitFactor> <LastSplitDate>Dec 11, 2013</LastSplitDate>
Replace "GRC" with your stock symbol in the following URL:
This is an automated scrape of http://finance.yahoo.com/q/ks?s=GRC.
Here is R code which calculates the "Split Ratio" for historical data:
library(TTR) s <- getSymbols("GILD", auto.assign=FALSE) splitRatio <- s$GILD.Adjusted / s$GILD.Close names(splitRatio) <- c("SplitRatio") head(splitRatio) tail(splitRatio)
However (and this is a big however): the cumulated amount of dividends paid will slowly distort this ratio. For example, IBM hasn't had a stock split since 1999, yet the "SplitRatio" at 2007-01-03 is 0.897. This means that IBM has paid out a total of (1/0.897)-1 = 11% dividends since 2007-01-03.
In addition, I'm not 100% sure that this is the complete story, so I've made this a community Wiki so any correct inassumptions can be addressed.
This answer is wrong, according to the comment below from Joshua Ullrich:
Don't do this. It's much better to use quantmod::adjustOHLC with Yahoo data. When use.Adjusted=FALSE (the default), the function pulls the split and dividend data from Yahoo and calculates the ratios manually.