针对交易的组合数学和概率论(第四部分):伯努利(Bernoulli)逻辑·进阶篇
把损益拆成三态后怎么算概率链
还是盯交易的损益值,但这次不只用盈/亏两态,而是把结果分成三个严格定义的值,并且每个值的概率都已知。这种设定下,系统就变成了三重状态,但伯努利框架照样能套,只是要把状态计数器从两个扩到 N 个。 定义 i[0] 到 i[N] 为各状态在独立实验序列里的出现次数,N 是状态总数。选定前 i 个状态的数量后,第 i 个状态的剩余可用次数就是 s[i] = N - 前 i-1 个状态出现数之和。由于每条概率链同分布但顺序不同,相同状态数量的链数用连乘组合算:A[h](N,i[0],i[1],…i[n]) = C(N,i[0]) * C(N-i[0],i[1]) * … * C(N-前面之和, i[n])。 单条链的概率按伯努利公式乘状态概率:P[k] = A[h](...) * Pow(p[0],i[0]) * Pow(p[1],i[1]) * … * Pow(1-前面概率和, 余数)。我用 30 步、三态画了三维图验证,柱体总体积恰为 1,说明所有不相干事件正好铺满完整样本空间。 图上 S1、S2 是前两态出现次数,S3 = 30 - S1 - S2。若系统跑到四态就得四维图,五态要五维,人眼只能看三维,更高维函数虽算得动却没法直接画出来。外汇与贵金属市场高杠杆、多噪声,这种多态模型仅用于概率结构理解,实盘须自行回测验证。
◍ 用递归元组撑起多状态组合
双重状态用一维数组就能表达,但多重状态若硬套三维以上数组,在绝大多数语言里既不直观也难维护。更干净的做法是把数组嵌进数组,形成元组:比如记成 “[31,1]”,代表这个矩阵元素自身又是一个 31 行 1 列的矩阵。 在这种结构里,第一列和第三列描述元组内部形状,第二列是某条唯一分支的等效数量,第四列是该分支的总概率(前提是分支内概率相等)。若只要双重状态,元组退化为一维数组,就回到伯努利公式里的简单组合。 验证元组算得对不对,准则是核对事件全分组和唯一分支总数。可写一个递归函数,把任意复杂度的元组元素全加总;它内部自我调用,因此步阶数和状态数都不限。独有分支的真实总数由 Pow(N,n) 给出——状态数 N 的 n 次幂,即所有状态链的可能组合,图例中存为 CombTotal 变量,函数总和须与之相等。 计数元组要用同构的递归函数,差别只在每级要乘剩余自由步阶的组合数,概率计算还需乘当前状态概率与已累积链概率,一路累到无空闲步阶为止。 从实盘数据也能反推状态:订单的生存期、手数、盈损等都是事件特征。样本有限则状态有限,例如把不同盈利值各视为一态,计数后除以总订单数得概率。某示例里 7 笔订单按规则分成互不交叉的状态组,各态概率 = 该态订单数 ÷ 7,全部累加应为 1。外汇与贵金属市场高杠杆、滑点无常,此类统计仅作概率参考,不构成方向断定。
「聚类能当现有系统的过滤器」
上面几节把样本评估、状态分类和新样本生成走通了,但真正产生价值的一步在后面:把样本做聚类。多造几组样本分别评估,是经典的做法,也能直接当成过滤器挂到现有系统前面,交易性能有可能被抬升。 更激进的玩法是,某些在历史回测里看似无利可图的策略,只要对数据聚类、挑出其中盈利的那一撮子样本,就可能转出正期望。外汇和贵金属杠杆高、滑点跳空频繁,这种筛选不保证赚钱,只是把亏损样本挡在门外。 这套机制真正该待的位置,是可伸缩交易系统的数据处理阶段。后面组装自适应交易系统时我们会直接调用它,现在先留个接口在这里。
最后一句大实话
把价格形态还原成一串状态链之后,真正要盯的不是某根 K 线,而是状态分组是否穷尽且互斥——总概率等于 1 才配叫完整事件空间,不然你拆得再细也是在漏算。 评论区里有人拿硬币立边类比倾斜状态,作者补了一句:只有质心正投影在支点上才稳,其余都是假稳,这套思路搬到多维参数向量上一样成立。 外汇和贵金属杠杆高、跳空频繁,用状态链做统计套利前,先开 MT5 把历史回测跑成虚拟权益曲线,看非价格维度的形态是否比肉眼图形更抗猎杀,再谈实盘。