阶段4Python 基础进阶●●●●●

阶段4开篇:从数学到代码——向量化的世界观

我的掌握程度:
q-301精讲

先掌握这个答案

向量化思维=用「整列数据的一次运算」代替「逐个元素的循环」。对比:循环思维是「对每只股票、每一天依次计算」;向量化思维是「把所有股票所有天堆成矩阵,一次算完」。pandas/numpy的底层是C语言实现的矩阵运算——同样的数学,向量化代码快100倍且更不容易错。心态转变:数据不是一条条记录,是整块矩阵。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

本阶段实战方法 · 一条能复现的数据流水线

把接口返回的数据变成可用于因子研究的面板时,先处理时点、主键与单位。

  1. 建立数据字典:字段、单位、时区、交易日历、数据源、抓取时间、原始价与复权因子。
  2. 用(date, code)查重,区分停牌、未上市、窗口不足和真实缺失;不要用向后填充把未来值带回过去。
  3. 保存原始快照与清洗日志,固定随机种子和环境版本;接口字段变化时先核对官方文档。

使用边界

  • 报告期不等于公告可用日,盘后公告通常不能用于当天收盘前决策。
  • API输出名为“动态市盈率”时不能直接改名TTM;浏览器练习不支持任意原生库或行情抓取接口。
背景 · 从一个困惑说起
阶段3你掌握了完整的数学工具箱:收益率家族、分布、检验、回归。但现在它们都活在纸面上。量化工厂的下一步(q-010流水线的第①②车间)要求把这些数学变成每天自动运行的代码——而代码世界与纸面世界的第一个碰撞,就是「思维方式」的碰撞。
由此产生的问题
为什么写量化代码的第一课不是语法,而是「向量化思维」?它与循环思维的本质区别是什么?
核心概念
向量化思维=用「整列数据的一次运算」代替「逐个元素的循环」。对比:循环思维是「对每只股票、每一天依次计算」;向量化思维是「把所有股票所有天堆成矩阵,一次算完」。pandas/numpy的底层是C语言实现的矩阵运算——同样的数学,向量化代码快100倍且更不容易错。心态转变:数据不是一条条记录,是整块矩阵。
为什么需要它
①研究吞吐量=竞争力:假设检验一天跑50次还是5次,取决于代码速度(q-089已算过账);②少一类bug:循环里的索引错位(off-by-one、group错组)是经典错误源,向量化从结构上消灭它们;③阶段衔接:阶段4全部分析工具(groupby/rolling/merge)都建立在向量化世界观上,这是本阶段的入场券。
实际应用场景
实例对照:计算500只股票的20日动量——循环版(500×2500次迭代,约2分钟)vs 向量化版(groupby+rolling一行,约0.3秒)。同一段数学,两个世纪的速度差。
与之前知识的联系
阶段3的每个公式都将在本题之后获得代码形态:pct_change()就是收益率公式、rolling().std()就是波动率、groupby().rank()就是横截面排名。数学给灵魂,代码给肉身——q-010流水线的燃料从今天开始注入。
⚠ 常见误解
  • 先把语法全学会再谈思维:语法在项目中边用边学最快;思维(向量化)才是决定代码质量的第一因素
  • 循环写得清楚也行:清楚但慢100倍——在参数寻优场景就是「能跑」和「跑不了」的区别
  • 向量化=难懂的黑魔法:向量化代码往往比循环更接近数学公式的样子(对照rolling与滚动均值定义)

🤖 AI导师

导师会先检查你的前置知识(收益率公式、波动率、量化工作流),再用案例、公式和代码帮助理解。此功能需要先启用服务。