我们使用网易的股票历史交易数据,来进行基本的统计分析。
打开 money.163.com,搜索你想要的股票,找到历史交易数据,找到下载数据的链接,即可下载想要的数据。
根据选择的字段,最终的下载链接大概是这样的:http://quotes.money.163.com/service/chddata.html?code=0600690&start=19931119&end=20180706&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;PCHG;TURNOVER;VOTURNOVER;VATURNOVER
把 code, start, end 字段修改一下即可下载其他股票在指定时间的交易数据。需要注意,股票代码前面的那个数字表示的是交易所,0 表示上海证券交易所,1 表示深圳证券交易所。
示例数据如下:
日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌幅,换手率,成交量,成交金额
2018-07-06,'600690,青岛海尔,18.22,18.64,17.51,18.24,18.21,0.0549,0.7088,43215639,780514355
2018-07-05,'600690,青岛海尔,18.21,18.85,18.05,18.42,18.18,0.165,0.6093,37150823,685499190
2018-07-04,'600690,青岛海尔,18.18,18.86,17.98,18.43,18.43,-1.3565,0.5812,35436927,653393994
2018-07-03,'600690,青岛海尔,18.43,18.96,17.82,18.72,18.77,-1.8114,0.7425,45274004,824268443
下载下来的数据是未经除权除息的。在进行数据分析时,需要先进行除权除息。这里的关键是看前收盘和上一交易日的收盘价之间的差值。如果这个值不相同,则说明这是一个除权除息日,需要向前除权。需要注意,停牌期间的收盘价是 0 ,故需要扣除这一情况。
比如,下面是一个除权除息的数据:
日期,股票代码,名称,收盘价,开盘价,前收盘,涨跌幅,换手率,成交金额
2018-06-11,'600690,青岛海尔,20.36,20.43,20.36,0,0.7654,956119524
2018-06-08,'600690,青岛海尔,20.36,20.25,20.31,0.2462,0.9937,1243670054
2018-06-07,'600690,XD青岛海,20.31,20.4,20.35,-0.1966,0.788,978910159
2018-06-06,'600690,青岛海尔,20.69,20.42,20.47,1.0747,0.8941,1128508922
2018-06-05,'600690,青岛海尔,20.47,20.49,20.28,0.9369,0.8047,998596131
从交易数据可以看到,06-06 的收盘价 20.69 和 06-07 的前收盘 20.35 数值不同,说明这是个除权除息日。从股票价值的角度,差异的部分 20.69 - 20.35 = 0.34 即是股息。从同花顺数据可知,2018 年的分红为每 10 股分红 3.42 元。忽略掉数据精度的影响,与我们的计算结果相同。
下面是另外一个除权除息的数据:
日期,股票代码,名称,收盘价,开盘价,前收盘,涨跌幅,换手率,成交金额
2015-07-17,'600690,青岛海尔,14.21,13.93,13.93,2.0101,2.2727,1745340657
2015-07-16,'600690,DR青岛海,13.93,13.71,14.23,-2.1082,0.7095,547128871
2015-07-15,'600690,青岛海尔,28.95,28.96,29.26,-1.0595,2.1765,1681479282
2015-07-14,'600690,青岛海尔,29.26,30.55,31.26,-6.398,2.9782,2439246494
按照前述规则,这里的股息为 28.95 - 14.23 = 14.72,实际上这个除权除息的策略是 10 转增 10,外加每 10 股分红 4.92 元。对除权除息而言,可以不关心是送转还是现金分红。
下面是一段停牌的数据:
日期,股票代码,名称,收盘价,开盘价,前收盘,涨跌幅,换手率,成交金额
2016-02-02,'600690,青岛海尔,8.51,8.18,8.93,-4.7032,1.8993,888538495
2016-02-01,'600690,青岛海尔,8.93,8.93,9.92,-9.9798,0.7363,362911767
2016-01-29,'600690,青岛海尔,0,0,9.92,None,0,0
2016-01-28,'600690,青岛海尔,0,0,9.92,None,0,0
...
2015-10-16,'600690,青岛海尔,9.92,9.85,9.78,1.4315,1.0761,587501668
2015-10-15,'600690,青岛海尔,9.78,9.51,9.56,2.3013,0.7698,410535743
股票列表数据来自东方财富网,没有实时更新。目前数据是 2015年12月份获取出来的数据。SZ.txt 是深市股票列表,SH.txt 是沪市的全部股票列表。
curl 'http://91.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=1000&fs=b:MK0021,b:MK0022,b:MK0023,b:MK0024&fields=f12,f14'
curl 'http://91.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=10000&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f14'
TODO: None
使用 sina 的接口来获取数据。
请求如下:
curl 'https://stock.finance.sina.com.cn/fundInfo/api/openapi.php/CaihuiFundInfoService.getNav?symbol=100032&datefrom=2020-01-01&dateto=2020-06-17&page=1'
应答如下:
{
"result": {
"status": {
"code": 0
},
"data": {
"data": [
{
"fbrq": "2020-06-17 00:00:00",
"jjjz": "0.982",
"ljjz": "2.687"
},
{
"fbrq": "2020-06-16 00:00:00",
"jjjz": "0.98",
"ljjz": "2.684"
},
{
"fbrq": "2020-06-15 00:00:00",
"jjjz": "0.965",
"ljjz": "2.668"
}
],
"total_num": "110"
}
}
}
几个关键参数:
symbol
是基金代码datefrom
是开始日期dateto
是结束日期page
是返回的页数,目前没有发现可以一次性返回所有数据的接口,只能分页查询,每页返回 20 条记录。
返回的数据:
fbrq
日期jjjz
基金净值ljjz
累计净值,因为基金会分红,分拆分。所以累计净值和基金净值不同
需要注意,这个接口不是公开的接口。可能会存在预料之外的变化或不可用。
这个接口的发现途径如下:
- 搜索某个基金,打开基金的主页,如 http://finance.sina.com.cn/fund/quotes/100032/bc.shtml
- 点击 "历史净值" 标签,找到查询的功能
- 输入开始日期,结束日期后,打开浏览器网络的调试功能,通过抓取网络请求数据,就可以发现这个 API 接口