认识概率:如何测试你的交易系统胜率和最大回撤
“我的系统胜率70%。“——你是怎么知道的?
这个问题问倒了90%的交易者。
引子:你的”70%胜率”是怎么来的
如果你现在说自己的系统胜率70%,我想请你认真回答以下几个问题:
你是用多少笔历史数据计算出来的?是20笔还是200笔?是最近这一个月的数据,还是跨越了不同市场环境的数据?你用的是严格的系统规则回测,还是在图表上”感觉这个信号很好所以算,那个信号看起来太差就跳过”?
大多数人的诚实答案是:我没有系统测试过。我说的70%,是根据最近几笔的感觉,或者是我在脑子里”大致估算”的结果。
这就是问题所在。
一个没有被数据验证过的系统,不叫交易系统,叫做偏好。你只是用规则包装了你的直觉,然后给它起了个名字叫”我的系统”。而一套只有偏好没有数据的系统,和随机开仓没有本质区别。
没有经过测试的交易系统,等同于没有交易系统。
更危险的是,很多人已经在用这套”系统”真实入场了。他们以为自己有70%的胜率,结果遭遇连亏5笔,立刻开始慌乱:这是不是系统失效了?我要不要换一套?我是不是做错了什么?
如果他们有真实的测试数据,就会知道:连亏5笔在他们的系统里到底是正常波动还是真的异常。但他们没有,所以他们只能凭感觉判断,然后凭感觉做决定,然后继续亏损,继续怀疑,继续修改……这是一个永远走不出去的循环。
这篇文章要解决的,就是这个循环的根源:如何用科学的方法,测试出你的交易系统真实的胜率和最大回撤。
一、为什么必须测试系统概率
先说一个很多人没有意识到的问题:即使你的系统真的有优势,不知道数据依然会让你亏钱。
原因是这样的:一套期望值为正的系统,在运行过程中必然会经历亏损阶段。连亏3笔、5笔、甚至7笔,都在正常的统计概率范围内。但如果你不知道这个正常范围是多少,你就没有办法区分”系统正常运作中的波动”和”系统真的失效了”。
两种情况的正确应对方式是完全不同的:
- 正常波动:继续执行系统,等待统计规律发挥作用
- 系统失效:停下来检查原因,必要时暂停交易
但如果你没有数据,你只能凭感觉猜。而感觉通常是错的,尤其是在你连续亏损的时候——这时候人的大脑会放大每一笔亏损的痛苦感,本能地倾向于”一定是系统出问题了,我要赶快换策略”。
真实情况是什么?大多数时候,你遭遇的连亏,只是正常的统计分布,不是系统失效。但你不知道,所以你在应该坚持的时候放弃了,然后等行情来了,你又在别人的系统里或者凭感觉重新入场,重新开始这个循环。
有了准确的胜率和回撤数据,你才知道连亏5次是正常还是异常。这是测试系统最核心的价值。
另外一个角度:系统数据决定了你能用多大的仓位。
如果你知道你的系统最大连续亏损是7笔,那你就能计算出在最坏情况下,你的账户会缩水多少。假设你每笔风险账户的2%,连亏7笔的最大回撤大约是13-14%。这在心理和资金上都是可以承受的。
但如果你不知道系统数据,随便用了账户5%的仓位,连亏7笔就是近三分之一的账户亏损。到那时候,就算系统没有失效,你的资金也快撑不住了。
没有数据就不知道仓位,不知道仓位就无法管理风险,无法管理风险就只能靠运气。
二、简单回测的完整步骤
回测是测试系统数据最基础的方法。很多人觉得回测很复杂,需要专业软件,需要编程,需要大量的时间。其实不是——你只需要一个Excel表格,就能完成最有价值的回测工作。
以下是完整的步骤:
第一步:明确你的系统规则
在开始回测之前,你必须把系统规则写清楚,而且要写到可以被别人机械执行的程度。
比如,你的规则不能是”在支撑位附近出现反转信号时买入”,这太模糊了。什么叫”附近”?距离多远算近?什么叫”反转信号”?
规则应该是:“在日线图上,价格接触前期关键支撑区(最近两个月内被测试过至少一次),同一根K线收出Pin Bar(下影线为实体的2倍以上,实体在K线上半段),次日开盘买入,止损设在Pin Bar低点下方10%的ATR处,止盈设在最近阻力区下沿。”
这才是可以执行的规则。
如果你现在写不出这样精确的规则,说明你的系统还没有成型,不是回测的问题,是系统建立的问题,需要先回去把系统明确化。
第二步:选定测试时间段
选一段有代表性的历史数据。建议包含以下几种市场环境:
- 明显的上升趋势段
- 明显的下降趋势段
- 震荡行情段
- 至少一次较大波动事件(比如重要数据发布、黑天鹅事件)
时间跨度建议至少12个月,如果你的系统信号频率较低(比如每月只有3-5次信号),建议覆盖24个月以上,确保样本量达到100笔。
注意:不要只选择系统表现好的时期来回测。选取时间段要在回测开始前决定,而不是看了图才决定。
第三步:逐根K线扫描,标注所有信号
这是最费时间但最重要的步骤。
从你选定时间段的起点开始,按照时间顺序,一根K线一根K线地往后看。每当出现符合你系统规则的信号时,记录下来,不管你”感觉”这次信号好不好。
这里有一个关键原则:不要用事后知识来过滤信号。
在实盘中,你只能看到当前K线和之前的K线,看不到之后发生什么。回测时也要如此——当你的规则条件满足,就记录为一笔交易,不能因为你知道后面价格会下跌就主观跳过这笔。
如果你过滤掉看起来”不好”的信号,你的回测结果会严重失真,胜率虚高,但实盘里这些你跳过的信号照样会出现,你或者会按规则做(然后亏损),或者会继续跳过(然后执行不一致)。两种情况都是问题。
第四步:记录每笔交易数据
为每一笔标注的交易记录以下数据:
| 字段 | 说明 |
|---|---|
| 日期 | 入场日期 |
| 品种 | 交易标的 |
| 方向 | 多/空 |
| 入场价 | 按系统规则确定 |
| 止损价 | 按系统规则确定 |
| 止盈价 | 按系统规则确定 |
| 实际出场价 | 是否触及止损/止盈,还是提前出场 |
| 结果(R) | 盈利/亏损多少R(以止损距离为1R) |
| 市场状态 | 趋势/震荡/转折 |
| 备注 | 任何影响结果的特殊情况 |
第五步:计算核心指标
收集完100笔以上的数据后,计算以下指标:
胜率:盈利笔数 / 总笔数
平均盈利(R):所有盈利笔的R值总和 / 盈利笔数
平均亏损(R):所有亏损笔的R值总和 / 亏损笔数(通常接近1R,如果止损执行到位)
盈亏比:平均盈利R / 平均亏损R
期望值(每笔):胜率 × 平均盈利R - 亏损率 × 平均亏损R
最大连续亏损笔数:历史上最长的连续亏损序列
最大回撤(R):资金曲线从最高点到最低点的跌幅(以R为单位)
这七个指标,是你的系统档案。你对自己的系统要比对任何一只股票还要了解。
能把这七个数字准确说出来的交易者,才算真正拥有了一套交易系统。说不出来的,只是在用一套自己不理解的东西在市场上冒险。
三、最大回撤的重要性:知道最坏情况才能活下来
胜率和盈亏比决定了你的系统在理论上能赚多少,但最大回撤告诉你,在最坏的情况下,你会损失多少。这个数字决定了你能不能活到”理论盈利”那一天。
为什么最大回撤如此关键
以一个简单的例子说明:
系统A:期望值0.3R/笔,历史最大回撤10R 系统B:期望值0.4R/笔,历史最大回撤25R
系统B的期望值更高,但最大回撤也更大。如果你用账户1%为1R,那系统A的最大回撤是账户的10%,系统B是25%。
对大多数人来说,账户缩水25%的时候,心理压力会极大,很难坚持执行系统。但账户缩水10%,可能还能保持冷静。
所以最大回撤不只是一个数字,它是在告诉你:你的系统要求你在多大的逆境中保持信任。
很多交易者在选系统的时候只看收益,不看回撤。但实盘里,你体验到的是回撤,不是最终收益。如果回撤大到让你无法坚持,你就没有机会等到系统的优势被释放出来。
最大回撤如何决定你的仓位
这是最大回撤最直接的实用价值。
计算方法很简单:你能承受的最大账户回撤是多少?假设是15%。你的系统历史最大回撤是12R。那么每笔风险 = 15% / 12 ≈ 1.25%。
也就是说,你每笔最多只能用账户的1.25%作为止损金额。这就是最大回撤告诉你的仓位上限。
很多人犯的错误是反过来:先决定用多少仓位,然后不管最大回撤是多少。结果遭遇历史最大回撤的时候,账户大幅缩水,系统还没失效,人先撑不住了。
最大回撤是你选择仓位大小的边界,不是拿来吓自己的数字。
历史最大回撤不等于未来最大回撤
这里有一个必须清楚的认知:历史回测数据里的最大回撤,不是未来最坏情况的上限,而是一个参考下限。
未来的市场可能会出现历史上没有的情况,导致更大的回撤。一种保守的做法是,把历史最大回撤乘以1.5,作为你在仓位计算时的参考值。
也就是说,如果历史最大回撤是12R,你在计算仓位时按18R来算。这给你留了安全边际。
四、前向测试:回测之后的真正验证
回测是第一步,但它不是最后一步。
回测有一个致命的局限:**你是在用事后已知的数据,测试一套你已经知道结果的系统。**这会引入各种无意识的偏差,比如:
- 你会无意识地选择系统表现好的时期
- 你会在模糊的情况下倾向于按”更好”的结果判断
- 你会不自觉地用事后知识来”优化”规则
这些偏差会让回测数据比实际更好看。这就是为什么很多人回测结果很漂亮,实盘一上就不一样了。
**前向测试(Forward Testing / Paper Trading)**是用来弥补这个缺陷的。
什么是前向测试
前向测试就是在实时市场中,用模拟账户(或者极小仓位的真实账户),按照你的系统规则执行交易,记录结果。
关键区别:你不知道之后会发生什么。每一笔信号出现时,你都是在真实的不确定性下做决定,而不是回头看历史数据。
这种测试更接近真实的实盘状态。如果你的前向测试结果与回测结果接近,说明系统的稳健性比较好;如果差距很大,需要找出原因——通常是回测时有主观偏差,或者你在前向测试中的执行与系统规则不一致。
前向测试需要多少笔
建议至少30-50笔。
30笔的样本量不足以做统计结论,但足以初步验证系统的执行和信号识别是否与回测一致。
注意:前向测试期间,不要因为遇到亏损就修改系统规则。这段时间的目的是验证和观察,不是优化。如果你在前向测试期间改来改去,最终得到的数据毫无价值。
前向测试结果如何解读
前向测试结束后,把数据与回测数据做对比:
- 胜率偏差是否在5-10%以内?(如果超过15%,说明系统有问题或执行有问题)
- 平均盈亏比是否接近回测值?
- 期望值方向是否一致(都是正的或都是负的)?
如果前向测试的期望值是正的,且与回测数据基本一致,你可以有较大的把握认为:这套系统在实盘中可能也会维持正期望。
如果偏差很大,先不要进入实盘。回去检查原因:
- 是你在前向测试中的执行不一致?
- 是市场环境发生了变化?
- 还是回测本身有过度拟合的问题?
前向测试的核心价值不是追求盈利,而是验证:你对系统的理解和执行,是否与你设计系统时的预期一致。
总结:测试是认识系统的唯一方式
很多交易者一辈子都没有认真测试过自己的系统。他们靠感觉入场,靠感觉出场,靠感觉判断系统是否有效。结果是:他们对自己的系统永远没有真实的认知,面对每一次亏损都是未知的冲击,面对每一次行情都要重新做心理斗争。
测试不能保证你未来一定盈利。市场会变化,过去有效的不代表未来永远有效。但测试能给你一件最重要的东西:对你的系统有真实的、基于数据的认知。
这种认知意味着:
- 你知道连亏5笔是不是正常,所以你能在该坚持的时候坚持
- 你知道最大回撤是多少,所以你能用合理的仓位,活到系统发挥优势的那一天
- 你知道系统的适用范围,所以你能在市场状态不符合时选择不交易,而不是硬做
这就是测试系统概率最根本的价值:它不仅告诉你系统是否有效,更告诉你,在这套系统下,你该怎样存活和执行。
你对系统了解得越清楚,你在实盘中就越能保持冷静。而交易中,冷静是一切的基础。
下一步,如果你还没有测试过自己的系统,现在就开始。不需要完美的准备,不需要专业软件。拿一张Excel表格,按照今天说的步骤,从你最近12个月的历史图表开始,一笔一笔地标注下去。
100笔之后,你会对自己的系统有一个全新的认识。
如果这篇文章对你有帮助,点个「在看」让更多交易者看到。 有问题欢迎在评论区交流,我会逐条回复。
往期精选:
免责声明:本文内容仅供学习交流,不构成任何投资建议。交易有风险,入市需谨慎。
推荐课程
合约陪跑实战训练营
不只教方法,更带你实盘执行。从仓位管理到止损止盈,手把手纠正你的交易习惯,建立可复制的盈利系统。
觉得有用?关注公众号获取更多干货
每周更新交易教学文章和视频,帮你建立系统化交易体系