阶段3收益率数学●●●●●

日收益率的小数习惯:0.01还是1%?

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

先掌握这个答案

规范:一切计算用小数(0.01=1%);一切展示用百分比("1.00%")。pandas的坑:pct_change()返回小数——但如果你Excel导入的列是"1.23"(表示1.23%)需要÷100。年化一致性:日收益0.05%(小数0.0005)年化×252=0.126=12.6%——全程小数、只在最终打印时×100。检查三步:①看均值(日收益均值0.0005≈合理)②看std(日波动0.01-0.03=合理)③算年化后量级是否合理。

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

从理解到使用

先核对现金流与期限

没有中途出入金时才可直接用期末/期初计算持有期收益;分红、费用要避免漏计或重复计入。有出入金时区分时间加权与资金加权。复合年化使用净值比的幂,算术均值年化用于不同统计目的。

本阶段实战方法 · 每个统计量都要带单位和假设

计算收益、波动、回归、显著性或相关性时,先明确样本和推断条件。

  1. 写清收益频率、样本数、缺失处理、是否含费用;百分数与小数不可混用。
  2. 手算一组小样本,再用代码复算;区分算术均值年化、复合年化和年化波动。
  3. 解释假设不成立会发生什么:自相关、肥尾、非平稳与多次试验都会影响结论。

使用边界

  • p值不是原假设为真的概率,也不是策略未来盈利概率。
  • 日波动×√252依赖时间聚合假设;252是教学常用交易日数,实际市场与口径可能不同。
背景 · 从一个困惑说起
1%的日收益在Excel里输入1%、在Python里应该是0.01——这个看似琐碎的细节是新手bug的常客:百分号混进运算后结果差100倍。
由此产生的问题
小数与百分数的表示规范?pandas/numpy中的坑?年化时的一致性检查?
核心概念
规范:一切计算用小数(0.01=1%);一切展示用百分比("1.00%")。pandas的坑:pct_change()返回小数——但如果你Excel导入的列是"1.23"(表示1.23%)需要÷100。年化一致性:日收益0.05%(小数0.0005)年化×252=0.126=12.6%——全程小数、只在最终打印时×100。检查三步:①看均值(日收益均值0.0005≈合理)②看std(日波动0.01-0.03=合理)③算年化后量级是否合理。
为什么需要它
①100倍错误的免疫:一个百分号问题可以让年化从12.6%变成1260%——浪费半天debug;②工程规范的成本效益:花5分钟养成习惯避免未来每次的5分钟排查;③与pct_change的一致:它给的是小数——如果你忘了÷100在后续乘法中会"看起来对"直到某处不对——渐进式错误最难查。
实际应用场景
防御性代码:df['ret'] = df['ret'] / 100 如果源数据是百分数;打印时用f"{value:.2%}"自动格式化。
与之前知识的联系
q-201(收益率家族)的工程细节;pandas操作的规范之一(与q-339 dtype同为数据管道的卫生检查)。
⚠ 常见误解
  • pandas会自动识别百分号:不会——"1.23%"是字符串、1.23是数字——你必须手动÷100
  • 结果看起来差不多就行:0.0001和0.01差100倍——年化后差异从2.5%变成252%——量级检查是唯一防线
  • 百分号只是显示问题:在数学运算中它就是×100的隐含操作——混用=每步差100倍——不是显示是逻辑

🤖 AI导师

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