Долгосрочный инвестор, после книг на пенсию в 35. Веду эксперимент с пополнением по 5000р./мес. на каждого ребенка.
Запустил эксперимент с оценкой вероятностей по рынку (только математика), без новостного шума.
Портфель
до 5 000 000 ₽
Сделки за 30 дней
39
Доходность за 12 месяцев
+11,59%
Не является индивидуальной инвестиционной рекомендацией
📘 Книга, из которой выросла вся идея: «Одураченные случайностью» Талеба — и как я превратил её в код
Если бы меня спросили, с чего на самом деле началась эта система, я бы не стал показывать первую строчку кода. Я показал бы книжную полку. Точнее — одну книгу: «Одураченные случайностью» Нассима Талеба.
Талеб — бывший трейдер и философ, который всю жизнь занимается одной темой: какую роль на самом деле играет случай. И его главная мысль, та, что меня перевернула, звучит так: мы живём в мире, где удача маскируется под мастерство, а случайность притворяется закономерностью. Мы видим успешного инвестора и говорим «гений». Талеб спрашивает в ответ: а вы видели тысячи таких же, кто делал ровно то же самое и разорился? Их вы не видите — они не пишут книг. Это «ошибка выжившего».
Когда я это прочитал, я понял, почему меня всегда коробило от прогнозов «вырастет на 5%». Они притворяются знанием там, где есть только неопределённость. И я задумался: а можно ли построить инструмент, который ведёт себя противоположным образом — не прячет случайность, а измеряет её честно?
Из книги я взял три идеи, и каждая стала конкретным куском системы.
Идея первая: у мира сослагательное наклонение. Талеб пишет, что реальность — это множество расходящихся тропинок, а не одна прямая дорога. То, что случилось, — лишь один из множества вариантов, которые могли произойти. Большинство аналитиков смотрят на одну тропинку и говорят «вот что будет». Моя система делает наоборот: на каждый день она прогоняет десятки тысяч альтернативных вариантов завтрашнего дня — тот самый метод Монте-Карло, который Талеб не раз поминает в книге. И ответ выдаёт не точкой, а распределением: вот где цена окажется вероятнее всего, а вот насколько плохо может быть в редком, но возможном сценарии.
Идея вторая: бойтесь ставки 99 к 1. Один из самых ярких образов книги — пари, в котором вы почти всегда выигрываете немного, но один раз из ста теряете всё. Талеб показывает, как трейдеры годами снимают маленькую стабильную прибыль — а потом один обвал стирает всё разом. Вывод: важна не частота выигрыша, а форма хвоста — то, что происходит в редком, но катастрофическом случае. Поэтому в основе моей оценки лежит распределение с «тяжёлыми хвостами» (математически — распределение Стьюдента). Оно специально закладывает, что резкие обвалы случаются чаще, чем предсказывает наивная «колоколообразная» кривая. И поэтому система отдельно считает не только «обычный» риск, но и риск худших дней.
Идея третья — и самая болезненная: краткосрочная удача врёт. Талеб называет это эффектом Монте-Карло: пара удачных месяцев — и человек уверен, что нашёл закономерность, хотя это был просто шанс. Как защититься от самообмана? Только одним способом: измерять процесс, а не любоваться результатом. Поэтому сердце системы — не модель, а неизменяемый журнал. Каждый прогноз записывается ДО того, как стал известен исход, и его нельзя переписать задним числом. Через время система честно сверяет: сбывались ли заявленные вероятности? Если она говорила «90% коридор» — попадала ли реальность в него в 90% случаев? Это и есть прививка от той самой иллюзии «гениальности», о которой предупреждает Талеб.
Есть у него фраза, которую я бы повесил над рабочим столом: «Не позволяйте результату затмить процесс».Вся моя система — это, по сути, попытка перевести эту фразу в код. Не угадать завтрашнюю цену. А честно измерить свою неопределённость и не дать себе соврать о том, был ли ты прав.
Талеб, кстати, скептик: он считает, что большинство моделей переоценивают свою точность, и он прав. Поэтому я и не строил «грааль». Я строил инструмент, который знает пределы собственного знания — и говорит о них вслух, включая свои слабые места. Думаю, это единственный честный способ работать со случайностью. И единственный, который сам Талеб бы, пожалуй, не высмеял.
Это образовательный материал и история создания исследовательского инструмента. Не является индивидуальной инвестиционной рекомендацией.
👉Что под капотом: полный стек и на чём стоит оценка вероятностей
Обещал заглянуть под капот честно — выполняю. Без маркетинговой пыли: вот из чего собрана система и на какой математике держится сама оценка вероятностей.
На чём стоит оценка вероятностей
Сердце системы — не предсказание цены, а моделирование её волатильности, то есть того, насколько широко цена может «гулять» завтра. Ключевое наблюдение, на котором всё держится: волатильность на рынке приходит волнами. После бурных дней обычно следуют бурные, после спокойных — спокойные. Это свойство называют кластеризацией волатильности, и его описывает класс моделей GARCH.
Конкретно — GARCH(1,1) с распределением Стьюдента (по-простому: «GARCH-t»). Распределение Стьюдента важно, потому что у него тяжёлые хвосты — оно закладывает, что редкие резкие движения случаются чаще, чем предполагает классическая «колоколообразная» кривая. На реальном рынке так и есть, и игнорировать это — значит недооценивать риск.
Дальше — симуляция Монте-Карло. Модель не выдаёт одну цифру. Она прогоняет десятки тысяч сценариев возможного будущего и из них собирает полное распределение: вот медиана, вот коридор на 90%, вот насколько плохо может быть в худших случаях. Из этого распределения считаются меры риска — VaR и CVaR (сколько можно потерять в плохой и в совсем плохой день).
И — честно про то, что не вошло. Мы пробовали добавить определение рыночных режимов и моделирование скачков. На проверке они не обыграли простое ядро — поэтому остались в исследовательском ящике, а не в боевой версии. Принцип жёсткий: в продакшн попадает только то, что доказало превосходство на данных, которых модель раньше не видела.
Как система проверяет саму себя
Это, пожалуй, главное отличие. Каждый прогноз записывается в неизменяемый журнал ещё до того, как стал известен исход. Потом, когда реальность наступила, система сверяет: попал ли фактический результат в предсказанный коридор? Накапливается статистика калибровки — насколько честны были заявленные вероятности. Если модель говорит «90% коридор», то в него должны попадать примерно 90% случаев. Не больше и не меньше.
Честно скажу про слабое место, которое мы знаем и за которым следим: на части российских акций калибровка по одному из тестов (PIT) пока неидеальна. Мы это не прячем — наоборот, именно живой журнал должен показать, насколько это критично на практике. Система, которая честно называет свои слабости, мне дороже той, что обещает безупречность.
Полный стек
Для тех, кому интересна инженерная сторона:
Язык и среда: Python 3.11, менеджер пакетов uv.
Данные: работа с рынком через брокерский API в режиме «только чтение» — система ничего не торгует, только анализирует. Хранение истории — Parquet, журнал прогнозов — встроенная аналитическая БД DuckDB.
Обработка данных: Polars (быстрые табличные операции).
Модель: библиотека arch для GARCH-t; численное ядро симуляций ускорено через Numba.
Риск и размер позиции: меры VaR/CVaR из симуляции; расчёт оптимальной доли капитала по критерию Келли с учётом реальных издержек на сделку.
Автоматизация: ежедневный запуск через системный планировщик, строго после закрытия торговой сессии, на полностью сформированной дневной свече.
Отчётность: ежедневный дайджест, графики-«вееры» распределений, версионируемые миграции базы.
Дисциплина: весь исполняемый код зафиксирован в системе контроля версий; параметры модели защищены контрольной суммой — любое изменение конфигурации видно сразу; журнал работает только на добавление, удалять записи запрещено в принципе.
Зачем такая строгость в личном инструменте? Потому что единственная вещь, которая отличает честную систему оценки вероятностей от красивого самообмана, — это дисциплина не врать себе. На каждом уровне: в данных, в коде, в журнале.
Спасибо, что прочитали эту серию. Я рассказывал не про «грааль», которого не существует, а про путь и про инструмент, который честно измеряет неопределённость и проверяет сам себя.
Как проверка на «лучше монетки» чуть не убила проект — и почему я этому рад
В прошлом посте я обещал рассказать про момент, когда всё едва не рухнуло. Вот он.
Когда первая версия системы заработала, я был почти счастлив. Красивые распределения, уверенные графики, всё считается. Оставалась одна формальность — проверка, которую я сам себе пообещал не пропускать: а наша сложная модель вообще обыгрывает тупейший прогноз «завтра будет как сегодня»? В статистике это называют сравнением со «случайным блужданием». Если твоя умная модель не бьёт эту примитивную базу — грош ей цена, какой бы красивой она ни была.
И вот тут началось интересное.
Сначала выяснилось, что часть «ума» модели была самообманом. Мы добавляли в неё модные компоненты — определение рыночных режимов, учёт резких скачков. Звучит солидно. А на проверке оказалось: эти надстройки не улучшали прогноз, а дважды считали один и тот же риск, создавая иллюзию точности. Пришлось их безжалостно убрать и оставить проверенное ядро. Урок: красивое ≠ работающее. Работающее — это то, что прошло честную проверку на исторических данных, которых модель не видела.
Потом мы поймали ошибку, от которой у меня до сих пор холодок. Генератор случайных чисел в одном из режимов выдавал почти одинаковые сценарии вместо разнообразных — то есть модель думала, что рассмотрела двадцать тысяч вариантов будущего, а на деле смотрела на один и тот же двадцать тысяч раз. Это не ловится обычными тестами. Это ловится только когда ты садишься и сверяешь цифры руками, не доверяя зелёной галочке.
А однажды система молча подменила один вычислительный движок другим — и результаты «поплыли» так тонко, что заметить можно было только по одной странной детали: цифры стали подозрительно одинаковыми там, где должны были чуть отличаться. Эта одинаковость и выдала дефект.
Сколько было таких итераций? Я сбился со счёта. Были версии, которые я отклонял по три-четыре раза, отправляя на доработку. Был день, когда обновление под видом «починки уязвимостей» едва не стёрло работающий код — и спасло нас только то, что мы не верим словам «готово», а каждый раз сверяем с тем, что реально записано в системе. Был случай, когда выяснилось, что российские акции, оказывается, торгуются по выходным, а валюта — нет, и эта мелочь ломала всю логику дат, пока мы не построили правило, которое отличает «рынок закрыт» от «данные потерялись».
Почему я всему этому рад?
Потому что каждая пойманная ошибка — это ошибка, которая не попала в реальные решения. Система, которая спотыкается громко и честно, в сто раз надёжнее той, что молча выдаёт красивую неправду. За эти недели я получил не просто работающий код. Я получил код, чья честность проверена настоящей осадой.
И знаете, что оказалось самым ценным активом всего проекта? Не модель. Журнал. Тот самый, который нельзя переписать. Потому что за это время мы дважды убедились: история, которую невозможно подделать задним числом, — единственный свидетель, которому можно верить.
В финальном посте — загляну под капот: из чего именно собрана система и на какой математике стоит сама оценка вероятностей. Без воды, честно про то, что работает и что пока нет.
Это история создания исследовательского инструмента и образовательный материал. Не является индивидуальной инвестиционной рекомендацией.
Почему я перестал верить прогнозам «вырастет/упадёт» — и построил машину, которая отвечает иначе
Признаюсь честно: когда-то я ловил себя на том, что ищу в интернете «прогноз по $SBER на завтра». И каждый раз получал одно и то же — уверенный голос, который говорил «вырастет» или «упадёт». Без единой цифры о том, насколько он сам себе верит.
И однажды меня осенило простая мысль, которая всё перевернула.
Рынок не знает, что будет завтра. И я не знаю. И тот уверенный голос — тоже не знает. Разница лишь в том, что честный ответ на вопрос «что будет с ценой завтра» — это не точка. Это распределение вероятностей. Не «будет 320 рублей», а «с вероятностью 90% цена окажется в коридоре от и до, а вот так выглядит риск, что она упадёт сильнее обычного».
Звучит скучнее, чем «вырастет на 5%». Но именно эта скука — честная.
Тогда я задал себе вопрос, с которого началось всё остальное: а можно ли построить инструмент, который вместо обещаний показывает вероятности — и который потом сам проверяет, был ли он прав?
Не «гуру, который всегда уверен». А машина, которая каждый день говорит «вот мои вероятности», записывает их в журнал, который нельзя переписать задним числом, а через время честно показывает: сбывались её прогнозы или нет.
Я не буду врать, что это была лёгкая дорога. Дальше в этой серии я расскажу, через сколько итераций пришлось пройти, какие ошибки мы ловили (две из них были такими коварными, что их не видно никакими тестами — только сверкой данных между собой), и из чего вообще собрана такая система под российский рынок.
Но главное прозрение было вот в чём. Ценность не в том, чтобы угадать завтрашнюю цену. Ценность — в честном измерении собственной неопределённости и в дисциплине никогда не врать себе о результатах.
В следующем посте — про то, как одна простая проверка («а действительно ли наша модель лучше, чем подбрасывание монетки?») чуть не похоронила весь проект. И почему я этому рад.
---
*Это история создания исследовательского инструмента и образовательный материал. Не является индивидуальной инвестиционной рекомендацией.*