# backtest-deploy：逐课讲义与练习册

版本 content-v2；每课有独立讲解、操作、题设和答案。全部数值/规则为合成教学假设，不代表官方服务或真实业绩。允许本地纸面完成，不要求开户、入金或真实交易。

模块：回测框架 / Forward Test / 实盘部署

## 回测框架

### 概念
回测是带假设的模拟。偏差可来自未来数据、幸存样本、历史修订、成交模型和遗漏成本。明确在什么时刻知道信号、下一次能在哪个价格执行，再确定数据列。K线内先触SL还是TP通常无法仅凭OHLC判断，应保守处理或用更细数据。

### 带数据推演
收盘100给信号，下期开盘103；回测按100成交相当于利用不可得价格。若同一根H=110、L=90，订单SL95/TP105都被覆盖，未知触发先后，不能自动计获利。

### 作业题设
为课程研究脚本写执行假设卡，标明信号滞后、成本、同bar冲突处理；把收盘撮合与下一开盘撮合作为不同模型比较。

### 检查限制
样本更长不会消除系统性未来泄漏；合成数据只用于验算，不证明策略有效。

### 本模块课时
- m1-l1：回测偏差防范
- m1-l2：回测指标解读
- m1-l3：回测报告撰写

### m1-l1 回测偏差防范

#### 本课讲解
回测偏差包括未来信息、幸存者、样本选择、数据修订和不现实撮合。只有价格曲线与最终收益无法排除这些问题。

#### 操作顺序
列数据版本→核可用时间→检查特征/标签隔离→验证收盘信号后执行→保留费用/失败订单。

#### 独立作业
以当日收盘决定买入并假设按同一收盘价无延迟成交，指出偏差及可复现实验替代。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m1-l2 回测指标解读

#### 本课讲解
收益、波动、Sharpe、回撤与周转分别描述不同面向。年化必须给频率与样本长度；短样本年化不是全年实际业绩。

#### 操作顺序
对账权益→确认现金流→列净收益/回撤/费用/交易数→检查年化周期→展示未年化原值。

#### 独立作业
初始10000、末值10300、期间费用已扣，求期间收益；是否直接称年收益3%？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m1-l3 回测报告撰写

#### 本课讲解
回测报告须能复现且包含失败结论。只摘最优参数会掩盖探索过程，缺成本模型的收益应明确毛收益而非净业绩。

#### 操作顺序
整理输入哈希/版本/参数→给撮合和费用→核指标→展示样本分界→列压力与未覆盖项。

#### 独立作业
交报告目录与一条“未通过”示例，说明何时不能继续部署研究。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

## Forward Test

### 概念
Walk-forward训练窗口在前、验证在后，标签跨界需隔离。Forward test是在规则冻结后新增数据上的观察；旧历史重新跑不能称实时前向验证。记录代码哈希、参数、开始时间和所有失败事件。

### 带数据推演
训练第1–60行、验证61–80行，若标签使用未来5行，训练末尾标签会用到61–65，必须清除跨界标签或留gap。原始记录时间与标签终点都应小于验证起点。

### 作业题设
给1–60训练、61–80验证、标签跨度5的方案标出需隔离的训练样本；写一份无真实交易的前向观察日志模板。

### 检查限制
不要把看过的验证段重新称“未见数据”；滚动过程仍须记录所有窗口而非只报最佳。

### 本模块课时
- m2-l1：Walk-Forward 验证
- m2-l2：模拟盘 Forward Test
- m2-l3：Forward Test 记录

### m2-l1 Walk-Forward 验证

#### 本课讲解
Walk-Forward的每折必须只用过去选参，测试段之间不能被重复计分。滚动训练段可以重叠，但组合评估只拼独立未来结果。

#### 操作顺序
写每折训练/间隔/测试→冻结参数→输出每折样本数和净结果→排除训练收益→检查标签跨界。

#### 独立作业
两折测试61–80和71–90能否直接拼成40条独立测试？应如何处理重叠？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m2-l2 模拟盘 Forward Test

#### 本课讲解
Forward Test指冻结策略后在后续数据观察。仅把历史留出段叫forward可以，但必须明确是历史时序留出，不冒充真实模拟终端长期运行。

#### 操作顺序
冻结版本/开始日→后续只记录不调参→注明纸面或终端模式→核信号/执行差异→到期复核。

#### 独立作业
今天在固定CSV最后20行测试，能否写“模拟盘已连续运行20天”？怎样准确标记？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m2-l3 Forward Test 记录

#### 本课讲解
Forward记录需要时间戳、版本、信号、理论执行、实际或模拟回执及异常。缺报价时不应复制上一条并称观察成功。

#### 操作顺序
按固定频率记录→对账所有请求→标未触发/拒绝/未知→保留中断时间→不在期间覆盖策略版本。

#### 独立作业
一次预定观察缺数据但系统沿用旧价产生信号，记录应怎样标注？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

## 实盘部署

### 概念
部署是工程交付，不等于把研究脚本连到真实账户。先在离线或模拟环境验证数据新鲜度、数量上限、幂等、未知订单状态、日志、告警和停机。上线决策需具体平台契约与责任人，本课不声称已接入生产。

### 带数据推演
同一信号ID S001因网络超时重试两次，应只形成一个逻辑订单。若订单回报未知，先查询而非盲重发。kill switch触发后阻止新单，还需明确挂单与现有仓位的处置，不能认为一个布尔值能完成全部风险操作。

### 作业题设
用research_lab.py离线风险演练输出停新单记录，制作部署文档：版本、输入、阈值、告警、回滚、责任和恢复。对S001重复提交给出幂等规则。

### 检查限制
禁止把模拟成功标成真实API连通；重试必须有次数上限和人工处理分支。

### 本模块课时
- m3-l1：部署 Checklist
- m3-l2：实盘监控
- m3-l3：部署方案文档

### m3-l1 部署 Checklist

#### 本课讲解
部署Checklist应作为门禁：数据、因果、风险、回滚、监测任一关键项无证据就阻断。本课程的离线通过不等于生产系统就绪。

#### 操作顺序
列每项责任人/证据/状态→分硬阻断与待观察→演练错误输入与停止→保存版本和回滚点。

#### 独立作业
策略测试通过但Kill Switch从未演练，是否满足部署门禁？补什么证据？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m3-l2 实盘监控

#### 本课讲解
监控对象既包括结果也包括运行质量：数据新鲜度、请求积压、订单未知、风险暴露和资源故障。绿色页面不是全部链路健康证明。

#### 操作顺序
为每指标定单位/来源/更新时间→设置失效状态→记录告警→确定响应及恢复，不让未知显示正常。

#### 独立作业
Dashboard能打开但报价最后更新在10分钟前，风险检查应显示正常还是失效？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m3-l3 部署方案文档

#### 本课讲解
部署方案文档应准确区分已实现、已演练和未来计划。外部账户、审批、权限和服务没有接入时必须写未接入。

#### 操作顺序
交架构/环境/依赖→门禁证据→监测/停机/回滚→责任分工→限制，禁止填写密钥到文档。

#### 独立作业
给本课程离线研究写部署结论，明确至少三项尚未验证。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。
