Блог им. WebProd

Новый сервис для торговли (3)

С предыдущего поста прошло почти три месяца, диплом всё ближе и я хотел бы поделиться моими результатами с вами. Очень интересно мнение, замечания и предложения.

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

Новый сервис для торговли (3)

Вот так выглядит в данный момент интерфейс построения портфеля. Выбор тикеров не особо удобен, планирую добавить туда строку поиска. Также на бекэнде запилено более функциональное управление ограничениями на объем акций, но пока не дошли руки вывести в интерфейс.

Есть возможность выбрать целевую функцию для оптимизации портфеля: Шарп, мин. волатильность, CAPM и другие. В результате мы получаем красивый график изменения стоимости портфеля и сравнение с индексом IMOEX.

Новый сервис для торговли (3)

Для сравнения портфелей идет расчет доходностей за различные периоды, меры риска в виде СКО и различных общепринятых коэффициентов

Новый сервис для торговли (3)

На этапе реализации этой части столкнулся с тем, что неоткуда было взять историю стоимости акций, потому что Финам ввёл капчу. В итоге проблема была решена и теперь есть почти 2 гигабайта поминутных котировок 90 российских акций с 2010 года.

Впереди еще куча идей, таких как:
— Построение портфеля облигаций с минимальной дюрацией
— Улучшение удобства интерфейса
— Вывод информации по акциям (интерактивный график, история фин. отчётностей и дивидендов — вся информация уже есть, нужно только вывести её)
— Улучшение алгоритма машинного обучения (если есть профи, которым интересно поучаствовать в данном проекте, я был бы очень рад)



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

★1
21 комментарий
> основное, что я наконец-то сделал — это составление портфеля акций по параметрам с использованием машинного обучения

А как вы это делаете?
avatar
Михаил, по ценам и объему торговли акции строятся несколько индикаторов тех. анализа и по их данным учится модель предсказывающая направление изменения цены в следующий промежуток времени
avatar
WebProd, а что за модель? Как ее задействовать? Я пытался переключать «ИИ фильтр» — цифры и график не менялись. 
avatar
Михаил, если его выключить, то портфель будет составляться из всех выбранных тикеров, если включить, то будут отбираться N лучших и из них собирается портфель. Возможно у Вас N стоит больше или равно количеству тикеров, тогда тоже никакого только от фильтра не будет
avatar
WebProd, понял — вроде заработало. А чего за модель? И как вы ее тренируете и применяете — out of  sample или нет?
avatar
Михаил, пока это простейшая линейная регрессия (пробовал случайный лес и dart — результат был хуже) с обучением градиентным спуском. При обучении используется out of sample prediction в виде валидационной выборки
avatar
WebProd, то есть если я выбрал построить портфель с 2010-01-01, как по умолчанию стоит, то модель учится на данных до 2010-01-01 и потом применяется?
avatar
Михаил, нет, используется уже обученная на всех данных модель. Обучение занимает достаточно много времени и нет возможности делать его при запросе пользователя, поэтому она обучается сама по себе при поступлении новых данных.
avatar
WebProd, то есть вы фактически заглядываете в будущее, что мягко говоря не очень хорошо. Я так понимаю для максимизации Шарпа вы используете такой же подход?
avatar
Михаил, в какой-то степени заглядываю да. Согласен, что это не хорошо, но пока у меня нет лучших вариантов.

Я пока довольно поверхностно знаком с машинным обучением, поэтому пока так. В будущих планах и использование более сложной модели и наличие множества предварительно обученных моделей, чтобы не заглядывать в будущее.

В максимизации Шарпа используется предсказанная стоимость, в других целевых
avatar
WebProd, а на чем вы это все пишете?
avatar
Михаил, на Rust, все работает очень быстро и с минимумом ресурсов, но крайне мало библиотек для машинного обучения. Возможно перейду на нейронные сети, тогда смогу использовать Tensorflow и все его многообразие гайдов.

Почитал Ваш блог, понял что Вы зашли в этом деле гораздо дальше меня ) Я правильно понял что conomy.ru Ваш ресурс?
avatar
WebProd, нет — к conomy не имею никакого отношения. Беру там данные, но они часто не точные — приходится перепроверять. 
avatar
Михаил, а, извиняюсь, еще раз перечитал пост, неправильно понял
avatar
WebProd, если сети интересуют, то на мой взгляд лучше в сторону PyTorch смотреть. Большинство современных статей по сетям содержат реализацию на PyTorch. 
avatar
Михаил, спасибо, посмотрю PyTorch, ни разу не сталкивался. И в университете, и в интернете как-то постоянно сталкиваюсь с Tensorflow и Keras.
avatar
WebProd, TF более старая библиотека, поэтому видимо и курсы по нему. Но сейчас у него не лучшие времена. На Kaggle и ресечах в основном PyTorch, в продакшене TF пока сохраняет лидерство за счёт старых проектов. 
avatar
Михаил, а какие модели по Вашему опыту наиболее подходят для предсказания временных рядов? Я когда рассматривал модели, неплохой результат показала LSTM-сеть.

Или можем где-то в месседжере поговорить, если Вы не против?
avatar
WebProd, думаю это сильно от задачи зависит. Под каждую нужно искать свои варианты. Где-то и LSTM может работать, но по ощущениям рекуррентные сети и LSTM в частности постепенно вымирают и все реже используются. В телеграмме меня можно найти @WLMike
avatar
У вас красивый интерфейс. У меня есть view под excel и хорошая бэк. Если есть желание можем объединиться, результат будет лучше чем сумма вашей и моей функциональности. Как раз искал фронтендера. Свяжитесь со мой, если надумаете. Вот мой проект github.com/vananiev/portfolio
avatar
Виталий Ананьев, Как раз таки я никакой не фронтендер и мне самому он нужен )
avatar

теги блога WebProd

....все тэги



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