Тимур
Тимур личный блог
01 апреля 2015, 22:32

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

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

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

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

59 Комментариев
  • ssome1
    01 апреля 2015, 22:37
    лично я против любых оптимизаторов, это рано или поздно приведет на дно. индикаторы — тоже туда же.
  • Press
    01 апреля 2015, 23:40
    В качестве просто мат модельки( коня в сферическом вакууме ), сделано грамотно.
    Со стороны реальной торговли доходность не будет соответсвовать красивой зеленой линии эквити ввиду ряда причин
  • Машковский Евгений
    02 апреля 2015, 02:41
    Какая архитектура сети, что подаете на вход?
  • Евгений Черных
    02 апреля 2015, 08:55
    Мне кажется тут высоки риски переоптимизации
  • SECRET
    02 апреля 2015, 08:56
    30 0000 точек слишком мало для оптимизации. Используйте большее количество данных (скажем год) и переоптимизируйте каждые 2 месяца систему. Оптимизация чаще чем раз в неделю будет давать только подгонку под данные, инфа 100% ;)
    • QJGlXS3Ars
      02 апреля 2015, 09:50
      SECRET, есть мнение, что VC-размерность для персептрона будет d+1, в случае автора по самым пессимистичным прогнозам — 5. Для такой VC-размерности хватит и 50 точек при условии, что модель верная. тут в модели проблема а не в количестве точек :)
  • Иван Петров
    02 апреля 2015, 08:56
    Во первых, чем больше выборка, тем меньше риск «переобучения».
    Второе: как только в торгуемом множестве появляется новый «исторический» максимум или минимум (которого не было в обучающей выборке), нужна сразу перетренировка
    Третье: Эквити красивое-хорошо, но обратите внимание на «математику»
    Четвертое: Есть уже специальные «встроенные» нейронные сети которые перетренировывают Ваши сеть хоть на каждой свечке
  • ML1210
    02 апреля 2015, 08:59
    Ничего не понял
    • Иван Петров
      02 апреля 2015, 09:06
      ML1210, Ну эта карочь, есть такая приблуда-сама за тебя деньги зарабатывает, типа кидаешь ей индикаторы, нажимаешь копку «рубка капусты» и она начинает капусту рубить, сама продает сама покупает, можно покупать пуевку на круиз, она сама будет бабло грести
  • ICEDONE
    02 апреля 2015, 09:05
    на каждый новый фьюч
    • Иван Петров
      02 апреля 2015, 09:07
      ICEDONE, Да можно «склейку поставить, а сделки чтобы делала на фьюче который в обращении сейчас
  • Cheshirscy
    02 апреля 2015, 09:12
    Я думаю, что точный ответ даст только практика. Все это, те оптимизацию и прогон новых параметров надо самому тестировать, а не на форумах спрашивать
    • Иван Петров
      02 апреля 2015, 09:15
      Cheshirscy, Как раз -это не тот случай, где нужна практика))).
      Праметры сетью подбираются сразу, прогон можешь брать хоть за 10 лет.
      То есть нейросеть -это не тест. Надо знать, как ее настраивать, то есть, что подавать на вход, чему оучать, сколько нейронов использовать, что предсказывать, сколько свечей предсказывать и т.д.
      Не зная теории настройки и браться за это дело незачем
      • Cheshirscy
        02 апреля 2015, 09:42
        Иван Петров, Ну либо кто-то очень влюблен в нейросети, либо… одно из двух :). Я предлагаю рассматривать любую торг систему, как черных ящик, которому на вход подаются рыночные данные, а на выходе у него сигналы покупки продажи. Как только разговор заходит про оптимизацию, значит у ящика появляется еще один вход — настраиваемые параметры. т.е. качество сигналов зависит как от рыночных данных, так и от настраиваемых параметров. Не знаю, на чем вы тестите, я, к примеру использую ами брокер. У него есть такой ражим тестирования «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, и смотрим что у нас получилось. А теперь — вопрос, почему такое не подходит для нейросетей?
        • crazyFakir
          02 апреля 2015, 09:45
          Cheshirscy, ты не понял, что тебе Иван сказал.

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

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

    2 смотри среднюю сделку… для сбера она должна быть больше 0.2%...
    3 имхо у тя ниче не работает — средняя сделка мала… 40000 сделок за 2 мес очень много
    4 и ты учти что шорт бывает запрещен
  • stitrace
    02 апреля 2015, 09:17
    Сколько сделок за сессию в среднем?
  • buyandsell-ru.com
    02 апреля 2015, 09:19
    Оцените устойчивость ваших вариантов. Например коэффициентом Шарпа.
  • stitrace
    02 апреля 2015, 09:26
    А, вижу. 1000 сделок за сессию получается. В таком случае эти результаты бесполезны, т.к. Профит сделки в пунктах в пределах среднего размера спреда. Тут нужно учитывать вероятность исполнения по расчетной в тесте цене. Вобщем у тебя получается hft, а для расчета hft алгоритм тестирования должен быть намного сложнее.
  • QJGlXS3Ars
    02 апреля 2015, 09:37
    1. в машинном обучении используется эмпирическая закономерность — валидационная выборка это от 1/5 до 1/6 от датасета.
    2. то что сделано у вас — не обучение, а фиттинг. надо понимать разницу. с таким же успехом можно было линейную регрессию построить и по ней торговать
    3. проводили ли какие-либо нелинейные трансформации?
    4. что за нейронная сеть? используете ли регуляризацию?
  • SMA
    02 апреля 2015, 09:43
    лучше отказаться от оптимизации вообще!!! В основном оптимизация- это подгонка. ЕЕ в принципе использовать не стоит
    • Cheshirscy
      02 апреля 2015, 09:46
      SMA, лучше с горяча ничего не говорить :), и тем более так одиозно :)
      • crazyFakir
        02 апреля 2015, 09:53
        Cheshirscy, повторяй это перед зеркалом кажды два часа :)
        • Cheshirscy
          02 апреля 2015, 10:19
          crazyFakir, ок, и тебе не хворать
      • SMA
        02 апреля 2015, 11:18
        Cheshirscy, ну карты вам в руки. С оптимизацией, вы даже из мувингов сделаете мега прибыльную систему :D. Вопрос в другом: как вы с ними будете деньги отбирать?:D
  • sheffield
    02 апреля 2015, 10:25
    какой % прибыльных сделок? какое соотношение между средней прибыльной и средней убыточной?
      • sheffield
        02 апреля 2015, 12:15
        Ажбаев Тимур, тут есть один момент важный, систему желательно оптимизировать по следующим параметрам. Найти параметры, при которых максимизируются:

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

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

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

        Пробовали баесовские сети строить?
  • Roman Ivanov
    02 апреля 2015, 11:43
    Это что за нейросеть такая в которой всего 12 параметров??? Неслыханное дело!
  • Eskalibur
    02 апреля 2015, 11:50
    Любые советы бесполезны, им следовать бес толку, и нет необходимости. Совет и помощь может только успокоить, но достичь понимания не поможет. Утвердить в понимании поможет только опыт и эксперименты. Пробуйте всё. Успехов!
  • Машковский Евгений
    02 апреля 2015, 11:55
    "… Причем наблюдается такая взаимосвязь: чем больше обучающий набор данных, тем меньше средняя доходность системы на обучающем наборе, но тем больше вероятность того что система будет показывать эту доходность на данных которые она не видела. И наоборот, чем меньше обучающий набор, тем больше средняя доходность на обучающем наборе и тем меньше вероятность, что система покажет прибыль на неизвестных данных. ..."
    Если Вы используете сеть с одной архитектурой и одним и тем же кол-вом нейронов, то так и должно быть, т.е. чем больше обучающее множество тем сети тяжелее его запомнить соответственно она обладает лучшими обобщающими способностями на тестовой выборке.И наоборот когда обучающая выборка маленькая, сеть легко её запоминает(переобучается, но перестает обобщать) и дает хороший результат на обучающем множестве и плохой на тестовом.Вообще сама суть всех манипуляций научить сеть обобщать, а не запоминать, поэтому большого смысла в результатах на обучающей выборке нет, мало мальски вменяемая сеть легко запомнит обучающие данные и выдаст астрономический результат.Чтобы сеть обобщала, надо или задать такое кол-во нейронов чтобы она была не в состоянии запомнить обучающую выборку или остановить обучение до того как она переобучится, тут и наступают «танцы с бубнами».
    По какому принципу Вы заканчиваете обучение сети по разнице ошибки на обучающей и тестовой выборках?
      • Krl
        02 апреля 2015, 12:24
        Ажбаев Тимур, Сделки были?)
          • Krl
            02 апреля 2015, 14:51
            Ажбаев Тимур, Вопрос тестирования мне в принципе ясен… а скорость исполнения заявок(сделок) в данном подходе критична?? Какое подключение к бирже используете? (Плаза, или просто через терминал)
              • Макс
                03 апреля 2015, 04:56
                Ажбаев Тимур, всего лишь раз в минуту? Неплохо.
                И еще вижу комиссия брокера большевата у вас.
                По основному вопросу мое мнение — если оптимизироваться меньше чем за день — теряется специфика времени дня, а она есть (утро, день, вечер, вечерка). С другой стороны поведение ранка внутри дня тоже имеет много общего. Я бы исследовал гибридный подход.
  • ves2010
    02 апреля 2015, 13:27
    ща папа граль спалит… проверочные данные должны быть сзади…
    • Krl
      02 апреля 2015, 14:50
      ves2010, Если вы пытались пошутить… то неудачно!!! Я бы сказал что шуточки за 30 копеек ваш потолок.
  • Multifractal
    03 апреля 2015, 11:15
    Вы конечно мне не поверите, но эти наблюдения

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

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

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн