关闭

您正在使用的浏览器版本较低,无法支持聚宽的某些特性。

为了获得更好的体验,推荐使用: Google Chrome 或者 Mozilla Firefox 或者 IE9以上

聚宽JQData用户使用说明

JQData基本介绍

JQData是什么

JQData是聚宽数据团队专门为有志于从事量化投资的金融机构、研究人员以及个人量化爱好者提供的本地量化金融数据。用户只需在本地Python环境下安装JQData数据包,输入三行代码,即可调用由聚宽数据团队专业生产的全套量化金融数据,让你轻松告别平台限制,灵活安全地完成本地化的量化研究与投资决策。

JQData提供哪些数据

为了满足用户的需求,推动量化行业的快速发展,聚宽数据团队在JQData中不仅提供了全面的基础金融数据,包括沪深A股行情数据,上市公司财务数据,场内基金数据,指数数据,期货数据以及宏观经济数据;除此之外,JQData还针对因子数据和特色数据,引进了Alpha特色因子,技术分析指标因子,tick数据以及百度因子数据,助您更好的完成量化研究和投资决策。详细数据清单如下表所示:

沪深A股行情数据 时间范围 更新频率
股票列表数据 2005至今 交易日盘后更新
行业概念和指数成分股 2005至今 交易日盘后更新
日行情 2005至今 交易日一分钟更新一次
分钟行情 2005至今 交易日一分钟更新一次
分红拆分送股 2005至今 交易日盘后更新
融资融券 2010至今 交易日盘后更新
资金流向 2010至今 交易日盘后更新
龙虎榜数据 2005至今 交易日盘后更新
限售解禁股 2005至今 交易日盘后更新
停复牌数据 2005至今 交易日盘后更新
上市公司财务数据 时间范围 更新频率
估值数据 2005至今 交易日盘后更新
财务指标 2005至今 交易日盘后更新
资产负债表 2005至今 交易日盘后更新
现金流量表 2005至今 交易日盘后更新
利润表 2005至今 交易日盘后更新
银行专项指标表 2005至今 交易日盘后更新
券商专项指标表 2005至今 交易日盘后更新
保险专项指标表 2005至今 交易日盘后更新
场内基金数据 时间范围 更新频率
场内基金列表数据 2005至今 交易日盘后更新
分级基金数据 2005至今 交易日盘后更新
日行情 2005至今 交易日一分钟更新一次
分钟行情 2005至今 交易日一分钟更新一次
净值数据 2005至今 交易日盘后更新
融资融券 2010至今 交易日盘后更新
指数数据 时间范围 更新频率
指数列表数据 2005至今 交易日盘后更新
指数成分股数据 2005至今 交易日盘后更新
日行情 2005至今 交易日一分钟更新一次
分钟行情 2005至今 交易日一分钟更新一次
期货数据 时间范围 更新频率
期货列表数据 2005至今 交易日盘后更新
日行情 2005至今 交易日一分钟更新一次
分钟行情 2005至今 交易日一分钟更新一次
期货主力合约 2005至今 交易日盘后更新
期货连续指数 2005至今 交易日盘后更新
宏观经济数据 时间范围 更新频率
国民经济 统计局统计开始至今 交易日盘后更新
保险业 统计局统计开始至今 交易日盘后更新
人民生活 统计局统计开始至今 交易日盘后更新
人口 统计局统计开始至今 交易日盘后更新
国内贸易 统计局统计开始至今 交易日盘后更新
就业与工资 统计局统计开始至今 交易日盘后更新
资源环境 统计局统计开始至今 交易日盘后更新
房地产行业 统计局统计开始至今 交易日盘后更新
财政政策 统计局统计开始至今 交易日盘后更新
固定资产投资 统计局统计开始至今 交易日盘后更新
对外经济贸易 统计局统计开始至今 交易日盘后更新
景气指数 统计局统计开始至今 交易日盘后更新
工业 统计局统计开始至今 交易日盘后更新
农林牧渔业 统计局统计开始至今 交易日盘后更新
金融业 统计局统计开始至今 交易日盘后更新
Alpha特色因子 时间范围 更新频率
Alpha101因子 2005至今 与基础数据同步更新
Alpha191因子 2005至今 与基础数据同步更新
技术指标因子 时间范围 更新频率
超买超卖型技术指标 2005至今 与基础数据同步更新
趋势型技术指标 2005至今 与基础数据同步更新
能量型技术指标 2005至今 与基础数据同步更新
成交量型技术指标 2005至今 与基础数据同步更新
均线型技术指标 2005至今 与基础数据同步更新
路径型技术指标 2005至今 与基础数据同步更新
其他 2005至今 与基础数据同步更新
tick行情数据(仅限机构用户) 时间范围 更新频率
沪深A股tick数据 2017-01-01至今 交易日盘后更新,每3秒一次快照(K线)
金融期货和商品期货tick数据 2010-01-01至今 交易日盘后更新,每0.5秒一次快照(K线)
百度因子数据(仅限机构用户) 时间范围 更新频率
中证800指数成分股百度全网搜索量 2017-09-01至今 每日上午12:30之前更新前一日的搜索量数据,遇节假日顺延到下一工作日。
中证800指数成分股百度分省份搜索量 2017-09-01至今 每日上午12:30之前更新前一日的搜索量数据,遇节假日顺延到下一工作日。

谁在使用JQData

聚宽量化平台聚集了国内优秀的量化爱好者和金融机构,他们使用聚宽数据生产了上百万的优质策略,如果你对量化感兴趣,很快你也能成为其中的一员。他们是:

  • 金融机构:聚宽的机构用户遍布国内主要券商,公募基金和私募基金
  • 研究人员:券商研究所,高校老师都是聚宽数据的深度用户
  • 在校学生:无论是985还是211,这些学校的学生都在使用聚宽的数据
  • 量化爱好者:数十万计的量化爱好者

为什么选择JQData

为什么JQData能受到如此众多用户的青睐?原因是聚宽数据从一开始就是为量化而生,本地使用,易于量化,调用方便,数据精度高,基础数据全部免费这是JQData区别于国内其他量化平台的最主要特点,相信您在使用过程中能有更深切的体会。具体来说:

  • 本地使用:JQData避免了各个量化平台的限制,适用于Windows,Mac,Linux多种操作系统,用户只需三行Python代码即可完成本地安装和调用,帮助您实现一整套本地化部署的量化投资研究。(支持Python2和Python3)

  • 易于量化:为了避免用户在指定日期获取到未来的数据,JQData在设计过程中,提供了指定日期参数,在该日期用户获取的是截止到该日期市场上已公布的数据,从而避免用户提前获取未来数据的上帝视角。

  • 调用方便:在JQData里,不同品种同一属性的数据用同一个接口就能获取,例如,使用get_price就能获取所有股票,基金,指数,期货的行情数据,从而大大减少用户的学习成本,代码也更加简洁;与之相反,大部分传统数据商提供的数据分散在不同的数据表中,需要用户自己来回查找。
  • 数据精度高:JQData的历史行情提供日行情和分钟行情,更精确的还有tick行情,而大部分量化平台最多提供到日行情这种精度。
  • 基础数据免费试用:为了让更多的用户使用上优质的金融数据,生产出更多的量化研究成果,JQData对基础数据全部免费开放试用,JQData的基础数据包含沪深A股行情数据,上市公司财务数据,指数数据,场内基金数据,期货数据和宏观经济数据;相比之下,大部分数据平台提供的本地化数据少则几万,多则十几万,费用高企让大部分量化研究者望而却步。
  • 因子数据和特色数据:除基础数据外,我们还特别提供了Alpha特色因子,技术指标因子,tick数据以及百度搜索因子,让您在投资研究中加入更多的数据维度。

如何申请JQData试用账号

聚宽作为国内量化行业的领军企业,本着推动量化行业快速发展的良好愿景,现已开放试用JQData。想要使用JQData的用户只需提交试用申请,在我们收到您的申请之后的一个工作日内,就会为您开通JQData的试用账号。试用账号在试用期间可免费调用JQData的全部基础数据,每天可调用100万条,具体试用权限如下表所示。(注:JQData基础数据包含沪深A股行情数据,上市公司财务数据,指数数据,场内基金数据,期货数据和宏观经济数据

账户类型 试用账户(免费)
账户有效期 1年
可用数据 全部基础数据
可查询数据时间范围 2005年至今
每天调用数据限制 100万条/天
单个账号可同时开启连接数 3个
因子和特色数据

如何开通JQData正式账号

如果您觉得每天100万条的数据不够用,或者想要使用诸如Alpha特色因子,技术指标因子,tick数据以及百度因子等聚宽的特色数据,提示您需要付费开通JQData的正式账号(升级后每天可调用2亿条数据)。详情请与我们的运营人员联系,我们会为您开通定制化的JQData,尽可能满足您的数据需求。正式账号享有的权益如下表所示。(联系方式:添加管理员微信 JQData01;或发送邮箱至:jqdatasdk@joinquant.com

账户类型 正式版
账户有效期 开通后生效
可用数据 全部基础数据
数据可调用时间范围 2005年至今
每天调用数据限制 2亿条/天
单个账号可同时开启连接数 3个
因子和特色数据

如果您对因子数据和特色数据感兴趣,我们还特别提供了Alpha101,Alpha191,技术指标因子,沪深A股tick,期货tick以及百度因子数据,需要您升级到标准版或专业版才能使用。

付费数据 标准版 专业版(仅限机构用户)
Alpha101
Alpha191
技术指标因子
沪深A股tick数据 不含
期货tick数据 不含
百度因子 不含 不含

如何使用JQData

开通权限后,您可以在本地Python环境下安装和使用JQData,具体操作方法如下:

  • 安装JQData:打开本地终端,在python目录下使用pip输入如下语句 ,安装JQData数据包:

    pip install git+https://github.com/JoinQuant/jqdatasdk.git -i https://pypi.tuna.tsinghua.edu.cn/simple

    如果上述方法安装失败,请使用备选安装方法:下载JQData压缩包,解压压缩包,打开终端并切换到jqdatasdk-master文件中setup.py所在的目录下,执行 python setup.py install,也能完成安装。

  • 登录JQData:安装成功后,导入jqdatasdk,并认证用户身份,认证的账号和密码是用户在聚宽官网注册的账号和密码(只有开通jqdatasdk使用权限的用户才能成功认证)。认证成功后,显示”auth success”,就可以开始使用数据了,认证代码如下。

    from jqdatasdk import *
    auth('聚宽账号','登录密码')
  • 每天可访问数据条数:由于用户访问数据会给服务器造成一定的压力,JQData开放给试用账号的每天可访问数据为100万条,基本上能够满足大部分用户的需要;如需更多的访问条数,您可以付费升级为正式账号,我们将为您开放每天2亿条数据的访问权限

  • 因子数据和特色数据:如果您还想使用Alpha特色因子,技术指标因子,tick数据以及百度因子数据,您可以付费购买这部分数据,详情请联系我们的运营同事。我们会为您提供定制化的JQData,尽可能满足您的数据需求。如需咨询,请添加管理员微信:JQData01 ;或发送邮箱至:jqdatasdk@joinquant.com。
  • 问题反馈和其他数据需求:如果您在使用JQData的过程中遇到问题,或者希望JQData能够加入更多的数据,请您通过社区提问的方式或者发送邮件至jqdatasdk@joinquant.com告诉我们。另外,为了增进用户之间的交流,我们还提供了JQData微信讨论组,想要加入讨论的用户可以添加JQData管理员,和我们一起更好的完善和使用JQData。(管理员微信号:JQData01,添加时请留言”JQData”。)

商务合作

聚宽作为国内领先的量化平台,欢迎数据行业的各位同仁,和我们共同构建起一整套领先的量化分析数据体系,如贵公司有这方面的数据资源和合作意向,请添加管理员微信:JQData01,或发送邮件至jqdatasdk@joinquant.com说明合作意向,欢迎加入聚宽JQData。

数据调用方法

JQData证券代码标准格式

由于同一代码可能代表不同的交易品种,JQData给每个交易品种后面都添加了该市场特定的代码后缀,用户在调用API时,需要将参数security传入带有该市场后缀的证券代码,如security=’600519.XSHG’,以便于区分实际调用的交易品种。以下列出了每个交易市场的代码后缀和示例代码。

交易市场 代码后缀 示例代码 证券简称
上海证券交易所 .XSHG ‘600519.XSHG’ 贵州茅台
深圳证券交易所 .XSHE ‘000001.XSHE’ 平安银行
中金所 .CCFX ‘IC9999.CCFX’ 中证500主力合约
大商所 .XDCE ‘A9999.XDCE’ 豆一主力合约
上期所 .XSGE ‘AU9999.XSGE’ 黄金主力合约
郑商所 .XZCE ‘CY8888.XZCE’ 棉纱期货指数
上海国际能源期货交易所 .XINE ‘SC9999.XINE’ 原油主力合约

获取标的基本信息

get_all_securities - 获取所有标的信息

get_all_securities(types=[], date=None)

获取平台支持的所有股票、基金、指数、期货信息,

交易市场 代码后缀 示例代码 证券简称
上海证券交易所 .XSHG ‘600519.XSHG’ 贵州茅台
深圳证券交易所 .XSHE ‘000001.XSHE’ 平安银行
中金所 .CCFX ‘IC9999.CCFX’ 中证500主力合约
大商所 .XDCE ‘A9999.XDCE’ 豆一主力合约
上期所 .XSGE ‘AU9999.XSGE’ 黄金主力合约
郑商所 .XZCE ‘CY8888.XZCE’ 棉纱期货指数
上海国际能源期货交易所 .XINE ‘SC9999.XINE’ 原油主力合约

参数

  • types: list: 用来过滤securities的类型, list元素可选: ‘stock’, ‘fund’, ‘index’, ‘futures’, ‘etf’, ‘lof’, ‘fja’, ‘fjb’. types为空时返回所有股票, 不包括基金,指数和期货
  • date: 日期, 一个字符串或者 [datetime.datetime]/[datetime.date] 对象, 用于获取某日期还在上市的股票信息. 默认值为 None, 表示获取所有日期的股票信息

返回
[pandas.DataFrame], 比如:get_all_securities()[:2]返回:

display_name name start_date end_date type
000001.XSHE 平安银行 PAYH 1991-04-03 9999-01-01 stock
000002.XSHE 万 科A WKA 1991-01-29 9999-01-01 stock
  • display_name: 中文名称
  • name: 缩写简称
  • start_date: 上市日期
  • end_date: 退市日期,如果没有退市则为2200-01-01
  • type: 类型,stock(股票),index(指数),etf(ETF基金),fja(分级A),fjb(分级B)

示例

    #将所有股票列表转换成数组
    stocks = list(get_all_securities(['stock']).index)

    #获得所有指数列表
    get_all_securities(['index'])

    #获得所有基金列表
    df = get_all_securities(['fund'])

    #获取所有期货列表
    get_all_securities(['futures'])

    #获得etf基金列表
    df = get_all_securities(['etf'])
    #获得lof基金列表
    df = get_all_securities(['lof'])
    #获得分级A基金列表
    df = get_all_securities(['fja'])
    #获得分级B基金列表
    df = get_all_securities(['fjb'])

    #获得2015年10月10日还在上市的所有股票列表
    get_all_securities(date='2015-10-10')
    #获得2015年10月10日还在上市的 etf 和 lof 基金列表
    get_all_securities(['etf', 'lof'], '2015-10-10')

get_security_info - 获取单个标的信息

get_security_info(code)

获取股票/基金/指数的信息.

参数

  • code: 证券代码

返回值

  • 一个对象, 有如下属性:

    • display_name: 中文名称
    • name: 缩写简称
    • start_date: 上市日期, [datetime.date] 类型
    • end_date: 退市日期, [datetime.date] 类型, 如果没有退市则为2200-01-01
    • type: 类型,stock(股票),index(指数),etf(ETF基金),fja(分级A),fjb(分级B)
    • parent: 分级基金的母基金代码

示例

# 获取基金的母基金, 下面的判断为真.
assert get_security_info('502050.XSHG').parent == '502048.XSHG'

get_index_stocks - 获取指数成份股

get_index_stocks(index_symbol, date=None)

获取一个指数给定日期在平台可交易的成分股列表,请点击指数列表查看指数信息

参数

  • index_symbol: 指数代码
  • date: 查询日期, 一个字符串(格式类似’2015-10-15’)或者[datetime.date]/[datetime.datetime]对象, 可以是None, 使用默认日期. 这个默认日期在回测和研究模块上有点差别:
    1. 回测模块: 默认值会随着回测日期变化而变化, 等于context.current_dt
    2. 研究模块: 默认是今天

返回
返回股票代码的list

示例

# 获取所有沪深300的股票
stocks = get_index_stocks('000300.XSHG')
print(stocks)

normalize_code-股票代码格式转化

normalize_code(code)

将其他形式的股票代码转换为jqdatasdk函数可用的股票代码形式。
仅适用于A股市场股票代码以及基金代码
示例

#输入
for code in ('000001', 'SZ000001', '000001SZ', '000001.sz', '000001.XSHE'):
        print normalize_code(code)

#输出
000001.XSHE
000001.XSHE
000001.XSHE
000001.XSHE
000001.XSHE

get_margincash_stocks - 获取融资标的列表

get_margincash_stocks()

返回
返回上交所、深交所最近一次披露的的可融资标的列表的list。

示例

# 获取融资标的列表,并赋值给 margincash_stocks
margincash_stocks = get_margincash_stocks()

# 判断平安银行是否在可融资列表
>>> '000001.XSHE' in get_margincash_stocks()
>>> True

get_marginsec_stocks - 获取融券标的列表

get_marginsec_stocks()

返回
返回上交所、深交所最近一次披露的的可融券标的列表的list。

示例

# 获取融券标的列表,并赋值给 marginsec_stocks
marginsec_stocks= get_marginsec_stocks()

# 判断平安银行是否在可融券列表
>>> '000001.XSHE' in get_marginsec_stocks()
>>> True

get_extras - 获取基金净值/期货结算价等

get_extras(info, security_list, start_date='2015-01-01', end_date='2015-12-31', df=True, count=None)

得到多只标的在一段时间的如下额外的数据:

  • is_st: 是否是ST,是则返回 True,否则返回 False
  • acc_net_value: 基金累计净值
  • unit_net_value: 基金单位净值
  • futures_sett_price: 期货结算价
  • futures_positions: 期货持仓量

参数

  • info: [‘is_st’, ‘acc_net_value’, ‘unit_net_value’, ‘futures_sett_price’, ‘futures_positions’] 中的一个
  • security_list: 股票列表
  • start_date/end_date: 开始结束日期, 同 [get_price]
  • df: 返回[pandas.DataFrame]对象还是一个dict, 同 [history]
  • count: 数量, 与 start_date 二选一, 不可同时使用, 必须大于 0. 表示取 end_date 往前的 count 个交易日的数据

返回值

  • df=True:
    [pandas.DataFrame]对象, 列索引是股票代号, 行索引是[datetime.datetime], 比如get_extras('acc_net_value', ['510300.XSHG', '510050.XSHG'], start_date='2015-12-01', end_date='2015-12-03')返回:

    510300.XSHG 510050.XSHG
    2015-12-01 00:00:00 1.395 3.119
    2015-12-02 00:00:00 1.4432 3.251
    2015-12-03 00:00:00 1.4535 3.254

    get_extras('is_st', ['000001.XSHE', '000018.XSHE'], start_date='2013-12-01', end_date='2013-12-03')返回:

    000001.XSHE 000018.XSHE
    2013-12-02 00:00:00 False True
    2013-12-03 00:00:00 False True
  • df=False
    一个dict, key是基金代号, value是[numpy.ndarray], 比如get_extras('acc_net_value', ['510300.XSHG', '510050.XSHG'], start_date='2015-12-01', end_date='2015-12-03', df=False) 返回:

    {
        u'510050.XSHG': array([ 3.119,  3.251,  3.254]),
        u'510300.XSHG': array([ 1.395 ,  1.4432,  1.4535])
    }

get_locked_shares - 获取限售解禁数据

get_locked_shares(stock_list, start_date, end_date, forward_count)

获取指定日期区间内的限售解禁数据

参数

  • stock_list: 一个股票代码的 list
  • start_date: 开始日期
  • end_date: 结束日期
  • forward_count: 交易日数量, 可以与 start_date 同时使用, 表示获取 start_date 到 forward_count 个交易日区间的数据

返回值

  • pandas.DataFrame, 各 column 的含义如下:

    • day: 解禁日期
    • code: 股票代码
    • num: 解禁股数
    • rate1: 解禁股数/总股本
    • rate2: 解禁股数/总流通股本

示例

# 在策略中获取个股未来500天的解禁情况
get_locked_shares(stock_list=['000001.XSHE', '000002.XSHE'], start_date=context.current_dt, forward_count=500)

获取行业概念成分股

get_industries - 获取行业列表

get_industries(name='zjw')

按照行业分类获取行业列表。

参数

  • name: 行业代码, 取值如下:

    • ”sw_l1”: 申万一级行业
    • “sw_l2”: 申万二级行业
    • “sw_l3”: 申万三级行业
    • “jq_l1”: 聚宽一级行业
    • “jq_l2”: 聚宽二级行业
    • “zjw”: 证监会行业

返回值

  • pandas.DataFrame, 各 column 的含义如下:

    • index: 行业代码
    • name: 行业名称
    • start_date: 开始日期

get_industry_stocks - 获取行业成份股

get_industry_stocks(industry_code, date=None)

获取在给定日期一个行业的所有股票,行业分类列表见数据页面-行业概念数据

参数

  • industry_code: 行业编码
  • date: 查询日期, 一个字符串(格式类似’2015-10-15’)或者[datetime.date]/[datetime.datetime]对象, 可以是None, 使用默认日期. 这个默认日期在回测和研究模块上有点差别:
    1. 回测模块: 默认值会随着回测日期变化而变化, 等于context.current_dt
    2. 研究模块: 默认是今天

返回
返回股票代码的list

示例

# 获取计算机/互联网行业的成分股
stocks = get_industry_stocks('I64')

get_concepts - 获取概念列表

get_concepts()

获取概念板块列表

返回值

  • pandas.DataFrame, 各 column 的含义如下:

    • index: 概念代码
    • name: 概念名称
    • start_date: 开始日期

get_concept_stocks - 获取概念成份股

get_concept_stocks(concept_code, date=None)

获取在给定日期一个概念板块的所有股票,概念板块分类列表见数据页面-行业概念数据

参数

  • concept_code: 概念板块编码
  • date: 查询日期, 一个字符串(格式类似’2015-10-15’)或者[datetime.date]/[datetime.datetime]对象, 可以是None, 使用默认日期. 这个默认日期在回测和研究模块上有点差别:
    1. 回测模块: 默认值会随着回测日期变化而变化, 等于context.current_dt
    2. 研究模块: 默认是今天

返回
返回股票代码的list

示例

# 获取风力发电概念板块的成分股
stocks = get_concept_stocks('GN036')

获取交易行情数据

get_trade_days - 获取指定范围交易日

get_trade_days(start_date=None, end_date=None, count=None)

获取指定日期范围内的所有交易日, 返回 [numpy.ndarray], 包含指定的 start_date 和 end_date, 默认返回至 datatime.date.today() 的所有交易日

参数

  • start_date: 开始日期, 与 count 二选一, 不可同时使用. str/[datetime.date]/[datetime.datetime] 对象
  • end_date: 结束日期, str/[datetime.date]/[datetime.datetime] 对象, 默认为 datetime.date.today()
  • count: 数量, 与 start_date 二选一, 不可同时使用, 必须大于 0. 表示取 end_date 往前的 count 个交易日,包含 end_date 当天。

get_all_trade_days - 获取所有交易日

get_all_trade_days()

获取所有交易日, 不需要传入参数, 返回一个包含所有交易日的 [numpy.ndarray], 每个元素为一个 [datetime.date] 类型.

get_price - 获取历史行情数据

get_price(security, start_date=None, end_date=None, frequency='daily', fields=None, skip_paused=False, fq='pre', count=None)

获取一支或者多只股票的行情数据, 按天或者按分钟,这里在使用时注意 end_date 的设置, 不要引入未来的数据。

关于停牌: 因为此API可以获取多只股票的数据, 可能有的股票停牌有的没有, 为了保持时间轴的一致,

我们默认没有跳过停牌的日期, 停牌时使用停牌前的数据填充(请看 [SecurityUnitData] 的 paused 属性). 如想跳过, 请使用 skip_paused=True 参数, 同时只取一只股票的信息

参数

  • security: 一支股票代码或者一个股票代码的list
  • count: 与 start_date 二选一,不可同时使用. 数量, 返回的结果集的行数, 即表示获取 end_date 之前几个 frequency 的数据
  • start_date: 与 count 二选一,不可同时使用. 字符串或者 [datetime.datetime]/[datetime.date] 对象, 开始时间.
    • 如果 count 和 start_date 参数都没有, 则 start_date 生效, 值是 ‘2015-01-01’. 注意:
    • 当取分钟数据时, 时间可以精确到分钟, 比如: 传入 datetime.datetime(2015, 1, 1, 10, 0, 0) 或者 '2015-01-01 10:00:00'.
    • 当取分钟数据时, 如果只传入日期, 则日内时间是当日的 00:00:00.
    • 当取天数据时, 传入的日内时间会被忽略
  • end_date: 格式同上, 结束时间, 默认是’2015-12-31’, 包含此日期. 注意: 当取分钟数据时, 如果 end_date 只有日期, 则日内时间等同于 00:00:00, 所以返回的数据是不包括 end_date 这一天的.
  • frequency: 单位时间长度, 几天或者几分钟, 现在支持’Xd’,’Xm’, ‘daily’(等同于’1d’), ‘minute’(等同于’1m’), X是一个正整数, 分别表示X天和X分钟(不论是按天还是按分钟回测都能拿到这两种单位的数据), 注意, 当X > 1时, fields只支持[‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘money’]这几个标准字段. 默认值是daily

  • fields: 字符串list, 选择要获取的行情数据字段, 默认是None(表示[‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘money’]这几个标准字段), 支持SecurityUnitData里面的所有基本属性,,包含:[‘open’, ’ close’, ‘low’, ‘high’, ‘volume’, ‘money’, ‘factor’, ‘high_limit’,’ low_limit’, ‘avg’, ’ pre_close’, ‘paused’]

  • skip_paused: 是否跳过不交易日期(包括停牌, 未上市或者退市后的日期). 如果不跳过, 停牌时会使用停牌前的数据填充(具体请看SecurityUnitData的paused属性), 上市前或者退市后数据都为 nan, 但要注意:

    • 默认为 False
    • 当 skip_paused 是 True 时, 只能取一只股票的信息
  • fq: 复权选项:

    • 'pre': 前复权(根据’use_real_price’选项不同含义会有所不同, 参见[set_option]), 默认是前复权
    • None: 不复权, 返回实际价格
    • 'post': 后复权

返回

  • 请注意, 为了方便比较一只股票的多个属性, 同时也满足对比多只股票的一个属性的需求, 我们在security参数是一只股票和多只股票时返回的结构完全不一样

  • 如果是一支股票, 则返回[pandas.DataFrame]对象, 行索引是[datetime.datetime]对象, 列索引是行情字段名字, 比如’open’/’close’. 比如: get_price('000300.XSHG')[:2] 返回:

    open close high low volume money
    2015-01-05 00:00:00 3566.09 3641.54 3669.04 3551.51 451198098.0 519849817448.0
    2015-01-06 00:00:00 3608.43 3641.06 3683.23 3587.23 420962185.0 498529588258.0
  • 如果是多支股票, 则返回[pandas.Panel]对象, 里面是很多[pandas.DataFrame]对象, 索引是行情字段(open/close/…), 每个[pandas.DataFrame]的行索引是[datetime.datetime]对象, 列索引是股票代号. 比如get_price(['000300.XSHG', '000001.XSHE'])['open'][:2]返回:

    000300.XSHG 000001.XSHE
    2015-01-05 00:00:00 3566.09 13.21
    2015-01-06 00:00:00 3608.43 13.09

示例

# 获取一支股票
df = get_price('000001.XSHE') # 获取000001.XSHE的2015年的按天数据
df = get_price('000001.XSHE', start_date='2015-01-01', end_date='2015-01-31 23:00:00', frequency='minute', fields=['open', 'close']) # 获得000001.XSHG的2015年01月的分钟数据, 只获取open+close字段
df = get_price('000001.XSHE', count = 2, end_date='2015-01-31', frequency='daily', fields=['open', 'close']) # 获取获得000001.XSHG在2015年01月31日前2个交易日的数据
df = get_price('000001.XSHE', start_date='2015-12-01 14:00:00', end_date='2015-12-02 12:00:00', frequency='1m') # 获得000001.XSHG的2015年12月1号14:00-2015年12月2日12:00的分钟数据

# 获取多只股票
panel =  get_price(get_index_stocks('000903.XSHG')) # 获取中证100的所有成分股的2015年的天数据, 返回一个[pandas.Panel]
df_open = panel['open']  # 获取开盘价的[pandas.DataFrame],  行索引是[datetime.datetime]对象, 列索引是股票代号
df_volume = panel['volume']  # 获取交易量的[pandas.DataFrame]

df_open['000001.XSHE'] # 获取平安银行的2015年每天的开盘价数据

get_mtss - 获取融资融券信息

get_mtss(security_list, start_date=None, end_date=None, fields=None, count=None)

获取一只或者多只股票在一个时间段内的融资融券信息

注: 需导入 jqdata 模块,即在策略或研究起始位置加入import jqdata

参数

  • security_list: 一只股票代码或者一个股票代码的 list
  • start_date: 开始日期, 与 count 二选一, 不可同时使用. 一个字符串或者 [datetime.datetime]/[datetime.date] 对象, 默认为平台提供的数据的最早日期
  • end_date: 结束日期, 一个字符串或者 [datetime.date]/[datetime.datetime] 对象, 默认为 datetime.date.today()
  • count: 数量, 与 start_date 二选一,不可同时使用, 必须大于 0. 表示返回 end_date 之前 count 个交易日的数据, 包含 end_date
  • fields: 字段名或者 list, 可选. 默认为 None, 表示取全部字段, 各字段含义如下:

    字段名 含义
    date 日期
    sec_code 股票代码
    fin_value 融资余额
    fin_buy_value 融资买入额
    fin_refund_value 融资偿还额
    sec_value 融券余额
    sec_sell_value 融券卖出额
    sec_refund_value 融券偿还额
    fin_sec_value 融资融券余额

返回

返回一个 [pandas.DataFrame] 对象,默认的列索引为取得的全部字段. 如果给定了 fields 参数, 则列索引与给定的 fields 对应.

示例


# 获取一只股票的融资融券信息
get_mtss('000001.XSHE', '2016-01-01', '2016-04-01')
get_mtss('000001.XSHE', '2016-01-01', '2016-04-01', fields=["date", "sec_code", "fin_value", "fin_buy_value"])
get_mtss('000001.XSHE', '2016-01-01', '2016-04-01', fields="sec_sell_value")

# 获取多只股票的融资融券信息
get_mtss(['000001.XSHE', '000002.XSHE', '000099.XSHE'], '2015-03-25', '2016-01-25')
get_mtss(['000001.XSHE', '000002.XSHE', '000099.XSHE'], '2015-03-25', '2016-01-25', fields=["date", "sec_code", "sec_value", "fin_buy_value", "sec_sell_value"])

# 获取股票 000001.XSHE 在日期 2016-06-30 往前 20 个交易日的融资融券信息
get_mtss('000001.XSHE', end_date="2016-06-30", count=20)
# 获取股票 000001.XSHE 往前 20 个交易日的融资融券信息
get_mtss('000001.XSHE', count=20)

get_money_flow - 获取资金流信息

get_money_flow(security_list, start_date=None, end_date=None, fields=None, count=None)

获取一只或者多只股票在一个时间段内的资金流向数据,仅包含股票数据,不可用于获取期货数据。

注: 需导入 jqdata 模块,即在策略或研究起始位置加入import jqdata

参数

  • security_list: 一只股票代码或者一个股票代码的 list
  • start_date: 开始日期, 与 count 二选一, 不可同时使用, 一个字符串或者 [datetime.datetime]/[datetime.date] 对象, 默认为平台提供的数据的最早日期
  • end_date: 结束日期, 一个字符串或者 [datetime.date]/[datetime.datetime] 对象, 默认为 datetime.date.today()
  • count: 数量, 与 start_date 二选一,不可同时使用, 必须大于 0. 表示返回 end_date 之前 count 个交易日的数据, 包含 end_date
  • fields: 字段名或者 list, 可选. 默认为 None, 表示取全部字段, 各字段含义如下:

    字段名 含义 备注
    date 日期
    sec_code 股票代码
    change_pct 涨跌幅(%)
    net_amount_main 主力净额(万) 主力净额 = 超大单净额 + 大单净额
    net_pct_main 主力净占比(%) 主力净占比 = 主力净额 / 成交额
    net_amount_xl 超大单净额(万) 超大单:大于等于50万股或者100万元的成交单
    net_pct_xl 超大单净占比(%) 超大单净占比 = 超大单净额 / 成交额
    net_amount_l 大单净额(万) 大单:大于等于10万股或则20万元且小于50万股或者100万元的成交单
    net_pct_l 大单净占比(%) 大单净占比 = 大单净额 / 成交额
    net_amount_m 中单净额(万) 中单:大于等于2万股或者4万元且小于10万股或则20万元的成交单
    net_pct_m 中单净占比(%) 中单净占比 = 中单净额 / 成交额
    net_amount_s 小单净额(万) 小单:小于2万股或者4万元的成交单
    net_pct_s 小单净占比(%) 小单净占比 = 小单净额 / 成交额

返回

返回一个 [pandas.DataFrame] 对象,默认的列索引为取得的全部字段. 如果给定了 fields 参数, 则列索引与给定的 fields 对应.

示例

# 获取一只股票在一个时间段内的资金流量数据
get_money_flow('000001.XSHE', '2016-02-01', '2016-02-04')
get_money_flow('000001.XSHE', '2015-10-01', '2015-12-30', fields="change_pct")
get_money_flow(['000001.XSHE'], '2010-01-01', '2010-01-30', ["date", "sec_code", "change_pct", "net_amount_main", "net_pct_l", "net_amount_m"])

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

# 获取多只股票在一个时间段内的资金流向数据
get_money_flow(['000001.XSHE', '000040.XSHE', '000099.XSHE'], '2010-01-01', '2010-01-30')
# 获取多只股票在某一天的资金流向数据
get_money_flow(['000001.XSHE', '000040.XSHE', '000099.XSHE'], '2016-04-01', '2016-04-01')

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

# 获取股票 000001.XSHE 在日期 2016-06-30 往前 20 个交易日的资金流量数据
get_money_flow('000001.XSHE', end_date="2016-06-30", count=20)
# 获取股票 000001.XSHE 往前 20 个交易日的资金流量数据
get_money_flow('000001.XSHE', count=20)

get_billboard_list - 获取龙虎榜数据

get_billboard_list(stock_list, start_date, end_date, count)

获取指定日期区间内的龙虎榜数据

参数

  • stock_list: 一个股票代码的 list。 当值为 None 时, 返回指定日期的所有股票。
  • start_date:开始日期
  • end_date: 结束日期
  • count: 交易日数量, 可以与 end_date 同时使用, 表示获取 end_date 前 count 个交易日的数据(含 end_date 当日)

返回值

  • pandas.DataFrame, 各 column 的含义如下:

    • code: 股票代码
    • day: 日期
    • direction: ALL 表示『汇总』,SELL 表示『卖』,BUY 表示『买』
    • abnormal_code: 异常波动类型
    • abnormal_name: 异常波动名称
    • sales_depart_name: 营业部名称
    • rank: 0 表示汇总, 1~5 表示买一到买5, 6~10 表示卖一到卖五
    • buy_value:买入金额
    • buy_rate:买入金额占比(买入金额/市场总成交额)
    • sell_value:卖出金额
    • sell_rate:卖出金额占比(卖出金额/市场总成交额)
    • net_value:净额(买入金额 - 卖出金额)
    • amount:市场总成交额

示例

# 在策略中获取前一日的龙虎榜数据
get_billboard_list(stock_list=None, end_date = context.previous_date, count =1)

get_future_contracts-获取期货可交易合约列表

get_future_contracts(security)

获取某期货品种在策略当前日期的可交易合约标的列表

参数

  • security: 期货合约品种,如 ‘AG’(白银)

返回

  • 某期货品种在策略当前日期的可交易合约标的列表

示例

# 获取某一天的主力合约对应的期货合约代码(策略当前日期是20160601)
get_future_contracts('IF')

# 输出
[u'IF1606.CCFX', u'IF1607.CCFX', u'IF1609.CCFX', u'IF1612.CCFX']

get_dominant_future-获取主力合约对应的标的

get_dominant_future(security)

参数

  • security: 期货合约品种,如 ‘AG’(白银)

返回

  • 主力合约对应的期货合约

示例

# 获取某一天的主力合约对应的期货合约代码(策略当前日期是20160801)
>>> get_dominant_future('IF')

# 输出
'IF1608.CCFX'

什么是主力连续合约

  1. 期货合约的生存周期是有限的,到合约最后交易日后就要交割。因此我们根据持仓量对期货合约进行拼接,形成主力连续合约。

  2. 合约代码:品种代号+9999,例如AG9999(白银主力合约)、Y9999(豆油主力合约)。

  3. 主力合约定义:如果某合约持仓量连续2天为同一个品种中最大的,且该合约相对于当前主力合约为远期合约,则自动变成主力合约。不会在日内进行主力合约切换。

下面是主要期货交易所的主力合约列表:

中金所

代码 名称 代码 名称
IC9999.CCFX 中证500主力合约 T9999.CCFX 10年期国债主力合约
IF9999.CCFX 沪深300主力合约 TF9999.CCFX 5年期国债主力合约
IH9999.CCFX 上证50主力合约 - -

上海国际能源交易中心

代码 名称 代码 名称
SC9999.XINE 原油主力合约 - -

上期所

代码 名称 代码 名称
AG9999.XSGE 白银主力合约 PB9999.XSGE 铅主力合约
AU9999.XSGE 黄金主力合约 RB9999.XSGE 螺纹钢主力合约
AL9999.XSGE 铝主力合约 RU9999.XSGE 天然橡胶主力合约
BU9999.XSGE 石油沥青主力合约 SN9999.XSGE 锡主力合约
CU9999.XSGE 铜主力合约 WR9999.XSGE 线材主力合约
FU9999.XSGE 燃料油主力合约 ZN9999.XSGE 锌主力合约
HC9999.XSGE 热轧卷板主力合约 NI9999.XSGE 镍主力合约

郑商所

代码 名称 代码 名称
CY9999.XZCE 棉纱主力合约 RM9999.XZCE 菜籽粕主力合约
CF9999.XZCE 棉花主力合约 RM9999.XZCE 菜籽粕主力合约
FG9999.XZCE 玻璃主力合约 RS9999.XZCE 油菜籽主力合约
JR9999.XZCE 粳稻谷主力合约 SF9999.XZCE 硅铁主力合约
LR9999.XZCE 晚籼稻主力合约 SM9999.XZCE 锰硅主力合约
MA9999.XZCE 甲醇主力合约 SR9999.XZCE 白糖主力合约
ME9999.XZCE 甲醇主力合约[退市] TA9999.XZCE PTA主力合约
OI9999.XZCE 菜籽油主力合约 WH9999.XZCE 强麦主力合约
RO9999.XZCE 菜籽油主力合约[退市] WS9999.XZCE 强麦主力合约[退市]
PM9999.XZCE 普麦主力合约 ZC9999.XZCE 动力煤主力合约
WT9999.XZCE 硬白小麦主力合约[退市] TC9999.XZCE 动力煤主力合约[退市]
RI9999.XZCE 早籼稻主力合约 GN9999.XZCE 绿豆主力合约[退市]
ER9999.XZCE 早籼稻主力合约[退市] AP9999.XZCE 苹果主力合约

大商所

代码 名称 代码 名称
A9999.XDCE 豆一主力合约 JD9999.XDCE 鸡蛋主力合约
B9999.XDCE 豆二主力合约 JM9999.XDCE 焦煤主力合约
BB9999.XDCE 胶合板主力合约 L9999.XDCE 聚乙烯主力合约
C9999.XDCE 玉米主力合约 M9999.XDCE 豆粕主力合约
CS9999.XDCE 玉米淀粉主力合约 P9999.XDCE 棕榈油主力合约
FB9999.XDCE 纤维板主力合约 PP9999.XDCE 聚丙烯主力合约
I9999.XDCE 铁矿石主力合约 V9999.XDCE 聚氯乙烯主力合约
J9999.XDCE 焦炭主力合约 Y9999.XDCE 豆油主力合约

有哪些品种指数

下面是主要期货交易所的期货指数列表:

中金所

代码 名称 代码 名称
IC8888.CCFX 中证500期货指数 T8888.CCFX 10年期国债期货指数
IF8888.CCFX 沪深300期货指数 TF8888.CCFX 5年期国债期货指数
IH8888.CCFX 上证50期货指数 - -

上海国际能源交易中心

代码 名称 代码 名称
SC8888.XINE 原油期货指数 - -

上期所

代码 名称 代码 名称
AG8888.XSGE 白银期货指数 PB8888.XSGE 铅期货指数
AU8888.XSGE 黄金期货指数 RB8888.XSGE 螺纹钢期货指数
AL8888.XSGE 铝期货指数 RU8888.XSGE 天然橡胶期货指数
BU8888.XSGE 石油沥青期货指数 SN8888.XSGE 锡期货指数
CU8888.XSGE 铜期货指数 WR8888.XSGE 线材期货指数
FU8888.XSGE 燃料油期货指数 ZN8888.XSGE 锌期货指数
HC8888.XSGE 热轧卷板期货指数 NI8888.XSGE 镍期货指数

郑商所

代码 名称 代码 名称
CY8888.XZCE 棉纱期货指数 RM8888.XZCE 菜籽粕期货指数
CF8888.XZCE 棉花期货指数 RM8888.XZCE 菜籽粕期货指数
FG8888.XZCE 玻璃期货指数 RS8888.XZCE 油菜籽期货指数
JR8888.XZCE 粳稻谷期货指数 SF8888.XZCE 硅铁期货指数
LR8888.XZCE 晚籼稻期货指数 SM8888.XZCE 锰硅期货指数
MA8888.XZCE 甲醇期货指数 SR8888.XZCE 白糖期货指数
ME8888.XZCE 甲醇期货指数[退市] TA8888.XZCE PTA期货指数
OI8888.XZCE 菜籽油期货指数 WH8888.XZCE 强麦期货指数
RO8888.XZCE 菜籽油期货指数[退市] WS8888.XZCE 强麦期货指数[退市]
PM8888.XZCE 普麦期货指数 ZC8888.XZCE 动力煤期货指数
WT8888.XZCE 硬白小麦期货指数[退市] TC8888.XZCE 动力煤期货指数[退市]
RI8888.XZCE 早籼稻期货指数 GN8888.XZCE 绿豆期货指数[退市]
ER8888.XZCE 早籼稻期货指数[退市] AP8888.XZCE 苹果期货指数

大商所

代码 名称 代码 名称
A8888.XDCE 豆一期货指数 JD8888.XDCE 鸡蛋期货指数
B8888.XDCE 豆二期货指数 JM8888.XDCE 焦煤期货指数
BB8888.XDCE 胶合板期货指数 L8888.XDCE 聚乙烯期货指数
C8888.XDCE 玉米期货指数 M8888.XDCE 豆粕期货指数
CS8888.XDCE 玉米淀粉期货指数 P8888.XDCE 棕榈油期货指数
FB8888.XDCE 纤维板期货指数 PP8888.XDCE 聚丙烯期货指数
I8888.XDCE 铁矿石期货指数 V8888.XDCE 聚氯乙烯期货指数
J8888.XDCE 焦炭期货指数 Y8888.XDCE 豆油期货指数

期货注意事项

  • 有夜盘的商品期货的一个交易日从前一天晚上 21:00 开始
  • 每日在16:00:00结算, 对于期货, 使用结算价结算
  • 期货持仓到交割日,没有手动交割,系统会以当天结算价平仓, 没有手续费, 不会有交易记录

获取公司财务数据

get_fundamentals - 查询财务数据

get_fundamentals(query_object, date=None, statDate=None)

查询财务数据,详细的数据字段描述请点击财务数据文档查看

date和statDate参数只能传入一个:

  • 传入date时, 查询指定日期date收盘后所能看到的最近(对市值表来说, 最近一天, 对其他表来说, 最近一个季度)的数据, 我们会查找上市公司在这个日期之前(包括此日期)发布的数据, 不会有未来函数.
  • 传入statDate时, 查询 statDate 指定的季度或者年份的财务数据. 注意:
    1. 由于公司发布财报不及时, 一般是看不到当季度或年份的财务报表的, 回测中使用这个数据可能会有未来函数, 请注意规避.
    2. 由于估值表每天更新, 当按季度或者年份查询时, 返回季度或者年份最后一天的数据
    3. 由于“资产负债数据”这个表是存量性质的, 查询年度数据是返回第四季度的数据。
    4. 银行业、券商、保险专项数据只有年报数据,需传入statDate参数,当传入 date 参数 或 statDate 传入季度时返回空,请自行避免未来函数。

当 date 和 statDate 都不传入时, 相当于使用 date 参数, date 的默认值下面会描述.

参数

  • query_object: 一个sqlalchemy.orm.query.Query对象, 可以通过全局的 query 函数获取 Query 对象
  • date: 查询日期, 一个字符串(格式类似’2015-10-15’)或者[datetime.date]/[datetime.datetime]对象, 可以是None, 使用默认日期. 这个默认日期在回测和研究模块上有点差别:

    1. 回测模块: 默认值会随着回测日期变化而变化, 等于 context.current_dt 的前一天(实际生活中我们只能看到前一天的财报和市值数据, 所以要用前一天)
    2. 研究模块: 使用平台财务数据的最新日期, 一般是昨天.
      如果传入的 date 不是交易日, 则使用这个日期之前的最近的一个交易日
  • statDate: 财报统计的季度或者年份, 一个字符串, 有两种格式:

    1. 季度: 格式是: 年 + ‘q’ + 季度序号, 例如: ‘2015q1’, ‘2013q4’.
    2. 年份: 格式就是年份的数字, 例如: ‘2015’, ‘2016’.

返回
返回一个 [pandas.DataFrame], 每一行对应数据库返回的每一行(可能是几个表的联合查询结果的一行), 列索引是你查询的所有字段
注意:

  1. 为了防止返回数据量过大, 我们每次最多返回10000行
  2. 当相关股票上市前、退市后,财务数据返回各字段为空

示例

# 查询'000001.XSHE'的所有市值数据, 时间是2015-10-15
q = query(
    valuation
).filter(
    valuation.code == '000001.XSHE'
)
df = get_fundamentals(q, '2015-10-15')
# 打印出总市值
print(df['market_cap'][0])
# 获取多只股票在某一日期的市值, 利润
df = get_fundamentals(query(
        valuation, income
    ).filter(
        # 这里不能使用 in 操作, 要使用in_()函数
        valuation.code.in_(['000001.XSHE', '600000.XSHG'])
    ), date='2015-10-15')
# 选出所有的总市值大于1000亿元, 市盈率小于10, 营业总收入大于200亿元的股票
df = get_fundamentals(query(
        valuation.code, valuation.market_cap, valuation.pe_ratio, income.total_operating_revenue
    ).filter(
        valuation.market_cap > 1000,
        valuation.pe_ratio < 10,
        income.total_operating_revenue > 2e10
    ).order_by(
        # 按市值降序排列
        valuation.market_cap.desc()
    ).limit(
        # 最多返回100个
        100
    ), date='2015-10-15')
# 使用 or_ 函数: 查询总市值大于1000亿元 **或者** 市盈率小于10的股票
from sqlalchemy.sql.expression import or_
get_fundamentals(query(
        valuation.code
    ).filter(
        or_(
            valuation.market_cap > 1000,
            valuation.pe_ratio < 10
        )
    ))
# 查询平安银行2014年四个季度的季报, 放到数组中
q = query(
        income.statDate,
        income.code,
        income.basic_eps,
        balance.cash_equivalents,
        cash_flow.goods_sale_and_service_render_cash
    ).filter(
        income.code == '000001.XSHE',
    )

rets = [get_fundamentals(q, statDate='2014q'+str(i)) for i in range(1, 5)]
# 查询平安银行2014年的年报
q = query(
        income.statDate,
        income.code,
        income.basic_eps,
        cash_flow.goods_sale_and_service_render_cash
    ).filter(
        income.code == '000001.XSHE',
    )

ret = get_fundamentals(q, statDate='2014')

get_fundamentals_continuously - 查询多日的财务数据

get_fundamentals_continuously(query_object, end_date=None,count=None)

查询财务数据,详细的数据字段描述请点击财务数据文档查看

参数

  • query_object: 一个sqlalchemy.orm.query.Query对象, 可以通过全局的 query 函数获取 Query 对象
  • end_date: 查询日期, 一个字符串(格式类似’2015-10-15’)或者[datetime.date]/[datetime.datetime]对象, 可以是None, 使用默认日期. 这个默认日期在回测和研究模块上有点差别:
    1. 回测模块: 默认值会随着回测日期变化而变化, 等于 context.current_dt 的前一天(实际生活中我们只能看到前一天的财报和市值数据, 所以要用前一天)
    2. 研究模块: 使用平台财务数据的最新日期, 一般是昨天.
      如果传入的 date 不是交易日, 则使用这个日期之前的最近的一个交易日
  • count: 获取 end_date 前 count 个日期的数据

返回
返回一个 [pandas.Panel]

出于性能方面考虑,我们做出了返回总条数不超过10000条的限制。 也就是说:查询的股票数量*count 要小于10000。 否则,返回的数据会不完整。

示例

>>> q = query(valuation.turnover_ratio,
              valuation.market_cap,
              indicator.eps
            ).filter(valuation.code.in_(['000001.XSHE', '600000.XSHG']))

>>> panel = get_fundamentals_continuously(q, end_date='2018-01-01', count=5)

>>> panel 

<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 5 (major_axis) x 2 (minor_axis)
Items axis: turnover_ratio to eps
Major_axis axis: 2017-12-25 to 2017-12-29
Minor_axis axis: 000001.XSHE to 600000.XSHG

>>> panel.minor_xs('600000.XSHG')

turnover_ratio  market_cap  eps
day         
2017-12-25  0.0687  3695.4270   0.48
2017-12-26  0.0542  3710.1030   0.48
2017-12-27  0.1165  3704.2324   0.48
2017-12-28  0.0849  3680.7510   0.48
2017-12-29  0.0582  3695.4270   0.48


>>> panel.major_xs('2017-12-25')

turnover_ratio  market_cap  eps
code            
000001.XSHE 0.9372  2275.0796   0.38
600000.XSHG 0.0687  3695.4270   0.48

>>> panel.xs('turnover_ratio',axis=0)
# axis=0 表示 items axis; axis=1 表示 major axis; axis=2 表示 minor axis

code    000001.XSHE 600000.XSHG
day     
2017-12-25  0.9372  0.0687
2017-12-26  0.6642  0.0542
2017-12-27  0.8078  0.1165
2017-12-28  0.9180  0.0849
2017-12-29  0.5810  0.0582

macro - 获取聚宽宏观经济数据

数据调用方法

from jqdatasdk import macro
macro.run_query(query_object)

参数
* query_object: 一个sqlalchemy.orm.query.Query对象, 可以通过全局的query函数获取Query对象。

返回
返回一个 dataframe, 每一行对应数据库返回的每一行, 列索引是你所查询的字段

注意
1. 为了防止返回数据量过大, 我们每次最多返回3000行
2. 不能进行连表查询,即同时查询多张表内数据

示例

# 查询分地区农林牧渔业总产值表(季度累计) 的前10条数据
q = query(macro.MAC_INDUSTRY_AREA_AGR_OUTPUT_VALUE_QUARTER
    ).limit(10)
df = macro.run_query(q)
# 查询2014年的分地区农林牧渔业总产值表(年度)
q = query(macro.MAC_INDUSTRY_AREA_AGR_OUTPUT_VALUE_YEAR
        ).filter(macro.MAC_INDUSTRY_AREA_AGR_OUTPUT_VALUE_YEAR.stat_year=='2014')
df = macro.run_query(q)

获取Alpha特色因子数据(付费)

Alpha 101 因子

因子来源:
根据 WorldQuant LLC 发表的论文 101 Formulaic Alphas 中给出的 101 个 Alphas 因子公式,我们将公式编写成了函数,方便大家使用。

详细介绍:
函数计算公式、API 调用方法,输入输出值详情请见:数据 - Alpha 101.

购买:用户如有需要使用Alpha101和Alpha191因子的,可以以走线下商务流程与我们联系,您可以添加管理员微信:JQData01,或发送邮件至:jqdatasdk@joinquant.com。

使用方法:

# 导入 Alpha101 库
>>> from jqdatasdk.alpha101 import *

# 获取沪深300成分股的 alpha_001 因子值
>>> a = alpha_001('2017-03-10','000300.XSHG')

# 查看前5行的因子值
>>> a.head()
000001.XSHE   -0.496667
000002.XSHE    0.226667
000008.XSHE   -0.043333
000009.XSHE   -0.093333
000027.XSHE   -0.030000
Name: rank_value_boolean, dtype: float64

# 查看平安银行的因子值
>>> a['000001.XSHE']
-0.49666666666666665

# 获取所有股票 alpha_007 的因子值
>>> a = alpha_007('2014-10-22')
# 查看欣旺达(300207)的因子值
>>> a['300207.XSHE']
0.8

# 查询函数说明
>>> alpha_101?
Type:        cython_function_or_method
String form: <cyfunction alpha_101 at 0x7f037a0167d0>
Docstring:
公式:
((close - open) / ((high - low) + .001))

Inputs:
    enddate: 查询日期
    index: 股票池

Outputs:
    因子的值

Alpha 191 因子

因子来源:
根据国泰君安数量化专题研究报告 - 基于短周期价量特征的多因子选股体系给出了 191 个短周期交易型阿尔法因子,方便大家使用。

详细介绍:
函数计算公式、API 调用方法,输入输出值详情请见:数据 - Alpha 191.

使用方法:

# 导入 Alpha191 库
>>> from jqdatasdk.alpha191 import *

# 获取沪深300成分股的 alpha_001 因子值
>>> a = alpha_001('2017-03-10','000300.XSHG')

# 查看前5行的因子值
>>> a.head()
000001.XSHE   -0.496667
000002.XSHE    0.226667
000008.XSHE   -0.043333
000009.XSHE   -0.093333
000027.XSHE   -0.030000
Name: rank_value_boolean, dtype: float64

# 查看平安银行的因子值
>>> a['000001.XSHE']
-0.49666666666666665

# 获取所有股票 alpha_007 的因子值
>>>end_date = '2017-04-04'
>>>code = list(get_all_securities(['stock'],date=end_date).index)
>>> a = alpha_007(code,end_date)
# 查看欣旺达(300207)的因子值
>>> a['300207.XSHE']
1.2494895018526142

# 查询函数说明
>>> alpha_001?
Signature: alpha_001(code, end_date=None)
Docstring:
公式:
    (-1 * CORR(RANK(DELTA(LOG(VOLUME),1)),RANK(((CLOSE-OPEN)/OPEN)),6)
Inputs:
    code: 股票池
    end_date: 查询日期
Outputs:
    因子的值
File:      ~/alpha191.py
Type:      function

技术分析指标因子(付费)

因子说明:我们对比了通达信、东方财富、同花顺以及市场上公开的技术指标公式,以此来完善我们自己的技术指标因子库,并给出了公式的API、参数说明、返回值的结果及用法示例,旨在帮助您更方便、更快速的在策略研究中使用这些因子函数。

详细介绍:函数计算公式、API 调用方法,用法注释, 输入输出值详情请见:数据 - 技术分析指标.

购买:用户如有需要使用技术指标因子的,可以以走线下商务流程与我们联系,您可以添加管理员微信:JQData01,或发送邮件至:jqdatasdk@joinquant.com。

示例:

# 导入技术分析指标库
>>> from jqdatasdk.technical_analysis import *

# 定义股票池列表
security_list1 = '000001.XSHE'
security_list2 = ['000001.XSHE','000002.XSHE','601211.XSHG','603177.XSHG']


# 计算并输出 security_list1 的 GDX 值,分别返回:济安线、压力线和支撑线的值。
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list1,check_date='2017-01-04', N = 30, M = 9)
print gdx_jax[security_list1]
print gdx_ylx[security_list1]
print gdx_zcx[security_list1]

# 输出 security_list2 的 GDX 值
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list2,check_date='2017-01-04', N = 30, M = 9)
for stock in security_list2:
    print gdx_jax[stock]
    print gdx_ylx[stock]
    print gdx_zcx[stock]

# 查询函数说明
>>> GDX?
Signature: GDX(security_list, check_date, N=30, M=9)
Docstring:
  计算公式:
    AA:=ABS((2*CLOSE+HIGH+LOW)/4-MA(CLOSE,N))/MA(CLOSE,N); 
    JAX:DMA(CLOSE,AA);
    压力线:(1+M/100)*JAX; 
    支撑线:(1-M/100)*JAX; 
    AA赋值:(2*收盘价+最高价+最低价)/4-收盘价的N日简单移动平均的绝对值/收盘价的N日简单移动平均
    输出济安线 = 以AA为权重收盘价的动态移动平均
    输出压力线 = (1+M/100)*JAX
    输出支撑线 = (1-M/100)*JAX
输入:
    security_list:股票列表
    check_date:要查询数据的日期
    N:统计的天数 N
    M:统计的天数 M
输出:
    济安线、压力线和支撑线的值。
输出结果类型:
    字典(dict):键(key)为股票代码,值(value)为数据。

tick数据(机构)

get_ticks-获取股票和期货tick数据

get_ticks(security, end_dt, start_dt, count, fields)

股票部分, 支持 2017-01-01 至今的tick数据。

期货部分, 支持 2010-01-01 至今的tick数据。

购买:用户如有需要使用tick数据的,可以以走线下商务流程与我们联系,您可以添加管理员微信:JQData01,或发送邮件至jqdatasdk@joinquant.com。

参数

  • security: 股票代码或期货代码

  • start_dt: 开始日期

  • end_dt: 结束日期

  • count: 取出指定时间区间内前多少条的tick数据。

  • fields: 选择要获取的行情数据字段,默认为None,表示[“time”, “current”, “high”, “low”, “volume”, “money”]

  • 股票tick返回结果

datetime 时间 datetime
current 当前价 float
high 最高价 float
low 最低价 float
volume 累计成交量 float
money 累计成交额 float
a1_v~a5_v 五档卖量 float
a1_p~a5_p 五档卖价 float
b1_v~b5_v 五档买量 float
b1_p~b5_v 五档买价 float
字段名 说明 字段类型

- 期货tick返回结果:

datetime 时间 datetime
current 当前价 float
high 最高价 float
low 最低价 float
volume 累计成交量 float
money 累计成交额 float
position 持仓量 float
a1_v 一档卖量 float
a1_p 一档卖价 float
b1_v 一档买量 float
b1_p 一档买价 float
字段名 说明 字段类型

股票tick数据示例

#获取平安银行2018-03-16的tick数据
>>>d = get_ticks("000001.XSHE", end_dt="2018-03-16", count=10)
                      time  current   high    low     volume         money  \
0 2018-03-15 14:56:03.600    11.71  11.85  11.67  1137218.0  1.335243e+09   
1 2018-03-15 14:56:03.900    11.70  11.85  11.67  1137344.0  1.335390e+09   
2 2018-03-15 14:56:04.200    11.71  11.85  11.67  1137467.0  1.335534e+09   
3 2018-03-15 14:56:04.500    11.71  11.85  11.67  1137646.0  1.335744e+09   
4 2018-03-15 14:56:04.800    11.70  11.85  11.67  1137921.0  1.336066e+09   
5 2018-03-15 14:56:05.100    11.70  11.85  11.67  1138055.0  1.336222e+09   
6 2018-03-15 14:56:05.400    11.71  11.85  11.67  1138293.0  1.336501e+09   
7 2018-03-15 14:56:05.700    11.71  11.85  11.67  1138328.0  1.336542e+09   
8 2018-03-15 14:57:00.000    11.71  11.85  11.67  1138429.0  1.336660e+09   
9 2018-03-15 15:00:00.300    11.71  11.85  11.67  1155695.0  1.356879e+09   

    a1_p    a1_v      a2_p    a2_v   ...     b1_p    b1_v      b2_p    b2_v  \
0  11.71  3871.0  117200.0  2339.0   ...     11.7  1033.0  116900.0  8376.0   
1  11.71  3823.0  117200.0  2339.0   ...     11.7  1067.0  116900.0  8376.0   
2  11.71  3749.0  117200.0  2339.0   ...     11.7  1086.0  116900.0  8374.0   
3  11.71  3671.0  117200.0  1339.0   ...     11.7  1064.0  116900.0  8412.0   
4  11.71  3421.0  117200.0  1339.0   ...     11.7  1201.0  116900.0  7834.0   
5  11.71  3502.0  117200.0  1339.0   ...     11.7  1099.0  116900.0  7833.0   
6  11.71  3316.0  117200.0  1340.0   ...     11.7  2118.0  116900.0  7853.0   
7  11.71  3301.0  117200.0  1271.0   ...     11.7  2534.0  116900.0  7889.0   
8   0.00     0.0       0.0     0.0   ...      0.0     0.0       0.0     0.0   
9  11.71  1455.0  117200.0  1468.0   ...     11.7  5543.0  116900.0  8055.0   

        b3_p     b3_v      b4_p    b4_v      b5_p     b5_v  
0  116800.0  14456.0  116700.0  4259.0  116600.0  10163.0  
1  116800.0  14461.0  116700.0  4259.0  116600.0  10163.0  
2  116800.0  14458.0  116700.0  4233.0  116600.0  10163.0  
3  116800.0  14461.0  116700.0  4233.0  116600.0  10163.0  
4  116800.0  14462.0  116700.0  4193.0  116600.0  10156.0  
5  116800.0  14437.0  116700.0  4193.0  116600.0  10136.0  
6  116800.0  14372.0  116700.0  4190.0  116600.0  10131.0  
7  116800.0  14372.0  116700.0  4190.0  116600.0  10131.0  
8       0.0      0.0       0.0     0.0       0.0      0.0  
9  116800.0  14418.0  116700.0  4190.0  116600.0  10140.0  

期货tick数据示例

#获取NI1804期货合约在2018-03-16的tick数据
>>>get_ticks('NI1804.XSGE',end_dt='2018-03-16',count=10)
                      time   current      high       low  volume      money  
0 2018-03-09 14:58:05.400   99920.0  101770.0   99920.0    16.0  1609980.0   
1 2018-03-09 22:49:01.500  101450.0  101450.0  101450.0     2.0   202900.0   
2 2018-03-09 22:50:00.000  101500.0  101500.0  101450.0     4.0   405900.0   
3 2018-03-09 23:31:01.000  102090.0  102090.0  101450.0     6.0   610080.0   
4 2018-03-09 23:31:03.800  102910.0  102910.0  101450.0     8.0   815900.0   
5 2018-03-12 11:21:01.900  103970.0  103970.0  101450.0    10.0  1023840.0   
6 2018-03-13 21:43:00.900  104280.0  104280.0  104280.0     2.0   208560.0   
7 2018-03-13 21:46:00.000  104280.0  104280.0  104280.0     4.0   417120.0   
8 2018-03-14 09:04:01.500  103600.0  104280.0  103600.0     8.0   831520.0   
9 2018-03-14 09:48:05.200  104220.0  104280.0  103600.0    12.0  1248400.0 

          position      a1_p  a1_v      b1_p  b1_v  
0      40.0  101100.0   6.0   99920.0   3.0  
1      40.0  101500.0   1.0  101260.0   1.0  
2      40.0  101490.0   2.0  101310.0   3.0  
3      40.0  102930.0   4.0  102090.0   3.0  
4      40.0  102910.0   3.0  102110.0   4.0  
5      40.0  103970.0   5.0  103270.0   1.0  
6      40.0  104750.0   3.0  103690.0   1.0  
7      42.0  104750.0   3.0  103700.0   1.0  
8      42.0  104300.0   2.0  102680.0   1.0  
9      46.0  104220.0   8.0  102950.0   1.0  

百度因子(机构)

get_baidu_factor-获取中证800指数成分股的全网搜索量和分省份搜索量

get_baidu_factor(category, day, stock=None, province=None)

因子说明:百度大数据特色因子是基于百度搜索数据和全网舆情监控分析产生的特色因子,具有有效的预测能力和选股能力,目前通过聚宽量化平台首次对外提供第一阶段百度提供的因子库主要是搜索类因子库,随着数据合作的深入,未来会有更多类别的因子库接入到聚宽量化平台。

现阶段已经接入的搜索类因子库包含以下几类:

1. 中证800股票池搜索量(全量)因子库:主要反映百度全网用户对于中证800股票池所有成分股的关注度。

2. 中证800股票池分省份的搜索量因子库:反映百度全网各省份用户对于中证800股票池所有成分股的关注度差异。

时间范围:20170901-至今

更新频率:每日上午12:30之前更新前一日的搜索量数据,遇节假日顺延到下一工作。

中证800指数是指:由中证指数有限公司编制的、其成分股由中证500和沪深300指数成分股组成,综合反映中国A股市场大中小市值公司的股票价格表现。中证800指数,简称中证800(CSI_800),指数代码:000906。指数编制方案及成分股构成依中证指数有限公司官网公布为准。

购买:百度因子目前仅限机构用户使用,用户如有需要使用百度因子的,可以以走线下商务流程与我们联系,您可以添加管理员微信:JQData01,或发送邮件至邮箱:jqdatasdk@joinquant.com。

参数说明:

参数名称 类型 描述
category str 百度因子数据类别,获取中证800的数据类别为”csi800”
day date,datetime,str 指定查询日期,如“2018-03-15”,如果day为空,则返回最新的数据。
stock str 指定某只股票或一个股票list,如“600519.XSHG”。如果为空,则包含中证800所有的成分股。上交所股票代码后缀“.XSHG”,深交所股票代码后缀“.XSHE”
province str 指定省份名称或统计局官方发布的省份代码,如“北京”或“110000”。如果为空,则返回PC端和手机端的数据汇总。如果不为空,则返回指定省份的数据。

返回结果示例:

示例一:查找贵州茅台2018-3-15的百度因子搜索数据:

>>>get_baidu_factor(category=“csi800”, day=“2018-03-15”,stock=“600519.XSHG”,province=None)
    code     day          pc_count   cellphone_count
0  600519  2018-03-15    3607       3887
#pc_count,cellphone_count分别代表PC端搜索量和手机端搜索量

示例二:查找贵州茅台2018-3-15的百度因子在北京地区的搜索数据:

>>>get_baidu_factor(category=“csi800”, day=“2018-03-15”,stock=“600519.XSHG”, province=“北京”) 
    code    day          province_id   province  count
0  600519  2018-03-15   110000        北京      649
#province_id和province分别代表省份编码和省份名称,count表示该省份用户的搜索量

附:聚宽JQData用户使用协议

聚宽JQData用户使用协议

聚宽JQData用户使用协议(以下简称“本协议”)由北京小龙虾科技有限公司(以下简称“公司”)与聚宽JQData用户(以下简称“用户”或“您”)签订。当您在聚宽JQData相关的网络页面,软件客户端等点击确认接受本协议,或按照本协议约定的方式实际使用聚宽JQData的服务即意味着您同意接受本协议条款的约束。

公司郑重通知用户,根据国家的相关法律规定,用户应当使用本人真实身份信息在聚宽JQData相关的网络页面,软件客户端注册账号并按照本协议的约定使用聚宽JQData数据。账号仅限本人使用,用户不得将本人账号交于他人使用,或将使用本人账号获取的聚宽JQData数据交给第三方使用。违反上述规定的,公司有权在不提前通知用户的前提下终止用户使用聚宽JQData数据的权利,包括但不局限于封禁用户的账号,禁止用户使用的终端接入聚宽JQData数据服务。

第一条 定义

1.1 “聚宽JQData”是公司根据来源于上海证券交易所,深圳证券交易所,第三方数据提供商以及市场上其他公开可得的原始数据,经过公司专业的字段设计和数据整理生成。

第二条 聚宽JQData数据使用方式

2.1 用户通过公司提供的试用申请、付费购买两种渠道获得试用或者正式的聚宽JQData使用授权通知后,方可使用聚宽JQData数据。

2.2 用户只能在公司授权的使用范围内使用聚宽JQData数据,包括但不限于使用期限,数据品种,时间范围,调用条数限制等。

2.3 聚宽JQData的使用方式详见公司在聚宽量化平台官网(https://www.joinquant.com)发布的聚宽JQData数据说明页。用户有任何问题可以通过聚宽社区,邮件等渠道向公司反馈,聚宽JQData使用方法的最终解释权归公司所有。

第三条 授权内容

3.1公司基于证券市场的发展,在用户使用聚宽JQData期间,对聚宽JQData数据保有不断更新和调整的权利。

3.2 未经公司事先书面许可,用户不得将聚宽JQData及其相关技术文档、信息资料提供给第三方,或用于本协议下约定之外的目的。

第四条 知识产权

4.1公司所用于生产聚宽JQData的原始数据来源于上海证券交易所,深圳证券交易所,第三方数据提供商以及市场上其他公开可得的数据,经过公司专业的字段设计和数据整理,新生成的聚宽JQData数据的知识产权归公司所有,就公司合理所知,其授权用户使用的前述权利不侵犯任何第三方的商标权,著作权或专利权等知识产权权利。

4.2 除版权信息外,用户不得在其产品或宣传媒介上使用公司及其产品的文字和标识图片。公司与用户之间若有联合运营或推广的需要,具体授权将单独协商并另行签署协议予以约定。

第五条 用户责任

5.1 用户承诺使用聚宽JQData的数据或利用JQData数据加工之后的数据,只做研究目的使用,不用作商业目的和商业用途。

5.2 用户确保在使用聚宽JQData的过程中相关操作的合法性,不侵犯任何第三者的合法权益,包括但不限于著作权、商标权、专利权等;不会违反任何法律、法规、条例或规章。因为用户不当使用聚宽JQData对第三者权益造成损害的,由用户承担全部赔偿责任。

5.3 聚宽JQData为公司版权所有,用户不得对其进行盗用、反编译、恶意攻击及其它任何危害公司及其他聚宽JQData用户安全与权益的行为。

第六条 保密条款

6.1在本协议有效期内及协议终止后永久期限,用户应对使用期间所产生的任何帐号、密码、文件、信息和数据(统称为“保密信息”)采取保密措施,未经公司同意,不得将保密信息以任何方式泄露给第三方。

第七条 违约责任

7.1 用户违反本协议所约定的义务,公司有权在不通知用户的情况下立即终止用户使用聚宽JQData的权利。同时,用户为使用聚宽JQData已经支付的使用费用将不予退还。

7.2 用户违反协议所约定的义务给公司及第三方造成损失的,应当承担赔偿责任。

第八条 免责条款

8.1 公司本着专业精神授权用户使用聚宽JQData,但难免会因为数据源问题、技术原因和人为疏漏导致更新延迟,缺失,错误及其他故障,公司对此并不承担任何责任;若用户发现上述问题并反馈给公司,公司会采取一切必要措施以确保聚宽JQData提供数据的准确性。

8.2 如发生下述任一情况而导致用户损失的,公司不承担责任:
(1)发生不可抗力情形的;
(2)黑客攻击、计算机病毒侵入或发作的;
(3)聚宽JQData的硬件系统遭到破坏、瘫痪或无法正常使用的;
(4)网络运营商技术调整的;
(5)因政府管制而造成暂时性关闭的;
(6)其它非因公司的过错而引起的。

第九条 协议的生效

9.1 用户按照本协议约定的方式确认接受本协议条款后本协议生效,有效期为一年,到期如双方均无异议或用户继续按照本协议约定使用聚宽JQData,则本协议以一年为期自动向后延续。

第十条 法律适用

10.1 本协议由中华人民共和国法律所约束和管辖。

第十一条 争议解决

11.1凡因本协议引起的或与本协议有关的任何争议,双方首先应友好协商解决,协商不成的均应提交公司所在地有管辖权的法院通过诉讼解决。

第十二条 附则

12.1 在本协议有效期内,公司有权对本协议的内容进行修改。经修改的协议通过聚宽量化交易平台网页公告、用户注册账户时提供的电子邮件、手机短信或常规的信件传送等方式向用户发出通知,该等通知在发送时即视为已送达用户。用户在收到上述通知后继续使用聚宽JQData,视为接受修订后的协议。

新手指引
如何使用代码编写策略?
如何使用向导式编写策略?
如何使用Notebook研究?
如何推送交易信号至微信?
通过QQ群和社区提问?
上一步
下一步
关闭