【量化基礎】Python獲取金融數據之Tushare
說在前面
做量化投資的第一步就是獲取金融數據,之前我已經撰寫了關於R語言獲取金融數據的文章,今天我們就討論一下python獲取金融數據的方法,主要講述如何通過tushare包獲取金融數據。
TuShare是一個著名的免費、開源的python財經數據介麵包。其官網主頁為:TuShare -財經數據介麵包。該介麵包如今提供了大量的金融數據,涵蓋了股票、基本面、宏觀、新聞的等諸多類別數據(具體請自行查看官網),並還在不斷更新中。目前股票的數據長度為三年,雖然有點短,但也可以基本滿足量化初學者的回測需求。
使用教程
1.安裝載入
安裝tushare包很簡單,我使用的是pycharm,可以用其中的包管理器安裝。然後通過import載入:
import tushare as ts;
2.簡單函數使用
下面我們用幾個簡單的函數查看tushare的基本功能,想要了解的更多的功能還是建議仔細閱讀官方文檔,裡面將可提供的數據與調用函數寫的的很清楚。
1.股票數據
我們主要還是應該掌握如何用tushare獲取股票行情數據,使用的是ts.get_hist_data()函數,其
輸入參數為:
- code:股票代碼,即6位數字代碼,或者指數代碼(sh=上證指數 sz=深圳成指 hs300=滬深300指數 sz50=上證50 zxb=中小板 cyb=創業板)
- start:開始日期,格式YYYY-MM-DD
- end:結束日期,格式YYYY-MM-DD
- ktype:數據類型,D=日k線 W=周 M=月 5=5分鐘 15=15分鐘 30=30分鐘 60=60分鐘,默認為D
- retry_count:當網路異常後重試次數,默認為3
- pause:重試時停頓秒數,默認為0
返回值說明:
- date:日期
- open:開盤價
- high:最高價
- close:收盤價
- low:最低價
- volume:成交量
- price_change:價格變動
- p_change:漲跌幅
- ma5:5日均價
- ma10:10日均價
- ma20:20日均價
- v_ma5:5日均量
- v_ma10:10日均量
- v_ma20:20日均量
- turnover:換手率[註:指數無此項]
具體例子:
ts.get_hist_data("600848") date open high close low volume p_change ma5 2012-01-11 6.880 7.380 7.060 6.880 14129.96 2.62 7.0602012-01-12 7.050 7.100 6.980 6.900 7895.19 -1.13 7.0202012-01-13 6.950 7.000 6.700 6.690 6611.87 -4.01 6.9132012-01-16 6.680 6.750 6.510 6.480 2941.63 -2.84 6.8132012-01-17 6.660 6.880 6.860 6.460 8642.57 5.38 6.8222012-01-18 7.000 7.300 6.890 6.880 13075.40 0.44 6.7882012-01-19 6.690 6.950 6.890 6.680 6117.32 0.00 6.7702012-01-20 6.870 7.080 7.010 6.870 6813.09 1.74 6.832date ma10 ma20 v_ma5 v_ma10 v_ma20 turnover2012-01-11 7.060 7.060 14129.96 14129.96 14129.96 0.482012-01-12 7.020 7.020 11012.58 11012.58 11012.58 0.272012-01-13 6.913 6.913 9545.67 9545.67 9545.67 0.232012-01-16 6.813 6.813 7894.66 7894.66 7894.66 0.102012-01-17 6.822 6.822 8044.24 8044.24 8044.24 0.302012-01-18 6.833 6.833 7833.33 8882.77 8882.77 0.452012-01-19 6.841 6.841 7477.76 8487.71 8487.71 0.212012-01-20 6.863 6.863 7518.00 8278.38 8278.38 0.23
也可以設定歷史數據的起始時間:
ts.get_hist_data("600848",start="2015-01-05",end="2015-01-09") date open high close low volume p_change ma5 ma10 2015-01-05 11.160 11.390 11.260 10.890 46383.57 1.26 11.156 11.2122015-01-06 11.130 11.660 11.610 11.030 59199.93 3.11 11.182 11.1552015-01-07 11.580 11.990 11.920 11.480 86681.38 2.67 11.366 11.2512015-01-08 11.700 11.920 11.670 11.640 56845.71 -2.10 11.516 11.3492015-01-09 11.680 11.710 11.230 11.190 44851.56 -3.77 11.538 11.363 date ma20 v_ma5 v_ma10 v_ma20 turnover2015-01-05 11.198 58648.75 68429.87 97141.81 1.592015-01-06 11.382 54854.38 63401.05 98686.98 2.032015-01-07 11.543 55049.74 61628.07 103010.58 2.972015-01-08 11.647 57268.99 61376.00 105823.50 1.952015-01-09 11.682 58792.43 60665.93 107924.27 1.54
其他:
ts.get_hist_data("600848", ktype="W") #獲取周k線數據ts.get_hist_data("600848", ktype="M") #獲取月k線數據ts.get_hist_data("600848", ktype="5") #獲取5分鐘k線數據ts.get_hist_data("600848", ktype="15") #獲取15分鐘k線數據ts.get_hist_data("600848", ktype="30") #獲取30分鐘k線數據ts.get_hist_data("600848", ktype="60") #獲取60分鐘k線數據ts.get_hist_data("sh")#獲取上證指數k線數據,其它參數與個股一致,下同ts.get_hist_data("sz")#獲取深圳成指k線數據ts.get_hist_data("hs300")#獲取滬深300指數k線數據ts.get_hist_data("sz50")#獲取上證50指數k線數據ts.get_hist_data("zxb")#獲取中小板指數k線數據ts.get_hist_data("cyb")#獲取創業板指數k線數據
2.獲取基本面數據
通過tushare我們還可以通過ts.get_stock_basics()獲取基本面數據(返回結果部分展示):
ts.get_stock_basics()code name industry area pe outstanding totals totalAssets 300563 N神宇 通信設備 江蘇 26.73 2000.00 8000.00 4.216000e+04 601882 海天精工 機床製造 浙江 26.83 5220.00 52200.00 1.877284e+05 601880 大連港 港口 遼寧 76.40 773582.00 1289453.63 3.263012e+06 300556 絲路視覺 軟體服務 深圳 101.38 2780.00 11113.33 4.448248e+04 600528 中鐵二局 建築施工 四川 149.34 145920.00 145920.00 5.709568e+06 002495 佳隆股份 食品 廣東 202.12 66611.13 93562.56 1.169174e+05 600917 重慶燃氣 供氣供熱 重慶 76.87 15600.00 155600.00 8.444600e+05 002752 昇興股份 廣告包裝 福建 75.14 12306.83 63000.00 2.387493e+05 002346 柘中股份 電氣設備 上海 643.97 7980.00 44157.53 2.263010e+05 000680 山推股份 工程機械 山東 0.00 105694.97 124078.75 9.050701e+05 ...
3.宏觀數據
我們以居民消費指數為例,可以通過ts.get_cpi()函數獲取(一次會獲取322條,部分展示):
print ts.get_cpi() month cpi0 2016.10 102.101 2016.9 101.902 2016.8 101.343 2016.7 101.774 2016.6 101.885 2016.5 102.046 2016.4 102.337 2016.3 102.308 2016.2 102.289 2016.1 101.7510 2015.12 101.64...
4.查看最近新聞
tushare包可以使用ts.get_latest_news()函數可以查看最近的新聞,會返回80條,篇幅原因我們這裡只展現前面15條。我們可以看到,都是新浪財經的新聞數據。
print ts.get_latest_news(); classify title time 美股 「特朗普通脹」預期升溫 美國國債下挫 11-14 23:10 1 美股 特朗普:臉書、推特等社交媒體助我入主白宮 11-14 23:10 2 證券 11月14日晚增減持每日速覽 11-14 22:54 3 美股 財經觀察:日本為何急於推動TPP批准程序 11-14 22:54 4 美股 新總統謎題:特朗普會連續加息嗎? 11-14 22:52 5 證券 神州專車財報遭質疑 增發100億股東退出需50年 11-14 22:41 6 證券 恆大閃電殺回馬槍鎖倉半年 戒短炒了嗎? 11-14 22:38 7 國內財經 樓繼偉力推改革做派 或加快國有資本劃撥社保 11-14 22:36 8 美股 開盤:美股周一小幅高開 延續上周漲勢 11-14 22:32 9 美股 喜達屋創始人:當好總統就要走中庸之道 11-14 22:24 10 證券 北京高華:將樂視網評級下調至中性 11-14 22:09 11 美股 11月14日22點交易員正關注要聞 11-14 22:02 12 美股 摩根大通:新興市場股市、貨幣的前景悲觀 11-14 21:55 13 國內財經 人民日報刊文談全面深化改革這三年:啃下硬骨頭 11-14 21:46 14 證券 澤平宏觀:經濟L型延續 地產銷量回落投資超預期 11-14 21:43 15 證券 黃燕銘等五大券商大佬告訴你 2017年買點啥? 11-14 21:41 url 0 http://finance.sina.com.cn/stock/usstock/c/201... 1 http://finance.sina.com.cn/stock/usstock/c/201... 2 http://finance.sina.com.cn/stock/y/2016-11-14/... 3 http://finance.sina.com.cn/stock/usstock/c/201... 4 http://finance.sina.com.cn/stock/usstock/c/201... 5 http://finance.sina.com.cn/stock/marketresearc... 6 http://finance.sina.com.cn/stock/marketresearc... 7 http://finance.sina.com.cn/china/gncj/2016-11-... 8 http://finance.sina.com.cn/stock/usstock/c/201... 9 http://finance.sina.com.cn/stock/usstock/c/201... 10 http://finance.sina.com.cn/stock/s/2016-11-14/... 11 http://finance.sina.com.cn/stock/usstock/c/201... 12 http://finance.sina.com.cn/stock/usstock/c/201... 13 http://finance.sina.com.cn/china/gncj/2016-11-... 14 http://finance.sina.com.cn/stock/marketresearc... 15 http://finance.sina.com.cn/stock/marketresearc...
結語
由於文章篇幅有限,故而只能做一個簡單的概述,其是tushare包還有著豐富的功能,等待著大家去開發,希望大家可以多去看官網文檔,養成良好的學習習慣,不斷進步。
關於更多量化投資的文章請關注專欄:清華大學量化投資協會成果集萃 - 知乎專欄
或者關注我的知乎賬號:溫如
量化投資協會主頁:http://www.thuquanters.com
量化投資協會論壇:清華大學學生經濟金融論壇
推薦閱讀:
※Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
※Flask 實現小說網站 (二)
※Python實現3D建模工具
※Flask模板引擎:Jinja2語法介紹
※OpenCV:圖片操作基本知識(二)