Aluxian

Aluxian / ArbitrageDetection / 0.1.0

README.md
Consider a market for financial transactions that is based on trading commodities. The table below shows conversion rates among currencies. 

USD 1 0.741 0.657 1.061 1.005
EUR 1.349 1 0.888 1.433 1.366
GBP 1.521 1.126 1 1.614 1.538
CHF 0.942 0.698 0.619 1 0.953
CAD 0.995 0.732 0.650 1.049 1


The table has one line per currency, giving its name followed by the conversion rates to the other currencies. An arbitrage opportunity is a directed cycle such that the product of the exchange rates is greater than one. For example, our table says that 1,000 U.S. dollars will buy 1,000.00 × .741 = 741 euros, then we can buy 741 × 1.366 = 1,012.206 Canadian dollars with our euros, and finally, 1,012.206 × .995 = 1,007.14497 U.S. dollars with our Canadian dollars, a 7.14497-dollar profit!

Output: a list of solutions, where each solution has the following fields:
 - amounts: how much 1 unit of the first currency is worth in the others (the ones in the 'currencies' field)
 - currencies: the currency conversions
 - profit: the amount of profit in the first currency
 - ratio: the profit ratio