
针对交易的组合数学和概率论(第四部分):伯努利(Bernoulli)逻辑
内容
概述
在本系列的前几篇文章中,我曾说过可把分形作为描述市场,尤其是定价的工具。 该模型完美地演绎了市场 — 这已通过计算和模拟得到证实。 最初的目的不仅是阐述最简单的定价形式,还可进一步阐述任何向量序列,其内拥有的一组参数类似于定价参数集合。 那么好了,在一般情况下,由此可证交易也是市场一个有机构成碎片,其特征是持续时间,和出现在交易过程中的概率。 可以从价格和交易里深入挖掘,并创建任意曲线。 对于价格,这条曲线是价格历史;而对于交易,这是交易历史。
价格的情况更清晰明了,因为这个序列中的所有成员显然都在相互效仿。 当然,有可能创建这样的价格序列,它们会相互重叠,但对其分析是绝对无用的,因为不会带来任何实际好处。 回测的情况,或交易历史,则更为复杂。 在研究这些过程时,我得出结论,有一条更容易、更正确的途径来实现盈利和稳定的交易 — 即通过分析交易历史或回测,。 在最后一篇文章里将会介绍其中一种方法,但目前还为时过早。
正确的数据表述在分析中的重要性
如果我们研究运用数学语言来描述交易历史和回测的可能性分析,首先我们需要理解这种分析的目的和可能的结果。 这样的分析有什么附加值吗? 事实上,不可能马上给出一个明确的答案。 但有一个答案,它可以逐渐推导出简单而有效的解决方案。 然而,我们应该先深入了解更多细节。 鉴于之前文章的经验,我对以下问题感兴趣:
- 有没有可能将任何策略简化为交易的分形描述?
- 如果可能,它在哪里能发挥作用?
- 如果并非总是可能,那么可还原性的条件是什么?
- 如果满足简化条件,则开发简化算法
- 考虑其它选择来描述策略。 普适
所有这些问题的答案如下。 可以将一些策略简化为分形描述。 我已经开发出这个算法,我将进一步讲述它。 它也适用于其它用途,因为它是一种通用分形。 现在,我们来研究并尝试回答以下问题:用随机数和概率论的语言来说,交易历史是什么? 答案很简单:它是一组孤立的实体或向量,它们在一定时间段内的发生具有一定的概率和时间利用因子。 这样的每个实体的主要特征是其发生的概率。 时间利用因子是一个辅助值,有助于判定有多少可用时间来进行交易。 下图可能有助于理解这个想法:
示意图中所用的符号:
- 黑点 — 交易的开始
- 红三角 — 交易的终点
- 橙色六边形 — 上一笔交易的结束,和下一笔交易的开始
- T[i] – time of a relevant trading window
- P[i] – 相关交易的盈利或亏损
- n – 交易数量
- m – 交易窗口数量
该图例展示了三幅图表,来证明选项 A 和 B 可以简化为选项 C。现在我们看看这些选项是什么:
- 选项 A 是我们如何看待使用所有可能的技巧、资金管理、等等技术进行的任意交易。
- 选项 B 相同,但考虑到一次只能开立一笔订单。
- 选项 C 是我们如何看待跟单信号服务亦或回测中进行的交易。
在此,选项 C 是信息量最大的选项,在大多数情况下,我们依赖于这种交易表示。 甚而,任何策略都可以简化为这种类型,因为净值曲线是任何回测或交易信号的主要特征。 该曲线反映了当前时刻的实际损益。
分析任意策略的净值曲线表明,如果该曲线保持不变,成交开立和平仓点可以位于绝对的任意位置。 这意味着一个交易策略可以用大量不同的方式来表达,所有这些方式都是等价的,因为它们的净值曲线是等价的。 因此,搜索所有等效选项没有意义。 那么寻找它们的目的是什么呢?
B 型策略可以很容易地转换为 C 型策略,因为我们只需要按照时间间隔的发生顺序将它们粘合在一起即可。 实际上,这正是测试器和信号服务所做的。 如果您尝试将 A 型转换为 C 型,则情况就不同了。为了实现这种转换,我们首先需要将 A 型转换为 B 型,然后再把结果转换为 C 型。现在你知道策略测试器和跟单信号服务是如何工作的了吧。
这种转换本身对交易没有任何实际价值。 然而,它有助于理解更深层次的事情。 例如,我们可以得出结论,有以下几种策略:
- 由两重状态描述
- 由多重状态描述
- 由无限多重状态描述
在本文中,我将向您展示前两种策略的描述示例。 第三种类型更复杂,需要单篇文章来讲述。 我会在合适的时候重返该想法。 无论如何,在研究第三种策略之前,有必要回顾前两种策略。 前两种类型会让我们做好准备,进而处理第三种类型,即普适策略。
双重状态
前几篇文章中讲述的分形实际上代表的是一个双重状态模型。 此处的状态是向上和向下的走势。 如果我们将该模型应用于余额曲线交易,而不是定价,则该模型将以完全相同的方式工作。 该模型基于伯努利(Bernoulli)规划案。 伯努利规划案描述了拥有双重状态的最简单分形:
- P[k] = C(n,k)*Pow(p,k)*Pow(q,n-k) — 伯努利公式(P[k] 是特定组合的概率)
- p 是取状态 “1” 作为单个实验得出的概率
- q 是取状态 “2” 作为单个实验得出的概率
由公式可以计算出概率,即在 “n” 步之后,我们将得到一条余额曲线,或任何其它曲线,其中将含有 “k” 第一状态和 “n-k” 第二状态。 这些不一定是交易盈利。 这些状态可以象征我们能看到的、唯一性的任何参数向量。 特定组合的所有概率之和必须形成一个完整的分组,其意味着所有此类概率之和必须等于一。 这象征着在 “n” 步中必须出现这样的组合之一:
- Summ(0...k…n)[ P[k] ] = 1
在本例中,我们感兴趣的是运用这些东西来描述定价、亦或回测和跟单信号。 想象一下,我们的策略是由等距止损了结的交易构成。 与此同时,我们也明白,不可能通过计算得出未来的预期价格走势。 这些概率的分布如下所示:
这三张插图所示:
- 随机游走交易的概率分布
- 盈利交易或上行趋势的概率分布
- 亏损交易或下行趋势的概率分布
从示意图中可以看出,根据稳步上升的概率,某些组合的概率会发生变化,最有可能的情况会向左或向右偏移,就像所有其它概率一样。 这种回测或定价表达法是最简单和首选的分析模型。 这种模型足以描述定价;然而,用其描述交易还是不够的。 实际上,余额曲线可以包含各种交易,它们在持续时间和损益方面有所不同。 取决于哪些交易衡量指标更重要,我们可以设置任意数量的状态,而不仅仅是两个。
多重状态
现在,我们来研究下面的例子。 假设我们仍然对交易的损益值感兴趣。 现在,我们知道损益状态可以取三个严格定义的值,且我们知道每个值的概率。 如果是这样的话,那么我们就可以说我们有一个三重状态系统。 有没有可能把所有可能的事件发展描述成一个双重状态系统? 事实上,这是可能的。 我打算稍微改进一下伯努利规划案,这样它就可以与任意状态数量的系统一起工作。
根据伯努利逻辑,我们需要定义状态计数器:
- i[0] – 在一连串独立实验中,第一种状态的结果数量
- i[1] 是一连串独立实验中第二种状态的结果数量
- . . .
- i[N] 是 N 个状态的结果数量
- N 是系统状态的数量
- s 是状态数量
如果我们逐个判定某个状态的出现次数,那么下一个状态的可用次数将为:
- s[i] = N - Summ(0… k … i - 1) [ s[k] ]
它可以简化。 如果我们选择了前一个状态的结果数量,那么下一个状态的结果数量与前一个状态的结果数量保持完全相同。 就像在伯努利规划案中一样,存在不一致、而概率相同的概率链。 所有状态数量相同的链条数量计算如下:
- A[h](N,i[0] ,i[1] ,… i[n]) = C(N , i[0]) * C(N-i[0] , i[1]) *…. C(N-Summ(0…k…n-1)[ i[k] ] , i[n])
- C 是组合
- h 是一套独有的步阶
显然,这类集合的概率可以用伯努利规划案计算。 将一个集合的概率乘以它们的数量:
- P[k] = A[h](N,i[0] ,i[1] ,… i[n]) * Pow(p[0], i[0]) * Pow(p[1], i[1]) … * Pow(1- Summ(0…j…N-1)[ p[j] ] , i[1])
- p[j] 是某一状态的概率
为了清楚起见,我创建了三维图形,就像前面两个状态的例子一样。 再一回,我们有 30 个步阶,但于此我们采用三种状态,替代原来的两种:
这种示意图的体量将恰好等于一,因为每个根柱线代表一个不相干的事件,而所有这些不相干的事件正好形成一个完整的分组。 示意图展示了基于不同概率向量得两种不同策略。 这些概率象征着三种状态之一得发生概率。
- S1 是首个状态出现的次数
- S2 是第二个状态出现的次数
- S3 = 30 – S1 – S2 – 是第三个状态出现的次数
如果我们的系统有第四种状态,那么它只能以四维的方式呈现。 对于五个状态,我们需要一个五维图,以此类推。 对于人眼来说,只能看到 3 维,因此更复杂的系统无法用图形来呈现了。 尽管如此,多维函数也是功能性的,就像其他函数一样。
多重状态的软件实现
双重状态可以用一维数组呈现。 那么多重状态呢? 我们也许能想象一个多维数组。 但是,据我目前所知,所有编程语言大多使用二维数组。 也许,有些人提供了创建三维或更高维度数组的可能性,但这并非一个方便的选择。 更好的选项是采用集合或元组:
这就是 “30” 步阶的情形。 第一列和第三列反映了元组的内部结构。 这只是内含一个数组中的数组。 例如写为 “[31,1]”,这意味着该矩阵元素也是一个具有 “31” 行和一列的矩阵。 伯努利公式和整个伯努利规划案只是这个更普适规划案的一个特例。 如果需要双重状态,元组就会变成一维数组,在这种情况下,我们将得到在伯努利公式中起关键作用的简单组合。
如果我们查看这些数组中的内容,我们将得到 “2” 和 “4” 列。 第二列是一组特定唯一状态的等效分支数量,第四列是该分支的总概率,因为它们的概率相等。
验证此类元组计算的一个真正清晰的准则是检查完整的事件分组和所有唯一分支的总数。 为此,我们可以创建一个普适函数,将其复杂元组的所有元素相加,无论其内部结构有多复杂。 上面的屏幕截图展示了一个示例。 这样的函数必定支持递归;它能在内部自我调用 — 在这种情况下,它将是任意状态数量和步阶数量的通用函数。 对于独有分支的数量,真实值计算如下:
- Pow(N,n)
换句话说,系统状态的数量必须提高到步阶的幂次方 — 这样我们就能得到由状态组成的唯一链条的所有可能组合。 在图例当中,这个数字显示为 “CombTotal” 变量。 总和结果将与该变量进行比较。
为了计数元组,我们应该使用具有相同递归结构的类似函数:
正如您所见,它们非常相似。 仅有几点不同。 在每个级别,我们还必须在剩余自由步阶将结果乘以组合数量。 在计算概率时,结果必须额外乘以当前被检查状态的概率。 此外,不要忘记乘以已经累积的链条概率。 逐一累积所有状态,直到没有剩余的空闲单元,而这些单元是步阶数量。
我们也可以考虑从我们知道的数据中提取状态的例子。 例如,我们有交易统计数据,其中存储了每笔订单的以下信息:生存期、交易量、亏损或盈利、等等。 由于样本是有限的,因此状态数量也是有限的。 例如,我们可以判定样本中有多少盈利选项。 每个独有的盈利值都可以被视为一个独有状态。 计数整个样本中所有此类盈利交易的发生次数,除以所有交易的总数,得到特定状态的概率。 针对所有状态重复这个过程。 如果我们把所有这些概率累加起来,我们得到最终的一个。 在这种情况下,所有的动作正确无误。 以类似的方式,我们可以按订单生命周期对交易进行分类。 换句话说,状态可以是事件的任何独特特征。 在这种情况下,交易被视为事件,而交易参数是特定事件的特征。 在我们的案例中,状态示例如下:
该图例展示了一组状态的编译示例。 根据规则,状态应该组成一个完整的事件分组,即不应该有交叉联合状态。 计算这些事件的概率则取表格中特定状态的数量除以所有订单数量(在我们的例子中是 7)。 这是订单的例子;然而,我们可以取任何其它状态进行操作。
结束语
在本文中,我尝试演示如何评估数据样本;如何进行数据分类,并将它们组合成一组状态,并从这些样本中生成新的样本;以及如何计算这些状态的概率。 如何处理这些数据取决于您。 我认为最好的方法是创建多个样本,并对它们进行评估 — 这也被称为样本聚类。 样本聚类可以作为一个很好的过滤器来提高现有系统的交易性能。 它还可以用于从看似无利可图的策略中赚取盈利 — 只需对数据进行聚类,并找到所需的盈利样本。 最重要的是,这种机制在可伸缩交易系统中的数据处理阶段能起到作用。 我们将在稍后的实践中应用这些机制,届时我们将组装一个自适应交易系统。 但目前,这只是抛出的另一块砖。
参考
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/10063
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
This article was written by a user of the site and reflects their personal views. MetaQuotes Ltd is not responsible for the accuracy of the information presented, nor for any consequences resulting from the use of the solutions, strategies or recommendations described.




让我们开始练习吧。例如,"200 "次抛掷。如果我们分析这一连串的试验,我们可以识别的不是单一的抛掷,而是例如具有不同状态集的不同链。在交易中,如果我们分析的不是交易链,而是价格,它们就被称为模式。任何模式都可以用状态链来充分准确地表示。有趣的是,当我们考虑单个状态或仅考虑一个步骤时,很可能会出现混乱,但一旦这些状态组合成一个链条,就会形成一种形态,这种形态既可以表示买入,也可以表示卖出,你需要做的就是分析形态之后发生的事情,并进行统计。回溯测试或交易历史也是一条曲线,不仅可以在价格层面,也可以在虚拟交易层面搜索形态。我稍后会在另一篇文章中对此进行描述,只是材料很多,应该会在适当的时候出现。
因此,总的来说,你试图进一步挖掘是件好事,很高兴看到这一点)。
"有趣的是,当考虑单一状态或仅考虑一个步骤时,我们很可能会得到混沌......"
- 这就是我们 需要停止的地方。
市场中的混乱或动荡极少发生,5-7 年一次,它表现为急剧的逃离或涌入,
,影响快速增长,然后急剧放缓,或者金融工具价值的恐慌性下跌。
,因此,您甚至可以考虑只考虑价格形态,而不考虑价格形态,价格形态有很多,而且并不总是给出预期的方向。
,难道不是这样吗,尤金?
"有趣的是,当考虑单个状态或仅考虑一个步骤时,我们得到的很可能是混乱......"
- 这就是我们 需要停止的地方。
市场中的混乱或动荡极少发生,5-7 年一次,表现为急剧出逃或涌入,
,影响快速增长,然后急剧放缓,或金融工具价值的恐慌性下跌。
,因此,我们甚至可以简单地、不考虑价格模式,这些模式数量众多,而且并不总是给出预期的方向。
,难道不是这样吗,尤金?
当然,正是如此。在交易者的理解中,形态就是价格图,但形态远不止价格图。形态是一连串的状态。状态既可以用直观的方式表达,也可以简单地用一些无法直观确定的参数向量来表达。只是人更容易直观地看到一些东西,但如果模式是多维的,而且只能在多维空间中描述,那该怎么办呢?形态是一连串的状态,每种状态都可以用任意一组标量值和复数值来表征。在这方面,没有必要只考虑价格,您可以考虑 Mjving 平均曲线和其他任何您想要的....。最重要的是能够处理这些数据并进行统计,您可以考虑虚拟回溯测试的虚拟平衡,并取得同样的成功,您还可以考虑其等价线,等等....。在任何一种情况下,都有可能获得统计数据并加强挤压。
更准确地说,边缘脱落是指在连接鹰面和尾面的边缘上脱落。因此,还有另一种变体--当硬币略微倾斜时,真正的掉边。
当然,边缘也可以是不同的,向左或向右倾斜,倾斜一个度或另一个度。每种状态都可以细分,直到你面红耳赤,然后你会发现更准确的模式,甚至是在经典交易者看来不存在的模式,但它们会比经典模式更有效。唯一的问题是,在编制这些状态时,应该要求组的完整性。也就是说,这些状态必须是一个事件空间中不相容的事件,并构成一个完整的组,即它们的总概率必须等于 1。这些事件必须是不相容的。如果满足了这些条件,那么就有可能构造出这些状态的链式组合,这就是模式。
当然,边缘也可以是不同的,可以向左倾斜,也可以向右倾斜,可以向一个度数范围倾斜,也可以向另一个度数范围倾斜。每种状态都可以细分,直到你面红耳赤,然后你就可以找到更准确的模式,甚至是在经典交易者看来不存在的模式,但它们会比经典模式更有效。唯一的问题是,在编制这些状态时,应该要求组的完整性。也就是说,这些状态必须是一个事件空间中不相容的事件,并构成一个完整的组,即它们的总概率必须等于 1。这些事件必须是不相容的。如果满足了这些条件,那么就有可能构造出这些状态的链式组合,这就是模式。
在倾斜状态下,只有一种变体,即质量中心正好投影在支点上。在其他情况下,则不存在稳定性。
人眼只能看到三维空间,因此更复杂的系统无法用图形表示。但我们应该认识到,多维函数与其他函数一样具有功能性。
为此,有一些降维方法--PCA、t-sne.umap等。
这是我看到的第一篇文章