Блог им. silentium
Не нравятся нейронные сети? Вы просто не умеете их готовить. Рецепт.
Silentium est aurum
Молчи, пока ты не в состоянии сказать нечто такое, что полезнее твоего молчания. (кто-то умный сказал)
Что берем? Да все, что есть в нашем трейдерском запасе. Прежде всего, рыночные данные из тиковых файлов по выбранному инструменту. Добавляем всякие вкусности – объемы, ATR-ы, МА-шки, уровни, индикаторы разные… В общем то, на что смотрим в своей реальной ручной торговле (при условии, что торговая система имеется). Желательно, конечно, добавить какие-нибудь свои «секретные» ингредиенты. Не забываем, что качество продуктов влияет на вкус блюда. Все, что выбрали для входов НС, нужно хорошенько очистить и отмыть от своих субъективных представлений о рыночных зависимостях – исходные продукты должны быть чистыми!
Далее – нормализуем данные, которые будем подавать на входы НС (приводим к значениям от -1 до 1). Тут все понятно — ингредиенты в хорошем блюде должны быть однородны. Так что шинкуем, господа!
Итак, входы готовы. Начинаем формировать у сети правильное представление о результате – учим сеть правильным ответам – «покупать» или «продавать». Тут совсем понятно – ПРАВИЛЬНО – это когда ПРИБЫЛЬНО. Конечно, вручную сделки в количестве 10-20 тысяч штук сформировать невозможно. Используем чудо-машину на основе генетического алгоритма. Эта техника создаст множество нейронных сетей на наших данных. В процессе обучения сети сами разложат содержимое входов по формам. Сети сами решат, что более важно, а что менее для нашего блюда. Им просто не нужны те закономерности, которые выделяем мы — они найдут свои.
Генетический алгоритм выберет лучших из лучших и будет «смешивать» и «скрещивать» их, проверяя результаты работы каждой новой сети методом скользящего контроля (кросс-валидация), пока параметры будут улучшаться.
Когда процесс завершен, кажется, что наше блюдо готово. Но не торопитесь кушать сами и предлагать другим – надо про(дегустировать)тестировать наше блюдо на независимых исторических данных. Мы для этого используем наш тестер, где роботы тестируются на тиковых данных и можно проанализировать основные показатели работы – прибыль, просадку, фактор восстановления, матожидание сделки и дня и прочее…
По этим параметрам можно сделать вывод о съедобности полученного продукта.
Поскольку мы с вами знаем, что тесты – это далеко не реальность, мы добавили возможность запустить робота в режиме эмуляции торгов. Сверив сделки в режиме эмуляции со сделками в тестере за период – приходим к выводу, что все работает корректно. И все. Запускаем реальные торги. Едим с аппетитом и предлагаем всем!
Оказалось, что мало создать работающую стратегию. Надо еще и дать ей работать! Но это уже другая история. Об этом в топике «Нейронные сети. Послевкусие. Мифы, заблуждения, ошибки, косяки. Первые 15 месяцев эксплуатации бота на нейронных сетях»
Мы – реалисты. Рано или поздно, наше блюдо перестанет быть свежим и вкусным. Поэтому мы следим за основными показателями, чтобы своевременно исключить его из нашего меню… И продолжаем готовить новые. Об этом, если будет интересно – в следующих топиках.
А я вот что то не помню чтобы в 90-е гопники на латыни разговаривали)))
Без обид))))
А что с самой сетью, топологий тьма, ну жа это не беда.
Главная проблема это то чему ее учить. Вот про обучение если можно подробнее
Параллельная с реальной торговлей торговля «бумажная» — нормальный инструмент контроля.
Но почему именно нейронные сети должны её разгребать, да еще без участия человеческих нейронов, непонятно.
Тема, мягко говоря, почти не раскрыта.
В каких программах, как это делать — все по шагам...
Короче, инстаграмм неинтересен, а интересен рецепт конкретный чтобы самому покушать :)
За этим следят специально обученные автоматы, как я понял :)
Сотрудничать — всегда готовы.
Вот так выглядит у меня ваш сайт.
Вы туда что, пару нейронных сетей прикрутили? :)
Собственно, страшно не то, что это все появляется, страшно то, что это хавают:)
Даже техподдержка будет.
Даже аддоны уже готовые и тд и тп)))
А кто не умеет, тот и молотком по пальцу, и НС по депозиту :)
Зато безуслвоно у них всегда хорошие тесты в прошлом)))
Но тут возникает вопрос — почем вы продаете своих роботов и зачем?
Каюсь, я сколько раз не начинал читать про нейронные сети, всегда бросал. Неочевиден профит, непонятны самые основы, разбираться лень.
Вот Вы, например, спец по нейросетям, можете внятно сформулировать основное свойство этой парадигмы? Чем нейросетевой подход отличается от других подходов? Для каких задач он подходит?
www.ozon.ru/context/detail/id/4521007/
Имхо, это нереально круто.
Прибыль за период — понимаю, текущая просадка — понимаю. Сам считаю её от ранее достигнутого абсолютного максимума эквити.
CVar — понимаю.
А все эти метастоковские штучки, проде процента прибыльных сделок и ФВ — не использую.
Обычно я просто делю среднегодовой доход на какую-то меру риска. Хоть бы и ДД, но это не лучший вариант.
Добро пожаловать на темную сторону :)
Никакие МА-шки в сеть и близко не берутся, а вот те индикаторы что представляют данные -1 +1 как раз берутся.
Интересно, Вы её сводите к однофакторной весами, или отсекаете по каждому критерию худшее, или какой-то третий вариант.
А Вы представляете компанию или не оформленную юридически группу единомышленников?
И там без всяких сетей-заработок.
Что касается сетей, Варды все правильно говорят, работает только в очень ограниченных областях финансовых рынков
Но по поводу НС мое мнение совпадает с Вашим. Это не наш метод.
На индикаторах сетку нормальную не соберешь
А фраза-да
Платишь 3 штуки зелени и у тебя будет и программа и поддержка и все все все
Зачем Вам эффект Даннинга-Крюгера в собственном исполнении?
ru.wikipedia.org/wiki/%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D0%94%D0%B0%D0%BD%D0%BD%D0%B8%D0%BD%D0%B3%D0%B0_%E2%80%94_%D0%9A%D1%80%D1%8E%D0%B3%D0%B5%D1%80%D0%B0
Вы написали кучу дилетантских вопросов, которые говорят только об одном, работать не желаете, а флудить — всегда пожалуйста.
«Нейронные сети реализуются на матричных операциях. Для прохода слоя нейронов сети прямого распространения необходимо всего две матричные операции — умножение и пороговая функция от результата. К примеру, что бы просчитать результат НС с одним скрытым слоем из 50 (да хоть из 1000) нейронов необходимо всего 4 матричные операции — умножение, гипертангенс, умножение, и функция выхода.
Где здесь ООП? Где объекты? Где состояния???
Генетический алгоритм используется для подбора гиперпараметров при обучении.»
А люди знающие «больше вашего Мастера» — это любой программист, кто написал что-нибудь сложней хелловорда, долго искать не надо, надо просто платить и организовывать цикл разработки. Очевидно, что «мастеру» вовсе не это надо.
Тут все достаточно типично.
Обычная полносвязная нейронная сеть прямого распространения. Число слоев и нейронов в разных версиях разное. В текущей — один скрытый слой, 74 нейрона.
Что такое веса?
Архитектура своим наличием должна как то породить состояние, которого нет? LOL
А, оказывается это было не серьезно, а Вы еще и женщина. Вопросов больше нет, предупреждать надо.
Что такое веса?
ооп в данном случае лишь инструмент реализации и инструмент представления.
Где вообще та грань между обучением и не обучением? Является ли, например, кеширование частным случаем?
генетические алгоритмы значит, часть реализации нейросети? В таком случае, опять же, как могут быть мутации без состояния, Вы не могли бы пояснить?
1. Что анализируется в последней колонке на скриншоте (0 профит..., 5 профит..., 10 профит… и т.д.)?
2. Вы пишите, что ничего не понимаете в ООП. При этом, на скриншоте явно самописная программа, которая с вероятностью процентов эдак 90 написана объектно-ориентированном языке. Какова ВАША роль в данном проекте НС?
3. Как уже некоторые тут писали, хотелось бы увидеть что-то более конкретное, в плане реализации механизмов, вместо скриншота «черного ящика». Планируете чем-то подобным поделиться с читателями? Если «да», то когда и где?
1 — это статистика профита по часу (по 5тиминуткам), делалось не для НС, пользы не принесла
2 — ну да, программа написана на С++, понятно что с применением ООП
3 — что-то можно рассказать, но понятно, что не все, только в общих чертах. Детали, секреты, ноу-хау, понятно, что никто не расскажет. И не в рамках данного блога. Неожиданно много слов получилось. Ну и неприлично же общаться с женщиной по вопросам программирования — придется отвлечь кодера от его работы. Задавайте вопросы в личку, если действительно интересно. Если будет тема для общего обсуждения — вынесем в блог.
Вы так и не ответили на вопрос о Вашей роли в данном проекте. ;)
Но если желаете оставить это в секрете, я настаивать не буду.
Скажу сразу — у меня весьма скептическое отношение к НС (применительно к биржевой торговле). Когда-то пытался начать изучать, но до программирования даже простейших нейронов так и не дошел.
Что касается раскрытия темы, то вполне очевидно, что определенные «секреты» Вы раскрывать не будете и не должны.
Однако, увидеть некоторые «детали» реализации НС хотелось бы, в противном случае (в моем восприятии) текущий топик существенного интереса не будет представлять.
Да, наверное для этого придется привлечь кодеров, т.к. для интересующихся этой темой, но не имеющих достаточного опыта в практической реализации НС, основной интерес представляют варианты реализации отдельных механизмов работы НС, пусть и в упрощенных вариантах, просто для того, чтобы понять с чего начать и как конкретно реализовать отдельные этапы построения НС.
Например:
— на вход нейрона необходимо подать преобразованные данные о параметрах свечи => пример преобразования. Ведь наверняка кроме текущей реализации, которую Вы не хотите раскрывать, были и простейшие варианты, которые были отметены, но для других они могут оказаться полезными в качестве точки отсчета
— программный код реализации простейшего нейрона (не вашего конечно, а сильно упрощенного, но применимого к теме биржевой торговли)
— методы корректировки весов на связях между нейронами, в процессе обучения (хотя, допускаю, что без раскрытия «секретных» данных может и не получиться) и т.д. и т.п.
На самом деле все зависит от того, с какой целью был создан данный топик (все написанное далее ни в коем случае не воспринимать как оскорбление, т.к. это не является моим личным мнением о Вас):
— хотите похвастаться, что у Вас получается зарабатывать с помощью алгоритма на базе НС? ОК, похвастались. Мы за Вас рады и теперь благополучно можем забыть.
— хотите привлечь единомышленников в вашу команду? Хорошо, «затравку» бросили, теперь дело за конкретикой.
— Хотите чтобы тема НС (в интересующей нас области) не канула в лету, и развивалась? ОК, покажите другим что это не так сложно как кажется, когда читаешь только теорию, и не понимаешь как превратить это в практику.
— хотите чтобы другие поделились своими идеями? Я сильно сомневаюсь, что на данном ресурсе есть достаточно людей, которые разбираются в данной теме. Возможно, имеет смысл искать таких на других ресурсах, или вернуться к предыдущему пункту и дождаться появления обратной связи.
Лично для меня эта тема интересна пока только в качестве факультатива, для собственного развития и выработки свежих идей. изобретать велосипеды не очень люблю, а вот развить какую-нибудь идею до чего-то интересного — это вариант, но если начинать «с нуля», то это тот же велосипед…
по принцу Парето работает…
Хорошо сказано.
Просто тут эта тема так «хорошо пошла», потому что на рынке редко остаются «старожилы)»))
… как то настораживает… то есть никакого дополнительного материала Вы не читали, за развитием сетей не смотрели?
Нейросеть, как хороший калькулятор, чтобы в уме не считать, но не более того…
Что до квантов в инвестбанках… наврядли большинство из них занимается именно направленной торговлей на бирже. Там масса всяких других затей, начиная от фронтраннинга клиентов и заканчивая всякими форвардами и внебиржевыми опционами.
Наконец, на НС свет клином не сошелся, есть и другие методы в области ИИ.
Она по сути своей не сложнее испольсования скользящих средних.
Просто надо терминал поновее, там и техподдержка к нему прилагается
1. без регуляризации (сорри если неправильно перевел термин) будет обычный галимый оверфиттинг, добавьте дропаут 0.5 и L2 и посмотрите на результат.
2. использовать обычную многослойку для таймсерис моветон, есть RNN, LSTM или самый свежак Grid LSTM
Это как раз то, чем Мастер сейчас занимается
нет не нужен, но хотя бы masters in math для интуитивного понимания nn
не пробовали искать паттерны на чартах с помощью cnn?
Объемы еще понятно, а все остальное — и так производные от цены. Но нигде не доказано, что нельзя, значит можно ;)
В целом — интересно, «но денег не дам!» ©
Причина проста — даже прогнозируемость «лонг-шорт» будет в районе 50:50. А про размер движений и говорить нечего, но скажу: ноль!
Но это все — только мое скромное мнение.
За пост + огромный плюс.
----------------
Публикуйте несколько месяцев на каждый торговый день прогнозы «покупать» или «продавать», тут, на smart-lab.
Результат будет, однозначно!
Слив засчитан ;)
Ибо сказано:«Способности нейронной сети к прогнозированию напрямую следуют из её способности к обобщению и выделению скрытых зависимостей между входными и выходными данными. После обучения сеть способна предсказать будущее значение некой последовательности на основе нескольких предыдущих значений и (или) каких-то существующих в настоящий момент факторов. Следует отметить, что прогнозирование возможно только тогда, когда предыдущие изменения действительно в какой-то степени предопределяют будущие. Например, прогнозирование котировок акций на основе котировок за прошлую неделю может оказаться успешным (а может и не оказаться), тогда как прогнозирование результатов завтрашней лотереи на основе данных за последние 50 лет почти наверняка не даст никаких результатов.»
Увы, это тоже как-то не совсем то. Их можно нарисовать.
Об этом надо было подумать раньше, до этого вашего поста.
А сейчас, увы, поздно.
Это интересно многим ;)
Тоже когда-то баловался НС.
Introduction to Neural Networks for C#, Jeff Heaton, и все такое прочее.
Толку — ноль. Не годятся они для совершения сделок на финансовых рынках в общепринятом смысле.
Другое дело — HFT, в этом Молодой поэт Таджикский, думаю, прав — там идут процессы на квантовом уровне, и применение НС может быть оправдано. И, скорее всего, они там применяются уже давно. Но и тут результаты вряд ли сильно ушли от 51:49.
В любом случае — желаю успехов!
К стати, вопрос к топикстартеру, у них есть какой-то опыт в анализе микроструктуры рынка с помощью нейросетей?
Вот ответ от нашего Мастера: «Может, в статье опишу, как в матлабе сделать сеть, которая будет „что-то угадывать“ -
свои первые простейшие эксперименты.
Но от этого до реальной прибыли далеко как до Луны». Только это не нужно здесь. А кому нужно, тот в сети найдет такие примеры..
С нетерпением жду следующей статьи!
Тему уже поднимали, например тут: http://smart-lab.ru/blog/288428.php
Просили «писать только по делу», брали «в дело только опытных.»
Никогда не оскудеет тема поиска чудо-аппарата (черного ящика), когда ему на вход подаются текущие котировки, а на выходе — готовое решение: лонг/шорт/курить_бамбук.
Матлаб — это удобная среда, где можно быстро попробовать любую идею, если умеешь программировать. Большинство новых научных разработок в области алгоритмов НС в первую очередь реализуют на Матлабе. (Это не касается пакета Neural Network Toolbox, который идет в комплекте с Матлабом — он весьма отстает от жизни).
В последнее время конкуренцию Матлабу составляет язык Python. Для него есть огромное количество библиотек для математических и матричных вычислений. Его активно использует и развивает Гугл, в том числе и для разработок в области НС. А НС Гугл занимается весьма активно (распознавание речи в андроиде, поиск по картинкам, распознавание образов, и многое другое). https://ru.wikipedia.org/wiki/MATLAB
silentium, да, действительно — у Python есть свой NeuroLab: pythonhosted.org/neurolab/
Там пишут, что его интерфейс похож на матлабовский NNT. Как насчет функционала — пока не знаю.
silentium,
Я вот подумал, что г-н sortarray, как ни странно, кое в чем был прав )) А именно: сети типа RNN/LSTM все-таки имеют состояние (память), и в этом смысле напоминают мне конечные детерминированные автоматы.
Я помню, Вы говорили, что не используете time series, и в то же время у Вас есть идеи относительно CNN. Мне в плане сверточных сетей приходит в голову лишь нечто вроде анализа японских свечных паттернов (типа двух взлетевших черных ворон). Мне кажется, если рассматривать движение цены во времени, то больше подходит как раз концепция RNN, чем CNN. Интересно узнать Ваше мнение.
И еще вопрос: если у Вас 364 входа и 1 скрытый слой из 74 нейронов (а выход, вероятно, 1?) – правильно ли я понимаю, что dropconnect Вы используете на полносвязной матрице 364*74?
Насчет RNN — я не знаю серьезных применений этого типа сетей, каких-либо исследований, результатов, развития их. В отличии от CNN. Думаю, CNN способны гораздо на большее, чем просто находить свечные патерны. Они позволяют анализировать очень большой кусок истории без переобучения, благодаря своим разделяемым весам.
На второй вопрос — ответ да.