Skip to content

7.2 Jupyter和Notebook的正确打开方式

课前导读

本章目标

学完能解决什么困惑:理解 Notebook 为什么适合量化学习;知道 Markdown 单元、代码单元、运行顺序和保存结论分别有什么用;能设计一页可复现的 A 股量化研究 Notebook 大纲。 难度:入门 用时:约 30 分钟

上一节我们把 Python 看成“计算器 + 规则翻译器”。

但是只会写几行代码还不够。

量化研究最怕的是:今天算出一个结果,明天自己也不知道怎么来的。

Notebook 就是为了解决这个问题而存在的。

你可以把它想成一本实验记录本。

它既能写文字说明,也能放代码和计算结果。

本节不要求你安装任何工具,也不要求联网。

我们只学习正确的使用方式。


知识正文

一、Notebook 是“实验记录本”,不是神秘软件

生活类比:你在厨房研究一道菜。

如果只拍一张成品照片,别人不知道你用了什么食材、火候和步骤。

如果你写下“食材、步骤、时间、失败原因、改进方法”,下次才可能复现。

量化研究也是这样。

只截图一个收益数字,没有研究价值。

能说明数据从哪里来、规则是什么、怎么计算、结论是什么,才像一份合格记录。

Notebook 的价值就在这里。

它把说明文字、短代码、输出结果和反思放在同一页。

mermaid
flowchart TD
    A["研究问题"] --> B["文字说明"]
    B --> C["准备示例数据"]
    C --> D["运行短代码"]
    D --> E["查看输出"]
    E --> F["写下结论和限制"]

请注意,Notebook 不是聊天记录。

聊天记录通常是想到哪说到哪。

Notebook 应该像实验记录:别人从上往下读,能知道你做了什么。

如果隔一周回来,你自己也应该能复现同样的结论。

二、Markdown 单元:写给人看的说明书

Notebook 里常见两类单元。

第一类叫 Markdown 单元。

你可以把它理解为“文字说明格”。

它用来写标题、背景、规则解释、结论和风险提示。

在 A 股量化学习里,Markdown 单元至少要回答四个问题。

第一,我在研究什么问题。

第二,我用了哪些数据字段。

第三,我的规则是什么意思。

第四,这个结果有什么限制。

例如你可以这样写一段 Markdown。

markdown
## 研究问题
观察一只示例 A 股在最近 5 个交易日里,收盘价是否连续走强。

## 使用字段
- close:收盘价
- volume:成交量

## 重要限制
这只是小样本学习记录,不代表未来表现。

逐行解释如下。

第 1 行:给这一段研究起标题,让读者知道主题。

第 2 行:用一句话说明研究问题,不夸大成预测。

第 4 行:列出使用字段,避免数据含义混乱。

第 5 行:解释 close 代表收盘价。

第 6 行:解释 volume 代表成交量。

第 8 行:单独写限制,提醒自己不要把练习当结论。

第 9 行:说明样本很小,不能推广到未来。

Markdown 单元越清楚,代码越不容易被误解。

专业研究不是只看代码,而是看问题是否定义清楚。

三、代码单元:写给计算器看的步骤

第二类叫代码单元。

你可以把它理解为“计算格”。

它负责保存示例数据、执行计算、打印结果。

生活类比:Markdown 单元像菜谱说明,代码单元像真正开始称重和加热。

先有说明,再有计算,顺序会更清楚。

python
close_prices = [10.00, 10.20, 10.10, 10.50, 10.80]
first_close = close_prices[0]
last_close = close_prices[-1]
return_rate = (last_close - first_close) / first_close
print(return_rate)

逐行解释如下。

第 1 行:准备 5 个交易日的示例收盘价。

第 2 行:取第一天收盘价,作为比较起点。

第 3 行:取最后一天收盘价,作为比较终点。

第 4 行:计算这段时间的简单收益率。

第 5 行:显示结果,方便写进结论。

这段代码没有联网,没有真实股票推荐。

它只演示 Notebook 如何把一个想法算出来。

如果你在文字单元里提前说明“这是示例数据”,读者就不会误以为它是实盘信号。

四、运行顺序:Notebook 最容易犯错的地方

Notebook 很方便,但也容易让新手误会。

它不像一本纸质书只能从第一页读到最后一页。

Notebook 的代码单元可以跳着运行。

这就带来一个风险:页面上看起来顺序正确,实际运行顺序可能乱了。

生活类比:做菜时你先把菜端上桌,后来才想起还没放盐。

菜谱上“放盐”写在前面,但你真实动作顺序错了。

Notebook 也一样,最终结果取决于你实际运行过哪些单元。

看下面这个学习示例。

python
price = 10.00
price = 10.50
print(price)

逐行解释如下。

第 1 行:先把 price 记为 10.00。

第 2 行:又把 price 改成 10.50,覆盖了前面的值。

第 3 行:显示当前的 price,所以结果会是 10.50。

如果你在 Notebook 里先运行了后面的单元,再回头运行前面的单元,结果可能变化。

所以每次整理研究记录时,都要从上到下重新运行一遍。

这叫可复现。

可复现不是高级词。

它只是说:同一份记录、同一组数据、同一套步骤,应该得到同样结果。

关键理解

Notebook 的核心纪律是“从上到下能跑通”。如果只能靠记忆解释结果,就还不是合格研究记录。

五、保存结论:别只保存结果数字

很多新手会在 Notebook 最后只写一句:“结果不错”。

这不够。

专业投资者会追问:哪里不错?样本有多小?有没有成本?有没有数据限制?

量化开发会追问:代码是否从上到下可运行?字段是否清楚?输出是否能复查?

老师会追问:你能不能用自己的话解释每一步?

所以 Notebook 的结论区至少包括三部分。

第一,观察到的现象。

第二,暂时的解释。

第三,限制和下一步。

例如:

markdown
## 初步结论
最近 5 个交易日的示例收盘价从 10.00 上升到 10.80,简单收益率为 8%。

## 我的解释
这个小样本说明价格在这 5 天里向上移动,但样本太短,不能代表长期趋势。

## 限制
未考虑交易成本、滑点、涨跌停和更多历史样本,因此只能作为练习记录。

逐行解释如下。

第 1 行:明确这是初步结论,不是最终判断。

第 2 行:写出具体数字和计算对象。

第 4 行:把自己的解释写出来,避免只留下输出。

第 5 行:提醒样本短,不能过度推断。

第 7 行:专门写限制。

第 8 行:列出没有考虑的现实因素,防止误用。

这样的结论才像研究记录。

它承认自己知道什么,也承认自己还不知道什么。

六、Notebook 在 A 股量化学习中的正确位置

Notebook 很适合做三类事情。

第一,整理一个小问题。

第二,验证一段短规则是否写清楚。

第三,把图表、数字和文字放在同一页复盘。

它不适合装成万能系统。

新手阶段也不需要把它变成复杂工程。

如果你想研究“收盘价站上 20 日均线后会怎样”,Notebook 可以先记录问题和示例计算。

如果你想整理“某个策略为什么失败”,Notebook 可以保存规则、样本和反思。

如果你只是想让页面看起来很厉害,却没人能复现,那就偏离了目标。

mermaid
flowchart LR
    A["好 Notebook"] --> B["问题清楚"]
    B --> C["数据字段清楚"]
    C --> D["代码短小"]
    D --> E["结论克制"]
    E --> F["从上到下可复现"]

从投资者角度看,Notebook 帮你保存证据,减少事后改口。

从老师角度看,Notebook 让学习过程可见,方便发现哪里没理解。

从量化开发角度看,Notebook 是研究草稿,不是最终工程。

这个边界非常重要。

七、一个最小 Notebook 页面应该长什么样

你可以把一页学习 Notebook 分成六块。

第一块:研究问题。

第二块:数据说明。

第三块:规则翻译。

第四块:示例计算。

第五块:输出观察。

第六块:结论和限制。

每一块都不需要很长。

但每一块都要能回答一个问题。

如果别人看完还不知道你在研究什么,就先补文字。

如果别人看完不知道代码用的数字从哪来,就先补数据说明。

如果别人看完以为你在推荐股票,就必须补风险提示。

Notebook 的优雅不在于花哨,而在于清楚。


交互实验室

练习一:设计一页量化研究 Notebook 大纲

请不要急着写代码。

先把下面的大纲复制到你的学习笔记里,用中文填空。

markdown
# Notebook 标题:__________

## 1. 研究问题
我想观察:__________
这个问题来自第 6 章的哪个规则:__________

## 2. 数据说明
我需要的字段:收盘价、__________、__________
数据只是学习示例,不用于真实交易。

## 3. 规则翻译
如果 __________
并且 __________
那么 输出 “继续观察”
否则 输出 “暂不观察”

## 4. 示例计算
这里放 5 到 10 行短 Python 代码。

## 5. 输出观察
我看到的结果是:__________

## 6. 结论和限制
我的初步结论:__________
我的限制说明:__________

逐行解释如下。

第 1 行:标题要说明研究主题,不要只写“练习”。

第 3 行:写清楚你想观察的问题。

第 4 行:把问题连接回第 6 章的量化规则。

第 6 行:列出字段,先保证数据含义清楚。

第 7 行:主动声明只是学习示例。

第 9 到 12 行:把规则写成“如果……那么……否则……”。

第 14 行:提醒代码要短,先能解释清楚。

第 16 行:把输出翻译成人话。

第 18 到 20 行:结论必须带限制,防止过度自信。

练习二:检查你的 Notebook 是否可复现

请按下面清单自查。

  • [ ] 标题能让别人知道研究对象。
  • [ ] 第一段说明了为什么研究这个问题。
  • [ ] 数据字段都有中文解释。
  • [ ] 示例数据没有伪装成真实推荐。
  • [ ] 每段代码前都有文字说明。
  • [ ] 每个输出后都有一句人话解释。
  • [ ] 最后一节写了限制。
  • [ ] 从上到下阅读不会突然跳到陌生变量。
  • [ ] 结果不依赖“我记得刚才运行过某个单元”。
  • [ ] 读者能在不问你的情况下复述研究过程。

如果有三项以上没勾上,不要继续加代码。

先补说明。

这就是专业研究的基本习惯。

练习三:把聊天式记录改成实验式记录

下面是一段不合格记录。

text
今天看了一个股票,好像站上均线了,结果还不错,后面再看看。

请把它改成下面这种结构。

text
研究问题:示例股票收盘价是否站上 20 日均线?
数据字段:收盘价、20 日均线、成交量。
规则:如果收盘价高于 20 日均线,并且成交量条件通过,则记录为继续观察。
输出:本次示例满足 / 不满足。
限制:没有考虑成本、滑点、涨跌停和更多样本,只作为学习记录。

逐行解释如下。

第 1 行:把“好像”改成可检查问题。

第 2 行:写出用了哪些字段。

第 3 行:把判断规则写完整。

第 4 行:输出只描述本次结果,不延伸到未来。

第 5 行:主动写出限制。

这个练习会让你从“凭感觉记录”转向“按证据记录”。


核心复盘

知识清单

  • [ ] Notebook 像实验记录本,用来保存问题、数据、代码、输出和结论。
  • [ ] Markdown 单元写给人看,用来解释背景、字段、规则和限制。
  • [ ] 代码单元写给计算器看,用来执行短小、可解释的计算步骤。
  • [ ] Notebook 的运行顺序可能被打乱,所以整理后要从上到下重新检查。
  • [ ] 可复现意味着同一份记录按同一顺序运行,应能得到同样结果。
  • [ ] 合格结论不只写结果数字,还要写观察、解释和限制。
  • [ ] Notebook 是研究草稿和学习记录,不是聊天记录,也不是自动交易系统。
  • [ ] 对 A 股新手来说,清楚、克制、能复查,比页面炫酷更重要。

金句总结

“Notebook 不是为了记录你当时多兴奋,而是为了让一周后的你还能复现当时的判断。”

本文档仅供学习交流用途,不构成任何投资建议。股市有风险,入市需谨慎。