Всем привет!
Задача, вкратце - написать машинное обучение для предсказаний движений цены эфириума, с точностью 54.8%+. В закрепе есть мой датасет, он содержит в районе 220 тыс строк цены и объема торгов эфира на бинансе (open, high, low, close, volume) и так же там есть колонка Target, которую мы и пытаемся предсказать с точностью 54.8%+.
Ваша задача - написать абсолютно любой алгоритм, нейронку, ИИ, ЛЛМ, дерево, что угодно, что сможет достичь упомянутой точности, соблюдая 4 главные оговорки:
1) Ни в коем случае, ни при каких обстоятельствах НЕЛЬЗЯ перемешивать данные! Данные на train, test, val всегда должны идти в хронологическом порядке. Поэтому специально данные не перемешиваем, в train_test_split функцию shuffle ставим на False, пожалуйста, не забывайте.
2) Вам обязательно нужно соблюсти следующую разметку данных: строки 0-115,000 -это идет на train и val, строки 120,000-конец -это идет на test. Ни в коем случае, ни при каких обстоятельствах НЕЛЬЗЯ увеличивать количество train данных так, чтобы они выходили за вышеупомянутые рамки. Аналогично, НЕЛЬЗЯ уменьшать количество тест строк.
3) Ни в коем случае, ни при каких обстоятельствах НЕЛЬЗЯ подавать колонку Target в качестве feature для алгоритма, даже как переменную и даже с задержкой! У вас полностью развязаны руки, чтобы сделать хоть 100 features колонок, на основании технических индикаторов, например EMA, SuperTrend, Stochastic, RSI и др. Для создания доп колонок у вас есть все необходимые данные - open, high, low, close, volume. Но полностью запрещено в какой-либо форме и в каком-либо виде интегрировать значения колонки Target в любую другую колонку и ее значения при создании features.
4) На тест и в статистику подаются абсолютно все test строки, по очереди, без исключения, вне зависимости от коэффициента уверенности модели или любых других факторов.
**Если у вас возникли хоть какие-то вопросы касаемо данных правил, пожалуйста напишите мне, не молчите и не интерпретируйте по своему! Лучше я вам еще раз все объясню другими словами чтобы вопросов точно не было**
Это единственные 4 правила которые вы должны соблюсти, а в остальном вы полностью свободны в выборе: библиотеки, модели, гиперпараметров, индикаторов, их значений, количестве features и тд.
Первый человек показавший мне код с точностью 54.8%+ и соблюдающий все 4 правила - получит гонорар 250тр и предложение дальнейшего сотрудничества по ставке 150тр/мес. Всем желаю удачи! На сайте отвечаю достаточно долго, поэтому для быстрой коммуникации предлагаю тг/ватсап, по запросу в лс.
P.S. Из своих личных наработок, могу порекомендовать подавать в модель проекцию из исторических данных, а не только снапшот данного момента. Чтобы алгоритм мог не только посмотреть на значения индикаторов непосредственно в данный момент, а так же имел доступ к тому, как эти значения менялись последние 50-500 строк. Вот часть кода для этого:
#допустим у нас есть индикатор ‘X’ и мы хотим подать его последние 10 значения как features для модели. Для этого создаем 10 колонок с предыдущими значения этой колонки
shift = 10 #предыдущие 10 строк
for i in (range(1,shift)):
df[f'X_{i}'] = df['X'].shift(i) #создаем колонки X_1, X_2 … X_10
#если у нас несколько индикаторов по типу X, то просто внутрь лупа добавляет еще строк
# df[f'Y_{i}'] = df['Y'].shift(i)
# df[f'Z_{i}'] = df['Z'].shift(i)