81 lines
6.8 KiB
Markdown
81 lines
6.8 KiB
Markdown
# Интеграция с MOEX ISS
|
||
|
||
MOEX ISS дополняет данные T-Bank публичной информацией об облигациях и
|
||
дневными закрытиями индексов Мосбиржи.
|
||
Backend получает её по HTTPS в JSON с `iss.moex.com`; запросы содержат
|
||
идентификаторы выпуска, без token T-Bank и идентификатора брокерского счёта.
|
||
MOEX не определяет доступ пользователя к инвестициям и не подтверждает
|
||
личное получение выплаты.
|
||
|
||
## Данные и сопоставление выпуска
|
||
|
||
| Данные MOEX | Использование в WealthLedger |
|
||
| --- | --- |
|
||
| Эффективная доходность, цена её расчёта, целевая дата и время торгов | Рыночный показатель на [странице облигации](../domains/instruments/bonds.md#содержание) |
|
||
| Купоны и оферты из календаря `bondization` | [Будущие события](../domains/income/upcoming-events.md) по текущим позициям |
|
||
| Дата погашения, номинал и валюта из описания выпуска | Прогноз полного погашения в том же разделе событий |
|
||
|
||
Для доходности backend сопоставляет SECID, ISIN и BOARDID с идентификаторами
|
||
облигации T-Bank. Совпадения названия недостаточно. Значение сопровождается
|
||
собственной ценой расчёта и временем MOEX; оно может отличаться от котировки
|
||
T-Bank и не является личной доходностью инвестора.
|
||
|
||
Для календаря используется SECID, разрешённый из тикера позиции или её
|
||
метаданных. Backend читает страницы календаря, затем применяет выбранный
|
||
период и текущее количество бумаг. Смысл прогнозных сумм и ограничения
|
||
оферты определяет [область будущих выплат](../domains/income/upcoming-events.md).
|
||
Купонный календарь непосредственно на странице облигации получает данные
|
||
через T-Bank `GetBondCoupons`; эти два пользовательских представления
|
||
не следует считать одним источником календаря.
|
||
|
||
## Недоступность и свежесть
|
||
|
||
HTTP-запрос ограничен таймаутом. Сеть, неуспешный HTTP-ответ, кроме `404`,
|
||
или некорректная структура ответа приводят к `MOEX_UNAVAILABLE`.
|
||
`404` и отсутствие запрошенного блока означают отсутствие доступных данных;
|
||
для доходности неподходящий выпуск или неполные обязательные значения
|
||
также дают отсутствие показателя. Это отличается от отказа источника.
|
||
|
||
Последствие ошибки зависит от потребителя:
|
||
|
||
- Метрики облигации отмечают недоступность доходности, сохраняя доступные
|
||
показатели других источников.
|
||
- Расчёт будущих событий завершается ошибкой `503`, если необходимый календарь
|
||
недоступен; частичный список не выдаётся за полный.
|
||
|
||
Клиент MOEX не использует очередь, повторы и лимитер gRPC T-Bank и не хранит
|
||
собственный кэш. Повторное использование собранных метрик принадлежит
|
||
[странице облигации](../domains/instruments/bonds.md#получение-данных-и-восстановление).
|
||
Наличие успешного HTTP-ответа не гарантирует котировку без задержки.
|
||
|
||
## Индексы
|
||
|
||
Для [результата инвестирования](../domains/portfolio/investment-performance.md)
|
||
backend читает дневные закрытия MCFTRR (полная доходность после налогов) и
|
||
IMOEX (ценовой, справка) из
|
||
`/iss/history/engines/stock/markets/index/securities/{SECID}.json` с
|
||
`history.columns=TRADEDATE,CLOSE`, постранично по `history.cursor`.
|
||
Любая некорректная страница считается сбоем: частичная история не
|
||
сохраняется.
|
||
|
||
Закрытия и подтверждённый диапазон покрытия хранятся локально в SQLite
|
||
(исключение из ADR 019, см. [ADR 023](../adr/023-investment-performance-vs-index.md)).
|
||
Догрузка выполняется при чтении результата одной одновременной загрузкой на
|
||
индекс: расширение диапазона назад — сразу, проверка ещё не опубликованного
|
||
закрытия и повтор после сбоя — не чаще раза в час. Недоступность
|
||
MOEX не возвращается как HTTP-ошибка: при достаточной сохранённой истории
|
||
результат считается по ней, иначе сравнение помечается
|
||
`INDEX_HISTORY_UNAVAILABLE`. События лога —
|
||
`integration.moex.index_history.succeeded` и `.failed`, без данных
|
||
пользователя.
|
||
|
||
ISS бесплатно отдаёт данные для ознакомления; приложение личное и не
|
||
распространяет их, источник указан в пояснении «Как считали».
|
||
|
||
## Ссылки
|
||
|
||
Условия обработки источника в прогнозе закреплены в
|
||
[спецификации будущих событий](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/brokerage-account-upcoming-events/spec.md#requirement-upcoming-events-use-complete-source-results).
|
||
Точный механизм транспорта, разбора и сопоставления реализован в
|
||
[клиенте MOEX](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/integrations/moex/moex.client.ts).
|