Денежный рынок: LQDT и расчетный фонд MM_CBR
Редакция документа от 18.10.2026 для финансового выпуска 0.5.0 и движка 0.5.0-rc.2. Формула и внутренняя версия денежной подбазы остаются 0.3.0. Срез денежных данных — 16.10.2026; общий портфельный календарь — 22.09.1997–16.10.2026. Глубина каждого другого инструмента задаётся его собственным рядом.
Источники и полнота
Фактические положительные котировки LQDT / VTBM собраны из MOEX ISS с 20.01.2020 по 16.10.2026: 1687 дат. Оба кода имеют ISIN RU000A1014L8; сохранены исходный SECID, цена, объем и источник каждой строки. Сборщик запросил историю с 1992 года, но не создал котировок до первого ответа биржи. До появления фонда расчетная история под его тикером отсутствует.
Дробление 1000 новых паев на один старый имеет юридическую дату 23.03.2020. В ценовой истории поправка применяется к первой положительной котировке новых единиц 24.03.2020. Исходный CLOSE не пересчитывается; коэффициент действует в формуле доходности. Отсутствующие CLOSE не превращаются в сделки или нулевую доходность.
Официальная ставка рефинансирования ЦБ РФ сохранена с 01.01.1992. Под «учетной ставкой» понимается именно этот ряд. Ключевая ставка хранится отдельно с 16.09.2013; ее значение до этой даты не создается. Ежедневный архив ключевой ставки содержит 3281 опубликованное наблюдение начиная с 17.09.2013. Начальная точка 16.09.2013, 5.50% подтверждена Статистическим бюллетенем Банка России №8/2020, таблица 2.2, страница 67 PDF. Даты дальнейших изменений сверены с таблицей процентных ставок ЦБ; проверено соответствие каждого дневного наблюдения.
С 01.01.2016 рефинансирование приравнено к ключевой ставке согласно Указанию ЦБ №3894-У от 11.12.2015. До этой даты два ряда могут различаться: например, 16.12.2014 ключевая 17%, рефинансирование 8.25%. В подбазе 66 событий ключевой ставки и 139 событий рефинансирования, включая явно помеченные производные события после 2016 года.
Первичные страницы HTML/PDF ЦБ и ответы ISS сохранены с URL, временем получения и SHA-256 распакованных байтов. В source_artifact также встроены gzip-байты, поэтому сама подбаза сохраняет свидетельства. Архивированный факт дробления из выпуска 0.2 обозначен REVIEWED_FACTS_PRIMARY_LINK и не объявляется оригинальным HTML.
Определение модели
MM_CBR — самостоятельный расчетный ряд, не LQDT и не торгуемый БПИФ. До 16.09.2013 он использует рефинансирование, с этой даты — ключевую ставку. Оба официальных входных ряда сохраняются раздельно; объединение относится только к явно определенной модели.
На каждый календарный день d берется ставка, действующая в этот день. Номинальная годовая ставка делится на фактическое число дней в году (365 или 366, ACT/ACT). Проценты капитализируются ежедневно, включая выходные:
r(d) = (rate_pct(d) / 100 − annual_expense) / days_in_year(d)
level(d) = level(d−1) × (1 + r(d))
База индекса 100 задана на 31.12.1991; первое начисление — 01.01.1992. Начальная точка не является наблюдением процентной ставки за 1991 год. Для модели со стартом в начале произвольного дня начисляется этот день. Для сравнения с LQDT нормирование выполняется от закрытия первой котировки до закрытия последней: доход первого дня в сравнение не включается повторно.
ACT/ACT — явное допущение модели. Она не подменяет RUSFAR, RUONIA, доходность РЕПО или реально исполнимую депозитную ставку. Прямой доступ инвестора к официальной ставке не предполагается. Доступность инструментов, риск контрагента, рыночная ликвидность и отклонение биржевой цены от СЧА не моделируются. Волатильность и Sharpe расчетного ряда не оценивают рыночный риск реального денежного БПИФ.
Налоги равны нулю. Базовые годовые расходы модели — 0%; их можно изменить в расчетной таблице и на странице сайта. Комиссии покупки/продажи в отдельном сравнении равны нулю. Фактический ряд LQDT рассчитывается по рыночным CLOSE с поправкой на дробление; расходы, отраженные внутри фонда, из его цены повторно не вычитаются. Историческая накопительная политика остается в исследовательском статусе; фактическое зачисление средств инвестору не моделируется.
Доходность гипотетического фонда не калибруется к LQDT задним числом. Разница с моделью не идентифицируется как комиссия управляющей компании: на нее влияют состав активов, денежные ставки, расходы и рыночное отклонение цены пая.
Деноминация и денежная шкала
С 01.01.1998 1000 прежних рублей заменены одним новым. Это преобразование денежной единицы не создает убыток −99.9% в индексе доходности. Индекс model_daily.level безразмерный и сохраняет цепочку процентных доходностей. Номинальный баланс инвестиции в 100 старых рублей после деноминации равен level / 1000; до нее — level. Денежная шкала указана отдельно. Инфляция не вычитается: высокие номинальные результаты 1990-х не означают сопоставимый рост покупательной способности.
Структура подбазы
Файл: engine/data/policy_rates/policy_rates.sqlite.
| Таблица | Содержание |
|---|---|
| source_artifact | 28 артефактов, происхождение, тип свидетельства, хеш и сохраненные gzip-байты |
| rate_observation | 3281 исходное дневное наблюдение ключевой ставки |
| rate_event | 205 событий двух ставок: начала действия, границы, значения, основание, источник |
| rate_daily | 17487 календарных значений двух отдельных ставок; ключевая до появления отсутствует |
| fund_model | Определение MM_CBR: правило перехода, налоги, расходы, ACT/ACT |
| model_daily | 12708 календарных начислений и одна начальная точка; дневной доход, индекс и денежная шкала |
| lqdt_quote | 1687 положительных котировок, исходный код, объем, поправка на дробление и индекс |
| lqdt_action | Раздельные юридическая дата и дата применения дробления |
| metadata | Версия, границы доступности, правила единиц и времени наблюдения |
announced_at остается NULL, если точное время объявления решения не сохранено. Дата начала действия не выдается за момент публикации. Это ретроспективная реконструкция ставок, не сертифицированный point-in-time набор для проверки внутридневных решений.
В основной portfolio.sqlite добавлен только MM_CBR, класс money_market_model, признак is_reference=1, без ISIN и биржевой цены. model_parameters фиксирует хеш подбазы и допущения. В текущий общий календарь импортированы 7277 оценок MM_CBR за 22.09.1997–16.10.2026. Полный денежный календарь содержит 12708 начислений с 01.01.1992 и начальную точку 31.12.1991, всего 12709 строк. Общий справочник содержит 290 записей. В основной series у LQDT 1695 оценок; это не число фактических положительных котировок: в отдельной денежной подбазе их 1687, а основная серия дополнительно содержит разрешённые перенесённые оценки. Полная история модели с 1992 и LQDT до октября доступны на отдельной странице money-market.html; даты других активов не продлеваются переносом последней цены.
Сравнение на одинаковом периоде
Период: 20.01.2020–16.10.2026. Стартовый капитал 1 000 000 рублей. Без налогов, без расходов модели и без комиссий покупки/продажи.
| Показатель | Модель ЦБ | LQDT |
|---|---|---|
| Доходность за период | 121.12% | 110.98% |
| Среднегодовая доходность | 12.50% | 11.72% |
| Конечный капитал, RUB | 2 211 245 | 2 109 801 |
CAGR рассчитывается по фактическим календарным дням / 365.2425. Годовое сравнение использует одинаковые начальные и конечные даты фактических котировок. Неполные 2020 и 2026 годы не объявляются полными годами.
Воспроизведение формирования денежной подбазы
Следующие команды относятся к полному исходному финансовому архиву PortfolioLab_0_4_3_2026-10-18.zip. В контрольном комплекте текущего Site используется python3 scripts/reproduce.py. В каталоге engine исходного архива: python -m portfoliolab.policy_rates пересобирает подбазу офлайн; --fetch обновляет официальные снимки заданного выпуска. Полная ценовая история LQDT сохраняется в lqdt_full.json; ее строки отдельно воспроизводятся из raw через fund_history с исходными параметрами 1992-01-01–2026-10-16. Для нового календарного среза обновляются параметры запроса, весь набор источников, версия и журнал решений; прежние артефакты сохраняются.
В корне: python tools/analyze_policy_rates.py --rebuild проверяет контрольные суммы, календарь, границы, ставки до/после переходов, выходные, високосные дни, деноминацию и дробление. Независимое накопление Decimal сопоставляется со всеми дневными начислениями. Обе ставки после 2016 сверяются; до 2013 ключевая не заполняется. Сопоставляются исходные цены и сквозной результат LQDT. Полная офлайн-пересборка всех таблиц подбазы и raw-replay LQDT обязательны. Результат текущего отдельного запуска: 47 проверок PASS.
tools/validate_release.py сравнивает 13 предметных таблиц прежнего выпуска по полным логическим хешам и проверяет точность импорта MM_CBR. Текущий контроль области изменений: 35 проверок PASS. Для сайта добавлены 8 сценариев денежной модели; портфельный паритет содержит 13 сценариев, включая MM_CBR. Расчетная таблица содержит формулы и проверку изменения расходов без изменения фактического LQDT. Финальный полный контроль и его ограничения фиксируются отдельно в control/full_control_report.json; браузерное взаимодействие в текущем окружении не проверяется.
Первичные ссылки
- Ключевая ставка: https://www.cbr.ru/hd_base/KeyRate/
- Даты изменений: https://www.cbr.ru/hd_base/procstav/ir_chg_mpo/
- Рефинансирование и правило с 2016: https://www.cbr.ru/statistics/idkp_br/refinancing_rates1/
- Начальная ключевая ставка, бюллетень 8/2020, таблица 2.2, PDF-страница 67: https://www.cbr.ru/collection/collection/file/36666/bbs2008_r.pdf
- Деноминация, годовой отчет ЦБ 1998: https://www.cbr.ru/Collection/Collection/File/7815/ar_1998.pdf
- LQDT / VTBM: https://iss.moex.com/iss/securities/LQDT.json и https://iss.moex.com/iss/securities/VTBM.json
- Дробление: https://www.moex.com/ru/index/vtbmm
Итог полного контроля выпуска 0.3.0
Завершен 2026-10-17T19:37:07Z: PASS, 35 этапов до финального запечатывания. Офлайн воспроизведены основная база, вложенная база акций и подбаза ставок; исходные строки LQDT повторно разобраны из сохраненных raw. SQL-дамп восстановлен, все предметные таблицы сверены целиком. Проверка подбазы денежного рынка: 47 PASS; проверка области изменений и прежнего среза: 35 PASS; портфельный паритет: 13 сценариев PASS; отдельная JS-модель денежного рынка: 8 сценариев PASS; сравнение портфелей: 8 PASS. Экспорт обоих наборов SQLite→JSON совпал побайтово.
Расчетная таблица независимо совпала с Python; изменение годовых расходов уменьшает только результат модели и не меняет фактический LQDT. Все четыре листа визуально проверены; даты сохранены числовыми датами Excel, цвета линий проверены в экспортированном файле. Браузерное взаимодействие и WebMCP не проверялись. Подробности: control/full_control_report.json, reports/workbook_verification.json. Последующая проверка архива и факт публикации фиксируются отдельно.