01学完这一课,你能做到什么
假设两套策略都把 100 万元变成了 200 万元。第一套一路比较平稳,第二套中途只剩 60 万元,后来才涨回来。只看期末金额,你会觉得它们一样;真正开始持有时,你的感受和承受能力可能完全不同。
学完这一课,你应该能:
- 区分总收益、和复合增长速度;
- 手算,并看懂它的时间顺序;
- 区分 (收益相对最大回撤)和 (收益相对波动);
- 用、和利润描述交易怎样赚钱;
- 检查报告的成本、现金流、基准和交易记录,而不是只看一个漂亮数字。
先记住一个前提:净值是把起始资产归一为 1 后,按账户资产变化得到的序列。如果中间有入金或出金,要先选对收益口径,不能把新投入的本金当成投资赚到的钱。
- 1资金增长总收益、年化收益
- 2下跌风险最大回撤、波动
- 3风险调整Calmar、Sharpe
- 4交易质量胜率、盈亏比、利润因子
- 5比较口径基准、成本、现金流
一句话记住收益曲线不是完整成绩单。
02总收益和年化收益:先看赚了多少
先看最简单的情况:没有额外入金或出金,100 万元变成 200 万元。
总收益率的公式是:
总收益率 = 期末资产 ÷ 期初资产 − 1
代入数字:200 ÷ 100 − 1 = 100%。所以,资产变成原来的 200%,不等于收益率是 200%;真正赚到的是原本金的 100%。
如果要比较不同持有时间,就要看年化收益。年化收益可以理解为:假设每年以同样速度复利增长,最终能得到相同结果的速度。
CAGR = (期末资产 ÷ 期初资产)^(1 ÷ 年数) − 1
CAGR 是复合年增长率,也就是把多年的增长换算成一个等效的年复利速度。
例 1:100 万元十年变成 200 万元。
CAGR = (200 ÷ 100)^(1 ÷ 10) − 1 = 2^(1/10) − 1 ≈ 7.18%
例 2:10 万元五年变成 18 万元。
CAGR = (18 ÷ 10)^(1 ÷ 5) − 1 = 1.8^(1/5) − 1 ≈ 12.47%
第二个例子总收益只有 80%,但年化更高,因为持有时间更短。不要把总收益直接除以年数:那不是复利速度。
CAGR 只看起点、终点和经历了几年。它不会告诉你中间是平稳上涨,还是先大跌再涨回来。比较股票、房产或其他资产时,还要统一杠杆、、和现金流口径。
一个月的偶然高收益不能直接外推成全年能力。年化数字方便比较,不代表未来一定能重复。
CAGR = (期末资产 ÷ 期初资产)^(1 ÷ 年数) − 1
100 万元十年变 200 万元,CAGR ≈ 7.18%。
一共增加多少
看期初到期末的总变化。
等效每年增长多快
按复利换算,适合比较时长不同的结果。
一句话记住总收益看结果,CAGR 看复利速度。
03最大回撤:你曾经差点撑不住多少
假设净值依次是 1.00、1.20、0.90、1.10。它先涨到 1.20,后来跌到 0.90,再回到 1.10。最大回撤一定要从先出现的高点往后找低点,不能把全样本的最高点和最低点随便相除。
在每个时点,先找截至当时出现过的最高净值 H_t,再计算:
回撤 = 1 − 当前净值 ÷ 历史最高净值
代入最高点 1.20 和之后的低点 0.90:
回撤 = 1 − 0.90 ÷ 1.20 = 25%
所以这组数据的最大回撤是 25%。有些系统用 -25% 显示,同一个指标要先看清它的正负号定义。
最大回撤不只是一个百分比。假设账户从高点 100 万元跌到 60 万元,就是损失 40 万元。年化收益 30%、最大回撤 40% 的组合,可能很赚钱,也可能让你在恢复前就无法继续持有。
历史最大回撤只是已经发生过的最深下跌,不是未来损失的上限。运行中看到 35% 回撤时,你不知道它会不会继续扩大到 40% 或更高。
无杠杆资产下跌、不足导致强平、账户爆仓,是不同风险,不能都用“回撤”三个字混在一起。提前写好风险规则,比情绪失控后临时决定更容易执行。回撤 10% 以内可能更容易持有,年化 50% 也可能伴随 80% 回撤,但这只是感受例子,不是固定对应关系。
- 1找到当前以前的最高净值例如 1.20
- 2找到高点之后的低点例如 0.90
- 3用高点减损失比例1 − 0.90 ÷ 1.20 = 25%
一句话记住回撤必须先高后低,历史不是上限。
04Calmar 和 Sharpe:收益要放到风险旁边看
如果策略年化收益 12%,最大回撤 6%,可以用 Calmar 比率做一个直观比较:
Calmar = 年化收益 ÷ 最大回撤绝对值
代入数字:12% ÷ 6% = 2。
这里的两个数字必须来自同一个分析区间。最大回撤为 0 时,分母为 0,Calmar 不能正常定义;样本太短时,它也可能异常漂亮。有人会把小于 1、超过 2、达到 3 当作经验分档,但它们不是所有市场和策略都通用的合格线。你还要一起看样本期、交易次数、收益路径和未来可能的回撤。
Sharpe(夏普比率)回答的是另一个问题:平均,相对于收益波动有多大。超额收益就是扣掉同频率无风险基准后的收益。
Sharpe = 超额收益序列的平均值 ÷ 超额收益序列的标准差
例如,假设一个月的超额收益为 2%、4%、0%,平均超额收益是:(2% + 4% + 0%) ÷ 3 = 2%。它们相对平均值的波动标准差还需要按选定的标准差口径计算,再用 2% ÷ 该标准差 得到 Sharpe。若要年化,还必须说明使用的是月度、日度还是其他频率,以及年化所用的期数假设。
Calmar 的分母是最大回撤,Sharpe 的分母是波动率,不能混用。Sharpe 为负,通常表示按你选择的无风险基准计算,平均超额收益为负。Sharpe 高也不等于没有尾部风险:很多小盈利后的一次大亏,可能被短样本遮住。
不要只问“哪个指标更高”。总收益、CAGR、最大回撤、Calmar 和 Sharpe 需要放在同一张表里,连同分析区间和计算口径一起看。
年化收益 ÷ 最大回撤
看收益相对最深历史下跌的关系。
平均超额收益 ÷ 波动率
看收益相对日常波动的关系。
一句话记住Calmar 看回撤,Sharpe 看波动。
策略评估工作台
切换三组固定教学情景,计入或忽略交易成本,比较年化收益、最大回撤、卡玛、夏普、胜率和盈亏比。
先猜哪套策略更值得继续研究,再运行评估查看完整指标。
05胜率、盈亏比和利润因子:看策略怎样赚钱
先看三笔净交易利润:+"+100、-50、+200。"+有两笔盈利,一笔亏损,所以胜率是:
胜率 = 盈利交易次数 ÷ 统计交易总次数
代入数字:2 ÷ 3 = 66.7%,也可以写成约 2/3。
平均盈利是 (100 + 200) ÷ 2 = 150,平均亏损绝对值是 50,所以平均盈亏比为:
平均盈亏比 = 平均盈利交易收益 ÷ 平均亏损交易损失的绝对值
代入数字:150 ÷ 50 = 3,也就是 3:1。
利润因子不是平均盈亏比。它用所有盈利金额除以所有亏损金额的绝对值:
利润因子 = 全部盈利金额之和 ÷ 全部亏损金额绝对值之和
代入数字:(100 + 200) ÷ 50 = 6。
所以,同一组交易可以同时得到胜率约 66.7%、平均盈亏比 3、利润因子 6,但这三个数字回答的不是同一件事。报告里要写清指标名称和公式。
统计前先定规则:分批买卖和部分平仓怎样合并?未平仓交易算不算?手续费在每笔收益中有没有扣掉?如果十次交易全部盈利,平均亏损没有观察值,盈亏比应写“未定义”,不能说它特别高。
趋势策略可能多次小亏,靠少数大盈利赚钱;均值回归策略可能频繁小赚,偶尔大亏。趋势风格可以出现约 25%–30% 胜率、盈亏比可能 10 倍;另一种策略可能有 80% 胜率、7:1 盈亏比。数学上高胜率和高盈亏比并非绝对不能同时出现,但越亮眼,越要检查样本量、成本、未来数据泄漏和漏记亏损。
忽略成本时,每笔交易的期望收益可以写成:
每笔期望 = 胜率 × 平均盈利 − (1 − 胜率) × 平均亏损绝对值
假设胜率 30%、平均盈利 3、平均亏损 1:
0.3 × 3 − 0.7 × 1 = 0.2
这个 0.2 还没有扣手续费、等成本。
趋势交易里常说“让利润发展”,可以把它改成明确的退出规则:例如达到什么条件继续持有,什么条件止盈或。不要靠某个交易者的个人故事证明策略有效。
每笔期望 = 胜率 × 平均盈利 − (1 − 胜率) × 平均亏损绝对值
30% × 3 − 70% × 1 = 0.2;成本还要继续扣除。
胜率
盈利交易占全部交易的比例。
盈亏比
平均赚一笔对应平均亏多少。
利润因子
全部盈利金额对应全部亏损金额。
一句话记住胜率、盈亏比、利润因子不能互相替代。
06用公共回测流程减少重复工作
你不必每换一条策略,就重新写一遍数据读取、资金初始化和报告输出。一个公共回测流程通常会依次完成:播放历史 、记录买卖、更新资金和持仓,再由分析器输出指标和图表。
可以把这些重复部分集中起来:读取数据、初始化引擎、设置初始资金和费用、挂载策略、运行分析器、生成图表报告。常见的封装函数名可以是 run_and_report,放在类似 data_loader 的公共模块中。它还可以封装 MySQL 查询,从类似 trade_stock_daily 的行情表读取日期、、最高价、最低价、收盘价和 volume()等输入。
公共函数的价值是少写重复代码,不是自动保证结果正确。你仍然要核对分析器口径。建议先准备一个很小的人工样例,逐项检查资金曲线、交易成本、胜率和回撤,再跑长时间数据。
策略规则可以像模块一样替换:、MACD、指数等趋势规则; 等超买超卖规则;海龟、唐奇安通道和放量突破;波动策略和均值回归;还可以加入事件、宏观或跨市场信号。
每一个信号都要对齐当时真正能拿到的时间。不能把海外市场收盘后才出现的数据,拿去决定更早的国内成交。回测报告还要写清起止日期、比较基准、成本、方式、交易次数和未平仓处理。
最后做五项验收:
- 手算 100 万元十年翻倍和 10 万元五年至 18 万元的 CAGR;
- 对净值
[1.00, 1.20, 0.90, 1.10]写出每一步的历史高点和回撤; - 对
+100、-50、+200算胜率、平均盈亏比和利润因子; - 检查报告有没有基准、成本、复权、交易次数和未平仓口径;
- 分别比较一条趋势规则和一条震荡规则,遇到一个指标更好、另一个更差时,写出取舍,不要直接评为“优秀”。
完成标准是:你能解释每个指标的分子和分母,能从交易记录复算,能识别短样本、无亏损、零波动和现金流造成的异常。程序输出应该帮助你判断,不能替你检查口径。
- 1行情输入日期、开高低收、成交量
- 2策略运行信号、买卖、持仓
- 3资金更新费用和净值
- 4分析器收益、回撤、交易指标
- 5报告核对口径、成本、基准、时间
一句话记住公共流程省重复代码,不能省口径检查。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
同时看回撤、波动、交易质量和成本口径,不能只看收益曲线。
- CAGR 看复利速度
- 回撤必须先高后低
- 利润因子不等于盈亏比
记住这 5 句话
- 01总收益率看资产增加多少,CAGR 看等效复利速度;100 万元十年翻倍的 CAGR 约为 7.18%。
- 02最大回撤必须从先出现的高点往后找低点;历史最大回撤不是未来损失上限。
- 03Calmar 的分母是最大回撤,Sharpe 的分母是波动率,负 Sharpe 通常表示平均超额收益为负。
- 04胜率、平均盈亏比和利润因子分别看次数、平均交易和总金额,不能互相替代。
- 05公共回测流程能复用代码,但时间对齐、成本、现金流、基准和未平仓口径仍要人工核对。
完成这一课
读完讲义、动手做一次实验、答对小题,这一课就算学完了。
- 读完讲义
- 完成一次策略指标评估
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定策略评估情景,用于比较收益、风险、交易质量和交易成本。
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。