用于财务数据的Java API

时间:2011-02-04 04:22:11

标签: java api open-source finance

我正在研究我的硕士项目,我正在寻找有关特定公司的大量财务数据。

示例:让我们说“Apple”。我想要历史价格,当前市场价格/比率,季度业绩和分析师电话。

我在StackOverflow上看到了几个关于YQL的帖子。我想我可以免费获得雅虎财经的当前价格和各种比率。然而,对于其他数据,有像汤森路透,彭博等公司,但他们似乎有一个封闭的系统。

我在哪里可以获取API来获取各种数据?有什么能帮助我获取这些数据吗?我也可以使用任何格式的原始数据。无论我能得到什么。你们可以建议任何API吗?

10 个答案:

答案 0 :(得分:3)

斯蒂芬是对的,如果你真的想要真正丰富的数据,那么你可能需要为此付出代价。

然而,通过使用此处拼写的“API”,我在自己的私人项目上取得了成功:

http://www.gummy-stuff.org/Yahoo-data.htm

我经常从标准普尔500指数中剔除所有股票,但如果您发布该数据,请与雅虎交谈。你可能需要许可它。

不过,所有这些数据都是CSV格式的,所以要获得一个很容易找到的CSV阅读器/转换器等

答案 1 :(得分:2)

正在开发的Java库是IdylFin,它具有下载历史数据的便捷方法。

免责声明:我是这个图书馆的作者。

答案 2 :(得分:1)

这是雅虎财经“Apple”的历史数据

http://in.finance.yahoo.com/q/hp?s=AAPL

底部有一个链接可下载数据。可能这可以帮助

答案 3 :(得分:1)

我会建议一些有时很难找到财务数据的API(例如季度业绩,分析师电话):

1)http://www.zacksdata.com/zacks-data-api 2)http://www.mergent.com/servius

两者都有免费试用版。

(披露:我的公司管理这两个API)

答案 4 :(得分:0)

您真的在询问免费的财务数据服务 ...而不是API。

问题是数据是一种有价值的商品。它可能会使提供商花费大量资金来建立他们的系统,并且花费更多的钱来保持这些系统的运行。当然,他们希望获得投资回报,他们(部分)通过出售他们的数据/服务来做到这一点。

(在雅虎,谷歌等的情况下,数据是从其他人那里购买的,雅虎/谷歌将受到如何使用它的限制。这些限制将反映在各自的ToS中;例如,你是只允许访问“供个人使用”的服务。)

我认为您最好的办法是联系多家金融数据提供商,并询问他们是否可以为您的数据服务提供免费访问(受限于他们可能想要施加的任何限制)。你可能会幸运...

答案 5 :(得分:0)

您是否尝试过Google财经API? (请谷歌吧;)。我用它来跟踪我的投资组合。你能试试http://code.google.com/apis/finance/docs/finance-gadgets.html吗?有一个自定义小部件的示例,它可能会告诉您是否在正确的树下吠叫。

答案 6 :(得分:0)

好的数据不是免费的。就这么简单。原因是所有数据最终都是从纽约证券交易所或纳斯达克证券交易所获得许可。

如果您可以获得一些资金,可以从Automated Trader获得高分辨率的历史数据。

您还应该与您学校的商学院交谈。如果他们有金融硕士/博士生或金融工程硕士,他们应该为学生提供大量高分辨率数据库。

如果您提出更详细的问题,我可以提供更详细的答案。

答案 7 :(得分:0)

这是我每周至少开一次的事情。当互联网由Gopher组成时,您可以登录纳斯达克和纽约证券交易所的FTP服务器,并免费下载各种股票历史文件。我已经完成了它,甚至将它导入数据库并用它做了一些东西....但那可能是10台计算机之前,它的LONG现在已经消失了。

答案 8 :(得分:0)

答案 9 :(得分:0)

我过去曾解决过这个问题。

对于价格历史数据,我使用了雅虎的API。当我说API时,我的意思是我正在为价格历史数据的CSV文件发出HTTP get请求。不幸的是,这只能为您指定一个公司的数据。所以我首先列出了所有的股票代码,然后重复一遍,为每个代码调用yahoo的API。您也许可以找到一个列出股票代码的网站,并且只是定期下载该列表。

这种做法过于频繁和过快,他们的网站可能会阻止你。我添加了一些代码来限制我发出http请求的频率。我还坚持我的数据,所以我不必再得到它。我总是坚持原始/未处理的数据形式,你的代码可能会以很难使用其他任何东西的方式改变。 Avro / Thrift可能是一个例外,因为那些支持模式演变。

对于其他类型的数据,您可能没有任何API可以为您提供漂亮的CSV文件。我不得不多次应对这个问题。这是我的建议。

有时网站会在幕后调用一个安静的网络服务,你可以通过使用firebug来发现它。有时它还需要某些标题,您也可以使用firebug发现它们。

如果您被迫使用HTML,有几个Java库可以帮助您。 apache.commons.http是一个可以用来轻松发出http请求并处理响应的库。谷歌也有一个http客户端jar,这可能值得研究。

JSoup API非常适合解析HTML数据,即使格式很差,也不是XHTML。它也适用于XML。不是遍历或访问jsoup层次结构中的节点,而是学习XPath并使用它来选择所需的内容。该网站可能会定期更改其网页的格式,如果您使用的是JSoup,应该很容易处理并修复,并且难以应对。

如果您必须使用JSON,请使用Jackson库进行解析。

如果您必须使用CSV,请使用OpenCSV库来解析和处理它。

此外,始终将数据存储在原始数据中,并避免发出不必要的HTTP请求,以免被阻止。我被Google财经封锁了几次,他们可以做到。幸运的是,该块确实会过期。您甚至可能希望在请求之间添加随机等待时间。