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

 
Я подожду пока СС прояснит как он хочет это сделать .

А я еще раз повторю, что я думаю, предсказание сделкт с выходом по простому условию может быть не оптимально .

Что если тренировать еще одну машину, которая на уже открытых сделках будет учиться моменту закрытия? Поясню. Сделка должна закрываться через час - мы так обучили машину на открытие сделок. 

Для каждой открываемой сделки будет идти 60 записей (строк) с фичами - на каждую минуту, начиная с 31 минуты и заканчивая 90 минутой. Примерно половина этих записей будет помечена 1 как хороший выход а районе 60ой минуты.

Вот это я называю детально объяснить как надо решить задачу.

Что думаете?
 
Alexey Burnakov:

Идея интересная. у меня тоже есть советники работающие. Может быть я подумаю, как их обновить. Но мне непонятно что именно надо улучшать? Чему нужно обучать машину?

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

То есть, не совсем понятно, что именно вы будете делать. 

Вот обратите на это внимание из моего поста выше:

Генеральное направление беру со старшего бара. Но при внимательном рассмотрении по времени имеется чудовищное запаздывание в терминах младших баров особенно. Так если это D1, а торгую на М5, то получается, что за направление я беру чуть ли не позавчерашние данные. Даже предсказание на один шаг вперед для D1 с ошибкой в 30%  радикально улучшило доходность советника, а главное повысило уверенность, что не сольет.

В моем конкретном случае я иду по пути использования запаздывающих сведений из индикаторов на соответствующие предсказания из R. 

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

Вот обратите на это внимание из моего поста выше:

Генеральное направление беру со старшего бара. Но при внимательном рассмотрении по времени имеется чудовищное запаздывание в терминах младших баров особенно. Так если это D1, а торгую на М5, то получается, что за направление я беру чуть ли не позавчерашние данные. Даже предсказание на один шаг вперед для D1 с ошибкой в 30%  радикально улучшило доходность советника, а главное повысило уверенность, что не сольет.

В моем конкретном случае я иду по пути использования запаздывающих сведений из индикаторов на соответствующие предсказания из R. 

Ладно, примерно идея понятна.
 

У меня прямо большие новости. 

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

 

 

 

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

Для этого конечно пришлось написать свою фитнесс-функцию.

 

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

 

Как видите, я получил вполне вменяемые значения МО как на обучении, так и коррелирующие с ними значения на валидации! Заметьте, что при моделировании был заложен спред в размере 0,00020 (двадцать пипеток).

 

Также я считал общую сумму торговли с учетом спреда. Значения также очень приятные. Максимум прибыли достигается при определенном соотношении количества сделок и МО сделки, все это на горизонте планирования в 12 часов. На графике перебор всех горизонтов планирования, всех значений серой зоны и лучших параметров обучения модели. См. ниже:


 

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

 

Алексей 

 
Alexey Burnakov:

У меня прямо большие новости. 

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

 

 

 

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

Для этого конечно пришлось написать свою фитнесс-функцию.

 

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

 

Как видите, я получил вполне вменяемые значения МО как на обучении, так и коррелирующие с ними значения на валидации! Заметьте, что при моделировании был заложен спред в размере 0,00020 (двадцать пипеток).

 

Также я считал общую сумму торговли с учетом спреда. Значения также очень приятные. Максимум прибыли достигается при определенном соотношении количества сделок и МО сделки, все это на горизонте планирования в 12 часов. На графике перебор всех горизонтов планирования, всех значений серой зоны и лучших параметров обучения модели. См. ниже:


 

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

 

Алексей 

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

Упорный труд дает результаты.

Удачи

 
Vladimir Perervenko:

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

Упорный труд дает результаты.

Удачи

Как мне кажется одно другого не исключает.

Алексей преодолел очевидный минус всех оценок классификационных предсказаний: очевидно, что ценность правильного предсказания бара в 1 пипс и ценность предсказания бара с 10 пипсами совершенно разная.

Поздравляю Вас , Алексей! 

 
Vladimir Perervenko:

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

Упорный труд дает результаты.

Удачи

Поясню.

Прогноз на 12 часов вперед (724 минуты, если точно).

Количество сделок - более 5000 для каждой из валидационных выборок. Результат усредненный для 49 валидационных выборок. Трейды внутри каждой выборки происходят с шагом примерно в 12 часов, то есть, нет явной зависимости и нет наложения результатов. Я сейчас еще выложу графики симуляции торговли. Че-то слишком хороши результаты. Но пока все подтверждается.

 

Финальные данные по моему эксперименту:

 

Симуляция торговли по сигналам от обученной машины на 49 валидационных выборках (в пунктах):

 

 

Распределение результата сделок в пунктах для 49 выборок:

 

 

И проведение проверки гипотез о значимом отличии среднего (медианы) МО каждой из валидационных выборок от нуля:

 

validation sample
shapiro test normality p-value
wilcoxon test p-value for difference from zero
mean
median
mean dist upper 99%-tail
mean dist lower 99%-tail
1
1.11E-65
0
0.000139
0.000095
0.000146
0.000133
2
8.55E-64
0
0.000139
0.000096
0.000145
0.000133
3
8.24E-63
0
0.000137
0.000096
0.000143
0.000131
4
3.31E-66
0
0.000139
0.000095
0.000146
0.000133
5
4.64E-66
0
0.000142
0.000097
0.000149
0.000136
6
7.08E-63
0
0.000141
0.000097
0.000147
0.000135
7
8.72E-65
0
0.000135
0.000096
0.000141
0.000129
8
4.52E-65
0
0.000139
0.000096
0.000145
0.000132
9
4.31E-64
0
0.000143
0.000102
0.000149
0.000137
10
4.53E-66
0
0.000141
0.000099
0.000147
0.000134
11
8.97E-67
0
0.000143
0.000098
0.000149
0.000136
12
2.21E-63
0
0.000139
0.000102
0.000145
0.000133
13
1.16E-63
0
0.000142
0.000099
0.000148
0.000135
14
7.82E-64
0
0.000138
0.000097
0.000144
0.000132
15
1.41E-65
0
0.000146
0.000103
0.000152
0.000140
16
8.17E-63
0
0.000135
0.000097
0.000140
0.000129
17
6.54E-65
0
0.000143
0.000099
0.000149
0.000136
18
6.70E-66
0
0.000138
0.000096
0.000144
0.000132
19
1.86E-65
0
0.000143
0.000099
0.000149
0.000136
20
1.79E-66
0
0.000142
0.000098
0.000148
0.000135
21
2.37E-62
0
0.000136
0.000099
0.000142
0.000131
22
5.51E-65
0
0.000141
0.000100
0.000147
0.000135
23
7.15E-67
0
0.000142
0.000097
0.000149
0.000136
24
1.06E-65
0
0.000144
0.000102
0.000150
0.000137
25
4.01E-65
0
0.000147
0.000101
0.000153
0.000140
26
2.33E-64
0
0.000141
0.000098
0.000147
0.000135
27
7.85E-65
0
0.000141
0.000100
0.000147
0.000134
28
2.07E-64
0
0.000141
0.000098
0.000147
0.000134
29
2.01E-63
0
0.000140
0.000098
0.000146
0.000134
30
2.77E-64
0
0.000139
0.000098
0.000145
0.000133
31
1.43E-66
0
0.000145
0.000098
0.000151
0.000138
32
1.08E-65
0
0.000141
0.000098
0.000147
0.000134
33
3.47E-62
0
0.000136
0.000099
0.000141
0.000130
34
6.04E-67
0
0.000140
0.000096
0.000147
0.000134
35
2.32E-65
0
0.000145
0.000100
0.000152
0.000139
36
6.39E-65
0
0.000143
0.000098
0.000149
0.000137
37
1.10E-61
0
0.000141
0.000103
0.000147
0.000135
38
6.74E-63
0
0.000142
0.000100
0.000148
0.000136
39
2.54E-64
0
0.000141
0.000098
0.000147
0.000135
40
2.45E-64
0
0.000139
0.000098
0.000145
0.000133
41
6.25E-66
0
0.000141
0.000099
0.000148
0.000135
42
3.99E-66
0
0.000141
0.000097
0.000147
0.000135
43
1.35E-66
0
0.000142
0.000098
0.000148
0.000135
44
1.01E-63
0
0.000134
0.000097
0.000140
0.000128
45
1.56E-64
0
0.000139
0.000097
0.000145
0.000133
46
3.11E-66
0
0.000145
0.000103
0.000152
0.000139
47
6.11E-66
0
0.000138
0.000099
0.000144
0.000131
48
2.99E-66
0
0.000146
0.000101
0.000152
0.000139
49
1.84E-63
0
0.000138
0.000098
0.000144
0.000131

 

 Распределение внутри выборок не нормально. Тест Вилкоксона показывает, что МО значимо отличается от нуля.

 Кстати, изменение характера роста кривой суммы пунктов на последних 3/5 частях валидационных выборок - объяснимо.

У меня внутри выборок примерно равное количество наблюдений по 5-ти мажорам и идут они в следующем порядке:

 

dat_eurusd 
dat_audusd 
dat_gbpusd 
dat_usdcad 
dat_usdchf

 Я уверен, что для последных трех пар волатильность выше и повыше спред (надо взять не 20, а 25-30 пипсов). Поэтому на них валовый результат и процент угаданных направлений лучше. Но введение повышенного спреда все равно не обнулит статистику. Просто, чтобы понимать, что происходит.

ЧТД.

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

Как мне кажется одно другого не исключает.

Алексей преодолел очевидный минус всех оценок классификационных предсказаний: очевидно, что ценность правильного предсказания бара в 1 пипс и ценность предсказания бара с 10 пипсами совершенно разная.

Поздравляю Вас , Алексей! 

Спасибо, СанСаныч. Все работает. Буду пытаться запустить на МТ4 для начала.
 

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

Сделал советника на МТ4 в связке с Аром. И увидел расхождения результатов, в связи с чем провел детальный скрининг кода и нашел грубую ошибку. Пока ничего профитного не нашел, получается. Эксперимент продолжается.