交易管道核心规格与回测前视审计
一句话定位:这份技能让你(或任何 AI)当场判断一段交易逻辑是不是在骗自己,
并给出一套可复用的交易管道骨架。
> ★ 本技能策略无关、项目无关、可直接对外分享。
> 它不含任何选股模型、因子、阈值、绩效数字或持仓 —— 那些属于具体策略,不属于这里。
一、什么时候用(意图 → 动作)
| 用户意图 | 动作 |
|---|---|
| 「这段回测代码有没有前视 / 未来函数」 | 跑 scripts/lookahead_lint.py <文件> |
| 「我的回测年化很高,实盘却亏」 | 先 lint,再按 §2.5/§2.6 逐条核对 |
| 「今天买能看到明天的价格吗」 | 读 references/TRADING_PIPELINE.md §2.1 时点可知性矩阵 |
| 「出入场/止损怎么定才不算作弊」 | 同上 §2.3 买入 / §2.4 退出树 |
| 「数据要哪些、怎么保证不过期」 | 同上 §3 数据依赖接口;read_pipeline.py --data |
| 「信号怎么推到手机 / 定时怎么排」 | 同上 §4;read_pipeline.py --push / --schedule |
| 「我要搭一套新的交易管道」 | 以 references/ 为骨架,逐节落地 |
| 「这份规格改了没同步」 | scripts/read_pipeline.py --check |
| 「我要把规格对外分享」 | scripts/read_pipeline.py --sanitize(分享前必跑) |
| 「免费版 / 付费版有什么区别」 | scripts/tier_matrix.py;或读 TIERS.md |
二、四个入口(先选入口,再看细节)
入口 1:审计一段代码(最高频、最值钱)
P=python3 # 或任意 python3
$P scripts/lookahead_lint.py path/to/backtest.py
$P scripts/lookahead_lint.py path/to/backtest.py --json # 机器可读
$P scripts/lookahead_lint.py --demo # 验证工具本身(先跑这个)
- HARD = 确定前视,出现即
exit 1,回测结论直接作废。 - 输出含行号、命中的代码、原因、改法。把输出原样给用户看,比转述有效。
入口 2:查规则(人读)
读 references/TRADING_PIPELINE.md(自包含,8 章):
§0 怎么读 · §1 交易全时序 · §2 交易必要规则(核心) · §3 数据依赖接口 · §4 推送与定时 · §5 链路纪律 · §6 自检 · §7 总结
入口 3:给代码读(机器读)
$P scripts/read_pipeline.py --list # 全貌
$P scripts/read_pipeline.py --rules # ★交易必要规则全文
$P scripts/read_pipeline.py --knowability # 只看「09:25 什么已知/未知」
$P scripts/read_pipeline.py --data # 数据契约清单
$P scripts/read_pipeline.py --push # 推送契约
$P scripts/read_pipeline.py --schedule # 定时任务表
$P scripts/read_pipeline.py --stage signal # 取单个环节
$P scripts/read_pipeline.py --check # 规格两份副本是否同步
$P scripts/read_pipeline.py --sanitize # 分享前脱敏自检
$P scripts/read_pipeline.py --dump # 整份 JSON
或直接 json.load(open("references/pipeline.json")) —— schema trading-pipeline-core/v1。
入口 4:看档位
$P scripts/tier_matrix.py # 两档位对照表
$P scripts/tier_matrix.py --about free # 某档位的范围
$P scripts/tier_matrix.py --check --tier free # ★校验包内容与档位相符
三、规格里最该记住的六条
- 今天 09:25 买,就只看得见「昨天的收盘 + 今天的开盘价」。
明天的价格今天不存在。任何用到未来价格的判定都是前视。 - 特征一律
shift 1(D−1 收盘口径)。 用close[入场日]会让回测数量级虚高。 - 判涨停用精确价
round(昨收 × (1 + lr), 2),不用近似chg ≥ lr − 0.006(有可观误判率)。 max/min(互斥的两个价)必须先问:两价在该分支是否都真实存在。
单此一项曾让回测「从数量级虚高」修正为「负收益」。- 数据坏了要说「数据坏了」,不能说「今天没机会」。 缺失语义必须显式三分
(正常 / 环境真冷 / 数据故障),fail-safe不许伪装成空仓。 - 每个数据都必须有明确的生产者。 没有生产者 = 一条必然停更的链路。
四、用法纪律(很重要,别跳过)
- 先跑
--demo再信lookahead_lint.py。 工具自带正向+反向自检;
一个天天误报的检查器会被忽略,而被忽略的检查器比没有更糟。 --sanitize是分享前的硬闸。 本技能不含内部标识;若你把项目细节加进来,
必须重跑--sanitize(可加--blacklist <文件>外挂一份更强的清单)。- 不要在本技能目录里复制外部规格。 规格有两份等价副本(MD / JSON)已经够难同步;
再加第三份必然漂移。引用它,不要抄它。 - HARD 命中时不要"再看看"。 前视没有"影响不大"这一档 —— 它让结论整体不可用。
- 审计结论要连行号一起给用户。 「某处疑似前视」没有价值,「L42 用了
shift(-1),改成iloc[-1]」才有。
五、目录结构
trading-pipeline-core/
├── SKILL.md ← 本文件
├── README.md ← 给人类读者的包说明
├── TIERS.md ← 两档位对照表(由 tier_matrix.py 渲染)
├── VERSION ← 版本号
├── LICENSE.txt ← 授权与分发说明
├── install.sh ← 一键安装到 skills 目录(支持 --tier)
├── build.sh ← 一键打成 zip(支持 --tier free|pro|both)
├── examples/
│ ├── bad_backtest.py ← 故意踩坑的示例(lint 应有 3 HARD)
│ └── good_backtest.py ← 合规写法对照(lint 应 0/0)
├── references/
│ ├── TRADING_PIPELINE.md ← 人读主规格(自包含 8 章)
│ ├── pipeline.json ← 机器读副本
│ ├── CONSUME.md ← 消费指南(三种读法 + 边界)
│ ├── tiers.json ← ★档位差异的唯一真相
│ └── sanitize_blacklist.example.txt← 脱敏黑名单模板(把自己的内部词填进去)
└── scripts/
├── read_pipeline.py ← 读取器 + 同步自检 + 脱敏自检
├── lookahead_lint.py ← ★前视 / 不可成交静态检查器
└── tier_matrix.py ← 档位矩阵 + 构建完整性校验
六、边界(本技能不做什么)
- ❌ 不提供任何选股信号、因子、阈值、仓位建议。
- ❌ 不预测涨跌、不评价某只标的。
- ✅ 只做两件事:给出规则、检查你的代码有没有违反规则。
> 所有输出均为工程研究内容,不构成投资建议。