Обсуждение статьи "Грокаем "память" рынка через дифференцирование и энтропийный анализ" - страница 8

 

Добрый день,

хотел бы вернуться к теме

Прадо Машинное обучение: алгоритмы для бизнес

Листинг 5.4. Нахождение минимального значения d, которое успешно проходит статистическую проверку ADF

def plotMinFFD():
from statsmodels.tsa.stattools import adfuller
path,instName='./','ES1_Index_Method12'
out=pd.DataFrame(columns=['adfStat','pVal','lags','nObs','95%
conf','corr'])
df0=pd.read_csv(path+instName+'.csv',index_col=0,parse_dates=True)
for d in np.linspace(0,1,11):
df1=np.log(df0[['Close']]).resample('1D').last() # понизить до
# суточных наблюдений
df2=fracDiff_FFD(df1,d,thres=.01)
corr=np.corrcoef(df1.loc[df2.index,'Close'],df2['Close'])[0,1]
df2=adfuller(df2['Close'],maxlag=1,regression='c',autolag=None)
out.loc[d]=list(df2[:4])+[df2[4]['5%']]+[corr] # с критическим
# значением
out.to_csv(path+instName+'_testMinFFD.csv')
out[['adfStat','corr']].plot(secondary_y='adfStat')
mpl.axhline(out['95% conf'].mean(),linewidth=1,color=
'r',linestyle='dotted')
mpl.savefig(path+instName+'_testMinFFD.png')
return

Код на питоне из книги - эта функция определяет минимальную степень дробного дифференцирования,кто знаком с Питоном, переведите. На мой взгляд

именно  ее не хватает в статье для практического применения метода ( ну или пошлите лентяя по нужному адресу - желательно с функцией )

 
Олег:

Добрый день,

хотел бы вернуться к теме


Листинг 5.4. Нахождение минимального значения d, которое успешно проходит статистическую проверку ADF

Код на питоне из книги - эта функция определяет минимальную степень дробного дифференцирования,кто знаком с Питоном, переведите. На мой взгляд

именно  ее не хватает в статье для практического применения метода ( ну или пошлите лентяя по нужному адресу - желательно с функцией )

Тест Дики - Фуллера, возможно, полезен для каких-то статистических исследований, но в статье значение d перебирается в оптимизаторе, плюс к этому предложенный вариант алгоритма постоянно переобучается, поэтому он здесь не был бы не особо полезен, по моему

https://www.mql5.com/ru/code/13072
Statistical Functions
Statistical Functions
  • www.mql5.com
Набор статистических функций, которые позволяют рассчитывать некоторые значения, описывающие таймсерии, такие как корреляция между двумя таймсериями, линейная регрессия, стандартное отклонение и т.д. Набор также включает в себя более сложные функции, такие как определенный интеграл. Заголовочный файл "Statistics.mqh" содержит следующие функции...
 
Maxim Dmitrievsky:

Тест Дики - Фуллера, возможно, полезен для каких-то статистических исследований, но в статье значение d перебирается в оптимизаторе, плюс к этому предложенный вариант алгоритма постоянно переобучается, поэтому он здесь не был бы не особо полезен, по моему

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

выше ссылочку дал, вроде рабочий

 

Тест Дикки-Фуллера на MQL есть, но это проверка ряда на стационарность, на Хабре есть пример предобработки методом Бокса-Кокса, для которого в старой статье на сайте был приведен код автоматического определения параметра лямбда - имеющего схожее значение с обсуждаемым d.

Метод Бокса-Кокса на форэкс не всегда приводит к стационарности ряда (практически всегда не до конца) и требуется доп. обработка. Именно как попытку заменить метод БК на дробное дифференцирование (с авто определением лучшего значения d) и следует смотреть на мой вопрос.

К Вам и написанной Вами статье - полное уважение, в рамках статьи мой вопрос действительно лишний, это уже как задел на будущее...

 
Олег:

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

Понравились его мысли насчет мета-маркировки, т.е. обучать вторую модель корректировать результаты первой, улучшая результаты по confusion matrix. Убыточных сделок становится очень мало на трейн сабесте. Опять же, это не чисто его подход, он хорошо известен. Но только у него увидел применительно к фин. рядам. От переобучения это не избавляет, но делает красивую картинку на трейне.

Здесь можно посмотреть, Meta-Labeling раздел: https://towardsdatascience.com/financial-machine-learning-part-1-labels-7eeed050f32e

Еще здесь: https://www.quantopian.com/posts/meta-labeling-advances-in-financial-machine-learning-ch-3-pg-50

__________________________________________________________________________________________________________________

Что касается проблемы переобучения, то смотрю  сторону Meta-learning, Attention (внимания) механизмов в машинном обучении. 

Посмотреть можно:

1. https://medium.com/towards-artificial-intelligence/a-simple-neural-attentive-meta-learner-snail-1e6b1d487623

2. https://stats.stackexchange.com/questions/344508/what-are-attention-mechanisms-exactly

Financial Machine Learning Part 1: Labels
Financial Machine Learning Part 1: Labels
  • Maks Ivanov
  • towardsdatascience.com
In the previous post, we’ve explored several approaches for aggregating raw data for a financial instrument to create observations called bars. In this post, we will focus on the next crucial stage of the machine learning pipeline — labeling observations. As a reminder, labels in machine learning denote the outcomes of the random variable that...
 
Спасибо за развернутый ответ, смотрю...
 
Олег:
Спасибо за развернутый ответ, смотрю...

Еще забыл добавить, что Meta-Labeling из его книги это частный случай стакинга (stacking), если применять мета-модель не к одной первичной модели, а к взвеси нескольких, обученных на разных сабсетах. Это может дать еще простора для исследований, применительно к тафм-сериям. 

Вот есть неплохая статья.  

Плюс к этому, attention + stacking механизмы так же хорошо вплетаются в meta-learning. Ну и там есть что попробовать. 

Это все должно приводить к какому-то глобальному обобщению и помогать бороться с оверфитом.

В моей мультиагентной RL библиотеке из статьи есть заготовка под мультиагентов, но их результаты усредняются и никак не взвешиваются. Для себя делаю всякие вариации на тему.

How to Develop a Stacking Ensemble for Deep Learning Neural Networks in Python With Keras
How to Develop a Stacking Ensemble for Deep Learning Neural Networks in Python With Keras
  • Jason Brownlee
  • machinelearningmastery.com
Model averaging is an ensemble technique where multiple sub-models contribute equally to a combined prediction. Model averaging can be improved by weighting the contributions of each sub-model to the combined prediction by the expected performance of the submodel. This can be extended further by training an entirely new model to learn how to...
 

Maxim Dmitrievsky:

В моей мультиагентной RL библиотеке из статьи есть заготовка под мультиагентов, но их результаты усредняются и никак не взвешиваются. Для себя делаю всякие вариации на тему.

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

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

Сама цепочка: несколько стандартных классов пред обработки, класс метода

В конце - класс принятия решения (объединения результатов цепочек), в простом виде - среднее

У меня получилось 4 класса-основания-обертки: данные, пред обработка, обработка, принятие решений.

В таком виде возможно смешивание как разных методов, так и одного метода на разных данных, наверное что-то не учтено, но это получившийся минимум

 
Олег:

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

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

Сама цепочка: несколько стандартных классов пред обработки, класс метода

В конце - класс принятия решения (объединения результатов цепочек), в простом виде - среднее

У меня получилось 4 класса-основания-обертки: данные, пред обработка, обработка, принятие решений.

В таком виде возможно смешивание как разных методов, так и одного метода на разных данных, наверное что-то не учтено, но это получившийся минимум

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

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