В предыдущей главе мы описали NDF Norway Christmas как набор договорных правил. Но контракт не остаётся статичной записью.

Приходят события: trade capture, confirmation, fixing, payment, correction или failure. Каждое событие переводит обязательства в новое состояние.

Главный вопрос этой главы:

Что сейчас известно о сделке, какие obligations существуют, какие уже исполнены и как очередное событие меняет valuation, exposure и risk?

01

Contract, Lifecycle и Risk

Contract определяет, что должно произойти.

Lifecycle показывает, где обязательство находится сейчас.

Risk описывает возможный downside именно в этом состоянии.

Связь можно записать так:

Lifecycle Event → Contract State → Remaining Cash Flows → Valuation → Exposure → Risk

Если система неправильно обработала одно событие, ошибка может одновременно попасть в payments, liquidity forecast, P&L, risk reports и limits.

02

Исходный контракт Norway Christmas

Вернёмся к учебному RUB/NOK NDF.

RUB Notional:        100 000 000 RUB
Contract Rate:       0.10 NOK/RUB
Fixing Date:         15 декабря
Payment Date:        17 декабря
Settlement Currency: NOK

Формула с точки зрения Norway Christmas:

Settlement Amount = (Contract Rate − Fixing Rate) × RUB Notional

Контракт уже содержит все правила. Lifecycle отвечает на другой вопрос: какие из этих правил уже сработали и что существует сейчас?

03

Сделка как state machine

Упрощённо состояние можно представить функцией:

New State = transition(Current State, Lifecycle Event)

Из нового состояния система выводит remaining cash flows и передаёт их в Valuation, Risk, Operations и Treasury.

Для NDF Norway Christmas основной путь выглядит так:

Quoted → Traded → Confirmed → Pre-Fixing → Fixed → Due → Settled → Closed

Это не универсальный список статусов для любой системы. Важно не название state, а его бизнес-инварианты.

Например, state Fixed должен означать: contractual fixing принят, settlement amount определён, но payment ещё не исполнен.

04

Состояния NDF Norway Christmas

СостояниеЧто известноRemaining obligationГлавный risk focus
QuotedПредварительные termsЮридической сделки ещё нетPre-trade impact и pricing
TradedTerms согласованыУсловный будущий NOK paymentMarket и counterparty risk
ConfirmedTerms сверены сторонамиТот же условный paymentConfirmation и operational risk
Pre-FixingFixing ещё неизвестенAmount определяется формулойMarket uncertainty и PFE
FixedFixing принятИзвестный receivable или payableCounterparty, liquidity и settlement risk
DuePayment должен быть исполненИзвестная сумма к оплатеSettlement и operational risk
SettledДеньги переданыRemaining cash flow = 0Reconciliation и residual breaks
ClosedВсе обязательства завершеныНетData retention и audit

Risk profile меняется не потому, что поменялось название статуса. Он меняется потому, что изменились facts и remaining obligations.

05

Trade и confirmation

На Trade Date стороны согласуют экономические terms. В системе появляется trade record и первый набор future cash flows.

Для Norway Christmas фиксируются notional, contract rate, fixing source, dates, settlement currency и conventions.

Confirmation сверяет представление банка с представлением клиента. Она помогает обнаружить wrong rate, currency, notional или date.

Confirmation обычно не должна незаметно переписывать экономику сделки. Расхождение требует amendment, correction или dispute process.

На этом этапе cash flow ещё зависит от будущего fixing. Valuation использует market data, а counterparty exposure учитывает возможную будущую стоимость.

06

Pre-Fixing: формула известна, amount неизвестен

До 15 декабря контрактная формула известна, но fixing rate ещё отсутствует.

Система хранит условный future cash flow:

Amount = (0.10 − future RUB/NOK fixing) × 100 000 000

В зависимости от рынка Bank может стать payer или receiver. Поэтому будущий settlement amount моделируется через scenarios.

Именно здесь market factors влияют на valuation и PFE.

С приближением fixing date time horizon сокращается, но direction и amount всё ещё не определены договорно.

07

Fixing: неизвестное становится фактом

15 декабря приходит contractual fixing 0.08 NOK/RUB.

Система применяет формулу:

(0.10 − 0.08) × 100 000 000 = 2 000 000 NOK

После события FixingObserved состояние меняется:

до fixing:    conditional cash flow, amount unknown
после fixing: Bank → Norway Christmas, 2 000 000 NOK, amount known

Market uncertainty по этому cash flow исчезла. Движение RUB/NOK после fixing уже не меняет contractual settlement amount.

Но risk не исчез целиком. До payment остаются counterparty, liquidity, settlement и operational risk.

Для банка 2 млн NOK становятся известным payable. Для Norway Christmas — известным receivable.

08

Known не значит settled

После fixing сумма известна, но деньги ещё не переданы.

Между Fixing Date и Payment Date Operations должны подготовить instruction, проверить SSI, cut-off, calendar и доступность NOK liquidity.

Treasury видит известный отток 2 млн NOK. Risk видит оставшееся обязательство. Finance отражает изменение valuation и соответствующие accounting events.

Если банк обязан заплатить Norway Christmas, недостаток NOK в payment date становится liquidity problem, даже если формула рассчитана идеально.

09

Payment, reconciliation и закрытие

17 декабря банк отправляет 2 млн NOK по согласованным settlement instructions.

Событие отправки payment ещё не обязательно означает окончательное исполнение. Возможны статусы initiated, accepted, rejected и settled.

После подтверждённого settlement:

Known payable:        0
Remaining cash flow:  0
Trade state:          Settled

Затем reconciliation проверяет, что сумма, валюта, получатель и value date совпали с ожиданием.

Trade можно закрыть только после того, как обязательства исполнены или корректно прекращены. Maturity date сама по себе не доказывает settlement.

10

Missing или delayed fixing

Lifecycle engine не должен выдумывать значение, если contractual fixing не пришёл.

Состояние остаётся Awaiting Fixing, а контракт определяет следующий допустимый шаг: ожидать публикацию, использовать fallback или передать решение calculation agent.

Важно разделять два факта:

  • fixing должен был произойти по расписанию;
  • fixing фактически получен и принят системой.

Использование scheduled value вместо observed event может преждевременно создать неправильный payment.

11

Duplicate event и idempotency

Один fixing event может быть доставлен дважды из-за retry или повторной публикации.

Если обработчик не idempotent, система создаст два одинаковых settlement cash flow или два payment instruction.

Повторная обработка одного business event должна приводить к тому же состоянию, что и однократная.

Для этого нужны стабильный event identity, проверка текущего state и защита от повторного side effect.

Идемпотентность особенно важна на границе с платежными системами: повторный message не должен означать повторный перевод.

12

Corrected fixing

Поставщик данных может исправить ранее опубликованный fixing. Это не duplicate, а новый business fact.

Система должна знать:

  • разрешает ли контракт использовать correction;
  • какая версия fixing является действующей;
  • был ли payment уже рассчитан или отправлен;
  • какие downstream results нужно пересчитать;
  • нужен ли adjustment cash flow.

Простое обновление поля fixingRate недостаточно. Старое значение уже могло попасть в valuation, payment instruction, P&L и reports.

Correction требует контролируемого пересчёта проекций и audit trail: что изменилось, почему и какой результат был заменён.

13

Failed и partial settlement

Если payment instruction отклонён из-за неверного SSI, obligation не исчезает. Меняется operational state, но amount остаётся due.

Если банк отправил только 1.5 млн NOK из 2 млн, remaining obligation составляет 0.5 млн NOK, если контракт допускает partial settlement.

Дальше могут появиться default interest, cure period, notice или dispute.

Нужно различать:

  • operational failure — ошибка системы, instruction или cut-off;
  • credit failure — counterparty не исполняет obligation;
  • settlement failure — обмен не завершён как предусмотрено.

Одинаковый статус FAILED без причины слишком беден для Risk и Operations.

14

Amendment меняет будущий путь

Представим, что стороны до fixing уменьшают RUB notional со 100 до 60 млн.

Система не должна переписывать историю так, будто сделка всегда была на 60 млн. Нужны исходные terms, amendment event и effective date.

После amendment формула применяется к новому remaining notional:

(0.10 − 0.08) × 60 000 000 = 1 200 000 NOK

Будущие cash flows, valuation и exposure меняются с effective moment amendment.

Исторические расчёты до amendment должны оставаться воспроизводимыми.

15

Early termination и novation

При early termination плановый settlement может быть отменён и заменён termination amount.

Remaining cash flows не исчезают бесплатно. Их текущая экономическая стоимость учитывается в расчёте закрытия.

При novation payoff NDF может остаться тем же, но одна сторона заменяется новой.

Тогда market cash flow почти не меняется, а counterparty exposure, PD, CSA, netting set, collateral и limits могут измениться существенно.

Это показывает, почему lifecycle нельзя свести только к payment schedule.

16

Один event — много downstream-последствий

Событие FixingObserved(0.08) используется сразу несколькими функциями.

ФункцияРеакция на fixing
TradingПозиция больше не зависит от будущего fixing по этому cash flow
ValuationУсловный payoff заменяется известной суммой
RiskMarket uncertainty снижается, остаётся settlement exposure
OperationsСоздаётся payment instruction на 2 млн NOK
TreasuryВ liquidity forecast появляется известный NOK outflow
FinanceОбновляются P&L и accounting events
ReportingМеняются state, amount и risk classification

Если подразделения обрабатывают событие в разное время или используют разные версии, возникает рассогласование.

Поэтому lifecycle — это не одна колонка status, а согласованное распространение business facts.

17

Event time и processing time

Для каждого события полезно различать как минимум два времени.

Event time — когда событие экономически или юридически произошло.

Processing time — когда конкретная система его получила и обработала.

Fixing мог быть опубликован в 12:00, market-data service получил его в 12:01, а risk batch применил в 12:10.

Без этого различия трудно объяснить расхождения между системами, восстановить состояние на исторический момент и корректно обработать late event.

18

Lifecycle других продуктов

Логика состояний одна, но события зависят от продукта.

IRS

До fixing floating coupon неизвестен. После fixing ставка и coupon известны. После payment этот cash flow исчезает из remaining obligations.

Deliverable FX Forward

До settlement существуют две principal obligations. После успешного обмена обе валютные ноги закрываются.

FX Option

До expiry существует optional right. После exercise появляется settlement obligation. После expiry без exercise право исчезает без будущего payoff.

CCIRS

Initial exchange сменяется последовательностью fixing и coupon payments, а затем final principal exchange.

Сравнивать продукты полезно через один вопрос: какие remaining cash flows существуют после конкретного event?

19

Как читать lifecycle-код

При чтении обработчика события или MR полезно пройти шесть шагов.

  1. Какой business event пришёл?
  2. Из какого state переход разрешён?
  3. Какие invariants должны выполняться?
  4. Какие remaining cash flows создаются, изменяются или исчезают?
  5. Какие downstream-проекции нужно обновить?
  6. Что произойдёт при duplicate, late или corrected event?

Хороший handler не просто меняет статус. Он атомарно фиксирует business fact и обеспечивает согласованные последствия.

Особенно опасны скрытые переходы, когда поле обновляется напрямую, а valuation, payments или risk продолжают жить в старом состоянии.

20

Практическая таблица перехода

Для каждого lifecycle event можно заполнять одну таблицу.

ПолеВопрос
EventЧто произошло в бизнесе?
PreconditionsИз каких states событие допустимо?
New factsЧто стало известно?
Removed uncertaintyЧто больше не зависит от будущего?
Remaining obligationsКакие cash flows ещё существуют?
Side effectsКакие payments, calculations и reports обновить?
Risk impactКакие risk factors исчезли или появились?
Failure handlingЧто делать при duplicate, late, missing или corrected event?
AuditКак воспроизвести решение позже?

Такая таблица превращает расплывчатое «обработать fixing» в проверяемую спецификацию.

Главный вывод

Lifecycle — это не календарь дат и не поле status.

Это модель того, как business events изменяют известные факты, remaining cash flows и обязательства сторон.

Для NDF Norway Christmas путь выглядит так:

Conditional Cash Flow → Fixing → Known Payable/Receivable → Settlement → No Remaining Cash Flow

А системная цепочка остаётся общей:

Event → State → Remaining Cash Flows → Valuation → Exposure → Risk → Decision

Если эта связь ясна, становится понятно, почему одна строка в fixing handler может изменить payment, liquidity forecast, P&L и risk report одновременно.

Вопросы

  • Почему Fixing Date и факт получения fixing — не одно и то же?
  • Какие риски остаются после того, как settlement amount стал известен?
  • Чем duplicate fixing отличается от corrected fixing?
  • Почему failed payment не должен удалять obligation?
  • Как amendment сохранить историческую воспроизводимость сделки?
  • Почему novation меняет counterparty risk, даже если payoff не изменился?