资讯专栏INFORMATION COLUMN

量化交易之股票数据的获取——Pandas API接口

yuanxin / 3935人阅读

摘要:前言库提供了专门从财经网站获取金融数据的接口,可作为量化交易股票数据获取的另一种途径,该接口在库基础上实现了以客户端身份访问网站的股票数据。第三四个参数为股票数据的起始时间断。遍历每个交易日后将符合跳空缺口条件的交易日增加缺口数值。

前言

Pandas库提供了专门从财经网站获取金融数据的API接口,可作为量化交易股票数据获取的另一种途径,该接口在urllib3库基础上实现了以客户端身份访问网站的股票数据。需要注意的是目前模块已经迁徙到pandas-datareader包中,因此导入模块时需要由import pandas.io.data as web更改为import pandas_datareader.data as web


DataReader方法介绍

查看Pandas的手册可以发现,第一个参数为股票代码,苹果公司的代码为"AAPL",国内股市采用的输入方式“股票代码”+“对应股市”,上证股票在股票代码后面加上“.SS”,深圳股票在股票代码后面加上“.SZ”。DataReader可从多个金融网站获取到股票数据,如“Yahoo! Finance” 、“Google Finance”等,这里以Yahoo为例。第三、四个参数为股票数据的起始时间断。返回的数据格式为DataFrame。

start = datetime.datetime(2017,1,1)#获取数据的时间段-起始时间
end = datetime.date.today()#获取数据的时间段-结束时间
stock = web.DataReader("600797.SS", "yahoo", start, end)#获取浙大网新2017年1月1日至今的股票数据

数据分析

1、打印DataFrame数据前5行和尾部倒数5行(浙大网新因重大事件停牌至1月6日开始复牌)

print stock.head(5)
print stock.tail(5)

2、打印DataFrame数据索引和列名,索引为时间序列,列信息为开盘价、最高价、最低价、收盘价、复权收盘价、成交量

print stock.index
print stock.columns

3、打印DataFrame数据形状,index长度为248,columns数为6,即248个交易日,6项股票数据

print stock.shape

4、打印DataFrame数据查看数据是否有缺失,以及每列数据的类型

print stock.info() 

5、打印DataFrame数据每组的统计情况,如最小值、最大值、均值、标准差等

print stock.describe()

6、DataFrame数据中增加涨/跌幅列,涨/跌=(当日Close-上一日Close)/上一日Close*100%

(1)添加一列change,存储当日股票价格与前一日收盘价格相比的涨跌数值,即当日Close价格与上一日Close的差值,1月3日这天无上一日数据,因此出现缺失

change = stock.Close.diff()
stock["Change"] = change
print stock.head(5)

(2)对缺失的数据用涨跌值的均值就地替代NaN。

change.fillna(change.mean(),inplace=True)

(3)计算涨跌幅度有两种方法,pct_change()算法的思想即是第二项开始向前做减法后再除以第一项,计算得到涨跌幅序列。

stock["pct_change"] = (stock["Change"] /stock["Close"].shift(1))#
stock["pct_change1"] = stock.Close.pct_change()

7、DataFrame数据中增加跳空缺口数值序列,这里定义的缺口为上涨趋势和下跌趋势中的突破缺口,上涨趋势中今天的最低价高于昨天收盘价为向上跳空,下跌趋势中昨天收盘价高于今天最高价为向下跳空。遍历每个交易日后将符合跳空缺口条件的交易日增加缺口数值。

jump_pd = pd.DataFrame()
for kl_index in np.arange(1, stock.shape[0]):
today = stock.ix[kl_index]
yesday = stock.ix[kl_index-1]
today["preCloae"] = yesday.Close   
    if today["pct_change"] > 0 and (today.Low-today["preCloae"]) > 0:
        today["jump_power"] = (today.Low-today["preCloae"])
    elif  today["pct_change"] < 0 and (today.High-today["preCloae"]) < 0:
        today["jump_power"] = (today.High-today["preCloae"])
    jump_pd = jump_pd.append(today)        
    stock["jump_power"] = jump_pd["jump_power"]
    print stock.loc["2017-04-26":"2017-06-15"]#默认打印全部列

8、DataFrame数据保留两位小数显示

format = lambda x: "%.2f" % x
stock = stock.applymap(format)
print stock.loc["2017-04-26":"2017-06-15"]#默认打印全部列

更多python量化交易内容互动请加微信公众号:PythonQT-YuanXiao
欢迎订阅量化交易课程:链接地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41239.html

相关文章

  • 量化易之股票数据获取——同花顺软件

    摘要:将另存为格式时,文件将工作表中的单元格所显示的文本和数值以逗号分离进行保存。方法此处使用模块的函数读取文件,函数以字典形式返回,字典的键则是这个单元格的标题即列头,每一个单元格内容放在字典的值内。 前言 数据是进行量化交易的基础和关键,目前国内做量化产品的金融机构大部分是从券商获取高频实时行情数据的,另外很多金融网站也提供了数据接口,可以调用接口方式获取,也可以用爬虫的方式获取。文本讲...

    Chaz 评论0 收藏0
  • Python量化易基础讲堂——管理概率==理性

    摘要:那么我们改变概率这个因子,将它放大到,我们邀请个人参与局看下效果看来结果还不错,只要增加盈利的概率,就可以在市场中获得收益,这就是量化交易的魅力管理概率理性交易。 在《Python实战-构建基于股票的量化交易系统》小册子中,我们以股票为交易标的讲解量化交易的学习,主要原因是股票的风险和收益介于期货和基金之间。期货一方面加了杠杆,另一方面走势变化非常迅速,稍有不慎有可能血本无归,这不太适...

    AWang 评论0 收藏0
  • 用python做投资--多因子策略

    摘要:如果我们把这三个因子都加进去会怎样呢收益率为倍,没有刚才那么好了,还是刚才的和净利润环比增长率这两个因子比较好,那就保留两个吧。因此,我们可以考虑使用排名的方法,对这些因子进行排名。 导语:每一位宽客都相信,影响股票涨跌的因素不胜枚举,而这些因素就是因子!本文作为一篇合格的入门教程,提供代码当做框架,各路宽客可以自己测试,查看收益率,亦可利用聚宽python平台自行构建代码。 规范源码...

    zilu 评论0 收藏0
  • 一文带你斩杀Python之Numpy☀️Pandas全部操作【全网最详细】❗❗❗

    目录Numpy简介Numpy操作集合1、不同维度数据的表示1.1 一维数据的表示1.2 二维数据的表示1.3 三维数据的表示2、 为什么要使用Numpy2.1、Numpy的ndarray具有广播功能2.2 Numpy数组的性能比Python原生数据类型高3 ndarray的属性和基本操作3.1 ndarray的基本属性3.2 ndarray元素类型3.3 创建ndarray的方式3.4 ndarr...

    asoren 评论0 收藏0

发表评论

0条评论

yuanxin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<