金融数据获取

点赞、关注再看,养成良好习惯 Life is short, U need Python 1. 前言 作为投资者,尤其是量化投资者,时常听到的一句话是“不要把鸡蛋放入同一个篮子中”,即所谓的分散投资策略。于是,从中可以看出分散投资可以降低投资风险,但是,投资者面对几千种各式各样的篮子,

  • 点赞、关注再看,养成良好习惯
  • Life is short, U need Python


1. 前言

作为投资者,尤其是量化投资者,时常听到的一句话是“不要把鸡蛋放入同一个篮子中”,即所谓的分散投资策略。于是,从中可以看出分散投资可以降低投资风险,但是,投资者面对几千种各式各样的篮子,选择哪一个篮子,然后每个篮子该放多少个鸡蛋,大多数投资者仅仅凭自己的感觉或者一时冲动;另外,即使投资者选对篮子且鸡蛋数量也控制的很好,可是何时把手里的鸡蛋换成超额收益又是跟着感觉走。针对上述种种问题,量化投资破壳而出,专门解决上述问题的一种工具。

众所周知,金融数据是量化投资的基础和前提,投资者制定的量化投资策略都是建立在对金融数据分析的基础上。本文博主将带领大家尝试如何利用Python实现金融数据的获取。

据博主所知,目前在线编程量化投资平台众多,而且各种在线策略平台都支持Python语言(而且大多策略平台仅支持Python语言,且对应的Python课程资源以及策略案例众多,社区非常活跃),例如JoinQuant(聚宽量化交易平台)、BigQuant(点宽量化交易平台)、UQER(优矿量化交易平台)、WQ(万矿量化交易平台)等,这也是博主推出Python量化投资基础系列的原因。但是,本文不再涉及利用Python调取这些平台端口的金融数据(因为这些平台需要注册,且每天流量有限制,速度有点慢)。

2. 雅虎网

(1)官网:https://www.yahoo.com/

(2)安装 pandas-datareader

  • 命令行窗口:pip install pandas-datareader(建议)
  • 下载本地安装:https://pypi.org/project/pandas-datareader/

(3)读取数据

import pandas_datareader.data as pdr 

# 读取标普500
sp500 = pdr.DataReader(name='^GSPC',data_source='yahoo',start='1/1/2020',end='2/26/2020)   
# 查看数据前5行
sp500.head()
# 输出数据
sp500.to_csv('sp500.csv')

或者

import pandas_datareader.data as pdr 

# 读取标普500
sp500 = pdr.get_data_yahoo('^GSPC',start='1/1/2020',end='20/2/2020') 
# 查看数据前5行
sp500.head()
# 输出数据
sp500.to_csv('sp500.csv')

在这里插入图片描述

  • 上证、深证标的

import pandas_datareader.data as pdr 

# 读取浦发银行:600000(上证)
stock_600000 = pdr.get_data_yahoo('600000.ss','1/1/2015','20/8/2015')   
stock_600000.head()

# 读取广发证券:000776(深证)
stock_000776 = pdr.get_data_yahoo('000776.sz','1/1/2015','20/8/2015')   
stock_000776.head()

3. TuShare

TuShare是一个免费、开源的python财经数据接口包。
主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。

考虑到Python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型。

(1)官网:http://tushare.org/

(2)安装 tushare

  • 命令行窗口:pip install tushare
  • 下载本地安装:https://pypi.python.org/pypi/tushare/

(3)读取数据

import tushare as ts 

# 读取中国平安(601318)数据
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20')
# 查看数据前5行
zgpa.head()
# 输出数据
zgpa.to_csv('zgpa.csv')

或者

import tushare as ts 

# 读取中国平安(601318)数据: ktype='D'/'W'/'M'(日/周/月); 默认日线数据
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20', ktype='D')
# 查看数据前5行
zgpa.head()
# 输出数据
zgpa.to_csv('zgpa.csv')

在这里插入图片描述

  • 注: "ts.get_hist_data"接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2

import tushare as ts             # 事先安装:pip install tushare
pro = ts.pro_api()

df_000776 = pro.daily(ts_code='000776.SZ', start_date='20161017', end_date='20181117')       # 日线数据
df_000776 = pro.weekly(ts_code='000776.SZ', start_date='20161017', end_date='20181117')      # 周线数据
df_000776 = pro.monthly(ts_code='000776.SZ', start_date='20161017', end_date='20181117')     # 月线数据

df_000776.head()

4. BaoStock

(1)官网:http://baostock.com/baostock/index.php

(2)安装baostock

  • 命令行窗口:pip install baostock
  • 下载本地安装:https://pypi.python.org/pypi/baostock

(3)读取数据

import baostock as bs     

# 无需注册,直接输入此行代码即可
lg = bs.login(user_id="anonymous", password="123456")  
# 浦发银行数据(600000):frequency=’d'/'w'/'m'(日/周/月)
# 选取特征
fields = 'date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST'
rs = bs.query_history_k_data('sh.600000',fields,start_date='2019-01-01', end_date='2019-02-20', frequency="d")   
# 获取数据
pfyh = rs.get_data()
# 查看数据前5行
pfyh.head()
# 输出数据
pfyh.to_csv('pfyh.csv')

在这里插入图片描述

  • date(日期);code(代码);open(开盘价);high(最高价);high(最高价);low(最低价);close(收盘价);preclose(前收盘价);volume(成交量);amount(成交额);adjustflag(复权状态:1-后复权2-前复权3-不复权);turn(换手率);tradestatus(交易状态:1-正常0-停盘);pctChg(涨跌幅);peTTM(动态市盈率);pbMRQ(市净率);psTTM(市销率);pcfNcfTTM(市现率);isST(是否ST:1-是0-否)


  • 写作不易,切勿白剽
  • 博友们的点赞关注就是对博主坚持写作的最大鼓励
  • 持续更新,未完待续…

下一篇:量化投资基础(一)之 K线图策略

知秋君
上一篇 2024-07-05 21:36
下一篇 2024-07-05 21:02

相关推荐