从Yahoo!获取调整后的价格信息在一次调用中为多个符号提供Finance API

时间:2011-02-01 06:32:47

标签: stockquotes quantitative-finance yahoo-finance

我想使用Yahoo!获得一组股票代码的调整后价格(调整分割和股息)金融。看起来历史价格调用一次仅限于一个符号。如果有办法在一次通话中获得多个符号,请告诉我吗?

我想获取这些数据,以便我可以对该数据进行一些回溯测试。由于我可能需要相当多的符号(例如500-1000),如果我只需要对Yahoo!服务器进行几次批量调用,而不是每个符号每天进行一次调用,这将更容易。

获得调整后价格的另一种方法是使用他们的每日股票价格api并使用股息和拆分信息手动调整(他们允许每日股票报价使用多个符号)。不幸的是,我找不到任何方法从http调用中获取拆分信息(基于50%或200%的猜测是一种选择,但如果你处理便士股票,这可能是危险的,无法找出不均匀的拆分)。此外,它返回的红利信息不易解码。他们似乎将超过4个季度的总回报,并且股息日期与基于历史价格的实际股息日期并不真正对应。可以在此处找到呼叫的各种选项:http://www.gummy-stuff.org/Yahoo-data.htm

有关获得多个符号的调整价格的任何建议吗?或者我不必担心向雅虎拨打100个电话!每天?理想情况下,我希望每天在几个小时内下载所有必需的数据 - 即每分钟10-20个电话。太多了吗?我找不到每秒允许的请求数量的任何文档。

我对其他可以获得类似数据的地方开放。但是,由于我只是想学习量化交易的基础而不是交易,我宁愿免费下载。

由于 -e

3 个答案:

答案 0 :(得分:1)

你熟悉R吗? R中相当简单的脚本将使您能够做到这一点。 以下是一些资源的链接:https://stackoverflow.com/questions/1228801/r-for-finance-tutorials-resources 阅读答案,他们建议了大量的R-finance书籍。

答案 1 :(得分:0)

这是一个老问题,但我确实找到了可用分割数据的来源。不确定这些公告有多全面:

http://biz.yahoo.com/c/09/s1.html

在网址中,“09”部分是年份(2009年),“s1”部分是月份(s1 = 1月,s2 = 2月,s3 = 3月等)

这不是一个很好的干净的CSV,但页面的格式是一致的,应该是可解析的。只需每天查询当月,查询页面,并处理前一天没有看到的任何拆分。

ETA:另一个来源(可能不如雅虎可靠,但可以通过自动收报机查询):

http://getsplithistory.com/

答案 2 :(得分:0)

我不确定您使用的是哪种语言,但我在C#中有一个示例。我认为它至少会给你这个想法,或者可能会帮助其他人

 private string BASE_URL = "http://query.yahooapis.com/v1/public/yql?q=" + "select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20({0})" + "&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";

Collection<Quote> quotes;

string symbolList = String.Join("%2C", quotes.Select(w => "%22" + w.Symbol + "%22").ToArray());
string url = string.Format(BASE_URL,symbolList);

XDocument doc = XDocument.Load(url);
Parse(quotes,doc);   

我们在这里做的是将“,”附加到每个数组项,然后将该符号列表传递给yahoo。我已成功获得每次通话中700个符号的价格。为每个自动收报机点击雅虎服务器是一件痛苦的事。我每天都会获取所有6500+代码的股票价格。早些时候它用了3个小时,现在不到2分钟......甜蜜

该代码的来源链接位于此处 - http://www.jarloo.com/get-yahoo-finance-api-data-via-yql/

P.S。请让api key顺利运作。上面的url是一个公共链接,其中表格在大多数时间都是超时的。获得api密钥后,您的网址将为(减去“公共”)

http://query.yahooapis.com/v1/yql