Перед любыми действиями, связанными с конвертацией, обязательно сделайте БЭКАП текущей базы данных.

Изменение структуры, скорее всего, отразится на Ваших счетах по умолчанию.

Перед конвертацией обязательно проконсультируйтесь в задаче по обновлению, как правильно настроить счета по умолчанию с учетом новой структуры.

Правила конвертации

  1. Все сделки Репо должны быть сконвертированы.
  2. Мультисделки Репо конвертируются как единичные, головная запись удаляется.
  3. Идентификаторы платежей в бумагах сохраняются, платежи привязываются к модифицированным (конвертированным) сделкам Репо.
  4. Ноги сделки Репо (сделки Buy/Sell) удаляются, т.е. переводятся в статус -999.
  5. Вместо чистой стоимости и НКД создается депозитная сделка на основании:
    1. Параметров головной сделки Репо – ее сроков и направления,
    2. параметров пар платежей в бумагах – суммарной дисконтированной рыночной стоимости инструментов, входящих в сделку Репо
    3. депозитная сделка связывается с головной: dp.parent_sec_deal = dec_deal.deal_id.
  6. Платежи MarginCall в валюте конвертируются в депозит, в бумаге - остаются платежами, привязанными к головной сделке.
  7. При наличии выплаты дохода внутри сделки должна быть создана сделка - депозит купонных доходов (это касается только купонных платежей, привязанных к сделке Репо. Созданные в контроле погашений купонные платежи затронуты не будут)
    1. Валюта сделки купонного депозита совпадает с валютой основного депозита
    2. Сумма сделки равна платежу по купону (погашению / дивиденду), созданному под сделкой
    3. Если валюта этого платежа не совпадает с валютой основного депозита, для вычисления суммы купонного депозита применяется курс sec_deal.crossrate
    4. Купонный платеж перестает давить на балансы.
  8. Комиссии, привязанные к ногам сделки привязываются к голове модифицированной сделки Репо.
  9. Должна быть произведена сверка сумм выкупа (в старых Репо) против сумм всех депозитов под новой сделкой Репо. Для этого НКД и рыночная цена должны быт записаны в платежах поставки бумаг в поля accrued и market_price соответственно.

Процедура конвертации

  1. Конвертация производится процедурой PKG_DEAL_REPO.repo_convert_648_period.
  2. Процедура имеет три параметра: начальная дата, конечная дата и строковый параметр, принимающий значения 'True' или 'False'.
  3. Процедура конвертирует все сделки, дата регистрации которых находится между параметрами процедуры начальная дата и конечная дата. Следует учесть, что дата регистрации сделки содержит время регистрации. Например, для конвертации всех сделок, заключенных 01.01.2010 необходимо запустить процедуру со следующими параметрами:

    BEGIN
      PKG_DEAL_REPO.repo_convert_648_period (to_date('01/01/2010','dd/mm/yyyy'), to_date('02/01/2010','dd/mm/yyyy'), 'True');
    END;
  4. Сначала обязательно должна быть проведена конвертация сделок за все время с последним параметром 'False'. Это позволит осуществить конвертацию в автономной транзакции, записать все результаты в протокольную таблицу конвертации protocol_repo_convert и откатить все изменения.

    После запуска диагностической конвертации или перекомпиляции пакета PKG_DEAL_REPO необходимо переподключиться к сессии, иначе будет ошибка "Невозможно найти вызываемый блок программы"

  5. После завершения работы процедуры в задачу по обновлению (или отдельную по конвертации) необходимо приложить результат запроса SELECT * FROM protocol_repo_convert WHERE error_text IS NOT NULL;
  6. Перед массовой конвертацией желательно конвертировать несколько сделок, чтобы посмотреть, как выглядит результат конвертации. Для этого достаточно указать небольшой диапазон дат или при большом объеме сделок в любую дату можно использовать процедуру PKG_DEAL_REPO.repo_convert_648 (:ticket), где ticket - это идентификатор головной сделки. Также можно запустить диагностическую конвертацию в автономной транзакции процедурой PKG_DEAL_REPO.repo_convert_648_diag (:ticket)

Похожие статьи