股票数据分析
雅虎财经网站提供股票日历史数据下载接口。
用股票代码作为参数,直接通过 http 请求来获取股票日交易数据。例如查询中国石油的历史数据,直接在浏览器中输入:
http://table.finance.yahoo.com/table.csv?s=601857.ss
深市数据以 sz
结尾:http://table.finance.yahoo.com/table.csv?s=000001.sz
上市数据以 ss
结尾:http://table.finance.yahoo.com/table.csv?s=600000.ss
另外,上证综指代码:000001.ss,深证成指代码:399001.SZ,沪深300代码:000300.ss
获取的数据样例如下:
Date,Open,High,Low,Close,Volume,Adj Close
2015-12-23,16.91,18.65,16.88,18.65,15653900,18.65
2015-12-22,16.86,17.13,16.48,16.95,13519900,16.95
2015-12-21,16.31,17.0,16.2,16.85,14132200,16.85
2015-12-18,16.59,16.7,16.21,16.31,10524300,16.31
2015-12-17,16.28,16.75,16.16,16.6,12326500,16.6
2015-12-16,16.23,16.42,16.05,16.28,8026000,16.28
2015-12-15,16.06,16.31,15.95,16.18,6647500,16.18
Date Open High Low Close Volume Adj Close 分别是:日期、开盘价、最高价、最低价、收盘价、成交量、复权收盘价
通过指定开始时间和结束时间可以获取指定时间范围的交易数据。例如,获取取 2012年1月1日 至 2012年4月19日 的数据:
http://table.finance.yahoo.com/table.csv?a=0&b=1&c=2012&d=3&e=19&f=2012&s=600000.ss
程序提供了一些基础的股票数据获取和股票数据分析的方法。
股票列表数据来自东方财富网,没有实时更新。目前数据是 2015年12月份获取出来的数据。SZ.txt 是深市股票列表,SH.txt 是沪市的全部股票列表。
原理上,使用 yahoo 财经的 API 接口下载股票数据。具体实现的代码在 yahoo_stock.py。比如,直接运行这个文件将会下载从 2015-10-1 到现在的所有中小股 (以 002 开头) 的股票数据。下载完的股票数据将放在 yahoo-data
目录下。
数据分析开发很多模型来分析,这里使用股票的振幅来进行简单分析。
一般来讲,振幅大的股票意味着风险比较高,但收益也比较高。风险与收益一定是动态平衡正相关。振幅分析实现在 stock_analysis.py 里。函数 amplitude()
默认分析最近 30 天,所有在 yahoo-data
目录下的股票数据的振幅排名。
再比如总收益率和年化收益率,这个指标也基本能反馈一个股票的投资收益水平。我们可以看最理想的情况下的收益率,比如这个股票的历史最高价和历史最低价的比值,经历多长时间,平均每年收益多少。
还可以看这个股票发行第一天的收盘价和当前价的比值,这个反应的是一个自然的增长情况。
另外,还可以按年或按月看一个股票的收益率。
这些统计模型都在 yahoo-stock.ipynb 里有演示。