Мальчик buybuy
Мальчик buybuy личный блог
20 августа 2019, 00:15

Итоги КОНКУРСА от 09.08.19 и НОВЫЙ КОНКУРС от 20.08.19

Доброй ночи, коллеги!

Вот подошел к концу конкурс от 09.08.19 на разработку «худшей» торговой системы.

К сожалению, в нем успел принять участие только 1 человек — имя фамилия. Желание поучаствовать выразила tashik, но дальше декларации дело не пошло. Также свои идеи высказали kachanov и bozon, но у нас был конкурс стратегий, а не идей.

С единственной представленной ТС произошла крайне занимательная история. Эквити получилась фантастически плоской (график можно посмотреть в камментах к конкурсу) — явная заявка на выигрыш. Однако, разбор лога сделок ТСЛаб показал, что ордера, которые выставляла система, исполнялись сильно позже тех баров, на которых допускали исполнение. Со слов автора, это произошло ввиду неверного параметра точности цены, выставленного в ТСЛаб (3 знака после запятой, против 4-5 у входного массива EURUSD). После корректировки параметра эквити системы вышло из плоского режима через 12 дней после начала 2018 г. — и так в него и не вернулось...

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

Итак, начинаем новый конкурс от 20.08.19.

ДАНО: Минутки по XAUUSD за вcю доступную историю до 06.09.2019 г. включительно. Данные можно брать откуда угодно. Причина смены актива — высокая волатильность интереснее.
ОГРАНИЧЕНИЯ ПО КЛАССУ ТС: Обычная плоская реверсивная
Обычная — без заглядываний в будущее и манипуляций внутри минутного бара
Плоская — без плечей и реинвестирования. Вся торговля идет одним лотом в $1,000,000
Реверсивная — система всегда в рынке (в покупке или в продаже). При смене позиции происходит переворот двойным объемом ($2,000,000)
КОМИССИИ: $1 на $1,000,000 торгового оборота ($2 на каждый переворот)
ПРОСКАЛЬЗЫВАНИЯ: отсутствуют
УТОЧНЕНИЕ: Все открытия/закрытия происходят лимитными ордерами по цене закрытия последней обработанной свечи. Ордер начинает выполняться со следующей свечи. Без махинаций — если open(next bar) лучше, чем цена ордера, открытие происходит по цене ордера (ордер формируется «между» свечами). Причина ограничения на цену открытия/закрытия — смещение ордера от close позволяет радикально уменьшить количество совершаемых сделок, что способно в лучшую сторону повлиять на наклон эквити и совокупно уплаченные комиссии.
ОГРАНИЧЕНИЕ ПО ПАМЯТИ: Не более 90 календарных дней. Т.е. не используем более старые данные для расчета новых (не обязательно)

ЗАДАЧА: Найти ТС с минимальным уклонением эквити от 0 в период с 09.09.19 по 11.10.19
ТОЧНЫЙ КРИТЕРИЙ: max(abs(equity), t из [09.09.19, 11.10.9]) --> min
ФОРМАТ ПУБЛИКАЦИИ РЕЗУЛЬТАТА: Число в $, желательно меньше $1,000,000 ))) Например, $18,138
ФИЛЬТР ДОПУСТИМЫХ ТС: Не рассматриваются результаты, большие, чем 50% максимального уклонения от 0 стратегии Buy&Hold на том же временном интервале.

Иными словами — конкурс проводится в формате OOS (out of sample). Обучаете систему сколько угодно — но работать она будет за правым краем экрана. Надеюсь, принятие такого условия позволит привлечь профов (Eugene Logunov, ch5oh, wrmngr, ...).

Каждый участник пишет на любой платформе и в срок не позднее вечера Вс, 08.09.19 выкладывает текст своей программы. Ограничения:
— программа должна быть автономной (работать в оффлайне и без внешних источников данных, кроме массива котировок с 09.09.19 по 11.10.19)
— программа должна запускаться сразу после установки дистрибутива платформы, на которой велась разработка, т.е. в случае использования внешних файлов заголовков, темплейтов и/или нестандартных библиотек — их исходники должны быть опубликованы одновременно с программой

Призовой фонд конкурса — 25 тыр (за 1-е место)
Если наберется 5+ участников — вводится приз 10 тыр за 2-е место.
Если наберется 10+ участников — вводится приз 5 тыр за 3-е место.

Каждый участник может опубликовать несколько ТС и, в теории, сольно получить все 3 приза.
Во избежание публикации 100500 вариантов вводится пенальти — если одна из программ участника уличается в неправильном расчете — все остальные ТС его авторства автоматом снимаются с конкурса.


Начиная с Сб 12.10.19 участники прогоняют свои программы на накопившихся за месяц с 09.09.19 по 11.10.19 минутках XAUUSD и публикуют свои результаты (в $). В качестве стандартных котировок берутся данные с finam.ru с принудительно выпиленными котировками за выходные во избежание странных гэпов (думаю, каждый сам справится с этой задачей).


Начиная с Пн, 14.10.19 подводим итоги — тестируем первую тройку, аудируем результат, делаем проверку на читерство (надеюсь, не только моими руками, но и с помощью коллективного разума), определяем победителей, а я выплачиваю призы.


На этом все


ПОЕХАЛИ!
86 Комментариев
  • buy_sell
    20 августа 2019, 00:31
    Странный этот мальчик. Считает себя умным, а  всех дураками. Хочет за 25 000 рублей получить текст программы, идеально следующей за рыночной ценой. Просто поле чудес в стране…
      • buy_sell
        20 августа 2019, 00:44
        Мальчик Buybuy, что тут не понять? Если ТС всё время находится в рынке и эквити очень близка к нулю, то СЦП (средняя цена позиции) очень близка к цене инструмента. Это значит, что торговая система идеально следует за рынком практически без запаздывания.  Такая ТС — мечта любого трейдера, тем более за грошовую премию в 25 000 деревянных
          • buy_sell
            20 августа 2019, 01:02
            Мальчик Buybuy, система и не должна угадывать. Она просто должна рассчитывать эквити и торговать, направляя эквити к нулю. Чем чаще корректировки, тем лучше. Частота корректировки ограничивается только биржевой комиссией. Чем ниже комиссия, тем выше частота сделок. Если комиссии нет, то частота определяется только скоростью рассчета и скоростью доступа к бирже.
              • buy_sell
                20 августа 2019, 01:13
                Мальчик Buybuy, если есть система, всё время находящаяся в рынке и удерживающая эквити около 0 тиков прибыли, то её легко можно модифицировать для удержания эквити около 10 тиков прибыли, затем 20 тиков прибыли и тд. Тот же механизм коррекции, но эквити направляется к некоторой положительной прибыли.
  • meat
    20 августа 2019, 00:39
    ТОЧНЫЙ КРИТЕРИЙ: max(abs(equity), t из [09.09.19, 11.10.9]) --> min
    поясни это

    если взять за equity функцию от времени t

    equity = f(t)

    то что означает max(abs(equity)) ? 

    максимальное значение функции, в которой все отрицательные значения инвертированы? :)

    то есть среди всех ТС тебе нужно найти такую, в которой это максимальное значение будет минимальным?

      • meat
        20 августа 2019, 01:09
        Мальчик Buybuy, функция equity считается в процентах?
          • meat
            20 августа 2019, 01:14
            Мальчик Buybuy, доходность считается от первоначального капитала, а про него ничего не написано, если только предположить, что $1,000,000 и есть первоначальный капитал, но тогда будут конфликты с реальной торговлей, ведь такого быть не может в реальности

            я уже вбил все параметры, кроме депозита
              • meat
                20 августа 2019, 01:31
                Мальчик Buybuy, да я так и сделал
  • Kot_Begemot
    20 августа 2019, 06:20
    Комиссии всё испортят.

    * Не в смысле эквити.

    Отсюда и непонятный критерий  max(..., t)

    * участвовать не буду.
      • Kot_Begemot
        20 августа 2019, 06:28
        Мальчик Buybuy, с уважением.
  • bozon
    20 августа 2019, 07:24
    не совсем понятен формат публикации. Это нужно сделать отдельным постом или достаточно прокомментировать эту публикацию? Это должен быть код готовой программы с результатами расчётов (или с процессом расчётов)? Можно ли использовать исторические данные для формирования переменных алгоритма?!
    • bozon
      20 августа 2019, 07:27
      bozon, qpile, xls?
      • bozon
        20 августа 2019, 08:37
        Мальчик Buybuy, т.е. формат публикации — комментарий с числом в $ + код.
  • Sergey Pavlov
    20 августа 2019, 08:33
    А вот любопытно. Прежде всего, спасибо!

    Если ТС это детерминированная функция от ценового ряда, то навскидку это будет функция, для которой можно построить обратную. В общем виде это, конечно, неверно, но для ТС кажется верным.

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

    Либо это будет такая функция, которая как ТС будет неторгуема.

    Либо это будут некие случаи частной подгонки.

    Натолкнули на интересные мысли за кадром. Благодарю:)
  • Дмитрий Новиков
    20 августа 2019, 10:05
    Забавная задачка не имеющая решения. Почему? Мы знаем что актив двигается как Х^2. Автор предлагает сделать уравнение X^2=X+E (где Е некая ошибка). Что означает, что надо построить такую прямую линию, что бы она максимально совпадала с параболой. В школе нас учили, что квадратный трехчлен может иметь максимум два решения. 
    Если вы реально хотите получить плоское экви, вам нужны степени. То есть, в частности, лот разный. 
      • Дмитрий Новиков
        20 августа 2019, 10:58
        Мальчик Buybuy, Не размах. Актив двигается как (X^2)*T. А вы хотите эту задачу решить линейно. Ну у вас получится 2*2=2+2, а 3*3=3+3 не получится. Вы задачу математичести постройте, а потом программируйте. Как в школе учили:)
          • Дмитрий Новиков
            20 августа 2019, 11:22
            Мальчик Buybuy, {\displaystyle dS_{t}=\mu S_{t}\,dt+\sigma S_{t}\,dW_{t}} у нас есть такой процесс. Это изменение цены в геометрическом броуновском движении. Вам надо решение только с другим знаком. {\displaystyle S_{t}=S_{0}\exp \left(\left(\mu -{\frac {\sigma ^{2}}{2}}\right)t+\sigma W_{t}\right),}
            Это можно сделать изменяя объем ордера. Не все время не лям, а все время разные.
              • Дмитрий Новиков
                20 августа 2019, 11:36
                Мальчик Buybuy, За Х я брал изменение БА. Дальше, берем «Задача о пьяном матросе» А.Энштейна. Например: https://www.all-fizika.com/article/index.php?id_article=421 Видим, что движения квадратичное X^2. Соответственно нам надо выстраивать решение задачи с нулевым экви через квадратичные величины. А это только объем ордера менять.
                  • Дмитрий Новиков
                    20 августа 2019, 11:55
                    Мальчик Buybuy, Минимальное отклонение это когда вообще не торгуете. Ваша ТС это тоже броуновский процесс. Вы либо сигму уменьшаете и ставите заявки выше крыши и ниже плинтуса, либо объем лота уменьшаете.
                      • Дмитрий Новиков
                        20 августа 2019, 12:06
                        Мальчик Buybuy, Почитайте мои топики «Основы». Там в экселе все смоделировано и расписано.
                          • Тимоха
                            20 августа 2019, 13:03
                            Мальчик Buybuy, интересные буквы временами выдаешь, понаблюдаю за тобой)))
                              • Тимоха
                                20 августа 2019, 15:45
                                Мальчик Buybuy, я простой, как та паренная репка, не в обиде, понимаю)))
                      • Sergey Pavlov
                        20 августа 2019, 13:25
                        Мальчик Buybuy, это уже не по-джментельменски)))
                        «У меня есть, но никому не покажу»)))
                        Предъявляйте-с!
                          • Sergey Pavlov
                            20 августа 2019, 13:34
                            Мальчик Buybuy, с коллегой Дмитрий Новиков вы ведете увлекательную беседу))
                            — Ваши доводы где?
                            — Нужна степень против линейности
                            — Так не пойдет, это абстрактно. Можете показать — покажите. Иначе какие ваши доводы? Вот у меня всё есть.

                            Ну вот раз это как довод пойдёт, предъявляйте)))
                              • Sergey Pavlov
                                20 августа 2019, 13:54
                                Мальчик Buybuy, не… это не гуд)) 

                                Парирование в стиле «с дураками диалоги не веду» это опять не по-джентельменски. Но я же неверно вас трактую, ага?))

                                А сыграть — с удовольствием))
                                Публикуйте.
                                  • Тимоха
                                    20 августа 2019, 15:57
                                    Мальчик Buybuy, эффективность рынков заключается в их неэффективности, попробуй понять данный парадокс
  • bozon
    26 августа 2019, 10:33
    Конкурс:
    — неделя кропотливой работы и вот результат:
      yadi.sk/d/_Aw3gEoOfOOCEw — mql5-советник;
    — результат не чемпионский, тест показал просадку около 5% за 3 месяца, но техническая реализация относительно универсальная;
    — стратегия 4-х моментов плохо идентифицирует состояние рынка, нужно эволюционировать дальше!


      • bozon
        26 августа 2019, 11:12
        Мальчик Buybuy,… ну до конкурсной отсечки ещё есть время, буду развивать алгоритм. С уважением!)
          • bozon
            30 августа 2019, 10:00
            Мальчик Buybuy, конкурс:
            — финальная версия https://yadi.sk/d/ej1iG2EOPEtQvQ
            — предыдущую версию просьба удалить из конкурса, ибо много ошибок технического плана (в частности работа с хендлами);
            — как не крути, но в 2 процент уложиться не получилось, результат около 0 за 3 месяца, но отклонения от «0» = 8-9%;
            — пришлось добавить трендовый индикатор типа показателя Хёрста;
            — настройки по умолчанию.
            С уважением и исключительно со спортивным интересом!)
              • bozon
                17 сентября 2019, 15:13
                Мальчик Buybuy, раздачу закрываю. Скачан три раза. Я думаю, все желающие успели «урвать» кусочек Грааля:)) С уважением!
                  • bozon
                    18 сентября 2019, 06:46
                    Мальчик Buybuy, всё правильно. К исправленной версии попробуйте добавить (для себя) частотный фильтр, состоящий из м3 и м4 на частоте. В идеале он должен отбраковывать фальшивые тренды, вызванные волатильностью волатильности.

                    Вообще задачка Очень интересная! Кстати, её можно неплохо конвертировать в наличность через «нелинейный» набор позиции.

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

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