Онбординг FX Swap: от бизнес-контракта до контроля риска
Добавить FX Swap в систему — значит не просто научиться принимать новый тип сделки. Сначала нужно описать его экономический смысл, жизненный цикл и распределение риска во времени.
Что такое FX Swap
FX Swap позволяет временно получить ликвидность в одной валюте за счёт другой и заранее зафиксировать условия обратного обмена.
Он состоит из двух связанных валютных операций с одной валютной парой, но разными датами расчёта:
- первая операция называется near leg;
- вторая — far leg;
- направления обмена валют в них противоположны.
Например, сегодня сторона покупает доллары за рубли, а через месяц продаёт доллары обратно за рубли по заранее согласованному курсу.
Для системы это одна сделка с двумя связанными legs. Каждая leg содержит два встречных валютных cash flows — что и в какой валюте одна сторона платит, а другая получает.
Бизнес-контракт сделки
До реализации риск-логики необходимо однозначно описать контракт FX Swap.
Нужно ответить на основные вопросы:
- кто является участником сделки;
- какие валюты обмениваются;
- кто какую валюту платит и получает;
- каковы суммы каждой leg;
- каковы курсы near leg и far leg;
- когда должна исполниться каждая leg;
- какие календари и правила округления применяются;
- возможны ли изменение, отмена или досрочное завершение сделки.
Контракт должен описываться без обращения к риск-модели. Сначала фиксируется экономическая реальность, затем определяется её влияние на риск.
Границы ответственности риск-системы
Задача риск-системы — определить, допустима ли сделка с учётом установленных лимитов, а после заключения контролировать изменение риска.
Система не определяет коммерческие условия FX Swap и не исполняет расчёты. Она получает описание сделки, рыночные данные и фактическое состояние settlement, после чего оценивает риск.
Для каждого результата должно быть понятно:
- какая версия сделки использовалась;
- в каком lifecycle state находилась сделка;
- на какой момент выполнен расчёт;
- какие рыночные данные были взяты;
- какая версия риск-модели применялась;
- какие лимиты проверялись.
Без этой информации результат нельзя воспроизвести и объяснить.
Риск как функция времени и состояния сделки
Риск FX Swap не является постоянным числом.
Его можно представить как функцию:
Risk = f(
contract,
lifecycleState,
marketData,
portfolioContext,
model,
calculationTime
)
contract содержит условия сделки. lifecycleState описывает фактически исполненные и оставшиеся обязательства. marketData отражает состояние рынка. portfolioContext задаёт netting, collateral и другие связи сделки. model определяет методику, а calculationTime — момент оценки.
Время само по себе не доказывает исполнение. Если settlement date прошла, но payment не состоялся, обязательство и связанный с ним риск сохраняются.
До исполнения near leg существуют обязательства по обеим legs. После её исполнения профиль меняется: near leg завершена, а обязательства по far leg сохраняются.
После полного исполнения обеих legs риск конкретной сделки должен исчезнуть, если нет расчётных сбоев, остаточных требований или других незакрытых обязательств.
Поэтому контроль риска — это контроль его распределения во времени и по состояниям, а не только проверка значения в момент создания сделки.
Проверка перед заключением сделки
До заключения FX Swap выполняется pre-trade-проверка.
Система получает проект контракта, строит его риск-профиль и оценивает влияние сделки на доступные лимиты.
Проверка должна учитывать не только текущий риск, но и будущие интервалы, в которых появляются обязательства по near leg и far leg.
Результат проверки должен быть однозначным:
- сделка допустима;
- сделка нарушает лимит;
- проверка невозможна из-за отсутствующих или некорректных данных.
Отсутствие данных нельзя считать нулевым риском. Техническая невозможность расчёта также не должна превращаться в автоматическое одобрение.
Мониторинг после заключения сделки
После заключения FX Swap становится частью портфеля и должна регулярно переоцениваться.
Причиной нового расчёта могут быть:
- изменение рыночных данных;
- наступление новой даты или расчётного периода;
- исполнение одной из legs;
- изменение или отмена сделки;
- частичное либо неуспешное исполнение;
- обновление риск-модели;
- исправление ранее полученных данных.
Важно разделять изменение сделки и изменение её оценки.
Контракт может оставаться прежним, но риск изменится из-за движения рынка, времени или нового lifecycle state. И наоборот, поправка в контракте может потребовать пересчёта даже при неизменном рынке.
Качество и согласованность данных
Реальные данные редко поступают в идеальном виде. Поддержка FX Swap должна учитывать сбои и неоднозначности на входе.
Данных нет
Может отсутствовать сделка, одна из legs, курс, календарь, рыночный показатель или статус исполнения.
Следует заранее определить, какие данные обязательны, какие допускают контролируемую замену, а при каких условиях расчёт блокируется.
Использование fallback-значения не должно происходить незаметно. Источник и причина такой замены должны сохраняться вместе с результатом.
Данные дублируются
Повторная доставка одного события не должна повторно создавать сделку, резервировать лимит или изменять риск.
Обработка должна быть идемпотентной. Для этого требуется устойчивый идентификатор события либо комбинация идентификатора сделки и версии.
Данные противоречат друг другу
Разные источники могут сообщить разные суммы, даты, курсы или статусы одной сделки.
Для каждого поля нужен авторитетный источник. Также необходимо определить правила разрешения конфликтов и ситуации, в которых требуется ручное вмешательство.
Противоречие нельзя молча разрешать порядком поступления сообщений.
События приходят не по порядку
Подтверждение сделки может прийти раньше события её создания, а сообщение об исполнении — раньше промежуточного изменения.
Порядок доставки нельзя считать порядком бизнес-событий. Система должна учитывать версию, время возникновения события и время его получения.
Позднее событие не должно откатывать состояние сделки, если оно не является явной коррекцией.
Сделка изменяется
FX Swap может быть исправлен, отменён или пересогласован.
Необходимо понимать, создаёт ли изменение новую версию исходной сделки, отдельную компенсирующую сделку или новый контракт.
Старый риск должен сниматься согласованно с добавлением нового. Иначе возникает временное задвоение либо потеря риска.
Near leg исполнена, far leg остаётся
После полного исполнения near leg система должна учитывать только фактически оставшиеся обязательства по far leg.
Исполненная часть не должна продолжать создавать будущий cash flow или повторно попадать в exposure.
Одна сторона leg не исполнилась
Каждая leg содержит два встречных валютных cash flows. Возможна ситуация, когда одна сторона уже передала валюту, но не получила встречную.
Это самостоятельное бизнес-состояние с существенным settlement risk, а не просто техническая ошибка.
Если расчёт просрочен, риск не должен исчезать только потому, что плановая дата исполнения уже прошла.
Инварианты FX Swap
Инварианты задают свойства, которые должны выполняться независимо от порядка событий и текущего состояния рынка.
Инварианты контракта
- FX Swap состоит ровно из двух связанных legs.
- Обе legs используют одну валютную пару.
- Направления обмена в legs противоположны.
- Дата near leg предшествует дате far leg.
- Суммы и курсы положительны и имеют допустимую точность.
- У сделки есть устойчивый идентификатор и версия.
- Правила округления одинаково применяются всеми участниками процесса.
Инварианты обработки
- Повторная обработка одного события не меняет результат.
- Более старая версия не заменяет новую без явного признака коррекции.
- Порядок доставки событий не определяет их бизнес-порядок.
- Один контракт не должен учитываться в риске дважды.
- Любое изменение состояния оставляет аудиторский след.
Инварианты расчёта риска
- Одинаковые входные данные дают одинаковый результат.
- Результат связан с конкретными версиями сделки, рынка и модели.
- Расчёт не одобряется при отсутствии обязательных данных.
- Исполненная leg больше не создаёт будущего обязательства.
- Неисполненная просроченная leg продолжает учитываться.
- После полного исполнения не остаётся риска без объяснимой причины.
Что проверить при онбординге
Поддержку FX Swap можно считать законченной, когда определены и проверены:
- Каноническая модель контракта и двух его legs.
- Все допустимые состояния жизненного цикла.
- Модель риска и его изменение во времени.
- Правила pre-trade-проверки.
- Триггеры post-trade-переоценки.
- Источники сделочных и рыночных данных.
- Правила версионирования и разрешения конфликтов.
- Обработка дублей, пропусков и переупорядоченных событий.
- Сценарии частичного и неуспешного исполнения.
- Аудит, наблюдаемость и воспроизводимость расчётов.
Итог
Онбординг FX Swap начинается не с добавления нового значения в справочник типов сделок.
Сначала фиксируется бизнес-контракт. Затем описывается его жизненный цикл, строится временной профиль риска и определяются правила обработки неполных и противоречивых данных.
Главный критерий готовности прост:
В любой момент система может объяснить, какой риск существует, почему он возник и на каких данных был рассчитан.