вот! как раз пытаюсь донести, что можно избежать пяти оптимизаций и сразу, в течении одной оптимизации попасть в зелёную область. для этого нужно ввести главную ФФ над младшей ФФ. главная ФФ как раз должна описать зелёную область и является глобальным максимумом.
тоесть, ФФ на картинке не является тем что нам нужно, нам нужно ФФ где нужно искать глобальный максимум.
сложно это на пальцах обьяснить. но можно, в статье))
Понятно, что при грамотном подходе никто по тому же критерию баланса не оптимизирует. Стараются учесть отсутствие пересидок, статистически значимое количество сделок и т.д.
Должна получиться подобная картинка из сделок в каждом проходе. Здесь видны сделки-изгои и кирпичи ТС.
Для формирования критерия оптимизации желательно выкидывать сделки-отщепенцы.
Но это тема формирования удобной ФФ. При этом даже если она будет полностью без пиков и иметь холмистую природу, то эти холмы одним завершенным проходом найдены не будут. Поэтому и делаю так.
Косвенно нахожу локальные через принудительное прерывание оптимизации при задействовании большого количества ядер. Грубо говоря, в Тестере 20 агентов, прерываю оптимизацию после 2000 проходов.
Но это очень грубо. Надежнее выбрасывать лучший холм и повторять оптимизацию.
Торговый робот должен (условно) удовлетворять следующим условиям: Совершать достаточно много сделок на интервале настройки (оптимизации). Показывать столь же стабильный результат вне интервала
Отличная визуализация того, что можно видеть во время полного перебора ТС. Конечно, здесь 3D - два входных параметра. Но наглядно видны горки/шипы. Для ТС шипы, как правило, зло. А вот вершины холмов - самое интересное.
По поводу шипов зла. Для ТС это случайности - жесткая подгонка (вне зависимости от критерия оптимизации).
Если вы будете для ТС с двумя параметрами каждый день в течении года или двух производить полную оптимизацию с получением подобного кадра, а потом из этих кадров сформируете видео, то получится что-то вроде такого:
Было бы наивно полагать что поверхность будет оставаться статичной. Поэтому напрашиваеся вопрос: А смысл?
для подобных специфических задач можно подумать о механизме "выкидывания", когда из слишком разросшейся группы выпинывают собратьев, которые вынуждены создавать кучковпния в отдельных екстремумах.
Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.
при наличии данных вырезаемой области можно очень легко (даже в штатном Тестере) проводить оптимизацию без этого места пространства.
Но мне совсем не хватает компетенции, как определить область вокруг найденного глобального максимума в результатах ГА.
Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.
В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.
Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.
Но реально самому затюнинговать
Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.
В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.
полагаю, что последние 100 записей будут разительно отличаться у разных алгоритмов. по опыту могу позволить себе так полагать, поэтому резонно заметить, что выбор алго для задач имеет смысл, а не просто взять лучший из таблицы...
посему, нахожу полезным идею создания такой рейтинговой таблицы.
специфической задачи - имел ввиду конкретно такой, а не редкой. есть потребность, значит это должно быть учтено в платформе, желательно.
полагаю, что последние 100 записей будут разительно отличаться у разных алгоритмов. по опыту могу позволить себе так полагать, поэтому резонно заметить, что выбор алго для задач имеет смысл, а не просто взять лучший из таблицы...
посему, нахожу полезным идею создания такой рейтинговой таблицы.
За рейтинг! Больше объективности. Но я пока слабо въехал. Все же исхожу их практических задач, с которыми сталкиваюсь.
специфической задачи - имел ввиду конкретно такой, а не редкой. есть потребность, значит это должно быть учтено в платформе, желательно.
В Тестере добавил бы галочку "выбросить области найденных максимумов предыдущих оптимизаций".
Тогда первый запуск без этой галки, остальные - с включенной. Сделали 20 оптимизаций - получили 20 пиков.
Далее зарядили их в OOS-проверку (20 одиночных прогонов) и дали им оценку, заодно и оценку всей ТС/ФФ.
Мне нужна относительно статичная точка в этой бурлящей поверхности. Такие находил...
но все же, думаю, нахождение таких точек имел вероятностный характер. Мой посыл в том, что не должно быть на входе ТС входных параметров, требующих "оптимизации". Такие параметры превращают ТС в монетку. Даже внутренняя самооптимизация внутренних параметров - тоже самообман.
Понятно, что при грамотном подходе никто по тому же критерию баланса не оптимизирует. Стараются учесть отсутствие пересидок, статистически значимое количество сделок и т.д.
Немного по теме писал здесь.
Должна получиться подобная картинка из сделок в каждом проходе. Здесь видны сделки-изгои и кирпичи ТС.
Для формирования критерия оптимизации желательно выкидывать сделки-отщепенцы.
Но это тема формирования удобной ФФ. При этом даже если она будет полностью без пиков и иметь холмистую природу, то эти холмы одним завершенным проходом найдены не будут. Поэтому и делаю так.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм растущих деревьев (Saplings Sowing and Growing up — SSG)"
fxsaber, 2023.03.22 00:32
Косвенно нахожу локальные через принудительное прерывание оптимизации при задействовании большого количества ядер. Грубо говоря, в Тестере 20 агентов, прерываю оптимизацию после 2000 проходов.
Отличная визуализация того, что можно видеть во время полного перебора ТС. Конечно, здесь 3D - два входных параметра. Но наглядно видны горки/шипы. Для ТС шипы, как правило, зло. А вот вершины холмов - самое интересное.
По поводу шипов зла. Для ТС это случайности - жесткая подгонка (вне зависимости от критерия оптимизации).
Если вы будете для ТС с двумя параметрами каждый день в течении года или двух производить полную оптимизацию с получением подобного кадра, а потом из этих кадров сформируете видео, то получится что-то вроде такого:
Было бы наивно полагать что поверхность будет оставаться статичной.
Поэтому напрашиваеся вопрос:
А смысл?
Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.
Но реально самому затюнинговать
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм растущих деревьев (Saplings Sowing and Growing up — SSG)"
fxsaber, 2023.03.23 19:51
при наличии данных вырезаемой области можно очень легко (даже в штатном Тестере) проводить оптимизацию без этого места пространства.
Но мне совсем не хватает компетенции, как определить область вокруг найденного глобального максимума в результатах ГА.
Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.
В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.
Было бы наивно полагать что поверхность будет оставаться статичной.
Мне нужна относительно статичная точка в этой бурлящей поверхности. Такие находил...
И все же не стоит сводить тему к умению и смыслу варить. Нужна кастрюля для варки.
И все же не стоит сводить тему к умению и смыслу варить. Нужна кастрюля для варки.
+++
Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.
Но реально самому затюнинговать
Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.
В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.
полагаю, что последние 100 записей будут разительно отличаться у разных алгоритмов. по опыту могу позволить себе так полагать, поэтому резонно заметить, что выбор алго для задач имеет смысл, а не просто взять лучший из таблицы...
посему, нахожу полезным идею создания такой рейтинговой таблицы.
За рейтинг! Больше объективности. Но я пока слабо въехал. Все же исхожу их практических задач, с которыми сталкиваюсь.
В Тестере добавил бы галочку "выбросить области найденных максимумов предыдущих оптимизаций".
Тогда первый запуск без этой галки, остальные - с включенной. Сделали 20 оптимизаций - получили 20 пиков.
Далее зарядили их в OOS-проверку (20 одиночных прогонов) и дали им оценку, заодно и оценку всей ТС/ФФ.
Мне нужна относительно статичная точка в этой бурлящей поверхности. Такие находил...
но все же, думаю, нахождение таких точек имел вероятностный характер.
Мой посыл в том, что не должно быть на входе ТС входных параметров, требующих "оптимизации". Такие параметры превращают ТС в монетку.
Даже внутренняя самооптимизация внутренних параметров - тоже самообман.
В Тестере добавил бы галочку "выбросить области найденных максимумов предыдущих оптимизаций".
Самостоятельная реализация: