Методика

Как устроена зона справедливости и что показала проверка.

← К панели

Методика: почему панель показывает зону, а не прогноз

Короткий ответ: потому что прогноз направления курса не подтвердился данными. Длинный — ниже, с числами.


1. Что было проверено до постройки панели

Исследование ruble-drivers (каталог показателей + validation/VALIDATION.md) прогнало ~60 дневных сигналов × 3 цели × 4 горизонта × 6 режимов курсообразования, плюс месячные потоковые, фискальные и внешнеторговые ряды. Каждая находка прошла адверсариальную проверку независимыми агентами, писавшими собственный код с задачей её опровергнуть.

Итог: ни один показатель не предсказывает направление курса USD/RUB на горизонте от дня и дольше.

Опровергнуты, в частности:

2. Почему обычные тесты здесь врут

Через ту же батарею были прогнаны заведомо неинформативные сигналы: 150 случайных блужданий, 300 процессов AR(1), синусоиды, тренды. Результат:

Режимh=1h=5h=21h=63
Текущий (внебиржевой курс с 13.06.2024)0,1090,1860,3730,505

В ячейках — 95-й процентиль |IC| у сигналов, которые физически не могут ничего знать о будущем. Синусоида с периодом 125 дней получает IC = −0,36 при p = 0,000. Случайное блуждание на трёхмесячном горизонте даёт |IC| до 0,50 в 5% случаев.

Отсюда правило панели: горизонты 21 и 63 дня в двухлетнем режиме непроверяемы (7 независимых окон, минимально обнаружимая связь 0,6–0,7). Это отсутствие мощности, а не доказательство отсутствия эффекта — и то, и другое одинаково запрещает строить на них сигнал.

3. Что уцелело и попало в панель

Уровень A — единственный. Перенос вечернего разрыва «биржевой юань против фиксинга ЦБ» в завтрашний официальный курс: β ≈ 0,91–1,05, R² 0,38–0,53, на крайних децилях разрыва ±106 б.п. при 90–94% верных знаков. Эмбарго в один день обнуляет эффект — это механика, а не прогноз: официальный курс считается по сделкам до 15:30, и вечернее движение рынка просто переезжает в завтрашний фиксинг.

Применимость узкая и указана на панели: только расчёты, привязанные к курсу ЦБ регламентом (брокерская конвертация «по курсу ЦБ плюс комиссия», учёт, часть контрактов). При банковском спреде 100–200 б.п. эффект в 20 б.п. не имеет смысла.

Уровень B — контекст, не сигнал. Реверсия после всплеска волатильности; кластеризация волатильности на 1–3 дня; REER как магнит для инфляции, но не для номинального курса; девальвационный байес консенсуса (факт, но не контрариан).

4. Как устроена зона справедливости

Панель считает не прогноз, а веер независимых якорей равновесия.

Якорей пять, независимых КОНЦЕПЦИЙ — три: реальный курс (три окна REER), бюджет (фискальный якорь) и собственная история цены (трендовый якорь, §9). Разница между «якорями» и «концепциями» не бухгалтерская: три окна REER — это одно понятие, посчитанное на трёх горизонтах, и считать их тремя голосами значило бы дать реальному курсу вес 3:1.

REER-якоря (три окна)

мост   = 0,4 · USD_месяц_публикации/USD_сегодня + 0,6 · CNY_месяц/CNY_сегодня
REER_сейчас = REER_опубликованный × мост
FV(окно) = спот × REER_сейчас / среднее(REER, окно),   окно ∈ {24, 60, 120} мес

Новкаст-мост обязателен. REER публикуется с лагом ~2 месяца. Без моста панель врёт: опубликованный июнь-2026 давал 85-й перцентиль («рубль экстремально дорог»), а мост через номинал — 47-й, потому что девальвация июня–августа разрыв уже закрыла.

Полоса якоря — межквартильный размах отклонения REER от собственной скользящей средней, центрированный на самом якоре (без центрирования полоса окна 120 мес уезжала целиком выше точки, и значение оказывалось вне своего же интервала) и калиброванный только на эпохе свободного плавания (с 2015: раньше курс был управляемым, и полоса, посчитанная с 1994, раздувалась до бессмысленных ±25%).

Фискальный якорь

базовая бочка = цена отсечения × курс бюджета          (2026: 59 $ × 92,2 = 5 440 ₽)
FV            = базовая бочка / min(цена Urals, цена отсечения)

Пока нефть дороже цены отсечения, FV равен курсу, на котором построен бюджет (92,2 ₽ в 2026 году), и от нефти не зависит. Дешевле отсечки — растёт, как и раньше: недостачу закрывает ФНБ, а его ликвидная часть невелика (меньше 4 трлн ₽ на 01.09.2026), поэтому бюджету нужен рубль слабее заложенного в закон.

Почему цена ограничена отсечкой (24.09.2026). До этого формула была бочка / Urals без ограничения: она считала, что бюджету достаётся вся цена нефти. При работающем бюджетном правиле это не так: базовые нефтегазовые доходы считаются по цене отсечения, а всё сверх них Минфин отправляет в ФНБ покупкой валюты. Как в базе учитывается курс, текст Минфина однозначно не говорит: в объём операций входит «отклонение оценки базового месячного объёма от базового месячного объёма» (релиз от 03.06.2026), и это читается двумя способами — база зафиксирована в рублях закона (тогда отклонения и цены, и курса уходят в ФНБ) либо пересчитывается по фактическому курсу (тогда в ФНБ уходит только отклонение цены). Вывод «выше отсечки якорь равен курсу бюджета» верен при обоих прочтениях. В первом бюджет получает базу закона при любом курсе, а курс бюджета остаётся точкой, на которой сходятся ненефтяные доходы и план; точка бочка / Urals — лишь курс, при котором операции Минфина равны нулю. Во втором бюджету достаётся отсечка × фактический курс, и нужный ему курс — ровно курс бюджета. Ниже отсечки прочтения расходятся: в первом якорь растёт как бочка / Urals (ФНБ докладывает недостачу и истощается), во втором бюджету по-прежнему нужен курс бюджета, а давит только тающий ФНБ. Панель оставляет прежнее, более осторожное поведение — рост якоря. В обоих случаях старая точка падала с ростом нефти ровно там, где правило разрывает связь нефти с бюджетом. Замер 24.09.2026: при Brent за 21 день около 108 $ якорь стоял на 64,9 ₽, одна эта концепция утаскивала центр зоны с ~88 до 79,7 ₽ и переворачивала знак заголовочного разрыва (+6,7% вместо −4,3%). С отсечкой 50 $, заложенной в проект бюджета на 2027–2029 годы, та же нефть дала бы ~52 ₽ — на пороге отбраковки концепций (40% от медианы), и центр прыгал бы между ~75 и ~87 ₽ от движения нефти на десятки центов.

Параметры бюджета — по годам, с датой и источником (pipeline/lib/policy.py). Их две: цена отсечения и курс бюджета. Именно отсечка, а не прогноз цены Urals: до 2027 года они совпадали (59 $), в проекте на 2027 год разошлись (прогноз 53 $, отсечка 50 $), и бюджет тратит базу по отсечке, а разницу копит в ФНБ. Статус («закон», «проект», «плановый период») печатается на карточке; проект вносится в правительство до конца сентября, закон подписывается в ноябре. С 1 октября панель сама пишет в ops-канал, если параметров следующего года ещё нет: 1 января якорь без них исчезает. Если Минфин приостановит операции по правилу (так было в начале 2026 года), весь нефтяной доход идёт в бюджет — флаг RULE_ACTIVE в том же файле возвращает якорь к полной цене Urals.

Полоса строится от той же цены через ту же отсечку. Если нефть дороже отсечки с запасом больше своей неопределённости, полоса нулевая: якорь равен курсу бюджета при любой правдоподобной цене. У самой отсечки полоса только вверх. У этого якоря нет полураспада и не считается реверсия — это точка политического давления, а не статистический магнит, и панель не имеет права обещать возврат к нему.

Смена методики и смена бюджетного года сдвигают зону без движения рынка. В такой прогон переход курса через границу зоны событием не считается: смена методики уходит в ops-канал, смена параметров бюджета — в ленту отдельным событием «зона пересчитана по бюджету», с тем, на сколько сдвинулись якорь и центр.

Цена Urals идёт по мосту, а не месячным шагом — тот же принцип, что новкаст-мост REER: у официальной цены месячная конвенция публикации, а механизм (доходной бочке бюджета нужен курс) живёт непрерывно. Пока нефть заметно дороже отсечки, мост на якорь не влияет, но он решает, когда цена подходит к отсечке.

Urals_сейчас = среднее(Brent, последний 21 торговый день) − скидка_последнего_официального_месяца

Цену шага измерил август 2026. Нефть ралли (Brent июль 83,76 → август 91,40), а якорь весь месяц стоял на июльских 92,17 при мостовых 80–85: средняя ошибка +9,1 ₽, пик +11,8 ₽ — до +3,9 ₽ завышения центра зоны, — и 1 сентября он переставился скачком в 10,6 ₽, когда рынок движение давно отыграл. Мост увёл бы якорь ниже 85 ₽ уже 3 августа. Информация всё это время лежала в собственном входе панели (живая котировка Brent).

Официальную цену добывают ДВА канала. Сайт Минэка недоступен ни с рабочей машины, ни с сервера, и цитату его сообщения приходится брать у прессы. До сентября 2026 канал был один — агентство ПРАЙМ; в сентябре оно про августовскую цену (67,11 $, опубликована 04.09) просто не написало, и панель неделю жила на оценке: якорь 66,34 вместо 67,11, а мост держал июльскую скидку с лагом в два месяца и полосой ±7,9 $ вместо ±6,3. Второй канал — лента тега «Минэкономразвития» на Lenta.ru. Отбор там идёт строго по обороту «рассчитываемая в целях налогообложения»: под тем же адресом и почти тем же заголовком Лента печатает РЫНОЧНУЮ цену Urals в портах (10.09.2026 — больше 80 $ против налоговых 67,11), и подмена сдвинула бы якорь на шестнадцать рублей, выглядя при этом правдоподобно. Молчание одного канала теперь строчка в диагностике, а не потерянный вход.

Скользящее окно при этом честно воспроизводит будущую календарную цену:

среднее 21 дня на конец месяца − календарное среднееза 7 месяцев 2026 —

медиана 0,61 $, максимум 1,62 $. Скидка калибруется ТОЛЬКО официальными публикациями (месяц с неправдоподобной скидкой пропускается), её старение несёт та же таблица ошибок, что у оценки; месячная налоговая цена остаётся на карточке справкой и сверкой. При недоступном мосте (нет Brent) якорь честно падает на месячную цену и говорит об этом.

Агрегат

Зона = веер якорей (min…max). Веса руками не назначаются; ширина веера — самостоятельный индикатор: узкий = якоря согласны, широкий = режимная неопределённость.

Центр = среднее концепций. Окна REER сворачиваются в одно значение медианой, и уже три концепции усредняются. Почему среднее, а не медиана, и как устроена ЯВНАЯ отбраковка сломанной концепции — §9.

Полоса неопределённости показывается у каждого якоря отдельно. Раньше их объединяла одна бледная заливка на весь график: она была шире зоны, ничем не подписана и читалась как вторая, более широкая зона. Объединение к тому же теряло сведения — у окна 24 месяца полоса 78–92 ₽, у окна 120 месяцев 85–96 ₽, и это разные утверждения о разной неопределённости.

От какого курса считается зона

Курс в формулах якорей — рыночный, а не официальный. Официальный курс ЦБ административен и зафиксирован вчера в 15:30; зона от него отвечала на вопрос «где курс был вчера». Замер 13.08.2026: 82,9977 против рыночных 84,0304 — отставание 1,24%, разрыв −7,83% вместо −6,62%.

Рыночный курс берётся ярусами:

ярусисточниккогда
1FX_IDC:USDRUB через сканер TradingView — та же котировка, что показывает Finamвсегда, когда доступен
2кросс CNYRUB_TOM × USDCNYесли эталон молчит
3Yahoo RUB=Xесли молчит и биржевая нога

Ярусы 2 и 3 подписываются на панели словом «резерв».

Почему эталон, а не кросс, у которого тиков больше. Прямых торгов долларом на Мосбирже нет с 2024 года: доллар/рубль торгуется внебиржевым рынком, и пауза между тиками FX_IDC означает отсутствие СДЕЛОК, а не отсутствие наблюдения. Это принципиально не то же, что отставание официального курса: там задержка систематическая и направленная. Кросс через юань тикает чаще просто потому, что чаще торгуется юань, — но он прокси, а FX_IDC принят ориентиром.

Что остаётся на ОФИЦИАЛЬНОМ базисе, и это не недосмотр:

Когда живой котировки нет вовсе, зона считается от официального курса, и заголовок панели говорит об этом словами.

Диагностика сходимости (обязательна к показу)

Каждый якорь выводится только вместе с: перцентилем текущего разрыва в его собственной истории, полураспадом (AR(1) на месячном ряду отклонения; для REER ≈ 15 мес) и каналом закрытия. Канал для REER помечен как смешанный: валидация показала, что отклонение предсказывает будущий сам REER (IC −0,22…−0,36), но не номинальный курс — значит разрыв закрывается движением курса, движением якоря через инфляцию, или не закрывается годами.

5. Что панель сознательно не делает

6. Ловушки данных, оплаченные ошибками

  1. Официальный курс с датой действия D зафиксирован в 15:30 предыдущего рабочего дня. Смешение баз втрое исказило главный эффект в исследовании. Панель работает только на базисе даты фиксации; последний день календаря остаётся пустым, а не заполняется вчерашним значением.
  2. Фактические нефтегазовые доходы месяца M публикуются в начале M+1. Привязка к анонсу самого месяца создавала «находку» IC = −0,395, которая после исправления выравнивания превратилась в −0,106, то есть в шум.
  3. Экспирация фьючерсов Si — третий четверг месяца, а не конец месяца. Ошибка завышала срок до погашения на ~13 дней и ломала аннуализацию базиса.
  4. Браузерный User-Agent обязателен для minfin.gov.ru и ЯДОВИТ для FRED: с ним FRED уходит в бот-проверку и висит до таймаута, без него отвечает за 0,8 с.
  5. ISS отдаёт историю страницами по 100 строк. Без пагинации ряд молча обрезается и выглядит целым.
  6. Бесплатный ISS отдаёт срочный рынок с задержкой в 15 минут. Замер 14.08.2026 в 09:51 МСК: у ВСЕХ контрактов Si UPDATETIME=09:36:11 при SYSTIME=09:51:11. Поле SYSTIME — часы сервера, а не время котировки, и принять одно за другое легко. На цене это 0,19%, на вменённой девальвации — до 2 п.п. годовых (см. §11).
  7. У шлюза T-Invest один базовый актив USD/RUB носят контракты РАЗНОГО масштаба. Квартальный Si котируется пунктами (84803 = 84,803 ₽/$), а мини-контракты UM\* и вечный USDRUBF — рублями за доллар (84,3). Поле basicAssetSize не различает их: у Si и у USDRUBF оно одинаковое (1000). Ошибка множителя дала бы 0,0848 вместо 84,8 и прошла бы молча везде, кроме вменённой девальвации, поэтому отбор идёт по двум признакам сразу, а живая цена дополнительно сверяется с ценой ISS в пределах 5%.
  8. P2P-объявления — не курс, и на панели их НЕТ. Покупка и продажа расходятся на 20%+ (95,2 против 77,4 в замере 12.08.2026): это разные лимиты, способы оплаты и наценки мейкеров, а не два конца стакана. Середина между ними не значит ничего, ширина — тоже (она меряет разнородность объявлений). Показатель, который нельзя истолковать, хуже отсутствующего, поэтому блок удалён целиком; из крипто-сегмента осталась Rapira, у которой есть настоящие bid/ask.

Полные результаты проверки — ruble-drivers/validation/VALIDATION.md; проект движка и формулы — ruble-drivers/ENGINE.md.


7. Что изменил адверсариальный аудит 13.08.2026

Тринадцать агентов атаковали панель собственным кодом; скептики опровергали находки, судья разрешал споры своим прогоном. Подтверждённое и исправленное:

Что былоЧем оказалосьКак сейчас
«Полураспад 11/16/27 мес» как измеренная скорость возвратаАртефакт конструкции: dev строится на перекрывающихся окнах, и AR(1) меряет перекрытие. У случайного блуждания та же процедура даёт 9,5/19,2/24,7 мес — наблюдаемые значения лежат ВНУТРИ коридора шумаПечатается вместе с коридором нуля и подписью «НЕ отличим от шума»; при отсутствии реверсии — прочерк, а не приор 15
Полоса «межквартильный размах»Накрывает 46/33/15% истории вместо подразумеваемых 50%: медиана отклонения у структурного окна −9,2%, и уровень «REER равен своей средней» в эпоху плавания почти не посещалсяРядом с полосой печатается измеренное покрытие и типичное отклонение
Отказ ряда юаня ЦБМолча выключал новкаст-мост: заголовочный разрыв уезжал с −6,4% на −14,9% при «здоровой» панелиЯкорь без моста получает статус degraded и в зону не входит
«Оценка следующего фиксинга»Целилась в курс, который ЦБ уже опубликовал: история биржи отстаёт на суткиНазывается сверкой, печатает дату цели и расхождение с фактом
Кросс-юаневый разрывСчитался на трёх датах сразу; чистый рассинхрон давал 0,75 п.п. при пороге 2 п.п., а суточный ход курса превышает 2% в 5% дней текущего режимаВсе три ноги берутся на одну дату закрытия биржи
Флаг правдоподобия цены UralsВычислялся и игнорировался: цена 20 $ давала якорь 272 ₽ и зону [85; 272]Не прошедшая проверку цена = отсутствие цены; в кэш не пишется
«Медиана четырёх независимых якорей»Медиана трёх окон одного ряда: REER имел вес 3:1, и пока нефть дороже 60,43 $, фискальная концепция на центр не влияла вовсеЦентр = медиана КОНЦЕПЦИЙ (окна REER свёрнуты в одно значение)
Протухшая цена UralsСчиталась такой же точной, как свежая публикацияОшибка растёт с лагом: 1,8 / 3,4 / 3,3 $ на лагах 1/2/3 месяца
series/anchors.jsonОбнулялся одной неудачей чтения: 300 точек превращались в одну без предупрежденияПри неудаче чтения ряд не трогается вовсе
Прямой запуск тестовСобирал 25 инвариантов из 34: точка входа стояла в середине файлаТочка входа в конце; оба способа запуска дают 42

Что проверено и НЕ сломано: арифметика всех якорей воспроизведена независимым кодом до 10-го знака; ярусы источников REER (BIS и FRED) совпадают до 0,000000%; утечек будущего в деэтрендировании и лампе риска нет; краткосрочная регрессия жива вне выборки (walk-forward R² 0,387 против 0,468 внутри); медиана защищает центр от съехавшего якоря; периметр /data/ не отдал ни одного 200 с вёрсткой и ни одной утечки; CSP реальна.

Вторая волна правок того же аудита

Что былоЧем оказалосьКак сейчас
Паспорт свежестиПустой ответ источника (None/{}/[]) давал «возраст 0, свежий»: молча замолчавший источник зеленел ярче работающегоПустой ответ = unavailable; недоступный Algopack отвечает названной причиной, а не пустотой
«Протухший вход выпадает из агрегата» (METHOD §5)Обещание исполнялось только на бумаге: слова stale в compute/ не было вовсе, фильтр существовал, статус ему никто не ставилПаспорт прокинут в якорь; протухший вход даёт status=stale и выпадает из зоны
Возрасты на страницеВсе до одного приходили из файла — снимок вчерашнего дня показывал «возраст 0» и выглядел свежим. Мёртвый конвейер не отличался от живогоВозраст снимка считается в браузере от as_of; старше 30 ч — красный баннер поверх заголовка
Поле events контрактаСчиталось ПОСЛЕ r2.put — в проде поля не было ни разу, а падение событийного слоя оставляло свежие данные и прогон с кодом 2Считается до сериализации, обёрнуто в try; худший исход — молчание в журнале
Дата фиксацииОтсчитывалась рабочими днями назад и на праздниках промахивалась: 9 дат за 10 лет давали коллизию history/{дата}.json с разными курсамиБерётся из самого ряда: ЦБ ставит один курс на весь нерабочий отрезок, и календарь праздников уже закодирован в данных
Новкаст-мостДвигает только номинал и теряет ногу разницы инфляций: занижение 0,62% (t = −3,75 на 128 парах)Поправка применена и опубликована полем bias_pct — её видно и можно вычесть обратно
n_hist 366/330/270Указывало не на ту выборку, а независимых наблюдений 6–16: соседние точки строятся на окнах, перекрытых на window−1 месяцевРядом с перцентилем печатается n_eff — сколько наблюдений независимы
gap_percentileСчитался перцентиль ОТКЛОНЕНИЯ REER, а разрыва — зеркальный (сумма ровно 100): 83 означало «рубль дорог», а не «разрыв велик»Переименован в dev_percentile
Покрытый паритетПростая разность ставок против геометрической аннуализации рядом: завышение \CIP\на 0,35 п.п. = 11,6% порога слома. Плюс п.п. печатались со знаком «%»Обе ноги геометрические, единицы подписаны п.п.
Карточка фьючерсовПечатала последний контракт кривой: открытый интерес 768 против 9,7 млн у ближнего, разница вменённой ставки 2,31 п.п.Конвейер помечает ликвидный контракт, витрина берёт его
Полоса краткосрочного слояСтояла на остатке своей же регрессии — на 14% уже правдыСтроится на ошибке вне выборки; r2 подписан in_sample
fix_gap_pctДетрендированный остаток под именем сырого разрыва: 0,414% против 0,509%fix_gap_detrended_pct рядом с fix_gap_raw_pct — читатель воспроизведёт сам
01.01.2027Фискальный якорь исчез бы молча (в таблице бюджетных цен нет 2027 года), веер сузился бы с 7,9% до 5,5% — и сузился бы под подписью «якоря согласны»Отказ называет причину; смена состава якорей даёт событие
VWAP Algopack22.06.2026 все 108 баров пришли со сдвигом масштаба в 1000 раз; реконструкция опубликовала бы доллар 0,073 ₽ с подписью «типичная ошибка 0,096%»Сверка с медианой цен закрытия того же среза, допуск 5%
/DATA//data.jsonУходил к статике за HTML-404: статус верный, тело — вёрстка там, где просили данныеРазбор пути под /data/ не зависит от регистра
Журнал спредов400 строк при такте в 2 часа = 33 суток памяти: скачок премии на 8 п.п. держал режим «разорван» 16 суток, на 17-е база догоняла90 суток
brent_liveСобирался и не потреблялся нигде, а оценка цены Urals считалась по ряду FRED с лагом 1–2 дняДомешивается в ряд на своей дате

Инвариантов после обеих волн: 58, оба способа запуска дают одно число.


8. Финальный аудит 13.08.2026 и что он изменил

Тридцать один агент по пятнадцати направлениям: независимый пересчёт всего, что панель печатает; инъекция отказов в каждый из девятнадцати входов; мутационная проба тестового сьюта; живые пробы периметра; проверка VPS. Скептик на каждый пакет находок, судья со своим прогоном поверх.

Ядро счёта устояло. Все три REER-якоря, фискальный якорь, агрегат, оценка фиксинга, геометрия CIP и периметр /data/ воспроизведены независимым кодом побитово; прод сверен с ЦБ, Мосбиржей, FRED и BIS напрямую.

Числа, которые панель искажала

ЧтоЧем оказалосьКак сейчас
«Спред стакана 0,50 коп»Поле spread_l1 Algopack — БАЗИСНЫЕ ПУНКТЫ, и они печатались как копейки без конверсии: 0,5 б.п. при цене юаня 12,28 ₽ это 0,061 копейки. Завышение в восемь раз каждый деньКонвейер переводит б.п. в копейки по цене того же дня; базисные пункты показаны рядом для сверки с источником
Премия USDTДелилась на ВЧЕРАШНИЙ фиксинг (лишние 0,78 п.п.), тогда как журнал замеров копил базу на действующем курсе. С накоплением 60 наблюдений разъехавшиеся базисы начали бы двигать классификацию режимаДва знаменателя вместо одного: кросс-разрыв на фиксинге своей даты, премия канала — на действующем курсе
«Все ноги разрыва на одной дате»Мировой курс брался из FRED DEXCHUS — недельного релиза H.10, и фолбэк «последняя дата не позже нужной» срабатывал КАЖДЫЙ прогон, подставляя ногу четырёхдневной давностиДневная история (Yahoo CNY=X, 11 баров) с попаданием в свою дату; остаточный рассинхрон публикуется числом и печатается на витрине
Обучающая выборка краткосрочного слояСкан «до пяти дней вперёд» приписывал торговому дню 29.04.2024 курс, зафиксированный 02.05 — четверо суток ЗАГЛЯДЫВАНИЯ ВПЕРЁД, тринадцать таких дней; плюс тринадцать вырожденных пар с нулевым изменениемТочное правило: курс дня T действует с T+1. Совпало со старым на всех общих датах, отбросило ровно те дни, у которых фиксинга не было. Бета выросла 0,93 → 0,97, R² 0,47 → 0,50

Что сломалось бы предсказуемо

«Слом арбитража» каждый квартал. CIP считался по ближнему контракту Si, а срок ближнего доходит до 5 дней: аннуализация 365/dte превращает вечерний рассинхрон «фьючерс 23:50 против фиксинга 15:30» в десятки пунктов. Сдвиг цены 0,3% даёт +3,3 п.п. при сроке 36 дней и +43 п.п. при сроке 5. Ретро-прогон предэкспирационного SiM6 пробил порог во всех восьми сессиях с разбросом −24…+48 п.п. Теперь база — самый ликвидный контракт со сроком не меньше 60 дней, а рядом с числом печатается разрешение измерения (во что превращается типичный рассинхрон на этом сроке).

Фискальный якорь в первые дни месяца. Ряд Brent в FRED отстаёт от 2 до 9 дней, и среднее целевого месяца считалось по обрезанному хвосту: июль по 18 дням из 23 дал 59,69 $ против 61,88 $ — ошибка 2,19 $ при печатаемой 1,8 $, то есть +3,2 ₽ на якоре. Живая котировка дыру не закрывает по построению: она датирована следующим месяцем и в среднее целевого не попадает вовсе. Теперь неполнота месяца измеряется и честно расширяет заявленную ошибку.

Дата фиксации. Правка предыдущего круга отматывала серию одинаковых значений, полагая, что ЦБ ставит курс на каждый день нерабочего отрезка. Замер на 2840 записях за 11,5 лет: записей на нерабочие дни нет вообще, понедельников среди дат действия ноль, суббот 562. Зато курс двух соседних рабочих дней иногда совпадает — и отмотка датировала фиксацию сутками раньше, затирая чужой снимок дня. Правильное правило элементарно: дата фиксации = дата действия минус день.

Надёжность

Тревожная цепь была мертва трижды: OnFailure стоял в секции [Service], где systemd его не читает (журнал VPS нёс предупреждение на каждом запуске), юнита dash-alert@ на машине не существует, а notify.report_failure был написан и не вызывался ниоткуда. Теперь мостик подключён обоими юнитами через ExecStopPost (он срабатывает и на успехе, поэтому «прогон снова проходит» тоже доезжает), а падение прогона дополнительно зовёт report_failure — два независимых пути.

Прочее закрытое: база сравнения событий продвигалась ДО публикации, и переход зоны, случившийся в такт с отказом R2, терялся навсегда; один NaN от Yahoo ронял всю публикацию (bool(nan) истинно, и truthiness-гварды его пропускали); отрицательная цена фьючерса давала комплексные числа и роняла сериализацию; фильтры правдоподобия Algopack отключались при пустых полях; кэш цены Urals отравлялся при недоступном Brent (пропущенная проверка считалась пройденной); пустое тело ответа R2 стирало накопленный ряд зоны.

Тесты

Мутационная проба судьи: пять нарочных багов проходили сьют зелёными, включая флип знака поправки моста и снос центрирования полосы. Причина одна — тесты сверяли исходник с самим собой (подстрока, константа) вместо проверки поведения. Заменено поведенческими: знак поправки задан физикой, а не значением константы; «якорь лежит внутри своей полосы» проверяется на трендовом ряду, где мутация видна; build_snapshot впервые вызывается тестом целиком на фикстурах. Инвариантов 74; повторная мутационная проба ловит 10 из 10.


9. Третья концепция: тренд по собственной истории курса

Добавлена 14.08.2026. REER смотрит на реальный курс, фискальный якорь — на бюджет, третья концепция — только на цену: где проходит линия, описывающая последние 60 месяцев в логарифмах.

Почему скользящее окно, а не то, что напрашивается

Сравнивались пять оценок на 225 месячных наблюдениях с декабря 2007.

оценкауровеньпочему не она
тренд с изломом89,7 ₽ищет излом по ВСЕЙ выборке, то есть глядя в будущее; с 2017 по 2021 уверенно называл изломом 2011–2013 годы с наклоном, зеркальным правде, и перевернулся только в январе 2022. При двух разрешённых изломах BIC предпочитает другую структуру и другой уровень (86,4)
окно 60 мес, Хьюбер87,2 ₽глушит выбросы, но на валютном рынке крупное движение — не помеха измерению, а сам рынок: в феврале–июне 2015 хьюберовская линия шла на 9–13% ниже, потому что приглушила девальвацию 2014 года
экспоненциальные веса88,8 ₽никогда не забывает полностью: через 60 месяцев после смены режима разрыв застревал на −25,7%
Калман (локальный линейный тренд)81,7 ₽при подборе по максимуму правдоподобия уровень схлопывается РОВНО в цену: у курса нет шума наблюдения, поэтому разрыв тождественно нулевой. Любой другой ответ навязывается руками и им же определяется — от 79,9 до 102,4 ₽ на одних данных. Плюс наклон состояния инерционен: через 60 месяцев после смены режима разрыв доходил до −72% и продолжал расти
окно 60 мес, МНК87,6 ₽выбрано

Скользящее окно забывает полностью и точно за окно, прошлое не переписывает по построению, а длина 60 лежит на плато устойчивости: окна 48–84 дают 85–88 ₽ и только 36 выпадает (76 ₽, знак разрыва переворачивается).

Чего эта концепция НЕ делает

Не предсказывает. Плацебо на 2000 случайных блужданиях той же длины, дрейфа и волатильности: отклонение от линии не несёт информации о будущем ни на одном горизонте от 3 до 36 месяцев — факт внутри полосы шума везде, включая IC −0,31 на двух годах, который обычная формула оценивает как «p = 0,000». Полураспад отклонения (11 мес) тоже внутри коридора шума [5; 17] и печатается вместе с ним.

Центр зоны — среднее концепций, а не медиана

При трёх концепциях медиана есть ОДНО из трёх значений, два других отбрасываются. Замеры: в спокойном режиме медиана шумнее среднего в 1,16 раза (СКО ошибки 3,02% против 2,60%), а «кто в середине» менялся семь раз за 104 месяца, и в момент смены центр прыгает скачком.

Робастность медианы при этом нужна — но получать её МОЛЧАНИЕМ нельзя. Медиана скрывает сломанный якорь: при отравленном фискальном якоре 272 ₽ она показала бы нормальный центр и не сказала бы ни слова. Поэтому отбраковка сделана явной: концепция дальше 40% от медианы концепций исключается и называется в center_rule. Порог откалиброван по истории — 99-й перцентиль отклонения концепции от медианы 27,5%, максимум 33,3%, а задокументированные аварии панели давали 200% и больше.


10. Долгосрочная линия с 2008 года: почему ориентир, а не якорь

Наблюдение верное и заслуживает проверки: на логарифмическом графике нижняя граница тянется с 2008 года, держалась до 2014-го, а сейчас курс подошёл к ней вплотную. Если у государства есть воля и средства не давать рублю укрепляться, такая граница обязана существовать.

Проверено тремя способами, и все три говорят одно.

Опорное свойство держалось валютным КОРИДОРОМ, а не рынком. Курс проводил у нижней границы (в пределах 5% над ней):

режимдоля времениполоса шумавердикт
до ноября 2014 (управляемый)35 %8 … 33 %вне полосы — эффект настоящий
после ноября 2014 (плавающий)5 %4 … 13 %внутри полосы — эффекта нет

Граница была свойством политики, которую отменили в ноябре 2014 года. Ровно то событие, которое отмечено на графике как смена режима, эту границу и убрало.

Отскок от границы не подтверждается. Средний ход после подхода к границе против хода из середины канала: +10,4 % на полугоде, +19,4 % на годе, +39,0 % на двух. Плацебо на 1500 случайных блужданиях той же длины и волатильности даёт [+5,9; +19,7], [+8,7; +30,5] и [+8,9; +43,9] — факт внутри полосы везде. Причина механическая: граница подогнана по всей выборке, и «подошёл снизу, потом вырос» получается у любого дрейфующего ряда.

Это та же величина, что реальный курс. Корреляция «запаса над нижней границей» с логарифмом REER — −0,913 (ранговая −0,907). Линия на номинальном графике и реальный эффективный курс измеряют одно и то же на 91 %, но REER строится из отношения цен, а линия подгоняется. Добавить её концепцией значило бы дать реальному курсу двойной вес под видом независимого измерения.

Что при этом ПРАВДА. Механизм, который стоит за наблюдением, реален, и панель его уже показывает: REER сейчас на 82-м перцентиле собственной истории — рубль у сильного края своего реального диапазона. Фискальный якорь (92,17 ₽) — самый высокий из пяти, то есть бюджету нужен рубль слабее рынка. Оба числа говорят ровно то, что читается с графика, но говорят измеримо.

Решение. Линия дрейфа с 2008 года публикуется как точка-ориентир вида scenario — рядом с бюджетным курсом, прогнозом Минэка и консенсусом ЦБ. В расчёт центра ориентиры не входят никогда: это позиции и сценарии, а не концепции равновесия.

10.1. Чем проводится сама линия

Сравнивались четыре выражения на одном ряде (225 месяцев, логарифм курса):

выражениенаклон, %/годлиния сегодняустойчивость к концу выборки
МНК+7,69103,5 ₽20,9 %
Тейл-Сен+7,42102,9 ₽15,6 %
Хьюбер (RLM)+7,82103,7 ₽18,3 %
медианная (L1)+8,38110,8 ₽9,3 %

Устойчивость к выбросам ничего не решает: выброс ноября 2014 — июня 2015 и марта — августа 2022 меняет уровень на 1,0–1,5 % у любого из четырёх. Решает устойчивость к концу выборки — последний столбец: если считать сегодняшний уровень по данным, обрывающимся в 2022 / 2023 / 2024 / 2025 годах, МНК гуляет на 20,9 %, а медианная линия — на 9,3 %. Ориентир, который переезжает с каждым новым месяцем, ориентиром не является.

Вторая причина смысловая: остаток вокруг линии несимметричен (асимметрия +0,40, Шапиро-Уилк W = 0,973, p = 0,0003 — нормальность отвергается). При несимметричном остатке МНК описывает *среднее логарифма*, тогда как «где курс обычно был» — это *медиана*. Расхождение между ними и есть цена выбора: 103,5 против 110,8 ₽.

Реализация — итеративное перевзвешивание (веса 1/|остаток| превращают взвешенный МНК в минимизацию суммы модулей), стандартная библиотека, без зависимостей. Сверено с эталонной реализацией statsmodels.QuantReg(q=0.5): коэффициенты совпадают до седьмого знака, сумма модулей остатков не хуже эталонной.

На замере 14.08.2026 линия даёт 110,8 ₽ при наклоне +8,4 % в год на 224 месяцах. Уровень по-прежнему зависит от выбора начала выборки — 87 ₽ при старте с 2020 года против 111 ₽ с 2008-го, — и это ещё одна причина держать её ориентиром, а не якорем.


11. Что на панели живое, а что из снимка

Конвейер собирает снимок дважды в рабочий день (13:15 и 16:10 UTC). Якорям равновесия этого с запасом: REER выходит раз в месяц, бюджетное правило — раз в год. Но две величины двигаются внутри дня, и обе выведены из суточного такта отдельными каналами.

Рыночный курс — раз в 15 секунд

Браузер опрашивает функцию-посредник /quote (напрямую нельзя: политика CSP connect-src 'self' и отсутствие CORS у сканера) и пересчитывает на каждый тик разрыв, границы зоны, центр, значения и полосы всех якорей.

Пересчёт возможен потому, что значение якоря аффинно по курсу: значение = a + b · курс, причём b ≠ 1 — новкаст-мост частично гасит движение спота. Коэффициенты считает конвейер ЧИСЛЕННО: весь набор якорей считается второй раз на курсе +1%. Способ вызывает ровно ту реализацию, которую описывает, и разъехаться с ней не может.

Витрина проверяет коэффициенты ДО первого тика: подставляет опорный курс и сверяет с опубликованными центром и разрывом. Не сошлось — живого слоя нет вовсе, на экране остаётся снимок и надпись «живой канал молчит». Три неудачных опроса подряд дают ту же надпись.

Две оценки одного и того же курса

Плиток про завтрашний официальный курс на панели ДВЕ, и это не дублирование:

плиткачто делаеткогда работает
«Оценка следующего фиксинга»регрессия: вечерний разрыв «биржевой юань против фиксинга» переносится в завтрашний курсв любой момент; это единственный эффект уровня A из §3
«Фиксинг определён»реконструкция: курс УЖЕ определён сделками до 15:30 МСК, и панель считает его по тому же срезупосле 15:30 МСК, пока ЦБ не опубликовал

Первая — прогноз, вторая — не прогноз вовсе: она восстанавливает уже случившееся. Обе печатаются с полосами, и полосы пересекаются; расхождение точечных значений внутри полос — норма, а не признак поломки.

Маршрут сменился: считаем по самому внебиржевому курсу (12.09.2026)

Решение от 01.09 отменено замером. До 12.09.2026 панель восстанавливала курс через биржевой юань, и на то была причина: у внебиржевого доллара нет ИСТОРИИ. Сканер TradingView отдаёт только «сейчас», сайт Finam закрыт JS-челленджем, у Мосбиржи прямых торгов долларом нет с 2024 года. Поэтому панель начала копить собственный ряд — замер раз в три минуты до среза, — и сравнение отложили до того, как ряда хватит.

Ряд накопился (20 торговых дней), и сравнение перевернуло вывод:

маршрутмедиана \ошибки\среднее95-й перцентильдоступность
внебиржевой: среднее FX_IDC в окне ЦБ0,040 %0,093 %0,296 %20 из 20 дней
юаневый: биржевой юань × мировой кросс0,088 %0,110 %0,469 %15 из 20 дней

Промежуточный вывод 01.09 («юань точнее: 0,096% против 0,129%») был артефактом окна усреднения: считалось по всем накопленным замерам, то есть с 07:00 МСК, а ЦБ берёт срез с 10:00. Окно не подобрано задним числом, а измерено — сетка начал даёт гладкий минимум ровно на 10:00:

начало окна, МСК07:0009:0010:0011:0013:00
среднее \ошибки\0,188 %0,128 %0,093 %0,099 %0,141 %

Публичное сообщение ЦБ называет только конец окна («по состоянию на 15:30»), поэтому начало — эмпирическое: так ведут себя данные. Усреднение обязательно: последний замер перед срезом вместо среднего даёт 0,215 %.

Второй довод сильнее первого: внебиржевой маршрут не зависит от платной подписки. 11.09.2026 Algopack отдал 401 — месячная подписка кончилась ровно через месяц после покупки, — и юаневый маршрут отвалился вместе с ним. Плитка в этот день исчезла бы; с внебиржевым маршрутом она остаётся.

Внебиржевые котировки идут и в праздник, поэтому маршрут сверяется с календарём дней фиксинга: ЦБ ставит курс в те же дни, когда торгует биржа. Без этого 4 ноября окно набралось бы, панель объявила бы «курс на 5 ноября», которого ЦБ не установит вовсе, и записала бы в журнал точности ошибку против курса соседнего дня. Сегодняшний день подтверждается датой торгов кривой Si: дневной ряд юаня доезжает только к вечеру, и требуй панель его — плитка каждый день теряла бы главное своё свойство, показывать курс раньше ЦБ.

Сверка с фактом идёт по ТОЧНОМУ правилу: курс, установленный в день T, действует с T+1, и запись на T+1 в ряду ЦБ существует тогда и только тогда, когда T был днём фиксации. Прежний скан «до четырёх дней вперёд» в праздники подставлял курс соседнего дня — то же заглядывание вперёд, от которого избавились в базисе фиксации (§6.2).

Юаневый маршрут никуда не делся: он стал сверкой. Два независимых пути к одному числу расходятся ровно тогда, когда сломан один из них; молчащая сверка означала бы, что поломку заметят по факту, а не по расхождению. Точность каждого маршрута копится в СВОЁМ журнале — смешать их значило бы усреднить два разных метода.

Почему юаневый маршрут вообще появился

У юаня же всё наоборот: биржевой VWAP до 15:30 — это в точности тот срез, по которому ЦБ считает официальный курс юаня, и он воспроизводится с ошибкой 0,010%. Цена этого пути — мостик от юаня к доллару, в котором сидит вся неточность.

Измеренные альтернативы (одни и те же 40 дней, замер августа 2026):

путьмедиана модуля ошибкиСКО
юань × мировой курс юаня (сейчас на панели)0,220 %0,322 %
вечный фьючерс USDRUBF минус его медианный базис0,162 %0,206 %
внебиржевой доллар до 15:30не проверено — нет ряда—

Вечный фьючерс — единственный биржевой инструмент на пару USD/RUB, и он немного точнее, но требует поправки на базис, который сам гуляет от −0,45 % до +0,64 %. Разница слишком мала, чтобы менять метод ради неё.

Так и вышло: панель копила собственный ряд внебиржевого курса — замер раз в три минуты до среза, тем же таймером, что обновляет цену фьючерса, — и метод выбран по замеру, а не по соображениям (см. выше).

Точность реконструкции курса ЦБ

Плитка «Фиксинг определён» показывает курс, который ЦБ опубликует через два часа: сделки до 15:30 его уже определили. Считается он в два шага, и точность у шагов разная.

Юаневая нога честна. Средневзвешенная цена биржевого юаня по сделкам до 15:30 воспроизводит завтрашний официальный курс юаня с медианной ошибкой 0,010%.

Долларовая нога — слабое место, и подпись о ней была занижена вдвое. Доллар получается из юаня умножением на мировой курс USD/CNY. Но ЦБ считает курс доллара по ВНЕБИРЖЕВЫМ сделкам, а курс юаня — по биржевым, и отношение двух его собственных курсов — как раз та величина, которую реконструкция вынуждена угадывать. Отношение гуляет: за 148 дней 2026 года медиана суточного дрейфа 0,174%, СКО 0,255%, 95-й перцентиль 0,485%. Быть точнее того, что угадываешь, нельзя.

Прямой замер кроссовой ноги — мировой курс дня торгов против вменённого курса ЦБ следующего дня, 115 дней:

меразначение
медиана−0,099 % (систематический сдвиг вниз)
медиана модуля0,134 %
СКО0,182 %
95-й перцентиль модуля0,433 %

Раньше на плитке стояло «калибровочная ошибка 0,096% по доллару» и одно число без интервала. При 84 ₽ настоящая типичная ошибка — около 11 копеек, а хвост доходит до 36. Теперь печатается полоса, накрывающая 95% дней замера, а рядом названа настоящая типичная ошибка. Собственные сверки панель копит и, когда их станет двадцать, начнёт печатать измеренную по ним точность вместо этого приора.

Всё сказанное здесь — про ЮАНЕВЫЙ маршрут, который с 12.09.2026 работает сверкой. У основного, внебиржевого, неточность другой природы: он меряет ровно ту величину, которую считает ЦБ, и вся его ошибка — это разница между составом сделок в отчётности банков и индикативной котировкой FX_IDC. Замер: медиана 0,040 %, среднее 0,093 %, 95-й перцентиль 0,296 %, смещение +0,028 % — при 84 ₽ это около 3 копеек типично и 25 копеек в хвосте.

Цена фьючерса — раз в три минуты

Плитка «что в цене фьючерсов» печатает не цену, а вменённую девальвацию, и аннуализация 365/dte умножает любую ошибку цены. Пятнадцать минут задержки ISS (§6.6) дают на ближнем контракте (34 дня) 2 п.п. годовых, а на базе паритета (125 дней) — 0,5 п.п., то есть 58% от разрешения измерения ±0,88 п.п., которое панель печатает рядом с числом. Вторая задержка была больше первой: к утру пятницы на панели стояла цена вечера четверга, а после выходных — до 66 часов давности.

Поэтому цена берётся из T-Invest (котировка отмечена текущей секундой), а состав кривой, срок и открытый интерес — по-прежнему из ISS: у шлюза их нет, а за пятнадцать минут они не меняются. Отказ любого из двух деградирует честно: без T-Invest остаётся ISS со своей задержкой; без ISS кривая собирается целиком из T-Invest, но без открытого интереса, и выбор ликвидного контракта вырождается в первый по сроку.

Этот канал идёт НЕ через Cloudflare, и это вынужденно. Цепочка сертификатов T-Invest упирается в Russian Trusted Root CA Минцифры, которого нет ни в одном публичном хранилище, а в TLS-хранилище Workers свой корень добавить нельзя. Проверено с прода: curl отдаёт код 000 и ssl_verify_result=19 — это не блокировка по IP, а непройденная проверка цепочки. За фьючерсом ходит VPS и кладёт котировку отдельным маленьким объектом; браузер читает его раз в минуту и пересчитывает вменённую девальвацию той же формулой и от того же официального курса, что и конвейер, — чтобы одна арифметика не жила в двух местах.

Живая цена принимается, только если она СВЕЖЕЕ уже нарисованной, а время котировки печатается рядом. В выходные и до открытия торгов на плитке честно стоит «цена на 18:45» с датой.


12. Как читать веер

График — строка на величину, а не двенадцать марок на одной оси. Так сделано не для красоты: подписи на общей оси не помещались и уезжали ступеньками в три ряда, REER 60 мес и трендовый якорь расходятся на 0,2 ₽ (два пикселя), а один далёкий ориентир растягивал ось так, что зона и курс занимали четверть холста.

Что кодируют марки:

Шкала строится по ядру — якоря со своими полосами, зона, центр и курс. Ориентир попадает в окно, только если стоит рядом с ядром; далёкий прижимается к краю. Границы окна округляются до рубля, иначе живой тик двигал бы ось каждые пятнадцать секунд.


13. Слом паритета: отклонение от своей базы, а не уровень от нуля

Детектор «слома арбитража» сравнивал CIP с нулём при пороге ±3 п.п. Замер на 148 торговых днях (февраль–август 2026, реальные истории RUONIA и SOFR) показал, что ноль здесь — выдумка учебника: структурная база сама гуляла от −5,5 п.п. (апрель) до +2,4 (июнь) вместе со ставкой RUONIA (18,5% → 13,7%), и детектор горел 51% дней — 52 события за семь месяцев. Поднять порог не лечит (±4 п.п. → 39% дней): любой фиксированный порог от нуля молча перекалибровывается политикой ЦБ. Перекат базового контракта добавлял фантомный скачок −1,3 п.п. на ровном месте.

Слом теперь определён так: |CIP − медиана CIP этого же контракта за 60 торговых дней| больше полосы, где полоса = max(механическое разрешение, 95-й перцентиль |отклонений| внутри окна), с гистерезисом 0,7 на восстановление. База считается по собственной истории базового контракта — у нового контракта она есть задолго до того, как он станет базовым, поэтому перекат ряд не рвёт. Сегодняшняя точка в свою базу не входит.

На том же ряде: 11% дней в тревоге, 20 событий, и флагуются настоящие дислокации (19 мая −11,6 п.п., 19 августа −9,2), а не дрейф ставки. Та же конструкция уже лечила премию USDT — у неё структурная база тоже не ноль.

Уровень CIP остаётся на плитке как факт о сегментированном рынке; тревогу несёт отклонение от собственной нормы.

13.1. Премия крипто-канала: свой знаменатель и своя полоса

Панель меряет единство курса двумя измерителями, и у них РАЗНАЯ природа.

Кросс через биржевой юань — арбитражное тождество: биржевой юань, мировой кросс и официальный доллар одной даты обязаны сойтись. База здесь нулевая, её держит арбитраж, поэтому пороги абсолютные: 2 п.п. — «расходится», 5 п.п. — «разорван».

Премия крипто-канала USDT/RUB — не тождество, а издержки канала: в ней сидят комиссии, риск и премия за обход ограничений. Её структурный уровень не ноль и заранее неизвестен, поэтому судить по УРОВНЮ нельзя: панель кричала бы «курс расходится» каждый день.

До 12.09.2026 премия только показывалась и копила историю. В этот день набрались 360 замеров, она вошла в классификацию режима — и сразу обнажились два дефекта, невидимые, пока число было справочным.

*Знаменатель.* Премия делилась на ДЕЙСТВУЮЩИЙ официальный курс — тот, что ЦБ установил накануне в 15:30. Канал торгуется непрерывно, официальный курс стоит сутки, и в дни сильного хода рынка в премию попадал сам ход. 19-20 августа 2026 (курс 85,13 → 83,36) отклонение доходило до −3,7 п.п. при живом кросс-курсе около нуля: панель объявила бы расслоение рынка и расширила полосы всех якорей на ровном месте. Теперь знаменатель живой — биржевой юань через мировой кросс, тот же, которым панель сверяет рыночный курс, — и он пишется в журнал ВМЕСТЕ с замером: база и сегодняшнее значение обязаны жить на одном правиле.

*Линейка.* Вместо чужих 2 и 5 п.п. у премии собственная полоса — 95-й перцентиль

отклоненийв окне из 270 замеров (месяц), не уже собственной ошибки

знаменателя. Эта ошибка измерена: биржевой кросс расходится с внебиржевым эталоном на 0,109 п.п. по медиане и 0,391 в 95-м перцентиле (58 сверок с разрывом меньше четырёх минут), отсюда пол полосы 0,4 п.п. Гистерезис 0,7 душит дребезг у границы. По построению за полосой оказывается 5% замеров; замер сентября 2026 подтверждает: 13 из 270, одна смена режима за месяц.

Событие о смене режима называет измеритель, его отклонение и его полосу — одно и то же число у двух измерителей значит разное.

14. Состояние проверок

На 24.09.2026: тестов 252, мутационная проба ловит все нарочные поломки, с которыми её запускали (отсечка в фискальном якоре — 8 из 8). Проверки идут в CI на каждый пуш: разбор всех модулей и файлов витрины, отсутствие внешних зависимостей у конвейера, весь набор тестов. Два стража тишины валят сборку отдельно — «ноль тестов» и «тесты пропущены»: и то, и другое выглядит как успех, а означает, что проверок не осталось.

Проверки, которые стоит знать читателю, потому что они про честность вывода, а не про код: