chore(task): 归档已完成任务
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# 迁移知行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`.
|
||||
Reference in New Issue
Block a user