docs: update README with disclaimer and contact; cleanup: remove compare_enum.py
This commit is contained in:
parent
9863dc182b
commit
2a502c666e
|
|
@ -88,6 +88,8 @@ tri_arb/
|
|||
├── config.yaml # Runtime config (gitignored)
|
||||
├── config.yaml.example # Config template
|
||||
└── scripts/ # Deployment scripts
|
||||
```
|
||||
|
||||
|
||||
## Disclaimer
|
||||
|
||||
|
|
@ -97,4 +99,3 @@ colocated with the exchange's servers.
|
|||
## Contact
|
||||
|
||||
Nicolás Sánchez — nicolassanchez@tutanota.com
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
"""Compare Python triangle enumeration with C output."""
|
||||
import json, sys
|
||||
|
||||
pairs = []
|
||||
with open("/tmp/pairs.jsonl") as f:
|
||||
for line in f:
|
||||
d = json.loads(line)
|
||||
if d.get("enableTrading") is not True:
|
||||
continue
|
||||
base = d.get("base", "")
|
||||
quote = d.get("quote", "")
|
||||
sym = d.get("symbol", "")
|
||||
if not all([sym, base, quote]):
|
||||
continue
|
||||
pairs.append({"symbol": sym, "base": base, "quote": quote})
|
||||
|
||||
# Filter excluded
|
||||
excluded = {"EUR", "BRL"}
|
||||
pairs = [p for p in pairs if p["base"] not in excluded and p["quote"] not in excluded]
|
||||
print(f"Total pairs after filter: {len(pairs)}", file=sys.stderr)
|
||||
|
||||
# Check duplicates
|
||||
from collections import Counter
|
||||
dup_counts = Counter()
|
||||
for p in pairs:
|
||||
key = frozenset([p["base"], p["quote"]])
|
||||
dup_counts[key] += 1
|
||||
dup_multi = {k: v for k, v in dup_counts.items() if v > 1}
|
||||
print(f"Duplicate currency pairs: {len(dup_multi)}", file=sys.stderr)
|
||||
for k, v in dup_multi.items():
|
||||
bases = list(k)
|
||||
my_pairs = [p for p in pairs if frozenset([p["base"], p["quote"]]) == k]
|
||||
print(f" {v}x: {bases} -> {[(p['symbol'], p['base'], p['quote'], p.get('feeCurrency','')) for p in my_pairs]}", file=sys.stderr)
|
||||
|
||||
# Build edge_map and pair_map (Python style)
|
||||
edge_map = {}
|
||||
for p in pairs:
|
||||
for c in [p["base"], p["quote"]]:
|
||||
if c not in edge_map:
|
||||
edge_map[c] = []
|
||||
edge_map[c].append(frozenset([p["base"], p["quote"]]))
|
||||
|
||||
pair_map = {}
|
||||
for p in pairs:
|
||||
pair_map[frozenset([p["base"], p["quote"]])] = p
|
||||
|
||||
hold_set = {"USDT", "USDC", "USD1"}
|
||||
all_currencies = sorted(edge_map.keys())
|
||||
seen = set()
|
||||
tri_count = 0
|
||||
unique_sets = []
|
||||
|
||||
for c1 in all_currencies:
|
||||
for c2_edge in edge_map.get(c1, []):
|
||||
c2 = next(x for x in c2_edge if x != c1)
|
||||
for c3_edge in edge_map.get(c2, []):
|
||||
c3 = next(x for x in c3_edge if x != c2)
|
||||
if c3 == c1:
|
||||
continue
|
||||
if c3_edge == c2_edge:
|
||||
continue
|
||||
if frozenset([c1, c3]) not in pair_map:
|
||||
continue
|
||||
currencies = frozenset([c1, c2, c3])
|
||||
if currencies in seen:
|
||||
continue
|
||||
seen.add(currencies)
|
||||
|
||||
in_triangle = hold_set & currencies
|
||||
if not in_triangle:
|
||||
continue
|
||||
|
||||
unique_sets.append(tuple(sorted(currencies)))
|
||||
|
||||
for hold_curr in in_triangle:
|
||||
others = [c for c in [c1, c2, c3] if c != hold_curr]
|
||||
for x, y in [(others[0], others[1]), (others[1], others[0])]:
|
||||
tri_count += 1
|
||||
|
||||
unique_sets.sort()
|
||||
for s in unique_sets:
|
||||
print(",".join(s))
|
||||
|
||||
print(f"\nTOTAL_C_SETS: {len(unique_sets)}")
|
||||
print(f"TOTAL_TRIANGLES: {tri_count}")
|
||||
Loading…
Reference in New Issue