Jump to content

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


Recommended Posts

AntFX

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

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

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

 

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

Edited by AntFX

1

Link to post
Share on other sites
  • Replies 57
  • Created
  • Last Reply

Top Posters In This Topic

  • Player 2

    22

  • ToB. CyxoB

    17

  • AntFX

    14

  • frantsuz

    4

Top Posters In This Topic

Popular Posts

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

Но я создал. Так что в моем случае безногий пробежал марафон. История примерно такая. Думал я думал, и придумал систему. Написал, прогнал - плохая. Потом (не буду вдаваться в детали) сделал достаточн

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

Player 2

 

 

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

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

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

  • Thanks 3
Link to post
Share on other sites
AntFX

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

 

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

 

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

Edited by AntFX

1

Link to post
Share on other sites
Player 2

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

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

Edited by Player 2
Link to post
Share on other sites
AntFX

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

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


1

Link to post
Share on other sites
Player 2

 

 

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

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

 

 

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

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

 

 

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

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

  • Thanks 1
Link to post
Share on other sites
AntFX

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

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

Edited by AntFX

1

Link to post
Share on other sites
AntFX

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

Edited by AntFX

1

Link to post
Share on other sites
Player 2

 

 

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

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

 

 

 

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

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

Link to post
Share on other sites
AntFX
Да, но при оптимизации получается единственный набор оптимальных параметров, и поэтому только один бэктест.

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

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

Edited by AntFX

1

Link to post
Share on other sites
Player 2
Каждый результат оптимизации можно назвать бэктестом с фиксированным набором параметров. Всего таких положительных результатов, предположим, оказалось 100.

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

 

 

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

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

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

 

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

 

 

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

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

Edited by Player 2
Link to post
Share on other sites
AntFX
Если система не дает прибыли на форварде, то всё просто. Но если она дает прибыль на форварде, это еще не значит что она работоспособна и что будет прибыль в реале. Как я уже говорил, у меня более десятка случаев когда системы показывали хорошую прибыль на форварде, но сливали в реале. И это то что меня больше всего выбешивало.

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

Edited by AntFX

1

Link to post
Share on other sites
Player 2
Значит, видимо, есть какие-то недочеты в методологии

Да.

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

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

Edited by Player 2
Link to post
Share on other sites
  • 3 weeks later...
ToB. CyxoB

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

 

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

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

Link to post
Share on other sites
ToB. CyxoB

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

 

 

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

Link to post
Share on other sites
ToB. CyxoB

Да.

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

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

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

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

Link to post
Share on other sites
ToB. CyxoB

Да.

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

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

 

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

Edited by ToB. CyxoB
Link to post
Share on other sites
Player 2

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

Именно так.

 

Вопрос только в длине этой кривой: 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 строк.

Edited by Player 2
Link to post
Share on other sites
ToB. CyxoB

 

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

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

 

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

Link to post
Share on other sites
Player 2

 

 

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

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

Link to post
Share on other sites
ToB. CyxoB

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

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

Link to post
Share on other sites
Player 2

 

 

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

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

Link to post
Share on other sites
ToB. CyxoB

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

ну и что было? результаты не расходились? система сливала и на реале и в тестере? 

Link to post
Share on other sites
Player 2
ну и что было? результаты не расходились? система сливала и на реале и в тестере?

Да, сливала и в тестере и на реале.

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

Edited by Player 2
Link to post
Share on other sites
ToB. CyxoB

Да, сливала и в тестере и на реале.

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

 

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

Edited by ToB. CyxoB
Link to post
Share on other sites
  • Capman locked this topic
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...