Уважаемые специалисты по алгоритмической торговле! Кто нибудь пробовал использовать в своих алгоритмах экзотические способы поиска скрытых закономерностей, такие как нейронные сети и генетические алгоритмы? Звучит красиво, но насколько они эффективны? Так как их реализация требует значительной загрузки мозгов! Оно того стоит? Вот, например, человек ищет куда пристроить свою библиотеку с нейронными сетями под Матлаб. Хоть и не про трейдинг, но хоть какие-то наработки.
Comentários (32)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Нейронные сети и генетические алгоритмы в книге Каца Маккормика «Энциклопедия торговых стратегий» возвеличиваются как максимум возможного, в нашем не простом ремесле. Кто разбирается в этом владеет миром.
Да оно в общем то и понятно, это ИИ, самое сложное и пока непостижимое на земле. Я не имею в виду эти все кустарные приблуды кочующие в интернетах, они с реальными нейронными сетями которые разрабатывают в google связанны только названием.😀
Есть еще книжка Бестенс Д. и др. Нейронные сети и финансовые рынки. В интернете она есть. Практической пользы возможно и нет, но пролистать для ознакомления можно. Чуда ждать от нейронных сетей не стоит. Всего лишь куча методов анализа данных, каждый со своими целями, задачами и границами применимости. На попробовать, для понимания как ставить задачу и готовить данные, рекомендую взять NeuroShell 2. У меня, именно для торговли на рынке, успешного применения не получилось.
На мой взгляд (который сейчас активно проверяется:) методы машинного обучения (с обучающими выборками) обладают своими плюсами и минусами. В любом случае не стоит их возводить в ранг всемогущих машин выплевывающих указания куда пойдет рынок. И уж точно при разработке стратегий не стоит пользоваться методами data mining, не разобравшись детально во всех сильных и слабых местах каждого метода..
Ползая по форумам и блогам, сложилось впечатление, что наиболее используемая схема работы со "сложными" методами состоит в следующем: у вас есть набор простых логических кубиков (это могут быть индикаторы,эмпирики,паттерны,) а уже связывающим звеном объединяющим все это, является метод машинного обучения.
один из примеров: http://jspauld.com/post/35126549635/how-i-made-500k-with-machine-learning-and-hft
так же я знаю пример, когда нейросети напрямую использовались для предсказания котировок, но в достаточно специфических ситуациях (например для прогноза точки открытия)..в данном случае разработчики ставили цель обучить систему работать с паттернами рынка...
лично мне метод нейросетей не очень нравится, например, тот же SVM куда менее капризен в задачах классификации, но особо дорого мои слова не стоят...
В догонку...метод генетического алгоритма - по большей части, это метод оптимизации (хотя, естественно, можно и на нем строить МТС). Я знаю пару команд, которые с помощью него оптимизируют и достаточно успешно свои стратегии. Дело в том, что у нас обычно не бывает априорных предположений о "характере" целевой функции,экстремум которой мы ищем. точнее этот характер может меняться от вида стратегии..например если у нас есть просто стратегия в которой параметрами выступают числовые значения то обычно и градиентных методов достаточно, но зачастую бывает более сложные ситуации и здесь генетический алгоритм бывает неплох, особенно если надо отсеять крупицу из горы данных и стратегий.
Подозреваю, что использование термина DM употреблено в рамках генетики. Что, на мой взгляд, неправильно.
http://ru.wikipedia.org/wiki/Data_mining
Главное выделил.
Другими словами, как раз нужно использовать data mining для разработки стратегий. Чтобы хотя бы проверить на числах или графике своб идею, прежде чем начинать программирование стратегии.
Я для себя еще давно разделил этапы разработки стратегии ввиде ответов на вопросы:
Причем все это я отвечаю именно в таком порядке, и именно работой над данными (не над алгоритмом стратегии). Больше двух третей идей отсеиваются именно на вопросе 1. А это всего лишь простой скрипт на C# или SQL. Дело на час работы, за то я не иду до конечного пунтка - реализация стратегии.
Придерживаюсь такого же мнения. Как сказали на Пауке, если на вход алгоритму давать мусор, то и на выходе будет такое же качество. Генетика хороша для оптимизации, но на вход нужно давать уже правильные данные. Тоесть те, что подтверждены статистически. Но на логику принятия решения алгоритма это не должно влиять. Скажем так, можно, конечно, сделать стратегию на генетике, но я почти уверен, что дешевле будет делать ввиде обычной структурированной стратегии с постоянной модернизацией. Рынок постоянно меняется, и с генетикой можно попасть банально в ситуацию, когда окончание разработки стратегии происходит позднее существования неэффективности.
Скриптом случайно не поделитесь? Заинтриговали:))🤤 Ну или формулу, алгоритм...
Если сикрет то без обид, я всё понимаю.
Спасибо.
Потому что нужен опыт. Это решение той же задачи, но с другого края, так сказать. Я вот удивляюсь, почему трейдеры пытаются сразу программировать стратегии (скриптом, дизайнером, кодом), если они еще не уверены в робастости подхода.
Что такое стратегия, вернее это ее код. Это некая F(x), где x - исходные данные. Оптимизация этой стратегии есть ничто иное, как dFx/dy этой функции. Тоесть для того, чтобы проверить наше число, нам сначала нужно получить число Fx, и далее его интерполировать по параметрам y.
Зачем? Зачем нагружать и себя и машинку лишними вычислениями? А как же оптимизация труда, времени и энергии в розетке?🙄
Можно сразу получать dx/dy. И уже к полученному числовому ряду применять F.
Например, возьмем арбитраж. Никто не пишет стратегию по раскореллированным парам. Тоесть как минимум все отвечают на вопрос номер 1. Отчевают это глазами, или просто чуйкой. Но можно ведь ответить числом. Причем это код будет обычного подсчета. Стратегия же в себя включает достаточно много трейдерского кода (открытие заявок, контроль позы, отслеживание ошибочных транзакций и прочее прочее). Нет смысла это писать на первом этапе, если на вопрос 1 мы получает отрицательный ответ.
Вот за счет этого и идет экономия времени.
Что значит «Зачем?» Вам может это и очевидно, но я даже в книжках о таком намёков не слышал, все дружно тестируют и анализируют результаты тестирования. Как это миновать совсем не очевидно.
Мне хочется выяснить что конкретно Вы имеете в виду под получением F(x) в какой мере это аналогично общепринятому тестированию, какие плюсы и минусы такого подхода. Зачем вообще тогда тестирование если и без него всё ясно с «неэффективнстью».
В смысле я так понимаю, что если есть торговая идея, то таким способом можно её проверить так сказать «не отходя от кассы», соответственно скорость проверки идей увеличивается на многие порядки при таком подходе, проще говоря это тот самый «грааль».
Про dy/dx не понял, то есть dF/dx или производная от «грааля» или что?
Это смотря какая закономерность апробируется. Если предикторный блок ТС для какого то цВР представлен в виде ряда уже готовых сигналов(1,0,-1), то вычисление на лету её P\L и кумулятивной прибыли на истории - тривиальная задача, можно поначалу подумать, что это возможно только для стратегий, которые которые своей деятельности не оказывают на свои же результаты, сильной обратной связи, но это только на первый взгляд, так как паттрерны реакции рынка на выставление приказов того или иного объёма можно учесть в алгоритме прогноза и всё равно всё сведётся к предсказанию смещения цены, в данных условиях.
На Форексе например вообще обратную связь можно не учитывать, там ликвидность огромная. На биржах для скальперских стратегий, искажения обратной связи будут значительны и такие поверхностные способы подсчёта могут быть неверными, как собственно и тестирование на истории тестреом которое тоже не учитывает обратную связь.
В общем я поддерживаю Михаила Сухова в мнении о том что рыночные взаимосвязи, в начале нужно фильтровать с помощью таких, простых алгоритмов. Прежде чем уже строить на них боевую ТС.
PS. Это никакой не грааль. Даже на Форексных форумах завались «эквити-индикаторов» однако мало кому удаётся всё равно подымать много на рынке. Но я тоже после того как познакомился с этой технологией удивляюсь, как я раньше без неё обходился.
Короче секрет. Ок.
То что нужно понять как работает та или иная используемая система это без спорно, иначе это случайная игра. Перебором параметров тут успеха не достичь. На мой взгляд такие «сложные» методы больше как маркетинговый приём пользы приносят чем реально повышают эффективность прогнозирования. Кто знает как устроенны нейронные сети понимает что нет там ничего сверх естественного, а в контексте рыночных таймсерий на первый план выходит предобработка ряда(дов), то есть удаление шума и сжатие входных векторов, а когда это сделано в должной мере эффективно то дальнейшее преобразование в сигнал тривиально и не требует для этого сложных иерархических методов. В общем если данные хорошо отфильтрованы то сеть не нужна а если плохо отфильтрованны то она бесполезна, я конечно утрирую но это близко к реальности.
Прошу прощение, а причем тут нейронные сети и ген-оптимизация, к пользовательским алгоритмам тестирования? Это свободное ассоцирование или есть взаимосвязь?
Есть конечно, взаимосвязь вообще есть всего со всем, вопрос только в силе и структуре.
Многое прочитал про датамайнинг, НС, генетику. Размышлял, крутил в матлабе, и пришел к таким выводам.
Возможно я подзабыл что то, но по-моему авторы наоборот там превозносят НС и ГА как единственно верные пути. Там у них всё плохо кроме этих методов. «Топология в качестве параметров» не припоминаю. То что приращения используют это не совсем так уж плохо на общем фоне, большинство логарифмированный прайс подают на вход, приращения это шаг вперёд, хотя и так и так подгонка. Я знаю людей которые из НС вытянули грааль, но те парни настолько закрыты для общения и даже намёков о том что они делают, у меня новичка так точно нет шансов. Знаю только что там всё архисложно, там не велс, не метатрейдер и даже не S#, а С++ и MatLab с какими то фичами которым расшифровывают и интерпретируют данные поступающие с калайдеров, оказалось что это одна и та же методология, я как услышал так и подафигел, там с ними работает дядя который раньше в ЦЕРНе перемалывал терабайты в день ища новый частицы в квантовом хаосе. Говорили что обычный ТА с индикаторами и тестированием, это гарантированно слив спреда с комиссией, нет шансов.
Добрый день! Я смотрю до трейдеров, наконец-то, стало доходить, что необходимо абсолютно ясное пониманиемание применяемых алгоритмов тестирования и оптимизации. У каждого подхода есть свои плюсы и недостатки. И без понимания этих нюансов можно получить "бредятину" в итоге. По поводу "адекватных методов". Все эффективные алгоритмы уже давно известны и подробно изучены. Мне кажется все дело в обычной лени) Люди не любят думать, не хотят ни во что вникать и разбираться. Куда проще скачать какую-нибудь библиотеку, подать на вход какую-нибудь ерунду, получить такую же ерунду на выходе, придать этому смысл и успешно слить бабло на бирже. А потом с уверенностью говорить, что все эти алгоритмы полная хрень) "Техника в руках идиота - груда металлолома" 😂
Здравствуйте.
Вот мне интересно) Как вы определяете, что Генетика быстрее Монте-Карло? Почему она "быстрее"? Чем вообще отличается Монте-Карло от Генетики? И как вы планируете искать в многоэкстремальном пространстве лучшие стратегии с помощью Генетики? Или, к примеру, как исследовать с помощью Генетики пространство на кластеризацию? И т.д. и т.п.
Интересный вопрос. Полагаю, что ГА - это частный случай М-К для решения задач большой размерности, когда оптимизация одной части переменных слабо влияет на оптимизацию другой части (других частей), в связи с чем поиск идет параллельно по нескольким направлениям, после чего они объединяются в одном решении. Как исследовать пространство на кластеризацию... Слишком общий вопрос. Про кластеризацию с помощью ГА читал толковые статьи, есть в инете. Но все в конечном итоге зависит от задачи, которую преследует кластеризация.
ссылка на Википедию
Ничего особенного в этом методе нет. Вы приходите в магазин и видите, что на прилавке лежит селедка в масле(Монте-Карло), в майонезе(Генетические алгоритмы), селедка мелко порезанная с укропом(Рой частиц) и здоровенная банка цельной слабосоленой сельди(Метод перебора). Вы считаете, что с майонезом сельдь самая вкусная, а мне нравится просто в масле. Но не важно, что мы там думаем все равно это обычная селедка. И здесь тоже самое, в основе - нелинейная стохастическая оптимизация. Кроме Полного перебора. Те же проблемы с локальными экстремумами. Кстати, в моем алгоритме таких проблем нет) И прочее, прочее, прочее... И с чего вы решили, что он удобен для больших размерностей? Почитайте, к примеру, комментарии в конце статьи на Википедии.
Я не маркетолог, мне трудно судить о достоинствах и недостатках селедок различного приготовления. Если бы вы спросили допустим Марковица о том тестере стратегий, который написали, то думаю, что услышали бы много интересного о математической обоснованности своих методов. То же самое и об отзывах ученых о генетическом алгоритме. особенно порадовало мнение о том, что недостатком генетического алгоритма является неспособность спроектировать самолет сразу целиком. типа есть алгоритмы для этого, а вот ГА ну никак не может. Чтобы не быть голословным: http://technomag.bmstu.ru/doc/56533.html взял про большие размерности из логики. то что в вашем алгоритме нет таких проблем - ваше недоказанное ничем мнение, как и мое про большие размерности. существует класс задач ГА - генетическое программирование (задача переменной размерности решаемая путем эволюции дерева выражения). поделитесь, пожалуйста, как его можно реализовать с помощью монте карло.
Небольшое размышление на тему: Например, будем классифицировать элементы множества по половинкам - больше или меньше ноля. В одномерном пространстве будет всего 2 подмножества, в 2-хмерном - 4, в 3-мерном - 8, в N-мерном 2N. Допустим подбираем 30 параметров. Количество подмножеств - более 1*109 подмножеств, которые можно разделить, и это при разделении по каждой оси пространства только на 2. Какова же вероятность попадания случайного значения из монте-карло внутрь гиперкуба диаметром 0,1 от возможного? 110^30 по-видимому. А если алгоритм промахнется пару раз? Генетический алгоритм тоже неидеален, но он накапливает информацию о лучших решениях в случае если решение задачи состоит из относительно независимых частей. Допустим, решение состоит из двух частей, одинаково влияющих на результат. Тогда генетический алгоритм будет решать не задачу попадания значения в 11030 от общего пространства признаков, а лишь 2*1015, поскольку размерность каждой из частей решения только 15. Если независимых частей еще больше, то выигрыш становится еще существеннее. Примерно так.
Мне кажется, что вы не поняли в чем суть алгоритма.
П.С. "Как селедку не называй, шоколадным тортом она от этого не станет!" 😂
В чем суть вашего алгоритма, я возможно и не понял. Поправьте меня, если я не прав. Вы предлагаете оценивать по монте-карло области наименее пригодных решений и отбрасываете эти области целиком, уменьшая (обрезая) пространство, в котором производится поиск. Я же говорю вам о следующем. При большой размерности пространства достаточно велик (в случае размерности 30 - просто ОГРОМЕН) шанс пропустить в области плохих решений локальный или глобальный максимум. Генетический алгоритм я называю так, поскольку это общераспространенное название данного класса алгоритмов. Естественно, алгоритм не имеет почти ничего общего с реальной биологией. Я прекрасно представляю себе, как он работает, иначе просто не стал бы вступать в его обсуждение. Мне интересно другое. Поняли ли вы, что я имел в виду в последней части своего ответа, говоря о значительном повышении вероятности для ГА найти правильный ответ при решении задачи, состоящей из двух слабо взаимосвязанных частей, каждую из которых характеризует свой набор признаков. Если нет, то судя по отсутствию вопросов вы все уже для себя решили, и это вам не нужно. Но если вы уже определились со своим отношением к ГА и его месту среди прочей стохастики - так и напишите. По крайней мере, это сэкономит мне время. А то получается, что я пытаюсь ответить на вопрос человеку, который не хочет меня слышать, поскольку убежден в правильности другого ответа. 9 признаков - не та размерность, в которой могут существенно проявиться различия ГА и монте-карло.
Приз за лучший ответ.😂 Можете узнать что это, погуглив "генетическое программирование". Вам будет интересно.
Спасибо.
Вы описали алгоритм, наполовину обратный ГА. Вместо популяции лучших решений в нем создается своеобразная популяция худших (в виде областей, исключенных из поиска), хотя в больших размерностях это работать не будет. Но для вашей задачи это видимо лучшее решение из возможных. Если честно, ни разу не встречал практического использования ГА для задач с числом оптимизируемых параметров менее 10, может просто не интересовался такими задачами. Например, для обучения НС число оптимизируемых весовых коэффициентов часто бывает более 100.
По-видимому дискуссию пора заканчивать. Вы действительно для себя уже сделали все выводы, имеете собственный взгляд на проблему и не нуждаетесь в том, чтобы его кто-то опроверг. Спасибо за полезную информацию, кое-что заставило задуматься.
И вам спасибо за интересные мысли про ГА.
Превозносят там ГА. Про НС пишут, что не фонтан, но использовать можно. ТА - лженаука, использующая некоторые научные подходы в их примитивном виде. Считаю, что себя он уже исчерпал.
http://narod.ru/disk/37303862001/meta-heuristics.pdf.html
Для заинтересованных. Полезное чтение про генетические алгоритмы от простого к сложному.