基础入门
在收盘价列基础上新增最基础的日收益率列,理解 pct_change 的含义、第一行空值的来源,以及如何把原始价格表推进为带衍生指标的分析表。
读入数据、筛出核心字段之后,很多人会陷入一个常见停滞期:表已经看起来很干净了,但接下来该干什么却不太明确。继续看原始价格当然可以,可如果一直停留在“看价格”这一步,数据分析并没有真正开始。真正的转折点,通常发生在你第一次基于现有列生成一列新的、带分析含义的结果。对金融数据来说,最适合作为这一步起点的,就是收益率。
收益率的重要性,不仅在于它常见,更在于它会把你对数据的理解从“绝对数值”推进到“相对变化”。价格列告诉你一只资产今天收在什么位置,收益率列则开始告诉你:相对昨天,它变化了多少。这种变化视角,是后面很多分析动作真正依赖的基础。不管是月度统计、波动观察、均线前后的对比,还是更进一步的策略研究,最终都离不开对变化幅度的理解。
所以 pandas 金融数据短课的第 3 讲,表面上是在新增一列 return,本质上却是在帮你完成一次思路升级:这张表不再只是被浏览,而开始能够生长出新的分析层。
金融里关于“收益”其实有很多定义方式,普通收益率、对数收益率、区间收益率、滚动收益率都可以展开很久。但在入门阶段,最重要的不是先把定义体系讲得多复杂,而是先找到一个最自然、最稳定、最容易理解的切入点。日收盘价之间的普通收益率,正好满足这个条件。
它之所以适合作为第一列分析结果,是因为依赖关系足够简单。你只需要一列收盘价,就已经能表达出“今天相对昨天涨跌了多少”。对新手来说,这种定义直观、可验证,也能直接和原始价格列并排理解。更重要的是,它为后面的很多内容打好了基础。你以后再看均线、按月份聚合收益、检查极端波动,脑子里都会围绕这一列变化展开。
入门阶段最怕的是一开始同时讨论太多收益概念,结果还没真正算出一列结果,就已经先把自己绕晕。先把最基础的日收益率做扎实,远比一开始就追求更广的定义覆盖更有价值。
只看价格水平时,很多现象其实不容易直接比较。例如,一只 10 元的股票涨到 11 元,和一只 100 元的股票涨到 101 元,价格变化都是 1 元,但含义显然完全不同。收益率列的价值,就在于它把这种绝对变化重新归一成相对变化,让不同水平的价格开始可以被放到更可比的框架里看。
这个转变非常关键。因为很多金融分析的真正对象,从来都不是单纯的价格水平,而是价格变化的方向、幅度、频率和稳定性。你一旦开始用收益率看表,就等于开始从“数值大小”转向“变化行为”。这种视角转换,是金融数据练习里非常核心的一步。
也正因为如此,第 3 讲看似只加了一列,实际上是在帮你建立一种新的观察方式。以后你无论做更复杂的特征还是更简单的统计,很多判断都会比单看价格列自然得多。
第一次用 pct_change() 算出收益率列时,很多人最先注意到的不是后面的数字,而是第一行居然是空值。直觉上会觉得是不是哪里没算对,或者是不是 pandas 少算了一行。其实这恰恰是收益率定义本身在起作用。因为收益率要表达的是“当前相对上一行变化了多少”,第一行前面根本没有上一行可比,自然就没有办法得到一个正常的收益率值。
这件事看似很小,却特别值得在入门阶段先想明白。因为它会帮助你建立一个很重要的习惯:新生成的分析列出现空值时,不要先慌着把它当 bug,而要先问自己,这个空值是不是定义本身带来的正常结果。对于收益率来说,首行空值就是最典型、也最正常的例子。
只要这一步先理解透,后面你处理缺失值时就不会把“正常空值”和“异常空值”混为一谈。第 3 讲其实也在为第 4 讲的缺失值处理提前铺路。
对很多新手来说,一旦 return 列算出来,就会忍不住只盯着这一列的小数,好像新列既然生成了,就说明任务已经完成。其实更稳的做法,是一定把它和原始 close 列并排看。因为收益率不是凭空产生的新数据,它本质上是对价格变化的一种表达。只有把两列放在一起,你才真正能理解它在说什么。
当你同时看日期、收盘价和收益率时,会逐渐开始建立一些很直观的感受。比如价格略有上涨时,收益率是一个小正数;价格略有下跌时,收益率是一个小负数;第一行为空只是因为没有前值。这种并排观察,能把抽象的函数输出重新拉回到你看得懂的样本层面。
在数据分析里,这个动作非常值得被反复坚持。因为新增列的意义,从来不只是“程序成功生成”,而是“你能解释这列是怎么从原始列长出来的”。对入门者来说,解释能力比执行能力更重要。
第一次看到收益率列时,很多人会觉得数字特别小,好像不够“有戏剧性”。这其实非常正常。因为日频收益率本来大多数时候就是几个百分点以内,写成小数后会更显得克制。这不是数据没变化,而是金融数据在真实尺度上的自然样子。
这种“看起来小”的感觉,反而说明你开始接触到更真实的表达方式了。价格可以是十几、几十、几百,但收益率被统一到相对比例后,日常波动往往没有想象中那么夸张。也正因为如此,它才更适合后续比较和统计。若你一开始不适应这种尺度,很容易误以为结果“没什么信息量”;实际上,这恰恰是金融分析常用的工作尺度。
所以第 3 讲一个很重要的小提醒就是:不要因为收益率列看起来不大,就低估它的价值。越是这种不夸张的小数列,后面往往越能支撑起很多稳定分析动作。
前两讲更多是在读数据、收数据、整理表;而到了第 3 讲,工作流开始真正变化。你第一次不是只消费已有字段,而是在原始字段基础上主动生成一列新的分析结果。这种变化很重要,因为它几乎是后续所有数据分析的共同模式。以后你做均线、波动率、滚动高低点、月度统计,本质上都是在沿用同一种工作方式:在已有列基础上长出新列,再基于这些新列继续分析。
也就是说,第 3 讲除了新增收益率列之外,更深一层其实是在帮你建立“原始列加衍生列”的工作流意识。只要这层意识先建立,后面再遇到新任务时,你就不会老是停在“表已经读进来了,然后呢”的状态,而会自然开始思考:当前最值得长出来的第一列分析结果是什么。
这是一种很关键的数据分析思维转变。它意味着你开始把 DataFrame 当作一个可以逐步加工、逐步扩展的工作面,而不是一个只能被查看的静态对象。
收益率列一旦出现,后面的很多问题就会变得更具体。首先,你会立刻遇到首行空值,这为下一讲处理缺失值提供了一个非常自然的样本。其次,你会开始更在意日期顺序是不是正确,因为收益率本质上依赖相邻两行的先后关系。若顺序有问题,收益率就可能“算得出来”,但语义已经偏掉。
这说明第 3 讲虽然聚焦在新增一列上,实际上已经把后面几讲的需求一起激活了。缺失值不再是抽象话题,而是你眼前就能看到的结果;排序也不再只是表面整洁,而是直接影响到收益率定义是否成立。正因为如此,第 3 讲在整套 pandas 短课里是一个非常关键的转折点。
它让后面的内容不再像散落的小技巧,而开始围绕同一张工作表持续深入。只要这一讲写稳了,后面几讲会顺很多。
收益率列一旦生成,很多人会自然觉得任务已经完成,因为表里确实多出了一列新结果。更稳的做法,是再往前多走一步,确认这列新结果是否已经真正接进了后面的工作流。也就是你要知道:它会把你自然带向下一讲的缺失值处理,也会让你更在意日期顺序和相邻样本关系,后面按月份聚合时也会直接依赖它。只要这些后续连接已经在你心里变得清楚,说明这列收益率不再只是“新出现的一列”,而是已经真正进入分析主线。
这个确认动作非常有价值。因为很多入门练习之所以学完就散,问题不在于没写出结果,而在于结果没有被放进更完整的链条里。第 3 讲如果能把这层链路感建立起来,后面几讲就会明显更顺,不会像一组零散技巧拼出来的练习。
从这一步开始,你以后每新增一列,都值得用一组类似的问题来审查它。比如:这列是从哪一列长出来的,定义是否足够清楚,结果是否和原始列的变化方向一致,有没有自然带来新的空值或清洗任务。收益率列正好是最合适的第一个练习对象,因为它来源简单、变化直观、后续影响也非常清楚。只要你在这里先把这种审查习惯建立起来,后面面对均线、滚动统计和更复杂特征时,思路就会稳很多。
因此,第 3 讲除了新增一列结果外,实际上也在帮你建立一个非常基础但很重要的工作习惯:衍生列生成以后,不只是看它有没有算出来,还要看它是否可信、是否解释得通、是否已经接进后续主线。
如果把这一讲真正做完,你心里通常会出现一种很明确的验收感:你已经不是单纯知道某个函数名字,而是已经能把“收盘价列”“收益率列”“第一行空值”“日期顺序”这几个点放在一起解释清楚。也就是说,别人问你这列是怎么来的、为什么第一行会空、它接下来能拿去做什么,你都可以不依赖代码提示,直接说出一条完整且自洽的说明。只要这种说明能力已经出现,这一讲才算真正落稳。
这种验收感很重要,因为它标志着你已经从“照着写”往“自己能解释”迈了一步。对入门阶段来说,这比多记一个函数名字更有价值。
这一讲的重点,不只是会写出 pct_change(),而是第一次真正让工作表长出一列带分析含义的新结果。收益率之所以适合作为第一列衍生指标,是因为它依赖简单、解释直观、后续用途广,而且能帮助你从“看价格水平”自然转向“看相对变化”。只要你已经理解第一行为什么为空,并会把收益率和收盘价并排解释,这一讲就真正完成了。
本讲是《pandas金融数据入门短课》的第 3 讲,当前主题是《新增收益率列》。上一讲已经把原始行情表缩成当前任务需要的工作表,这一讲则第一次在这张表上生成了真正有分析意味的新列。下一讲会顺着这个结果继续处理缺失值,把这张表进一步整理到可以稳定往后传的状态。
风险揭示与免责声明
本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。
本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。
市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。
读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。