Блог им. silentium

Технология создания торгового робота EVA на основе нейронной сети или Как у нас получилось то, что получилось, и почему я не выполню обещания.

Silentium est aurum.

Молчи, пока ты не в состоянии сказать нечто такое, что полезнее твоего молчания. 

                                                                                      (кто-то умный и известный сказал)

 

 

     В продолжение  «Не нравятся нейронные сети? Вы просто не умеете их готовить. Рецепт. Ингредиенты, специи и прочее» http://smart-lab.ru/blog/327789.php и «Нейронные сети. Послевкусие. Заблуждения, ошибки, косяки. Первые 15 месяцев эксплуатации бота на нейронных сетях»  http://smart-lab.ru/blog/329272.php

 

     Я почему-то решила, что мои слова будут полезнее моего молчания на Смарт-Лабе. Только, когда я представляла эту пользу для себя, я имела в виду возникновение каких-то полезных связей и взаимовыгодного сотрудничества с другими трейдерами, работающими над созданием торговых алгоритмов на основе нейронных сетей. Этого пока по разным причинам не получилось. В качестве «побочного», но весьма приятного эффекта, получилось добавить заинтересованную аудиторию нашему «продажному» проекту – на сайте появилось … новых подписчиков. Хотя может так совпало – невозможно идентифицировать со СЛ эти люди или нет. Во всяком случае, это те, кто имеет желание зарабатывать на бирже, и имеет понимание, что в такой конкурентной среде идет борьба технологий.

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

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

     Стратегии могут работать в двух режимах: боевой – формирует входы, подает их на НС и на основании ответа НС совершает сделку (этот режим нужен для тестирования готовых нейронок).

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

 

 

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

Далее нормализация – приведение данных к единичному гиперкубу с равномерным распределением значений. Существует несколько способов таких преобразований — мы использовали свой.

     Выгружаем данные входов в Матлаб (файл примеров – входная информация). В Матлаб формируем выходы. Примеры должны быть строго сбалансированными (сигналов buy и sell должно быть приблизительно одинаково), иначе у НС будет склонность к определенным сделкам (перекос).

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

Все тайные знания – в деталях. Если Вы будете этим заниматься, найдете свое «золотое сечение», возможно, лучше нашего.

Итак, сформированы варианты правильных ответов для обучения сетей, buy или sell. И создано множество нейронных сетей.

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

Каждый набор параметров (хромосома) оценивается методом кросс-валидации (CV). Для этого по одной хромосоме создается множество сетей, которые обучаются и тестируются на разных периодах. Все это выполняет генетический алгоритм автоматически.

О CV можно почитать, например, здесь http://www.machinelearning.ru/wiki/index.php?title=CV

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

Генетический алгоритм есть в Матлабе (GATool), но у нас – конечно же, свой.

Вообще в Матлабе есть библиотека NNTool, которая использовалась вначале. Она универсальна, но отстает от жизни – новых, необходимых вещей в ней нет, а дорабатывать ее сложно. Поэтому сейчас используется библиотека DeepLearnToolbox https://github.com/rasmusbergpalm/DeepLearnToolbox. Она была взята за основу и также доработана.

 

     Далее сети проверяются в Матлабе на тестовом периоде, который не совпадает с периодом обучения. Для этого тоже написан свой тестер. Ну, Вы уже поняли, что у нас все свое.

     В разных источниках разночтения по названиям периодов – период обучения, период тестирования, период валидации… Слава богу, что нет общепринятой терминологии. А то бы уже все давно понаделали своих сеток и разбогатели…

     Для окончательной проверки готовые к использованию нейронные сети выгружаются из Матлаба и прогоняются на нашей платформе на точных тиковых данных с полной имитацией рыночной торговли.

     Есть еще интересная вещь – мы можем объединять разные сети в портфель. Например, выбрать из генерации 10 сетей с близкими значениями по прибыли и просадке, с минимальной корреляцией времени просадок. Тогда на периоде получаем результат со средним значением прибыли и просадкой, ниже среднего значения по сетям. Это возможность при сохранении выбранного уровня риска в % получить больший доход.

     Мы не останавливаемся, а идем дальше. Запущено тестирование сетей для других инструментов. Рассчитываются новые сети по новым технологиям.  Цель – повышение доходности и уменьшение просадок. Надо же когда-нибудь соответствовать уровню ЛЧИ (это ж показатель, наверное). Хотя, если честно, просто хочется чтобы рутинную и нервную работу на рынке выполнял ИИ.

P.S. Чуть не забыла про картинки – их же все любят так. Смотрите — два предыдущих дня работы робота. Когда многие (и я в том числе) шортили рынок и лонговали доллар… Что она (EVA все-таки девочка) знала о вышках, пэйролзах, госпоже Йеллен? Да ничего. Просто у нее в «голове» на немаленьком сроке обучения было всЁ и всE: протоколы и минутки ФРС, Бернанке с куями, землетрясения и наводнения, военные конфликты и терракты. И она в плюсе. А мы все помним, как двигался рынок в эти моменты? Так зачем нам все это? Пусть работает робот! А мы будем работать над созданием более совершенных роботов!

 Технология  создания  торгового робота EVA  на основе нейронной сети или  Как у нас получилось то, что получилось, и почему я не выполню обещания.

 Технология  создания  торгового робота EVA  на основе нейронной сети или  Как у нас получилось то, что получилось, и почему я не выполню обещания.

 

 

 

 

★10
106 комментариев
Мне понравилось. 
Позвольте пару-тройку вопросов. 
1. Сколь часто во времени расположены «точки принятия решений».
2. Нельзя ли «на пальцах» пояснить, как скрещиваются НС.
3. При кросс-валидации, у Вас на каждом шаге разбиение обучение/контроль одно и то же, или Вы делаете новое разбиение.
avatar
SergeyJu, Спасибо за первый отклик на мой топик!
1. Точки принятия решения — каждые 5 минут.
2. На пальцах можно, конечно. Применяется много методов скрещивания для разных типов данных. Для одного типа данных тоже несколько вариантов скрещивания. Там очень серьезные модификации ГА. Например, типы скрещивания так же эволюционируют наряду со значениями.
3.  Делаются N разбиений для одной хромосомы. Для каждого разбиения создается и полностью обучается новая сеть. Получается, что для одной хромосомы проводится N обучений и создается N сетей.
avatar
silentium, у меня ум за разум заходит, когда я пытаюсь осмыслить Ваш ответ по п.2.
По пункту 3. 
В динамике получается, что один и тот же кусок данных на одном этапе обучения входит в контрольную выборку, а на другом — в обучающую. То есть, имеет место процесс перемешивания. И если на одном шаге можно говорить о независимом контроле, то в целом процесс использует всю выборку как обучающую и риск переоптимизации возникает вновь, как ни крути.
avatar
SergeyJu, ум за разум заходит по пункту 2 потому что вам налили воды.
Что касается пункта 3 — ключевое это в каком виде и какие данные подаются для обучения. НС прекрасны в теории, на практике очень многое зависит именно от исчерпывающих данных на входе. Так как рынки очень сильно зависят друг от друга (тот же Си от нефти), остается большим вопросом, можно ли полноценно в НС учесть все ньюансы поведения инструмента, не обучая ее на ВСЕЙ совокупности аффилированных инструментов. В полную самодостаточность и замкнутость отдельно взятого инструмента я не верю.
Лыцарь печального образа, все нюансы учесть нельзя. Но, как правило, и не нужно!
Исчерпывающие данные на входе — тоже недостижимая вещь. 
Я вообще сторонник минималистских подходов. Поскольку ценовой ряд обладает очень низким соотношением сигнала к помехе, только очень грубые, обладающие малым числом факторов модели, имхо, должны устойчиво на нем работать. Когда я читаю автора, я понимаю, что они делают что-то совсем не такое. Но я также понимаю, что они это действительно делают. Возможно, что автор сам не до конца понимает, что делают другие участники коллектива. 
avatar
SergeyJu, 
так именно малая составляющая сигнала к помехе и есть основная причина. НС в первую очередь должно на исторических корреляциях отсеивать «посторонние» шумы, и вычленять чистый сигнал, чистый моментум движения цены.

Иначе будут либо длинные стопы, либо постояннный стопосъем.

Например РИ в моменте зависит от 10ков акций (через мамбу) и от нефти с ЕД (через СИ).
Часть движения РИ — это ее собственный ТА, а часть вибраций в моменте — это отражение вибраций в других инструментах. Так вот, НС должна их эффективно отсеивать, если она не только трендовая (что сделать легко и без НС) но и контртрендовая и вообще запильная (что и сложнее всего).

Для этого НС должна обучаться на всем массиве коррелирующих данных.
Лыцарь печального образа, я не поклонник НС и, более того, не собираюсь их обучать или использовать в качестве торговых систем. Хотя бы потому, что я не доверяю «черным ящикам». И от идеи «поженить» множество ценовых рядов в одном алгоритме меня в первую очередь отталкивает мысль о временной изменчивости связей между ними. Оценки корреляций, например, нестационарны. 
avatar
SergeyJu, НС отличается от алгоритмов про которые Вы говорите прежде всего именно способностью неформализованного учета ряда факторов. В том числе и всевозможных корреляций.

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

Потому что рынок это нерегулярный сигнал, не осциллятор в чистом виде
Лыцарь печального образа, и мы получаем неконтролируемое нарастание сложности.
avatar
SergeyJu, да, но НС под это и предназначено. Чем более сложные массивы мы анализируем, тем на выходе более высокое матожидание
Лыцарь печального образа, это Ваш символ веры, или Вы на самом деле это торгуете?
avatar
SergeyJu, нет, это мое отношение к применению НС в многовекторном поле движения котировок
Лыцарь печального образа, на периоде обучения-тестирования НС анализировала РИ безотносительно «вибраций в других инструментах» и показала положительные результаты. Все в цене. Это логично? НС не предсказывает цену на следующий период. Если Вы внимательно читали — мы вообще не используем чистые цены. НС предсказывает более вероятное движение и диапазон этого движения. Причем расчеты делаются онлайн каждые 5 минут. Сделок при этом в день у текущей базовой версии в среднем 7. Кривая профита никак не коррелирует с графиком — нет зависимости от наличия на рынке тренда или флета. У нас в руках данные тестов и реальной работы — они соответствуют друг другу.
avatar
silentium, все может быть. Не вижу смысла дальше этот вопрос обсуждать, может все так и есть, а может есть и лукавство.
При предсказании более вероятного движения и его диапазона вопрос со стопами остается насущным.
silentium, что касается флета, то там вообще непонятно о каких предсказаниях более вероятных движений и диапазонах может идти речь кроме как бегания от краев диапазона
Лыцарь печального образа, да, представьте себе, бывают дни, когда бот переворачивается часто. Сделки с небольшим профитом или лоссом. А бывают, как позавчера — встал, как вкопанный в лонг и унес с рынка 3000 пунктов… Использование относительных показателей в ручной торговле Вы же используете? Если на рынке АТР часовой, например, 1000бп или 300бп -Вы же соответствующий диапазон для тейка-стопа подбираете для своих внутридневных сделок? Ну вот и он так. Он же не механика — он же нейронка.
avatar
silentium, на все это могу сказать только одно
Настоящему Мидасу нет смысла продавать свой дар за копейки..

Надеюсь вы поймете аллегорию
Лыцарь печального образа, если бы не было смысла в продажах — не продавали бы. Почему настоящий художник должен быть голодным? То, что мы продаем — не единственный продукт. И не претендует на грааль. Это имеет свои реальные параметры, не 100500% годовых. Это имеет поддержку, гарантию и развитие. И это обсуждение — не тема данного топика. За оценку моих «рекламных» способностей — спасибо, конечно. Продвижением продаж занимаются другие — может их повыгонять?..
avatar
silentium, потому что картины художника не зарабатывают ему сами на хлеб насущный.

Даже 10 контрактов в РИ будут на таком роботе приносить больше каждый день, чем вы выручите за продажи. Другое дело, если эти 10 контрактов совершенно не гарантированны — но тогда и зачем покупать этот продукт?
Лыцарь печального образа, Вы как-то считаете не так. Сколько же принесут 10 контрактов РИ при доходности 70% годовых и риске 10%? И какая сумма нужна для торговли 10 контрактами РИ при этих параметрах? Это опять не в теме данного блога, но я Вам напишу: текущая базовая версия (не портфель) требует депо 150000 р на каждый контракт РИ. Тогда будет начальный риск 10%. Не обязательно на брокерском счете, но эти деньги должны быть в безрисковом активе, чтобы, в случае получения максимальной исторической просадки на старте, не прекратить работу и не снизить размер позиции. Тогда Вы получите 70% на стартовую сумму. То есть, если у Вас были 10 контрактов РИ (1,5 млн.р), Вы получите 1050000 рублей за год. Да, бот окупится в первый месяц. Вычтите налоги, разделите на 12. Это достаточная сумма для Вас? Сколько нужно человеку, чтобы нормально жить и работать — решает каждый для себя.
avatar
silentium, о какой максимальной просадке вы говорите? Что это за бот, который грозит безумными просадками при риске всего 10%?


Что за расчеты? Откуда доходность 70% годовых? Почему не 60%, и не 120%?
А то что успешная торговля наращивает депозит в этих 70% учитывается?

Вы ловко жонглируете математикой. Но если ваш бот ловит не только тренд, но и флэт, целевые показатели 70% годовых не так уж и много.
В общем лирика от тех, кто устраивает платные семинары. Типа рынок кормит нас хорошо. ей-богу. Но вот семинарские деньги не повредят. чито на мороженное.
Лыцарь печального образа, по расчетам доходности и рисков ответила ниже. Максимальная просадка — просадка на периоде обучения-тестирования-работы в режиме эмуляции. Определяю риски по ней. Не хочу, чтобы она была больше 10% начального депо. Поэтому может показаться, что стратегия низкоэффективна. 70% — на начальный капитал. Если кто-то хочет использовать риск 50% — его дело. Тогда, конечно, и профит будет в 5 раз больше. Я не могу принять такой риск. Вот и все.
avatar
Лыцарь печального образа, никакой лирики и никаких семинаров. Мне достаточно в третий раз в жизни посидеть за монитором, отвечая на комментарии в блоге на смарте. Как Роман справляется с этим? Возможно, два-три человека захотят встретиться очно и пообщаться предметно, глядя в монитор и в глаза. Это хороший результат. Спасибо Вам за комментарии.
avatar
silentium, соотношение 70% годовых при максимуме ДД 10% — это очень хорошо. Но откуда тогда требование такого большого обеспечения? 

avatar
SergeyJu, я для себя приняла такое соотношение. На сайте написано в разделе Гарантии и Риски. Я могу объяснить. Макс.просадка за период обучения-тестирования-работы в режиме эмуляции — 13800п. Я не хочу, чтобы она превысила 10% моего начального капитала. У меня такой выбор. Я начинаю работать сегодня. 13800п будут стоить мне 17600р. на каждый контракт. Пусть это будет не более 10% от моего депо. Значит, для торговли 1к с сегодняшнего дня нужно 176000 рублей (ого, даже больше, чем я написала выше. Ну мне простительно — я торгую ботами с 1.01.2015г.). Деньги на брок.счете не держу все, естественно. К концу года надеюсь получить 70% на стартовую сумму. Без реинвестиций. Люди, которые начали работать в апреле, на текущий момент заработали больше, чем макс.просадка — значит, рискуют теперь только частью профита.
Я знаю, что многие принимают более высокий риск. Я это проходила — не готова я к просадке больше 10% на старте. Потому что торгую не 1 и не 10 контрактов, наверное.
avatar
silentium, значит, Вы можете существенную часть от названой суммы разместить, например, в облигациях. Но далее вступает в силу портфельный подход. Предположим, за 3 месяца заработали 16% на сетке. Можно увеличить риск, из той концепции, что прибыль не так жалко, а можно перевести часть денег снова в облигации и восстановить соотношение рисковой и консервативной части. 
avatar
SergeyJu, я использую портфель НС. Я бы хотела, чтоб мы достроили портфели для SI — пока это тестируется. И сейчас уже идет работа по новой технологии. Пока нет всех процедур, но результаты уже лучше. Это я типа объясняю, что есть, куда инвестировать… Пока не облигации — просто счет в банке. Но спасибо за подсказку — я туда даже не смотрела еще. Мне же был нужен безрисковый актив с быстрым доступом.
avatar
silentium, смотрите на ОФЗ, нет риска эмитента и ликвидность в известном смысле максимальна. И еще — некоторые брокеры учитывают их в качестве обеспечения. 
Я сейчас торгую Ри и Си в активной части, акции и облиги — в пассивной части портфеля. надеюсь, что комплексный подход понравится и Вашим инвесторам. 
avatar
SergeyJu, спасибо, обязательно посмотрю. Если что — в личку к Вам на консультацию, да? Можно?
avatar
silentium, можно. Но, если у Вас вопрос будет по облигациям — рекомендую billikid'а, он профессионально работает на этом рынке много лет и все время держит руку на пульсе. А я в этом деле давно уже не профи, а любитель.
avatar
SergeyJu, точно, спасибо, что напомнили про такую личность здесь на смарте. Он «сильно профи». К нему надо подготовленным идти с вопросами.
avatar
SergeyJu, наш профессор говорил: Правильный вопрос содержит 95% ответа.
avatar
silentium, а что тема обсуждения??? )))) никакой конкретики в топике нет, обсуждать технологически тут нечего.

обсуждать как вы в процессе тестирования НС отсеиваете ошибки второго рода? Или как избегаете накопления статистической погрешности (генетического мусора), которая со временем может начать портить анализ? Так вы же сами признались, что вы не специалист
Лыцарь печального образа, про технологию — рассказала. Основные этапы создания описала. Ссылку на используемую СЕЙЧАС библиотеку — дала, наш опыт использования стандартной библиотеки — дала. Процесс генерации НС — дала. Генетический алгоритм — дала. Не о чем было поговорить? Откуда столько мешанины в Ваших комментариях? Видимо, все-таки Вам эта тема неинтересна, или Вы читали через строчку. В любом случае — спасибо за количество комментариев, оставленных в моем блоге.
avatar
Лыцарь печального образа, но в этом направлении мы тоже ищем — добавить на входы данные по зависимым инструментам. 
avatar
SergeyJu, нет, не так. Делается разбиение и полностью проводится процесс обучения, без всякого перемешивания. Получаем результат для одного разбиения. Потом все это повторяем для других разбиений. После оценки всех разбиений получаем итоговую оценку. В этом и есть суть скользящего контроля.
avatar
silentium, а потом наступает этап скрещивания и получения новых «гибридных» НС. И Вы перемешиваете контроль и оптимизацию заново, не так ли?
avatar
SergeyJu, да, это чередуется. Фактически, скользящий контроль входит в состав фитнесс-функции для ГА.
avatar
silentium, и, тем самым, вопрос переоптимизации снова встает во весь рост. 
avatar
SergeyJu, типа того.
Получается НС не полностью динамические, а статические структуры, которые периодически перестраивают «фитнес-функциями». Отсюда либо рынок такой лабильный и постоянно меняется в структуре и движении, либо НС не совсем НС
SergeyJu, все проф-вопросы комментирует кодер. Все мои ответы Вам  проверяет кодер. Я не занимаюсь кодированием, но читать коды могу — образование позволяет. Можно 10 часов проговорить с кодером — область «незнания» только увеличится. Поэтому не стараюсь знать все, но понимаю все. Не стоит задача раскрыть нюансы. Мы защищаем свою технологию. 
avatar
silentium, 
«2. На пальцах можно, конечно. Применяется много методов скрещивания для разных типов данных. Для одного типа данных тоже несколько вариантов скрещивания. Там очень серьезные модификации ГА. Например, типы скрещивания так же эволюционируют наряду со значениями.»:

На пальцах вы налили воду.
В:«Как скрещиваются НС»
О: «Как-то скрещиваются. Много вариантов. Серьезные модификации. Они эволюционируют»

Нехотите отвечать по существу — ну так и напишите, ноу-хау.
Лыцарь печального образа, пишу — ноу-хау. Все возможные преобразования ГА есть в открытом доступе. НОУ-ХАУ в том, что мы искали и пробовали многое. Кодили все процедуры сами. Выбрали то, что принесло результаты. Так понятнее? Там в заголовке статьи есть «почему я не выполню обещания». Я не могу до кодов и параметров рассказать, что у нас работает. Это наш поиск и наш результат. Я хотела найти людей, которые шли параллельным путем и тоже добились результатов. Мы могли бы быть друг другу полезными — просто время жизненное и машинное сэкономить на экспериментах.
avatar
silentium, Мне-то все понятно. Мне единственно непонятно зачем наливать человеку воды в уши вместо того чтобы ответить 6ю буквами.

Обычно воду наливают те, кто сам недопонимает как работает то что он продает/рекламирует или те, кто продает фуфел, но стремится запутать покупателя. Это сейчас не лично против вас, а наблюдения вообще.
Лыцарь печального образа, я и не воспринимаю Ваши слова против себя. Это Ваше мнение. Я с Вами согласна в основном. Только, по-моему, покупателю вообще не нужно знать, как это устроено и из чего это сделано. Его должно интересовать КАК ЭТО РАБОТАЕТ и КАКИЕ РЕЗУЛЬТАТЫ ПРИНОСИТ. Вы можете не знать до последнего винтика устройство Вашего автомобиля, но прекрасно пользоваться им. Главное, чтоб машина была на гарантии и не ломалась. Так спокойнее, да? Это с точки зрения пользователя. Ему моя статья о технологии — без надобности.
avatar
silentium, так вы и определитесь, вы тут покупателей ищете которым не интересно КАК устроено, или единомышленников. А то вы то одно пишете, то другое.

Статьи о технологии тут нет, вы уж извините. Тут есть рекламный проспект
-Мы много работали
-Нашли специалистов
-Уникальная технология
-Мы берем и смешиваем, потом замешиваем, потом ибридинг
-Число интересующихся растет в… степени
-Все тесты положительны
-Мы продолжаем развиваться дальше

Я долгое время занимался продажами сложнейших програмных и аппаратных комплексов, так вот все рекламные проспекты «купите» были приблизительно такие… причем там хоть поподробнее была детализация )
silentium, я иду отчасти перпендикулярным путем. В каждом отдельном классификаторе (=торговой системе) должно быть мало как индикаторов, так и решающих правил. Меньше, чем пальцев на руке. В чем сила, брат? А сила в портфеле.
avatar
SergeyJu, Сергей, это для Вас от нашего кодера. Спасибо Вам за комментарии по-существу.

По генетическому алгоритму.
Наш понимает три типа данных — битовые, целые и вещественные. Все три можно использовать в составе хромосомы одновременно. Для битовых применяется тип скрещивания «point» и «multipoint». Для целых они же, и еще «flat». Для вещественных они же, и еще «BLX» и «uniform». Применяемый тип скрещивания хранится в хромосоме как параметр, и обрабатывается ГА так же, как и все остальное. Некоторые типы скрещивания имеют параметры, они тоже в хромосоме и тоже эволюционируют. В результате выживают те методы, которые работают лучше.
Это все ускоряет сходимость, но на самом деле ГА — довольно простая штука и работает всегда, если правильно написана фитнес-функция. Все эти модификации были сделаны, когда проводились эксперименты по непосредственному обучению НС с помощью ГА. Это довольно тяжелая задача для ГА — подбирать одновременно несколько десятков тысяч параметров. ГА справился, сети обучались довольно эффективно. Но… полученные таким образом сети потеряли самую важную свою функцию — обобщающую способность. То есть, они показывали профит только на интервале обучения, а вне его — хаос. Поэтому я счел такой путь бесперспективным.
Наверное, можно обучать сети с помощью ГА, но для этого нужно намного большую обучающую выборку. А такой на финансовых рынках нет.
Поэтому ГА сейчас у нас используется для выбора архитектуры сети, входов, гиперпараметров обучения. А само обучение сетей осуществляется традиционными методами, вариантом градиентного спуска.

avatar
silentium, ну хоть какая-то конкретика, про градиентный спуск
А почему не полноценный метод сопряженных градиентов?
Лыцарь печального образа, Ньютона-Рафсона :)

avatar
SergeyJu, жжоте )
silentium, "То есть, они показывали профит только на интервале обучения, а вне его — хаос."

Жуть какая.Это как сформирована НС, что на подаче тестовых данных она показывает профит, а на подаче свежих — хаос???
Какой же диапазон тестовых данных на вход подавался?

Не могу поверить, что на тестовых данных допустим за 2 месяца при прогоне — профит, а на текущих тут же хаос. Не меняется так быстро рынок и его структура
Лыцарь печального образа, обычная переподгонка. Прямое следствие низкого отношения сигнала к помехе.
avatar
SergeyJu, хорошо, давайте определимся, откуда по вашему берутся помехи?
Лыцарь печального образа, такова природа более-менее свободных  рынков, я полагаю. Не зря же движение цен сильно похоже на фрактальное.
avatar
Лыцарь печального образа, у меня складывается впечатление, что Вы выбираете из текста какое-то понятное для Вас слово и цепляетесь за него. Зачем это Вам? Вы же не собираетесь ни использовать, ни создавать НС? Я стараюсь отвечать на все комментарии, но в рамках конструктивной беседы. Я приглашала Вас в блог, если Вам действительно интересна тема. Что могла рассказать, я рассказала. Вопросы типа «а почему не с перламутровыми пуговицами?» подразумевают отсутствие ответа, и далее Вашу фразу «Будем искать...» В тексте о ГА написано Поэтому я счел такой путь бесперспективным. Почему вместо «Спасибо, что сократили мне время на проверку этого варианта» — троллинг?
avatar
silentium, вот так мне понятнее. Спасибо.
Спросите Вашего кодера, а он не пробовал радикально упрощать работающую сеть? То есть решить в каком-то смысле задачу понижения размерности.
avatar
SergeyJu, радикально упрощать — не пробовал (если Вы имеете в виду методы прореживания сетей) — это от кодера. Что пробовали — объединяли входы в группы (это несколько уменьшало количество связей), пытались выделить «наиболее важные» входы. Сизифов труд.- это от меня.
avatar
silentium, я не имел в виду какой-то конкретный стандартный механизм. Просто, общее направление поиска. Ответ понял, спасибо.
avatar
Лыцарь печального образа, это просто один из вариантов эволюции архитектуры и фичер инжиниринга (если абстрактно, некая метаоптимизация) с тем чтобы выбранная сеть нашла лучший суб оптимальный оптимум
обычная многослойка тем и страдает что очень зависит от фич (входных данных) я предлагал использовать ConvNet, но судя по объему вычислений (перебора моделей) не потянут 
avatar
SergeyJu, где же Ваш плюсик, если действительно понравилось? Здесь это важно… как выяснилось
avatar
silentium, Вы не поверите, мой плюсик был первым. 
avatar
SergeyJu, сори, глюк какой-то был. Спасибо еще раз!
avatar
 Все вышеописанное нормально и функционирует, вне зависимости от способа формирования НС только при исходном предположении, что рынок полностью замкнутая и независимая от внешнего мира система, или наоборот полноценная транзитивная система от внешнего мира.

Т.к. было упомянуто что НС учитывают все выступления и прочие ЧС то варианта 2.

1) Психология рынка не зависит от ЧС, и ЧС — просто реперная точка чтобы случилось то что должно было случиться по любому
2) Психология рынка зеркальна к внешнему миру и можно по рынку ПРЕДСКАЗЫВАТЬ черные лебеди во внешнем рынке.

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

Но это опять допущения.
Результаты то какие? Какая доходность? Кака просадка?
avatar
Чужой, так на сайте все есть. Текущая версия 18.3
avatar
У меня сложилось ощущение, что ваши НС — просто автомат для алгоритмизации ваших торговых идей, подаваемых для обучения.
Что на самом деле там в основе все просто, а НС — просто удобная маркетинговая обертка — что, кстати, хороший ход, возьму на вооружение.
avatar
Quant-Invest, Ваше ощущение ошибочно. Никаких правил и зависимостей мы ей не даем, примеры для обучения не «придумываются» нами исходя из наших торговых идей. Это противоречит философии НС. Если Вы можете алгоритмизировать все действия успешного трейдера, и такая стратегия покажет на длительном периоде устойчивый положительный результат — Вам НС не нужна. Я таких стратегий не знаю. В подавляющем большинстве случаев, трейдер даже не может формализовать свои действия.
avatar
silentium, Я так и подумал, что ошибся, но всегда лучше переспросить, верно? Кстати, если ваши НС такие прям прибыльные, подумайте насчет таких информеров на своем сайте:



avatar
Да, мы уже задумались. Нам предлагали сделать онлайн трансляцию сделок хотя бы на какой-то период — я против. Для меня нет информативности в результате одной сделки. А вот так, как у Вас это сделано — попробуем. Спасибо за подсказку для сайта!
avatar
ЛЧИ 2008 :
1
eva  * ЗАО «ИК „Ай Ти Инвест“  12.09.2008 87 463,00 1382 0,19 6 179,15 
какое отношение ваши поделки имеют отношение к этой легенде лчи? 
avatar
technic, в 2008 году меня и на рынке еще не было — деньги были в управлении в инвест-компании. Брокер — Сбер — форева. Нейронными сетями занимаюсь с 2014 года, кодер — гораздо раньше. EVA — новый продукт. Эта версия ни в каких конкурсах не участвовала. Прошлая была на ЛЧИ-2015. Комментарии по этому поводу были в предыдущем топике Нейронные сети. Послевкусие. Заблуждения, ошибки, косяки. Первые 15 месяцев эксплуатации бота на нейронных сетях.  smart-lab.ru/blog/329272.php  
Чтобы не утруждать Вас прочтением всей ленты — вот он:
Вопрос: 1.если бот работает уже 15 месяцев то почему его не было на лчи с постом о том какой ник выбран на лчи перед его началом а не после конца.
2. под каким ником будете участвовать на лчи 2016?
Ответ: Artemunak, спасибо за комментарий. Отвечу Вам:
2. В ЛЧИ 2016 участвовать не планировала.
1. По просьбе брокера один из счетов был подключен к ЛЧИ 2015. Ник, по-моему, мой — silentium.
Ничего показательного из этого не вышло. Потому что:
1. Исходя из принимаемого риска в 10% от начального капитала, если я правильно помню, на работу 1 контрактом фьюча РТС надо было располагать суммой около 100000 рублей. Естественно, не нужно все держать на брок счете (нужно, чтоб эти деньги просто были вне риска), поэтому на брок счете сумма, раза в 3-4 меньше. А расчеты % на ЛЧИ идут от изменений депозита. Соответственно, просадка, в которую я попала, завышена в 3-4 раза. А просадка была. И она есть у нас на графиках — как это скрыть?
2. Не получается сделать машинку для выигрыша на конкурсах. Имеем то, что имеем — альтернативу банковским %, относительно пассивный способ зарабатывать с низким риском.
Надеюсь, полно ответила на Ваш комментарий
avatar
technic, плюсанула Вам в карму и за коммент — где же Вы такую историю черпаете — аж за 2008 год — поделитесь? Нет, ну тиковые файлы и у меня есть за этот период, но чтобы сохранять данные ЛЧИ — или это в архиве биржи?
avatar
Наблюдал в живую этого робота в том году, поэтому название режет слух. типа такой брэнд уже был рвал всех и вся… данные с бирже из архива конкурсов.  
avatar
technic, это точно — не наша Ева. Мы никого не рвали ни в каких конкурсах. Мы ж не хфт… беспредельные. А если серьезно — есть у нашего кодера, конечно, амбициозные мысли красиво показать себя на ЛЧИ. Только у Евы — совсем другая философия. Или это мне больше по душе стабильность и безопасность…
avatar
silentium, Если ваш робот попадет в топ10 ЛЧИ то его наверняка будут сравнивать с evoй 2008 ну те кто вспомнит но наверно таких немного) если он будет под ником eva
avatar
technic, Ева не будет на ЛЧИ. Если какой-то из ботов будет по показателям подходить для конкурса — будем участвовать. Но имя уже будет другим. Заинтересовали Вы меня Вашей Евой-2008 Буду искать ее. Честно — не знала. EquityValueAvailability — как-то так рассуждали.
avatar
silentium, может, Availability ?
avatar
Quant-Invest, очепятка. Сейчас исправлю. Спасибо.
avatar
technic, кстати, все версии гоняем на периоде с 2008 года — интересно же, как там отработка была бы. Ну это только мне интересно…
avatar
Смотрите — два предыдущих дня работы робота. Когда многие (и я в том числе) шортили рынок и лонговали доллар… 

1 реальная сделка за 1 день не репрезентативна, нужно штук 20, а лучше 50.
avatar
SciFi, на сайте выкладываются ВСЕ сделки с запуска бота. Текущая версия в эмуляции с 01.12.2015 по 31.03.2016. В бою с 01.04.2016. Скрины выкладывала для того, чтобы показать, что в цене есть все. Нейронка не может знать, ГДЕ сейчас нефть, ЧТО решил ЦБ со ставкой, скока там буровых прибыло-убыло, где и кто и что и кому сказал. Но при этом нейронка принимает правильные решения.
avatar
Если возможно, на пальцах, какая роль матлаба в этой цепи? Почему именно он.
avatar
Андрей К, вроде же все написала в статье про роль Матлаба. Мы в нем сети считаем. Ссылку на библиотеку дала. Есть еще и стандартная библиотека для НС на Матлабе. Про нее тоже написала. Конкретизируйте вопрос?
avatar
Почитал (в том числе все комменты)
Ну, для начала стоит поблагодарить автора за то, что не пропал(а), и какая-то информация все же была дана.
Однако:
1. Судя по всему авторы ищут скорее покупателей, чем единомышленников (чисто IMHO), а для них глубокие подробности действительно не обязательны.
2. НС, которая тут описана, на мой взгляд слишком сложна. Я представлял себе торговые НС несколько проще, а учитывая особенности создания данной конкретной НС, мне проще написать вполне четкий алгоритм для обычного робота, с набором параметров, которые с определенной периодичностью будут проверяться и пересчитываться. В конце концов задача НС получить на входе набор параметров, совместить их между собой по определенному алгоритму (для НС, как я понимаю, это объединить разрозненные нейроны связями с определенными весами), далее получить на выходе вероятность и потенциал движения цены в определенную сторону в течение определенного периода времени. Обучение НС сводится к подаче тестовых наборов сигналов, которые должны быть взяты из реальных данных и провести сравнение выходного сигнала с результатами тестовых данных. На основании отклонений результатов должна быть произведена корректировка весов. Ну, дальше все понятно… Так вот, если я правильно понял автора, то данная НС не только веса корректирует в процессе обучения, но и позволяет себе изменять связи между нейронами. Возможно я ошибаюсь, но такой подход кажется мне весьма рискованным, и больше похожим на игру хаотического совмещения случайных данных. А учитывая трудозатраты на построение и реализацию такой НС, эффективность такого подхода также начинает вызывать сомнения.
3. Не смотря на написанное выше. Каждый из вариантов торговли имеет право на существование (в конце концов даже по астрологическим прогнозам торгуют). Пожелаю авторам успехов работе, а сам пожалуй еще больше отдалюсь от темы НС (ну не вижу я большого смысла на столько усложнять процесс покупки-продажи).
avatar
сложный подход.
Желаю авторам сторицей оправдать затраты.
Чудовищно тяжелый труд!
avatar
Рад снова Вас читать! Как все-таки подкупает энтузиазм Вашей команды. Жаль, что у меня сейчас мало времени на погружение и дискутирование. Предмет все же требует повышенного внимания, и я бы даже сказал отречения от других мирских дел)
avatar
Спасибо за материал, 
Я одного понять не могу, вы используете DL библиотеку на просто громадном количестве сетей ( 50 хромосом * несколько сетей для каждой для CV * etc ) Какие у вас ресурсы вычислительные? DL по опыту работает только на больших количествах данных (от сотни тысяч примеров) Если я правильно помню у вас обычная многослойка, каков порядок количества нейронов, слоев, и связей?
Используете ли L2? Добавьте dropout если действительно DL, посмотрите как отразится на устойчивости результатов. 
Может вопросы уже задавал (интервал между постами большой, память успевает забиться текущим проектом :)), сорри 

avatar
 используется только цена/объем (или их производные, индикаторы) и ничего больше? (новости, срез по позициям участников и пр?) 
avatar
Некое общее вью для всех, в данной области есть два подхода к работе:
— старый, когда ведется подбор архитектуры сети (архитектура может фиксироваться или развиваться, эволюционировать) и подбор параметров (или их комбинаций и пр) В качестве nn обычно используются многослойные сети с небольшим числом параметров (весов и нейронов) Бич многослойных сетей прямого распространения — сильно зависит от качества feature engineering.
— новый (deep learning), когда изначально сеть состоит из двух (или более) подсетей — одна для поиска лучших параметров (из существующих, желательно брать необработанный низкоуровневый сигнал), следующая за ней для решения основной задачи. Те задача перебора параметров методом ГА или др здесь проводится самой сетью. Ошибка распространяется по всей сети и вся сеть подстраивается одновременно. Количество параметров (нейроны и связи) здесь громадные. Количество слоев может исчисляться десятками и сотнями (последние исследования от microsoft research). Проблема переобучения здесь решается просто — dropout'ом — часть нейронов просто отключается и проверяется устойчивость сети (так исключается переобучение). Новый подход на практике нереально реализовать без GPU — неэффективно (в $) и затраты времени будут очень большие.

Авторы топика как я понял используют первый подход. 
avatar
nbvehrfr, подход первый. Но и в нем  dropout и  dropconnect  работают. Сейчас еще третьим подходом занимаемся. 
avatar
silentium, btw, я не говорю что он плохой :) а что за третий (в общих чертах)

avatar
nbvehrfr, в личке отвечу Вам
avatar
Хорошая статья. Самое главное конечно — что подавать на вход. Теоретически если подаётся цена (изменение цены), то индикаторы там не нужны.
avatar
Обсуждать технологию построения как и идею использования НС в алготрейдинге пустое дело, поскольку, если там и есть ноу-хау, то об этом не расскажут, а что такое нейросети… ведь нейросетями можно назвать что угодно… с одной стороны, авторегрессия (ЛРФ) это та же нейросеть, принятие решений по индикатору это та же нейросеть… и т.д.

Немного по существу.
Пара цитат с вашего сайта:

  • Среднее количество сделок в день 4.2, что соответствует значению в тестовом периоде.

 

  • Прибыль за период с 01.10.2015 по 31.03.2016 составила 41500 пунктов на 1 контракт, в том числе, за 2016 год – 16730 пунктов.


Получается 6 месяцев по 4.2 сделки в день, т.е. всего было 504 сделки,
т.е. средняя сделка это 41500/504=82.3 пукта на 1 сделку.
Т.е. средняя сделка на тестовом периоде всего лишь восемь шагов цены? Это очень мало к сожалению… Пойдет для 1 контракта… пойдет для 10… но уже с трудом. фРТС не такой супер ликвидный как это принято о нем говорить. Т.е. 1-2-3 шага цены вы будете терять на входе и потом на выходе из сделки при торговле от 10 до 100 контрактов… Итого, после этого средняя сделка у вас упадет более чем в два раза. Если я неверно интерпретировал показатели вашей системы, поправьте меня. А пока совершенно понятен смысл, почему вы это продаете:) Молодцы:)

avatar
Sergey Pavlov, Спасибо Вам за замечания по существу и за то, что так глубоко зашли на нашем сайте. Значит, нужно нам править информацию на сайте, чтобы она была более понятна. А пока разъясню здесь: Среднее количество сделок в день и средний размер профита/лосса в сделке не совсем корректно использовать для определения потерь при проскальзывании, т.к. частота и результаты сделок сильно отличаются. В реале есть день с 12 сделками и результатом -1460п и день с 3 сделками и результатом +2980п. Проскальзывание на трейд в реале в разных городах нашей страны от 5 до 10 пунктов. В среднем по месяцу. Это для объема до 50 контрактов. Свыше 50 контрактов мы работаем портфелем нейросетей, объем делится между всеми «головами» условно поровну. Так же ограничиваем число контрактов на 1 голову — не более 50. Головы в портфеле работают как правило несинхронно, т.е. крайне редко встречается ситуация, когда ВСЕ одновременно входят в позицию. Выход из позиции (окончание работы) в 23.45, но это тоже не значит, что весь объем будет выходить.
Как построена работа портфеля? Например, у вас 240 контрактов (точнее, у меня, конечно) и 6 голов. Значит, по 40 контрактов на голову. 
1. 3 встали в лонг, 3 в шорт. В рынке — 0 позиций.
2. 2 встали в лонг и 4 в шорт. В рынке 80 контрактов в шорт.
3. 2 встали в шорт и 4 в лонг. В рынке 80 контрактов в лонг.
4. Все встали в лонг или в шорт. В рынке 240 контрактов в лонг или в шорт.
Эти позиции меняются динамически, минимальный срок изменений — 5 минут. Об этом было выше в чате.
Больше 273 контрактов не пробовала торговать (это был 13-головый портфель по 21 контракту). Не вижу проблемы сделать портфель из такого количества сетей одной генерации, чтобы можно было заложить туда до 500 контрактов и не толкаться в стакане плечами. Только есть же и другие инструменты, кроме фьючерса на индекс РТС. 
Отсюда следует, почему мы продаем. Много инструментов, разумный, консервативный подход к риску, как следствие — требование весьма приличных сумм для обеспечения работы стратегий и весьма скромные цифры в % годовых. Можно постепенно заработать стратегиями для работы на других инструментах. Просто мы хотим сократить время на включение в работу всего, что сделано. Это как раз тот случай, когда время — деньги.
avatar
silentium, в реальных торгах не имеет значения, сколько пунктов у вас пришлось на прибыльные, а сколько на убыточные сделки и в каком количестве штук. Средняя сделка есть средняя сделка. Неважно, какой окажется данная сделка в итоге (прибыльной или убыточной), она в среднем проскальзывает одинаково. Поэтому, если средняя в 82 пункта это именно 8 шагов цены, то это очень мало. Как вы меняете текущую позицию? Рыночной заявкой? Лимитной? Как поступаете с неисполненной заявкой?
avatar
Sergey Pavlov, действующая версия чуть шустрее — 7 сделок в день. Вы можете в Хрониках посмотреть — там списки сделок выкладываются. Если считать, как Вы — при текущей средней в 80 пунктов это 560 пунктов в день. При потере от 35 до 70 пунктов (проскальзывание) в день — существенно в %, но не убыточно. Часто проскальзывание бывает в лучшую сторону, но это к слову. Я слежу за реальными счетами тех, кто работает. У каждого свои технические возможности — настраиваем работу по месту. Про заявки: лимитка на open свечи принятия решения с заданным отступом. В течение заданного времени перевыставляется с теми же условиями, если не сработал весь объем. Неисполненная, естественно, снимается. Довыставляется неисполненный объем. Если не было входа на этой 5-минутке, (или если по причине сбоя связи, открыт лишний объем) — бот синхронизирует позицию на следующей (встроен эмулятор). Крайне редкая ситуация за последние два года.
avatar
Sergey Pavlov, может мы с Вами перенесем обсуждение в личку? А то не в теме топика беседуем… Если хотите, конечно.
avatar
silentium, благодарю за разъяснения:) а отступ лимитной заявки от open в какую сторону, в лучшую или в худшую и на сколько шагов цены?
avatar
Sergey Pavlov, отступ в худшую, конечно. В лучшую лимитка сработает и без этого. Сработка все равно по рынку же происходит. Заявка не условная.
avatar

Сложнова-то. Как я понял, а я старался, но скорее всего не помогло, принцип этой нейросети, многокртное «усреднение» входных параметров… да и вобще не по мне это, как тут есть коммент надо попроще алгоритмы… они надёжней в том плане что если что-то пойдёт не так диагностировать где и что давольно просто… если же что-то пойдёт не так в этом алгоритме… даже лучше не начинать разбираться где это случилось..

Но для общего развития было интересно ознакомиться, спасибо!

avatar

теги блога silentium

....все тэги



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