9
$\begingroup$

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?

$\endgroup$
1
  • 10
    $\begingroup$ You should get a list of stock splits from your data vendor. Trying to detect splits from pricing history can lead to false positives around earnings season. Also, adjusting for corporate actions gets asked a lot on here [ 1, 2, 3, 4, 5 ]. $\endgroup$ Mar 14, 2013 at 16:36

3 Answers 3

2
$\begingroup$

yahoo provides adjusted_close. You could use this to detect splits

adjustment_factor = adjusted_close/close

change in adjustment_factor = adjustment_factor (yesterday's)/adjustment_factor(today)

if this number is less than 0.9 or greater than 1, you have a split

$\endgroup$
4
  • $\begingroup$ What about reverse splits? Or 3-for-2 splits? $\endgroup$ Mar 19, 2013 at 11:11
  • $\begingroup$ you could always change the number that you use as threshold for detecting the split. I have updated my answer to reflect 3:2 and reverse splits $\endgroup$
    – nitin
    Mar 19, 2013 at 19:03
  • 5
    $\begingroup$ What if the company spins-off a subsidiary? What if they pay a large one-time dividend? My point is that it is extremely dangerous to guess what corporate actions have occurred on the basis of price alone. $\endgroup$ Mar 19, 2013 at 22:14
  • 1
    $\begingroup$ Why will you treat differently the split from dividends, subscription and others, if you are interested in the price series alone? $\endgroup$
    – kurast
    Nov 1, 2013 at 13:37
1
$\begingroup$

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:

http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20yahoo.finance.keystats%20WHERE%20symbol%3D'GRC'&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys

This is an automated scrape of http://finance.yahoo.com/q/ks?s=GRC.

$\endgroup$
-2
$\begingroup$

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.

Update

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.

$\endgroup$
3
  • 2
    $\begingroup$ 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. $\endgroup$ Apr 10, 2013 at 17:16
  • $\begingroup$ @Joshua Ullrich. Thanks for letting me know. I've updated the answer. $\endgroup$
    – Contango
    Apr 11, 2013 at 14:24
  • 5
    $\begingroup$ You could just delete your answer if it's wrong. $\endgroup$ Apr 11, 2013 at 15:08

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