Блог им. IT_Spirit

Машинное обучение — будущее всего алготрейдинга?

Всего лишь неделю нужно для того, чтобы каждый из вас смог сам научиться программировать сверточные нейронные сети, которые торгуют не хуже этой*:
Машинное обучение — будущее всего алготрейдинга?

Основное отличие машинного обучения от традиционного программирования состоит в том, что в задачах классического программирования вы знаете некие правила и жестко программируете их в поведении программы; в задачах машинного обучения вы не знаете по каким конкретно правилам должна работать программа и позволяете моделям машинного обучения самим найти их. Если вы хотите создать торгового робота, обычно, вы сами ищете некоторые правила (например, пересечение скользяшек, MACD>80 при убывающей луне — покупаю 2 лота) и жестко задаете такое поведения в роботе, тестируете и, возможно, оптимизируете некоторые параметры, но почему бы не поручить само придумывание правил машине? Методы машинного обучения, в теории, могут сами выбрать индикаторы, разработать правила входа, выхода и оптимальный размер позиций. Да чего уж… они могут сами придумать индикаторы, паттерны, которые могут быть гораздо лучше чем то, что придумали до этого люди. Ведь так и случилось в сфере обработки изображений, нейронные сети научились выделять значимые признаки из изображений гораздо лучше, чем алгоритмы, придуманные людьми. Компьютер обыгрывает людей в шахматы — игру, знания для которой люди накапливали ни одну сотню лет. Станет ли алготрейдинг следующей сферой, где будет господствовать нейронные сети или какой другой метод машинного обучения?

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

Вот вам цитата из заслуживающей прочтения книги Шолле «Глубокое обучение на Python»:

«Некоторые читатели наверняка захотят воспользоваться приемами, представленными здесь, для прогнозирования стоимости ценных бумаг на фондовом рынке (обменных курсов валют и т. д.). Рынки имеют совершенно иные статистические характеристики, чем природные явления, такие как погода. Использование машинного обучения для предсказания поведения рынков, когда имеются только общедоступные данные, — сложная задача, и вы, скорее всего, просто потратите силы и время, так ничего и не добившись.»

Я торгую на рынках уже почти десяток лет и последние 2 года я очень много занимаюсь анализом рыночных данных, в том числе методами машинного обучения и, в частности, нейронными сетями. Несмотря на то, что у меня есть доступ к различным платформам начиная от всем известного блумберга до совсем нового ICE Connect, Python настолько полезен для меня, что остается вне конкуренции. Но я соглашусь с Ф. Шолле о том, что если вы попробуете применить нейронные сети для трейдинга, то, скорее всего, вас ждут только боль и страдания. Но у меня есть кое-что специально для тебя, дорогой читатель. Нет, не грааль, приносящая миллионы, а кое-что получше, то, что может избавить тебя от первоначальной боли и страданий — базовое решение. Это простое решение, в котором есть масса возможностей для улучшений и с которого можно начать. Это простое решение, несмотря на то, что основано на сырых общедоступных данных, использует очень простые методы, вдруг оказалось способно выдавать net+ на тесте (что для меня, на самом деле, было неожиданно). Вот чего может достичь базовое решение на тесте (но, похоже, для базового решения это максимум):
Машинное обучение — будущее всего алготрейдинга?

Данные взяты с финама Экспорт (МосБиржа фьючерсы RTS) получасовики (собранные из 5-ти минуток)

Для обучения: с 2009-08-18 до 2016-10-13

Для валидации: с 2016-10-13 до 2018-03-19

Для теста: с 2018-03-19 до 2019-08-13

На картинках результаты теста (результат в пунктах, комиссия 10п).

Сложно ли понять как это работает и как это запрограммировать? Нет, достаточно двух дней вот этого курса https://red-circule.com/courses/11710, если же вы понятия не имеете, как эти сверточные сети работают или хотите получить очень простой ликбез по машинному обучению, вначале зайдите вот сюда, это бесплатно: https://red-circule.com/courses/11709

От двухдневного курса не следует ожидать готового торгового робота, которого можно сразу запустить в реал, на нем не будет и разбора того, как keras модель запустить торговать на реале. Этот курс — моё руководство к тому, с чего лучше начать свой путь создания робота на основе нейронной сети. Я расскажу пару «фишечек», которые могут быть полезны и в обычной торговле, но бОльшая часть информации не секретна, и её можно найти в свободном доступе. Кроме того, вот вам даже функция генерации этой самой нейронной сети.


def get_policy_model(lr,dimen=(38,4)):

   num_actions = 3

   inp = layers.Input(shape=(38,4),name=«input_x»)

   adv = layers.Input(shape=[1], name=«advantages»)

 

   x = layers.Conv1D (12,3,activation='relu')(inp)

   x = layers.Conv1D (24,3,activation='relu')(x)

   x = layers.MaxPool1D(2)(x)

 

   x = layers.Conv1D (32,5,activation='relu')(x)

   x = layers.MaxPool1D(2)(x)

 

   x = layers.Flatten()(x)

   x = layers.Dense(50,activation='relu')(x)

   out = layers.Dense(3,activation='softmax')(x)

 

 

   def custom_loss(y_true, y_pred):

      log_lik = K.log(y_true * (y_true — y_pred) + (1 — y_true) * (y_true + y_pred) + K.epsilon())

      return K.mean(log_lik * adv, keepdims=True)

 

   model_train = Model(inputs=[inp, adv], outputs=out)

   model_train.compile(loss=custom_loss, optimizer=Adam(lr))

   model_predict = Model(inputs=[inp], outputs=out)

   return model_train, model_predict


Надеюсь, это никого не отпугнуло, код гораздо проще, чем может показаться. Метод обучения — Policy Gradient, выход соответствует трем действиям: шорт, нет позиции, лонг. Открытие позиции происходит по цене открытия следующего бара, закрытие — по цене закрытия бара. Gym-окружение я выложу чуть позже.

И пока на этом всё, успейте заработать, пока всю прибыль ещё не забирал ИИ.

 

*но автор данной статьи этого гарантировать не может





★20
100 комментариев
Жаль нельзя минусовать
avatar
Так что да, можно гордиться, что у нас (трейдеров) очень сложная профессия.
Давайте будем реалистами. Мы ищем золото в почти пустой породе, где его почти нет. Вместо того чтобы ехать на Клондайк и столбить участок там. Сами подумайте, если толпы домохозяек на доступных платформах начнут применять нейросети, то никаких закономерностей не будет вообще. Фактически так и есть, нейросетям сто лет в обед, а все более менее богатые инвест банки могут позволить себе и вычислительные ресурсы и квалифицированный персонал для них.
avatar
Открытие сделки проявляет в авторе мастера торговли.Но закрытие в прибыль  можно делать по любому поводу.Закрытие сделки в убыток -средний размер свечи тайма. Про вход в сделку знают волновики. Мораль- учим волновой анализ Эллиота и торгуем свечной график.
avatar
Да уж сколько раз писалось, что современное машинное обучение — это лишь метод поиска нелинейной регрессии. Для нестационарных рядов, каковыми являются приращения цен, использование постоянной нелинейной регрессии — это изначально ошибка. А для статистически достоверного периодического перестроения нелинейной  регрессии явно не хватит отрезка почти стационарности в данных цен. Если и применять нейросети на рынке, то явно не для задачи построения систем по прошлым ценам. 
avatar
А. Г., линейная регрессия, вероятно, для нестационарных рядов подходит куда лучше? 
avatar
Kot_Begemot, не знаю, но когда я «учил» перцептроны в далёком 1997-м году и брал только те нейросети, у которых СКО ошибки на обучающей выборке статистически не отличалась от СКО на тестирующей, то лучшая такая нейросеть практически совпала с обычной линейной регрессией.
avatar
А. Г., линейной регрессией? Занятно.

Таким образом, получается, что ВР всё же стационарен, если сама линейная регрессия — стационарна в широком смысле.

Вероятно, если бы цены были нестационарны, то нейросети нашли бы что-то получше, я правильно вас понимаю?
avatar
Kot_Begemot, если участки стационарности коротки, то использование нелинейностей ни к чему не приведёт. А предикативность у всех регрессий была не ахти. На обучающей выборке получались шикарные нейросети, только на тестирующей они ничего путного не показывали. 
avatar
А. Г., наблюдал похожее. Коллега в 2006 году с нейросетями возился. Результаты на тестирующей выборке были хуже графического анализа.
avatar
А. Г.,  Подтверждаю! Я изучал перцептроны в этом году — результат тот же, RMSE нейросети практически совпадает с ошибкой линейной регрессионной модели.
avatar
А. Г., я понимаю, что статистики ряда приращения цен меняются, а длины кусков стационарности, скорее всего, не хватит для переобучения нейронной сети, но есть такой момент: Если тех.анализ действительно работает, а уж если работают свечные паттерны, то сверточная нейронная сеть должна быть в состоянии сама выделить эти паттерны и принимать на основе них решения. Сейчас нейронные сети делаются за 5 минут, и, порой, проще взять проверить и думать уже, имея некие результаты, чем рассуждать о том, какими они должны быть.
Владислав Кузьменков, для того, чтобы качественно обучить сеть на паттерны для торговли, Вам сначала их придётся формализовать в конечное множество с числом исходов в разы меньше длины обучающей выборки. Ведь любую последовательность длины n можно точно «описать» многочленом с максимальной степенью n. Только толку от этого для прогноза n+1 члена нуль.
avatar
А. Г., Сначала формализовать паттерны это если мы знаем паттерны и учим находить их, а если мы не знаем паттерны и нахождение паттернов это и есть результат обучения, то ничего формализовывать на входе не надо, разве нет?
avatar
Replikant_mih,  Вы говорите о нейсети для формализации паттернов. Тут обратная задача: её выход должен быть конечен и формализован. Ну двухэтапно можно попробовать: сначала нейросеть для формализации, потом результат формализации на нейросеть для сигналов.

Но в любом случае надо предварительно корректно решить задачу конечной формализации до обучения нейросетей. 
avatar

А. Г., Может из-за того, что я не шарю в нейросетях (а я не шарю), может из-за того, что мы где-то понятийно разошлись...

В общем, о чем говорю я: обучение любой модели — это уже то самое выявление паттернов, для каких-то типов моделей это самые что ни на есть типичные паттерны, которые трейдер имеет в виду, для каких-то что-то что можно назвать паттернами только если сильно обобщить это понятие. Например, дерево решение, на выходе каждый путь, ведущий к True по сути это паттерн, т.е. паттерн_1: a>5, b<3.5, c>9 — вполне себе паттерн, разве нет? Нейросети, подозреваю, тоже в процессе обучения выявляют паттерны, используемая модель, её тип и признаковое пространство определяет характер паттернов — это да. Соответственно, обучение модели — выявление паттернов, использование поиск выявленных.

avatar
Replikant_mih,  сами по себе они ничего не выявят, если не задать обучающую выборку «вход-выход». И одна из составляющих этой пары должна быть формализована до обучения. 
avatar
А. Г., Выход в смысле разметка данных? — Ну берешь в качестве таргета приращение цены через некоторое вол-во свечей в будущем.
avatar
Replikant_mih,  да про это я уже писал. Ничего путного нейросети в этой задаче не дают. 
avatar
А. Г., Ну, давайте добавим чуть конкретики и постулат изменится) — ничего путного нейросетевые модели уровня 1997 года не дают) — достоверно ведь вы можете только это утверждать. Там же много чего появилось за эти десятилетия. 
avatar
Replikant_mih, я говорил о перцептроне. Если с ним ничего не изменилось, то ничего и не изменилось и сегодня. Тем более только выше в ответе мне было рассказано о современных исследованиях. 
avatar
А. Г., Перцептрон, может, и не изменился, но там много всяких типов сетей появилось. По поводу «рассказано», ну вот вспомните, что «рассказывают» про известные вам истины — всегда то, что рассказывает соответствует действительности?)
avatar
Replikant_mih, да все нейросети — нелинейные функции. Перцептроны интересен тем, что им можно приблизить любую нелинейную функцию в поле действительны чисел. Поэтому, если у перцептрона не получилось нормально предсказать будущее приращение цены по прошлым ценам, то не получится и у других.

Формализация в конечное множество (уход от поля действительны чисел в другую структуру) может дать результат, но без неё ничего не получится. 
avatar
А. Г., в 1997 году перцептроном не получалось классифицировать изображения совсем. Современный RezNet делает это лучше человека. 
avatar
Михаил, Ага, согласен, это как примерно увидеть первую в мире мобилу и забраковать весь будущий класс устройств на основе первого впечатления.
avatar
Михаил,  так это совсем разные задачи — случайные нестационарные временные ряды и изображения. Перцептрон без внешних формализаций — это лишь инструмент построения многомерной нелинейной регрессии в поле действительных чисел. Для задачи распознавания образов лучше было использовать сеть Кохонена.
avatar
А. Г., никто не использует перцептрон на практике, как и сети Кохонена. В современных сетях либо нет, либо 1-2 из сотни полносвязный слоев, поэтому разговоры об перцептроне и его пользе просто смешно вести. Да, они не работают для решения большинства практических задач. С 1997 года много чего напридумывали, что действительно работает, в том числе для анализа временных рядов, изображений, звука, для совсем нестационарный игры в го.
avatar
Михаил, игра в ГО, изображения, звуки — это все конечные вариации. А насчёт нестационарных временных рядов ссылками не поделитесь? 
avatar
А. Г., с практической точки зрения даже изображение в современных задачах по распознанию это пространство хоть и конечное, но имеющее размер порядка 256^3^(500 * 500), что можно считать вполне бесконечным с практической точки зрения. В звуке еще больше.
Базовые архитектуры сетей для вероятностного анализа временных рядов можно посмотреть в этой библиотечке https://gluon-ts.mxnet.io/index.html
Про конкретное применение ML для предсказания будущих котировок по динамике стакана слушал только в эти выходные (видио):
Победителем было построено 50 моделей с помощью градиентного бустинга (на базе LightGBM)
Предсказание этих моделей было объединено с помощью ElasticNet (на базе sklearn)
avatar
Михаил, пространство то может быть большим, но в распознаваемых данных есть четкие закономерности. Это как открытый текст в множестве всех последовательностей из букв, знаков препинания и пробела.
avatar
А. Г., вы смогли найти закономерности, насколько я понимаю, значит они есть. Ну и сеть найдет — сделайте нормальную архитектуру, а не пару банальных dense слоев. Заложите в нее туже логику, которая есть в вашем подходе. Нужно заглядывать в историю на десятки шагов (GRU, LSTM), на сотни (attention, conv), на тысячи (dilated conv), нужно добавить возможность учитывать особенность отдельных бумаг (embedding), хотите, чтобы сеть научилась включать условный «фильтр пилы» (gated unit), хотите чтобы сеть выбирала между несколькими сигналами в зависимости от обстоятельств (attention, softmax, squeeze and excitation). Современные работающие сети эта кропотливая работа над архитектурой, а не пару dense слоев. 
avatar
Михаил, чем больше слоев, тем больше вероятность найти то, чего нет. В задаче поиска закономерностей во временных рядах не может быть число степеней свободы больше числа испытаний. И вообще первое должно быть, как минимум, на порядок меньше второго.
avatar
А. Г., в современных сетях обычно делается много слоев (от десятков до пары сотен), но слои очень легковесные. Собственно поэтому избегают полносвязный слои, так как в них крайне много параметров. Если вы забубните слой 3х500х500 после слоя 3х500х500 для анализа картинок, то будет иметь 3^2 * 500^4~600 млрд параметров,  а 200 слойном DenseNet всего 20 млн. параметров. 
Это характерный пример, как сильно современные архитектуры отличаются от  перцептрона. Ну и да нужно много данных.
avatar
Михаил, да у нас данных цен нет длинной 200 млн. тактов. Разве что тики. 
avatar

А. Г., во-первых ваше допущение о соотношении количества данных и параметров не совсем верно. Оно работает для классических статистических методов, но не действует для сетей — DenseNet тренировали на в 1 млн изображений, то есть параметров в нем в 20 раз больше, чем обучающих примеров. Если грубо, то там зашито очень много регулиризации (за счет Batch Normalization, DropOut, Weight Sharing, Residual connection и прямой L2 регуляризации на веса), потому эффективное количество параметров существенно меньше.

Во-вторых, вас никто не заставляет делать сеть такого размера. Допустим вы захотите заглянуть в историю на 3 сотни значений котировок назад, допустим вы еще объем подтяните — входной вектор данных у вас 300х2 = 600, а у DenseNet около 150 тысяч, то есть в 250 раз меньше — параметров у вас будет не 20 млн, а 80 тысяч при сопоставимой архитектуре.

avatar
Михаил, оно не зависит от методов, а зависит от задачи. Если мы ищем статзакономерность, про которую ничего априори не предполагаем, то без этого соотношения ничего путного не найдем. Ведь любую последовательность из n точек можно точно приблизить многочленом степени n (n+1 степень свободы с учетом свободного члена).  Только толку от этого нуль.
avatar
А. Г., но если вы наложите достаточно серьезную L2 регуляризацию на коэффициенты многочлена, то провести точно не сможете, и вполне можете получить разумное приближение с помощью этого многочлена. 
avatar
Михаил, а смысл?
avatar

А. Г., в вашем экстремальном примере большого смысла нет, кроме как поизвращаться и показать, как работают некоторые методы ML. 

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

Если посчитать количество параметров в каком-нибудь GBM, то там легко окажется около 10 тысяч решающих деревьев и порядка 1000 листьев в каждом, для задания которых потребуется порядка 10 млн параметров. Но GBM отлично работает всего на нескольких тысячах примеров.

avatar
Михаил, я показал, что чисто математически число параметров больше числа измерений может приводить к абсолютно неверным выводам и заблуждениям. Отдельные удачные примеры не могут опровергнуть этого в общем случае. Потому что такие примеры могут быть только для структурированных данных. Какие? Ну изображения, открытые тексты, игры с конечным числом вариантов. Но все это «страшно далеко» от ценовых рядов.
avatar
А. Г., ну точно так же Тихонов чисто математически показал, что с помощью регуляризация вполне можно решать плохо поставленные задачи и обходить указанное вами ограничение на число параметров. Разработчики алгоритмов градиентного бустинга, современных сетей творчески развили эти подходы и предложили множество других способов регуляризации. 

Эти методы вполне применяются для прогнозирования цен, в том числе при недостатке данных. На последнем конкурсе Сибура нужно было прогнозировать цены на сырье по очень коротким рядам порядка 100 точек — обычные регрессии, ARIMA и т.д. как-то быстро ушли на второй план уступив место градиентному бустингу (лучшее решение было на catboost).
avatar
Михаил, 100 точек и ARIMA c максимум 10 параметрами — вполне разумный вариант.

А насчет Тихонова, дайте ссылку на эту его теорему, чтобы понять что там математически.
avatar
А. Г., и это разумное ARIMA работало хуже градиентного бустинга. 

Наберите регуляризация Тихонова. 
avatar
А. Г., а там где-то есть требование, что система имеет единственное решение?
avatar
Михаил, а иначе как выполняется приближение? При бесконечном числе решений не может выполняться последнее неравенство. А при числе уравнений меньше числа переменных решений линейной системы, либо бесконечное число, либо нет вовсе.
avatar
А. Г., ну там вроде ищут некое нормальное решение.
avatar
А. Г., Нет, неверные логические выводы (безотносительно истинности посылов) при не гарантированно достоверных посылах. Логик внутри меня негодует)). Ладно, в любом случае тут надо рисечить).
avatar
А. Г., интересно, а можно формализовать или оцифровать человеческую интуицию?
avatar
pammkz, откуда я знаю. Я же специалист в прикладной статистике, а она работает с рядами данных. Как интуицию разложить в ряд данных, я не представляю. 
avatar
А. Г., стоимость этого Вашего поста примерно 10000 USD. Большинство тут даже не представляет сколько времени, нервов и денег Вы им только что сэкономили. Но некоторые так и будут долбиться головой в стену по следу хайпа вокруг нейронок, поднятого журналистами.
Давно (лично я) не видел чтобы вот так, двумя фразами, да ещё и «просто по ходу», можно было описать проблему, которую большинство принимает за «успех».
avatar
А. Г.,  это верно если рассматривать цены как случайный процесс... 
avatar
ves2010,  а любой процесс, будущее которого нельзя предсказать точно — случаен. 
avatar
А. Г., а как же тогда деньги делать, если нельзя будущее предсказать? мы оба торгуем ботами = вполне успешно предсказываем будущие ценовые ряды
avatar
ves2010, статистически предсказывает, т. е.  с ошибками. То же бросание монетки с вероятностью орла 0,55 — случайно, но ставя на орла, через 1000 испытаний мы будем в выигрыше с вероятностью больше 0,99.
avatar
А. Г., при чисто случайном процессе было бы 50 на 50… и кроме того не было бы трендов — толстых хвостов…
avatar
ves2010,  Вы путаете случайность и непредсказуемость. Случайность — это невозможность точного прогноза, а непредсказуемость — это независимость прогнозируемой величины от известных на момент совершения прогноза. 
avatar
chizhan, Забавно, но как раз наоборот, в конечном итоге именно Python оказывается самым быстрым языком. Протестировать десяток гипотез на питоне выходит быстрее и проще, чем писать аналогичный код на Си, несмотря на то, что код на Си выполнится быстрее. Скорость разработки кода, в моем случае, гораздо критичнее скорости его выполнения, ведь речь идет об исследовательской работе. Компании в случае необходимости бывает гораздо выгодней докупить вычислительной мощности, чем тратить моё рабочее время на написание кода. Кроме того, Питон де факто стандарт для машинного обучение, а это ведет к определенным последствиям.
В реальных же торгах, особенно если выявленные неэффективности краткосрочны, Питон может быть критично медленным, и вы будете абсолютно правы сказав, что Питон использовать нельзя.


Просто интересно.
На этих машинных моделях автор уже в Форбс?
¯ _ (ツ) _ / ¯, я говорил только об одном наборе прошлых данных — прошлых ценах. 
avatar
Эквити и результаты системы отвратительные. Никто такое не торгует в реале.
avatar
В ценах нет устойчивых закономерностей и сетки начинают «фантазировать» и на выходе  выдают черти что. Можно на одних и тех же входных данных, используя одну и ту же сетку несколько раз, получить разные прогнозы. Но если на вход этой же сетки подать временной ряд, описываемый какой либо формулой, то результат будет превосходный. Стоит только внести во входные данные  какие либо случайные изменения, результаты будут весьма далеки от идеальных. На Пайтоне не пробовал, на R результат негативный.
Прогнозы и реальные цены выглядят примерно так и не важно какими методами они осуществляются. 
avatar
Vladimir Diaditchev, такой же график был на MLP в Statistica.
Принцип получился «Завтра будет то же, что и сегодня»
Врач-бондиатОр, У меня сохранились графики  с  прогнозами, полученные разными методами, на разных акциях. Там и сетки и Аримы и т.п Результаты примерно такие, как на представленном рисунке.  
avatar
chizhan, я так понимания вы никогда не пользовались Python для анализа данных и понятия не имеете что многие библиотеки Python скомпилированы быстрых языках, а в Python весь анализ данных на библиотеках.
avatar
¯ _ (ツ) _ / ¯, По-любому). Но и в исполнении там все быстро если не выходить за пределы data-библиотек. Я когда только знакомился никак не мог понять как юзают очень медленный язык там где надо перемалывать такие объемы данных. Теперь знаю).
avatar
 И только тот, кто уже пробовал применять машинное обучение к рынкам, способен восхититься такими 'скромными' результатами модели.


Пока учусь в данной области, пока простые модели использую, скоро и нейронные сети будут. Что-нить наобучаю интересного, думаю. Но ожидания все больше сдвигаются в сторону реалистичных), что хорошо.
avatar
Replikant_mih, Трейдинг — очень разочаровывающая сфера для машинного обучения, учиться лучше на чём-нибудь другом.
Я во многом согласен с А.Г., поэтому крайне удивлен такими результатами. Настолько удивлен, что приобрел новые кошмары, в которых все модели переобучаются, повсюду лики в данных и «заглядывание в будущее».
К сожалению, у меня нет ни времени, ни сил, чтобы всё аккуратно протестировать и уйти от базового решение к более продвинутой модели, но, если бы сделал всё это, этого и курса бы не было или цена была бы порядка на 2 больше.
К тому же, весь этот подход не столь эффективный для торговли теми инструментами, с которыми сейчас работаю я. Поэтому мне не жалко вам про него рассказать, мне даже интересно, что у вас может получиться.
Чтобы не разочароваться, следует ожидать, что этот курс — это очень простое введение в обучение с подкреплением, а не раздача зарабатывающего торгового агента.
Владислав Кузьменков, Ну я учу ML на другом, а к рынку хочу применить когда уже буду обучен, щас там просто иногда пробую натягивать ML на рынок без особых надежд.
avatar

Владислав Кузьменков, наверное, поэтому платный «околорынок» так не любят. Потому что априорно ожидается, что ничего путного прибыльного никто не расскажет. Одно дело встретиться на бесплатном вебинаре и «просто потрындеть», обменяться мнениями и т.п. Другое дело, когда Автор просит деньги за право послушать свой скучный голос, который ещё и не окупится никогда с высокой вероятностью.

 

Ладно, это всё лирика.

Курс начинается уже завтра надеюсь.
Репозиторий доделали?
Уже можно скачать GYM-окружение и т.д.?


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

 

Кстати, при том, что график эквити отвратителен, он явно построен в программе типа TSLab или велса.

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

Ведь не просто же забили в шарпном коде "В этот день покупаю, в этот день продаю"?..

avatar
очередной инфоцыган...




¯ _ (ツ) _ / ¯, можно подумать у нас есть выбор.
avatar
Eugene Logunov, Из хвоста распределения?) 
avatar
chizhan,  В идеале, если владеешь широким набором инструментов использовать все их по своем у назначению и исходя из специфики. Си быстрый, никто ж не спорит, по скорости, но не времени разработки. Python в части NumPy — тоже вполне быстрый, там тоже все скомпилировано на низкоуровневых быстрых языках, но если вышел за пределы логики NumPy — сразу же получил по лбу низкой скоростью питона. Да, приходится иногда изощряться чтоб не выходить за пределы логики библиотек. Но зато скорость разработки высокая, скорость  исполнения высокая. Си с  Питоном хорошо сочетаются — на Си можно на писать подключаемую библиотеку, например.
avatar
Мне кажется, сверточные сети — это не то что стоит применять на рынке. Имхо нужно смотреть в сторону построения случайных лесов, там вроде как статистика впечатляет.
avatar
Dmitryy, Что надо подавать в качестве пространства признаков чтобы статистика на лесах впечатляла? — Уверен, на приращениях она вас не впечатлит)).
avatar
Replikant_mih, я пока сам озадачен этим вопросом, просто довелось как-то видеть презентацию одного фонда, и там была сравнительная таблица бектестов моделей статистических методов и деревьев, деревья выигрывали. Презентацию не найду…
avatar
Очень похоже, что это системы первого порядка, которые вырабатывают решение по большой выборке за прошлое, и пытаются использовать результат в будущем. Стоит-ли на этом останавливаться, сумневаюсь, возможно действительно результативной будет система второго порядка, которая обучается каждый день по разным ТФ, и использует результат обучения в течении следующего дня. Что-то такое я хотел сделать ещё до популяризации глубокого обучения, в формате автоматического подбора параметров индикаторов каждый день и использования их на следующий. Однако задачка оказалась слишком сложной…
avatar
alpet, дообучаться можно с получением каждой новой порции рыночных данных, никакой технической проблемы, кроме более высокой трудоемкости, я тут не наблюдаю. Но такой процесс, к сожалению, менее устойчив и трудноконтролируем. 
avatar
SergeyJu, Ну да, автоматизировать обучение не проблема, получать максимальные показатели скорее всего можно только в ручную, автоматизировать получится получение хороших показателей. Но чтобы хорошие были тоже приемлемыми это должен быть приличный запас прочности в модели, а как показывает практика, даже просто плюсящую модель не так просто получить.
avatar
Replikant_mih, если «модель» имеет 1-2 параметра, это одно. Но если на каждом такте получения данных заново запускать какую-нибудь сеточку, результат может быть воистину чудесатым.
avatar
SergeyJu, Не, ну должна быть в самом подходе и т.д. заложена устойчивость, т.е. если руками оно бы у тебя обучилось второй раз во что-то нормальное, то можно автоматизировать обучение, если не обучилось бы руками, то автоматизация ничего волшебного, конечно, сама по себе не внесет))
avatar
Replikant_mih,  я о степенях свободы при дообучении. 
avatar
 Кста, это ж TSLab, как к нему сетку прикрутить?) — кубики — нейроны, связи между кубиками — связи между нейронами? И при обучении конструкция начинает эволюционировать)).
avatar
как вариант можно делать ряд более стационарным с помощью фильтров типа высокой волы, все равно с одного ценового ряда далеко не уедешь..
главная доступная аномалия рынка в трендах связанных с распространением информации, но для этого вся эта машин леня не нужна…
Иван Файртрейдов, Хм, любопытная идея, а когда мы ряд сделаем более стационарным и, допустим, это позволить лучше делать прогнозы — потом обратно можно декомпозицию делать? — Ведь нам надо делать прогнозы в изначальной системе координат.
avatar
Replikant_mih, да я попроще тему имел ввиду, начать с того почему рынки не стационарные? потому что… длинный список..
но когда начинается  фукусима, горелкин или еще какой нибудь кипиш, в это достаточно короткий промежуток времени цена становится более стационарной и тогда можно включать молотилку. все это моя фантазия так, что без претензий…

Иван Файртрейдов, практика показывает, что проблема именно в том, что нас никто заранее не предупреждает о начале хорошего тренда. Поэтому молотилка должна быть всегда включена.

 

Вопрос только, чтобы она не слила депозит пока ждет своего счастья.

avatar
Toddler, вы сложные вещи слишком обсуждаете, мы тут со стационарностью разобраться не можем и с тем, какими методами с ней работать. Вот оказалось, вдруг, что стационарные модели для нестационарных процессов дают лучшие результаты… Вона как бывает! 
avatar

теги блога Владислав Кузьменков

....все тэги



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