Блог им. Timur748

Вопрос по динамической оптимизации

Здравствуйте Уважаемые участники форума!

Обращаюсь к Вам за советом по такому вопросу:

Имеется торговая система, построенная с применением нейронных сетей, которая имеет 12 оптимизируемых параметров – вещественных чисел в диапазоне от -1 до 1.

В качестве эксперимента была проведена оптимизация этих параметров на фьючерсе на обыкновенные акции сбербанка на минутках. Количество точек данных для оптимизации -30000 (это примерно 2 месяца). После этого система проверялась на новых данных – 10000 точек.

Результаты оптимизации и проверки представлены на рисунке.
Вопрос по динамической оптимизации

Светло-зеленая кривая – это эквити счета, ниже – график цены.

Зеленые и красные линии – это сделки, просто их очень много и там все сливается.

Собственно сам вопрос: Что будет эффективнее в реальной торговле – переоптимизация параметров раз в день на последних данных за 2 месяца (последние 30000 минутных свечей), или переоптимизация каждый час на последних 3000 минутных свечах, или пероптимизация каждые 5 минут, или еще какой то вариант? То есть интересует оптимальная частота оптимизации и размер обучающего набора данных. Причем наблюдается такая взаимосвязь: чем больше обучающий набор данных, тем меньше средняя доходность системы на обучающем наборе, но тем больше вероятность того что система будет показывать эту доходность на данных которые она не видела. И наоборот, чем меньше обучающий набор, тем больше средняя доходность на обучающем наборе и тем меньше вероятность, что система покажет прибыль на неизвестных данных.   

 Надеюсь услышать Ваше аргументированное мнение по этому вопросу.

Заранее спасибо!  

Если кому интересно:
02.04.2014 20-00 Результаты работы за первый день.
Торговались 2 фьючерсных контракта SRM5 с 11-00 до 18-30
252 сделки, вариационная маржа — 292 рубля, комиссия биржи -63 рубля, комиссия брокера -75 рублей. 
Итог дня +154 рубля, если считать в процентах к ГО то это 7,7%
 Вопрос по динамической оптимизации
Зеленая линия отражает эквити счета, там видна просадка при сильном движении.  

★10
59 комментариев
лично я против любых оптимизаторов, это рано или поздно приведет на дно. индикаторы — тоже туда же.
avatar
В качестве просто мат модельки( коня в сферическом вакууме ), сделано грамотно.
Со стороны реальной торговли доходность не будет соответсвовать красивой зеленой линии эквити ввиду ряда причин
avatar
Press, Понятно что такая доходность не будет, главное чтобы вообще была. Каких причин?
avatar
Какая архитектура сети, что подаете на вход?
Машковский Евгений, На вход подаются значения осцилляторов и индикаторов волатильности. на выходе 1 — открываем покупку, 0 — закрываем. Для продажи зеркально.
avatar
Мне кажется тут высоки риски переоптимизации
30 0000 точек слишком мало для оптимизации. Используйте большее количество данных (скажем год) и переоптимизируйте каждые 2 месяца систему. Оптимизация чаще чем раз в неделю будет давать только подгонку под данные, инфа 100% ;)
avatar
SECRET, есть мнение, что VC-размерность для персептрона будет d+1, в случае автора по самым пессимистичным прогнозам — 5. Для такой VC-размерности хватит и 50 точек при условии, что модель верная. тут в модели проблема а не в количестве точек :)
avatar
Arsen G, 100% :)
avatar
Во первых, чем больше выборка, тем меньше риск «переобучения».
Второе: как только в торгуемом множестве появляется новый «исторический» максимум или минимум (которого не было в обучающей выборке), нужна сразу перетренировка
Третье: Эквити красивое-хорошо, но обратите внимание на «математику»
Четвертое: Есть уже специальные «встроенные» нейронные сети которые перетренировывают Ваши сеть хоть на каждой свечке
avatar
Ничего не понял
avatar
ML1210, Ну эта карочь, есть такая приблуда-сама за тебя деньги зарабатывает, типа кидаешь ей индикаторы, нажимаешь копку «рубка капусты» и она начинает капусту рубить, сама продает сама покупает, можно покупать пуевку на круиз, она сама будет бабло грести
avatar
на каждый новый фьюч
avatar
ICEDONE, Да можно «склейку поставить, а сделки чтобы делала на фьюче который в обращении сейчас
avatar
Я думаю, что точный ответ даст только практика. Все это, те оптимизацию и прогон новых параметров надо самому тестировать, а не на форумах спрашивать
avatar
Cheshirscy, Как раз -это не тот случай, где нужна практика))).
Праметры сетью подбираются сразу, прогон можешь брать хоть за 10 лет.
То есть нейросеть -это не тест. Надо знать, как ее настраивать, то есть, что подавать на вход, чему оучать, сколько нейронов использовать, что предсказывать, сколько свечей предсказывать и т.д.
Не зная теории настройки и браться за это дело незачем
avatar
Иван Петров, Ну либо кто-то очень влюблен в нейросети, либо… одно из двух :). Я предлагаю рассматривать любую торг систему, как черных ящик, которому на вход подаются рыночные данные, а на выходе у него сигналы покупки продажи. Как только разговор заходит про оптимизацию, значит у ящика появляется еще один вход — настраиваемые параметры. т.е. качество сигналов зависит как от рыночных данных, так и от настраиваемых параметров. Не знаю, на чем вы тестите, я, к примеру использую ами брокер. У него есть такой ражим тестирования «Walk forward» называется. Есть суть в том, что сначала задаешь два периода — первый это период, на котором определяются оптимальные параметры (in sample data), а второй — на котором система торгует с этими оптимальными параметрами (out of sample data). Например. Период определения параметров 01,01,2006 — 31,12,2007 (IS), период торговли 01,01,2008 — 31,01,2008 (OOS). Все результаты торговли в январе 2008, откладываем для дальнейшего анализа. После этого, опять определяем оптимальные параметры за 01,02,2006 — 31,01,2008, а торгуем 01,02,2008 — 28,02,2008, и так далее. После этого берем все результаты OOS, и смотрим что у нас получилось. А теперь — вопрос, почему такое не подходит для нейросетей?
avatar
Cheshirscy, ты не понял, что тебе Иван сказал.

еще раз smart-lab.ru/blog/246233.php
avatar
crazyFakir, Я по этой ссылке тоже ничего не понял. Выявление скрытых закономерностей, это понятно, а как вы качество этих найденных закономерностей оценивать собираетесь?
avatar
Cheshirscy, тебе придется разобраться в вопросе самому — ссылка это шанс, а мне нет смысла тебе тут лекцию читать.

твой вопрос так же далек от сути как и этот топик.
avatar
crazyFakir, Знаешь, была идея в этом досконально разобраться. Почитав «введение в нейросети», понял, что это не мое. Т.к. мне не нравится, когда я не понимаю почему торг системы выигрывает и почему сливает. Я, наверно, «уже старенький», и не хочу свою деньги доверять какой-то виртуально найденной закономерности, которую я не могу пощупать, поэтому я дальше и не полез. То что вы с этим разобрались и используете для своей выгоды — молодцы. И вместо того, что бы огрызаться — ответили бы на мои 2 вопроса: Почему торг систему с нейросетями внутри нельзя использовать как «классический черный ящик»?, И второй вопрос, как вы определяете, что ту закономерность, которую нашла одна нейросеть, вы будете использовать в реальных торгах, а другую закономерность, которую нашла другая нейросеть — не будите.
avatar
Cheshirscy, уже ответил, а ты хочешь без напряга въехать.
это не бывает. пока ты не поймешь, то что написано по ссылке — ничего дальше обсуждать смысла нет. и вообще мне это обсуждать смысла нет. это не так работает.
avatar
crazyFakir, Если ты не можешь объяснить свою теорию 8-летнему ребенку, значит, ты сам не понимаешь, о чем говоришь, и грош цена такой теории (© Эйнштейн).
Но от тебя я другого и не ожидал. Для меня, если человека зовут Ринат Негметов — это многое объясняет
avatar
Cheshirscy, Во первых, на вход нежелательно подавать рыночные данные.Потому как мы начинаем тогда привязываться к неким числовым значениям, а качество данных подоваемых на вход-важно.
В идеальном варианте это -1+1 данные которые колеблются в этих пределах.
Далее-мы ведь предсказываем рынок, поэтому что будем предсказывать? Прцент изменения цены или само изменения цены, через сколько свечек 1 две 10?
Тренировать сеть будем на максимальную прибыль минимальную ошибку малую просадку,
А много чего еще
Но параметры она как раз подберет сама)))
avatar
Иван Петров, На вход по-любому рыночные данные. Какой там фильтр стоит, простая MA или как то преобразованные значения свечей и или сделок, это уже второй вопрос. А вот предсказывать придется и направление рынка и процент изменения, да и количество свечек, через которое эти изменения должны случиться. Этим же в принципе любая торг система и занимается. Тренируйте на что хотите, я свои тренирую на параметр CAR/MD, т.е. среднегодовой доход в процентах разделенный на максимальную просадку тоже в процентах
avatar

2 смотри среднюю сделку… для сбера она должна быть больше 0.2%...
3 имхо у тя ниче не работает — средняя сделка мала… 40000 сделок за 2 мес очень много
4 и ты учти что шорт бывает запрещен
avatar
ves2010, :)
avatar
avatar
Сколько сделок за сессию в среднем?
avatar
stitrace, от 50 до 100
avatar
Оцените устойчивость ваших вариантов. Например коэффициентом Шарпа.
avatar
А, вижу. 1000 сделок за сессию получается. В таком случае эти результаты бесполезны, т.к. Профит сделки в пунктах в пределах среднего размера спреда. Тут нужно учитывать вероятность исполнения по расчетной в тесте цене. Вобщем у тебя получается hft, а для расчета hft алгоритм тестирования должен быть намного сложнее.
avatar
1. в машинном обучении используется эмпирическая закономерность — валидационная выборка это от 1/5 до 1/6 от датасета.
2. то что сделано у вас — не обучение, а фиттинг. надо понимать разницу. с таким же успехом можно было линейную регрессию построить и по ней торговать
3. проводили ли какие-либо нелинейные трансформации?
4. что за нейронная сеть? используете ли регуляризацию?
avatar
Arsen G, Да, трансформация с данными проводилась чтобы сгладить резкие выбросы. Сеть — однослойный перцептрон. Что такое регуляризация я не знаю.
avatar
Ажбаев Тимур, как один из самых доступных для новичков курсов: www.youtube.com/playlist?list=PLD63A284B7615313A
avatar
лучше отказаться от оптимизации вообще!!! В основном оптимизация- это подгонка. ЕЕ в принципе использовать не стоит
avatar
SMA, лучше с горяча ничего не говорить :), и тем более так одиозно :)
avatar
Cheshirscy, повторяй это перед зеркалом кажды два часа :)
avatar
crazyFakir, ок, и тебе не хворать
avatar
Cheshirscy, ну карты вам в руки. С оптимизацией, вы даже из мувингов сделаете мега прибыльную систему :D. Вопрос в другом: как вы с ними будете деньги отбирать?:D
avatar
какой % прибыльных сделок? какое соотношение между средней прибыльной и средней убыточной?
avatar
sheffield, пока еще не встроил в программу расчет этих значений. оптимизация ведется просто по значению абсолютной прибыли.
avatar
Ажбаев Тимур, тут есть один момент важный, систему желательно оптимизировать по следующим параметрам. Найти параметры, при которых максимизируются:

— мат. ожидание P(profif)*mean(profit) + P(loss)*mean(loss)
— коэффициент шарпа
— коэффициент сортино

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

Если не секрет, какие 12 параметров Вы используете? У каждого параметра должен быть «физический смысл», например — объем, количество тиков. Если Вы используете в качестве параметров — параметры свечей, то это не очень корректно — т.к. они производные другого параметра — волатильности и не имеют важного физического смысла.

Пробовали баесовские сети строить?
avatar
sheffield, Параметры — это весовые коэффициенты в нейросети. на вход подаются значения осцилляторов и индикаторов волатильности. все эти значения нормируются от -1 до 1 (для осцилляторов) и от 0 до 1 для индикаторов волатильности. С байесовскими сетями не получилось. Сейчас используется обучение с подкреплением (reinforcement learning). Насчет коэффициента шарпа — я пробовал использовать отношение прибыли к максимальной просадке, но тогда система генерирует слишком мало сделок.
avatar
Это что за нейросеть такая в которой всего 12 параметров??? Неслыханное дело!
avatar
Любые советы бесполезны, им следовать бес толку, и нет необходимости. Совет и помощь может только успокоить, но достичь понимания не поможет. Утвердить в понимании поможет только опыт и эксперименты. Пробуйте всё. Успехов!
avatar
eskalibur, Спасибо!
avatar
"… Причем наблюдается такая взаимосвязь: чем больше обучающий набор данных, тем меньше средняя доходность системы на обучающем наборе, но тем больше вероятность того что система будет показывать эту доходность на данных которые она не видела. И наоборот, чем меньше обучающий набор, тем больше средняя доходность на обучающем наборе и тем меньше вероятность, что система покажет прибыль на неизвестных данных. ..."
Если Вы используете сеть с одной архитектурой и одним и тем же кол-вом нейронов, то так и должно быть, т.е. чем больше обучающее множество тем сети тяжелее его запомнить соответственно она обладает лучшими обобщающими способностями на тестовой выборке.И наоборот когда обучающая выборка маленькая, сеть легко её запоминает(переобучается, но перестает обобщать) и дает хороший результат на обучающем множестве и плохой на тестовом.Вообще сама суть всех манипуляций научить сеть обобщать, а не запоминать, поэтому большого смысла в результатах на обучающей выборке нет, мало мальски вменяемая сеть легко запомнит обучающие данные и выдаст астрономический результат.Чтобы сеть обобщала, надо или задать такое кол-во нейронов чтобы она была не в состоянии запомнить обучающую выборку или остановить обучение до того как она переобучится, тут и наступают «танцы с бубнами».
По какому принципу Вы заканчиваете обучение сети по разнице ошибки на обучающей и тестовой выборках?
Машковский Евгений, Обучение заканчивается просто по истечению определенного количества времени, на тестовой выборке у меня сеть не калибруется, то есть программа ее видит только при проверке. Запустил уже в торговлю сегодня в 11-00. Буду экспериментировать, может и получится.
avatar
Ажбаев Тимур, Сделки были?)
avatar
Кирилл Вячеславович, Да, с 11-00 по настоящий момент 96 сделок, торгуются 2 контракта SRM5. Прибыль 147 рублей.
avatar
Ажбаев Тимур, Вопрос тестирования мне в принципе ясен… а скорость исполнения заявок(сделок) в данном подходе критична?? Какое подключение к бирже используете? (Плаза, или просто через терминал)
avatar
Кирилл Вячеславович, Да не, не критична. Там все равно лимитные заявки раз в минуту выставляются. Столкнулся с проблемами при обрыве соединения, остановил торговлю, сейчас скрипт дорабатываю. Подключение через Quik, скрипт Lua. С 11-00 до 15-00 144 сделки, прибыль 240 рублей. (я думаю просто рынок благоприятен сегодня, при резких движениях выносит в убыток).
avatar
Ажбаев Тимур, всего лишь раз в минуту? Неплохо.
И еще вижу комиссия брокера большевата у вас.
По основному вопросу мое мнение — если оптимизироваться меньше чем за день — теряется специфика времени дня, а она есть (утро, день, вечер, вечерка). С другой стороны поведение ранка внутри дня тоже имеет много общего. Я бы исследовал гибридный подход.
avatar
ща папа граль спалит… проверочные данные должны быть сзади…
avatar
ves2010, Если вы пытались пошутить… то неудачно!!! Я бы сказал что шуточки за 30 копеек ваш потолок.
avatar
Вы конечно мне не поверите, но эти наблюдения

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

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

Т.е. чем меньше историю для обучения брать, тем больше утешать себя, что это работает.
avatar

теги блога Тимур

....все тэги



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