Об этом проекте

Arbitrage Insights — небольшой инструментарий валютного арбитража. Он сравнивает справедливый форвардный курс валютной пары, полученный на основе спот-курса и двух процентных ставок, с рыночным форвардным курсом, находит расхождение и показывает, что остаётся после торговых издержек и налога. Проект включает три страницы. Live Monitor каждую минуту получает текущие спот-курсы, вычисляет справедливый форвард для каждой отслеживаемой пары, сравнивает его с заданной пользователем форвардной котировкой, вычитает издержки и оповещает баннером, звуком и браузерным уведомлением, когда расхождение достаточно для сделки. Arbitrage Calculator пошагово проверяет одну сделку. Investment Calculator принимает капитал, пару и страну и возвращает валовую прибыль, прибыль после издержек и после налога, а также сравнение по странам. Общие файлы включают engine.js для расчётов, theme.css, monitor.js и monitor_config.json. Текущие спот-курсы поступают из публичного канала (api.fxratesapi.com, резервный — open.er-api.com). Процентные ставки и форвардные пункты берутся из monitor_config.json; поскольку ни один бесплатный канал не предоставляет форвардные котировки, пользователь вводит там форвардные пункты своего брокера. Пока это не сделано, сайт работает в демонстрационном режиме и не отправляет уведомления. Оповещение срабатывает, когда расхождение после издержек превышает alert_threshold_bp, а входные данные проходят проверку на корректность. Для оповещений, когда ни одна страница не открыта, monitor_check.py запускается в GitHub Actions каждые 15 минут, использует те же конфигурацию и движок, записывает signals.json для чтения страницей и отправляет сообщение в Telegram при появлении возможности, если quotes_are_real имеет значение true. Настройка требует создания бота Telegram через BotFather, сохранения TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID в секретах репозитория и указания реальных forward_points, quotes_as_of и quotes_are_real в конфигурации. fx_arbitrage.py — эталонная реализация на Python, а engine.js является портом, прошедшим перекрёстную проверку. При запуске она выводит четыре проработанных примера, а monitor_check.py выполняет один проход монитора локально. В README отмечается, что процентные ставки и налоговые ставки носят иллюстративный характер либо являются заглушками и перед использованием их следует проверить, а проект не является инвестиционной рекомендацией.