Блог им. DenisVo

Практический пример использования Tensorflow serving для применения ваших моделей в любой среде алгоритмической торговли.

Всем привет, 

Я забыл, что видео посты на смарт-лабе сразу отправляются в бан :), поэтому немного текста.
Я как-то начал тему о том, что новые технологии очень помогают и облегчают жизнь алготрейдерам. И хотел показать как удобно использовать 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
★13
19 комментариев
Надею кому-то эти знания помогут… чтобы сделать что-то более полезное чем то что на видео.
avatar
Алексей Иванов, Пример на видео конечно не может быть применен сразу в торговле. Там представлена сама идея.
avatar
А почему в задаче классификации mse?
avatar
Михаил, признаю, черт попутал… это грубая ошибка :(…, бинарная cross-entropy былабы куда вернее. Это вселенская лень… я когда все позаписал %) понял что тут есть проблема и ввожу людей в заблуждение.
Однако, на том количестве данных, что в примере, в целом не так это и важно. 
avatar
Мне понравилось. 
avatar
=) Давайте сразу к телу: сколько процентов годовых приносит в среднем портфель роботов, сделанных по этой технологии?
avatar
ch5oh, :)) как я уж озвучивал в одной из видюшек, разрабатывать торговое окружение у меня получается лучше, чем непосредственно стратегии.

Граалей у меня нет, и меня честно удивляют топики людей которые показывают прямо потрясающие эквити на тестах. Все мои стратегии так или иначе имеет огромное количество ситуаций когда они не работают :). Такой метод помогает улучшить результат, но не спасает если сама идея плоха.
Основной процент, на данный момент приносит не портфель роботов, а дивиденды. Роботов как портфель я только начал формировать, процесс идет… медленно но идет ) 
Через годик дургой, если все будет хорошо :), то я обязательно это озвучу, если же нет… то наверняка промолчу %). Все в лучших традициях смартлаба.
avatar
Denis, ++. Если занятия серьезные, советую сосредоточиться на теме предыдущего топика. 
avatar
старый трейдер, вы имеете ввиду подготовку и обработку данных? 
avatar
Denis, Пардон, промахнулся и поставил минус.
Отменить не знаю как.
Зато сейчас плюсанул другие Ваши комменты.
avatar
_sg_, да ничего страшного :). А они, эти плюсы минусы, на что то влияют? Ну кроме как, что это какой никакой фитбэк.
avatar
Denis, yep… it's the necessary and sufficient condition
avatar

Denis, ну, смотрите. Вы предлагаете инвестировать время в какой-то хитрый метод разработки МТС. У которого даже чтобы получить сигнал нужно будет обращаться к черному ящику по «REST API». То есть тестирование на истории идет лесом (точнее, считается, что тесты на истории были сделаны при обучении сетки и больше ничего не нужно для счастья).

 

В этой связи возникает вопрос о целесообразности этих инвестиций (времени). Для этого мне (как читателю) и Вам (как Автору) в первую очередь должна быть интересна экспертная оценка ожидаемого результата. То есть Вы, наверное, поспрашивали у знакомых или почитали тематические статьи или на конференции какой-то в кулуарах пообщились и узнали, что какие-то команды разработчиков применяют Tensorflow и зарабатывают...

И тут 2 вопроса:
в1) Зарабатывают?
в2) Сколько это в процентах доходности в среднем?

 

С уважением.

avatar
ch5oh, Хмм… давайте по порядку, а то боюсь у нас тут недоразумение возникло. 
Что касается первого абзаца, я не предлагаю инвестировать в хитрый метод. Я не пытаюсь рассказать что именно так надо создавать торговые стратегии.
Я предлагают разделить структуру торговой системы на модули, это скорее из области архитектуры. Что позволит более эффективно тратить время в будущем на изменения этих самых систем, если понадобится. 
Возможно глядя только на этот пример, складывается впечатление, что я продаю именно метод разработки МТС. Тут наверное способ подачи информации меня подвел.

Что касается примера, почему вы утверждаете, что тестирование на истории идет лесом?  Мы же обучили нашу модель на истории, теперь можем ее использовать в тестере, просто дергая метод predict, через тот же restapi и посмотреть, что покажет тестер. Пример именно на рестапи сделан, так как его везде нынче можно прикрутить.

Что касается второго абзаца, тут все проще. Я когда то писал, что есть у меня домашний проект, это торговая платформа. Пишу я ее на qt :) и крутится она у меня на маленьком домашнем сервере. Вот там я и применяю всякие разные подходы, использую и докер и тенсорфлоу. 
Опять же на тенсорфлоу можно делать не только нейронные сети.

Теперь о вопросах. 
1. Наверняка зарабатывают и не зарабатывают. Что касается меня, я же ответил на этот вопрос, что у меня на данный момент нет роботов которые зарабатывают на долгосроке. Я все еще в поиске :) и рад узнать что то новое из разного рода дискусий.
2. Я вам этого не скажу, так как я трачу больше времени на разработку торговой платформы, нежели на сами стратегии.

зы. хмм, я же просто делюсь информацией, с моей точки зрения даже полезной.
avatar
Хоспидя, этим нейросетям сто лет в обед. Еще в 80-х были известны (когда талантливых математиков было в разы больше). Да и персоналки уже появились и обсчитать всё и вся даже они могли, просто очень долго. Но никто толком не озолотился. Разве что Ренессанс какой-нибудь, только там ресурсов (нобелевских голов, вычислительных мощностей, баз данных) на порядки больше, чем у рядового трейдера. Но копья продолжают ломаться и ломаться, ну ну....

avatar
chizhan, ну камон, нормальные программы для шахмат и го придумали совсем не так давно и не в 80х. А рынок куда как посложнее. 
Уж про персоналки 80х совсем смешно. Их мощности были слабее любого современного телефона в несколько раз, а оперативки хватало бы максимум на загрузку в нее полтора торговых дня минуток максимум. 
avatar
ПBМ, ой как счас помню, первенство среди шахматных программ мира выиграла советская «каисса» в 74-м. А в 97 уже был разгромлен гроссмейстер мира.

Что касается мощностей, не сравнивайте. Тогда писали на ассемблере, глубоко оптимизируя код, и делалось это гениальными программистами. Просто представьте, одна программа может проигрывать другой по скорости в сотни раз, на одном и том же процессоре. Современный телефон это не х86 ни разу, и вообще создавался для блондинок. Тензорфлоу с пайтоном туда же. Вот, если бы автор самостоятельно создал продукт на асме/си(CPU) и OpenCl (GPU), я бы глубоко его зауважал. А так была проведена работа практически на студенческих подспорьях.
avatar
chizhan, а что, ваше уважение реально что-то даёт? чем дальше тем смешнее.
вы может быть не в курсе, но ассемблер, это тоже язык. я сам на нём писал. и по личному интересу и позже, в институте изучал, сдавал курсовые. что я теперь, гений?
и компиляторы современные, уж если программы научились играть в шахматы, то наверное вы согласитесь, что современные компиляторы могли и компилировать нормально за эти годы научиться, да?

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

факт есть факт — мощности сегодняшних компьютеров в десятки раз больше того что было в 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: я не считаю что программисты древности были гениальнее современных. это точно не так.
avatar
ПBМ, про «уважение» забудьте, закругляюсь. Общаюсь только с людьми со взаимным уважением. Тролли, хейтеры и просто злобные люди лесом, моё личное время бесценно.

… копал как-то код матлаба в целях оптимизации (привет Стэнфорду). Удалось его разогнать в 2000 раз! После этого всякие высокоуровневые продукты на ОХРЕНЕННО мощном железе для меня пшик. Туда же смартфоны и прочие заумные утюги. Важна суть, код. (Это я для себя пишу, не для вас, вдруг когда-нибудь буду перечитывать)
avatar

теги блога CloseToAlgoTrading

....все тэги



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