UHSF
UHSF личный блог
27 июня 2019, 08:05

Кто и как тестирует стратегии?


TSLab конечно хорошо, но сколько можно ждать? Жизни не хватит все идеи в нем проверить.

Кто и как тестирует стратегии?

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

А как правильно? Он  же большие периоды сутками будет считать. К тому же, неожиданно синий экран смерти может появиться и придется все заново делать.

Чем больше времени идет расчет, тем более вероятен такой сюрприз и более неприятен.

Кто и как тестирует стратегии?

В комментариях где-то мимолетно упоминали, что прогоняют несколько лет на минутных свечах за считанные минуты. В текущих ожиданиях TSLabа вообще не представляю, как такое возможно. Какая-то фантастика))

Кто и как тестирует стратегии?

Расскажите как, с помощью чего оптимизируете и тестируете стратегии? Вроде многие занимаются, но нигде достаточно подробно не упоминается данная тема. Странно. Такая засекреченная тема или настолько сложная?

Поподробнее, пожалуйста! А то что-то туманное промелькнет в комментариях, что остается только мечтать…

51 Комментарий
  • ch5oh
    27 июня 2019, 09:48

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

     

    Может быть, пора пропылесосить все радиаторы в системнике. Может быть, снизить тактовую процессору и добавить кулеров, и/или заменить термопасту (только крайне аккуратно!). А то бывают варианты, когда покупаешь процессор через «друзей» они его разгоняют до предела и радостно говорят тебе, что «урвали топовый камень со скидкой». А система в целом становится нестабильной и периодически голубит.

      • ch5oh
        27 июня 2019, 10:15

        UHSF, странно все же (про бсод). Гоняю оптимайзу сутками напролет с загрузкой проца под 100%. Все нормально.

         

        Сбои питания парируются чуть более серьезным УПСом. У меня 8-12 часов может поддерживать функционирование всех машин.

         

        ПС Либо брать VDS в дата-центре с оплатой «за использование ресурсов». Там вопрос с питанием уже решен давно и надежно.

          • ch5oh
            27 июня 2019, 10:28

            UHSF, пишите на   support.tslab.ru   чтобы сделали генетическую оптимизацию. Если наберется большая инициативная группа и Вы сможете показать им на пальцах сколько клиентов они теряют из-за того, что недоделан встроенный оптимизатор, то процесс сдвинется с мертвой точки.

             

            Как опционщик, торгую стратегии, которые работают «по построению». Накопленный реальный опыт намного ценнее любых курвафитингов, которые сделает оптимизатор в моей ситуации.

            • Friendly Deep Space
              27 июня 2019, 10:38
              ch5oh, странно, что они сами этого не понимают, за столько лет то) Пакетное тестирование, генетическая оптимизация, это же одни из основных функций софта конкурентов)
              • ch5oh
                27 июня 2019, 12:49

                Friendly Deep Space, здесь, возможно, срабатывает экономика.


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

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

                 

                Либо надо делать как в другом софте, который продается «по частям»: чтобы за работу в нормальном оптимизаторе надо было платить отдельную абонентскую плату.

          • VladMih
            27 июня 2019, 11:02
            UHSF, принципиально других нет и быть не может.
            Но есть 2 основных «непринципиальных» способа:
            1. Увеличить+улучшить память
            2. Настроить ТСЛаб так, чтобы он её использовал по максимуму.
            Пункт непростой — советую обратиться к техподдержке, помогут.

            Ну и можно попробовать использовать облачные вычисления.
            Как это делается в лабе не знаю. В Метатрейдере это элементарно — можно даже с друзьями друг другу помогать мощностями.
            Советую мт5 — гиперзвук оптимизации.
  • XXM
    27 июня 2019, 10:03
    Тестирование стратегий

  • А. Г.
    27 июня 2019, 10:18
    Я использую собственные консольные приложения на С#, чтобы получить дневные  эквити при всех значениях оптимизируемых параметров и записываю их в один текстовый файл. А потом эту матрицу загоняю в Exсеl для дальнейшей обработки. Но обработка в Excel и SPSS у меня занимает 30-40 минут, так как делается несколько отдельных процедур, которые хоть и запрограммированны, но требуют ручных фильтрации и копирования после каждой их них.

    А сама выработка матрицы занимает 3-5 минут на инструмент. Плюс кодирование и отладка, но последнее не регламентировано.
    • Вита Мих
      28 июня 2019, 07:23

      А. Г., поддерживаю.

      обрабатывая руками результаты можно гораздо глубже понять то что получено, а заодно и оптимизировать идею, а то и новую создать.

  • Пафос Респектыч
    27 июня 2019, 10:32
    Даже медленнючий питон гоняет тесты на минутках за минуты, такой вот каламбур. Есть куча фреймворков, правда сам я с ними особо не разбирался, поскольку себе пишу сам. Гуглите «python backtesting framework», смотрите где доки понятней, изучаете примеры, и вперёд. На гитхабе этого добра тоже хватает.
  • Пафос Респектыч
    27 июня 2019, 10:33
     Просто надо иногда выкукливаться со смарт-лабика в большой мир )
  • Андрей К
    27 июня 2019, 11:27
     комментариях где-то мимолетно упоминали, что прогоняют несколько лет на минутных свечах за считанные минуты. В текущих ожиданиях TSLabа вообще не представляю, как такое возможно.
    это все очень сильно зависит от качество кода или построении кубиков. Если навыков нет, поставленную задачу можно решить не оптимальным путем и тогда ждать результат сутками.

    есть еще вариант. Писать алго в МТ5 и пользовать их платным облачным вычислением. Миллиард проходов на длинной истории за считанные минуты =))
  • Replikant_mih
    27 июня 2019, 11:46

    >>«прогоняют несколько лет на минутных свечах за считанные минуты»

    речь об чем? — об одном прогоне (стратегия-инструмент-таймСерия-наборЗначенийПараметров)? или о всей оптимизации? — если о всей — тут как бы многое зависит от числа прогонов)).

     

    Юзаю свой софт на C#. Быстро и под себя). Промежуточные результаты в файл — чтобы не было мучительно больно если что-то упало + можно в любой момент остановить и потом начать с того же места. Для того чтобы поддать жару можно юзать облака, которые можно масштабировать по производительности, ну и софт, конечно надо на потоки масштабировать, благо наши задачи на это дело отлично масштабируются. 

      • Replikant_mih
        27 июня 2019, 12:12

        UHSF, Если запросов куча, то сложное, если мало и узкие — не сложное и отличный вариант. В общем всем ты я такое рекомендовать не стал, но в некоторых случаях — очень хороший вариант.

         

        Ну тогда, раз вы про всю оптимизацию, обозначьте кол-во прогонов, по которым вы ожидаете что все за минуты просчитается.

        Сколько кстати ТСлаб один прогон на 5 годах минуток, например, будет делать?

          • quant_trader
            27 июня 2019, 13:33
            UHSF, 158000 вариантов по моему бессмысленный курвфит.

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

            Если же количество вариантов таково что Вы обозреваете пару сотен лучших (0.12% от 158000) то там нет идеи, это курв.

              • quant_trader
                27 июня 2019, 14:12

                UHSF,

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

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

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

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

      • Андрей К
        27 июня 2019, 14:15
        UHSF, 
        ложное решение. Но и самое лучшее видимо.
        несомненно самое лучше решение по багогенератору на своем алго =))
    • quant_trader
      27 июня 2019, 13:46
      Replikant_mih, скорость бектеста не языком определяется. Если из ассемблера дергать MSSQL за каждым баром то оно все равно будет тормозить. А если из VBA с кешированием в оперативу всего ряда то летать.
      • Replikant_mih
        27 июня 2019, 13:52
        quant_trader, зачем лукавите, тогда уж надо писать: «не только языком определяется», понятно что можно дичь делать, но мы же не делаем)), как минимум на один прогон у меня тайм серия срезу в оперативку подгружается, а вообще в моем бэктестере если тайм-серия в текущей сессии работы приложения запрашивалась, то в след. раз из оперативки её забираем, а вот с этого момента уже если бегать по тайм-серии, то Питон от C# уже будет отличаться на порядок или пару.
        • quant_trader
          27 июня 2019, 13:59
          Replikant_mih, во, в Амиброкере именно так и сделано.

          «то Питон от C# уже будет отличаться на порядок или пару.»

          Если бегать по барам то да, но есть векторные вычисления и numpy.
          • Replikant_mih
            27 июня 2019, 14:11
            quant_trader, ага, но это из-за того что эти либы на C++ скомпилированы, но сам я до датамайнерских либ ещё не дошел))
          • Андрей К
            27 июня 2019, 14:18
            quant_trader, 
            во, в Амиброкере именно так и сделано.
            абсолютно так же сделано и в ТСЛаб, но по дефолту воспользоваться такой штукой сходу не получится. Надо немного покодить.
            • quant_trader
              27 июня 2019, 14:27
              Андрей К, думаю не совсем. Еще играет роль как именно укладываются котиры в базу. В Ами бинарники своей хитрой структуры. Если ТСлаб делает так же то они реально молодцы но им надо пиарить и объяснять.
              • Андрей К
                27 июня 2019, 14:30
                quant_trader, 
                 Еще играет роль как именно укладываются котиры в базу

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

                А как у них с базой я и сам не знаю =)

  • Антон Иванов
    27 июня 2019, 12:14
    Не надо в ТСЛабе оптимизировать одновременно все параметры, только и всего. Польза от такой оптимизации нулевая. Оставляете галочку на один параметр и только его оптимизируйте. Оптимизация одного параметра моих алгоритмов на истории 10 лет на минутках занимает 3-5 минут. Комп очень средненький, 8 гигов оперативки.
      • Антон Иванов
        27 июня 2019, 12:58
        UHSF, чтобы на этот вопрос ответить, нужно очень хорошо знать свою стратегию. Тестируйте сначала наиболее важный ключевой параметр, потом вспомогательные. У меня, например, ключевые параметры входа работают и без оптимизации, я ее использую исключительно для поиска оптимального варианта на заданном периоде истории.
  • Scroooge
    27 июня 2019, 12:42

    все тестим в несколько этапов:

    1. бэктестинг — на тиковой истории

    2. демо-счет (мин. полгода)

    3. реал-счет (мин. полгода)

    P.S. торгую форекс (портфолио)

  • Михаил
    27 июня 2019, 13:12
    Думаю одна из основных проблем, что ваши модели содержат слишком много параметров и вы осуществляете полный перебор их комбинаций. С таким подходом можно любой по мощности компьютер на долго загрузить.

    Когда параметров много лучше использовать более эффективные методы поиска их оптимальных комбинаций. Есть два известных метода более быстрого подбора параметров — случайный поиск (достаточно легко реализовать самому) и байесовская оптимизация. Для реализации второго подхода требуется много усилий, но они стоят того. Сам пишу на Питоне для него есть много библиотек для байесовской оптимизации — одна из наиболее известных hyperopt
  • tashik
    27 июня 2019, 14:18
    Я использую OsEngine для всего: слой торговых роботов для тестирования и реальный терминал, куда их можно подключать и торговать, коннекторы есть много к чему, закачка данных с финама для локальных тестов, оптимизатор (тут есть некоторые нюансы). Тесты быстрые даже тиковые, работой оптимизатора практически не пользовалась, надо будет попробовать. Программный комплекс написан на C#, исходный код открыт, можно развивать и дорабатывать, как душе угодно. Ребята монетизируются за счет продажи обучения, но и без обучения там многое освещено у них на канале Youtube, разобраться вполне можно. Отношения к проекту не имею, денег не получаю, просто сама пользуюсь и контрибучу багфиксы.
  • quant_trader
    27 июня 2019, 14:25
    Амиброкер. Минутки с 2012, SPFB.RTS. Очистил кеш для чистоты эксперимента. Рабочий творческий скрипт где несколько стратегий разной степени готовности, с обращением к другим инструментам и прочим. И рабочая стратегия конечно. Первый прогон (это значит в кеш загрузил) 6-7с, второй 5с. Прогнал оптимизацию параметра (4 значения), который участвует в расчетах 14с.

    Оперативки занято Амиброкером 296мб. Вирт машина на i5-3470, 4гб. Ну может  кеширование на обычном компе будет подольше.

    ТСлаб для рисеча? Не, нас и тут неплохо кормят.
  • SergeyJu
    27 июня 2019, 15:26
    1. Попробуйте уйти от кубиков.
    2. Если не можете, оптимизируйте за один заход по 1 координате. 
    3. На крайний случай — метод монтекарло. Генерим случайную точку в пространстве парамеров и делаем один прогон. Если точка лучше, запоминаем. Повторяем не в очень напряжном цикле. В методе монте-карло хорошо работает чередование маленького случайного СДВИГА от наилучшей точки и случайного броска на всю площадь. 
  • r0man
    27 июня 2019, 17:41
    Еще немного бэктестеров:

    Quantstrat
    Довольно древний, очень много возможностей. Есть оптимизатор. Кушает бары, тики. Страты нужно писать R.
    github.com/braverock/quantstrat


    QuantTools

    Очень быстрый. Кушает бары, тики, бидаски. Есть оптимизатор. Исполнение через R, логика страт на С++
    quanttools.bitbucket.io/


    Arms22/backtest

    Довольно быстрый. Кушает бары, тики. В оптимизаторе можно выбирать, что именно будем оптимизировать и за какое количество итераций. Графики пока не рисует, но можно и самому написать. Python.
    github.com/arms22/backtest

  • CloseToAlgoTrading
    27 июня 2019, 23:37
    есть еще питоновский бэктрейдер.. https://www.backtrader.com
  • chizhan
    28 июня 2019, 04:39
    И никто не пишет юзаю ассемблер и куду на Titan V. Господи тслаб детсад какой-то. И эти люди думают, что что-то заработают на этих кубиках)) Еще и платят за него в довесок к дебилизму)) Платить нужно только за размещение своего серва в минимальной близости от ядра биржи. 
  • Ray Badman
    28 июня 2019, 04:54
    Профессионально владею Ассемблером, C, C++, C#, JavaScript, Pyton, Cuda, и много чего, у меня больше 20 летный опыт. Но стратегии тестирую на https://www.portfoliovisualizer.com/backtest-portfolio, впольне хватает.
    У программистов свои илюзии на счет рынков.
  • ves2010
    28 июня 2019, 08:55
    1 есть амиброкер
    у него ядро тестирование оптимизированно под кэш процессора, т.е. скорость максимальна, т.к нет обращения к медленно внешней памяти
    2 обычно хороший бот это 1-2 параметра оптимизации… причем их можно тестить раздельно… еслии параметров много, то идея скорее всего не рабочая
  • AndyJOKER
    09 августа 2019, 00:35
    Вопрос к тем, кто юзает TSLab и иже подобные, подскажите: а как оно выйдет из позы на такой вот свече?
    Или все настолько круты, что тестят годовую линию по тикам?
    p.s. Уточню, что речь идёт о том, что раньше сработает на такой свече: TP или SL?
      • AndyJOKER
        09 августа 2019, 09:22
        UHSF, в смысле большие? Если тиков нет, анализ ТС идет исключительно по свечам, хоть М1 хоть дневка — не важно. На свече проходят два важных уровня: это может быть и TP и SL, а может и переворот и докуп и прочее, кардинально влияющее на последующие входы и профит исессна. Это ситуация неопределенности. Поэтому мне и интересно кто и как решает эту проблему. Речь не про TSLab, а про системы анализа ТС в целом. У меня свой «TSLab» (с преферансом и профурсетками ), но ксжл времени хватает только чтоб свое допиливать.

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

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