Beruflich Dokumente
Kultur Dokumente
f(x) is the function applied to x when the multiplication becomes a product sum of the route's
weights.
So I refer to the paths between the two nodes as weights because the value passed along the link
is multiplied by the weight of the route. So for example, right now the exchange rate from GBP to
USD is 1.46 and so in the first iteration; my x value will be multiplied by the weight(W10) 1.46 and
the new node value is $1460
(1000 => $1460).
The node has two possible routes like a binary search tree: and . Since it's the first iteration, it
will go for the euro and so the exchange rate from US dollar to the euro (0.86) is retrieved and this
weight(W20) is applied to the value moved to the penultimate node ($1460 => 1255,60).
The final path is from the euro to the start/end point which is GBP and so the weight/exchange rate
from EUR to GBP is pulled from the live rates table and applied (0.80) and so 1255,60 =>
1004.48
1004.48 (f(x)) > 1000 (x) a 0.45% increase can be executed immediately and repeated until the
algorithm detects a convergence of the differentials as a rate of change in the disparities increases
the cost function. Don't worry too much about that, the basic program was meant to take current
exchange rates and search the product functions. As latency reduction is fundamental to this
market exploit, I considered adding a module which indexes low volume currencies and historical
data (to rank similar frequencies as opposed to an elaborate AI which is far beyond my capability
as a programmer) to find discrepancies quicker.
10
12
W11
W21
W20
W30
W31
(1)
(2)
If we were to implement the node network model that I've shown you above, you'll face N-hard O
problems if you're serious about using an algorithm like mine to trade. So, we can easily calculate
the arbitrage opportunities by multiplying out the matrix of weights by the x value. However, this will
only tell you if there is an opportunity and not the vector so you can come up with your own method
that suits you. Personally though, I like the idea of working with a 2-dimensional array with string
elements to identify the node. However, back to my opening title. The reason why I've been
seriously considering the algorithm again comes down to illiquid cryptocurrency markets. XBT has
more or less tracked the other floating rates but with more of a lag. It seems apparent that I may
have found a golden opportunity to settle these discrepancies whilst profiting at the same time.
Ever since I've looked into it, I've found myself more intrigued. Today I added XBT to my original
program and not to my surprise I started to get results from only 2 hidden layers (which is actually
a lot better than elaborate routes which are too delayed and incur too many transaction fees). For
instance, one of the opportunities was to convert British Sterling into Bitcoin then Euro and British
Sterling. The result with 1000 was 1033 (rounded to nearest int.) and this wasn't a short
fluctuation but rather a difference in exchanges. The trouble with BTC rates is the variance
amongst different exchanges. There is not a consistent tracker for the price but they are roughly
aligned for average trading. This is ideal for currency arbitrage and I wouldn't be surprised if others
were trying this out.