Перейти к содержимому


Фотография
- - - - -

Теория и практика системной торговли

системная торговля стоплосс управление капиталом роботы

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 57

#1 AntFX

AntFX

    Трейдер-программист

  •  
  •  
  • 25 269 сообщений
  • 12 записей в блоге
  • Регистрация: 13 Июн 2008
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 14:11

"Неделя" это уже параметр. Вместо неё может быть любой интервал: час, день, месяц, год.

То есть задача - составить торговый алгоритм, в котором вообще нет чисел? ) Это уже какой-то перегиб, по-моему. Если говорить об отсутствии параметров, то осмысленно отсутствие оптимизируемых параметров, а не вообще чего угодно в коде, что можно интерпретировать при большом желании как параметр.
Например, алгоритм "продаем, если закрытие последней свечи выше, чем закрытие предыдущей" - параметров никаких, но вместо Close[1] и Close[2] можно поставить числа 1 и 3, 2 и 4 и так далее и назвать это все параметрами. Смысла в этом нет никакого, кроме того, чтобы сказать, что нет систем, в которых нет параметров.

Смысл же "беспараметрового" подхода как такового в том, что это крайняя форма борьбы с переоптимизацией. Если при разработке алгоритма, ещё до тестов, все используемые числа вбил в код, и при не подтверждении алгоритма тестами просто его выкинул - то можно гарантировать минимальную вероятность подгонки (при достаточном числе сделок и наличии адекватных стопов/тейков). Другое дело, что это сводит к минимуму возможности разработчика, и есть другие, менее радикальные, способы бороться с переоптимизацией.

Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 14:11

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#2 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 14:55

То есть задача - составить торговый алгоритм, в котором вообще нет чисел? ) Это уже какой-то перегиб, по-моему.

Суть вопроса в том, что мы говорим на разных языках. Параметрами мы называем разные вещи, и когда кто-то говорит, что у него нет параметров, то другой (например я) это воспринимает не так, как это говорит первый.

В случае системы "продаем, если закрытие последней свечи выше, чем закрытие предыдущей" я бы сказал, что здесь один параметр, а Вы сказали бы, что это перегиб и параметров нет, но суть не в том, кто тут прав, а в том, что мы оценили бы по-разному одну и ту же систему, причем даже не зная об этом, как следствие поняли бы друг друга неправильно, после чего я бы долго удивлялся, как можно сделать систему без параметров, а оказывается всё дело в том, что то, что я называю параметром, другие так не называют.


  • 3

#3 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 15:11

По сути у системы нет параметров, даже если у самого робота их 100 штук, но все они вбиты в код до начала тестов на истории. Потому что суть понятия параметра - это возможность изменения, настройки, в зависимости от желаний пользователя. Если такой возможности нет, или она не используется (и никогда не использовалась) - значит параметров нет

 

А вообще отсутствие параметров - это крайность и обсуждать её нет особого смысла. Есть какое-то число последователей секты "свидетелей не оптимизации", которые любую оптимизацию в любой форме считают абсолютным злом. Не понятно только, с чего их вообще занесло в область системной торговли - пусть бы дальше гадали на кофейной гуще "интуитивной торговли".

 

Есть смысл сформулировать и обсудить список условий, требований и методологических рекомендаций, которые позволяют свести к минимуму эффект переоптимизации при разработке торговой системы. Займусь этим, когда и если найду время. Если кто-то меня опередит в этой ветке, буду рад :)


Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 15:13

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#4 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 15:45

У меня нет такой категории как "переоптимизация". Я могу оптимизировать и подгонять под кривую сколько угодно, никогда не боялся это делать и никогда не считал неправильным. Но потом я смотрю на тест вне оптимизации, эта вещь обязательная. Как бы система не была хорошо подогнана на in-sample, на out-of-sample она всё равно покажет то, чем она на самом деле является (хотя может и не показать - и это серьезная проблема). И вот там уже делается оценка работоспособна система или нет. Но гарантий там тоже нет никаких. У меня была масса случаев, когда я начинал торговать системой, которая в реале прибыли потом не давала, и я даже до сих пор не знаю, что это было - изменение рынка именно в момент постановки системы на торги, или система вообще никогда не работала. Тот факт, что это случалось много раз, свидетельствует в пользу последнего.

Причем действительно случалось так, что слив начинался именно в момент постановки на торги. Я помню, в качестве борьбы с этим даже сделал правило делать "виртуальный тест" - виртуальную постановку на торги и наблюдение, чтобы лишний раз не сливать деньги. После разработки системы я записывал все нужные параметры и как бы представлял что она на торгах с сегодняшнего дня. Через несколько месяцев (два-четыре, как правило) я прогонял систему с теми же параметрами уже на новой истории, и смотрел что получилось. Но практика эта тоже оказалась проблемной. Как только стал так делать, так сразу системы стали проходить этот тест и давать в нем прибыль, а как только я ставил их на реальные торги, как это ни смешно, начинали сливать. :) В одном из последних случаев сливать система стала не сразу, а после месяца прибыли на реальном счете, которая была после двух месяцев прибыли на "виртуальном тесте".


Сообщение отредактировал Player 2: 19 Ноябрь 2017 - 15:52

  • 0

#5 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 15:52

Сначала Вы говорите о том, что у Вас нет такой категории, как "переоптимизация", а потом описываете ряд действий, которые выполняете, чтобы её не возникало :) Как раз ситуация, когда тест не подтверждается форвардом, причем заметно не подтверждается, и является классическим случаем "переоптимизации", то есть подгонки под кривую, а не результатом нахождения закономерности. 

Но форвард тест тоже может быть коварной вещью. Например, если у Вас 100 положительных вариантов бэктеста. Вы проверяете на форварде 1-й вариант, он не проходит. Что Вы делаете дальше?


  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#6 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 16:19

Сначала Вы говорите о том, что у Вас нет такой категории, как "переоптимизация", а потом описываете ряд действий, которые выполняете, чтобы её не возникало :)

Ну это опять та же проблема разных языков, которая свойственна трейдерам из-за их закрытости.

Как раз ситуация, когда тест не подтверждается форвардом, причем заметно не подтверждается, и является классическим случаем "переоптимизации", то есть подгонки под кривую, а не результатом нахождения закономерности.

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

Например, если у Вас 100 положительных вариантов бэктеста. Вы проверяете на форварде 1-й вариант, он не проходит. Что Вы делаете дальше?

Я не понял этот вопрос. Уже в части про 100 положительных вариантов бэктеста. У одной системы вроде как один бэктест. Или речь идет о разных участках истории или разных инструментах?


  • 1

#7 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 16:22

Я не понял этот вопрос. Уже в части про 100 положительных вариантов бэктеста. У одной системы вроде как один бэктест. Или речь идет о разных участках истории или разных инструментах?

Речь о результатах оптимизации. Вы ведь делаете оптимизацию?


Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 16:22

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#8 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 16:25

Что такое вообще переоптимизация?
Результаты произвольного теста на истории (график сделок, показатели - прибыль, мо, пф и т.д.), складываются в результате некоторого числа факторов, влияющих на результаты тех или иных сделок. Предполагается, что необходимо выделить системный фактор, на основании воздействия которого результат тестирования оказался положительным, то есть, существующую в основе данных котировок закономерность поведения цены, которая, как минимум, действует на данный момент (и предположительно, будет действовать в будущем). Однако, наличие такого фактора - не единственное, что может влиять на положительный исход сделок на истории. Наиболее очевидный из "альтернативных" факторов - простая случайность. Простая случайность может сделать полностью "нулевой" тест выглядящим прибыльно, или наоборот, сделать тест работающей в реальности системы похожим на унылый флет. Кроме этого, при наличии нескольких настраиваемых (оптимизируемых) параметров у торгового алгоритма, возникает системный фактор подгонки под историю, то есть ситуация, при которой случайные варианты, показывающие при оптимизации лучший результат, чем аналогичные им случайные варианты, показывающие плохой, становятся приоритетными для продолжения "разработки" системы. Ведь процесс разработки и оптимизации далеко не всегда сводится к одному только циклу бэктекст-форвард.
Задача избежать переоптимизации сводится к тому, чтобы действовать таким образом, чтобы свести к минимуму вероятность значительного влияния простой случайности на положительный характер результирующего теста. При этом в полной мере задействуя сам инструмент оптимизации, который является довольно мощным инструментом, позволяющим значительно улучшить эффективность системы. (если просто ставить целью избежать подгонки, то очевидное решение - отказаться от оптимизации в принципе :) )


Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 16:55

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#9 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 17:08

Речь о результатах оптимизации. Вы ведь делаете оптимизацию?

Да, но при оптимизации получается единственный набор оптимальных параметров, и поэтому только один бэктест.

 

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

Такая проблема тоже есть.


  • 0

#10 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 17:11

Да, но при оптимизации получается единственный набор оптимальных параметров, и поэтому только один бэктест.

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

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


Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 17:21

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#11 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 17:22

Каждый результат оптимизации можно назвать бэктестом с фиксированным набором параметров. Всего таких положительных результатов, предположим, оказалось 100.

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

 

 

Вы взяли первый (лучший?) и проверили на форварде - оказалось, что он неработоспособен (или слаб). Что Вы делаете дальше?

Я беру оптимальный вариант, прогоняю на форварде. Если он слаб, то я систему считаю нерабочей. Если очень хочется, могу протестировать её на других инструментах (был случай когда система хорошо работала на одном из инструментов, для которых я её не разрабатывал даже), или еще пару раз повторить цикл "оптимизация-форвад" на других участках истории (например если первый раз была оптимизация 2000-2005 с форвардом 2005-2017, то могу сделать оптимизацию 2010-2015 с форвардом 2000-2010).

Я думаю это достаточно очевидные вещи и все так делают. Собственно ничего нового, я думаю, я тут не добавлю.

 

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

 

 

проверили на форварде - оказалось, что он неработоспособен (или слаб)

Если система не дает прибыли на форварде, то всё просто. Но если она дает прибыль на форварде, это еще не значит что она работоспособна и что будет прибыль в реале. Как я уже говорил, у меня более десятка случаев когда системы показывали хорошую прибыль на форварде, но сливали в реале. И это то что меня больше всего выбешивало.


Сообщение отредактировал Player 2: 19 Ноябрь 2017 - 17:22

  • 0

#12 AntFX

AntFX
  • ГородСанкт-Петербург

Отправлено 19 Ноябрь 2017 - 17:24

Если система не дает прибыли на форварде, то всё просто. Но если она дает прибыль на форварде, это еще не значит что она работоспособна и что будет прибыль в реале. Как я уже говорил, у меня более десятка случаев когда системы показывали хорошую прибыль на форварде, но сливали в реале. И это то что меня больше всего выбешивало.

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


Сообщение отредактировал AntFX: 19 Ноябрь 2017 - 17:33

  • 0

Всем, кто использует (или хочет использовать) автоматический корректировщик позиций на паммах, советую обратить внимание на новую версию.

Альтернативный рейтинг =))

Проверить прошлые результаты трейдера по ссылке на форумный профиль


#13 Player 2

Player 2

Отправлено 19 Ноябрь 2017 - 17:34

Значит, видимо, есть какие-то недочеты в методологии

Да.

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

Я помню что оценивал количество протестированных систем с 2006 по 2008 год как более 1000 штук. Не знаю насколько эта оценка реальна, может она завышена. Но самих систем было написано более сотни за это время, и каждая подвергалась нескольким модификациям в процессе (поэтому и считал я каждую систему за несколько, так что оценка может быть завышена в разы, но минимальная цифра - порядка 115-130 систем за 2 года).


Сообщение отредактировал Player 2: 19 Ноябрь 2017 - 17:40

  • 0

#14 ToB. CyxoB

ToB. CyxoB

Отправлено 05 Декабрь 2017 - 00:59

Даже при наличии закономерности происходит подгонка под кривую.

 

Если перед началом разработки торговой системы, ты хотя бы один раз посмотрел на график цены - ты УЖЕ подгоняешь ее под кривую. Можешь представить себе трейдера, никогда не видевшего графики, но пытающегося создать ТС? 

А значит "подгонка под кривую" есть  цель системостроительства - чем лучше твоя ТС следует кривой - тем больше она зарабатывает, не так ли? Вопрос только в длине этой кривой: 1 месяц, 1 год или вся доступная история (которая , к слову, есть мизерная, статистически малозначимая часть будущей, более длинной истории....)


  • 0

#15 ToB. CyxoB

ToB. CyxoB

Отправлено 05 Декабрь 2017 - 01:05

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

 

 

А что по времени ? Каждая система же входит в просадки, которые характеризуются каким-то средним временем (или максимальным)... На реале это время было превышено? Или счет сливался даже не выходя за рамки средних просадок (по времени)? 


  • 0

#16 ToB. CyxoB

ToB. CyxoB

Отправлено 05 Декабрь 2017 - 01:10

Да.

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

Я помню что оценивал количество протестированных систем с 2006 по 2008 год как более 1000 штук. Не знаю насколько эта оценка реальна, может она завышена. Но самих систем было написано более сотни за это время, и каждая подвергалась нескольким модификациям в процессе (поэтому и считал я каждую систему за несколько, так что оценка может быть завышена в разы, но минимальная цифра - порядка 115-130 систем за 2 года).

Прям целый улей торговых систем!! 

Интересно, сколько строк кода занимали такие системы, в среднем? Имеется в виду самую суть, без "инфрастуктуры" ... то есть сама торговая идея сколько "весила"?


  • 0

#17 ToB. CyxoB

ToB. CyxoB

Отправлено 05 Декабрь 2017 - 01:12

Да.

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

Я помню что оценивал количество протестированных систем с 2006 по 2008 год как более 1000 штук. Не знаю насколько эта оценка реальна, может она завышена. Но самих систем было написано более сотни за это время, и каждая подвергалась нескольким модификациям в процессе (поэтому и считал я каждую систему за несколько, так что оценка может быть завышена в разы, но минимальная цифра - порядка 115-130 систем за 2 года).

 

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


Сообщение отредактировал ToB. CyxoB: 05 Декабрь 2017 - 01:13

  • 0

#18 Player 2

Player 2

Отправлено 05 Декабрь 2017 - 02:13

А значит "подгонка под кривую" есть цель системостроительства - чем лучше твоя ТС следует кривой - тем больше она зарабатывает, не так ли?

Именно так.
 

Вопрос только в длине этой кривой: 1 месяц, 1 год или вся доступная история (которая , к слову, есть мизерная, статистически малозначимая часть будущей, более длинной истории....)

Подогнать можно и под всю доступную историю, и как тут показал мой разговор с другими трейдерами, сразу под много инструментов.
Главный вопрос это валидация (aka тест out-of-sample).

 

 

А что по времени ? Каждая система же входит в просадки, которые характеризуются каким-то средним временем (или максимальным)... На реале это время было превышено? Или счет сливался даже не выходя за рамки средних просадок (по времени)?

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

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

 

 

Интересно, сколько строк кода занимали такие системы, в среднем? Имеется в виду самую суть, без "инфрастуктуры" ... то есть сама торговая идея сколько "весила"?

 

Систем было 137 (среди них одна случайная, одна гоняла отчеты, может еще пара вспомогательных каких-то). Число строк кода по точкам с запятой - 6543. Если брать все строки, то 9748.

В среднем на систему это 47 и 71 соответственно. Как правило система помещалась на экран.

 

 

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

 

Было много всего - зигзаги, пробои каналов, в том числе наклонных, моментумы, EMA, линии тренда, всякие фигуры типа двойного дна и прочая чушь. Есть несколько систем которые видел где-то на форумах или на основе чьих-то идей, проверял чисто из интереса. Остался даже код где я тестил Франкусовские свечи.

 

Как пример, система на EMA:

procedure TForm5.EMA(EMAC: Double);
var       emah, pemah: Double;
begin
          emah := g[c].Close;
          while AdvOptExecute(EMAC, p2, p3, p4, p5, p6) do
          begin
              pemah := emah;
              emah := g[c].Close * EMAC + emah * (1 - EMAC);
              if emah > pemah then UpClose;
              if emah < pemah then DownClose;
          end;
end;

Здесь 12 строк на экране, 9 по точкам с запятой, а по сути 6 строк.


Сообщение отредактировал Player 2: 05 Декабрь 2017 - 02:19

  • 0

#19 ToB. CyxoB

ToB. CyxoB

Отправлено 05 Декабрь 2017 - 11:01

 

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

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

 

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


  • 0

#20 Player 2

Player 2

Отправлено 05 Декабрь 2017 - 11:13

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

Конечно проводил. Я всегда проверяю соответствуют ли сделки тестера реальной торговле. Если тестер совершает сделки в других местах это значит что тест некорректен, либо торговая система реализована с ошибкой. Я это проверял всегда задолго до начала торговли.


  • 0





Темы с аналогичным тегами системная торговля, стоплосс, управление капиталом, роботы

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных