← 上一课程:量化投资是什么下一课程:用 Python 量化收益与风险 →

第 2 课:实战热身——拉数据画图

上一课程回顾(含自测参考答案)

课程 1 的四个自测题,参考答案如下:

1. 一句话说清"量化投资"和"凭感觉炒股"的区别

量化投资 = 用可写下来的规则 + 历史数据 + 程序化执行代替"凭感觉、听传闻"做决策;凭感觉炒股靠临场判断,量化靠事先定好的规则并严格执行。

2. 举一个身边"半量化"的投资做法,并说明用到三要素中的哪几样

示例一:定投——"每月 15 日买 1000 元"是模型(规则),净值是数据,自动扣款是纪律,三样全占。
示例二:支付宝的"目标投"——涨到目标收益率就自动止盈,规则 + 纪律,数据较弱。
示例三:看估值百分位买指数基金——"百分位低于 30% 才买入"是模型,历史估值是数据,是否严格执行看纪律。
只要规则明确、依据可查、执行不靠心情,都算"半量化"。

3. 基金涨 25%、指数涨 23%,2% 差距是 beta 还是 alpha?

更接近 alpha。beta 是"随市场赚到的部分"(≈23%),基金比指数多出来的 2% 是市场之外的部分,来自基金经理的选股/择时(或运气、费用差异),所以按定义算 alpha 部分。注意这只是"账面上的 alpha",是否真本事要看能否长期稳定(课程 8 会讲如何识别)。

4. 可选加餐:环境准备

完成了最好——本课就要用 Python 拉数据;没完成也没关系,本课会带你从"向 AI 提需求"开始,跑不通的地方可以随时问 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):

  1. 看数字:把 App 上最新的收盘价和图上最后一天的价格对比,应该基本一致(差一两分钱以内都正常,是盘中更新的时间差)。
  2. 看形状:把 App 切到"月线"或"周线"看 5 年走势,和代码画的曲线对比——大的涨跌节奏应该一致:比如 2021 年高点、2022~2023 年回落、2024 年见底回升(具体以你看到的真实走势为准)。
  3. 看差异(重点):如果曲线形状和 App 略有不同(比如 App 显示 2021 年高点更高),先别慌,大概率是"复权"设置不同:
    • 不复权:按真实成交价画,ETF 分红除息时价格会"跳空下跌",长期看曲线会被分红拉低。
    • 前复权:把历史价格统一调整成"现在的价格口径",分红不再造成跳空,是 App 默认显示。
    • 你让 AI 用 yfinance 拉的默认是不复权价格(真实成交价),所以和 App 默认的前复权图会有细微差别——这本身就是本课最重要的发现之一:同一只标的,数据口径不同,图就不一样。看懂这个,你就知道"数据是怎么被加工过的",这正是量化的起点:先搞清楚数据口径,再谈分析。

2.4 观察笔记:写下你的第一句"投资判断"

盯着图看 1 分钟,然后写下三句话(这就是你的第一份观察笔记,也是后续所有课程反复用的"直觉锚点"):

  1. 一句话直觉:这 5 年沪深300 整体是涨是跌?中间最让你意外的一段走势是什么?
  2. 一个数字:图上最低点和最高点大概在什么价位、什么年份?
  3. 一个疑问:随便什么都行——"为什么 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% 概率直接修好——这本身就是本课训练的技能:描述问题,而不是自己瞎折腾。

自测练习

  1. 把 2.1 节的需求模板发给 AI,让它跑出沪深300 ETF 近 5 年收盘价曲线图。完成后:说出图上横轴、纵轴分别是什么,收盘价线代表什么。
  2. 对照行情 App:App 上的最新收盘价和代码结果差多少?两者 5 年走势的"大形状"是否一致?
  3. 观察笔记:写下 2.4 节的三句话(直觉 + 数字 + 疑问)。
  4. 加餐(可选):让 AI 把同一只 ETF 画成"前复权"曲线,和你看到的"不复权"曲线对比,说说差异出现在哪里、为什么。

答案不需要现在核对;第 3 课开头会回顾,随时也可以答疑问我。

学习要点小结

答疑记录

暂无答疑记录

← 上一课程:量化投资是什么下一课程:用 Python 量化收益与风险 →