我尝试着创造一个股票市场模拟器(也许最终会发展成一个预测AI),但是我在寻找数据方面遇到了困难。我正在寻找(希望是免费的)历史股票市场数据的来源。

理想情况下,它将是一个非常细粒度(秒或分钟间隔)的数据集,包含纳斯达克和纽约证券交易所(如果我有冒险精神,可能还包括其他)的每个符号的价格和交易量。有人知道这类信息的来源吗?

我发现这个问题表明雅虎提供CSV格式的历史数据,但我一直无法找到如何在粗略的检查网站链接得到它。

我也不喜欢在CSV文件中逐个下载数据的想法……我想雅虎会很生气,在我收到几千个请求后就把我关了。

我还发现了另一个问题,让我觉得我中了大奖,但不幸的是,OpenTick网站似乎已经关闭了它的大门……太糟糕了,因为我觉得这正是我想要的。

我还可以使用每天每个符号的开盘/收盘价格和成交量的数据,但我更喜欢所有的数据,如果我能得到的话。还有其他建议吗?


当前回答

对于无生存偏差的数据,我找到的唯一可靠来源是QuantQuote (http://quantquote.com)

数据以分钟、秒或滴答的分辨率,链接到他们的历史股票数据。

上面有一个关于kibot的建议。在从他们那里购买之前,我会快速搜索谷歌,你会发现很多这样的帖子,关于kibot数据质量问题的警告。这也说明,他们所谓的无生存偏差sp500在14年里只有570个符号。这几乎是不可能的,sp500每月改变1-2个符号....

其他回答

这个答案不再准确,因为雅虎feed已经不复存在

使用雅虎的CSV方法,你也可以获得历史数据! 您可以逆向工程如下示例:

http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv

从本质上讲:

sn = TICKER
a = fromMonth-1
b = fromDay (two digits)
c = fromYear
d = toMonth-1
e = toDay (two digits)
f = toYear
g = d for day, m for month, y for yearly

参数的完整列表:

a   Ask
a2  Average Daily Volume
a5  Ask Size
b   Bid
b2  Ask (Real-time)
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c   Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d   Dividend/Share
d1  Last Trade Date
d2  Trade Date
e   Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g   Day's Low
h   Day's High
j   52-week Low
k   52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i   More Info
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k3  Last Trade Size
k4  Change From 52-week High
k5  Percent Change From 52-week High
l   Last Trade (With Time)
l1  Last Trade (Price Only)
l2  High Limit
l3  Low Limit
m   Day's Range
m2  Day's Range (Real-time)
m3  50-day Moving Average
m4  200-day Moving Average
m5  Change From 200-day Moving Average
m6  Percent Change From 200-day Moving Average
m7  Change From 50-day Moving Average
m8  Percent Change From 50-day Moving Average
n   Name
n4  Notes
o   Open
p   Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q   Ex-Dividend Date
r   P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s   Symbol
s1  Shares Owned
s7  Short Ratio
t1  Last Trade Time
t6  Trade Links
t7  Ticker Trend
t8  1 yr Target Price
v   Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w   52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x   Stock Exchange
y   Dividend Yield

为什么不用布朗运动来模拟一个假股市呢?

有足够的资源来做这件事。易于实现。

http://introcs.cs.princeton.edu/java/98simulation/

不幸的是,免费的历史股票数据很难获得。现在opentick已经死了,我不知道还有其他提供商。

我曾在一家拥有自动交易系统的对冲基金工作,我们大量使用历史数据。

我们使用TickData作为源。它们的价格合理,而且数据的分辨率低于秒级。

我们从Kibot.com购买了12年的日内数据,对其质量相当满意。

至于存储要求:所有美国股票(超过8000个符号)12年1分钟的数据大约100GB。

与滴答滴答的数据情况略有不同。如果只记录时间和销售额,那么所有美国股票每月大约需要30GB的数据。如果你想把买入价/卖出价的变化和交易一起存储,你可以期望每个月150GB。

我希望这能有所帮助。如果还有什么我能帮忙的,请告诉我。

我会爬到finance.google.com(寻找报价)——或者finance.yahoo.com。

这两个都将返回世界各地大多数交易所的html页面,包括历史。然后,只需解析HTML以提取所需的内容。

我以前就这样做过,而且非常成功。或者,如果你不介意使用Perl——CPAN上有几个模块已经为你完成了这项工作——即从谷歌/Yahoo提取报价。

有关更多信息,请参阅引用历史