量化投资系列课程介绍——Pandas数据分析

为什么系列课的第一门是 pandas数据分析

量化是两条线拧在一起:金融线(市场 → 定价 → 组合 → 风险 → 执行,练判断)和工程线(数据 → 算法 → 框架 → 工程化 → 自动化,练落地)。

工程线是一架顺序即依赖的梯子,第一级就是数据。而 pandas 之所以排在整个系列最前面的原因是:它是后面每一门课的第一步。

学因子投资,第一步是把行情和财报对齐;学机器学习交易,第一步是把特征拼成矩阵;学风险管理,第一步是把收益率面板整理出来。 跳过 pandas 去学后面任何一门,你都会在同一个地方卡住——不是不懂金融,是数据准备不出来。

量化研究的时间分配,和大多数人的想象是反的:真正花时间的不是模型,是把数据弄干净、对齐、变形成模型能吃的样子。

随便一个问题——”过去三年,哪些行业的股票在财报发布后表现更好?”——从零到答案要依次做完这些事:读进来、先看一眼、清洗、补缺失、筛选、派生新列、合并多表、长宽表重塑、分组聚合、时序处理、出结果。这十一件事,pandas 全都能做,而且是同一套数据结构、同一套语法。

这门课和其他 pandas 课的差别

这门课和其他 pandas 课的差别

一、全部用金融数据,没有一个玩具例子

不是”用鸢尾花数据集学 groupby,然后自己想办法迁移到股票上”。这门课从第一讲到最后一讲,读的是行情、财报、行业分类,每讲配一份可运行代码和仓库自带的样本数据,开箱即跑,课件里每个数字都来自真实运行。

二、每个数据处理动作,都在练一项量化基本功

课程顺序是真实分析的顺序,不是 API 手册的顺序。每一讲练的不是”某个函数怎么用”,而是量化数据工作里一项独立的能力:

讲的内容 练的量化基本功 不会的代价
缺失值与排序 面板完整性:停牌、未上市、退市在同一张表里共存,你得决定哪些算样本 样本悄悄变成幸存者,结论整体偏乐观
转换与字符串、Categorical 标的主键治理:代码格式统一是多源数据能拼起来的前提 000001.SZ000001 是两个值,两张表一条都合不上
MultiIndex 层次索引 面板双视角:同一份数据既要按个股看时序,又要按日期看截面——这是因子研究的坐标系 每次都全表扫描,且时序/截面来回转换全靠手工
合并连接 多源对齐:行情 + 财报 + 行业,按”代码 × 日期”对上 合完行数悄悄变了都不知道
重塑与透视 矩阵化:因子值在”日期 × 股票”的宽表里才好做截面运算 长表上做截面 z-score,慢几十倍还容易写错
分组聚合与 transform 截面处理:去极值、标准化、行业中性化,本质都是组内变换 中性化算不出来——agg 会把形状压掉
透视表与交叉表 多维验证:一个结论要经得起换个维度再看一遍 单维度上漂亮的单调性,加一维就不成立
时间序列(上):时间类型 时间轴治理:交易日历、频率、时区,日期不是字符串 对齐看着成功,实际错位
时间序列(下):重采样与滚动 频率与窗口:日频转月频调仓、滚动波动率、动量 面板上直接 rolling,一只票的窗口混进了另一只的价格

三、最后三讲不是”练习题”,是三条完整链路

三个综合案例:为什么这么设计

前十九讲每讲解决一个局部问题,最后三讲把它们串起来。三个案例不是随便挑的——它们分别对应量化数据工作里三个最容易翻车的方向:横着的、纵着的、以及时间上的。

三讲都按同一个结构走:要算什么 → 要用什么数据 → 设计思路 → 伪代码 → 逐段实现 → 复盘。先想清楚再动手,这个顺序本身就是要训练的东西。

第 20 讲 单因子测试流水线 —— 练”横截面”

原始行情 → 去极值 → 标准化 → 中性化 → IC 与分档收益

为什么设计成第一个:因子研究里 80% 的动作发生在”同一天、所有股票”这个横截面上,而这些动作全都是组内变换——按日期分组去极值、按日期分组标准化、按行业分组中性化。它是 groupby + transform 最密集的实战场。

训练目的:把”对每一组做点什么、但形状不许变”这件事变成肌肉记忆。这是 aggtransform 的分水岭,也是新手最容易卡住的地方。

学完你能:拿到任何一列原始指标,独立把它加工成可用的因子值,并算出 IC 和分档收益判断它有没有信息量。

第 21 讲 财务因子与时间对齐 —— 练”时点”

季频财报 → 按公告日贴到日频(merge_asof)→ 量化”按报告期对齐”错在哪

为什么单独拎出来讲:这是量化里最贵的一类错误。财报的报告期是 3 月 31 日,但它可能 4 月 28 日才公布——按报告期对齐,等于让 3 月的你用上了 4 月底才存在的信息。回测曲线会因此漂亮得不真实,而且全程不报错

训练目的:建立”数据什么时候才存在”这个时点意识(point-in-time),并掌握 merge_asof 这个专门解决”最近一条可用记录”的工具。

学完你能:把任何低频、有发布延迟的数据(财报、宏观、评级、分析师预期)正确贴到日频上,并且能亲手量出”按报告期对齐”到底虚增了多少收益。

第 22 讲 行业轮动策略完整回测 —— 练”全链路”

日线 → 月频 → 信号 → 权重 → 净值 → 绩效与换手成本

为什么放在最后:前面每一讲都是链条上的一环,这一讲第一次要求你把整条链自己接起来,而且每个接口都可能对不上——频率转换会丢日期、信号到权重要处理停牌、净值累乘对缺失值极其敏感、换手成本要用前后两期权重的差。

训练目的:从”会用某个函数”过渡到”能设计一条数据流水线”,并且知道每个环节该验证什么。

学完你能:独立完成一次从原始日线到绩效报告的完整回测,并且在结果异常时知道该回头查哪一环。

重要:这三讲练的是数据处理,不是投资判断。因子有没有效、策略能不能赚钱,是别的课的事——这门课保证的是:当结论出来时,你确信它不是数据处理错误造出来的。

课程目录

课程目录

全课 22 讲,四段。每讲配一份可运行代码和仓库自带的样本数据。

导论

标题 解决什么
01 导论:AI 时代为什么还要学 Python 和 pandas 数据处理的错误不会报错,只会让结果变好看——所以你得能验收

第 02–04 讲 numpy 地基:取数的三种方式

pandas 的 ilocloc、布尔索引,根子都在这三讲。先在原生容器上把手感练出来,后面上 pandas 只是换个外壳。

标题 解决什么
02 按位置取数:元组、列表与数组 切片、步长、多维索引。取”最近 250 个交易日””每只股票掐掉上市前 60 天”
03 按标签取数:字典与结构化数组 排序会重排位置,close[0] 指的股票会变。用名字指向数据,重排不受影响
04 按条件取数:布尔掩码 你不知道是哪些,只知道它们满足什么。条件先变成一串 True/False,再拿去取

第 05–07 讲 pandas 的两个结构

标题 解决什么
05 Series:带标签的一维数据 数组会算不会认,字典会认不会算。Series 把两样合成一个,还带自动对齐
06 DataFrame:带行列标签的表格 多字段、多类型的真实表格。建表、取数、增删改、筛选、排序
07 apply:把自己的函数用到数据上 内置函数覆盖不到的业务逻辑。也讲什么时候不该用它——它是最容易被滥用的操作

第 08–19 讲 数据处理:一条链上的十二件事

全课主体,顺序就是真实分析的顺序:读进来 → 清洗 → 拼接 → 变形 → 分组 → 时序。

标题 解决什么
08 数据加载与存储 CSV / Excel / SQLite / Parquet。同一个文件同一个函数,加两个参数省 697 倍内存
09 缺失数据与排序 两个互补的条件加起来对不上——NaN 从两个桶里都漏了出去。以及排序、rank 与并列处理
10 数据转换与字符串处理 两张表按代码合并,一条都没对上:000001.SZ000001 是两个值
11 Categorical 分类数据 分档标签转成字符串后,排序变成”中、大、小、最大、最小”。以及分类列不能做算术
12 MultiIndex 层次索引 时序视角和截面视角。平表上每次全表扫描,层次索引上快 30~73 倍
13 合并连接 how="left" 合并之后行数变多了。validate= 怎么把假设写进代码
14 重塑与透视 长表和宽表的取舍。同一个截面 z-score,宽表比长表快 55 倍
15 分组与聚合 groupby().agg():17 万行压成 300 行的股票画像表
16 transform 与组内变换 行业中性化 agg 给不了——它把组的统计量广播回每一行,形状不变
17 透视表与交叉表 只看一个维度会骗你:动量单调递减的结论,加上市值维度就不成立了
18 时间序列(上):时间类型与索引 字符串日期能走多远,以及转换时那些不报错的坑
19 时间序列(下):重采样与移动窗口 面板上直接 rolling,茅台的第一条均线混进了五粮液的价格——5700 行是错的

第 20–22 讲 三个综合案例

标题 走的是哪条链
20 案例一:单因子测试流水线 原始行情 → 去极值 → 标准化 → 中性化 → IC 与分档收益
21 案例二:财务因子与时间对齐 季频财报 → 按公告日贴到日频(merge_asof)→ 量化”按报告期对齐”错在哪
22 案例三:行业轮动策略完整回测 日线 → 月频 → 信号 → 权重 → 净值 → 绩效与换手成本
Roquant 的头像

Author

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注