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

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 будущие цены

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

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

Вверх тоже всего 2 варианта на первых 25 барах поднимались. А 2 ошибки - небольшая погрешность.
И это всего 1 вариант графика из тысяч, который вам случайно попал на глаза. В других будет другая ситуация. Надо делать стратегию (которую вы так и не сформулировали) и смотреть линию баланса на новых данных (вот Максим довел свою идею до конца и все сразу стало понятно).
[Удален]
Делал подобное с кластеризацией больше года назад, потом определял средние уровни как на картинках и от них ордера выставлял. Делил на 3 кластера up, down, mean reversion. Классно работает на обучении.
Прикольно, что какие спецсредства не прикладывай, из рандома ничего путного не вытащить