炒币人赚钱攻略:如何利用套利建立最短路径
谁不喜欢赚钱呢?
如果您可以把赚钱的问题变成寻找最短路径的问题呢?我们至少可以通过一种特定的方式来做到这一点:通过利用套利机会。
什么是套利?
套利是指在不同市场或以不同形式交易商品从价格差异中获利的行为。那些参与其中的人呢?他们被称为套利者,这确实是一个花哨的头衔。
让我们从一个例子开始。假设保罗、彼得和鲍勃住在一个村子里,他们用胡萝卜、土豆和生菜交换食物。鲍勃用土豆换胡萝卜,彼得用生菜换土豆,保罗用生菜换胡萝卜。
此外,鲍勃用2个土豆换1个胡萝卜,彼得用1个生菜换2个土豆,保罗用2个胡萝卜换1个生菜。如果我们将每个人都视为各自产品的市场,那么汇率会是怎样的呢?
您觉得有机会吗?
作为一个有进取心的人,您可以尝试利用它。从5根胡萝卜开始,你接近保罗,并以他愿意交易的速率将5根胡萝卜换成10个土豆。
接下来,您拿着您的土豆去找彼得,知道他会用5颗生菜来换土豆。然后您带着5颗生菜接近保罗,他用10颗胡萝卜换您的生菜。
经过几次明智的交易后,您的胡萝卜财富增加了一倍。通过利用套利机会,您将5根胡萝卜变成了10根胡萝卜。
后来,村民们可能会开发出更复杂的市场,鲍勃、彼得和保罗并不是唯一的投资者。相反,这个小村庄可以开发一个胡萝卜/生菜市场,生菜/土豆市场,土豆/胡萝卜市场,在这些市场中,每笔交易的汇率将根据人们的交易意愿而波动。
但套利原则保持不变,并且这些机会可以被利用,直到那些愿意以这种汇率进行交易的交易商没有胡萝卜、生菜和土豆可供交易。利用套利机会直到市场达到均衡。
现代套利
当您想到现代市场时,您可能不会考虑交易胡萝卜、土豆和生菜。如果您投资外汇交易,您更可能考虑交易美元、英镑和日元。在这种情况下,我们将面对一个美元/英镑市场,英镑/日元市场,日元/美元市场,每个市场都有很多投资者。从现在开始,让我们用这些货币作为交易的例子,但要记住,这些原则适用于所有可交易的对象。
在给定的时间,汇率如下:
如果您从鲍勃、彼得和保罗的胡萝卜、生菜和土豆交易中学到了什么,您就会发现这里有机会。
如果您用1美元换1英镑,你最终会得到0.8英镑。如果用它来兑换日元,你最终会得到80日元。你把你的日元拿到日元兑美元的兑换处,然后在这里您可以用来兑换美元…但是现在您拥有了1.04美元!
但是在另一个套利者击败你之前,你必须迅速采取行动。这些机会只是暂时存在,直到流动性耗尽,并且利率均衡。
你们当中有感知的人可能注意到,我们在示例中没有考虑到交易费用。当然,您必须把这些因素考虑进去,才能计算出有利可图的套利机会是否真的存在。
快速行动
希望您有一些直觉来理解为什么快速行动是至关重要的。汇率波动很快,而且在这种汇率下只有有限数量的“东西”可供选择。
虽然我们在这里用的是相对简单的例子,但套利机会可以跨越许多交易,变得难以置信地复杂。我们的示例使用了3次交易,但如果您需要10次呢?在一个20种货币的网络中,每对货币都有市场,您能很快找到机会?
使用计算机是一个显而易见的答案,但是我们需要一个高效的算法,以免其他人将我们击败。
要做到这一点,我们可以利用数学和计算机科学中的一些聪明的见解。
市场图
图表是一种非常重要的结构,已经在许多应用中都找到其用途。许多社会和自然结构都可以用图表来建模,事实证明,市场就是其中之一。
在我们的例子中,让我们将每种货币视为一个节点。从一个节点移动到另一个节点相当于用一种货币交换另一种货币。
所以沿着节点之间的一条边移动,就可以通过汇率来转换货币的数量。
这意味着从美元节点移动到英镑节点相当于乘以0.8英镑/美元。让我们把汇率赋值为每条边的权重。
请注意,每个方向上的汇率大约是彼此的倒数。这意味着,如果将英镑兑换美元的汇率是0.8英镑/美元,那么相反的汇率将是1/(0.8英镑/美元)= 1.25美元/英镑。对我们来说,结果是我们需要谨慎对待每个市场上的买卖,将其视为具有不同权重的不同的有向边。
双向汇率只是近似倒数的原因是由于交易货币的价格差异很小,称为买卖差价。例如,如果在给定的时刻,你可以以0.8英镑/美元(某人将向你出售的当前价格)的价格买入英镑,但可以以0.82英镑/美元(或1.22美元/英镑,某人将向你购买的当前价格)的价格出售美元/英镑,那么你的图形模型将如下所示(为了简单起见,不包括其他汇率):
可以通过沿着该图中的边移动来建模一系列的交易,并且通过沿边缘权重乘以边缘权重来计算交易的结果。
看到机会
现在我们有了一个可行的模型,我们在图表中寻找与套利机会相对应的东西是什么?
为了确定一系列交易是否有利可图,我们需要一个一致的盈利指标。换句话说,如果我们以美元开始一系列交易,那么我们也需要以美元结束。通过将最终的金额与开始的金额进行比较,我们就知道它是否有利可图。
在我们的图中,这意味着我们的一系列交易必须在其开始的同一节点结束。在这个例子中,我们从美元节点开始,到美元节点结束。在图表的术语中,我们称其为周期。因此,我们知道我们正在寻找某种周期,但是哪种周期才能使它有利可图?
注意,如果我们沿着周期的边缘相乘,我们将转换成有效汇率的单位。
但是,当我们返回到起始节点时,数量变得没有单位。它从汇率转换为回报率!在我们的图表上遍历一个周期并计算汇率乘积,相当于计算完成一系列交易后将获得的回报率。
如果市场完全有效,我们的收益率abc将是1,因为汇率已经相等了。如果权重的乘积大于1,比如1.02,那么套利机会就会给我们带来2%的回报。
因此,概括为任意数量的交易,套利机会对应以下不等式:
其中e_i对应第i个汇率,对于每一笔交易i,除以n笔交易。
因此我们需要的是一种可以在市场图上找到一个周期的算法,其中边权重的乘积大于1。您可能可以发明一种算法来实现这一点,但在计算机科学中,就像在一般生活中通常将问题简化为您已经知道如何解决的问题是很有用的。
Bellman-Ford算法
寻找最短路径问题是计算机科学中一个普遍且基本的问题,可以应用于许多不同的场景。通过绘制图形和地图之间的对应关系,一个明显的方法是在地图上找到最短的路线。但是,通过一些技巧,许多其他类型的问题也可以转化为最短路径问题。我要证明的是寻找套利机会的问题就是这样的问题之一。
首先,让我们确定最短路径问题是什么。给定图中的两个节点s和t,最短路径是使边缘权重和最短的路径。换句话说,我们沿着从s到t的路径移动,沿途增加了边权重,总和最短的路径是最短路径,成本最小的路径。
接下来,了解不同类别的最短路径问题将很有帮助。在明显的示例中(例如地图上最短的路线),边缘权重必须为正。除非有时间机器,否则开车沿着道路行驶会减少您的旅行时间。在仅具有正边缘权重的图形中,Dijkstra著名的算法将计算到图形中所有节点的最短路径。
但是,没有理由图不能具有负边缘权重。在这种情况下,沿着该边缘移动会减少路径的总成本。但是,如果您的周期的权重为负,那么您可以一直持续遍历该周期-每次都降低路径的总体成本,而最短的路径的成本接近-∞。在这种情况下,对于我们的最短路径算法而言,具有一种确定负权重周期的机制将非常有用。否则,最短的路径将永远陷入负重量循环中。
Bellman-Ford算法正是该算法。Dijkstra的最短路径算法的更通用版本,它可以处理负权重。为此,它检测负权重周期——图形中的周期,将权重相加会产生负值。
但是 , 当我们需要一个能检测边积大于1的环的算法时,找到边和小于0的环的算法如何帮助我们?
登录救援
下一个观点是,通过使用对数函数可以将乘积转化为总和,这要归功于等式:
因此,我们可以将求积大于1的周期的问题转换为求和大于0的周期的问题 !我们通过获取每个汇率的对数,并将其用作每个边的权重来做到这一点。
让我们通过记录不等式双方的对数来证明这一点。首先,取左边的对数将乘积的计算转化为计算的总和:
右侧的对数只是把1转换为0:
我们已经接近了,但还没有完全达到。最后一步,将我们的问题简化为一个我们可以用这个已知算法解决的问题,就是将每个边的权值乘以-1。这将寻找正负周期的问题变成了寻找负权重周期的问题:
我们知道Bellman-Ford算法可以做到!按照指定的方式构建图形并在其上执行Bellman-Ford算法,将会为我们快速有效地找到套利机会,因为我们已经把套利问题变成了寻找最短路径的问题(即无限最短路径)的问题。
现在看来,一个负权重周期(每次穿越它都会降低路径的成本)与一个套利机会(每次它都会让你获利)之间应该存在对应关系。关键是通过对边缘权重应用-log,将求大于1的乘积的问题转化为求小于0的和的问题。
证明这一点
让我们在汇率上运行此算法,以查看它是否正确识别套利机会。通过对数转换汇率,我们得到:
总结一下交易,我们的平等是成立的,我们发现了一个负权重周期!
我们可以撤消对数运算来恢复乘积,并计算收益:
这就是我们之前计算出4%的回报率。
在现实世界
由于套利机会对应于负权重周期,似乎我们可以永远穿越这个周期来赚无限的钱。当然,事实并非如此。
可用于任何套利机会的流动性(价格显著变化前的可用量)是有限的,并且很快被算法投资者利用,推动计算技术和物理定律的边界互相击败。
话虽如此,我希望您能通过运用图论和众所周知的最短路径算法来解决金融领域的问题(并赚钱),像我一如既往的有趣。