首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    批量拉取300只股票没有报错,为什么最后少了两只?

    当时股票池有300只股票。数据拉取完成后,程序没有报错。后面的因子计算也顺利结束,任务调度显示执行成功。但回头检查结果时,我发现一个不太对劲的地方。...前一天的候选名单有300只股票,第二天进入因子计算的数据却只有298只。我一开始以为是过滤条件的问题。毕竟策略本身就会剔除停牌股、无效行情和不满足流动性要求的标的。数据少两只,看起来也不是特别异常。...预期股票池有300只,实际返回的数据只有298只。而且这两只股票不是因为业务规则被剔除的。它们根本没有进入DataFrame。更麻烦的是,原来的程序只检查了返回结果是否为空。...例如,策略需要以下三只股票:600519.SH000001.SZ300750.SZ实际返回的数据却只有前两只。此时DataFrame不是空的,行数也大于零。...五、实践效果与工程避坑指南避坑点一:不要只检查行数300只股票返回300行,并不意味着300只股票都在。如果一只股票重复出现两次,另一只股票缺失,行数仍然相同。应该同时检查:预期标的数量。

    19110

    记一次有意思的 SQL 实现 → 分组后取每组的第一条记录

    我:滚,我不认识你 需求背景   环境 MySQL 版本:8.0.27   有四张表:业务信息表、任务表、业务任务表、任务执行日志表 CREATE TABLE `t_business` ( `...这里也就对应了文章的标题:分组后取每组的第 1 条记录     实现方式其实有很多,我这里提供一种,如下     结合索引 idx_status_task_date_modify(exec_status...总结   1、大家写 SQL 的时候,一定要多结合执行计划来写 神奇的 SQL 之 MySQL 执行计划 → EXPLAIN,让我们了解 SQL 的执行过程!   ...,多和需求方沟通     多和同事沟通,集思广益,说不定就找到合适的解决方案了     多和需求方沟通,多谈谈个人的见解,也许需求改动一丢丢,但我们实现却容易很多   4、留疑     1、分组后如何取前...N 条     2、分组后如何取倒数 N 条

    2.9K40

    量化回测数据准备:批量拉取300只股票,最怕的不是报错,而是少返回两只

    本文从批量拉取历史行情的实际问题出发,梳理标的集合校验、字段检查和数据质量审计的实现方式,建立一套能够在回测启动前发现问题的标准化数据准备流程。...假设请求三只股票,每只股票理论上有20个交易日的数据。预期行数是60。但实际结果可能是:第一只股票返回20行。第二只股票返回20行。第三只股票只返回10行。第一只股票又因为重复记录多出10行。...示例以三只不同交易所的股票为例,拉取日线数据,并检查返回结果中的关键字段、标的集合和重复记录。需要注意,代码不会假定所有股票都必须具有相同的行数。...因为重复行情可能来自分页重叠、重复写入或数据源异常,直接保留第一条会掩盖问题。第四,价格和成交量校验只是基础检查。生产环境还需要检查价格关系、极端跳变、交易日历和上市日期。...300只标的返回299只时,应该明确知道少了哪一只,而不是只记录一个总行数。避坑点二:不要用固定行数判断所有股票的数据质量股票的上市时间、停牌状态和交易市场都可能不同。

    23310
    领券