# python-quant：参考解答

用于自查，不是自动批改、真人反馈、能力认证或业务批准。

## Python 金融数据处理

输出应保留唯一且递增的UTC时间，清洗报告记录重复、无效OHLC与缺失值数量。三点小例收益2%、−0.980392%；SMA2=101、101.5。复现实验以随包expected-results.json为准，不以盈利作通过门槛。

常见错误：df.shift(-1)可用于事后标签但不能进入特征；不要把缺失的首个收益填成可训练的有效样本。

### m1-l1 Pandas 基础

题设：运行pandas_lab.py，另用三行close=100/102/101写出行数、首个收益缺失原因和最后SMA2。

参考结果与判定标准：三行；首行没有前一收盘而缺失；最后SMA2=(102+101)/2=101.5。完整数据应240有效、1重复、3隔离，不能把缺值都填0。

### m1-l2 OHLCV 特征工程

题设：close为100/102/101，求两项有效收益；说明shift(-1)放入观察特征为什么危险。

参考结果与判定标准：2%与约−0.980392%；shift(-1)将未来行移到当前，可用于事后标签但不能当当时已知特征。小数收益与百分数要区分。

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

题设：复现240有效、1重复、3隔离；解释若同时间两行内容不同，为什么不能随便留最后一行。

参考结果与判定标准：冲突重复需核来源和版本，可隔离而非任意覆盖；计数应覆盖每条输入。补零或回填未来价格会制造行情，不能作为修复。

## Backtrader 策略开发

成交时间晚于信号数据可用时间；报告包含broker最终净值、交易日志和开放仓位。不能把未平仓浮盈遗漏或把默认股票式佣金模型当真实外汇保证金模型；脚本是无杠杆教学模拟。

常见错误：不要开启cheat-on-close后仍声称采用默认下一开盘执行；不同撮合约定的回测结果不可直接等同。

### m2-l1 Backtrader 架构

题设：执行backtrader_lab.py，列10次订单事件与期末权益，并解释期末还有持仓时权益与已实现利润的差别。

参考结果与判定标准：固定输入权益约10082.3499777、10次事件；权益包含开放持仓的期末估值，不全是已实现利润。模型是现金教学，不模拟外汇保证金。

### m2-l2 订单与仓位管理

题设：本根发送买入后下根尚未确认，策略再次看到信号，是否应重复买？设计最小状态表。

参考结果与判定标准：不应无条件重复；用无请求/在途/已成交/失败状态区分。信号同向不等于还需加仓，数量应基于实际持仓与目标差。

### m2-l3 SMA 策略回测

题设：对固定合成输入比较research_lab和Backtrader；允许1e−6浮点差，写二者共同未覆盖的三项。

参考结果与判定标准：权益应在容差内相同；未覆盖真实盘口、外汇保证金/隔夜费和延迟拒单等。结果吻合证明相同假设下实现一致，不证明真实盈利。

## 本地研究引擎与接口边界

本地相同输入和参数应产生相同摘要；固定费用模型、无真实订单、无真实数据或资金。交付必须说明这只是研究原型，不能宣称已部署到天驭生产引擎或获得导师批改。

常见错误：密钥不放浏览器端或notebook输出；离线成功也不证明真实平台连接与成交成功。

### m3-l1 本地数据适配器与API边界

题设：为timestamp/open/high/low/close/volume写最小约束，说明缺close和过期时间应该如何处理。

参考结果与判定标准：缺列拒绝；时间可解析且按UTC、OHLC有效、数值有限、volume非负；过期输入标记并暂停相关请求，不用上次价冒充新报价。

### m3-l2 首个完整策略

题设：画七步流程图，标注每步消费的时间戳；说明为何把训练标签与信号放同一表仍需防泄漏。

参考结果与判定标准：流程应先特征后信号再未来执行；同一表中未来标签必须明确隔离，只在评估时读取。列存在不代表当时可用。

### m3-l3 量化项目交付

题设：提交可复现材料清单与运行结果摘要，包含至少一次错误输入被拒绝的证据。

参考结果与判定标准：必须有命令、数据哈希、参数、清洗计数、订单与成本、错误原因及限制。缺依赖或未运行要注明，不能用文件存在代替运行。
