Библиотеки: Virtual - страница 16

 
fxsaber:

Предварительные выводы

2. Если ТС рабочая, то лучшие результаты дает редкая автооптимизация на больших интервалах. Например, каждую неделю автооптимизируем ТС за предыдущую неделю. КПД результата замерял так: какая часть профита получается от лучшего прохода обычного режима ТС. Так вот поднять КПД выше 60% у меня не получилось пока. Еще раз уточню: 60% честной торговли от результата подгонки задним числом. Пока не решил, хорошо это или нет.

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

Насчет КПД - как по мне невозможно реализовать идеальную ТС, которая кроме закономерности не цепляет случайные входы. КПД просто показывает отношение закономерных к случайным. И 60% это очень и очень хороший показатель. И логично что на случайных ТС получаем 0% КПД на автооптимизаторе.

3. Колоссально все зависит от ФФ для оптимизации. Пробовал разные варианты. Не продвинулся к чему-то ценному.

А что пробовали?
 
aleger:
Наоборот - сугубо практик и прагматик, предпочитающий истину, а не всяческие вымыслы, домыслы и идиотские аналогии. 

А практика не затрудит продемонстрировать "реально достижимый при правильной постановке задачи" результат? Знаю, что затруднит. Ибо такие "практики" только "ля-ля" и умеют.

 
tradeonlydemo:

А практика не затрудит продемонстрировать "реально достижимый при правильной постановке задачи" результат? Знаю, что затруднит. Ибо такие "практики" только "ля-ля" и умеют.

Не затруднит. Вопрос в другом - надо ли, и кому это надо, и как.

 
TheXpert:

что пробовали?

Full и Half Train по MaxProfit.

Автооптимизация же по всяким вариантам. Сохранились эти.

BestInterval.GetProfit()
BestInterval.GetProfit() * BestInterval.GetProfitFactor() * BestInterval.GetProfitFactor() * BestInterval.GetTotal()
BestInterval.GetProfit() - Т * BestInterval.GetTotal()
...

Понятно, что с/без BestInterval.


ЗЫ Анализировал, какого критерия оптимизации придерживается человек, когда выбирает нужные себе входные параметры. Оказалось, что этот критерий не запихнуть в OnTester.

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

Например, оптимизировал по профиту. Взял 100 лучших и выбрал тот, который с наибольшим ПФ.


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

 

Не будет никакой разницы между частой и редкой переоптимизацией.

Намного интереснее другой вопрос: "когда нужно делать переоптизацию?".

 

А чтобы повысить КПД алгоритма, можно еще задаться таким вопросом: "на каком участке (размер и место) нужно проводить переоптимизацию?".

 
Marat Sultanov:

Не будет никакой разницы между частой и редкой переоптимизацией.

Намного интереснее другой вопрос: "когда нужно делать переоптизацию?".

Из первого предложения следует ответ на вопрос во втором.

Marat Sultanov:

А чтобы повысить КПД алгоритма, можно еще задаться таким вопросом: "на каком участке (размер и место) нужно проводить переоптимизацию?".

На этот вопрос очень легко ответить - оптимизация автооптимизатора все показывает. Там всего два входных параметра: как часто и длина интервала.

 
fxsaber:

Из первого предложения следует ответ на вопрос во втором.

Хорошо.

Если отбросить контекст, тогда да, это выглядит именно так.

Но в моем случае, контекст подразумевает про периодическую (с четким периодом времени) переоптимизацию нелинейной функции на хаотические данных - котировках. Такие данные подразумевают отсутствие четкой классификации признаков в данных. Иными словами, мы работает с нестационарными данными.

Вы ведь об этом подразумевали в обсуждениях выше, верно?

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

По большей части дело не в алгоритме, а в данных...

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

Это лишь мое мнение. Я хотел поделиться им и если повезет, то услышать что-то интересное по этому поводу.

 
Marat Sultanov:

Это лишь мое мнение. Я хотел поделиться им и если повезет, то услышать что-то интересное по этому поводу.

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

 
fxsaber:

Из первого предложения следует ответ на вопрос во втором.

На этот вопрос очень легко ответить - оптимизация автооптимизатора все показывает. Там всего два входных параметра: как часто и длина интервала.

Так мы лишь подгоним гиперпараметры эвристического алгоритма под данные.

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

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

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

Причина обращения: