Files
zhixing-system/.trellis/tasks/archive/2026-08/08-08-migrate-zhixing-b1/prd.md
T
2026-08-09 12:34:02 +08:00

4.7 KiB

迁移知行B1选股策略

Goal

在新项目中迁移旧项目的 xg_composite 选股逻辑,并将新策略名称统一为 zhixing_b1,让系统能够基于 PostgreSQL 中的历史市场数据执行可复现的知行 B1 选股。

首期采用“公式级垂直切片”:从通达信公式、指标计算、7 个子信号、信号结果、 市场数据读取到历史验证用例打通一条完整链路;不在本任务内铺开其他策略或完整 前端产品能力。

Background and confirmed facts

  • 旧项目的 xg_composite 对应通达信选股公式,包含 7 个子信号;实现位于 zgnb-project/src/zgnb/domain/strategy/xg_composite.py,公式原文位于 zgnb-project/docs/references/formulas/tongdaxin_xuangu_formula.txt。
  • 旧项目的共享指标实现位于 zgnb-project/src/zgnb/shared/xg_indicators.py, 其中包含知行线、BBI、KDJ、RSI、振幅、趋势、回踩和 7 个子信号条件。
  • 旧项目目前只返回第一个命中的 XG 子信号;本任务以公式/业务意图为准,允许 同一股票同一交易日产生多条不同分类的信号。
  • 新项目已确定 PostgreSQL 为市场数据事实源、价格使用 qfq 日线、股票池为当前 沪深非 ST A 股,并保留 6 年数据窗口。
  • 新项目当前已有 market_daily_bar、market_daily_basic 和市场数据领域端口, 但还没有策略读取端口、选股信号模型或策略 API。

Requirements

R1. 迁移策略身份

  • 新策略的业务标识为 zhixing_b1。
  • 领域逻辑不得继续依赖旧项目的 xg_composite 命名作为对外策略身份。
  • 7 个子信号保留独立分类,并可在同一股票同一交易日同时出现。

R2. 公式语义

  • 以通达信公式和已确认的 v1203 业务调整为主要依据,旧 Python 实现作为迁移 参考和差异线索。
  • 不复制旧流程中将最新市值写入全部历史 K 线、按当前日期查询历史 B1 信号等 不能支持历史重放的行为。
  • 对公式中涉及的代码板块、涨跌幅放宽系数、振幅区间、缩量、大绿棒、趋势、 回踩和 7 个子信号条件建立可测试的实现。

R3. 市场数据读取

  • 策略使用市场数据领域端口读取目标交易日之前的足够 warm-up 日线数据。
  • OHLCV 指标使用 market_daily_bar 的 qfq 价格与成交量;换手率等估值/交易 条件使用同一交易日的 market_daily_basic 快照。
  • 策略计算不得直接依赖 PostgreSQL、Pandas SQL 查询或具体 HTTP 层实现。
  • 历史选股必须显式使用 target_trade_date,不得隐式退化为“当前最后一行”。

R4. 信号结果

  • 信号至少包含股票、交易日、策略标识、子信号分类、收盘价和可解释的关键指标 详情。
  • 信号提供由“股票、交易日、策略标识、子信号分类”组成的稳定身份;不同子信号 分类不得被合并丢失,为后续持久化提供幂等依据。

R5. 验证

  • 为共享指标和每个子信号建立边界条件测试,覆盖缺数据、暖机期、除零和板块 参数差异。
  • 提供固定历史样本的策略级验证,能够判断新实现是否符合公式语义,并明确记录 与旧实现的有意差异。
  • 验证不得访问真实 Tushare、生产数据库或依赖实时网络。

Out of scope

  • bowl_rebound、b1、b1b2、brick_chart 的迁移。
  • 完整选股批次编排、自动调度、前端页面和图表生成。
  • 选股信号 PostgreSQL 表、信号持久化实现和 HTTP API。
  • 实盘交易、回测收益评价和策略参数优化。
  • 为解决本任务而改变既有市场数据同步的股票池、qfq 或六年保留契约。

Acceptance Criteria

  • 新项目存在名为 zhixing_b1 的领域策略,并能在显式目标交易日上运行。
  • 7 个子信号均有独立分类;同一股票同日多信号不会互相覆盖,并具有稳定身份。
  • 策略只通过市场数据端口获得 qfq 日线和同日交易指标,不直接耦合存储实现。
  • 公式关键分支、暖机边界、缺失值和除零场景均有自动化测试。
  • 固定历史样本验证可重复运行,并以固定 golden 结果对比新旧实现或公式差异。
  • 关键公式分支同时有人工确认案例和单元测试,golden 对比范围保持为少量固定样本。
  • 未实现其他策略、前端页面或实时数据能力,且不改变现有市场数据同步契约。

Notes

  • Keep prd.md focused on requirements, constraints, and acceptance criteria.
  • Lightweight tasks can remain PRD-only.
  • For complex tasks, add design.md for technical design and implement.md for execution planning before task.py start.