3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台上进行量化回测时,财务数据和估值因子的准确性至关重要。针对您提出的关于市销率(PS_TTM)计算、未来函数以及与 Wind 数据差异的问题,以下是详细的解答:
结论:只要正确使用 API,不存在未来函数。
在 JoinQuant 中,获取财务数据和估值数据通常使用 get_fundamentals(query, date) 函数。官方文档明确指出:
date 参数时,系统会查询指定日期收盘后所能看到的最近的数据。date 查询时,系统绝对不会提前使用中报的数据,而是继续使用一季报的数据。date(通常是 context.current_dt 的前一天)查询,就不会引入未来函数。TTM(Trailing Twelve Months,滚动十二个月)的计算逻辑:
TTM 数据表示的是距离查询日期最近的连续 12 个月的财务数据。其标准计算公式通常为:
本期 TTM = 本期累计数据 + 上年年报数据 - 上年同期累计数据
具体到您的场景(7月上旬,中报未出):
今年一季报营业收入 + 去年年报营业收入 - 去年一季报营业收入。这实际上代表了去年二季度到今年一季度的连续 12 个月的营业收入。今年中报营业收入 + 去年年报营业收入 - 去年中报营业收入)。JoinQuant 与 Wind 等专业金融终端在某些估值因子上存在差异是正常的,主要由以下几个底层处理逻辑的不同导致:
总结建议:
在量化回测中,逻辑的一致性和无未来函数比绝对数值与某个终端完全一致更重要。JoinQuant 的 PIT(Point in Time)架构正是为了保证回测的严谨性。如果您需要验证,可以尝试使用 get_fundamentals 提取特定日期的底层财务科目(如 operating_revenue),手动计算一次 TTM,即可清晰掌握平台的计算脉络。