第 2 课:实战热身——拉数据画图
上一课程回顾(含自测参考答案)
课程 1 的四个自测题,参考答案如下:
1. 一句话说清"量化投资"和"凭感觉炒股"的区别
量化投资 = 用可写下来的规则 + 历史数据 + 程序化执行代替"凭感觉、听传闻"做决策;凭感觉炒股靠临场判断,量化靠事先定好的规则并严格执行。
2. 举一个身边"半量化"的投资做法,并说明用到三要素中的哪几样
示例一:定投——"每月 15 日买 1000 元"是模型(规则),净值是数据,自动扣款是纪律,三样全占。
示例二:支付宝的"目标投"——涨到目标收益率就自动止盈,规则 + 纪律,数据较弱。
示例三:看估值百分位买指数基金——"百分位低于 30% 才买入"是模型,历史估值是数据,是否严格执行看纪律。
只要规则明确、依据可查、执行不靠心情,都算"半量化"。
3. 基金涨 25%、指数涨 23%,2% 差距是 beta 还是 alpha?
更接近 alpha。beta 是"随市场赚到的部分"(≈23%),基金比指数多出来的 2% 是市场之外的部分,来自基金经理的选股/择时(或运气、费用差异),所以按定义算 alpha 部分。注意这只是"账面上的 alpha",是否真本事要看能否长期稳定(课程 8 会讲如何识别)。
4. 可选加餐:环境准备
完成了最好——本课就要用 Python 拉数据;没完成也没关系,本课会带你从"向 AI 提需求"开始,跑不通的地方可以随时问 AI 排查。
学习目标
- 能把"拉数据、画图"的完整需求用一句话描述给 AI,并让它跑出结果
- 看懂价格曲线图:横轴/纵轴是什么、K 线之外的"收盘价线"代表什么
- 会对照行情 App 验证 AI 的结果是否可信(并知道为什么可能有细微差异)
- 写下自己的第一份观察笔记:一句话直觉印象 + 一个疑问
前置要求
- 已掌握:课程 1 的核心概念(量化 = 数据 + 模型 + 纪律;alpha/beta)
- 本课是实战课:不需要自己写代码,代码由 AI 代写,你负责提需求 + 看懂输出
正文
2.1 项目目标:一句话需求
本课只有一个任务:让 AI 帮你拉沪深300 近 5 年的历史价格,画一张价格曲线图,然后你对照行情 App 验证并写下观察笔记。
这是整个学习计划里最小的完整闭环:需求 → 数据 → 图表 → 你的判断。以后每一课(算收益、做回测)都是在这个闭环上叠加。
你可以把下面这句话直接发给 AI(或任何能写代码的助手):
"用 Python(yfinance)拉取沪深300 ETF(510300.SS)近 5 年的日线数据,画收盘价曲线图,标注标题和坐标轴。"
如果 AI 跑完只给你代码让你自己跑,而你不想装环境,可以追加一句:
"请直接帮我运行,把画出的图贴给我,并解释图上每个部分是什么意思。"
💡 提需求的要点:说清 ① 用什么工具(yfinance)② 哪只标的(510300.SS)③ 多长历史(近 5 年)④ 要什么图(收盘价曲线)。这四个要素就是"数据需求四要素",以后让 AI 拉任何数据都用这个句式。
2.2 看懂输出:一张图上的四个要素
AI 跑完后你大概率会看到类似这样的图(以及它背后的代码)。先别管代码,只看图:
价格(元)↑
4.5 ┤ ╭─╮
4.0 ┤ ╭──╯ ╰─╮
3.5 ┤╭──╯ ╰──╮
3.0 ┤╯ ╰──╮
└─────────────────────→ 日期(2021 → 2026)
一张完整的价格曲线图有四个要素,逐个确认你看懂了:
| 要素 | 是什么 | 怎么看 |
|---|---|---|
| 横轴(日期) | 时间从早到晚 | 注意起止年份是否真的是"近 5 年" |
| 纵轴(价格) | ETF 每份的价格(元) | 图中 3.0~4.5 元是 510300 的真实价位区间 |
| 收盘价线 | 每天收盘价的连线,忽略盘中波动 | 最常用的价格;比 K 线"干净",适合看趋势 |
| 标题/图例 | 告诉你看的是什么 | 确认标题写的是"沪深300 ETF"而不是别的标的 |
常见困惑:"为什么图上是一条线而不是红红绿绿的 K 线?"——因为 K 线展示每天的开高低收四个价,信息多但杂;收盘价线只保留每天的"结局",趋势更清楚。第 2.4 节观察走势用收盘价线足够,想看 K 线可以再让 AI 画(需求里加一句"用 K 线图"即可)。
2.3 对照验证:与行情 App 比对
现在打开你的行情 App(东财/同花顺/雪球任一即可),找到沪深300 ETF(510300):
- 看数字:把 App 上最新的收盘价和图上最后一天的价格对比,应该基本一致(差一两分钱以内都正常,是盘中更新的时间差)。
- 看形状:把 App 切到"月线"或"周线"看 5 年走势,和代码画的曲线对比——大的涨跌节奏应该一致:比如 2021 年高点、2022~2023 年回落、2024 年见底回升(具体以你看到的真实走势为准)。
- 看差异(重点):如果曲线形状和 App 略有不同(比如 App 显示 2021 年高点更高),先别慌,大概率是"复权"设置不同:
- 不复权:按真实成交价画,ETF 分红除息时价格会"跳空下跌",长期看曲线会被分红拉低。
- 前复权:把历史价格统一调整成"现在的价格口径",分红不再造成跳空,是 App 默认显示。
- 你让 AI 用 yfinance 拉的默认是不复权价格(真实成交价),所以和 App 默认的前复权图会有细微差别——这本身就是本课最重要的发现之一:同一只标的,数据口径不同,图就不一样。看懂这个,你就知道"数据是怎么被加工过的",这正是量化的起点:先搞清楚数据口径,再谈分析。
2.4 观察笔记:写下你的第一句"投资判断"
盯着图看 1 分钟,然后写下三句话(这就是你的第一份观察笔记,也是后续所有课程反复用的"直觉锚点"):
- 一句话直觉:这 5 年沪深300 整体是涨是跌?中间最让你意外的一段走势是什么?
- 一个数字:图上最低点和最高点大概在什么价位、什么年份?
- 一个疑问:随便什么都行——"为什么 2022 年跌那么多?""现在这个位置算高还是低?"
这三句话没有标准答案。它们的作用是让你带着具体问题进入第 3 课(算年化收益、波动率、夏普比率)——到时候你会回来验证:你的直觉和数字算出来的结论一致吗?
💡 把笔记存到备忘录或本课教案下方,第 3 课开头的"上节课回顾"会请你对照。
2.5 常见问题排查(跑不动时用)
如果你或 AI 在跑数据时遇到问题,按下面顺序排查(也可以直接把这些报错发给 AI 让它解决):
| 现象 | 原因 | 处理 |
|---|---|---|
No module named 'yfinance' |
Python 库没装 | 终端跑 pip3 install yfinance pandas matplotlib |
拉出来是空表/报 no data found |
网络问题或代码写错 | 换代码 510300.SS → 510300.SS 检查拼写;或用 period="5y" 参数;多试一次 |
| 数据到"昨天"就断了 | 美股/港股接口对 A 股有时差 | 正常,最新一天收盘价还没更新 |
| 图是中文乱码 | matplotlib 默认字体不含中文 | 让 AI 加 plt.rcParams["font.sans-serif"] = ["Arial Unicode MS"](Mac)或 ["SimHei"](Windows) |
上面任何一条解决不了,把报错原文复制给 AI,它能 90% 概率直接修好——这本身就是本课训练的技能:描述问题,而不是自己瞎折腾。
自测练习
- 把 2.1 节的需求模板发给 AI,让它跑出沪深300 ETF 近 5 年收盘价曲线图。完成后:说出图上横轴、纵轴分别是什么,收盘价线代表什么。
- 对照行情 App:App 上的最新收盘价和代码结果差多少?两者 5 年走势的"大形状"是否一致?
- 观察笔记:写下 2.4 节的三句话(直觉 + 数字 + 疑问)。
- 加餐(可选):让 AI 把同一只 ETF 画成"前复权"曲线,和你看到的"不复权"曲线对比,说说差异出现在哪里、为什么。
答案不需要现在核对;第 3 课开头会回顾,随时也可以答疑问我。
学习要点小结
- 数据需求四要素:工具(yfinance)+ 标的(510300.SS)+ 时长(5年)+ 图表类型(收盘价线)——这是向 AI 提需求的万能句式。
- 一张价格图的四要素:横轴日期、纵轴价格、收盘价线、标题图例;先确认"画的是不是我想要的东西"。
- 数据有口径:不复权 vs 前复权,同一标的会画出不同形状的图——分析前先问数据口径。
- 对照验证是量化的起点:代码结果要和 App 等独立来源互相印证,不轻信任何单一来源。
- 观察笔记 = 直觉 + 数字 + 疑问,带着问题进入下一课。
答疑记录
暂无答疑记录