# Облигации Страница облигации объясняет условия конкретного выпуска, его рыночную цену, купонный календарь и личную позицию. Денежная оценка покупки, текущая купонная доходность, доходность источника к целевой дате и результат открытой позиции имеют разный смысл. Раздел сохраняет их отдельно, вместе с валютой, датой и ограничениями исходных данных. ## Поиск и идентификация выпуска Раздел «Облигации» открывает `/bonds`: поиск по названию, тикеру или ISIN с двух символов. `/bonds/:identifier` принимает UID или точный тикер. Название и логотип облигации в портфеле счёта и «Всех счетах» ведут на её страницу по точному UID без предварительной загрузки карточек всех позиций. При открытии выпуска проверенный однозначный тикер заменяет UID в адресе, сохраняя период графика и фильтр событий. Поиск выбирает один режим на нормализованный ISIN, сохраняя разные выпуски и записи без ISIN отдельно. Приоритет: доступность API, точный тикер, TQOB, затем UID. Ограничение — 30 результатов после выбора режима. Цена и ссылка принадлежат выбранному UID. Прямая ссылка из портфеля сохраняет исходный UID, если поиск предпочитает другой режим. Неоднозначный точный тикер возвращает `409 BOND_TICKER_AMBIGUOUS`; интерфейс предлагает выбрать выпуск через поиск. Поиск загружает параметры выпусков и котировки, но оставляет ссылки по UID: отдельная проверка тикера для каждого результата не выполняется. ## Содержание Карточка показывает цену в процентах от номинала, время котировки и статус торгов. Изменение выражено в процентных пунктах относительно последней завершённой дневной свечи до московской даты котировки; база ищется за 20 дней. Денежная оценка без НКД равна цене в процентах, умноженной на текущий номинал и делённой на 100. Она округляется до девяти десятичных знаков. Оценка с НКД добавляет текущий накопленный купонный доход только при совпадении валют. Это ориентир без комиссии: котировка может быть старше текущего номинала и НКД. FX-конвертация не выполняется, первоначальный номинал не заменяет текущий. Условия выпуска: текущий и первоначальный номинал, погашение, оферта, количество купонов в год, лот. Отдельно отмечены плавающий купон, амортизация, бессрочность и субординация. Неизвестные даты и суммы показываются как недоступные. Сводка «Купон, рейтинг и доходность» показывает ближайший купон на одну облигацию, дату выплаты и тип из календаря Т-Банка. Неизвестная сумма ближайшей выплаты не заменяется суммой более позднего купона. Флаг плавающего купона используется только как запасной признак типа; отсутствие флага не означает фиксированный купон. Текущая купонная доходность — ближайший купон × 365 / длительность его периода в днях / денежная цена без НКД × 100 %. Decimal-расчёт округляется до четырёх знаков. Требуются известная неотрицательная выплата, положительные цена и период и одинаковая валюта выплаты и цены. Это годовая оценка при сохранении размера купона и номинала, без налогов, комиссий и реинвестирования; она не является доходностью к погашению. Время котировки показывается отдельно. Эффективная доходность берётся из `marketdata_yields.EFFECTIVEYIELD` [MOEX ISS](../../integrations/moex.md), с проверкой точных SECID, ISIN и BOARDID. Показываются собственная цена расчёта, дата торгов и целевая дата (погашение, оферта или другая дата источника). Котировка MOEX может отличаться от котировки Т-Банка и поступать с задержкой. Доходность не рассчитывается из неполного календаря будущих выплат. Кредитный рейтинг выпуска читается по точному ISIN из публичного [реестра НКР](../../integrations/nkr.md). Отображаются агентство, дата рейтингового действия, время получения реестра и ссылка на выпуск. Отзыв показывается явно; уровень риска Т-Банка и рейтинг эмитента не подставляются вместо рейтинга выпуска. Отсутствие записи в НКР не означает отсутствия рейтингов других агентств. Причины выбора источника и пределы покрытия сохранены в [ADR 013](../../adr/013-nkr-bond-credit-ratings.md). HTML-источник, общий кэш и поведение при изменении реестра описаны в [интеграции НКР](../../integrations/nkr.md#загрузка-кэш-и-отказ-источника). График и таблица дневных цен сохраняют проценты от номинала и признак завершённости свечи. Исторические котировки не пересчитываются в деньги по сегодняшнему номиналу. Денежная средняя покупки не наносится на процентную шкалу. Периоды: месяц, полгода, год и вся известная история. Окна upstream не превышают 365 дней, одинаковые границы дедуплицируются. Если начало истории неизвестно, запрос «вся история» возвращает `BOND_HISTORY_START_UNAVAILABLE`. Позиция агрегирует только `BOND` с точным UID по доступным счетам, используя [снимок портфеля](../portfolio/overview.md) и decimal-арифметику. Средняя покупка взвешена по количеству. Неполные или разновалютные суммы недоступны; общая средняя и процент доступны только при положительных включённых позициях. Для коротких позиций и сочетания длинных с короткими эти показатели не синтезируются. Результат открытой позиции не включает выплаченные купоны и продажи и не называется доходностью к погашению. При отсутствии позиции блок скрыт. ## Купоны и личные события Календарь охватывает пять прошлых лет и следующий год. Будущие купоны сортируются по дате выплаты, прошедшие и недатированные доступны отдельно. Будущие и прошедшие события купонного графика показываются единым предметным представлением выплаты с пометкой события по графику — тем же, что у исполненных выплат и прогноза; исполнение подтверждает только личная история. Показаны сумма на облигацию, отдельная личная оценка, номер, тип, длительность периода и дата реестра, если они известны. Неопределённый будущий купон не заменяется нулём. Личная оценка доступна только при положительных позициях, известной сумме, будущей выплате и известном ещё не прошедшем реестре. Она не подтверждает право на выплату и не учитывает налоги и будущие сделки. Время позиции и устаревание снимка показываются отдельно от календаря выпуска. Личная история использует [журнал операций](../operations/overview.md) всех счетов с точным `instrumentUid`, включая прошлые годы. Фильтры: все, сделки, купоны, прочее. Смена фильтра сбрасывает пагинацию; истёкший курсор восстанавливается запросом первой страницы. Выплаты выпуска не подменяют личные зачисления. ## Получение данных и восстановление Страницу облигации обслуживает инвестиционная подсистема backend. Запросы `/api/v1/bonds` требуют действующей сессии с Bearer token и текущего подключения T-Bank. Backend разрешает идентификатор и получает условия выпуска, котировку, свечи, позицию, купоны и показатели. Точную форму транспортного контракта задаёт [HTTP API](../../architecture/http-api.md). `BondBy`, `FindInstrument` и `GetBondCoupons` используют способ декодирования, сохраняющий отсутствие полей. Общие данные выпуска, quotes, календари, MOEX metrics и необходимые результаты НКР сохраняются в SQLite. Личные позиции и оценки выплат используют текущий доступ и сохранённый portfolio; они не попадают в общие источники. BondBy переиспользуется зависимостями выпуска. Discovery принадлежит query, свежесть — конкретному source/range. Missing/stale зависимости ставятся в фоновую очередь через прежний limiter; обычный HTTP-ответ не ждёт брокера. Покрытые завершённые свечи не перечитываются после restart. Открытый хвост остаётся изменяемым; ручной refresh охватывает показанный период. Последняя полная личная оценка сохраняется при ошибке новых обязательных зависимостей, вместе с исходным временем. Неполнота не означает отсутствие выплат. Наблюдение статуса не запускает повторный импорт. Политика источников и границы — в [модели свежести](../../architecture/cross-cutting/data-freshness.md). Разделы загружаются независимо, показывают каркас загрузки и локальную повторную попытку. Ошибка фонового обновления сохраняет последние данные. Смена подключения сбрасывает поддерево клиентских запросов облигаций вместе с остальными финансовыми запросами; выход очищает кэш сессии. Общие график, позиция и личные события имеют общее представление на страницах акций и облигаций. Основные спецификации [портфеля](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/portfolio-view/spec.md) и [журнала](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/brokerage-account-ledger/spec.md) описывают исходные финансовые понятия. Отдельная основная спецификация страницы облигации в текущем OpenSpec Store не найдена; условия вычислений подтверждены [каталогом](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/instruments/bonds/application/bond-catalog.service.ts), [рыночными данными](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/instruments/bonds/application/bond-market.service.ts), [выплатами](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/instruments/bonds/application/bond-income.service.ts) и [проверками](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/instruments/bonds/application/bond.spec.ts). Границы источников описаны в [разделе интеграций](../../integrations/README.md), сходное разделение рыночных и личных данных — в [акциях](stocks.md). ## Online reference Страница облигации, поиск и переход по тикеру обращаются к онлайн-справочнику брокера; сохранённые quotes, свечи, события, ratings и метки портфеля сохраняют собственные границы свежести и ошибок.