Блог им. 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 приходят на помощь!




 
★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, это зависит от того, как Вам удобно работать. На мой взгляд лучше хранить исходные таблицы данных, и дополнительно делать таблицу в которой указываются смены тикеров, сплитов и т.п. А потом с помощью запросов или средствами того же языка формировать данные для анализа и обработки.

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

....все тэги



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