Алексей Бачеров
Алексей Бачеров личный блог
17 июня 2020, 13:20

Автоматизация - ключ к успешному инвестированию. 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 приходят на помощь!




 
38 Комментариев
  • Дмитрий К
    17 июня 2020, 13:36
    Вот реально подобной же ересью занимаюсь последний год, и продолжаю заниматься, и все больше прихожу к выводу, что связи между размером счета и подобными исследованиями нет.
    Для мозгов реально полезно, в 45 лучше и быстрее стал соображать, чем когда бы то ни было, в процессе изучения и создания всяких алгоритмов научился мыслить логически, не по инерции, даже банально считать в уме стал лучше, порешав кучу всяких задачек на питоне
  • 3Qu
    17 июня 2020, 13:43
    Единственно непонятно, зачем для подобных целей использовать этого монстра — SQL-Server. Больше чем достаточна БД SQLite — маленькая, простенькая, ничего настраивать не надо, и все те же самые возможности для подобных применений. Пакет уже в Питоне — sqlite.
      • 3Qu
        17 июня 2020, 13:58
        Алексей Бачеров, это да, локальная.
        Ну, если у вас SQL-Server в инете торчит и сам данные собирает и обрабатывает, тогда конечно. В других случаях, смысла такой БД не вижу.
      • badpidgin
        17 июня 2020, 14:09
        Алексей Бачеров, MS SQL Server покупали?
  • Replikant_mih
    17 июня 2020, 14:03

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

     

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

  • Ынвестор
    17 июня 2020, 14:07
    Грабить инфу питоном самое то. Тоже развлекаюсь. На Америке
  • Serj90
    17 июня 2020, 14:10
    Чем функциональность excel не подошла? Фундаментальные данные я так понял всё равно вручную загружаются.
      • Serj90
        17 июня 2020, 15:42
        Алексей Бачеров, посмотрел бюллетень. Ух… нормальная такая махина получилась. Насколько я понял, этот проект не для личного пользования, а для широких масс)) использование надежной БД здесь более чем оправдано
    • shprots
      17 июня 2020, 15:08
      Serj90, а в excel можно автоматом загружать данные с Финам? Можно конечно на vba попробовать, но мне кажется этот тот еще лес
      Нужна БД для хранения миллионов строк. Можно, конечно, сейчас коннектиться к любой БД. Но работа с БД остается
      • Serj90
        17 июня 2020, 15:30
        shprots, ну если требуется только котировки и объемы торгов, то та же moex светит наружу веб-сервис для забора исторических данных, в синтаксисе разобраться не сильно сложно, тут вопрос желания, зато в любой момент, у тебя данных за любой период, на любой инструмент, лишь бы оперативы на машине хватило. У меня в планах прямо на лету собирать собственный «экзотический» индекс и смотреть его историю роста/падения. vba конечно круто и мощно, и тут согласен в этот лес лезть не хочется, пока что обхожусь без него. Если же речь идет о сборе не котировок, а уже посчитанных показателей или любой другой информации у какого-нибудь брокера, то я читал на том же планета excel, что можно подключать в качестве источника данных отдельные куски веб-страниц, опять же без vba. vba если и потребуется, то для того чтобы вручную кнопку обновить не нажимать)))
  • shprots
    17 июня 2020, 15:08
    Не рассматривали вариант работы с колоночной БД, click house например или вроде того?
  • jug
    17 июня 2020, 15:31
    Одно только у sql server есть ограничение — как инструмент в реальной торговле я бы его не использовал. Есть у него одна особенность — время отклика труднопрогнозируемо- раньше в базе у вас было 100 записей, и все считалось махом- а сейчас стало тысяча, и когда надо ордер выставлять- сервер думает с ответом очень долго.Это конечно лечится, но тратить на это время и терять из за этого деньги не хочется
    • Rostislav Kudryashov
      17 июня 2020, 16:07
      jug, 15;31 Если держать базу данных на своём ПК, то Visual FoxPro — чемпион по скорости. Для файлов не более 2 Гб время отклика мгновенное. Только надо продумать индексы под запросы.
    • Lev
      17 июня 2020, 17:01
      jug, индексы делать на нужные поля? Работаю с БД с сотнями млн строк и вроде нет лютых тормозов. А 1000 — это даже и обсуждать нечего.
      • jug
        17 июня 2020, 18:54
        Lev, я тоже работаю с большими базами в миллионы строк по своей основной деятельности. Если бы было все так просто — создал индексы, и все. Запросы к базе бывают такие, что это не простая задача даже для опытного db разработчика. Если Вам конечо интересно, поищите — много ли систем реального времени( а скорость реакции для нас важна) сделаны на базе sql серверов. Самое противное, что статистика выполнения в тех же хранимых процедурах может сдохнуть в самый неожиданный момент.
        • jug
          17 июня 2020, 18:57
          все это касается только использования sql сервера в торговле, для рисерча — нет вопросов, штука удобная
        • Lev
          17 июня 2020, 19:20
          jug, вы как-то резко перешли от «тормозит при 1000 строк»  к RTOS. Я не поспеваю.
          • jug
            18 июня 2020, 07:27
            Lev, дальше препираться не вижу смысла. Хотите строить торговлю на базе Sql сервера- стройте. 
      • jug
        18 июня 2020, 14:20
        Алексей Бачеров, я писал выше — для рисерча —  очень удобно
  • shprots
    17 июня 2020, 16:11
    Serj90, да можно, через power query например. Способ неплохой, я так опционные таблички вытаскиваю.
    Мне надо, к примеру, историю всех сделок по опционам где то хранить, это уйма строк. И вытащить я пока только из квика умею
    • Lev
      17 июня 2020, 17:04
      shprots, TSDB или колоночная какая-нить?
      • shprots
        17 июня 2020, 17:58
        Lev,  MySql пока. Мне не очень нравится. Хочу попробовать click house, но смущает, что надо много ковыряться. 
        Tsdb я от Вас узнал только что. Штука интересная, надо пробовать.
        Сейчас организация хранения данных как раз основная задача. 
        • Lev
          17 июня 2020, 19:12
          shprots, MySQL - отличный выбор и в состоянии много чего переварить и прожевать, не привнося дополнительных ошибок. Про кликхаус в бою — ничего не могу сказать, только планирую смигрировать осенью один сервис, на попробовать. Там примерно 1 млн событий в сутки и он должен жрать поменьше денег, нежели MySQL на таких объемах.
  • Сергей Брин
    17 июня 2020, 21:01
    Как вы получаете историю?
  • Михаил
    18 июня 2020, 11:17
    А где вы его подняли?
  • ANYYNA
    13 августа 2020, 09:20
    Начинаю разбираться в данной теме, есть несколько вопросов:
      — описание структуры таблицы для хранения данных — где посмотреть / кто поделится.
      — если проходит сплит / обратный сплит — смена тикера — тоже надо правильно учитывать

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

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