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 года
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. Классно работает на обучении.
Прикольно, что какие спецсредства не прикладывай, из рандома ничего путного не вытащить
А по какой из 100 спрогнозированных линий делать прогноз? Среднее - самое очевидное решение.
Ну допустим 50 прогнозов вверх 50 вниз, усреднил, получил горизонтальный прогноз, и что?))
и все... Какие ваши варианты?
А по какой из 100 спрогнозированных линий делать прогноз?
Вариант "информативной" разметки, проба пера:
Берется набор с признаками и размечтаются метки как в моих статьях, но с учетом взаимной информации (regression type) между n-строками набора признаков до открытия сделки и n-строками будущих цен.
Если взаимная инфа ниже порога, то размечаем как не торговать
потом обучил 2 модели на сигналы и на торговать/не торговать, с 2019 года
рез:
Ничего особо не дал такой подход
Не увидел предложения)
Логично было попробовать другие варианты:
все варианты однофигственно не дают ничего
Ну перечитай мой пост, последний рисунок..
Вверх тоже всего 2 варианта на первых 25 барах поднимались. А 2 ошибки - небольшая погрешность.
И это всего 1 вариант графика из тысяч, который вам случайно попал на глаза. В других будет другая ситуация. Надо делать стратегию (которую вы так и не сформулировали) и смотреть линию баланса на новых данных (вот Максим довел свою идею до конца и все сразу стало понятно).