Блог им. AVBacherov

Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!

Как и любой исследователь-инвестор, я сталкиваюсь с необходимостью обрабатывать огромное количество различных данных, чтобы принять взвешенное инвестиционное решение.

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

Я уже рассказывал, что на самоизоляции осваивал Python, и демонстрировал, что мне удалось написать профессиональный инвестиционный калькулятор, который рассчитывает различные финансовые показатели и сравнивает между собой два актива. Кстати, в последней его версии я добавил возможность учета комиссий и налогов. Это позволяет намного легче сравнивать NET результаты для инвестора, особенно если в стратегии по ДУ есть вознаграждение управляющего за успех, а в ПИФах комиссия за приобретение и погашение паев.

Все первичные данные для сравнения приходилось формировать в ручном режиме — скачивать котировки в файл, потом их обрабатывать, и уже потом считать результаты. И даже немало известная программа HYDRa от STOCKSHARP, хоть и помогала в автоматизации данного процесса, но имела массу недостатков. К тому же после очередного большого обновления, зачастую приходилась настраивать в ней всё заново, что откровенно раздражало.

Идея завести свою базу данных была давно, и вот наконец дошли руки.

Что мне получилось сделать❓

✅ С помощью своего институтского друга, я «поднял» и настроил собственный SQL Server
✅ Научился с помощью Python работать с таблицами в SQL: читать, записывать, редактировать, добавлять данные и т.д.
Нашел здесь — на Smart-lab.ru код для загрузки данных с сайта Finam, доработал его под свои нужды, и теперь в автоматическом режиме могу легко обновлять данные по нужным мне бумагам и контрактам в своем SQL
✅ Немного переписал свой инвестиционный калькулятор для работы с SQL

Все это раз в 10 сократило мои временные затраты на сбор данных и их подготовку к работе, высвободив массу времени для исследований. Кроме этого, теперь я могу с легкостью работать из любой точки Мира 😉
✅ Научиться загружать данные с yahoo finance и moex, чтобы лучше исследовать американский рынок и иметь альтернативные источники. Конечно, преобразовывать их в нужный мне формат.
✅ Переписать код на Matlab в моем инвестиционном бюллетене ABTRUST, чтобы также легко и просто забирать данные c SQL
✅ Добавить в SQL таблицы с характеристиками облигаций, поля финансовых отчетностей компаний, которые я использую для фундаментальной оценки акций, и различные показатели макро- и денежно кредитной статистики.

Скоро, я «одним нажатием» на кнопку смогу формировать любые отчеты, которые меня интересуют, а также намного легче смогу тестировать свои портфельные стратегии.

Удачных Вам инвестиций и интересных исследований❗️
Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!
Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!
Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!
Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!




 
5.4К | ★12
38 комментариев
Вот реально подобной же ересью занимаюсь последний год, и продолжаю заниматься, и все больше прихожу к выводу, что связи между размером счета и подобными исследованиями нет.
Для мозгов реально полезно, в 45 лучше и быстрее стал соображать, чем когда бы то ни было, в процессе изучения и создания всяких алгоритмов научился мыслить логически, не по инерции, даже банально считать в уме стал лучше, порешав кучу всяких задачек на питоне
avatar
Дмитрий К, из своего опыта скажу, что подобные автоматизации и исследования, сами по себе не делают нас богаче. Но как и любой такой процесс, они помогают совершать существенно меньше ошибок, что сокращает убытки. Как любил говорить Уоррен Баффет: «Постоянные тренировки не приводят к лучшим результатам, они приводят к стабильным результатам». В инвестициях, минимизация убытков — это уже выигрыш.
Единственно непонятно, зачем для подобных целей использовать этого монстра — SQL-Server. Больше чем достаточна БД SQLite — маленькая, простенькая, ничего настраивать не надо, и все те же самые возможности для подобных применений. Пакет уже в Питоне — sqlite.
avatar
3Qu, я думал на счет SQLite, но как я понял, это локальная БД. Возможно не дочитал и не до исследовал. С сервером же очень удобно, что можно работать из любого места — дом, отдых, командировка. Ничего не останавливает.
Алексей Бачеров, это да, локальная.
Ну, если у вас SQL-Server в инете торчит и сам данные собирает и обрабатывает, тогда конечно. В других случаях, смысла такой БД не вижу.
avatar
Алексей Бачеров, MS SQL Server покупали?
avatar
badpidgin, SQL Express

Да, автоматизация — наше все!)

 

А финам разве не ввел тему с токенами или чем там, которая препятствует автоматическому скачиванию истории?

avatar
Replikant_mih, пока работает всё. Я так понимаю, что если есть возможность скачивать данные в открытую, то заблокировать это нельзя. Это же по сути загрузка через ссылку. И везде где она есть, можно получить данные. Сейчас подумываю написать код, чтобы с investfunds данные по ОПИФам забирать.
Грабить инфу питоном самое то. Тоже развлекаюсь. На Америке
avatar
Чем функциональность excel не подошла? Фундаментальные данные я так понял всё равно вручную загружаются.
avatar
Serj90, пока да. Посмотрю можно ли это делать тоже автоматизировать. Но их не так много. Я же далеко не все беру для своих исследований.
Serj90, excel неплохо подходит для решения отдельно взятой задачи, когда же таких задач много и их надо объединять, и постоянно обрабатывать и обновлять становится не удобно. Мой инвестиционный бюллетень очень проблематично обрабатывать в excel 
Алексей Бачеров, посмотрел бюллетень. Ух… нормальная такая махина получилась. Насколько я понял, этот проект не для личного пользования, а для широких масс)) использование надежной БД здесь более чем оправдано
avatar
Serj90, бюллетень находится в свободном доступе и является моим опорным инструментом для различного рода быстрых оценок и прикидывания различных портфелей. Я понимаю, что без определенных знаний им пользоваться тяжело. Но когда знаешь куда смотреть, все существенно упрощается. Бюллетенем обычно пользуются слушатели моего курса «Три Кита Инвестиций»
Serj90, а в excel можно автоматом загружать данные с Финам? Можно конечно на vba попробовать, но мне кажется этот тот еще лес
Нужна БД для хранения миллионов строк. Можно, конечно, сейчас коннектиться к любой БД. Но работа с БД остается
avatar
shprots, ну если требуется только котировки и объемы торгов, то та же moex светит наружу веб-сервис для забора исторических данных, в синтаксисе разобраться не сильно сложно, тут вопрос желания, зато в любой момент, у тебя данных за любой период, на любой инструмент, лишь бы оперативы на машине хватило. У меня в планах прямо на лету собирать собственный «экзотический» индекс и смотреть его историю роста/падения. vba конечно круто и мощно, и тут согласен в этот лес лезть не хочется, пока что обхожусь без него. Если же речь идет о сборе не котировок, а уже посчитанных показателей или любой другой информации у какого-нибудь брокера, то я читал на том же планета excel, что можно подключать в качестве источника данных отдельные куски веб-страниц, опять же без vba. vba если и потребуется, то для того чтобы вручную кнопку обновить не нажимать)))
avatar
Не рассматривали вариант работы с колоночной БД, click house например или вроде того?
avatar
shprots, честно скажу, я пока только учусь работать с БД, поэтому мне сложно их сравнивать между собой.
Одно только у sql server есть ограничение — как инструмент в реальной торговле я бы его не использовал. Есть у него одна особенность — время отклика труднопрогнозируемо- раньше в базе у вас было 100 записей, и все считалось махом- а сейчас стало тысяча, и когда надо ордер выставлять- сервер думает с ответом очень долго.Это конечно лечится, но тратить на это время и терять из за этого деньги не хочется
avatar
jug, 15;31 Если держать базу данных на своём ПК, то Visual FoxPro — чемпион по скорости. Для файлов не более 2 Гб время отклика мгновенное. Только надо продумать индексы под запросы.
jug, индексы делать на нужные поля? Работаю с БД с сотнями млн строк и вроде нет лютых тормозов. А 1000 — это даже и обсуждать нечего.
avatar
Lev, я тоже работаю с большими базами в миллионы строк по своей основной деятельности. Если бы было все так просто — создал индексы, и все. Запросы к базе бывают такие, что это не простая задача даже для опытного db разработчика. Если Вам конечо интересно, поищите — много ли систем реального времени( а скорость реакции для нас важна) сделаны на базе sql серверов. Самое противное, что статистика выполнения в тех же хранимых процедурах может сдохнуть в самый неожиданный момент.
avatar
все это касается только использования sql сервера в торговле, для рисерча — нет вопросов, штука удобная
avatar
jug, вы как-то резко перешли от «тормозит при 1000 строк»  к RTOS. Я не поспеваю.
avatar
Lev, дальше препираться не вижу смысла. Хотите строить торговлю на базе Sql сервера- стройте. 
avatar
jug, я трейдерских задач не решаю, поэтому ничего сказать не могу. А для работы с таймфреймами не ниже дневок, и для различного исторического моделирования — sql server — хватает с головой.
Алексей Бачеров, я писал выше — для рисерча —  очень удобно
avatar
Serj90, да можно, через power query например. Способ неплохой, я так опционные таблички вытаскиваю.
Мне надо, к примеру, историю всех сделок по опционам где то хранить, это уйма строк. И вытащить я пока только из квика умею
avatar
shprots, TSDB или колоночная какая-нить?
avatar
Lev,  MySql пока. Мне не очень нравится. Хочу попробовать click house, но смущает, что надо много ковыряться. 
Tsdb я от Вас узнал только что. Штука интересная, надо пробовать.
Сейчас организация хранения данных как раз основная задача. 
avatar
shprots, MySQL - отличный выбор и в состоянии много чего переварить и прожевать, не привнося дополнительных ошибок. Про кликхаус в бою — ничего не могу сказать, только планирую смигрировать осенью один сервис, на попробовать. Там примерно 1 млн событий в сутки и он должен жрать поменьше денег, нежели MySQL на таких объемах.
avatar
Как вы получаете историю?
Сергей Брин, с Finam. Я же написал в тексте самого поста, и даже указал источник откуда взял изначальный код.
А где вы его подняли?
avatar
Михаил, SQL Express поднимается на любой машине, не обязательно иметь Windows Server. Вот на одном из рабочих компов пока и работает.
Начинаю разбираться в данной теме, есть несколько вопросов:
  — описание структуры таблицы для хранения данных — где посмотреть / кто поделится.
  — если проходит сплит / обратный сплит — смена тикера — тоже надо правильно учитывать
avatar
ANYYNA, это зависит от того, как Вам удобно работать. На мой взгляд лучше хранить исходные таблицы данных, и дополнительно делать таблицу в которой указываются смены тикеров, сплитов и т.п. А потом с помощью запросов или средствами того же языка формировать данные для анализа и обработки.

Читайте на SMART-LAB:
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...
Фото
Биткоин попробует разыграть «треугольную карту»?
«Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию...
Фото
Индикатор Fractal: торговые сигналы и робот для OsEngine. Видео
В этом видео разбираем индикатор Fractal Билла Вильямса — один из самых известных инструментов в трейдинге. Покажем, как формируются фракталы,...
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

теги блога Алексей Бачеров

....все тэги



UPDONW
Новый дизайн