Appearance
常见问题
回测
回测支持品种
- 沪深 A 股、场内基金(ETF、LOF)、可转债
- 暂不支持:期货、北交所、期权
回测业务规则
股票
合法挂单时间
- 9:15-9:20:开盘集合竞价(可申报,可撤单)
- 9:20-9:25:开盘集合竟价(可申报,不可撤单)
- 9:30-11:30:连续竞价(早市)
- 13:00-14:57:连续竞价(午市)
- 14:57-15:00:收盘集合竟价(可申报,不可撤单)
- 其他时间下单都会报错
委托逻辑
- 委托价格确定
- 限价单:委托价格
- 委托数量确定
- 市价单:min(按照涨停价计算的最大可买,单笔委托上限)
- 限价单:
- 买入:min(按照委托价计算的最大可买量,单笔委托上限)
- 卖出:min(持仓量,单笔委托上限)
撮合逻辑
以真实(不复权)价格撮合
撮合条件:
- 涨跌停范围内撮合:
- 买入、开多或平空操作时,当 “最新价 + 滑点” 处于涨跌停区间内,将进行交易撮合,委托价需大于等于 “最新价 + 滑点”。
- 卖出、开空或平多操作时,当 “最新价 - 滑点” 处于涨跌停区间内,将进行交易撮合,委托价需小于等于 “最新价 - 滑点”。
- 涨跌停特殊情况:若标的的 “最新价 + 滑点” 达到或超过涨停价,或“最新价 - 滑点” 达到或低于跌停价时:
- 跌停时,市价卖单将被撤销;涨停时,市价买单将被撤销。
- 限价单则会挂单等待后续撮合。
- 涨跌停范围内撮合:
成交价格确定
- 市价单
- 成交价格为 “最新价 + 滑点”。
- 在开盘时刻运行时,最新价取开盘价。
- 其他情况下,最新价为上一分钟的最后一个价格或上一个 tick 的最新价。
- 限价单:成交价格就是委托价格
- 市价单
成交数量确定
- 满足撮合条件时,成交量不得超过当日总成交量乘以 order_volume_ratio。
- 市价单:超出当前撮合频率的最大成交量(如日频就是当日成交量,分钟频率就是当前这一分钟的成交量)的剩余部分将撤单。
- 限价单:超出当前撮合频率的最大成交量的部分将按委托价挂单,日频收盘清算,分钟频率会继续挂单。
清算规则
- 收盘清算:清理未成交订单,返还冻结的金额和冻结的持仓
- 盘后清算:盘后会校验账户全天交易数据
手续费规则
- 印花税根据历史规则计算,按双边收取
- 支持自定义佣金比例
分红配送
支持分红、送转股,不支持配股
委托校验
支持验资、验券、验量、验价格
资金调整
暂不支持对账户资金的转入转出
挂单冻结
- 买入冻结资金(包含手续费)
- 卖出冻结持仓
- 市价买单是以涨停价冻结资金
从聚宽转移问题
关于财务函数
- 我们的财务函数用法和聚宽不一致
- 我们的单位和聚宽不一致,我们统一是元/股
关于复权
- 我们采用精确复权,聚宽采用模糊复权。计算复权的时候(以分红为例)
- 模糊复权:先计算复权因子 再乘以/除以
- 精确复权:直接 加/减
关于回测撮合:我们的回测撮合更贴近实盘
- 我们使用真实价格成交的,聚宽需要开启动态复权模式(真实价格)
- 我们的市价单只做一次撮合,不持续挂单;会对比那一分钟的成交量,超过可成交量、多的部分撤单。聚宽会全部成交,不做成交量检验
- 我们在计算市价时,会按照涨停价计算最大可买。而按照聚宽的算法算出的成交额会超过金额。导致交易数据和聚宽不一样,回测结果也就有区别
关于行情数据
- 日线上,聚宽采用history/attribute_history函数时会截止到前一天,我们的使用get_price设置end_date需要设置前一天context.previous_date
- get_price我们默认返回的是numpy格式,计算效率更高。为方便转移,需要设置df=True返回dataframe