# data-analysis：逐课讲义与练习册

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

模块：数据清洗 / 绩效指标 / 可视化与报表

## 数据清洗

### 概念
交易导出须区分订单、成交和持仓，部分成交/平仓常产生多行。清洗先保留原始文件与行号，再验证ID、时区、数量、价格和费用；0利润或负费用可能合法，不能任意删除。隐私字段应脱敏后再用于课程。

### 带数据推演
课程trades-dirty.csv包含重复成交、无效时间和缺失价格。按唯一成交ID去重并将无效行隔离，输出原因；不能把损失行当异常删除。聚合净盈亏=毛利润+带符号佣金+带符号隔夜费。

### 作业题设
运行research_lab.py清洗交易记录，输出有效/隔离/重复计数及净盈亏；保留每条隔离原因，不访问真实账号。

### 检查限制
相同时间不等于重复成交；仅以timestamp去重可能删除合法部分成交。

### 本模块课时
- m1-l1：MT 数据导出
- m1-l2：数据质量检查
- m1-l3：数据清洗练习

### m1-l1 MT 数据导出

#### 本课讲解
平台导出可能是订单、成交或已平仓统计，行的含义先于指标。部分成交、部分平仓和独立手续费会导致一单多行，不应按行数直接当交易数。

#### 操作顺序
选择所需报表→记录区间/时区/币种→保留原文件→标唯一成交与订单键→脱敏后分析。

#### 独立作业
同一订单两次部分成交，用订单ID与成交ID计数分别代表什么？

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

### m1-l2 数据质量检查

#### 本课讲解
数据质量检查包括schema、数值、时区、重复、缺失与账目平衡。发现异常时应隔离并解释，不用删除异常行让报告看起来漂亮。

#### 操作顺序
校验必需列→解析时间→去重/冲突隔离→核方向和数量→检查净额=毛额−成本→记录覆盖率。

#### 独立作业
trades-dirty.csv有重复和错误行。运行配套清洗并说明两种不应自动修复的情形。

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

### m1-l3 数据清洗练习

#### 本课讲解
数据清洗交付必须保留原始与清洗版本，能追溯每条被排除记录。计数对齐比“已经无缺失”更重要。

#### 操作顺序
运行research_lab的数据检查→另建异常表→核输入=有效+重复+隔离→给两条人工复核建议。

#### 独立作业
提交OHLCV清洗240/1/3计数，再对交易脏表记录重复键规则；为什么不能按收益金额去重？

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

## 绩效指标

### 概念
绩效指标需要净费用、明确收益频率和样本口径。最大回撤用净值运行峰值，年化夏普需要频率与无风险假设，Sortino需要下行目标；不能凭单一指标给“优质”结论。无亏损、零方差和空样本须显式处理。

### 带数据推演
净利润序列100、−50、0、150、−100，总100，正利润250、负利润绝对值150，PF=1.6667。含保本胜率40%；排保本50%。初始1,000，按该现金序列逐笔计净值，峰值1,200到1,100回撤8.3333%。

### 作业题设
运行指标计算并手算本例总利润、PF、两种胜率与最大回撤；写明账户无外部入出金的假设。

### 检查限制
夏普年化不能把每笔交易当每天而不解释；少样本不应写稳定性认证。

### 本模块课时
- m2-l1：核心指标计算
- m2-l2：指标解读
- m2-l3：指标计算实操

### m2-l1 核心指标计算

#### 本课讲解
核心指标先明确净计费与往返交易定义。胜率、平均R、PF和最大回撤需各自的输入，单个交易表未必足以得到含浮盈亏的权益回撤。

#### 操作顺序
对账净结果→分正负→算胜率/均值/PF→从权益路径算回撤→列缺失项，不强行填数。

#### 独立作业
净结果+100、−50、+50、−100USD，求胜率、均值、PF；是否能据此精确算盘中权益回撤？

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

### m2-l2 指标解读

#### 本课讲解
指标解读关注分母、估计误差和共同变化。高PF但只有两笔交易可能极不稳定，Sharpe受频率与非独立收益影响。

#### 操作顺序
先读样本量→核收益是否扣费→比较暴露/周转→看尾部/回撤→给有限结论。

#### 独立作业
甲两笔盈利PF无负分母，乙200笔PF1.2。能否以甲“无穷大”直接判更优？

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

### m2-l3 指标计算实操

#### 本课讲解
计算实操要能被独立手算复核。单位、缺值和零分母必须显式处理，不能用999或0填不可定义指标。

#### 操作顺序
给固定小样本→手算→代码算→比较容差→测试全赢、全亏、空样本→记录not_available。

#### 独立作业
空样本胜率、全赢PF应返回什么状态？另算+2R/−1R/+1R的均值。

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

## 可视化与报表

### 概念
报表应支持追溯：每个指标能回到输入、清洗规则和公式。最小报表包含净值、回撤、费用和数据质量，不只是漂亮曲线。自动流程对坏输入应明确失败，写出原始文件哈希和参数，不能默默跳过错误。

### 带数据推演
运行课程脚本将合成OHLCV和交易记录转为CSV、JSON及本地HTML报表。报表标“合成教学数据、无真实交易”，图表可用内联SVG，不依赖在线行情或远程CDN。输入改变时哈希随之变化。

### 作业题设
在离线状态生成报表，核对图上最后净值与JSON一致；故意移除必要列，确认程序报错而非输出全0成功。

### 检查限制
图表标题和图例不能将合成数据标为真实业绩，报告生成不等于通过投资审查。

### 本模块课时
- m3-l1：Dashboard 构建
- m3-l2：自动化 Pipeline
- m3-l3：绩效报表交付

### m3-l1 Dashboard 构建

#### 本课讲解
Dashboard要展示来源、更新时间与数据完整性，不能只有收益颜色。未知或过期数据须有明确状态，图表应能回溯明细。

#### 操作顺序
选择净值/回撤/费用/交易数→标时区和版本→加更新/缺失状态→本地HTML导出→核明细。

#### 独立作业
运行research_lab生成report.html，列它能展示和不能声称已接入的各两项。

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

### m3-l2 自动化 Pipeline

#### 本课讲解
自动Pipeline应在错误时停止发布新的“正常”报表，采用暂存、校验和原子替换减少半成品。幂等重跑不能重复累计交易。

#### 操作顺序
原文件→校验→清洗→指标→暂存报表→核计数/哈希→发布；失败保留上一版本并标过期。

#### 独立作业
同一导出文件重复运行两次，交易数不应翻倍。用什么键和输出方式实现？

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

### m3-l3 绩效报表交付

#### 本课讲解
绩效报表应披露是合成、模拟还是实际数据，并说明覆盖区间、费用和缺失。没有授权或身份资料无需进入作业。

#### 操作顺序
交原始说明/清洗/计算/报表/异常/限制→对账抽样→确认无密钥和个人信息→写验收结果。

#### 独立作业
交本地报告包，必须含输入哈希、净计费口径、异常去向和一项不可计算指标。

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