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

 

Наконец-то получилась своя лосс-функция, дериватив представлен в виде произведения Шарпа, ошибки и весов.

is_max_optimal=False указывает на то, что идет уменьшение значения, но так как я еще умножил на -1, то получается обратное.

class SharpeObjective(object):
  def calc_ders_range(self, approxes, targets, weights):
    assert len(approxes) == len(targets)
    if weights is not None:
      assert len(weights) == len(approxes)

    result = []
    for index in range(len(targets)):
      preds = [approxes[i] for i in range(len(targets))]
      preds = [i if i>0 else -1*i for i in preds]
      sharpe = np.mean(preds)/np.std(preds)
      der1 = targets[index] - approxes[index]
      der2 = -1

      if weights is not None:
        der1 = -1 * sharpe * der1 * weights[index]
        der2 = der2 * weights[index]

      result.append((der1, der2))
    return result

class Sharpe(object):
    def get_final_error(self, error, weight):
        return error

    def is_max_optimal(self):
        return False

    def evaluate(self, approxes, target, weight):
        assert len(approxes) == 1
        assert len(target) == len(approxes[0])
        preds = np.array(approxes[0])
        target = np.array(target)
        preds = [i if i > 0 else -1*i for i in preds]
        sharpe = np.mean(preds)/np.std(preds)
        return sharpe, 0

model = CatBoostRegressor(learning_rate=0.1, loss_function=SharpeObjective(), eval_metric=Sharpe())
 
Evgeni Gavrilovi #:

Наконец-то получилась своя лосс-функция, дериватив представлен в виде произведения Шарпа, ошибки и весов.

is_max_optimal=False указывает на то, что идет уменьшение значения, но так как я еще умножил на -1, то получается обратное.

Улучшились результаты обучения?)
 
Maxim Dmitrievsky #:
Улучшились результаты обучения?)

Нет, к сожалению. 

Сейчас смотрю сайт Лопеза де Прадо. https://quantresearch.org/Patents.htm

У него новый патент, выдали в сентябре (Tactical Investment Algorithms through Monte Carlo Backtesting) 

Много ценных идей, к примеру он ставит акцент на наукастинге (nowcasting - краткосрочное прогнозирование)

Цитата: "Shortrange predictions are statistically more reliable than longrange predictions"

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3562025

Основные выводы сделанные во время пандемии коронавируса.

What lessons can we learn amid this crisis?

1. More nowcasting , less forecasting

2. Develop theories, not trading rules

3. Avoid allregime strategies

 
Evgeni Gavrilovi #:

Нет, к сожалению. 

Сейчас смотрю сайт Лопеза де Прадо. https://quantresearch.org/Patents.htm

У него новый патент, выдали в сентябре (Tactical Investment Algorithms through Monte Carlo Backtesting) 

Много ценных идей, к примеру он ставит акцент на наукастинге (nowcasting - краткосрочное прогнозирование)

Цитата: "Shortrange predictions are statistically more reliable than longrange predictions"

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3562025

Основные выводы сделанные во время пандемии коронавируса.

What lessons can we learn amid this crisis?

1. More nowcasting , less forecasting

2. Develop theories, not trading rules

3. Avoid allregime strategies

Спасибо что напомнили, давно к нему не заглядывал 
 
Evgeni Gavrilovi #:

Нет, к сожалению. 

А обучение нормально проходило или не обучался вовсе?

 
mytarmailS #:

А обучение нормально проходило или не обучался вовсе?

Нормально, в том смысле что расчет правильный (макс. Шарп у меня был на уровне 3 - 4), но так как класс без декоратора njit, то и обучение очень медленное

 
Evgeni Gavrilovi #:

Нормально, в том смысле что расчет правильный (макс. Шарп у меня был на уровне 3 - 4), но так как класс без декоратора njit, то и обучение очень медленное

А что такое  -  декоратор njit ?

 
mytarmailS #:

А что такое  -  декоратор njit ?

приставка от разработчиков pandas для ускорения выполнения кода в функциях

 
Andrey Dik #:

Не важно, на истории или в будущем. И тестер сам по себе тут ни причем.

Важно свойство алгоритма (алгоритма оптимизации индивидуально или в составе с сеткой) находить глобальный оптимум оценочного критерия. Подчеркиваю - оценочного критерия. Оценочный критерий это не обязательно и/или только прибыль. Это может быть что угодно, к примеру, оценочный критерии работы на OOS чем не критерий (минимазации разницы между сэмпл и оос)? - это на вскидку. Критерии могут быть какими угодно и какой угодно сложности. Важно понимать, что критерий "Прибыль" - очень овражная, к тому же дискретная штука, поэтому люди пытаются придумывать более гладкие, более монотонные оценочные критерии, что в целом повышает качество оптимизации самого по себе и обучения нейронки в частности.

Поэтому, возвращаясь к тому что я нарисовал на высокохудожественном рисунке - наглядная иллюстрация того, что в условиях когда неизвестно ни количество ни характеристики локальных экстремумов единственный выход - искать до упора тот, который вообще возможно в условиях ограниченных вычислительных возможностей.

Плато - да, есть такое понятие, но это не относится к оптимизации, это вопрос классификации схожих наборов параметров ко какому то признаку. Искать устойчивое плато - отдельная комплексная задача.

Еще раз: никакой ценности экстремумы не представляют: неустойчивая точка, которая к тому же не существует, так как имеем дело со случайными процессами, причем нестационарными. 

Искать нужно плато даже такое, которое на рисунке, лишь бы прибыльное, пусть выше локального и глобального минимума. Такое плато теоретически покажет верхнюю границу прибыльности ТС. А найденные экстремумы вообще ни о чем - их точно нет в будущем, а вот плато есть надежда



 

у вас странное представление о "плато". плато это вовсе не типа площадки на исследуемой функции. плато - это совокупность сетов параметров по какому то признаку.

прибыль не имеет никакого отношения к нестационарности рядов и не тем более к способности сети обучаться и работать со схожими результатами на неизвестных данных.

вы воспринимаете функцию типа прибыль буквально, то есть как будто эта функция выглядит как график баланса в тестере. это в корне не верно.

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