Подобрать коеффициенты
От: alien3128  
Дата: 28.12.14 12:26
Оценка:
Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.
Re: Подобрать коеффициенты
От: alexb1980  
Дата: 28.12.14 12:37
Оценка:
Hello alien3128,

> Есть числовой ряд f(t), заданный таблично (исторические данные). Над

> этим рядом выполняются преобразования с помощью некоторой формулы, в
> результате чего получаем второй ряд. В формуле имеется N настраиваемых
> коеффициентов (параметров). Задача: подобрать эти коеффициенты таким
> образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь
> методы подбора, кроме тупого перебора всех вариантов с каким-то
> достаточно малым шагом delta? Хотя бы подскажите, в какую сторону
> смотреть.
>

Може я ошибаюсь, но может "Метод наименьших квадратов"
http://www.cleverstudents.ru/articles/mnk.html
Posted via RSDN NNTP Server 2.1 beta
Re: Подобрать коеффициенты
От: andyp  
Дата: 28.12.14 13:13
Оценка: +1
Здравствуйте, alien3128, Вы писали:

A>Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.


У тебя есть целевая функция — сумма y_i(P) от параметров и есть ограничения вида y_i = Ф(x_i, P), x_i = f(t).
На ум приходит метод множителей Лагранжа или линейное программирование (симплекс-метод) в зависимости от вида "формулы" Ф
Re[2]: Подобрать коеффициенты
От: alien3128  
Дата: 28.12.14 14:10
Оценка:
Здравствуйте, andyp, Вы писали:

A>Здравствуйте, alien3128, Вы писали:


A>>Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.


A>У тебя есть целевая функция — сумма y_i(P) от параметров и есть ограничения вида y_i = Ф(x_i, P), x_i = f(t).

A>На ум приходит метод множителей Лагранжа или линейное программирование (симплекс-метод) в зависимости от вида "формулы" Ф

Исторические данные — это биржевые котировки, "формула" на самом деле не совсем формула, а правила торговли для робота, параметры — это, например, уровни, где открываться, величина стопа / профита и т.д. и т.п. Стоит задача подобрать эти самые параметры таким образом, чтобы максимизировать результаты тестовой прогонки торговой стратегии на исторических данных. Перечисленное применимо в этом случае (прошу прощения за вопрос, я не знаком с этими методами).
Отредактировано 28.12.2014 14:19 alien3128 . Предыдущая версия . Еще …
Отредактировано 28.12.2014 14:19 alien3128 . Предыдущая версия .
Re[2]: Подобрать коеффициенты
От: alien3128  
Дата: 28.12.14 14:10
Оценка:
Здравствуйте, alexb1980, Вы писали:

A>Hello alien3128,


>> Есть числовой ряд f(t), заданный таблично (исторические данные). Над

>> этим рядом выполняются преобразования с помощью некоторой формулы, в
>> результате чего получаем второй ряд. В формуле имеется N настраиваемых
>> коеффициентов (параметров). Задача: подобрать эти коеффициенты таким
>> образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь
>> методы подбора, кроме тупого перебора всех вариантов с каким-то
>> достаточно малым шагом delta? Хотя бы подскажите, в какую сторону
>> смотреть.
>>

A>Може я ошибаюсь, но может "Метод наименьших квадратов"

A>http://www.cleverstudents.ru/articles/mnk.html

Спасибо, думаю это не совсем то что нужно.
Re: Подобрать коеффициенты
От: LaptevVV Россия  
Дата: 28.12.14 15:07
Оценка:
Здравствуйте, alien3128, Вы писали:

A>Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.

Если исторические данные, то, может быть, анализ временных рядов посмотреть?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Отредактировано 28.12.2014 19:01 LaptevVV . Предыдущая версия .
Re[3]: Подобрать коеффициенты
От: andyp  
Дата: 28.12.14 15:12
Оценка: 2 (2)
Здравствуйте, alien3128, Вы писали:

A>Данные — это биржевые котировки, "формула" на самом деле не совсем формула, а правила торговли для робота, параметры — это, например, уровни, где открываться, величина стопа / профита и т.д. и т.п.

A>Стоит задача подобрать эти самые параметры таким образом, чтобы максимизировать результаты тестовой прогонки торговой стратегии на исторических данных.

Я не знаток algorithmic trading, но:
С точки зрения математики, ты решаешь задачу поиска максимума некоторой функции (сумма профита при торговле за некоторое время)в пространстве параметров при наличии ограничений (это фактически правила торговли, заданные в виде равенств и неравенств, зависящих от параметров). Для выбора используемого метода имеет значение, являются ли функционал и органичения линейными в пространсте параметров. Если да, то решать можно симплекс-методом, если нет — то нужно пользоваться методами нелинейного программирования. Врядли функционалы в твоем случае окажутся линейными.

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

Также, могут оказаться релевантными всяческие методы оптимизации — метод градиентного спуска, квазиньютоновские методы и т.п.
Re[3]: Подобрать коеффициенты
От: Кодт Россия  
Дата: 28.12.14 19:20
Оценка:
Здравствуйте, alien3128, Вы писали:

A>Исторические данные — это биржевые котировки, "формула" на самом деле не совсем формула, а правила торговли для робота, параметры — это, например, уровни, где открываться, величина стопа / профита и т.д. и т.п. Стоит задача подобрать эти самые параметры таким образом, чтобы максимизировать результаты тестовой прогонки торговой стратегии на исторических данных. Перечисленное применимо в этом случае (прошу прощения за вопрос, я не знаком с этими методами).


То есть, речь идёт об экстраполяции — чтобы робот мог предсказать будущее значение и, оглядываясь на него, выставить пороги.

Если исторических данных достаточно много (и, особенно, если они многоканальные — например, параллельно цена на нефть, золото, пару-тройку валют, пару-тройку ведущих акций или биржевых индексов), то, наверно, можно построить нейросеть — DNN или даже RNN.
Обучение нейросети — процесс долгий, но довольно тупой. Зато предсказывать она будет всяко не хуже, чем аппроксимация рядом Фурье или Лагранжа (рядом Тейлора лучше не стоит, он для экстраполяции очень резко выстреливает). Хотя бы потому, что у нейросети больше параметров, чем у аппроксимации, ну и нелинейность приложится из коробки.

Если данных мало, то — FFT к производной котировки (т.е. к функции роста котировок). И тренироваться со своим роботом.

Да, я не биржевой математик, поэтому исхожу лишь из своего здравого смысла.
Перекуём баги на фичи!
Re[4]: Подобрать коеффициенты
От: alien3128  
Дата: 28.12.14 19:41
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, alien3128, Вы писали:


A>>Исторические данные — это биржевые котировки, "формула" на самом деле не совсем формула, а правила торговли для робота, параметры — это, например, уровни, где открываться, величина стопа / профита и т.д. и т.п. Стоит задача подобрать эти самые параметры таким образом, чтобы максимизировать результаты тестовой прогонки торговой стратегии на исторических данных. Перечисленное применимо в этом случае (прошу прощения за вопрос, я не знаком с этими методами).


К>То есть, речь идёт об экстраполяции — чтобы робот мог предсказать будущее значение и, оглядываясь на него, выставить пороги.


Совсем нет. Это называется оптимизация торговой системы — подбор параметров для увеличения робастности и прибыли. Ни о какой экстраполяции речь не идет.
Re: Подобрать коеффициенты
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 29.12.14 14:01
Оценка: +1
Здравствуйте, alien3128, Вы писали:

A>Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.


Думаю, что тут лучше всего взять что-то типа генетических алгоритмов. Почему:
1. нет требований к линейности, гладкости и другим нежелательным ограничениям целевой функции;
2. при наличии достаточных вычислительных ресурсов процесс оптимизации получается устойчивым, способным к поиску глобального минимума/максимума;
3. можно искать не только какой-то один экстремум целевой функции (максимум суммы), но и гибко настраивать поведение вообще, например, раздавать различные пенальти особям, которые дают большие значения целевой функции, но допускают провалы в одиночных сделках. Мне вообще кажется, что нужен не столько прибыльный бот, сколько стабильный и наименее рискованный. Ведь ты тренируешься исключительно на исторических данный, будущее может быть любым. Надо следить за тем, чтобы в неизвестных условиях бот не совершал крупных и рискованных сделок. Кто знает, может на новых данных у него решение уйдёт в какую-нибудь околобесконечность.
Re[2]: Подобрать коеффициенты
От: svasilyev  
Дата: 30.12.14 06:58
Оценка:
Здравствуйте, andyp, Вы писали:

A>Здравствуйте, alien3128, Вы писали:


A>>Есть числовой ряд f(t), заданный таблично (исторические данные). Над этим рядом выполняются преобразования с помощью некоторой формулы, в результате чего получаем второй ряд. В формуле имеется N настраиваемых коеффициентов (параметров). Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда. Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta? Хотя бы подскажите, в какую сторону смотреть.


A>У тебя есть целевая функция — сумма y_i(P) от параметров и есть ограничения вида y_i = Ф(x_i, P), x_i = f(t).

A>На ум приходит метод множителей Лагранжа или линейное программирование (симплекс-метод) в зависимости от вида "формулы" Ф


Как я понял Вы оптимизируете Trading Strategy Performance
Посмотрите статьи на www.mql5.com/ru/articles
Я когда делал подобное для оптимизации использовал алгоритм отжига и pso
see "Time Series Prediction with Recurrent Neural Networks Using a Hybrid PSO-EA Algorithm"
Re: Подобрать коеффициенты
От: DreamMaker  
Дата: 13.01.15 04:13
Оценка:
Здравствуйте, alien3128, Вы писали:

A> Задача: подобрать эти коеффициенты таким образом, чтобы максимизировать сумму второго ряда.


работать не будет, постановка задачи некорректная.

здесь все сложнее. но и интереснее.
In P=NP we trust.
Re: Подобрать коеффициенты
От: TarasKo Голландия  
Дата: 11.02.15 12:29
Оценка:
Генетический алгоритм или алгоритм имитации отжига.
Отжиг сложнее распаралелить.

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

Вот ещё прикольное видео видео
Re: Подобрать коеффициенты
От: Mihas  
Дата: 11.02.15 12:54
Оценка:
Здравствуйте, alien3128, Вы писали:

A>Есть какие-нибудь методы подбора, кроме тупого перебора всех вариантов с каким-то достаточно малым шагом delta?


Я б для начала попробовал так.

Есть функция f(x, y, z)
1. методом перебора (или как-то иначе) находим экстремум для f(x, const, const)
2. фиксируем x и ищем экстремум для f(const, y, const)
3. фиксируем y и ищем экстремум для f(const, const, z)

Повторяя шаги 1-3 до тех пор, пока прираещение f не станет достаточно мало, можно найти случайно-ближайший экстремум.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.