Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 647

 

Maxim Dmitrievsky:

осталось 3 недели до моего финиша с НС :)) либо грааль либо ну их нафиг. Делайте ставки :))

Сначала не помешает услышать коэффициент выигрыша. Тут ведь ни кто просто так ордера не берет ;)

 

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

Rastrigin <- function(x){
  return(sum(x^2 - 10 * cos(2 * pi * x)) + 10 * length(x))
}


Для тестирования взял её с 4 параметрами: 

~ w^2 - 10 * cos(2 * pi * w)  +  x^2 - 10 * cos(2 * pi * x)  +  y^2 - 10 * cos(2 * pi * y)  +  z^2 - 10 * cos(2 * pi * z)   +  10 * 4


Производные:

2 * w + 10 * (sin(2 * pi * w) * 2 * pi
2 * x + 10 * (sin(2 * pi * x) * 2 * pi
2 * y + 10 * (sin(2 * pi * y) * 2 * pi
2 * z + 10 * (sin(2 * pi * z) * 2 * pi


Сравнивал пакеты GenSA, lbfgs, lbfgsb3, n1qn1 и различные методы в стандартной функции optim()

Результаты:
пакет, число вызовов фитнесс (и градиент) функций, найденные параметры и итоговый результат на котором остановился поиск.

n1qn1 fitness function calls: 448 ; parameters = 3.90227e-18 3.90227e-18 3.90227e-18 3.90227e-18 ; result = 0 
lbfgs fitness function calls: 14 ; parameters = -1.891749e-10 -1.891749e-10 -1.891749e-10 -1.891749e-10 ; result = 0 
lbfgsb3 fitness function calls: 12 ; parameters = -7.542216e-15 -7.542216e-15 -7.542216e-15 -7.542216e-15 ; result = 0 
GenSA fitness function calls: 66582 ; parameters = 1.517382e-11 -5.657816e-12 -2.292922e-11 -3.257902e-12 ; result = 0 
optim Nelder-Mead fitness function calls: 253 ; parameters = -2.981633 3.988813 0.9902444 -2.980489 ; result = 34.8497 
optim BFGS fitness function calls: 49 ; parameters = 8.731115e-16 8.731115e-16 8.731166e-16 8.731157e-16 ; result = 0 
optim CG fitness function calls: 918 ; parameters = 0.9949586 0.9949586 0.9949586 0.9949586 ; result = 3.979836 
optim L-BFGS-B fitness function calls: 81 ; parameters = 8.526118e-13 8.526118e-13 8.526118e-13 8.526118e-13 ; result = 0 
optim SANN fitness function calls: 10000 ; parameters = 750.3075 745.0596 743.626 753.8133 ; result = 2239327 

Первых три функции (n1qn1, lbfgs, lbfgsb3) используют аналитически найденный градиент.

Результат = 0 идеален, чем дальше от ноля тем хуже.

Видно что знать производные очень хорошо, lbfgsb3 достиг идеального результата за 12 вызовов фитнесс функции.
Из тех что определяют градиент численно - самой лучшей оказалась стандартная функция optim с методом BFGS, 49 вызовов фитнесс функции.

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

Прикрепил файлик с кодом, можете потестировать на своих функциях. 

Файлы:
n1qn1.txt  4 kb
 

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


 

Возврат к среднему можно торговать даже машкой. Но как определить где у цены среднее, если среднее смещается вместе с трендом? (Вопрос риторический - никак). 

 
Dr. Trader:

Возврат к среднему можно торговать даже машкой. Но как определить где у цены среднее, если среднее смещается вместе с трендом? (Вопрос риторический - никак). 

среднее здесь 0, это маркет нейтральная стратегия

дальше уже чисто на статистике вывозить надо ) чего там где смещается уже не разобрать в черном ящике

короче почти доделана 2-я стратегия из 3-х запланированных (результаты первой уже писал, не вкатило)

если эта не сработает - останется последняя )

и на этом с МО можно будет закончить

 
Maxim Dmitrievsky:

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


Коинтеграция - это термин и к Вашей картинке не имеет никакого отношения.

Возможность применения арима определяется несколькими тестами, главный из которых arch, который определяет наличие arch-эффекта во временном ряду. Если arch-эффект отсутствует, а это примерно 20%, то торгуйте, но ... на истории, так как этот участок уже проехали или почти проехали или...

 
СанСаныч Фоменко:

Коинтеграция - это термин и к Вашей картинке не имеет никакого отношения.

Возможность применения арима определяется несколькими тестами, главный из которых arch, который определяет наличие arch-эффекта во временном ряду. Если arch-эффект отсутствует, а это примерно 20%, то торгуйте, но ... на истории, так как этот участок уже проехали или почти проехали или...

давайте 3-й раз определение коинтеграции.. что это и почему к моей картинке не относится? :)

это картинка уже с тестового участка, на истории я вообще не рассматриваю, там всегда все идеально

или о чем эта ветка вообще - о разработке стратегий на МО или о разборе разных функций R, за нескольк омесяцев, по моему, только я скидывал хоть какие-то результаты :)

 
Maxim Dmitrievsky:

среднее здесь 0, это маркет нейтральная стратегия

Вы хотите сам зелёненький график торговать? Тогда понятно, я сначала подумал это индикатор для торговли на eurusd.

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

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

 
Maxim Dmitrievsky:

давайте 3-й раз определение коинтеграции.. что это и почему к моей картинке не относится? :)

это картинка уже с тестового участка, на истории я вообще не рассматриваю, там всегда все идеально

В коинтеграции минимум два временных ряда.

Но это не все.

Эти ряды не стационарные

Но это не все.

Эти НЕ стационарные ряды надо соединить так, чтобы результат был стационарный. 

Торговые решения принимают по этому СТАЦИОНАРНОМУ ряду и этим гарантируют саму возможность прогноза.

 
Dr. Trader:

Вы хотите сам зелёненький график торговать? Тогда понятно, я сначала подумал это индикатор для торговли на eurusd.

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

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

вот, значит нужно определить есть ли память.. она, так я понял, определяется по хвостам?

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