Wie kann ich aus einer Datenmenge verschiedener Währungspaare die implizite FX-Rate für ein Paar berechnen, das nicht im Datensatz enthalten ist?
Sagen Sie zum Beispiel, meine Datenbank / Tabelle sieht so aus (diese Daten werden missbraucht):
%Vor%Beachten Sie, dass (GBP, USD)! = 1 / (USD, GBP).
Ich würde folgende Ergebnisse erwarten:
%Vor%Dies sind die einfachen Fälle, es wird interessanter:
%Vor%Oder ein noch komplizierteres Beispiel ist das Finden der effizientesten Übersetzung mit 3 oder mehr Paaren:
%Vor%Ich denke, das beschreibt die programmierungsbezogenen Aspekte dieses Problems. Ich könnte mir vorstellen, dass es hier eine effiziente oder clevere Rekursion gibt. Die einzige Anforderung besteht darin, dass die geringste Anzahl von Paaren verwendet wird, um zu dem angeforderten Paar zu gelangen (dies ist, um den Fehler zu reduzieren). Wenn keine explizite Umkehrung gegeben ist, kostet das Invertieren eines Paares nichts.
Motivation
In der idealen Finanzwelt sind Devisenmärkte effizient. In Wirklichkeit sind das 99%. Oftmals werden ungerade Währungspaare nicht zitiert oder sie werden selten zitiert. Wenn ein explizites Zitat existiert, müssen wir es in unseren willkürlichen Berechnungen verwenden. Wenn nicht, müssen wir das genaueste Paar angeben, so viele Dezimalstellen wie möglich. Außerdem multiplizieren sie nicht immer mit 1 (tatsächlich multiplizieren sie sich nie mit 1); Dies spiegelt die Geld-Brief-Spanne auf dem Markt wider. Wir behalten also so viele Paare wie möglich in beide Richtungen, möchten aber generell für alle Währungen codieren können.
Ich denke, ich habe eine anständige, brute-force-Lösung implementiert. Es funktioniert, aber ich fand das Problem interessant und fragte mich, ob es jemand anderes für interessant / herausfordernd hielt. Ich arbeite persönlich in Python, aber es ist mehr eine Übung als eine Implementierung, also ist Pseudo-Code "gut genug".
Sie suchen nach dem kürzesten Pfad in einem gerichteten Graphen, wobei die Währungen die Eckpunkte und die gegebenen Wechselkurse die Kanten sind. Wenn ein Wechselkurs nur für eine Richtung angegeben wird, können Sie einen für die entgegengesetzte Richtung mit höheren Kosten hinzufügen.