Блог им. 3Qu

Нейросети в торговых системах. 1.

    • 25 июня 2020, 22:59
    • |
    • 3Qu
  • Еще

Вначале о грустном. Не понимая теорию нейросетей (НС) у вас вряд ли получится построить на ней ТС. Поэтому лучше для начала почитать теорию, например, Хайкин Саймон. «Нейронные сети. Полный курс». Книга уже достаточно старая и в ней нет новомодных веяний, но она дает базовые представления о НС.

И второе, мы будем далее для построения систем использовать пакет scikit-learn для Python. рекомендую ознакомиться. Есть и более продвинутые пакеты, скажем, TensorFlow и др., но их использовать мы не будем, и ограничимся более простым scikit-learn.
Теперь о том, чего здесь не будет. Здесь не будет теории НС, разве эпизодически и оч кратко. Здесь не будет описания пакетов Python, работы с графикой и пр. Обо всем этом вы можете прочесть в интернете, книгах, и документации Python.
В топике мы будем обсуждать только применение НС к ТС и их построению.
Так как тема достаточно велика, в один топик не влезет, сегодня мы займемся самыми общими вопросами. Следующая часть будет недели через две, раньше не получается.

Применением НС в ТС я заинтересовался года три назад. Интерес был достаточно абстрактным, и я эпизодически почитывал в инете сайты, типа, Хабр и прочую популярщину. Я ранее немного сталкивался с НС и МО, и, в общем, ничего нового это мне не дало, разве, посмотрел какие-то простые реально работающие экземплы, что, в общем тоже неплохо.
Потом нашел книгу Хайкина, и месяца три ее читал, поняв наконец, что и как делают нейросети, как это работает и как НС обучаются. Книга замечательная, но как применить это в ТС осталось загадкой.
Стал смотреть в инете, как люди применяют МО к рыночным данным. Подбираются некие предикторы, с помощью них строятся модели, выясняется, что модели ничего не дают, после чего выбираются другие предикторы. И так до бесконечности.
Теперь разберемся — что есть предиктор. Предиктор — это некая предобработка рыночных данных, а по простому, это всего навсего индикатор, пусть даже сложный, но все равно индикатор. Если мы вспомним, что нейрон НС представляет собой сумматор с коэффициентами, типа y = a0x1 + a1x2 +… + anxn, а выход нейрона нелинеен, т.к. на выходе стоит сигмоид или другая нелинейная функция, т.е. выход нейрона Y = Fnl(y), то совокупность таких нейронов вполне может при обучении самостоятельно построить любой даже очень сложный предиктор. Т.е. предикторы, как таковые, не нужны. Можно просто добавить к НС немного нейронов или слоев нейронов, и нейросеть прекрасно самостоятельно справится с построением предикторов.
Так родилась идея подавать на входы НС непосредственно значения ценового ряда.
Скажем, для обработки НС нам нужно n отсчетов истории. Формируем вектор C =[c0,c1,c2,....,cn] отсчетов, берем НС с n входами, и подаем на них наш вектор. Вроде все.
Однако не все Сегодня цена актива 100р, завтра 130р, послезавтра уже 200р. НС обученная на 100р не сможет адекватно реагировать на 130, а тем более на 200р. Это уже другой диапазон значений. Стало быть, не зависимо от цены актива, значения ценового ряда должны всегда находиться в одном диапазоне.
Делаем просто. Пусть c0 — текущая цена актива. Преобразуем наш вектор к виду: xi = (ci — c0)/c0, получим новый вектор X =[x0,x1,x2,.....xn], который мы и будем подавать на входы НС. Это всего навсего нормирование. Теперь все изменения цены лежат в одном диапазоне и считаются относительно текущего значения. Можно все значения нашего вектора умножить на какой либо постоянный коэффициент, чтобы привести его значения к динамическому диапазону нейрона. Вот теперь точно все!
Ан нет, опять не все. Допустим в ценовом ряду появилась «шпилька» — резкий выброс значения. Теперь на протяжение времени n эта шпилька будет попадать на входы нейронов и засвечивать их, примерно аналогично пересвету при фотографировании. С одной стороны, шпильку надо убрать, с другой стороны лучше бы оставить, причем, таким образом, чтобы шпилька лежала в динам диапазоне НС. Имхо, шпильки, да и вообще, выбросы, лучше ограничивать тем же сигмоидом, пропустив через него все компоненты вектора Х.
Вот теперь точно все. Мы знаем что и как подавать на входы НС. Правда, что с этим делать дальше пока неизвестно, и пока мы эти вопросы не решим к НС близко можно не подходить — без толку.

★31
89 комментариев
Не обязательно нелинейная функция. Первые мои нейронки были всецело из линейных нейронов и решали задачу восстановления линейной регрессии на зашумленных детерминированных рядах. С точки зрения взаимосвязи методов МО и мат. подходов — очень полезное упражнение.
avatar
Kot_Begemot, не обязательно. Тогда это будет обучаемый линейный фильтр.)
avatar
3Qu, так и есть. Но если вы напишите, что NN это всего лишь нелинейный фильтр, построенный методом градиентного спуска — сразу же набегут Гуру и расскажут вам, что вы — дурак. 
avatar
Kot_Begemot, я как нибудь это переживу.)
avatar
Kot_Begemot, а в каком смысле фильтр? Что фильтрует?
avatar
ivanovr, шум, побочные компоненты — всё. Почему фильтр? Потому что оставляет только некоторую, определенную часть сигнала (обычно описываемую AR уравнениями вроде скользящей средней). SMA(p), например, известно, что режет стохастические шумы и гармоники с периодом p — всё остальное в полосу пропускания.
avatar
Kot_Begemot, все что в пример привели, это все линейное. Нейросеть сильно нелинейная. Сравнивать нельзя. Если уж проводить параллели, то нелинейности обычно расширяют спектр сигнала (если уж про полосу пропускания начали).
avatar
ivanovr, Вы должно быть шутите) 
avatar
Это так не работает от слова совсем, но вы продолжайте )))
Пафос Респектыч, никто не ограничен в подходах к снаряду. Я показываю только один из них, не более.
Кстати, во многих реальных системах (не ТС) это именно так прекрасно работает.
avatar
3Qu, вы просто кладёте болт на инжиниринг фич. Это может прокатывать, если есть произвольное неограниченное количество тренировочных данных, но на рынке такой халявы нет к сож.
Пафос Респектыч, 2-3 слоя прекрасно справятся с построением большинства ваших инжиниринг фич, и достаточно сложных, непосредственно при обучении. Разумеется не без исключений. Если вы хотите использовать какие либо интегральные преобразования, тогда не справится. А всякие линейные комбинации, типа ахi+вxj+… могут понадобиться только в случае, если вы четко знаете, что именно это необходимо.
avatar

3Qu, конечно справятся, если обучить данных хватит. Только засада в том что нет столько данных, это фоток с котами можно нащёлкать сколько угодно, а на рынке данных только столько сколько есть, а относительно недавних и актуальных и того меньше.

Большая сетка многослойная просто радостно и легко это всё запомнит, а небольшая и немногослойная тоже попытается запомнить, только плохо ))

Пафос Респектыч, 
это фоток с котами можно нащёлкать сколько угодно, а на рынке данных только столько сколько есть,
Да, то так.
Про котов улыбнуло.))
У меня немного другой подход. Я не учу НС всякой ерунде, и потом не заставляю ее с ней работать. Т.е., предобработка все таки есть.) В итоге, либо НС можно упростить, либо научить большему за счет исключения из обучения и последующей работы всякой ахинеи.
avatar
3Qu, а вы пробовали подсчитать нарастание требуемых мощностей ну или нарастание времени обучения с увеличением кол-ва уровней сетки? Давно уже есть работы по прогностической ценности нс в зависимости от кол-ва уровней и менее 7 левелов считается слабо эффективными сетями, ну вот посчитайте затраты на обучение 7-12 уровневой сеточки на выбор денежные ( при условии что надо быстро а это аренда мин дата центра) или временные если денажек нет и учить скотинку придется на паре башенок где то лет 20) все остальное это как тетрис на 486ом по сравнению вр играми.
avatar
Spooke67, 
а вы пробовали подсчитать...
Нет, не пробовал. В этом нет нужды.
Если НС решает конкретные задачи, то переусложнять ее нет необходимости. А подобные задачи в составе систем как раз хорошо решаются НС. Это их классическое применение.
avatar
3Qu, если даже у вас нс просто статистику собирать будет все равно встанет вопрос о качестве собранной даты, сразу отвечу тут следующему писателю насчет 100 слоев, как, это понятно, непонятно зачем ) если отрезок лежащий горизонтально переместить в вертикальную плоскость он своих свойств не изменит)
avatar
Spooke67, я использую сети глубиной около 100 слоев. Учатся они вполне за обозримое время. 
avatar
Михаил, даже федеральные сетки производя сбор и анализ метаданных по таким вещам как прогностическое моделирование предпочтений клиентов используют сети из 16-22 уровней обученных на мощностях дата центров гугл или яндекс за несколько млн дол арендной платы в течение пары месяцев, но видимо вы великий и ужасный волшебник изумрудного города, правда возникает вопрос почему вы до сих пор не богаче маска и бафета вместе взятых))
avatar
Spooke67, не говорите чушь:

ResNet50 — очень простая сеть по сегодняшним меркам, учится дома на GTX1080 и состоит из 50 слоев.

Учат в облаке, потому-что это часто дешевле арендовать компьютер под обучение, которое длится не так долго, чем покупать и постоянно держать свой комп.

Не стоит аренда компьютера миллионов долларов в месяц. Зайдите на Яндекс облако и посмотрите, сколько стоит аренда компьютера с Tesla v100 — 130 тыс рублей в месяц. 

Но и последний важный момент, что количество слоев очень мало говорит, об времени обучения — кроме количества слоев играет роль архитектура и количество параметров и обучающих примеров. У меня сети глубокие, но достаточно легковесные до 1 млн параметров. В том же ResNet50 25 млн параметров.
avatar
Михаил, вы просто играете терминами видимо, хотя в первом коменте я писал о прогностичекой ценности, колхоз дело добровольное в итоге, можете и дальше махать вашими ниточками называя их модным словом и наверное они даже будут иметь на это право) правильно говорят не стоит тешить чужое самолюбие за свой счет.
avatar
Spooke67, товарищ неисправим. У нас уже с ним была дискуссия. Похоже впрок она не пошла. Ржунимогу как говорится.
avatar
Spooke67, я вам не возражал, про прогностическую точность.

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

Будет ли из этого толк — сильно зависит от обучающего, как и при использовании любого другого метода. Нейронные сети совсем не панацея и не гарантирует толкового результата.
avatar
Михаил, ткните пальцем пжлст где написано что это сложно? дорого, затратно и неокупаемо да, и прошу вас перестаньте тыкать мне вашей линейкой для уроков информатики,
avatar
Spooke67, вы много чего говорили, том числе «сети из 16-22 уровней обученных на мощностях дата центров гугл или яндекс за несколько млн дол арендной платы в течение пары месяцев» — хотя аренда мощного GPU сервера в реальности обходится в 130 тыс в месяц, а обучение сети такой глубины на нем может потребовать от нескольких минут до пару суток времени в зависимости от сложности. 
avatar
Михаил, «досадно баобабом быть» © Семеныч
avatar
Михаил, я правильно вас понимаю ничего не путаю? вы говорите что можете без проблем обучить 22 уровневую сетку для Х5 Retail Group на одной машине за пару дней и за 130 тыс рублей до эффективной прогностической ценности скажем хотя бы 52%? серьезно? а жопа не треснет вместе с харей?
avatar
Spooke67, вы смешиваете два вопроса — создание рабочей модели для конкретной предметной области и обучение.

Создать не готов, так как не эксперт в ретейле. Обучить готов, если это не NLP на трансформерах.

Вот вам пример от очень известных людей в этой области  
www.fast.ai/2018/08/10/fastai-diu-imagenet/

ResNet 50 учится за 18 минут на 16 серверах с 8 Теслами за 40 долларов. 

Но на самом деле учить с нуля многие сетки не нужно, за счет transfer learning можно обучить ResNet 50 под свою задачу за несколько минут на консьюмерском GPU.
avatar
Михаил, т.е. вот такую последовательность по уровням 2........1,415461031044954789001553027745e+9864 (15 уровень всего) вы обучите за 40 долларов и 18 минут) точно волшебник ) завтра очередь из ритейла под дверями подьезда) да еще если до уровня предиктора хоть чуть превышающий 50% онир еще и в жопу целовать будут с утра до вечера))  ладно понял голова — яйцо)
avatar
Интересная тема. Ждём продолжения.
avatar

>>«Так родилась идея подавать на входы НС непосредственно значения ценового ряда.»

 

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

 

Не знаю пока как нейросети (подозреваю, что так же), но другие алгоритмы ML вполне конкретно реагируют на качество входящего признакового пространства, качество в смысле насколько признаки сами по себе имеют предиктивную силу. Вообще предобработка данных и генерация более интересного признакового пространства — не рокет-саенс, но творческий процесс, а на результат способно повлиять драматически! Вот думаю, что с нейросетями все точно так же будет.

avatar
Replikant_mih, «куйня на входе — куйня на выходе», да.
Replikant_mih, в общем, так оно и есть, в общем случае.
avatar
3Qu, Но идея, что бездушная машина сама за тебя все сделает и заработает хулиард, конечно, будоражит)).
avatar
Replikant_mih, вообще-то, у меня нет такой идеи.) Но многое НС действительно может сделать, если ты сам знаешь что, как и для чего.
avatar
Replikant_mih, прослушайте классический курс по DL Andrew Ng — он на этом вопросе останавливается. Вся сила DL в том, что начиная с какого-то объема данных не нужен фичеинжиниринг. Нет его в современно распозновании образов и NLP. Но данных нужно много — задачи компьютерно зрения обучаются примерно на 1 млн примеров, а для NLP часто ближе к 1 млрд. Если данных нет, то нет большого смысла и в DL обычно
avatar
Михаил, Понял. А вам приходилось нейросети а трейдинге применять/пробовать?
avatar
Replikant_mih, применяю. Важная идея — нужно искать больше обучающих примеров. По моему опыту ML и DL начинает заводиться от 100 тыс обучающих примеров. Обычно сложно найти достаточно обучающих примеров в рамках одного инструмента. Я стараюсь создать единую модель для большого числа инструментов — в результате имеется больше обучающих примеров и, есть надежда, что создается модель с большей обобщающей способностью.
avatar
Михаил, Ясн. Речь о числе объектов или о положительном классе? Потому что минуток уже прилично, а если стаканов и и.д. и того больше. Идея слеплять у меня тоже есть, тем более многие закономерности многие работают на широком пуле инструментов.
avatar
Replikant_mih, я так понимаю, вы хотите решать задачу классификации. Я больше через задачу регрессии работаю, поэтому не подскажу. И сам работаю на дневках, поэтому мой опыт не совсем может быть релевантен.

Могу высказать только чисто теоретические соображения — доходность скейлится пропорционально времени, а СКО, как корень времени, поэтому на более коротких интервалах соотношение шум к сигналу хуже примерно, как корень времени. Из этого я бы предположил, что данных нужно больше, чтобы чему-то научиться на минутках. Грубо если у меня завелось на 100 тыс, то тут бы я ожидал бы результата в районе 2 млн примеров.

Про долю положительных примеров ничего из общих соображений в голову не лезет, кроме обще известного, что сильный дисбаланс классов вызывает кучу проблем:)
avatar

Михаил, А, ну вообще регрессия в общем смысле видится уместней, конечно, просто у меня с регрессией не получилось вменяемых результатов, а с классификацией что-то есть. Правда я пока простые методы ML использую. Модели у меня на вскидку более менее одинаково хорошо обучаются на минутках и на дневках, видимо из-за описанного вами критерия про объем данных, но на маленьких TF кроме, как вы сказали, более высокой доли шума ещё более высокая доля издержек на трейд в средней сделке, поэтому там идти против ветра сложнее при прочих равных — ветер сильнее)).

 

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

avatar
Replikant_mih, могу подсказать идею, как сблизить регрессию и классификацию. У сети может быть несколько выходов. Один может прогнозировать ожидаемое значение, а второй, степень его неопределенности (например, ско). Как следствие вы можете посчитать вероятность, что значение индикатора будет выше 0, или например транзакционных издержек (по сути из регрессии вы получаете классификацию или некий механизм более содержательных предположений относительно точности прогноза). 
Подсмотреть реализацию можно здесь:

arxiv.org/abs/1906.05264
gluon-ts.mxnet.io

Но в любом случае сети не панацея, если работают более простые методы, то смысла лезть в сети нет. Область быстро развивается и надо прикладывать много усилий, чтобы следить за последними достижениями. 
avatar
Михаил, Спасибо, поизучаю это направление.
avatar
Михаил, по-моему для ваших чисто статистических соображений нейронные сети не совсем годятся. Проще обойтись чем-то другим, более простым. 
avatar
Kot_Begemot, мне кажется, соображение о большей сложности прогнозирования на коротком фрейме не привязано к методу прогнозирования и носит достаточно общий характер. А использовать сети или нет, каждый сам выбирает — всех проблем магическим способом они не решат. Это еще один инструмент, инструмент сложный и требующий специальных знаний. Если удается решать задачу более простым способом и все устраивает, то лезть в сети смысла нет.
avatar
Михаил, да, не привязано, но если мы считаем данные сильно зашумленными, то применимы ли к ним (сырым, зашумленным данным) сети вообще? С их-то нелинейным усилителем шума?
avatar
Kot_Begemot, я не понимаю почему не применимы. Сети очень часто применяют к прогнозированию вероятностных процессов (собственно ссылка выше на пример вероятностного прогнозирования с помощью сетей). Почти все функции потерь, используемые для обучения, имеют вероятностную интерпретацию — в большинстве своем эта та или иная функция правдоподобия. 

Тут скорее вопрос не принципиальной применимости, а реальных преимуществах и недостатках  по сравнению с какими-то другими методами в конкретных условиях.

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

Есть и преимущества — основное, что отсутсвует потребность в фичеинжиниринге. 

Тут каждый сравнивает и выбирает. 
avatar
Михаил, а как неполносвязные сети собираются без фичинжиниринга. Random Subspace? 
avatar
Kot_Begemot, не очень понял постановку вопроса.

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

В компьютерном зрении ключевая архитектура ResNet (есть другие варианты, но они по сути какие-то мелкие твики по верх идей ResNet). Тут можно глянуть достаточно подробный разбор, как устроен ResNet 
towardsdatascience.com/an-overview-of-resnet-and-its-variants-5281e2f56035

В NLP — ключевые архитектуры основаны на сетях внимания/трансформерах. 
medium.com/inside-machine-learning/what-is-a-transformer-d07dd1fbec04
jalammar.github.io/illustrated-transformer/
avatar
Михаил, связь соседних точек? Типа свертки этим… ядром? ( Я просто не в теме уже очень давно). И так свертка за сверткой до изображения размером 1X1, принимающим бинарное значение соответствующее изображенному объекту?
avatar
Kot_Begemot, в изображениях обычно первый слой какая-нибудь большая свертка типа 7х7 (основная ее цель снизить размерность, чтобы понизить вычислительную сложность). Потом идет несколько десятков — сотня слоев легких сверток 3х3. Так как делается паддинг эти сверки не меняют размер тензора. Между ними вставляются несколько пулингов 2х2 — которые собственно понижают размерность в два раза. Обычно около пулинга производят увеличение числа каналов — если на входе сети три  цветных канала, то ближе к выходу их может быть тысяча и более. 
В конце стоит глобальный пулинг, который свертывает тензор до размера 1х1хчисло каналов на выходе (грубо тысяча). После которого стоит софтмакс слой, который собственно выдает решение сети. Стандартный сет, на котором сейчас учат ImageNet содержит 1000 классов предметов. Соответсвенно должно быть 1000 выходов с вероятностью принадлежности к классу.

То есть по мере погружения в глубь постепенно уменьшаются физические размеры тензора в итоге до 1х1, но растет число каналов с 3 до сотен или тысяч. 

Это грубо — в ResNet присутствуют скип-соеденения для лучшего протекания градиентов сквозь десятки слоев и вместо сверток 3х3 используются трехслойные миниблоки из сверток 1х1+3х3+1х1 и везде используется мини-батч нормализация.
avatar
Какова Ваша доходность при использовании НС?
avatar
trader_95, я ее не использую на реале. И здесь мы таковую строить не планируем. Тема не о Граалях.
avatar
было время когда НС работали, сейчас рынки перестроились и нивелировали преимущество
avatar
Не мое дело конечно и тарелка тоже, но будущее за квантовыми системами и точка.
А по статье так и не понял как применять сие ноу-хау в трейдинге. Это сколько ж ценовых данных нужно скормить, чтобы хоть что-то похожее на реальную торговлю получилось на выходе? Или можно на генератору случайного блуждания научить? 

Причем по факту опять пляшем от цены, жуя и пережевывая её вдоль и поперек, пытаясь найти… что? А, точно, Грааль.
avatar
Что 10-15 лет назад читал что счас — ожидания от нейросетей не изменились. Делаем сеть пораскидистее, кидаем туда историю поглубже, да всяких околоценовых рядов, вплоть до положения планет и гороскопов авось найдет закономерности какие нибудь )
avatar
Хахаха!!!
avatar
Я, конечно, не специалист в нейросетях, но мнение свое (как в таких случаях полагается) имею… Насколько я понимаю, принцип работы нейросетей таков: входным данным, путем перебора, присваиваются оптимальные «веса», чтобы в итоге получился искомый результат (который при тренировке сети известен заранее). То есть, другими словами, мы имеем оптимизатор торговой системы, без известных правил, с неизвестным (но огромным) количеством оптимизируемых элементов. В результате мы получаем до нельзя заоптимизированную торговую систему, которая идеально работает на данных, использованных при обучении сети, но очень плохо — с новыми данными. 
avatar
Михаил К., +1
была у меня дипломная работа — тоже нейросеть обучал, простую в 2 слоя всего. Обучал по результатам мат.модели одной. Скормил ей пару сотен расчетов с небольшим шагом изменений входных данных. Модель стала устойчиво показывать верный результат: такой же как выдавала сама мат.модель. Но как только входные результаты сущ. изменились, нейросеть стала выдавать ерунду сильно отличную от результата мат.модели эталона. Итого как в примере с котятами модель говорит что это «Котенок» видя белую рамку монитора, т.к. всех котят до этого видела на рабочих столах белых мониторов и обучалась на этом.
Имхо. Загоняя цену в качестве исходной информации мы заранее обречены на провал, т.к. цена это всегда следствие — результат а НС нужны причины для расчета связи между вход-выход.
«Не понимая теорию нейросетей (НС) у вас вряд ли получится построить на ней ТС»
НУ зачем вы это делаете?
Судя по тексту вы ооочень далеки от этого понимания. Вы пишете чтобы вам указали путь для дальнейшего движения?
В качестве топика — как пустить народ по ложному следу — он прекрасен.
avatar
Ынвестор, какой след не ложный?
avatar
cyb650, автомагистралей нет нигде. Есть заросшие тропинки в джунглях. Готов делиться мачете и необходимыми запасами с теми кто готов продираться вместе по этим джунглям.
avatar
Ынвестор, хм, а у меня есть карта )
Пафос Респектыч, а чё вам карта, если неизвестно где находитесь.)) Джунгли ведь.  А куда идём известно?
avatar
Пафос Респектыч, напишу в личку)
avatar
 Тема сисек не раскрыта. В итоге — есть прибыльные примеры или нет? Какая-либо сеть уже купила себе яхту? 
avatar
Пробовал когда-то играться в сетью в программе Statistica.
На истории результаты были очень неплохие; в реале принцип прогнозирования — завтра будет то же что сегодня ))
На тренде такой подход работает, на флэте жестко сливает...

Врач-бондиатОр, ага, на тренде все что угодно работает: ТА, мометум, скользящие средние.
Основной принцип нейросети это из большого количества маленьких деталек (элементарных базовых функций нейрона) собрать большую и сложную штуку (непонятную функцию изменения цены)
Что то типа как в 3д графике из полигонов треугольников строится любая фигура
avatar
Вообще есть такая интересная книга про ML от одного известного кванта https://www.amazon.co.uk/gp/product/1916081606/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 (если не читали, рекомендую ознакомиться).

Так вот, не возможно сделать ТС чисто на сетях. Необходимо применять смешанные подходы.

Никто же не учил самолеты летать нейронными сетями? А металлы смешивать, чтобы искать оптимальную прочность и гибкость? Ракеты запускать? Это всё уже давно описано формулами, и эти формулы работают, так надежно как молоток и гвозди. И они на 100% применимы на финансовых рынках.
avatar
Dmitryy, справедливости ради F-117A именно что учили летать нейронными сетями, потому что без их помощи человек-пилот стабильно пилотировать этот многоугольник был неспособен )
Пафос Респектыч
«низкополигональным» рубленым он был потому что мощностей тогдашних компов не хватало на нормальный расчет поверхностей
?t=328
Александр non, да ладно вы сами-то в это верите? Низкополигональным рубленым он был потому что приоритетная задача была сделать его малозаметным, а потом то что получилось уже учили летать.

В любом случае, учили летать его с помощью нейросетки, и таки да, для этого даже оказались не нужны какие-то очень мощные компы, как мы видим и тогдашних хватило.
Пафос Респектыч, учили то на симуляторах, а чтобы эти симуляторы напоминали реальный мир, использовали те самые формулы.
avatar
Dmitryy, ага, симулятор называется аэродинамическая труба )))
Пафос Респектыч, это не вопрос веры, это факт, посмотрите видео. А по поводу мощности вы просто забыли что могли компы того времени. Я помню на ночь запускал просчет коэффициентов излучения шахты печи на ночь оставляя расчет на первом пне, потому что один прогон занимал 10 часов
Александр non, вы уже о чём-то о своём ))
Denis, спасибо, добавил себе. Но в той, что я скинул, раскрывается именно причастность к финансовым рынкам.
avatar
Хотелось бы все же уточнить, нейронные сети или машинное обучение.
ибо тут мне кажется допущена опечатка
И второе, мы будем далее для построения систем использовать пакет scikit-learn для Python.
Данный пакет только ML реализует. 
avatar
Denis, ну там есть вроде простейший персептрон. Но конечно для нормальных сетей никто scikit-learn не использует.
avatar
Denis, в нем есть простые полносвязный сети, хотя в реальных задачах это вряд ли применимо:

scikit-learn.org/stable/modules/classes.html#module-sklearn.neural_network
avatar
Михаил, Ынвестор, И то правда, как то я это упустил. Спасибо за информацию.
avatar
Мой опыт применения НС для прогнозирования цены отрицательный. В лучшем случае в результате получается  кривуля, напоминающая мувинг.  На вход можно подавать цену, доходности, ОИ, объемы, любые производные от этих величин. Результат не впечатляет. Хотя, если во временном ряде  есть закономерности, то прогнозы таких временных рядов будут впечатляющими.
Вот простой пример: предположим, есть временной ряд ts=(1,4,7,2,5,8,3,6,9,4,7,10,5,8,11,6,9) Обучим НС на кусочке этой последовательности  с 1 по 7 член ряда.  Потом используем  другую часть этой последовательности с 8 по 14 член, в качестве теста.




На графике показаны: ts – временной ряд.
P1 — single-step predictions, P2 — multi-step predictions, горизонт прогнозов 7
Выглядит красиво, а если продолжить с ценовым рядом, то НС анализирует ценовой ряд, строит какую- то модель, но для другого участка цены эта модель не будет  подходить, там совершенно другая модель будет. В результате предсказания не сответствуют реальности.  Правильно замечено: мусор на входе, мусор на выходе.
Vladimir Diaditchev, Это вполне нормальная ситуация, если распределение в данных поменяется вы ничего и не получите. Другое дело что вы ищите в этих данных.
Если я правильно помню, вроде бы Михаил использует сети для долгосрочных прогнозов и отбора наилучших кандидатов. 
Опять же, можно не только предсказывать будущую цену, можно кластерезировать или находить паттерны. Стоит так же покопать в обучение с подкреплением, но во всем этом как не крути мы всегда зависим от данных.
avatar
С получением разнообразных данных — проблема, особенно это касается РФ. В забугорных источниках больше интересного.    Поэтому строить глубокие нейросети возможно, но нужных данных мало. Либо надо заморачиваться с выкачиванием из интернета огромного количества мусора и из него фильтровать крохи нужных данных. И не факт, что это серьезно улучшит прогнозы.
 
Vladimir Diaditchev, Если вы о котировках, то к буржуйским рынкам их полно, дневные в свободном доступе имеются. Кроме того всякие рейтинги аналитиков, сантименты и тд… тоже есть. Взгляните например на квантопиан. Если же нужны тиковые данные, то их можно купить :) стоят денег, но если уж серьезно этим заниматься, то можно и инвестировать пару тыщ :). Русский рынок конечно мал… тут уж в мировом масштабе надо смотреть ). 
avatar
С котировками проблем нет, я могу запустить НС или любую другую штуковину в реал тайм, хоть с биржи РФ, хоть  с американского рынка. А вот, например, данные об открытых позициях  МосБиржи по физ и юр лицам доступны, но их формат неудобен, надо городить кучу строк кода, чтобы превратить в то что надо и так практически с большинством данных.
 

теги блога 3Qu

....все тэги



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