蒙特卡洛模拟(打乱交易日顺序)

对一份交易记录做蒙特卡洛模拟(Monte Carlo simulation),就是把已记录的那些交易日的先后顺序打乱很多次,再让每一种排列按账户规则重放一遍,从而得到一个结果区间,而不是实际发生过的那一条单一路径。它显示的是结果对「日子的先后顺序」有多敏感,而不是这套策略有没有优势。

Senzoukria · 术语表 · 更新于 2026 年 9 月


基本想法

一条资金曲线,只是你交易过的那些日子的一种排列。如果同样这些日子以另一种顺序到来,峰值、谷底以及任何一条规则被触犯的日期都会不同。把每日结果重新洗牌并重放每一种排列,回答的是「我的回撤有多少是日子的顺序造成的」,而且全程没有凭空造出任何一天。

输出是一个分布:每一种排列的最大回撤、某条账户规则会在哪一天被触犯、是否达到了出金条件。真实路径上那个单一数字,被这个分布的各个分位数取代。

两种洗牌方式

  • 按日洗牌:每一天彼此独立。连亏会被打散,所以模拟往往会低估成串出现的亏损。
  • 按块洗牌:连续的日子被保持在一起。连亏得以保留,但块数越少,能产生的不同排列也越少。块长会改变结果,而且没法完全说清楚理由;挪动它,就能看出答案有多敏感。
  • 无论哪种方式,样本就是那点样本。交易时段太少时,各种排列几乎一模一样,那些百分比会被读成确定性——而它们并不是。

在 Senzoukria 里

桌面端的「Prop 公司模拟」里有一节叫「如果同样这些日子以另一种顺序到来」,提示写着:同样的交易日,洗牌 N 次;它显示的是一组合理结局的区间,并不用来给策略排名。它会报告通过的概率、拿到第一次出金的概率、在出金前爆掉的路径占比,以及在所配置规则下的净现金利润中位数。

「回撤区间」面板提供上述两种方法——按日洗牌和按块洗牌——并根据洗牌后的路径有多频繁地触及最大回撤,把它标注为偶发、常见或家常便饭。另有一个独立面板「账户触及最大回撤的概率」,它会带着反复购买账户的设定重放整段运行,并统计这些账户的下场。当交易时段少于二十个时,「回撤区间」面板会警告:洗牌产生的路径几乎一模一样,那些百分比会被读成确定性——而它们并不是。当交易记录里没有偏移数据、而某条规则又盯着浮动盈亏时,Prop 公司模拟会拒绝对那条规则下结论,而不是凭空假设一条价格路径。

常见错误

  • 把中位数结局读成预测。这个模拟只是把已经发生过的事情重新排序。
  • 用蒙特卡洛通过率去比较两套策略。这个工具量的是顺序敏感性,不是优势。
  • 在账户规则按日结算时却去洗牌单笔交易。日内规则需要「按日」这个颗粒度。
  • 忘了按日收盘做的模拟,看不见一次在收盘前就已修复的盘中触犯。

其他语言版本

常见问题

打乱交易时段会造出新的市场数据吗?
不会。每一条路径用的都恰好是那些已记录的日子,只是顺序不同。策略、成交和市场本身都没有任何改变。因此这套方法揭示不出样本里从未出现过的风险;它只能显示这些已记录的日子如何组合成更好和更坏的序列。
块长为什么重要?
真实交易里,亏损的日子往往成串出现。逐日洗牌会把这些串打散,产生出比现实更平滑的路径。保留连续日子组成的块能保住这种成串性,但会减少不同排列的数量。并不存在一个正确的块长;桌面端的帮助文字说:挪动它,然后看答案变化有多大。
蒙特卡洛模拟和置换检验是一回事吗?
两者共用洗牌这套机制,但问的是不同的问题。这里的蒙特卡洛打乱的是日子,用来衡量在账户规则下结局对顺序的依赖程度。置换检验打乱数据是为了构造一个原假设分布,追问观测到的结果是否可能出于偶然,并给出一个 p 值。

继续阅读