olslip13
olslip13 личный блог
Вчера в 14:50

Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал

Привет, Smart-Lab!

Большую часть жизни я провел в финансах: казначейство, управление ликвидностью, работа с капиталом. И всё это время моим основным инструментом был Excel. Всегда хотелось как усовершенствовать имеющиеся модели. И хотя Excel при профессиональном подходе дает огромные возможности их все равно может не хватить под какую-то конкретную задачу. Также в последнее время с расцветом ИИ я как и многие увлекся вайб-кодингом, порог доступа к которому теперь стал ниже, чем был раньше. Решил раздвинуть рамки Excel моделей за счет python.

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


Откуда я брал данные для терминала.

Первый вопрос любого цифрового проекта — данные. Вот откуда я беру данные для своего терминала

1. Московская Биржа

Это «сердце» терминала. Данные подтягиваются напрямую с Московской Биржи (MOEX ISS). Забираются данные напрямую через ISS-запросы для построения Кривой бескупонной доходности (КБД).
Параметры Нельсона–Сигеля: Терминал в реальном времени подтягивает коэффициенты (B1, B2, B3, T1) и G-корректировки.
Живой расчет: На базе этих параметров скринер вычисляет справедливую доходность для любой точки дюрации, что позволяет нам видеть реальный G-спред в базисных пунктах по каждой бумаге.

2. УК «ДОХОДЪ»

Если данные Московской Биржи дают нам «цену», то аналитика от УК «ДОХОДЪ» дает нам понимание «качества». Терминал интегрирует данные их сервиса «Анализ облигаций».
Кредитный скоринг: Из первоисточника подтягиваются числовые показатели кредитного качества эмитента. Это позволяет мне сразу оценить, насколько эмитент закредитован.
Сложные коэффициенты: Парсер собирает такие специфические метрики, как Inside Q (внутреннее качество по методологии УК «ДОХОДЪ»), NetDebt/Equity (уровень долговой нагрузки) иЛиквидность (LI).
Матрица спредов: ниже отдельно опишу логику по этому блоку

3. Smart-Lab

Для облигаций Smart-Lab служит источником данных по выплатам купонов, а для акций это полноценная база фундаментальных показателей.

Мультипликаторы в реальном времени: Скрипт забирает со страниц Smart-Lab ключевые показатели: P/E Live, NetDebt/EBITDA и рассчитывает показатели Forward DY (прогнозную дивидендную доходность), FCF Yield (доходность свободного денежного потока). Для расчета этих метрик парсятся необходимые фундаментальные показатели из отчетов компаний со Smart-Lab. Это позволяет терминалу показывать по каждой акции эмитента актуальные метрики.
Сценарный анализ дивидендов: Парсим данные по Payout (процент прибыли на выплаты) сразу в трех разрезах: консенсус-прогноз, оценки аналитиков и исторические данные. Здесь данные берутся сразу из трех источников, если в одном источнике нет данных для эмитента, то скрипт берет данные из другого. Это json-файл, в котором собрал по эмитентам % выплат дивидендов, сайт УК «ДОХОДЪ» (данные по дивидендам) или со Smart-Lab (строка «Дивиденды/прибыль, %» из отчетности эмитентов.) Это дает возможность строить более точные прогнозы по будущей доходности дивидендов.
История купонов: Для облигаций парсер вытягивает историю фактически выплаченных купонов. Это критически важно для раздела «Портфель», чтобы считать вашу реальную прибыль с учетом уже выплаченных купонов

4. Snowball Income

Для блока акций терминал интегрирован с данными Snowball Income.

Дивидендный календарь: Информация о датах закрытия реестра, дивидендной отсечки, Див. доходность и размере объявленных выплат.
Статусы: Терминал отслеживает статус дивидендов (рекомендованы, объявлены или отменены), обеспечивая актуальность «форвардной» доходности.


Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал
Вкладка облигаций


Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал
Вкладка акций


Матрица спредов: Как терминал «раскладывает рынок по полочкам»

Здесь отдельно нужно описать логику определения перепроданности/перекупленности бумаги. Чтобы найти по-настоящему выгодную сделку, недостаточно просто смотреть на доходность. Нужно понимать, сколько рынок платит «в среднем» за аналогичный риск. Для этого в терминале реализована Матрица спредов — это профессиональный инструмент визуализации, который позволяет окинуть взглядом весь долговой рынок и мгновенно найти «аномальные» зоны.

1. Как строится матрица спредов

Представьте таблицу, где весь долговой рынок разделен на четкие сектора:
По горизонтали (Колонки): Мы разбиваем облигации по «корзинам дюрации» — от коротких (0–1 год) до длинных (5+ лет).
По вертикали (Строки): Группируем их по кредитному качеству (рэнкингу) — от эталонных AAA до спекулятивных категорий.
На пересечении этих параметров образуется «ячейка», в которой собираются только прямые конкуренты.

2. Находим «Золотой стандарт» (Медиана)

В каждой ячейке скрипт вычисляет Медиану — среднюю премию за риск (G-спред) для этой группы бумаг в текущий момент.

• Для точности расчетов терминал в реальном времени подтягивает коэффициенты кривой КБД напрямую с Московской Биржи.
• Медиана ячейки становится нашим ориентиром: она показывает, какая доходность сейчас считается «нормальной» для такого рейтинга и срока.

3. Ищем аномалии через Дельту

Когда у нас есть эталон, мы сравниваем с ним каждую конкретную бумагу. Эту разницу мы называем Дельтой:

Delta = G-Spread — Median

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

Итог: Матрица позволяет мне мгновенно отсечь рыночный шум и сфокусироваться на тех облигациях, которые дают премию к рынку, оставаясь при этом в рамках понятного кредитного качества.


Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал
Интерфейс матрицы спредов с цветовой градиентной заливкой


Технологии для «не-программиста»

Многие коллеги боятся слова «программирование», думая, что нужно учиться пять лет. На самом деле, связка Python + Streamlit — это магия.
Streamlit позволяет превратить скрипты на Python в полноценный веб-интерфейс. Если вы можете написать формулу в Excel, то с помощью Cursor вы сможете собрать интерфейс в Streamlit. А если добавить к этому n8n для автоматизации цепочек (например, уведомления в Telegram по триггерам), вы можете настроить оповещения, которые работают на вас 24/7. Последние я еще не реализовал.
Для меня навыки кода стали не просто «хобби», а мощнейшим апгрейдом. Это как если бы вы всю жизнь ходили пешком, а потом пересели на спортивный байк.


Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал
Мой портфель облигаций


Прощай, Excel! Как я пересел на Python и собрал свой инвестиционный терминал
Вкладка Мои активы


Проект в развитии

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


Зачем я это пишу?

Я ищу единомышленников. Тех, кто тоже «кодит» для личных финансов, или профильных экспертов, которым не хватает автоматизации.

• Как вы решаете вопрос с качеством данных?
• Какие метрики в облигациях для вас сейчас приоритетны (в условиях текущих ставок)?
• Стоит ли добавлять в такой инструмент ИИ-агентов для первичного анализа отчетности?

Давайте обсудим в комментариях. Верю, что автоматизация — это единственный способ для частного инвестора не «сгореть» в потоке информации и принимать взвешенные решения.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
33 Комментария
  • Auximen
    Вчера в 14:51
    Python процедурное г*но, TypeScript рулит))
  • Так создайте группу для единомышленников в ВК.
  • samurai_nrd
    Вчера в 15:01
    можно не отказываться от Excel, а подружить их с пайтоном, например, через xlwings. В итоге для себя дополните привычный инструмент гибкостью pandas.
  • fgun
    Вчера в 15:11
    Вы молодец. У меня только один комментарий. Для облигации Дешево или Дорого может еще означать несоответствие реального рейтинга текущему установленному. В этом самая большая засада такого формального анализа. Можно найти алмаз, а можно вляпаться в г. После подсвечивания лучше покопаться самому.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн