Comments 15
Я не очень понимаю, как можно иметь константное время при переборе параметров? Оно же как минимум должно зависеть от числа параметров и от множества перебора, нет?
О применении метода отжига во второй части
То есть заголовок нас обманывает?..
можно написать очень длинную статью, но читать мало кто будет. поэтому частями выкладки
Мне вот не интересны торговые стратегии, но интересно, как делать подбор параметров за константное время, я только за ним в статью и пришел. Так что ваш заголовок меня обманул.
спасибо. название к статье поправил. теперь будет честно
Можно использовать генетический алгоритм, тогда количество расчетов будет равно произведению размера популяции на количество поколений отбора. Независимо от количества и интервалов перебираемых параметров.
Итак, из-за необходимости очень длительного вычисления комбинации параметров для получения наилучшего результата здесь как раз и используется случайный перебор параметров. Хотя вероятность найти лучший вариант снижается с увеличением количества параметров. Но цель найти приемлимый допустимый вариант. Зафиксировав ключевые парамеры повторяете процедуру подбора параметров. Если вы зафиксировали параметры которые лучше всего приближают вас к результату, то количество перебираемых параметров становится меньше. Соответственно зачем перебирать все подряд, если можно провести "эксперемент" ограниченное количество раз и выявить значимые параметры, сокращая на каждом этапе перебираемые параметры (или ограничив область поиска у выбранных параметров). В этом и константное время перебора. Алгоритм сильно упрощается. Например пять итераций сокращения перебираемых параметров с фиксацией.
К заголовку статьи прилагается и сама статья
Если мы "повторяем процедуру подбора", то время должно быть O(n)
, где n
- число повторов. А если внутри подбора больше одного параметра, то домножаем на число параметров. И это при условии, что у вас время перебора не зависит от диапазона значений, во что я тоже слабо верю.
Как у вас константа-то получается?
если параметр меняется в диапазоне (1, 10) и с шагом 1, то количество возможных принимаемых значений параметр занимает восемь значений ,то время перебора сильно зависит от количества возможных принимаемых значений. в статье , если вы на это обратите внимание, я использую контроль над количеством возможных принимаемых значений параметра.
gambling meets python
ох... 10 лет назад занимался подобным (и даже вещами на пару порядков продвинутее, но все равно очень рад, что это в прошлом)
во-первых, что мой личный вывод, что серьезных алготрейдеров с командами разрабов, что стратегии на основе анализа одного числового ряда, мягко говоря, хрень полная. Могут еще как-то работать либо вещи, основанные на микроструктуре рынка (стакан, HFT, код на FPGA), на предоставлении ликвидности, на технологическом превосходстве, на анализе дополнительной информации (новости читать нейросетью), но вот эта магия на свечах сделала богатыми только продавцов лопат. К слову, продавцы лопат неплохо постарались, - сейчас куча библиотек (в том числе, бесплатных), которые любой индикатор вроде MACD или линий Боллинжера рассчитают из коробки без необходимости программировать их с 0 через pandas и numpy
во-вторых, если уж так хочется в этом участвовать, то инструменты давно придуманы и запрограммированы. 10 лет назад была удивительная прожка Amibroker, имеющая свой векторный язык, интерпретирующийся написанным на С++ движком, что давало поистине реактивную скорость. И там были из коробки реализованы очень неплохие алгоритмы оптимизации, позволяющие реально сократить время оптимизации на порядки без потери точности, например, CMA-ES. Конкретно он настолько хорошо работал, что я потом кажется, запрограммировал его сам на C#, чтобы в свой самопичный бектестер залить.
ну и, последнее, - оптимизировать по профиту, не имея защиты от дурака в виде статистических тестов стат значимости гипотез - очень плохая идея. Втупую оптимизировать по профиту можно, разве что, HFT с 10000+ сделок за один прогон бектеста. Во всех остальных случаях это будет просто подгонка под историю. Недаром люди придумали всякие штуки вроде Sharpe ratio. Скачайте тот же Amibroker ради любопытства, посмотрите, какие там, помимо профита, цели оптимизации из коробки дает выбрать, почитайте их формулы на википедии, задайтесь вопросом, а зачем это придумано?
Метод подбора параметров функции за ограниченное время. Торговый симулятор + улучшение стратегии