Всем привет,
Я забыл, что видео посты на смарт-лабе сразу отправляются в бан :), поэтому немного текста.
Я как-то начал тему о том, что новые технологии очень помогают и облегчают жизнь алготрейдерам. И хотел показать как удобно использовать tensorflow serving, запущенный в docker контейнере, для использования моделей машинного и глубокого обучения. Так как такой метод позволяет быстро и лего развернуть, и использовать ваши модели почти в любой торговой среде.
И так, этот пост логическое завершение предыдущего: https://smart-lab.ru/blog/558070.php
Там было видео, в котором я рассмотрел подготовку данных. Мы получили исторические цены от yahoo сервиса, выбрали точки входа по нашей стратегии и подготовили датасет для алгоритма машинного обучения.
В сегодняшнем видео будет следующее:
— Используя tensorflow.keras api мы создадим две версии нейронной сети;
Сети очень простые и реализуют бинарную классификацию, отднако выходной слой имеет сигмоидную функцию активации и поэтому на выходе мы будем получать вероятность, а не конкретный класс. А как вы возможно помните, нейронная сеть нам нужна именно для того, что бы предстказывать вероятность получения нашей прибыли.
— Обучим их на ранее подготовленных данных;
— Экспортируем в saved_model формат — этот формат требует tensorflow serving;
— Так же создадим простеший models.config файл.
Данный файл содержит различные настройки для tensorflow serving'a и в нем мы укажем, что хотим что бы были доступны все версии нашей модели.
По умолчанию, он всегда делает доступной только последнюю версию.
— После всего этого мы запустим tensorflow serving в докер контейнере и при помощи REST api получим наши прогнозы.
вот теперь видео :)
и ссылка на питоновский ноутбук:
github.com/CloseToAlgoTrading/CodeFromVideo/tree/master/TensorFlow_Model_Deployment
Однако, на том количестве данных, что в примере, в целом не так это и важно.
Граалей у меня нет, и меня честно удивляют топики людей которые показывают прямо потрясающие эквити на тестах. Все мои стратегии так или иначе имеет огромное количество ситуаций когда они не работают :). Такой метод помогает улучшить результат, но не спасает если сама идея плоха.
Основной процент, на данный момент приносит не портфель роботов, а дивиденды. Роботов как портфель я только начал формировать, процесс идет… медленно но идет )
Через годик дургой, если все будет хорошо :), то я обязательно это озвучу, если же нет… то наверняка промолчу %). Все в лучших традициях смартлаба.
Отменить не знаю как.
Зато сейчас плюсанул другие Ваши комменты.
Denis, ну, смотрите. Вы предлагаете инвестировать время в какой-то хитрый метод разработки МТС. У которого даже чтобы получить сигнал нужно будет обращаться к черному ящику по «REST API». То есть тестирование на истории идет лесом (точнее, считается, что тесты на истории были сделаны при обучении сетки и больше ничего не нужно для счастья).
В этой связи возникает вопрос о целесообразности этих инвестиций (времени). Для этого мне (как читателю) и Вам (как Автору) в первую очередь должна быть интересна экспертная оценка ожидаемого результата. То есть Вы, наверное, поспрашивали у знакомых или почитали тематические статьи или на конференции какой-то в кулуарах пообщились и узнали, что какие-то команды разработчиков применяют Tensorflow и зарабатывают...
И тут 2 вопроса:
в1) Зарабатывают?
в2) Сколько это в процентах доходности в среднем?
С уважением.
Что касается первого абзаца, я не предлагаю инвестировать в хитрый метод. Я не пытаюсь рассказать что именно так надо создавать торговые стратегии.
Я предлагают разделить структуру торговой системы на модули, это скорее из области архитектуры. Что позволит более эффективно тратить время в будущем на изменения этих самых систем, если понадобится.
Возможно глядя только на этот пример, складывается впечатление, что я продаю именно метод разработки МТС. Тут наверное способ подачи информации меня подвел.
Что касается примера, почему вы утверждаете, что тестирование на истории идет лесом? Мы же обучили нашу модель на истории, теперь можем ее использовать в тестере, просто дергая метод predict, через тот же restapi и посмотреть, что покажет тестер. Пример именно на рестапи сделан, так как его везде нынче можно прикрутить.
Что касается второго абзаца, тут все проще. Я когда то писал, что есть у меня домашний проект, это торговая платформа. Пишу я ее на qt :) и крутится она у меня на маленьком домашнем сервере. Вот там я и применяю всякие разные подходы, использую и докер и тенсорфлоу.
Опять же на тенсорфлоу можно делать не только нейронные сети.
Теперь о вопросах.
1. Наверняка зарабатывают и не зарабатывают. Что касается меня, я же ответил на этот вопрос, что у меня на данный момент нет роботов которые зарабатывают на долгосроке. Я все еще в поиске :) и рад узнать что то новое из разного рода дискусий.
2. Я вам этого не скажу, так как я трачу больше времени на разработку торговой платформы, нежели на сами стратегии.
зы. хмм, я же просто делюсь информацией, с моей точки зрения даже полезной.
Уж про персоналки 80х совсем смешно. Их мощности были слабее любого современного телефона в несколько раз, а оперативки хватало бы максимум на загрузку в нее полтора торговых дня минуток максимум.
Что касается мощностей, не сравнивайте. Тогда писали на ассемблере, глубоко оптимизируя код, и делалось это гениальными программистами. Просто представьте, одна программа может проигрывать другой по скорости в сотни раз, на одном и том же процессоре. Современный телефон это не х86 ни разу, и вообще создавался для блондинок. Тензорфлоу с пайтоном туда же. Вот, если бы автор самостоятельно создал продукт на асме/си(CPU) и OpenCl (GPU), я бы глубоко его зауважал. А так была проведена работа практически на студенческих подспорьях.
вы может быть не в курсе, но ассемблер, это тоже язык. я сам на нём писал. и по личному интересу и позже, в институте изучал, сдавал курсовые. что я теперь, гений?
и компиляторы современные, уж если программы научились играть в шахматы, то наверное вы согласитесь, что современные компиляторы могли и компилировать нормально за эти годы научиться, да?
если вы думаете, что современные пакеты для мат. вычислений не оптимизированы гениальными программистами под гениальные процессоры, то вы ошибаетесь.
факт есть факт — мощности сегодняшних компьютеров в десятки раз больше того что было в 80х. и то что сейчас доступно «студентам», тогда было доступно только в маш залах.
простейший пример — те самые программы, которые обыгрывали гроссмейстеров, в 1997, составляли такую не хилую стойку. и опять же, я думаю что вы согласитесь о мной, что произошло это в 1997, а не в 80х.
как известно за 90ые годы мощность компьютеров удваивалась каждые два года. т.е. с 1989, она минимум выросла в 4 раза.
кстати победить тогда программе помог большой объём данных, к нейросетям она имела не такое большое отношение.
а современного монстра, победителя в ГО, как раз на нейросетях, создали только в 2015. через 18 лет после победы над каспаровым.
Если вы всерьёз считаете, что мощности 70х или 80х были сопоставимы с сегодняшними, то почему в 70х и 80х не было ни одного телефона, который бы распознавал лицо или понимал голосовые команды?
Тогда эти задачи считались практически невыполнимыми. Были только в фантастических фильмах.
Если бы у бабушки был хрен, она была бы дедушкой. Если бы в 70х-80х эти технологии могли бы быть, они бы там были.
Советская Каисса, если погуглить, работала на мейнфрейме, который стоил, 800 000 британских фунтов. Тех ещё, 1974 года фунтов. Не очень похоже на персоналку, правда?
Не сильно сомневаюсь, что современные шахматные программы для телефонов уделают и ту Каиссу. При этом стоить всё это будет куда меньше 1000 фунтов.
Чтобы это было совсем унизительно, дополню, что по экспертному мнению, Каисса играла тогда на уровне 3-го разряда в шахматах. А мне как раз недавно друг похвастал, что его сын получил 3й разряд. Сыну 9 лет.
800 000 фунтов, чтобы научиться играть на уровне школьника начальных классов. Ну так себе достижение для современных лет. А по тем временам безусловно — это было круто. Но и речь о том, что времена — разные.
А теперь подумайте, причём тут ассемблер и ваше уважение. Риторический вопрос.
BTW: я не считаю что программисты древности были гениальнее современных. это точно не так.
… копал как-то код матлаба в целях оптимизации (привет Стэнфорду). Удалось его разогнать в 2000 раз! После этого всякие высокоуровневые продукты на ОХРЕНЕННО мощном железе для меня пшик. Туда же смартфоны и прочие заумные утюги. Важна суть, код. (Это я для себя пишу, не для вас, вдруг когда-нибудь буду перечитывать)