Последний шаг — связать бизнес-карту с объектами, событиями, расчетами и границами систем. Именно этот слой позволяет осознанно читать и проверять MR.

01

Канонические объекты

В коде обычно встречаются разные представления одних и тех же доменных понятий:

  • trade и product definition;
  • leg и cash flow;
  • lifecycle event;
  • fixing и market observation;
  • payment и settlement instruction;
  • valuation result и sensitivity;
  • exposure, netting set и collateral;
  • risk metric, limit и utilization.

Важно понимать не только поля объекта, но и его место в общей причинной цепочке.

02

Lifecycle как state machine

Обработчик события должен явно отвечать на вопросы:

  • из какого состояния разрешен переход;
  • какие данные являются входом;
  • какие cash flows меняются;
  • какие производные результаты нужно пересчитать;
  • является ли обработка идемпотентной;
  • что делать с correction, cancellation и событиями не по порядку.
03

Data lineage

Полезно уметь пройти путь результата назад: от risk report и limit utilization к metric, от metric к exposure и valuation, от valuation к cash flows, а от них — к контракту, lifecycle events и market data.

04

Чек-лист для MR

  1. Какой бизнес-инвариант защищает изменение?
  2. Pre-trade это логика или post-trade?
  3. Какой effective date используется?
  4. Какие downstream consumers затронуты?
  5. Не смешаны ли contract state и calculation result?
  6. Как проверяются повторная доставка и порядок событий?
  7. Как изменение проявится в P&L, exposure или limit utilization?

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

Строка кода становится понятной, когда видно, какой переход в состоянии банковской сделки она реализует и какое решение банка зависит от результата.

Вопросы

  • Где должна храниться истина о состоянии сделки?
  • Какие результаты можно пересчитать, а какие события нужно хранить неизменяемо?
  • Как отличить ошибку market data от ошибки lifecycle processing?