Files
2026-07-14 23:00:29 +08:00

342 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 准备工作
> 最新书稿已更新至 [XQuant 量化课堂页](https://xquant.shop/courses)。
> 想阅读最新版官方书稿,请前往图书页。
前言讲完了学习地图,这一章先把工作台搭起来。你要做两件事:第一,把 AI 编程工具和 Python 环境准备好;第二,用“装环境”这件事,完整练一次写 spec。
这一章先不要求你学会编程,也不要求你记住每一条命令。你只需要了解:把任务说明白是你的工作;让 AI 按说明执行;拿到结果后再检查对不对。本章会提供检查工具,帮你判断环境是否真的准备好了。准备工作做好了,从第 1 章开始,我们就可以直接跑量化实验。
## 先认识要用的工具
做量化实验需要的工具并不多。入门阶段先认识三类就够了:数据源、编程环境、AI 编程工具。先把这三类说清楚,后面安装时你就知道每一步在准备什么。
### 数据源:策略的原材料
数据是量化策略实验的原材料。没有历史价格、成交量这些基础数据,就没有根据提出策略,也无法检验策略是否有效。本书主要用两个免费数据源,如表 II-1 所示。
**表 II-1 本书使用的数据源**
| 数据源 | 覆盖范围 | 费用 |
|--------|----------|------|
| **akshare** | A 股为主,数据全、更新快 | 免费 |
| **yfinance** | 全球股票,接口简单 | 免费 |
你不需要提前下载一大包数据文件。后面运行代码时,程序会自己从网上获取数据。数据很重要:没有数据做不了实验;数据错了、缺失了、处理得不对,都会影响结论,进而影响最终判断。
数据中的问题有非常多细节,略举几例,暂时听不懂没关系,比如复权、停牌、幸存者偏差,后面遇到真实实验时再讲。
### 编程环境:跑代码的工作台
有了数据,还需要一个能运行程序的环境。程序写好了,要让它自动执行,需要安装一些“看不见”的软件,这在编程里叫“环境”。你可以把环境理解成厨房:数据是食材,环境是锅、灶、刀具和调料。没有这些东西,有食材也做不出饭。
我们需要的环境,是运行 Python 程序的一组工具,比如 Python 解释器、Jupyter Notebook 等。你不用先记住这些名字,后面我们会让 AI 帮你把它们装好。你不需要 GPU、云服务器或数据库,一台普通电脑就够了,操作系统是 Windows、macOS 或 Linux 都可以。
本书用到的基础环境如表 II-2 所示。
**表 II-2 本书使用的编程环境**
| 工具 | 用途 |
|------|------|
| **Python 3.12** | 运行代码的语言 |
| **Jupyter Notebook** | 边写边看结果的交互式环境 |
| **常用库** | pandas、NumPy、Matplotlib 等现成工具 |
表里的“库”,可以理解为别人已经写好的工具包。比如 pandas 负责处理表格数据,Matplotlib 负责画图。你不需要详细学习这些工具,只要把它们装好,AI 懂得用就行。
第 2 章起,本书还会用到一个叫 **open-xquant** 的开源量化框架,它是我们自己专门为 AI 写的一个框架,等到第 2 章正式介绍它。这一章只负责把它先装进环境里。
### AI 编程工具:把 spec 变成代码
前言里说过,你不需要先学会编程再学量化,但你必须学会把策略描述清楚,把它写成策略规格说明书,简称 spec。AI 编程工具的作用,就是把你写清楚的 spec 翻译成 Python 代码,再帮你运行和修改。
主流 AI 编程工具不少,如表 II-3 所示。
**表 II-3 主流 AI 编程工具对比**
| 工具 | 简介 |
|------|------|
| VS Code + Copilot | 老牌编辑器,加装 AI 插件 |
| Cursor | 使用广泛的 AI 编程工具 |
| Claude Code | Anthropic 出品的 AI 编程工具 |
| Codex | OpenAI 出品,专业开发者常用 |
| OpenCode/OpenClaw | 开源的 AI 编程工具 |
| TRAE | 字节跳动出品,AI-first 设计,中文界面 |
这里要区分两个容易混淆的概念:编程工具和编程模型。表 II-3 里的都是编程工具,是你直接操作的界面;编程模型则是工具背后的能力来源。很多编程工具都可以切换或配置不同模型。具体哪个模型更适合写代码,会随着产品迭代不断变化,你不需要在这里记住某个固定名单。
本书以 TRAE 为演示工具,原因很简单:中文界面、上手门槛低、SOLO 模式围绕“和 AI 对话”设计。对零基础读者来说,这比先学一个复杂编辑器更友好。TRAE 还在不断迭代,也许你看到这本书时,产品界面已经不一样了,我相信,这些 AI 编程工具只会越来越容易使用,而不是越来越难。
如果你已经有自己熟悉的 AI 编程工具,我鼓励你继续使用自己的工具,因为本书并不是教你学会一个静态的工具,而是学会一种思维模式。后面的关键不是某个按钮在哪里,也不是要记住某个具体命令,而是学会使用 AI 来实现自己的投资想法、检验自己的投资想法,这比学习工具本身重要得多。
本书截图主要覆盖 macOS 和 Windows。如果你使用 Linux,书中的思路仍然适用,但个别安装命令、界面位置和系统权限提示可能需要按你的发行版调整。
接下来的安装顺序会和上面的介绍略有不同:我们先装 AI 编程工具 TRAE,再让 TRAE 帮你装 Python 环境和这些库。这样做的目的,是让 AI 从第一步开始就参与进来。
## 安装并设置 TRAE
我们这一步只做三件事:下载并安装 TRAE,切到适合本书的 SOLO 模式,再打开一个学习目录。
### 下载并安装 TRAE
访问 TRAE 官网 `trae.cn``trae.ai`,根据你的操作系统下载安装包。下载页面如图 II-1 所示。
![TRAE 官网下载页面](images/getting-started/trae-download-page.png)
下载完成后运行安装包。Windows 用户按安装向导提示继续,安装界面如图 II-2 所示;macOS 用户把 TRAE 拖入应用程序,安装界面如图 II-3 所示。
![TRAE Windows 安装向导](images/getting-started/trae-install-wizard-windows.png)
![TRAE macOS 安装向导](images/getting-started/trae-install-wizard-mac.png)
### 切到 SOLO 模式
安装完成后打开 TRAE。默认界面可能是 IDE 模式,如图 II-4 所示;本书使用的是 SOLO 模式,它更像“和 AI 一起完成任务”的工作台。
![TRAE 默认的 IDE 模式界面](images/getting-started/trae-main-interface-ide.png)
切到 SOLO 模式后,界面会变成图 II-5 这样。你最需要关注的是下方的 AI 对话框:后面所有 spec 都会粘贴到这里,让 AI 执行。
![TRAE SOLO 模式界面](images/getting-started/trae-main-interface.png)
### 选择编程模型
TRAE 已经内置了多个编程模型,入门阶段直接使用内置模型即可,不需要一开始就购买或配置额外模型。模型选择界面如图 II-6 所示。
![TRAE 内置的编程模型](images/getting-started/trae-model-selection.png)
如果你已经有某个模型厂商的 API Key,也可以把它配置到所选的编程工具中。例如,你在 DeepSeek 的 API 平台购买了额度,就可以在后台创建 API Key,再填入 TRAE 的自定义模型配置。TRAE 的自定义模型配置界面如图 II-7 所示。
![TRAE 自定义模型](images/getting-started/trae-model-provider.png)
这里要搞清楚订阅账号和 API 账号的区别。ChatGPT Plus、Claude Max 这类订阅账号,通常是给用户本人在官方产品里直接使用的,不能直接填进“API Key”输入框。AI 编程工具如果要调用外部模型,通常需要 API 账号生成的 API Key;也有一些工具会提供官方登录或订阅集成,具体以工具自己的说明为准。入门阶段先用 TRAE 内置模型即可,后面确实需要更换模型时,再理解 API Key 也不迟。
### 创建并打开学习目录
在电脑上新建一个文件夹,作为本书的学习目录。建议使用英文路径,比如桌面上的 `xquant-learning` 文件夹,避免中文路径、空格或特殊符号带来额外问题。
然后在 TRAE 中打开它:菜单 → 文件 → 打开文件夹 → 选择 `xquant-learning`。操作过程如图 II-8 所示。
![在 TRAE 中打开 xquant-learning 文件夹](images/getting-started/trae-open-folder.png)
打开后,你会在左侧文件管理器中看到 `xquant-learning` 这个文件夹。现在它还是空的,下一步 AI 会帮你把需要的环境和文件创建出来。
## 让 TRAE 帮你搭建环境
到这一步,AI 编程工具准备好了,但 Python 环境还没准备好。我们的目标是把环境搭建好:装好 Python 3.12,装好本书要用的 7 个库,并用一个检查脚本确认环境真的可用。
最直接的想法,是告诉 TRAE:“给我装一下 Python 环境。”
这样不够。这里先约定一下:后面为了行文简洁,我们会把 AI 编程工具简称为 AI。它不知道你要哪个 Python 版本,用什么工具装,要装哪些库,也不知道怎样才算装对。你可能也不知道这些细节,这很正常;刚开始我会帮你把它们写清楚。
前言里讲过,spec 本身泛指一切要交给 AI 执行的任务说明书。这一章,这个任务就是搭建环境,以后的内容就专门指策略规格说明书了。本章的 spec 要说清楚的是:做什么、怎么做、做到什么程度算成功。
这份完整 spec 已经放在配套仓库里。你可以直接复制运行,但我们也从现在就在这个例子中看懂它为什么这样写。下面我们先看骨架,再一段段拆解。
### 写安装 spec
我们可以先想象一下,如果有人给我们布置一项任务,那么我们希望他怎么描述这项任务,才能让我们一次搞定的概率最高?同样的,我们把 AI 也看做一个人,一份能让 AI 高概率一次性完成的 spec,通常要回答四个问题:
> 📌 **spec 的四段骨架**
>
> 1. **上下文** —— 所有跟这个任务有关的信息、背景知识。
>
> 2. **任务描述** —— 任务具体要做什么,具体而明确。
>
> 3. **任务要求** —— 任务要遵守的规范,满足的约束,遵循的原则等。
>
> 4. **验收标准** —— 任务完成时要交付的清单,要满足的标准,清晰可检验。
注意第四段“验收标准”不是让你提前知道运行结果,而是先把成功标准写清楚。以这次环境搭建为例,“看到 `11/11 全部通过`,并且有 `.venv/``check_env.py`”,这就比“装好了”清楚得多。
下面四段都以 macOS 为例。Windows 用户不用担心,这次要搭建的环境是跨平台的,而且 spec 的四段骨架完全相同,只需要在上下文中把 macOS 换成 Windows,把 mac 命令换成 PowerShell 命令即可。具体对应关系已经写在 `specs/spec-01-env-setup-windows.md` 里。
#### 第一段:上下文
上下文段告诉 AI:现在是什么状态。我们刚装好 TRAE,打开了一个空目录,Python 和课程要用的库都还没装。这一段可以这样写:
> **上下文**:我刚在 TRAE 中打开了一个空目录作为量化课程学习实践的根目录。本机是 macOS,尚未安装 Python 或课程要用的库。这是课程的第一份 spec,后续 spec 都依赖这一份装出的环境。
> 📌 **要点 1:能一句话说清,就不要写两句**
>
> AI 关注的是指令,不是字数。写得越啰嗦,关键要求越容易被淹没。写 spec 的过程,本质上是在删掉多余的话,只保留真正重要的信息。
#### 第二段:任务描述
任务描述段要一句话说明目标,不要把所有步骤塞进去。这里先补一个小词:`uv` 是一个管理 Python 环境的工具,它可以帮我们安装 Python、创建虚拟环境、安装库。
这次任务可以这样写:
> **任务描述**:在当前目录下完成 macOS 量化课程编程环境配置:安装 uv,用 uv 创建 Python 3.12 虚拟环境,安装 jupyter、pandas、NumPy、Matplotlib、akshare、yfinance、open-xquant,并创建、运行 `check_env.py` 检查脚本。
> 📌 **要点 2:关键对象要点名**
>
> “装 Python”不够,要写成“Python 3.12”;“装一些库”不够,要把 7 个库的名字列出来;“写个检查脚本”不够,要写出文件名 `check_env.py`。关键对象越明确,AI 越不容易按自己的偏好补全。
#### 第三段:任务要求
任务要求段是 spec 的主体。它把任务拆成可以执行的步骤。环境配置一共 6 步:确认目录、安装 uv、创建虚拟环境、安装库、创建检查脚本、运行检查脚本。
完整命令和 `check_env.py` 全文都在配套仓库的 `specs/spec-01-env-setup-mac.md` 里。书里先摘出开头几步,让你看清写法:
> **任务要求**
>
> 1. **确认当前目录**:运行 `pwd`,记录路径,后续所有操作都在这个目录下进行。
>
> 2. **安装 uv**:运行 `curl -LsSf https://astral.sh/uv/install.sh | sh`,再运行 `source $HOME/.local/bin/env`,最后用 `uv --version` 检查是否安装成功。
>
> 3. **创建 Python 3.12 虚拟环境**:运行 `uv venv --python 3.12`,再激活虚拟环境,并用 `python --version` 确认版本。
>
> 4. **安装 7 个库**:按 spec 文件中的版本号安装 jupyter、pandas、NumPy、Matplotlib、akshare、yfinance 和 open-xquant。
>
> 5. **创建 `check_env.py`**:把 spec 文件中的检查脚本写入当前目录。
>
> 6. **运行检查脚本**:执行 `python check_env.py`,查看检查结果。
这里有个细节很重要:安装库时要锁版本号。比如不要写:
```bash
uv pip install pandas numpy matplotlib
```
而要写成:
```bash
uv pip install pandas==3.0.* numpy==2.4.* matplotlib==3.10.*
```
不锁版本,半年后某个库升级,书里的代码可能就跑不出来。锁到 `==X.Y.*`,意思是小修小补可以升级,但大版本变化先不要碰。
> 📌 **要点 3:会变化的东西要锁住**
>
> 库版本会变,日期窗口会变,随机数也可能变。量化实验最怕今天能跑、明天不能复现。凡是会随时间漂移的关键条件,都要尽量写死。
#### 第四段:验收标准
最后一段写成功标准。你还没有运行,怎么知道成功长什么样?答案是:你不用猜最终数据,只要约定检查脚本应该给出哪些信号。
比如这次我们要求看到 `11/11 全部通过`,要求命令退出码为 0,要求目录里出现 `.venv/``check_env.py`。这些都是 AI 和你都能核对的信号。
> **验收标准**
>
> 1. `python check_env.py` 最末两行输出:
>
> ```text
> 结果: 11/11 全部通过!
> 环境配置完成,可以开始课程。
> ```
>
> 2. 命令退出码为 0。
>
> 3. 当前目录下存在 `.venv/` 目录与 `check_env.py` 文件。
> 📌 **要点 4:成功标准要能检查**
>
> “看起来没问题”不算成功标准。更好的写法是给出具体数字、具体文件名、具体输出文字。这样 AI 做完后,你不用凭感觉判断,对照检查就行。
四段拼起来,就是一份完整安装 spec。下一节我们把真实文件交给 TRAE 执行。
## 让 TRAE 跑这份 spec
上一节我们已经看懂了安装 spec 的结构,现在要让 TRAE 来执行这一份任务说明书。打开文件之前,先看一个提示,等下看到弹窗就不会慌。
> **💡 提示:关于“沙箱”**
>
> TRAE 帮你装环境时,可能会询问是否允许“在沙箱外运行”。所谓“沙箱”,就是给 AI 的操作设置一个受限制的运行范围,用来降低误操作影响真实文件和系统环境的风险。但这次要安装的 Python 环境需要访问你的真实终端和学习目录,所以通常需要允许它在终端中运行。遇到这个提示,选择“是”“允许”或“在终端中运行”即可。过程示意如图 II-9 所示。
![TRAE 沙箱提示示意](images/getting-started/trae-solo-sandbox.png)
现在打开你系统对应的 spec 文件:
- **macOS 用户**:打开 `specs/spec-01-env-setup-mac.md`
- **Windows 用户**:打开 `specs/spec-01-env-setup-windows.md`
把 spec 的全部内容复制到 TRAE SOLO 模式下方的 AI 对话框中,发送。
TRAE 会按 spec 自动完成 6 个步骤:安装 uv、创建虚拟环境、安装 7 个库、创建 `check_env.py`、运行检查脚本。整个过程通常只需要几分钟。你不需要理解每一条命令,只需要看最后的检查结果。
### 验证结果
如果一切顺利,你会在 TRAE 的终端中看到类似这样的输出:
```text
==================================================
XQuant 课程环境检查
==================================================
[OK ] Python 3.12.x
[OK ] 虚拟环境已激活
[OK ] jupyter
[OK ] pandas
[OK ] numpy
[OK ] matplotlib
[OK ] akshare
[OK ] yfinance
[OK ] open-xquant
[OK ] jupyter 命令可用
[OK ] akshare 数据源连通(获取到 5847 条数据)
--------------------------------------------------
结果: 11/11 全部通过!
环境配置完成,可以开始课程。
```
实际终端输出如图 II-10 所示。
![环境检查全部通过](images/getting-started/env-check-success.png)
其中 `akshare 数据源连通` 后面的条数可能和书里不同,这不影响结果。关键是这一项显示 `[OK]`,并且最后出现 `11/11 全部通过`
如果有任何项目显示 `[FAIL]`,不要自己改命令重试。把完整输出复制给 TRAE 的 AI 助手,告诉它:“环境检查有失败项,请帮我修复。”AI 会按照 spec 里的故障恢复说明逐项排查。
> **💡 关于错误处理**
>
> 整本书你都不必去啃 Python 报错。遇到报错,把完整信息复制给 AI 助手就好。你的工作是写清楚任务、看懂结果;调试细节先交给 AI。
## 你刚刚学到了什么
刚才这个过程包含两件事。
第一,环境准备好了。这件事做完后,后面章节就可以直接跑实验。
第二,你看到了一份 spec 是怎样写出来的。它不是一段模糊、碎片、随意的说法,而是由上下文、任务描述、任务要求、验收标准四段组成。你把任务说清楚,AI 才能稳定执行。
### 7 条 spec 自查清单
把本章的 4 条要点,再加上后面会反复用到的 3 条补充,就得到一份 spec 自查清单。以后每写完一份 spec,都可以用它快速扫一遍。
**表 II-4 spec 自查清单**
| 序号 | 自查项 |
|------|--------|
| 1 | **四段都齐了吗?** 上下文、任务描述、任务要求、验收标准,一段都不能少 |
| 2 | **任务能一句话说清吗?** 先讲目标,不要把所有步骤塞进任务描述段 |
| 3 | **关键对象准确吗?** 如版本号、库名、文件名等,都要写清楚 |
| 4 | **会变化的条件确定了吗?** 库版本、日期范围、随机种子,都要写清楚,不要变 |
| 5 | **成功标准能检验吗?** 给出具体输出、具体文件、具体数字 |
| 6 | **指令是正向的吗?** 多写“请做 X”,少写“不要 Y” |
| 7 | **长度是否合理?** 不要因为详细,就写得啰嗦,都写必要而准确的话 |
写 spec 不需要死记硬背,多写多实验,多和 AI 交互自然能掌握。模型越强,越能对 spec 容错,但把 spec 写清楚,仍然能减少返工,也能让你更容易判断 AI 有没有做对。后面进入策略实验时,open-xquant 也会帮你检查策略规格说明书里常见的遗漏。
## 准备就绪
前言和这一章涉及的核心概念,汇总在表 II-5 里。
**表 II-5 准备工作核心概念速查**
| 概念 | 含义 | 这一章怎么用 |
|------|------|--------------|
| spec(任务说明书) | 给 AI 的结构化指令 | 用装环境练第一份 spec |
| spec 四段骨架 | 上下文 / 任务描述 / 任务要求 / 验收标准 | 按四段写清楚任务 |
| TRAE | 本书演示用的 AI 编程工具 | 把 spec 交给它执行 |
| Python 环境 | 跑代码需要的语言和库 | 用检查脚本确认可用 |
| 四个阶段 | 确定候选 / 制定规则 / 执行交易 / 评估归因 | 第 1 章开始正式进入 |
| 做 / 看 / 疑 | 写成规格 / 读懂结果 / 检验可信 | 本章先练“做”:把任务写清楚 |
到这里,你已经具备了开始学习量化交易的基本条件:有 AI 编程工具,有 Python 环境,也知道一份 spec 应该怎样写。
第 1 章,我们会用一个真实 ETF 走一遍完整流程:写规则、跑实验、看结果,以及让你产生第一次怀疑,为什么看到实验结果漂亮不要高兴得太早。准备好了吗?翻到下一章,开始第一次量化实验。