- 股票数据:我们拥有所有A股上市公司2005年以来的股票行情数据、市值数据、财务数据、上市公司基本信息、融资融券信息等。为了避免幸存者偏差,我们包括了已经退市的股票数据(但是不包含2005年之前退市的股票)。
- 基金数据:我们目前提供了600多种在交易所上市的基金的行情、净值等数据,包含ETF、LOF、分级A/B基金以及货币基金的完整的行情、净值数据等,请点击基金数据查看。
- 金融期货数据:我们提供中金所推出的所有金融期货产品的行情数据,并包含历史产品的数据。
- 股票指数:我们支持近600种股票指数数据,包括指数的行情数据以及成分股数据。为了避免未来函数,我们支持获取历史任意时刻的指数成分股信息,具体见get_index_stocks和get_index_weights。注意:指数不能买卖
- 行业板块:我们支持按行业、按板块选股,具体见get_industry_stocks
- 概念板块:我们支持按概念板块选股,具体见get_concept_stocks
- 宏观数据:我们提供全方位的宏观数据,为投资者决策提供有力数据支持。
- 所有的行情数据我们均已处理好前复权信息。
- 我们当日的回测数据会在收盘后通过多数据源进行校验,并在T+1(第二天)的00:01更新。
JoinQuant提供的数据支持下载吗?
JoinQuant提供的数据可以在官网及金融终端的回测、模拟交易、研究模块免费使用,金融终端使用时请先下载数据,本地调用可申请JQData服务。
数据后缀是怎么定义的?
深交所股票代码后缀为 XSHE 如000001.XSHE 平安银行 上交所股票代码后缀为 XSHG 如600000.XSHG 浦发银行
其他数据后缀请查询数据字典
如何增加 DataFrame 显示的行、列数?
使用如下代码:
import pandas as pd
# 设定最大显示行数、列数为10000
pd.set_option('display.max_rows', 10000)
pd.set_option('display.max_columns', 10000)
pd.set_option('display.width', 10000)
numpy.float64 浮点数的展示问题
有同学问到, 聚宽的数据是不是有问题, 怎么价格还带那么多位小数. 其实并不是我们数据的问题, 是numpy.float64 展示数据的问题.我们的价格是 numpy.float64 对象存储的, numpy.float64 展示的时候跟我们想象的不一样.
stackoverflow上的答案: 点击这里
详情可以查看:点击这里
财务指标数据与其他平台不一致
为什么我在别的网站上查的财务指标(例如:net_profit、roe、 eps等)和聚宽提供的财务指标数据不一致
(1)为什么不一致:财务指标数据有单季度和报告期两种,一般财经网站上提供的都是根据财报公布日期统计的,我们根单季度统计的,因为财报的统计周期不同,导致一些指标上的不一致;
(2)这样做的原因:上市公司公布财报分四种,一季度报、中期年度报、前三季度报、全年年报,统计的周期跨度分别为第一季度、前两个季度、前三个季度、全年,而聚宽考虑到量化分析,所以默认查询的财务指标数据是单季度的;目前我们同时提供了单季度和报告期的财务数据,您也可以分别查看使用。例如可以通过下面的方式获取报告期的eps:
(3)如果大家想对比别的网站的单季度统计数值,还可以到同花顺上查看,选择按单季度统计,如下图:(4)市值(valuation)数据中market_cap、pb_ratio、pe_ratio、ps_ratio等由于算法或者不同,各个平台不一致,目前我们与choice一致;
(5)如果您还有疑问的话,请在社区发帖,详细描述下查询代码、查询结果及对比的截图,我们一起讨论下。
数据几点更新,更新频率是多少?
请查看下后面的链接内容:数据更新时间及频率
JQData,jqdatasdk和jqdata的关系
(1)JQData和jqdatasdk是同一个产品不同的名称,是一个Python库(或模块),是聚宽提供的数据接口,在您自己搭建的本地环境中使用(可以脱离官网和客户端独立使用),具体方法见JQData的API;
(2)jqdata是官网的数据产品,主要在官网及客户端使用,具体使用方法见官网的API;
(3)jqdata和jqdatasdk中的获取数据的函数及使用方法稍微不同,使用对应的API就没问题;再强调一下,jqdatasdk不能在官网的回测、模拟、研究中使用,客户端使用的话需要安装jqdatasdk这个python库,具体安装方法请参考在聚宽客户端安装Python库。
如何获取行业及概念板块的行情数据及pe,pb等数据
(1)概念板块目前只可以通过get_concept_stocks获取某个概念板块包含哪些股票;
(2)目前没有概念板块的行情数据,敬请期待;
(3)可以通过get_industry_stocks获取某个行业有哪些股票,也可以通过get_industry查询股票属于哪个行业;
(4)在聚源数据中获取行业的行情数据,具体使用方法可以参考获取中证指数/行业的行情,pe,pb,股息率及申万行业轮动策略;
(5)查询指数的PE(中证指数pe/股息率)
有关期货数据的问题
为什么有时看到的期货主力合约和其他平台不一致,是怎么判断的,什么时候更新的
(1)因此我们根据持仓量(不是成交量)对期货合约进行拼接,形成主力连续合约;
(2)主力合约根据T-2和T-1的持仓量生成,在T-1的晚上、也即T日的夜盘开始前就切换到新的主力合约;
(3)wind等显示主连的数据及主力合约
发现数据有问题怎么办?
(1)查看下我们关于数据问题的说明;
(2)在社区发帖,详细描述下您的问题,包括以下内容:
- 具体是什么问题;
- 发下查询语句;
- 发下查询结果并标记下觉得有问题的地方;
- 发下对比截图;
- 发帖参考贴
回测
爱分享的小伙伴已经在社区分享了许多策略,您可以一键克隆免费使用。
回测的作用?
策略有效体现了您的交易思想,通过历史数据的回测,可以检验策略的有效性。
回测可以使用哪些数据?
回测可以免费使用 JoinQuant 提供的所有数据。点击这里了解更多信息。
回测使用的交易数据有一天的延时,即当天的交易数据在第二天的0:01分更新。
延时原因:回测使用的交易数据基于Level-2行情数据,Level-2级别的完整交易数据需要收盘后才能获得,目前市场上没有权威的行情数据,为了保证数据的准确性,我们购买了多个数据提供商的数据,经过一系列处理后才投入使用。
如何创建并运行策略?
通过策略列表页进入策略详情页后,按如下步骤编写策略,运行回测:
(1)进入策略列表页面
您可以看到一些默认的策略,您可以直接打开这些策略,编译运行或者运行回测。
(2)点击新建策略,编辑策略,编译运行,快速回测
点击新建策略后会出现一些模板策略,您可以直接运行这些策略、修改这些策略或者删除模板策略重新写
(3)完整回测
如何编写一个最简单的策略?
如果您想要更详细的了解如何写策略,点击这里
回测支持哪些API?
点击这里查看回测API。
按天回测和分钟回测的区别?
按天回测: handle_data每天9:30调用一次, handle_data的参数是昨天的数据; 分钟回测: handle_data每分钟调用一次, handle_data的参数是上一分钟的数据;
下列图片中齿轮为 handle_data(context, data) 的运行时间,before_trading_start(context) 等其他函数运行时间详见相关API。
频率:天
当选择天频率时, 算法在每根日线 Bar 都会运行一次,即每天运行一次。
在算法中,可以获取任何粒度的数据。
频率:分钟
当选择分钟频率时, 算法在每根分钟 Bar 都会运行一次,即每分钟运行一次。
在算法中,可以获取任何粒度的数据。
频率:Tick
当选择 Tick 频率时,每当新来一个 Tick,算法都会被执行一次。
注意:现阶段,Tick 频率只有在模拟交易时可以选择。
执行示意图如下图所示:
编译运行和运行回测的区别?
编译运行便于您快速调试代码,检查代码中的错误,策略的运行结果也能更快的展示,仅统计了基准收益、Total Returns(策略总收益)、Alpha(阿尔法)、Beta(贝塔)、Sharpe(夏普比率)、Max Drawdown(最大回撤)等。
运行回测是一次完整的回测,不仅包括编译运行中已经统计的指标,还包括交易详情、每日持仓&收益等信息。运行回测后您还可以创建模拟交易或者对回测进行归因分析。
如何查看订单的处理结果?
- 请参考如下API文档: get_open_orders/get_orders/get_trades
- 运行回测,在回测结果页查看交易详情、每日持仓&收益。
Total Returns、Alpha等指标如何计算?
Total Returns(策略总收益)、Alpha(阿尔法)、Beta(贝塔)、Sharpe(夏普比率)、Max Drawdown(最大回撤)等指标统称为风险指标,风险指标有利于您对策略进行一个客观的评价;点击这里查看风险指标的计算方法。
回测时Cash(可用资金)为负是因为什么?
市价单时, 为了让用户能够满仓买入一支股票, 我们并不是按照涨停价计算可买的数量, 而是按照当时的实际价格计算的, 如果按照涨停价计算可买的数量的话, 可能总是只能有90%的仓位. 而成交价格因为滑点的原因可能比市价高一些. 导致成交金额超出了可用资金,与实际情况有些出入. 实盘时,市价单策略按照“涨停价+千分之五手续费”计算可买数量,并冻结资金,不会出现这样的现象.
多次回测的结果不一样, 可能是什么原因?
(1)比较的前提: 开始/结束日期、起始资金、策略及运行频率必须相同;
(2)数据有更新;
(3)策略的原因(在相同条件下多次回测比较结果是否相同来排除):
- 代码中有随机因素,比如遍历 dict中的元素. 因为dict 是无序存储的, 每次遍历的顺序可能不一样;
- 不稳定的排序,比如多列的DataFrame, 根据一列进行排序, 每次排序后最终的DataFrame可能是不一样的;
- 没有采用真实价格回测, 而且建立回测的日期不一样,因为回测中看到的价格可能是根据建立回测的日期做前复权处理的,如果建立的两个日期之间有股票发生了除权, 而策略又操作了这只股票, 则会可能会导致回测不一样。