#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Что дал релей: сколько возможностей появилось с Binance и Bybit.""" import sys sys.path.insert(0, "/opt/arena/grid_lab") import arb_sources as S, arb_engine as E q = lambda *a: None perps, rep, err = S.load_perps(log=q) spots, serr = S.load_spots(log=q) uni = S.binance_universe(log=q) print(f"бирж с фандингом: {len(perps)} — {', '.join(sorted(perps))}") if err: print("не ответили:", err) opps = E.scan(perps, spots, universe=uni, min_apr=0.20) f = [o for o in opps if o["kind"] == "funding"] NEW = {"binance", "bybit"} inv = [o for o in f if NEW & {o.get("long_venue"), o.get("short_venue")}] print(f"\nфандинг-возможностей: {len(f)}, с участием Binance/Bybit: {len(inv)}") print(f"\n{'символ':13} {'годовых':>8} {'без крайних':>12} {'окуп':>6} {'бирж':>5} структура") for o in inv[:12]: print(f"{o['symbol']:13} {o['apr']*100:>7.0f}% {o.get('apr_robust',0)*100:>11.0f}% " f"{o['breakeven_h']:>5.0f}ч {o.get('venues_n',0):>5} {o['long']} / {o['short']}") rob = [o for o in inv if o.get("apr_robust", 0) >= 0.25] print(f"\nиз них живучих (без крайних ≥25%): {len(rob)}") # насколько шире стал консенсус n8 = [o for o in f if o.get("venues_n", 0) >= 7] print(f"возможностей, где в расчёте 7-8 бирж: {len(n8)} " f"(раньше максимум было 6)")