# 准备工作

> 最新书稿已更新至 [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 走一遍完整流程：写规则、跑实验、看结果，以及让你产生第一次怀疑，为什么看到实验结果漂亮不要高兴得太早。准备好了吗？翻到下一章，开始第一次量化实验。
