<HELP> for explanation

Блог им. 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%
 Вопрос по динамической оптимизации
Зеленая линия отражает эквити счета, там видна просадка при сильном движении.  

 

лично я против любых оптимизаторов, это рано или поздно приведет на дно. индикаторы — тоже туда же.
avatar

ssome1

В качестве просто мат модельки( коня в сферическом вакууме ), сделано грамотно.
Со стороны реальной торговли доходность не будет соответсвовать красивой зеленой линии эквити ввиду ряда причин
avatar

Press

Press, Понятно что такая доходность не будет, главное чтобы вообще была. Каких причин?
Какая архитектура сети, что подаете на вход?
Машковский Евгений, На вход подаются значения осцилляторов и индикаторов волатильности. на выходе 1 — открываем покупку, 0 — закрываем. Для продажи зеркально.
Мне кажется тут высоки риски переоптимизации
avatar

kbrobot.ru

30 0000 точек слишком мало для оптимизации. Используйте большее количество данных (скажем год) и переоптимизируйте каждые 2 месяца систему. Оптимизация чаще чем раз в неделю будет давать только подгонку под данные, инфа 100% ;)
avatar

SECRET

SECRET, есть мнение, что VC-размерность для персептрона будет d+1, в случае автора по самым пессимистичным прогнозам — 5. Для такой VC-размерности хватит и 50 точек при условии, что модель верная. тут в модели проблема а не в количестве точек :)
Arsen G, 100% :)
Во первых, чем больше выборка, тем меньше риск «переобучения».
Второе: как только в торгуемом множестве появляется новый «исторический» максимум или минимум (которого не было в обучающей выборке), нужна сразу перетренировка
Третье: Эквити красивое-хорошо, но обратите внимание на «математику»
Четвертое: Есть уже специальные «встроенные» нейронные сети которые перетренировывают Ваши сеть хоть на каждой свечке
Ничего не понял
avatar

ML1210

ML1210, Ну эта карочь, есть такая приблуда-сама за тебя деньги зарабатывает, типа кидаешь ей индикаторы, нажимаешь копку «рубка капусты» и она начинает капусту рубить, сама продает сама покупает, можно покупать пуевку на круиз, она сама будет бабло грести
на каждый новый фьюч
avatar

ICEDONE

ICEDONE, Да можно «склейку поставить, а сделки чтобы делала на фьюче который в обращении сейчас
Я думаю, что точный ответ даст только практика. Все это, те оптимизацию и прогон новых параметров надо самому тестировать, а не на форумах спрашивать
avatar

Cheshirscy

Cheshirscy, Как раз -это не тот случай, где нужна практика))).
Праметры сетью подбираются сразу, прогон можешь брать хоть за 10 лет.
То есть нейросеть -это не тест. Надо знать, как ее настраивать, то есть, что подавать на вход, чему оучать, сколько нейронов использовать, что предсказывать, сколько свечей предсказывать и т.д.
Не зная теории настройки и браться за это дело незачем
Иван Петров, Ну либо кто-то очень влюблен в нейросети, либо… одно из двух :). Я предлагаю рассматривать любую торг систему, как черных ящик, которому на вход подаются рыночные данные, а на выходе у него сигналы покупки продажи. Как только разговор заходит про оптимизацию, значит у ящика появляется еще один вход — настраиваемые параметры. т.е. качество сигналов зависит как от рыночных данных, так и от настраиваемых параметров. Не знаю, на чем вы тестите, я, к примеру использую ами брокер. У него есть такой ражим тестирования «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, и смотрим что у нас получилось. А теперь — вопрос, почему такое не подходит для нейросетей?
Cheshirscy, ты не понял, что тебе Иван сказал.

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

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

2 смотри среднюю сделку… для сбера она должна быть больше 0.2%...
3 имхо у тя ниче не работает — средняя сделка мала… 40000 сделок за 2 мес очень много
4 и ты учти что шорт бывает запрещен
avatar

ves2010

ves2010, :)
Сколько сделок за сессию в среднем?
avatar

stitrace

stitrace, от 50 до 100
Оцените устойчивость ваших вариантов. Например коэффициентом Шарпа.
А, вижу. 1000 сделок за сессию получается. В таком случае эти результаты бесполезны, т.к. Профит сделки в пунктах в пределах среднего размера спреда. Тут нужно учитывать вероятность исполнения по расчетной в тесте цене. Вобщем у тебя получается hft, а для расчета hft алгоритм тестирования должен быть намного сложнее.
avatar

stitrace

avatar

crazyFakir

1. в машинном обучении используется эмпирическая закономерность — валидационная выборка это от 1/5 до 1/6 от датасета.
2. то что сделано у вас — не обучение, а фиттинг. надо понимать разницу. с таким же успехом можно было линейную регрессию построить и по ней торговать
3. проводили ли какие-либо нелинейные трансформации?
4. что за нейронная сеть? используете ли регуляризацию?
avatar

Arsen G

Arsen G, Да, трансформация с данными проводилась чтобы сгладить резкие выбросы. Сеть — однослойный перцептрон. Что такое регуляризация я не знаю.
Ажбаев Тимур, как один из самых доступных для новичков курсов: www.youtube.com/playlist?list=PLD63A284B7615313A
лучше отказаться от оптимизации вообще!!! В основном оптимизация- это подгонка. ЕЕ в принципе использовать не стоит
avatar

SMA

SMA, лучше с горяча ничего не говорить :), и тем более так одиозно :)
Cheshirscy, повторяй это перед зеркалом кажды два часа :)
crazyFakir, ок, и тебе не хворать
Cheshirscy, ну карты вам в руки. С оптимизацией, вы даже из мувингов сделаете мега прибыльную систему :D. Вопрос в другом: как вы с ними будете деньги отбирать?:D
avatar

SMA

какой % прибыльных сделок? какое соотношение между средней прибыльной и средней убыточной?
avatar

sheffield

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

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

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

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

Пробовали баесовские сети строить?
sheffield, Параметры — это весовые коэффициенты в нейросети. на вход подаются значения осцилляторов и индикаторов волатильности. все эти значения нормируются от -1 до 1 (для осцилляторов) и от 0 до 1 для индикаторов волатильности. С байесовскими сетями не получилось. Сейчас используется обучение с подкреплением (reinforcement learning). Насчет коэффициента шарпа — я пробовал использовать отношение прибыли к максимальной просадке, но тогда система генерирует слишком мало сделок.
Это что за нейросеть такая в которой всего 12 параметров??? Неслыханное дело!
avatar

ivanovr

Любые советы бесполезны, им следовать бес толку, и нет необходимости. Совет и помощь может только успокоить, но достичь понимания не поможет. Утвердить в понимании поможет только опыт и эксперименты. Пробуйте всё. Успехов!
avatar

Eskalibur

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

ves2010

ves2010, Если вы пытались пошутить… то неудачно!!! Я бы сказал что шуточки за 30 копеек ваш потолок.
Вы конечно мне не поверите, но эти наблюдения

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

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

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

Collapse


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UP