# 学院逐课教学与离线实验材料 content-v2

目录沿用 content-v1 以保持原下载链接；本轮内容版本为 content-v2。每门课程的练习册现在包含9个课时各自的讲解、操作、独立作业，答案册按相同课时ID提供参考与判定标准。模块共用案例被明确标注，不代替独立课时。

建议下载 academy-materials.zip 并解压，避免漏下 requirements.txt 或配套文件。数据和程序放在同一文件夹即可按下列步骤运行。仅有手机时可完成纸面计算与阅读；Python、PyTorch和MetaEditor实验需相应电脑环境，不能在手机网页自动训练或编译。

所有行情、账户、信号及规则是合成/虚构教学输入，不是真实历史、实时行情、官方业务条款或投资建议。脚本不联网、不接收密钥、不发送订单。允许修改、复制这些原创教学示例用于学习，第三方库遵循其各自许可。

## 最小实验（Python 3.10+，无第三方依赖）

把 research_lab.py、ohlcv-synthetic.csv、ohlcv-dirty.csv、trades-dirty.csv 下载到同一文件夹，在该目录运行：

```shell
python research_lab.py --self-test
python research_lab.py --output academy-results
```

生成 equity.csv、report.json、report.html。固定输入预期结果见 expected-results.json；按浮点容差比较，而不是要求不同软件逐位完全相同。report.json包含输入SHA256、参数、成本、开放仓位与清洗结果。report.html可本地浏览，不依赖CDN。

执行假设：上一根已收盘K线计算SMA，下一根开盘调整固定1000单位的现金头寸；每边1bp费用。没有外汇保证金、隔夜费、盘口、止损单或真实成交模型，不能据此部署资金。合成路径不用于证明策略优势。

## Pandas、Backtrader与随机森林

Python 3.12验收，建议独立虚拟环境；不要改网站node_modules。

```shell
python -m venv .venv
# Windows PowerShell，可不用激活，直接指定解释器：
.venv/Scripts/python -m pip install -r requirements.txt
.venv/Scripts/python pandas_lab.py
.venv/Scripts/python backtrader_lab.py
.venv/Scripts/python ml_lab.py
```

Pandas清洗计数应为240有效、1重复、3隔离，首个收益及前两个SMA3为缺失。周OHLC用first/max/min/last/sum，不能简单平均。数据是UTC日频，不宣称为EUR/USD一年H1历史。

Backtrader采用默认下一开盘市价单撮合，无cheat-on-close；1bp股票式比例佣金只是现金教学模型，不冒充真实外汇合约。输出backtrader-results/report.json。开放仓位按期末价格估值，不当成已实现利润。

随机森林按时间拆分，训练标签终点早于测试起点；不会保证优于多数类基线，负结果是有效实验。ml-results/metrics.json记录样本量、准确率、precision、recall和AUC（仅双类别时）。不把分类准确率当交易收益。

## LSTM扩展

把ml_lab.py、lstm_lab.py及合成CSV放在同目录。需额外安装PyTorch；若无法安装，明确写“未运行”，不可将源码存在标成训练通过。

```shell
.venv/Scripts/python -m pip install torch==2.6.0 --index-url https://download.pytorch.org/whl/cpu
.venv/Scripts/python lstm_lab.py
```

使用训练集拟合尺度，在训练和测试内分别构造20步窗口，3特征、hidden8，CPU训练8轮。输出lstm-results/metrics.json，目标是核验形状、因果切分和训练流程，不预测实际价格。

## MQL5

AcademySmaSignal.mq5仅记录已收盘bar的SMA状态，不调用OrderSend/CTrade。不需要允许真实交易。必须在自己的MT5 MetaEditor编译并记录版本与日志；网页提供文件不等于已在终端验证。此文件不是可下单EA，也不是天驭官方生产引擎。

## 专项小实验（无第三方依赖）

```shell
python strategy_labs.py --output strategy-results
```

输出report.json，包括：带并列秩处理的因子秩相关；8折不重叠测试与标签间隔；合成网格库存的现金/权益及上限拒绝；给定协方差的组合波动与风险贡献；nearest-rank VaR与最坏k项均值ES；逐点回撤；NaN、负数、过期报价、聚合超限和订单未知的拒绝原因。内含算术、边界和异常断言。

网格只演示下穿买入、无卖出、无杠杆，按实际观察到的合成价格而不是想象的水平价成交；它不实现完整动态网格EA。组合部分不是通用Risk Parity求解器，Walk-Forward部分生成无泄漏折而不是自动训练所有策略。实验覆盖具体概念，未覆盖的任务用本课题设纸面完成并标注。

## 学习验收方式

按课时ID定位题设，先独立保存算式/表格/日志或代码输出，再对答案册核对：关键数值和单位、时间与版本、拒绝/未知情景、未运行项。答错应保留差异并重做；网页勾选与20字记录只表示自评，不验证答案正确或发放资格。不存在真实导师自动批改、真实资本配置或申请受理。

随机森林脚本没有训练XGBoost；两者差异在课内讲解，未运行的模型不可填造指标。英文仍为旧版，本材料是中文教学版；正式法律/计划条件须另核当期文件，虚构规则不得用于现实申请。

## 作业与参考

每门课有独立的 *-workbook.md 和 *-answers.md，按模块给题设、交付物和口径。可在本地用Markdown/表格完成，网页自评不会上传文件或自动批改。未开通真人导师、认证或资本服务不能写成“已提交并获批”。

## 排障

- ModuleNotFoundError：确认安装依赖和执行脚本用的是同一解释器；无依赖实验仍可用。
- FileNotFoundError：数据与脚本放同目录，不将网页下载链接当本机路径。
- 缺列或数据无效：保留错误并修输入，不填0伪造成功。
- Windows激活策略阻止：直接使用 `.venv/Scripts/python`，不要降低系统安全策略。
- 数值差异：先核对版本、费用、撮合、时区、输入哈希及分位算法，不能改预期值掩盖问题。

官方参考：
- https://pandas.pydata.org/docs/getting_started/
- https://www.backtrader.com/docu/order-creation-execution/order-creation-execution/
- https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html
- https://docs.pytorch.org/docs/stable/generated/torch.nn.LSTM.html
- https://www.mql5.com/en/docs
- https://www.metatrader5.com/en/terminal/help/indicators/oscillators/rsi
- https://www.metatrader5.com/en/terminal/help/indicators/oscillators/macd
- https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins/foreign
- https://www.bis.org/statistics/rpfx25_fx.htm

这些链接分别用于核对软件/指标定义、时间序列工程与风险边界；不为课程的合成收益、虚构资格或服务权益背书。原创题设与参考算式单独列出，不能把引用某一机构误写成该机构认证课程。
