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

 
Ну так синусойду на вход
 

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

Правда, есть сомнения в практической пользе от такой возни в данном конкретном случае. Скорее всего, наши закономерности меняются со временем не равномерно, а циклично (но без периодичности).

 
Aleksey Nikolayev #:

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

Правда, есть сомнения в практической пользе от такой возни в данном конкретном случае. Скорее всего, наши закономерности меняются со временем не равномерно, а циклично (но без периодичности).

Это как во фракталах. Они цикличные, но не периодичные. Все верно.
 
elibrarius #:
В общем идея подать линейное время - плохая. Кстати, да: на трейне оно в каждой строке разное и на форварде мы анализируем только 1 строку за раз, т.е. время будет всегда текущим (которого не было в трейне), а номер всегда = 0 (а в трейне от 0 до 5000). Т.е. ни время ни номер строки подавать нельзя. Что тест и показал.

Хотя с номером я еще попробую... ведь нулевой номер будет входить в ту часть дерева, которое < какого-то сплита (например <5000) Т.е. будет использована часть дерева для форварда. А не всё. Что-то я решил время взять для теста, по ошибке.

А вот как сделать чтобы сплит по номеру был на оптимальном для форварда расстоянии?

 

Попробовал. Модель с 5000 барами истории для обучения, после добавления номера строки, как фичи, для Buy улучшилась, для Sell в чем то хуже, в чем-то лучше.
А вот если обучать на 10000 барах, то обе модели становятся сливными. Т.е. главная задача добавления номера строки для автоматического определения нужной длины истории, не выполнилась.

Пока остается только вручную оптимизировать/подбирать длину истории для обучения.

 

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

Небольшая статья в качестве иллюстрации подхода.

The training dilemma: loss vs profit function?
The training dilemma: loss vs profit function?
  • Haris (Chariton) Chalvatzis
  • medium.com
In the world of machine learning, models are trained by minimizing some variation of a loss function. For example, when we try to predict the median house value of a specific zip code, we are dealing with a regression type problem and prime suspects for the loss function, to be used to train our model, are the Mean Squared Error (MSE), Mean...
 
Aleksey Nikolayev #:

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

Хотя, встречаются идеи использования кастомных метрик уже на этапе обучения. При этом они не совсем похожи на трейдерские, а скорее являются подправленными вариантами стандартных для МО.

Возможно, трейдерские метрики приводят к плохой обусловленности. Это напоминает, например, использование кроссэнтропии вместо исходно интересующей частоты ошибки (говорят про плохую чувствительность последней).

Нужно как-то уменьшать теоретический и практический разрывы между обучением в МО и оптимизацией в тестере.

 
Aleksey Nikolayev #:

Хотя, встречаются идеи использования кастомных метрик уже на этапе обучения. При этом они не совсем похожи на трейдерские, а скорее являются подправленными вариантами стандартных для МО.

Возможно, трейдерские метрики приводят к плохой обусловленности. Это напоминает, например, использование кроссэнтропии вместо исходно интересующей частоты ошибки (говорят про плохую чувствительность последней).

Доверяй, но проверяй.
Aleksey Nikolayev #:
Нужно как-то уменьшать теоретический и практический разрывы между обучением в МО и оптимизацией в тестере.

Когда делал модели с ТП/СЛ точность была абсолютной. И в модели и в тестере сделки открывались на тех же барах и закрывались с теми же ТП/СЛ. Вот только доходность была около 0.
Тестировал по ценам открытия. Но с ними проблема... в баре используется минимальный спред.

Т.е. часть ордеров и ТП/СЛ в тестере сработают по цене

ASK HIGH = BID HIGH + минимальный спред.

И не сработают те, которые сработали бы при реальной торговле

ASK  HIGH (реальный) = BID HIGH + Спред расчитанный по максимальному ASK

Я уже пару раз предлагал разработчикам сделать сохранение в барах не минимального спреда, а

Spread = ASK  HIGH - BID HIGH.

С таким спредом тестирование по ценам открытия стало бы ближе к тестированию по реальным тикам.

Например мин спред на баре = 0,00002, а Spread = ASK  HIGH - BID HIGH = 0,00020. Т.е. в реальности цена ASK была выше тестерной на 0,00018. Где могли произойти открытия/закрытия сделок.

Но реакции от MetaQuotes нет ((

ПС: Для большей точности еще и спред для расчета Low Ask надо.
 
elibrarius #:

Но реакции от MetaQuotes нет ((

И не будет, поскольку реальный спред портит рекламную картинку. Максимум, предложат использовать кастомные символы.

 
Aleksey Nikolayev #:

И не будет, поскольку реальный спред портит рекламную картинку. Максимум, предложат использовать кастомные символы.

Очень жаль вообще то. Моделирование спреда по времени сделало бы тестирование ближе к реалу.

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