累计净值曲线:一行代码的"策略心电图"
我的掌握程度:
先掌握这个答案
计算:equity=(1+r).cumprod()(初始为1);对数变体:log_equity=ln(1+r).cumsum()——画出来y轴等比例,长期比较更公平(涨50%和跌50%在对数图上等距)。五类读图信息:①斜率=收益速度;②颠簸=波动;③峰谷深度=回撤;④平台期=横盘磨损;⑤恢复斜率=策略韧性。画图陷阱:①普通坐标下长期曲线让早期回撤"消失"(视觉压缩)——用对数坐标;②不同起点的曲线不可直接叠放(都需归一到1);③截断y轴夸大波动。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
本阶段实战方法 · 每个统计量都要带单位和假设
计算收益、波动、回归、显著性或相关性时,先明确样本和推断条件。
- 写清收益频率、样本数、缺失处理、是否含费用;百分数与小数不可混用。
- 手算一组小样本,再用代码复算;区分算术均值年化、复合年化和年化波动。
- 解释假设不成立会发生什么:自相关、肥尾、非平稳与多次试验都会影响结论。
使用边界
- p值不是原假设为真的概率,也不是策略未来盈利概率。
- 日波动×√252依赖时间聚合假设;252是教学常用交易日数,实际市场与口径可能不同。
背景 · 从一个困惑说起
所有绩效分析的起点是一条曲线:从1.0出发,按每日收益复利累乘。它是策略的心电图——形状里藏着收益、波动、回撤、修复力的全部信息。读懂它的生成与解读,是量化研究的"第一行代码"。
由此产生的问题
净值序列的标准计算与对数变体是什么?从曲线形状能读出哪五类信息?常见的画图陷阱?
核心概念
计算:equity=(1+r).cumprod()(初始为1);对数变体:log_equity=ln(1+r).cumsum()——画出来y轴等比例,长期比较更公平(涨50%和跌50%在对数图上等距)。五类读图信息:①斜率=收益速度;②颠簸=波动;③峰谷深度=回撤;④平台期=横盘磨损;⑤恢复斜率=策略韧性。画图陷阱:①普通坐标下长期曲线让早期回撤"消失"(视觉压缩)——用对数坐标;②不同起点的曲线不可直接叠放(都需归一到1);③截断y轴夸大波动。
为什么需要它
①一切指标的母体:年化、波动、回撤、夏普全部从净值序列导出——它错则全错;②对数坐标的职业习惯:机构研报的长期净值图全是对数轴——它让"复利"以直线呈现(恒定增长率=对数图直线);③诊断入口:拿到任何策略第一眼画净值+回撤双图(q-096毕业项目的标准动作)。
实际应用场景
标准三件套图:净值(对数轴)+回撤水下图+相对基准超额线;数据表里同时保留equity与log_equity两列是工程惯例。
与之前知识的联系
q-204的连乘在此成为可执行的序列操作;q-015(阶段1回撤)从曲线上取数;q-96(阶段1毕业项目)的画图作业在方法论上升级。
⚠ 常见误解
- 净值曲线陡=策略好:陡可能是杠杆或单一行情的礼物——叠上基准和回撤再看(q-004的教训重演)
- 普通坐标看长期没问题:线性轴会把早期-50%压成肉眼不可见的小坑——长期图必用对数轴
- 净值曲线可以从任意点开始比较:必须同起点归一,且注明区间——起点选择是常见的展示魔法(q-019)
🛠 本题实践任务
为你的组合/指数计算净值序列与回撤序列,分别用线性和对数坐标画出(matplotlib的plt.yscale('log'))。对比两图里同一轮回撤的视觉差异。
💡 提示(先自己想5分钟再看)
对数轴下回撤的深度=垂直落差;线性轴下它随净值水平被压缩。
✅ 验收标准
两张对照图+一句话观察。你从此拥有机构级的"读图仪"。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(复利连乘、净值概念),再用案例、公式和代码帮助理解。此功能需要先启用服务。