2016-08-29 42 views
3

这是关于从Yahoo Finance获得的股票数据。Quantmod:从雅虎提取拆分日期EOD价格数据

我正在寻找一种确定股票拆分日期(或发行红股,与当前任务的区别并不重要)的方法。

我找不到这个问题的具体答案。这是我能想到的最好的:

require(quantmod) 
AAPL<- getSymbols("AAPL", from="1987-01-01",to="2016-08-01", auto.assign = F) 
# head(AAPL) 
# tail(AAPL)  
# assuming a minimum split of 10:11 
probableSplits<- which(Delt(Cl(AAPL)/Ad(AAPL)) <= -0.1)  
probableSplitDates<- index(AAPL)[probableSplits] 
x<- AAPL[c(probableSplits, ((probableSplits)-1))] 
x$tmpratio<- Cl(x)/Ad(x)  
x$splitRatio<- round(1/(1+Delt(x$tmpratio))) 
#Added Following 1 line for very old stocks with adjusted price in low decimals 
probableSplitDates<- index(x[x$splitRatio>1,]) 

x$splitRatio[probableSplitDates] 

chartSeries(AAPL["2014-06"],theme = chartTheme('white')) 

我想知道哪些问题该解决方案可能会遇到。

即使我在这里使用Apple,我在寻找来自印度交易所的数据(例如RELIANCE.NS),因此美国交叉参考的某些特定来源对我而言不起作用。

编辑:添加一行在非常低的十进制值

+0

导出的拆分数量需要从受可行性限制的外部可靠来源进行验证。例如,上面的AAPL示例可以从[这里](https://www.stocksplithistory.com/apple/)进行验证。至于NSE/BSE上市股票,你可以试试[这里](http://economictimes.indiatimes.com/reliance-industries-ltd/infocompanybonus/companyid-13215.cmshere)。对于大量代号,http搜索功能可用于验证是否存在外部股票拆分历史记录 – OdeToMyFiddle

+0

@Osssan:感谢您的关注。我使用AAPL数据是因为它可以在类似stocksplithistory的网站上进行验证。来自新闻媒体网站的基于http的搜索可能会非常混乱,尤其是随着数千个符号的大量转储。但是,如果没有别的办法,那样的事情就需要诉诸。但如果可以的话,我会尽量避免。 我想知道人们是否已经尝试过上述方法,并且可以提供一些关于可能导致的误差量的一些想法。 –

回答

1

你可以使用雅虎财经提供的分流/股息的数据为老调整明码标价。

require(quantmod) 
getSplits("RELIANCE.NS") 
#   RELIANCE.NS.spl 
# 1997-10-27    0.5 
# 2009-11-26    0.5 

你也可以使用adjustOHLC做了调整你。

getSymbols("RELIANCE.NS") 
RELIANCE.NS.ADJ <- adjustOHLC(RELIANCE.NS) 
+0

非常感谢@Joshua。不知道我错过了getSplis()!虽然我猜getSplits值会与Adjusted相关,如果有的话,两者会镜像相同的数据错误。让我们根据一些已知数据和一些相对模糊的公司检查结果,然后再回来。 –

+0

对不起,约书亚,我被发送了一个大雁追逐这个旧数据。 getSplits()对我来说是最好的选择。非常感谢你的帮助。再次感谢。标记答案。 一些数据问题仍然存在。例如,在“1999-02-08”中的INFY.NS中显示“1999-02-10”。使外部验证困难,但很好。 weirder rants虽然:INFY.NS的雅虎数据[“2009-02”,]没有显示收盘价的这种变化,只是在调整后的价格中,这很奇怪。 Weirder,来自印度股票交易所的数据本身在1999年给出了荒谬的错误价格,而雅虎的价格更符合INFY的年度回购协议。 –