Глава 227: Атаки уклонения в трейдинге
1. Введение
Атаки уклонения (evasion attacks) представляют собой один из наиболее практичных и опасных классов состязательных угроз машинного обучения, с которыми сталкиваются развёрнутые торговые системы. В отличие от атак отравления (poisoning attacks), которые искажают обучающие данные, или атак извлечения моделей (model extraction), которые крадут интеллектуальную собственность, атаки уклонения действуют во время инференса: они модифицируют входные данные, подаваемые уже развёрнутой модели, чтобы вызвать некорректные предсказания, классификации или торговые решения.
На финансовых рынках модели машинного обучения всё чаще используются для критических функций: маркет-мейкинга, обнаружения мошенничества, маршрутизации ордеров, прогнозирования цен и оценки рисков. Каждая из этих моделей принимает рыночные данные на вход и выдаёт действенные результаты. Противник, понимающий, как создавать входные данные, эксплуатирующие границы решений модели, может манипулировать моделью, заставляя её принимать систематически неверные решения — покупать, когда нужно продавать, классифицировать мошеннические ордера как легитимные или неправильно оценивать риск.
Угроза особенно остра в трейдинге, потому что:
- Ограничения реального времени: Торговые модели должны принимать решения за микросекунды, не оставляя времени для человеческой проверки подозрительных входных данных.
- Финансовый стимул: В отличие от академических состязательных примеров на классификаторах изображений, успешные атаки уклонения на торговые модели приносят прямую денежную прибыль атакующему.
- Непрозрачность данных: Рыночные данные по своей природе зашумлены, что делает состязательные возмущения трудноотличимыми от естественных рыночных колебаний.
- Взаимосвязанные системы: Успешная атака уклонения на модель одного участника может каскадно распространиться по рынкам через обратные связи.
Эта глава предоставляет всестороннее рассмотрение атак уклонения в контексте трейдинга: математические основы, различие между атаками белого и чёрного ящика, специфические для трейдинга векторы атак, критический феномен переносимости и практическую реализацию на Rust с реальными рыночными данными Bybit.
2. Математические основы
2.1 Задача оптимизации уклонения
По своей сути, атака уклонения — это задача оптимизации. Для обученной модели f(x), которая отображает входные признаки x в предсказание y, атакующий ищет возмущение delta такое, что:
x_adv = x + deltaf(x_adv) != f(x) (нецелевая атака)f(x_adv) = y_target (целевая атака)При ограничении ||delta|| <= epsilon, где epsilon ограничивает величину возмущения для сохранения «реалистичности» или необнаруживаемости.
Формальная оптимизация для нецелевой атаки:
максимизировать L(f(x + delta), y_true)при ограничении ||delta||_p <= epsilonГде L — функция потерь модели, а ||.||_p обозначает Lp-норму (обычно L-бесконечность, L2 или L1).
Для целевых атак формулировка становится:
минимизировать L(f(x + delta), y_target)при ограничении ||delta||_p <= epsilon2.2 Градиентные атаки
Когда атакующий имеет доступ к градиентам модели (сценарий белого ящика), существует несколько эффективных методов атаки:
Метод быстрого знака градиента (FGSM): Простейшая и наиболее фундаментальная градиентная атака. Вычисляет одношаговое возмущение в направлении знака градиента:
delta = epsilon * sign(grad_x L(f(x), y_true))FGSM быстр (один прямой-обратный проход), но часто создаёт неоптимальные состязательные примеры, так как использует только направление градиента, а не его величину.
Проективный градиентный спуск (PGD): Итеративное улучшение FGSM, выполняющее несколько меньших шагов с проекцией обратно на epsilon-шар после каждого шага:
x_0 = x + uniform_noise(-epsilon, epsilon)x_{t+1} = Proj_{B(x,epsilon)}(x_t + alpha * sign(grad_x L(f(x_t), y_true)))PGD считается «универсальным противником первого порядка» — если модель устойчива к атакам PGD, она, вероятно, устойчива ко всем атакам первого порядка.
Атака Карлини и Вагнера (C&W): Более сложная атака на основе оптимизации, переформулирующая ограничение как штрафной член:
минимизировать ||delta||_2 + c * max(max_{i!=t} Z(x+delta)_i - Z(x+delta)_t, -kappa)Где Z представляет логиты модели, а kappa — параметр уверенности. Атаки C&W медленнее, но часто находят меньшие возмущения.
2.3 Безградиентные атаки
Когда градиенты недоступны (сценарий чёрного ящика), атакующие должны прибегать к альтернативным стратегиям:
- Случайный поиск: Выборка возмущений из распределения и сохранение тех, которые вызывают ошибочную классификацию.
- Покоординатное возмущение: Возмущение одного признака за раз, сохранение изменений, которые перемещают выход в желаемом направлении.
- Оценка градиента конечными разностями: Аппроксимация градиентов запросами модели в соседних точках:
grad_i ~ (f(x + h*e_i) - f(x)) / h. - Эволюционные стратегии: Использование популяционной оптимизации для эволюции эффективных возмущений.
- Атаки переноса: Создание состязательных примеров на суррогатной модели и применение к целевой (см. раздел 5).
2.4 Переносимость
Замечательное свойство состязательных примеров — они часто переносятся между моделями. Состязательный пример, созданный для обмана Модели A, часто также обманывает Модель B, даже если модели имеют разные архитектуры, обучались на разных данных или используют разные алгоритмы. Считается, что эта переносимость возникает потому, что модели, обученные на схожих данных, выучивают схожие границы решений, а состязательные возмущения эксплуатируют свойства распределения данных, а не специфические особенности модели.
Уровень переносимости зависит от:
- Схожести обучающих данных
- Схожести архитектур моделей
- Силы атаки (более сильные атаки переносятся лучше)
- Разнообразия ансамбля (атаки, созданные против ансамблей, переносятся лучше)
3. Белый ящик против чёрного ящика
3.1 Атаки белого ящика
В сценарии белого ящика атакующий имеет полный доступ к целевой модели: её архитектуре, параметрам, градиентам и обучающим данным. Это сильнейшая модель угроз, производящая наиболее эффективные атаки.
В трейдинге доступ белого ящика может возникнуть когда:
- Инсайдер в торговой фирме имеет доступ к проприетарным моделям
- Модель развёрнута как открытый исходный код или опубликована в исследовательской статье
- Атакующий успешно извлёк модель перед запуском атак уклонения
Атаки белого ящика важны для оборонительных целей: они устанавливают верхнюю границу уязвимости модели. Если модель выдерживает атаки PGD белого ящика, это убедительное свидетельство робастности.
3.2 Атаки чёрного ящика
Атаки чёрного ящика более реалистичны в торговых сценариях. Атакующий может наблюдать только выходы модели (и, возможно, оценки уверенности) для выбранных входов. Существуют две подкатегории:
На основе оценок: Атакующий наблюдает выходные вероятности или оценки уверенности модели. Это позволяет оценивать градиент конечными разностями и более эффективно осуществлять поиск.
На основе решений: Атакующий наблюдает только окончательное решение (покупка/продажа/удержание, принятие/отклонение). Это наиболее ограниченная настройка, требующая наибольшего количества запросов.
На практике торговый противник часто имеет частичную информацию: он может наблюдать котировки маркет-мейкера (которые раскрывают что-то о состоянии модели) или отслеживать поток ордеров алгоритмического трейдера (который раскрывает его решения). Эта промежуточная настройка находится между чистым чёрным ящиком и белым ящиком.
3.3 Эффективность запросов
Критическое практическое соображение — эффективность запросов. Каждый запрос к целевой модели в торговом контексте соответствует рыночному взаимодействию, которое может стоить денег, оставлять аудиторский след или предупреждать цель. Эффективные атаки чёрного ящика минимизируют необходимое количество запросов:
- Случайный поиск: O(d/epsilon^2) запросов, где d — размерность
- Покоординатный: O(d) запросов на итерацию
- Градиенты конечных разностей: O(d) запросов на оценку градиента
- Атаки переноса: 0 запросов к цели (но требуют суррогат)
4. Специфические для трейдинга атаки уклонения
4.1 Спуфинг книги ордеров для обмана ML маркет-мейкеров
Многие современные маркет-мейкеры используют ML-модели, обрабатывающие снимки книги ордеров для установки котировок. Атакующий может размещать и быстро отменять ордера (спуфинг), создавая состояния книги ордеров, заставляющие модель маркет-мейкера неправильно оценивать:
- Наслоение (Layering): Размещение крупных ордеров на нескольких ценовых уровнях с одной стороны книги, создающее иллюзию дисбаланса спроса/предложения. ML маркет-мейкер сдвигает свои котировки, а атакующий торгует с другой стороны.
- Фантомная ликвидность: Показ глубокой ликвидности на ценовом уровне для привлечения алгоритма управления запасами маркет-мейкера, затем отзыв ордеров когда маркет-мейкер фиксирует позицию.
Эти атаки незаконны в большинстве юрисдикций (манипулирование рынком), но понимание их критически важно для построения робастных торговых систем.
4.2 Внедрение фальшивых сигналов
ML-модели, потребляющие альтернативные данные (настроения новостей, социальные сети, спутниковые снимки), могут быть атакованы внедрением фальшивых сигналов:
- Манипуляция настроениями: Публикация координированных сообщений для сдвига индикатора настроений, питающего торговую модель.
- Загрязнение признаков: Если модель использует производные признаки (технические индикаторы), торговля паттернами, создающими вводящие в заблуждение значения индикаторов.
4.3 Состязательные торговые последовательности
Вместо возмущения одного входа, атакующий может выполнить последовательность сделок, предназначенных для создания состояния микроструктуры рынка, обманывающего целевую модель. Это временная атака уклонения, где состязательное «возмущение» распределено во времени.
4.4 Финансовые ограничения на возмущения
В отличие от классификаторов изображений, где возмущения ограничены Lp-нормами, атаки уклонения в трейдинге сталкиваются с финансовыми ограничениями:
- Стоимость: Каждый фиктивный ордер или состязательная сделка имеет стоимость (комиссии, проскальзывание, риск исполнения).
- Влияние на рынок: Крупные возмущения двигают рынок, потенциально подрывая атаку.
- Регуляторные ограничения: Определённые паттерны срабатывают в системах наблюдения.
- Временные ограничения: Рыночные данные имеют структуру временных рядов; возмущения должны быть временно согласованы.
Эти ограничения делают задачу оптимизации сложнее, но также делают атаки более реалистичными, когда они успешны.
5. Переносимость в торговых моделях
5.1 Почему переносимость важна
Переносимость — наиболее опасное свойство атак уклонения для торговых систем. Оно означает, что атакующему не нужен доступ к целевой модели — он может:
- Построить собственную суррогатную модель, обученную на аналогичных рыночных данных
- Создать состязательные примеры против суррогата
- Применить эти примеры к цели с разумной вероятностью успеха
Поскольку рыночные данные в значительной степени публичны (цены, объёмы, книги ордеров на биржах), любой противник может построить суррогатную модель, используя те же признаки, что и цель.
5.2 Измерение переносимости
Уровень переносимости измеряется как доля состязательных примеров, созданных на исходной модели, которые также обманывают целевую модель:
T(source, target) = |{x_adv : f_source(x_adv) != y_true AND f_target(x_adv) != y_true}| / |{x_adv : f_source(x_adv) != y_true}|В нашей реализации мы тестируем переносимость между тремя различными архитектурами моделей: линейными моделями, решениями на основе порогов и моделями нейросетевого типа.
5.3 Разнообразие ансамбля как защита
Одна из эффективных защит от атак переноса — использование ансамбля разнообразных моделей. Если модели в ансамбле ошибаются на разных входах, состязательный пример, обманывающий одну модель, с меньшей вероятностью обманет весь ансамбль. Ключевые стратегии включают:
- Разнообразие архитектур: Комбинация линейных моделей, моделей на основе деревьев и нейронных сетей.
- Разнообразие обучающих данных: Обучение моделей на разных подмножествах или временных периодах.
- Разнообразие признаков: Использование разных наборов признаков для разных моделей.
- Состязательное обучение: Включение состязательных примеров в обучение для укрепления границ решений.
6. Обзор реализации (Rust)
Наша реализация на Rust предоставляет полный фреймворк для изучения атак уклонения на торговые модели. Ключевые компоненты:
6.1 Архитектуры моделей
Мы реализуем три типа моделей для тестирования переноса:
- LinearModel: Простой линейный классификатор с весами и смещением, поддерживающий вычисление градиентов для атак белого ящика.
- ThresholdModel: Нелинейная модель, использующая пороговые преобразования признаков.
- EnsembleModel: Комбинирует несколько моделей с взвешенным голосованием для улучшенной робастности.
6.2 Атаки белого ящика
Модуль WhiteBoxAttack реализует:
- FGSM: Одношаговая градиентная атака с использованием
epsilon * sign(gradient). - PGD: Многошаговая итеративная атака с проекцией обратно на epsilon-шар, обычно запускаемая на 10-40 итераций с размером шага
alpha = epsilon / 4.
Обе атаки вычисляют градиенты аналитически из весов линейной модели и используют их для максимизации функции потерь.
6.3 Атаки чёрного ящика
Модуль BlackBoxAttack реализует:
- Случайный поиск: Равномерная выборка возмущений и сохранение лучших.
- Покоординатное возмущение: Итерация по признакам, тестирование положительных и отрицательных возмущений для каждого.
- Оценка градиента на основе запросов: Использование конечных разностей для аппроксимации градиента с последующим применением обновлений в стиле FGSM.
6.4 Финансовые ограничения
Структура FinancialConstraints обеспечивает рыночно-реалистичные возмущения:
- Максимальное процентное изменение на признак (например, цена не может измениться более чем на 2%)
- Специфичные для признаков границы (объём имеет иные естественные диапазоны, чем цена)
- Проверки временной согласованности
6.5 Метрики успешности атак
Мы вычисляем комплексные метрики, включая:
- Уровень успешности атаки (доля входов, на которых предсказание изменилось)
- Средняя величина возмущения (L2-норма delta)
- Снижение уверенности (насколько снизилась уверенность модели)
- Уровни переносимости между всеми парами моделей
7. Интеграция с Bybit
Реализация включает клиент API Bybit, который получает реальные рыночные данные по BTCUSDT:
pub async fn fetch_klines(symbol: &str, interval: &str, limit: usize) -> Result<Vec<Kline>>Эта функция вызывает эндпоинт API Bybit v5 /v5/market/kline и возвращает данные свечей, включая цены открытия, максимума, минимума, закрытия и объём. Затем данные преобразуются в векторы признаков, подходящие для обучения моделей и тестирования атак.
Признаки, извлечённые из необработанных рыночных данных, включают:
- Ценовые доходности (логарифмические доходности на различных горизонтах)
- Волатильность (скользящее стандартное отклонение доходностей)
- Коэффициенты объёма (текущий объём относительно скользящего среднего)
- Ценовой моментум (индикаторы скорости изменения)
- Дисбаланс книги ордеров (при наличии)
Использование реальных рыночных данных гарантирует, что наши состязательные возмущения работают в реалистичных диапазонах параметров и что наши финансовые ограничения точно отражают рыночные условия.
8. Ключевые выводы
-
Атаки уклонения — наиболее практичная состязательная ML-угроза для торговых систем, потому что они действуют во время инференса на развёрнутых моделях, не требуют доступа к обучающим конвейерам и приносят прямую финансовую прибыль.
-
Градиентные атаки (FGSM, PGD) мощны, но требуют доступа белого ящика. В трейдинге этот уровень доступа редок, но не невозможен (инсайдерские угрозы, извлечение модели, опубликованные исследования).
-
Атаки чёрного ящика реалистичны и эффективны. Методы на основе запросов могут аппроксимировать градиенты, а атаки переноса требуют нулевого количества запросов к целевой модели. Поскольку рыночные данные публичны, построение суррогатных моделей осуществимо.
-
Переносимость — ключевой множитель угрозы. Состязательные примеры переносятся между моделями, обученными на схожих данных, что позволяет проводить атаки без какого-либо доступа к цели. Это особенно опасно в трейдинге, где все участники наблюдают одни и те же рыночные данные.
-
Финансовые ограничения делают атаки уклонения в трейдинге сложнее, но не невозможными. Возмущения должны быть рыночно-реалистичными (нет невозможных цен), учитывать стоимость (спуфинг имеет транзакционные издержки) и быть временно согласованными. Эти ограничения сужают пространство поиска атакующего, но также делают успешные атаки более опасными, потому что их труднее обнаружить.
-
Разнообразие ансамбля — наиболее эффективная защита. Использование нескольких моделей с разными архитектурами, обучающими данными и наборами признаков снижает переносимость. Комбинация этого с состязательным обучением, валидацией входных данных и обнаружением аномалий создаёт робастный эшелонированный подход к защите.
-
Обнаружение дополняет предотвращение. Хотя совершенная робастность доказуемо невозможна для большинства классов моделей, мониторинг статистических аномалий в распределениях входных данных, отслеживание уверенности модели во времени и ведение аудиторских журналов решений модели могут помочь обнаружить и смягчить атаки уклонения, даже когда предотвращение не срабатывает.
-
Регуляторные последствия значительны. Многие специфические для трейдинга атаки уклонения (спуфинг, наслоение, манипулирование рынком) незаконны. Их понимание необходимо для систем комплаенса и наблюдения, но их реализация против живых рынков несёт серьёзные юридические последствия.
Гонка вооружений между состязательными атаками и защитами в трейдинге будет усиливаться по мере роста внедрения ML. Практики должны встраивать состязательную робастность в жизненный цикл разработки моделей с самого начала, рассматривая её как требование первого класса наряду с точностью, задержкой и справедливостью.