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

 
mytarmailS #:

Я уже показывал похожый подход ..

....
п.с. визуализируйте свои данные, это полезно, мягко говоря
Делал похожее с ценами года 4 назад (канал через high/low). Картинки похожие были. Из всех будущих вариантов (которые считаем прогнозом) строил среднеарифметическую линию. Прогноз почти всегда получался - горизонтальной линией. Делал это не на МО, а искал минимальные отклонения от шаблона и вариантов в истории. После такого разочарования как раз и занялся МО. Но воз  и ныне там (в горизонтали или 50/50).
 
elibrarius #:
Делал похожее с ценами года 4 назад (канал через high/low). Картинки похожие были. Из всех будущих вариантов (которые считаем прогнозом) строил среднеарифметическую линию. Прогноз почти всегда получался - горизонтальной линией. Делал это не на МО, а искал минимальные отклонения от шаблона и вариантов в истории. После такого разочарования как раз и занялся МО. Но воз  и ныне там (в горизонтали или 50/50).
Думаю усреднять плохая идея,  оч плохая... 
Особенно не связанные ряды,  так и должно получиться, гор. Линия
 
mytarmailS #:
Думаю усреднять плохая идея,  оч плохая... 
Особенно не связанные ряды,  так и должно получиться, гор. Линия
А по какой из 100 спрогнозированных линий делать прогноз? Среднее - самое очевидное решение.
 
elibrarius #:
А по какой из 100 спрогнозированных линий делать прогноз? Среднее - самое очевидное решение.
Ну допустим 50 прогнозов вверх 50 вниз, усреднил, получил горизонтальный прогноз, и что?)) 
 
mytarmailS #:
Ну допустим 50 прогнозов вверх 50 вниз, усреднил, получил горизонтальный прогноз, и что?)) 
и все... Какие ваши варианты?
 
elibrarius #:
и все... Какие ваши варианты?
Ну вот например как тот что я выше предложил 
 
elibrarius #:
А по какой из 100 спрогнозированных линий делать прогноз?
Не увидел предложения)
 

Вариант "информативной" разметки, проба пера:

def labeling_entropy(dataset, min_Mi = 0.1, min=15, max=15):
    labels = []
    MIs = []
    for i in range(max, dataset.shape[0]-max*2):
        rand = random.randint(min, max)
        curr_pr = dataset['close'][i]
        future_pr = dataset['close'][i + rand]
        full_pr = dataset[i-rand:i+rand]

        mi = mutual_info_regression(full_pr[full_pr.columns[1:]].iloc[0:rand], full_pr[full_pr.columns[0]].iloc[rand:rand*2])
        MIs.append(mi.mean())

        if future_pr + MARKUP < curr_pr and mi.mean() > min_Mi:
            labels.append(1.0)
        elif future_pr - MARKUP > curr_pr and mi.mean() > min_Mi:
            labels.append(0.0)
        else:
            labels.append(2.0)
    
    dataset = dataset.iloc[max:]
    dataset = dataset.iloc[:len(labels)].copy()
    dataset['labels'] = labels
    return dataset.dropna(), MIs

Берется набор с признаками и размечтаются метки как в моих статьях, но с учетом взаимной информации (regression type) между n-строками набора признаков до открытия сделки и n-строками будущих цен.

Если взаимная инфа ниже порога, то размечаем как не торговать

потом обучил 2 модели на сигналы и на торговать/не торговать, с 2019 года

рез:

Ничего особо не дал такой подход

 
elibrarius #:
Не увидел предложения)
Ну перечитай мой пост,  последний рисунок.. 
Всё же написано 
 

Логично было попробовать другие варианты:

mi = mutual_info_regression(full_pr[full_pr.columns[1:]].iloc[0:rand], full_pr[full_pr.columns[0]].iloc[0:rand]) сравниваем фичи и цены в момент предсказания
mi = mutual_info_regression(full_pr[full_pr.columns[1:]].iloc[0:rand*2], full_pr[full_pr.columns[0]].iloc[0:rand*2]) сравниваем на глубину предсказания вперед + назад
mi = mutual_info_regression(full_pr[full_pr.columns[1:]].iloc[rand:rand*2], full_pr[full_pr.columns[0]].iloc[rand:rand*2]) только вперед
mi = mutual_info_regression(full_pr.iloc[0:rand], full_pr[full_pr.columns[0]].iloc[rand:rand*2])текущие цены и фичи в момент предсказания VS будущие цены

все варианты однофигственно не дают ничего

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