Python 量化投资最简入门

数据科学 2021-06-11 64 次浏览 0 条评论 次点赞

量化投资就是利用计算机科技并采用一定的数学模型去实现投资理念、实现投资策略的过程。量化投资的优势在于提高了我们分析的广度和深度,通过历史回测获取概率优势,同时自动交易过程可以规避人性中的诸多弱点。随着大数据和人工智能的发展,量化投资将成为市场的主流投资工具,并且将与传统的基本面分析和技术分析深度结合。

maxresdefault.jpg

许多量化投资入门教程通常教授用 Python 通过爬虫从网络接口爬取股票数据,用 matplotlib 绘制 K 线和均线,基于 Numpy+Pandas+Matplotlib 进行数据分析,并用 sklearn 库的机器学习方法预测股票后市价格(如《基于股票大数据分析的Python入门实战》),但我们从 Python 使用现成数据源入手。以下主要介绍新浪财经的金融数据源,以及在 Python 中使用数据 API 和独立数据库的简要步骤。


A股、港股、美股行情数据源

新浪财经股票数据接口为例,用以获取最近1023个数据节点,其美股数据源为 Nasdaq 交易所集团(Nasdaq、Nqbx、Nqpx 三大交易所数据)。

A股

上证指数:http://hq.sinajs.cn/list=s_sh000001
深证成指:http://hq.sinajs.cn/list=s_sz399001
沪深300:http://hq.sinajs.cn/list=s_sz399300
创业板指:http://hq.sinajs.cn/list=s_sz399006
中小板指:http://hq.sinajs.cn/list=s_sz399005

沪市个股:http://hq.sinajs.cn/list=sh[股票代码]
深市个股:http://hq.sinajs.cn/list=sz[股票代码]

http://hq.sinajs.cn/list=sz000858,这个url会返回一个字符串文本:

var hq_str_sz000858="五 粮 液,303.060,303.050,300.970,304.000,296.000,300.430,300.990,10247196,3075228867.580,100,300.430,400,300.410,300,300.010,1264,300.000,100,299.990,1200,300.990,6100,301.000,100,301.040,1000,301.090,100,301.100,2021-06-11,11:30:00,00";

这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开,按序定义为:

0:股票名字;
1:今日开盘价;
2:昨日收盘价;
3:当前价格;
4:今日最高价;
5:今日最低价;
6:竞买价,即“买一”报价;
7:竞卖价,即“卖一”报价;
8:成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
9:成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
10:“买一”;
11:“买一”报价;
(12, 13), (14, 15), (16,17), (18, 19)分别为“买二”至“买五”的情况
20:“卖一”;
21:“卖一”报价
(22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖五”的情况
30:日期;
31:时间。

1.可使用http://hq.sinajs.cn/list=sh[股票代码1],[股票代码2]……格式一次获取多个股票的实时数据。
2.字符串数据定义具体比照新浪财经个股页面,下同。

港股

恒生指数:http://hq.sinajs.cn/list=int_hangseng

港股个股:http://hq.sinajs.cn/list=hk[股票代码]

美股

美股三大指数

道琼斯:http://hq.sinajs.cn/list=int_dji
纳斯达克:http://hq.sinajs.cn/list=int_nasdaq
标普指数:http://hq.sinajs.cn/list=int_sp500

美股个股:http://hq.sinajs.cn/list=gb_[股票代码](字母小写)

JavaScript 和 Python 应用

在 HTML 中使用以下 JavaScript 代码,可以直接获取相关数据:

<script type="text/javascript" src="http://hq.sinajs.cn/list=sz000858" charset="gb2312"></script>  
<script type="text/javascript">
var elements=hq_str_sz000858.split(",");
document.write("current price:"+elements[3]);
</script>

HTML 显示:

current price:301.830 # 实时数据

以下是 Python 使用 http://hq.sinajs.cn/list=gb_intc 数据源的基础代码:

import requests

url = 'http://hq.sinajs.cn/list=gb_intc' 
res = requests.get(url).text
print(res)
data = res[14:-3].replace('="',',').split(',')
print("data)
for datum in data:
    print(datum)

INTC2.PNG

INTC1.PNG

要一次获取多个股票信息,参看这里

其他指数

伦敦指数:http://hq.sinajs.cn/list=int_ftse
日经指数:http://hq.sinajs.cn/list=int_nikkei
台湾台北指数:http://hq.sinajs.cn/list=b_TWSE
富时新加坡海峡时报指数:http://hq.sinajs.cn/list=b_FSSTI

新浪图片接口

深市:http://image.sinajs.cn/newchart/daily/n/sz[股票代码].gif
沪市:http://image.sinajs.cn/newchart/daily/n/sh[股票代码].gif
美股:http://image.sinajs.cn/newchart/usstock/daily/[股票代码].gif

分时线查询:http://image.sinajs.cn/newchart/min/n/sh[股票代码].gif
日K线查询:http://image.sinajs.cn/newchart/daily/n/sh[股票代码].gif
周K线查询:http://image.sinajs.cn/newchart/weekly/n/sh[股票代码].gif
月K线查询:http://image.sinajs.cn/newchart/monthly/n/sh[股票代码].gif

根据不同的组合,可以实现 gif 图片显示各股票的 K 线图,如以下是 Intel 的日K线:

Intel 日K线

新浪财经其他数据查询

获取5、10、30、60分钟JSON数据

http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=[市场][股票代码]&scale=[周期]&ma=no&datalen=[长度]

股票日期的股价JSON数据

http://finance.sina.com.cn/realstock/company/[市场][股票代码]/[复权].js?d=[日期]

股票历史成交明细XLS文件

http://market.finance.sina.com.cn/downxls.php?date=[日期]&symbol=[市场][股票代码]

指定日期范围内的股票分价表HTML文本

http://market.finance.sina.com.cn/pricehis.php?symbol=[市场][股票代码]&startdate=[开始日期]&enddate=[结束日期]

其他数据接口

netease 历史数据 csv 下载接口

http://quotes.money.163.com/service/chddata.html?code=[股票代码]&start=[起始日期]&end=[结束日期]&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP

可以指定起始日期、结束日期以及数据指标,下载股票历史数据。

sohu 历史数据 json 下载接口

https://q.stock.sohu.com/hisHq?code=cn_[股票代码]&start=[起始日期]&end=[结束日期]&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp

WebXml.com.cn ChinaStockWebService

中国股票行情数据 WEB 服务(支持深圳和上海股市的全部基金、债券和股票)。

其他中文数据源还有百度、和讯、东方财富、证券之星、Wind、Google、Yahoo 等。


TuShare

除了以上股票数据 API,还有金融数据库可以使用,比如 TuShare,以及 BaoStock、Quandl、yfinance、ccxt、pandas_datareader 等,这里有更多资源介绍。以下以 TuShare 为例:

安装

pip install tushare

升级

pip install tushare –upgrade

快速使用

import tushare as ts
ts.get_hist_data('600848')

tushare.PNG


本文由 cds 整理发布,参考 CC-BY-SA 3.0 协议共享,欢迎转载、引用或改编。
感谢您的支持,以让我们持续关注中国学子的STEAM旅程!

还不快抢沙发

添加新评论