Блог им. UHSF

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


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

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

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

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

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

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

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

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

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

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

  • обсудить на форуме:
  • TSLab
★11

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

 

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

avatar

ch5oh

ch5oh, я про синий экран смерти написал как о части комплекса рисков за долгое время оптимизации. Это и параллельная работа с другими программами, которые могут дать сбой и перебои с питанием могут возникнуть, например. В общем, чем дольше идет процесс оптимизации, тем больше рисков, так как в случае реализации риска придется все заново делать.
BSOD был один раз спустя 5 часов оптимизации, вот и упомянул о нем.
Система в целом стабильна, проводились стресстесты в свое время. Но хоть редко, но бывают сбои.
avatar

UHSF

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

 

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

 

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

avatar

ch5oh

ch5oh, ПК — это много оборудования и программ — что-то же может дать сбой, от чего ложится вся система. Когда регулярно, тогда другое дело — надо выявлять. Пока нет серьезных проблем. Так к слову...
А принципиально другие способы тестирования и оптимизации можете подсказать? Очень уж долго.
avatar

UHSF

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

 

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

avatar

ch5oh

ch5oh, по опционам тоже придерживаюсь ручной торговли и опыта. Это такое стратегическое и творческое занятие. Никакая машина не справится лучше))
avatar

UHSF

ch5oh, странно, что они сами этого не понимают, за столько лет то) Пакетное тестирование, генетическая оптимизация, это же одни из основных функций софта конкурентов)

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


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

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

 

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

avatar

ch5oh

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

Ну и можно попробовать использовать облачные вычисления.
Как это делается в лабе не знаю. В Метатрейдере это элементарно — можно даже с друзьями друг другу помогать мощностями.
Советую мт5 — гиперзвук оптимизации.
avatar

VladMih

Тестирование стратегий

avatar

XXM

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

А сама выработка матрицы занимает 3-5 минут на инструмент. Плюс кодирование и отладка, но последнее не регламентировано.
avatar

А. Г.

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

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

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

есть еще вариант. Писать алго в МТ5 и пользовать их платным облачным вычислением. Миллиард проходов на длинной истории за считанные минуты =))
avatar

Андрей К

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

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

 

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

avatar

Replikant_mih

Replikant_mih, о всей оптимизации речь.
Свой софт это наверное самое сложное решение. Но и самое лучшее видимо.
avatar

UHSF

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

 

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

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

Replikant_mih, что-то даже не представляю, с чего можно начать. Получается что каждый что-то свое делает и поэтому нет универсального, если можно так сказать, подхода? Получается полностью вручную писать всё надо? Это жестко, конечно...
ТСлаб сильно теряет в скорости из-за больших периодов. Еще и по мере расчета скорость снижается. Вот что я зафиксировал, к примеру, на 158000 вариантов на всего 2-х годах уходит 4-5 часов (минутки). А если взять 10 лет… Ну это сколько оптимизировать я буду. Пока прооптимизируешь, уже забудешь что оптимизируется или не актуально станет вовсе))
avatar

UHSF

UHSF, 158000 вариантов по моему бессмысленный курвфит.

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

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

quant_trader, а как понять, работает идея или нет? Локально, допустим, она работает, я уверен. Мне нужно выявить максимум на что она способна, поэтому много вариантов. Не важно для чего мне это, мне нужна быстрая оптимизация. Вопрос в этом.
Как бы Вы предложили проводить оптимизацию? Начинать с большим шагом перебирать параметры, а потом максимально подходящий результат оптимизировать уже с меньшим шагом?
avatar

UHSF

UHSF,

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

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

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

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

quant_trader, но по идее то это все можно за раз сделать, за одну оптимизацию. Не начинать с большого шага одного параметра, а все сразу загнать и прооптимизировать. Вопрос в целесообразности такой тщательности? Возможно. Но ведь это же проще. Не пойму где уходит логика этого действия.
avatar

UHSF

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

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

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

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

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

Не надо в ТСЛабе оптимизировать одновременно все параметры, только и всего. Польза от такой оптимизации нулевая. Оставляете галочку на один параметр и только его оптимизируйте. Оптимизация одного параметра моих алгоритмов на истории 10 лет на минутках занимает 3-5 минут. Комп очень средненький, 8 гигов оперативки.
Антон Иванов, а остальные параметры по очереди оптимизировать под предыдущие? Насколько так лучше?
avatar

UHSF

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

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

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

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

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

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

avatar

Scroooge

Самописные бэктестеры на смеси R и C++. Стратегии — тоже на смеси R и C++.
Подготовка данных в некоторых случаях занимает несколько часов, дальше на готовых данных можно гонять стратегии за секунды (вычислительно сложные — за минуты, с распараллеливанием).
avatar

Eugene Logunov

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

Когда параметров много лучше использовать более эффективные методы поиска их оптимальных комбинаций. Есть два известных метода более быстрого подбора параметров — случайный поиск (достаточно легко реализовать самому) и байесовская оптимизация. Для реализации второго подхода требуется много усилий, но они стоят того. Сам пишу на Питоне для него есть много библиотек для байесовской оптимизации — одна из наиболее известных hyperopt
avatar

Михаил

Я использую OsEngine для всего: слой торговых роботов для тестирования и реальный терминал, куда их можно подключать и торговать, коннекторы есть много к чему, закачка данных с финама для локальных тестов, оптимизатор (тут есть некоторые нюансы). Тесты быстрые даже тиковые, работой оптимизатора практически не пользовалась, надо будет попробовать. Программный комплекс написан на C#, исходный код открыт, можно развивать и дорабатывать, как душе угодно. Ребята монетизируются за счет продажи обучения, но и без обучения там многое освещено у них на канале Youtube, разобраться вполне можно. Отношения к проекту не имею, денег не получаю, просто сама пользуюсь и контрибучу багфиксы.
avatar

tashik

Амиброкер. Минутки с 2012, SPFB.RTS. Очистил кеш для чистоты эксперимента. Рабочий творческий скрипт где несколько стратегий разной степени готовности, с обращением к другим инструментам и прочим. И рабочая стратегия конечно. Первый прогон (это значит в кеш загрузил) 6-7с, второй 5с. Прогнал оптимизацию параметра (4 значения), который участвует в расчетах 14с.

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

ТСлаб для рисеча? Не, нас и тут неплохо кормят.
avatar

quant_trader

1. Попробуйте уйти от кубиков.
2. Если не можете, оптимизируйте за один заход по 1 координате. 
3. На крайний случай — метод монтекарло. Генерим случайную точку в пространстве парамеров и делаем один прогон. Если точка лучше, запоминаем. Повторяем не в очень напряжном цикле. В методе монте-карло хорошо работает чередование маленького случайного СДВИГА от наилучшей точки и случайного броска на всю площадь. 
avatar

SergeyJu

Еще немного бэктестеров:

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


QuantTools

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


Arms22/backtest

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

avatar

r0man

есть еще питоновский бэктрейдер.. https://www.backtrader.com
avatar

Denis

И никто не пишет юзаю ассемблер и куду на Titan V. Господи тслаб детсад какой-то. И эти люди думают, что что-то заработают на этих кубиках)) Еще и платят за него в довесок к дебилизму)) Платить нужно только за размещение своего серва в минимальной близости от ядра биржи. 
avatar

chizhan

Профессионально владею Ассемблером, C, C++, C#, JavaScript, Pyton, Cuda, и много чего, у меня больше 20 летный опыт. Но стратегии тестирую на https://www.portfoliovisualizer.com/backtest-portfolio, впольне хватает.
У программистов свои илюзии на счет рынков.
avatar

Ray Badman

1 есть амиброкер
у него ядро тестирование оптимизированно под кэш процессора, т.е. скорость максимальна, т.к нет обращения к медленно внешней памяти
2 обычно хороший бот это 1-2 параметра оптимизации… причем их можно тестить раздельно… еслии параметров много, то идея скорее всего не рабочая
avatar

ves2010


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

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

Зарегистрироваться
....все тэги
UPDONW