Блог им. Nikitka

Нейросети и рынок

Упростим  тему  по максимуму.
Возьмем  данные,  10 входных точек. Неважно чего, неважно каких.
Возьмем  1  нейрон, который  видит эти 10 точек,  а  значит  у него есть 10 весов  которые  нужно найти.
Процесс нахождения  весов и есть обучение.

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

И это не  работает потому  что:

1.  Когда мы  подаем нестационарные  данные,  ответы  так же будут нестационарны, какую бы математику  мы  не  применили. Не существует математики корректно описывающей  нестационарные  процессы.  Сети инструмент стационарный!!!!!  Это означает что необходимо подавать стационарные  данные  на вход. Самый  яркий  пример синусоида,  идеал стационарности и по амплитуде, и по частоте.
2. Метод обучения  на  примерах,  применять нельзя. Потому что для  любого набора  данных невозможно разметить данные 100% правильно. Потому  что у вас в реальном рынке есть куча  факторов задержка, скорость расчетов, скорость выставления  и получения  данных, точность этих данных, ликвидность,  набрал позу или нет,  и в  каком объеме и  тд и тп.
3. Таким образом применение сетей реально серьезная  софтовая  задача, придется  разработать очень серьезный  комплекс, внутри которого будет зашита сеть для обучения,  и отдельный  режим этого софта для  тестирования  полученных результатов.

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

И сами сети здесь в общем то вторичны, по сравнению  задачей  по разработке всего комплекса софта в  целом.

Вам потребуется:
1. Данные  в виде ордерлога  из которых вы будете  нарезать модели данных для сети.
2. Видеокарта с CUDA + ваш супер софт.
3. Крайне необычно мыслящий мозг, который будет способен решать такую исследовательскую задачу.

★10
82 комментария
Куда-кудой, коли сил невпроворот...
Ордерлог, куда, это все технические моменты. Технические моменты легко преодолеет более-менее подкованный ремесленник. Тем более, что не всегда нужно лезть так глубоко. В конце-концов, емкие системы по необходимомти медленные. 
А вот с мозгами и с нестационарностью ценовых рядов Вы все правильно отметили. Тут уже не только трясти, тут еще и думать придется. 
avatar
SergeyJu, в качественное исполнение на тестовых данных без ордерлога не верю.  Дикая  погрешность все  убьет.  Сам юзаю ордерлоги уже 6 лет.

Емкие, да медленные,  но там и доходность 20 годовых. Да  для  таких никакие сети и не нужны
avatar
Алексей Никитин, если не лезть в ХФТ (а я и не пытаюсь), то ордерлог легко можно сжать без особой потери информации, скажем, до средней частоты взятия отсчетов 1 раз в минуту. А это уже не слишком много.  Но и в этом случае, я уверен, что из дипленинга можно извлечь пользу. Другое дело, что тут нужна свежая постановка задачи, а не чистая мощь, техническая или вычислительная. 
avatar
SergeyJu, я в своем проекте  беру  бид и офер, чтобы можно было хоть как  то исполнится поточнее. Раз в минуту  очень плохая точность, на  высокой волатильности  беда.
avatar
Алексей Никитин, если работать внутри спреда, то да, беда. Если же предполагать изначально, что в среднем на сделке (купил-продал) спред отдашь, то бид-аск дает достаточно инфы для исполнителя. А вот для анализа данных этой инфы может и не хватить, но не из-за медленного квантования, а из-за того что движение внутри не отражено. 
Теперь второе, я ведь не о минутных свечках написал, а о средней частоте квантования. У нас тут теорема Котельникова не при делах из-за нестационарности. Квантовать можно по уровням, например, тогда при резком движении отсчеты будут более частыми, а на спокойном рынке — редкими. 
avatar
SergeyJu, Тут я  с  вами согласен, сам люблю квантовать не  по времени.
avatar
SergeyJu, На мой взгляд ХТФ сейчас это  быстрота торговли. Я думаю ХТФ сейчас крайне  актуальная тема  при наборе объема.  Грубо говоря торговля раз в  квартал, но дикая  куча инструментов в  портфеле, и все  нужно взять очень правильно,  чтобы портфель не перекосило. Вот таким я вижу сегодняшнее ХТФ.
Алго это в первую очередь набор поз. Здесь важны  максимальная  надежность и  точность.  По 1 контракту за  день легко можно позу в в мильен контрактов набрать, Никто и не  заметит.
Вот такое оно современное  ХТФ
avatar
Алексей Никитин, хороший исполнительный механизм, имхо, можно и нужно разрабатывать отдельно от разработки емких систем. Чтобы не мешать в кучу дикие внутрисекундные объемы ордеров, со скрытыми закономерностями, имеющими длительность от нескольких часов до месяцев и даже лет.
avatar
SergeyJu, это уже архитектурные  изыски -))))
avatar
Алексей Никитин, просто декомпозиция сложной задачи. 
avatar
Алексей Никитин, а где Вы берете ордерлоги, у Мосбиржи покупаете, от QScalp берете, или сами для себя пишете?
avatar
tranquility, прямой коннект FIX  FAST  PLAZA  TWIME
Сам собираю все доступные рынки.
Весь софт свой


smart-lab.ru/blog/335782.php

smart-lab.ru/blog/310157.php

avatar
Алексей Никитин, это похоже серьезный проект, сам подобным занимаюсь, примерно представляю масштаб… А вопрос с объемом данных ордерлога как решили? По принципу что в qsh используется — (u)leb128 кодирование, сохранение только инкрементов и последующее zip-архивирование, или тоже как-то по-своему сделали? Если не стали использовать совместимый с qscalp формат, то по какой причине?
avatar
tranquility, знать не  знаю про  qscalp, ни разу его не видел, и  задачу  посмотреть не ставил. Фаст декодер собственный, без известных опенсорс библиотек.  Все свое на с++. Размер логов  дикий -))

В боевом режиме с 2012 года.
avatar
Алексей Никитин, респект за труды, конечно… Если самому такое делать, без команды, шизануться можно, наверное. Я пока не дошел до такой стадии, но вполне ощущаю что она есть)) А вопрос как раз про дикий размер логов был. Я вот знаю, что день торгов по фьючу ртс в формате .csv от Мосбиржи в урезанном виде (только лучшие котировки и сделки) занимает в районе 100 Мб, сложно себе представить сколько тогда занимает полный лог за день. А вот полный ордерлог за тот же день в формате qsh занимает вего 20 Мб, а в заархивированном виде и того в 2 раза меньше. Я вот в текстовом файле сохранял данные по сделкам и стакану, но позже пришел к выводу, что в этом плане qsh заметно эффективнее и все же имеет смысл перейти на нечто подобное.
avatar
все гораздо проще… у тя промеж ушей сеть с 12ярдами нейронов… поэтому гораздо проще научиться самому нежели дрессировать нейросет на компе
avatar
ves2010, с этой сеткой ваще беда она не обучаема в принципе))
avatar
Spooke67, у кого как… имхо ее надо мотивировать правильно…
avatar
Spooke67, применительно к рынку — эффективнее этой сетки нет.  Все, что что тут понаписал топикстартер и что обычно запихивают в «книжки про трейдинг» — абсолютнейший мусор по сравнению с необычно мыслящим мозгом.
avatar
спасибо, понял что лучше мне в это не лезть.. 

avatar
в итоге всегда упрешься сначала в недостаточность кол-ва уровней для достижения максимального качества исходящего прогноза, а при наращивании уровней в мощность машины с выбором или снижать качество или затрачивать несколько лет на обучение что по итогу так же убивает саму идею, ну и как вариант заплатить пару сотен тыс евро за мощности дата центра при неоднозначном результате) найди инфу про сетки для сетевого ритейла по предпочтениям покупателей,  историю создания, тестирования и эксплуатации, там помнится что то вменяемое у них на выходе появилось после повышения до 7-8 уровней, а 75% точности получили только при 9 -11.
avatar
Все описанное относится к случаю с необученной сеткой в голове. Если же человек четко понимает, что, где и при каких условиях нужно искать, то задача упрощается на много порядков.
avatar
старый трейдер, это вряд ли) если ты понимаешь четко тогда зачем тебе нейросеть?) пиши сразу алго и пускай в бой) сетка то и нужна для постоянного поиска новых идей а не для трейдинга как такового.
avatar
Spooke67, поскольку ситуации почти никогда не повторяются в точности (иначе многие находили бы), нужен какой-то метод их сопоставления с эталоном и коррекции самого эталона. Сетки вполне годятся и даже выигрывают в гибкости.
avatar
старый трейдер, я с вами и не спорю о годности сеток) я говорю о бессмысленности создания и использования низкоуровневых сетей и практической недоступности для простого человека высокоуровневых.
avatar
Spooke67, даже сетки низкого уровня весьма эффективны, если «тыкать в правильные места». Eй-богу.
avatar
«применение сетей реально серьезная  софтовая  задача, придется  разработать очень серьезный  комплекс, внутри которого будет зашита сеть для обучения,  и отдельный  режим этого софта для  тестирования  полученных результатов»

что мешает использовать готовые комплексы? заточенные под определенные задачи, в том числе касаемо рынка?
avatar
aimaster, да ничто не мешает, только думать надо, а люди этого очень не любят делать. 
avatar
aimaster, готовых комплексов нет, есть готовые  сетевые библиотеки типа TensorFlow. Но вы должны  к ним еще кучу софта  своего добавить. чтобы все вместе работало
avatar
Алексей Никитин, нет или не может существовать? разница большая. в первом случае — это вопрос времени.
avatar
aimaster, смотря что считать комплексом. Готовая библитека для сетевых расчетов есть, и использовать можно. Умника, который для всех желающих сделает содержательный комплекс, который будет интеллектуальной связкой между рыночными данными и библиотеками, нет и не будет. Зачем отдавать ноухау рынку?
avatar
aimaster, Сетевые  пакеты известны  https://developer.nvidia.com/deep-learning-frameworks

Ну  а применить их к  рынку,  вопрос времени, опыта, и смекалки.
avatar
А чего значит нестационарные данные?
avatar
Андрей Казанов, они меняются со временем непредсказуемым образом. 
avatar
SergeyJu, Кто меняется? На вход же нейросети подаются формализованные значение, в большинстве случаем 0 и 1. То есть таким значениями могут быть, например, угол касательной > 45% = 0 1, меньше = 0 0, в отрицательную сторону 1 0 и 1 1. Что именно меняется? Нейросеть просто сравнивает входной сигнал с эталонами, если можно так выразится.
avatar
Андрей Казанов, характер движения цен  меняется, причем очень сильно. Стабильные правила могут один год нести прибыль, а другой — обнулить счет. 
avatar
SergeyJu, Дак применительно к трейдингу нейросеть не саму же цену сравнивает, а параметры после некоторой обработки. Для этого можно и не нейросеть использовать, есть куча алгоритмов кластеризации. Можно заложить устаревание информации, кто мешает это сделать? Переобучай сеть, например, с начала тренда на Д1.
avatar
Андрей Казанов, пожалуйста, пожалуйста, делайте, как Вам нравится.
avatar
Андрей Казанов, простым  языком непостоянные
1Непостоянные  по амплитуде колебаний.
2 По частоте/периоду колебаний.
 и тд  и тп.

Как  только мы  находим  постоянство хотя бы  1  параметра,  уже можно спокойно торговать.


Классический арбитраж  построен на  постоянстве амплитуты.  Точнее  на возврате  амплитуды к известному  значению
avatar
Алексей Никитин, Я вообще не понимаю тогда причем тут нейросети? Изображение тоже не постоянно, но нейросети распознают лица же?!
avatar
Андрей Казанов, лица очень даже стационарны. Хотя  как  пример нестационарного лица это  младенец взрослый и старик ( человек один, а  лица разные) Но если взять ваше лицо сегодня и год назад, все  будет крайне стационарно. 
avatar
Алексей Никитин, ну дак надо распознавать лица и вполоборота и с бородой и с другой прической.
avatar
1. Нестационарные данные можно сделать стационарными дифференцированием 
2. Разметить можно достаточно точно. ML не конечный результат — это инструмент поиска закономерностей. Далее можно протестировать, насколько неточная разметка и всякие технические моменты влияют на результат. 
3. ML принципиально не отличается от любого другого способа анализа рынка — везде путь от некой идеи до ее реализации достаточно сложный.

Плюс ML — в том, что в нем изначально решается задача избежать переподгонки по возможности. 

 
avatar
Михаил, не все так просто. Разжевывать не хочу.
avatar
Михаил, тема очень емкая, тут можно сразу  устраивать конференцию на  пару суток.
avatar
 Классический арбитраж — это торговля одним активом на разных уровнях, чтобы собирать разницу цен либо на разных торговых точках, либо на разных категориях торговцев. 
А то, что Вы написали — статарбитраж, то есть, арбитраж частичный. 
avatar
В чём суть данного опуса? У меня боты на нейросетях торгуют, более того, я им передал большую часть своего торгового капитала, т.к. они торгуют круче того, что я умею руками. А из пунктов (Вам потребуется) я разве что выделил бы то, что разработчик должен обладать комбинированными знаниями биржа+программирование, что само по себе встречается крайне редко.
avatar
Сергей Андреев, буду очень рад посмотреть на вашу  эквити
avatar
Алексей Никитин, я не вываливаю такие вещи куда попало. Для примера могу показать расторговку боковика по одному торговому инструменту за последние полгода (таких инструментов у меня торгуется более 20). 



avatar
Сергей Андреев, картинка очень красивая. Срок маленький.
avatar
Сергей Андреев, шикарный результат! Вы большой молодец!
avatar
Сергей Андреев, хороший результат. Не подскажите, что вы использовали в качестве классов или целевой переменной? Это чистые сетки или часть более сложной структуры, может RL?
avatar
Alex Hurko, это комплексная система. В лоб нейросетью такую задачу решить нельзя, во всяком случае я не знаю как.
avatar
Сергей Андреев, accumulated 
avatar
Eugene Logunov, понятно, что есть куча нюансов, та же гетероскедастичность в финансовых рядах, например. Но со многими проблемами можно пытаться бороться тем или иным способом. И в любом случае, если есть некая торговая система не на базе ML, используемые в ней индикаторы можно взять в качестве фич и сделать ML модель на ее базе, поэтому обобщенная критика ML мне кажется несколько странной. 
avatar
Упростим  тему  по максимуму.Возьмем  данные,  10 входных точек. Неважно чего, неважно каких.Возьмем  1  нейрон, который  видит эти 10 точек,  а  значит  у него есть 10 весов  которые  нужно найти.Процесс нахождения  весов и есть обучение.


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


Проблема нейросетей не совсем в том, что они не могут работать с нестационарностью, это ни один метод нормально не может. Но разные области многомерного пространства параметров могут быть «стационарнее» других, а этого нейросеть сама «понять» толком не может, поскольку работает со всей областью целиком по определению

avatar
Zweroboi, SVM делит пространство, радиальные функции делят пространство, вообще, наличие метрики (расстояния) в пространстве позволяет его шинковать как угодно. Научить систему принимать решения, которые зависят от области в пространстве признаков, мне кажется, обычное дело. У нас проблема не в методах разделения, а в том, что нет чистых паттернов, все перемешано и зашумлено.
avatar
SergeyJu, нет метрики, не в кассу
avatar
Zweroboi, Вы уверены? Не могли бы привести примитивный пример, когда есть глубокое обучение, а расстояние во входном пространстве ввести нельзя.
avatar
SergeyJu, по одной оси — попугаи, по другой — апельсины )
avatar
Zweroboi, в чем бы Вы их ни измеряли, в штуках, в дюймах, в литрах, никто не мешает посчитать расстояние между точкой (Х попугаев, Y апельсинов) и точкой (А попугаев, В апельсинов). 
avatar
SergeyJu, посчитать-то можно, только смысла в этом может не быть никакого, особенно если измерений десятки или сотни. Попугаи, апельсины, мартышки, дюймы, тесты на беременность и.т.д ))

Там не то что евклидово расстояние, правило треугольника работать не обязано )
avatar
Zweroboi, смотря как вводить расстояние и для чего. Если Вы не можете сопостовлять попугаев с апельсинами в расстоянии, Вы их не сможете сопоставлять и в НС. Вообще — НС — очень неразборчивая мясорубка для чисел. 
Вот, навскидку,  про расстояние Махаланобиса и кластерный анализ.
www.isa.ru/aidt/images/documents/2012-01/81_89.pdf
avatar
SergeyJu, да, неразборчивая очень, я об этом прям сам тоже и написал в первом же комментарии
avatar
Zweroboi, слово одно, смысл разный. Вы писали, что она не умеет разделять области, а я — о том, что ей не важна природа чисел, а области умеет разделять иногда даже лучше, чем надо. К тому же, Вы, наверное, изначально имели в виду НС в самом узком смысле персептрона? А я думал, что дискуссия о спектре методов  дипленинга, НС в смысле широком.
avatar
SergeyJu, нейросеть толком не умеет отделять более «нестационарные» области от менее «стационарных». То есть например котов находить можно научить легко, но если само понятие кота изменчиво во времени, нейросеть это не поймёт. Она даёт просто чиселку — приближённое значение функции в пространстве. На каких котах обучил — таких и будет искать. У нейросети нет понятия что в какой-то области функция не определена, тем более на основе каких-то вероятностных соображений
avatar
Zweroboi, что человек туда засунет, то и будет. Если человек ничего, кроме кучи чисел туда не засунет, ничего, кроме числового фарша не получит. Если не уметь задавать правильные вопросы, нельзя расчитывать на удовлетворительные ответы. Это не только в НС. Если Вы попросите таксиста  отвезти Вас туда, не знаю куда, он легко накрутит счетчик и все. И проблема тут не в таксисте. Он, может, и водит хорошо, и город знает. Да вот с заказчиком беда.
avatar
SergeyJu, человек в первую очередь выбирает куда засовывать ) к чему все эти общие слова? ) пишите конкретнее, если в теме или на форуме школьников
avatar
Zweroboi,  я в теме, а Вы нет. Я пишу профессионально, как математик и человек, десятки лет занимавшийся прикладной математикой. В том числе именно в области применения современных методов анализа к рынку. А Вы не в силах отличить профессионала от школьника. Пока я применялся к Вашему уровню, пытался объяснять «на пальцах». Не поняли — мне не надо. 

avatar
Не понял что хотел сказать афтар...
Подавай на вход разности между соседними барами. Будет тебе стационарный ряд.
avatar
ivanovr, нет.
avatar
Дело даже не в нестационарности, хотя и это проблема. Вы не сможете ничего научить на данных близких к случайным. Ни нейросеткой, ни классическими методами ML. Используйте иную целевую переменную, тогда что-то начнет работать. 
avatar
Alex Hurko, можно научить, достаточно научиться определять, где случайность, а где, как говорят наши партнёры, хайли анлайкли
avatar
Zweroboi, научится определять где случайность, а где нет — это сама по себе задача непростая. На очищенных данных результаты должны быть лучше, вы правы
avatar
Alex Hurko, давно придуманы статистические тесты для этого
avatar
Zweroboi, тесты  для определения беременности тоже есть. Но они не помогают забеременеть тем, кто не может и не забеременеть, тем кто может.
Тесты — это про одно, а рост счета — это про другое.

avatar
Alex Hurko, целевая переменая — это что? Какой-то индикатор, результат фильтрации, или нечто иное. 
avatar
SergeyJu, то, что мы хотим предсказать нейросеткой иди другим методом. Например, размер или цвет свечи. 
avatar
Alex Hurko, Цвет свечи — бинарный индикатор. День недели — индикатор, имеющий 7 (или 5, в случае амерского рынка) значений. Ну и так далее.
avatar

теги блога Алексей Никитин

....все тэги



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