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

 
pantural:

Смущает ваша статистика слегка, прибыль 7175 просадка 2386 а Шарп ратио 0.1

А каким должен быть "Шарп ратио"? Данные из терминала. Просадка - я беру максимальное значение при сравнении просадки по средствам и просадки по балансу, возможно там была огромная шпилька, которая не была закрыта вовремя и от туда пошла череда убыточных сделок из-за флета.

 
Aleksey Vyazmikin:

А каким должен быть "Шарп ратио"? Данные из терминала. Просадка - я беру максимальное значение при сравнении просадки по средствам и просадки по балансу, возможно там была огромная шпилька, которая не была закрыта вовремя и от туда пошла череда убыточных сделок из-за флета.

В норме отношение прибыль(лос)\макс-просадка примерно должно быть близко к Шарп коефф, то есть в вашем случае ~3(7175/2386) а не 0.1, бывают конечно расхождения но если больше чем на порядок, то явно что то не так.

 
pantural:

В норме отношение прибыль(лос)\макс-просадка примерно должно быть близко к Шарп коефф, то есть в вашем случае ~3(7175/2386) а не 0.1, бывают конечно расхождения но если больше чем на порядок, то явно что то не так.

Из справки коэффициент Шарпа считается иначе

"

  • Коэффициент Шарпа (Sharpe Ratio) — данный показатель характеризует эффективность и стабильность стратегии. Он отображает соотношение среднеарифметической прибыли за время удержания позиции к стандартному отклонению от нее. Дополнительно здесь учитывается значение безрисковой ставки, являющейся прибылью по вкладу соответствующей суммы на банковский депозит;

"

Что такое "безрисковая ставка" - вот в чем вопрос...

Ну и ещё я работаю по фьючерсу Si - может в этом дело? У меня всегда коэффициент в десятых.

 
Aleksey Vyazmikin:


Что такое "безрисковая ставка" - вот в чем вопрос...

Это условно безрисковая прибыль - % от банковского депозита (в соответствующей валюте) в банке первого класса или % долгосрочных облигаций Казначейства США

 
Дмитрий:

Это условно безрисковая прибыль - % от банковского депозита (в соответствующей валюте) в банке первого класса или % долгосрочных облигаций Казначейства США

Вопрос в том, откуда данные берет терминал...

 
Aleksey Vyazmikin:

Из справки коэффициент Шарпа считается иначе

"

  • Коэффициент Шарпа (Sharpe Ratio) — данный показатель характеризует эффективность и стабильность стратегии. Он отображает соотношение среднеарифметической прибыли за время удержания позиции к стандартному отклонению от нее. Дополнительно здесь учитывается значение безрисковой ставки, являющейся прибылью по вкладу соответствующей суммы на банковский депозит;

"

Что такое "безрисковая ставка" - вот в чем вопрос...

Ну и ещё я работаю по фьючерсу Si - может в этом дело? У меня всегда коэффициент в десятых.

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

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


PS: Обычно в терминалах вообще безрисковая ставка не учитывается.

 
pantural:

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

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


PS: Обычно в терминалах вообще безрисковая ставка не учитывается.

Из описания формулы не ясно, как её проверить, к примеру как рассчитать "среднеарифметическую прибыли за время удержания позиции"?

Может дело в небольшом математическом ожидании?

В любом случае, я заметил, что этот показатель чем выше, тем лучше, а этого уже не мало, а основной отчет пишется в файл с теми показателями, что я понимаю.

 
Aleksey Vyazmikin:

Из описания формулы не ясно, как её проверить, к примеру как рассчитать "среднеарифметическую прибыли за время удержания позиции"?

Может дело в небольшом математическом ожидании?

В любом случае, я заметил, что этот показатель чем выше, тем лучше, а этого уже не мало, а основной отчет пишется в файл с теми показателями, что я понимаю.

По моим наблюдениям шарп более 1 поднять не получалось пока. Да и чужих счетов/графиков с большим показателем пока не видел. Хотя может и ошибаюсь.

 
Konstantin Nikitin:

По моим наблюдениям шарп более 1 поднять не получалось пока. Да и чужих счетов/графиков с большим показателем пока не видел. Хотя может и ошибаюсь.

Aleksey Vyazmikin:

Из описания формулы не ясно, как её проверить, к примеру как рассчитать "среднеарифметическую прибыли за время удержания позиции"?

Может дело в небольшом математическом ожидании?

В любом случае, я заметил, что этот показатель чем выше, тем лучше, а этого уже не мало, а основной отчет пишется в файл с теми показателями, что я понимаю.

Ну что вам сказать уважаемые господа...

Это побочные эффекты использования черных ящиков,  чужих библиотек и тд.

Могу только предложить опубликовать эквити в CSV ваших изысканий и я вам сообщу каков верный Sharp Ratio ваших моделей, можете сами вычислить код прилагается(python)

import random

import csv

import matplotlib

import matplotlib.pyplot as plt


def rndWalk(length, start, var):

    rndwalk = []

    curent = start

    for _ in range(length):

        curent*= 1 + random.gauss(0,3) * var

        rndwalk.append(curent)

    return rndwalk


def ParseCsv(path, columnName):

    tab = csv.DictReader(open(path))

    price = []

    for row in tab: price.append(float(row[columnName]))

    return price


def diff(ts):

    return [ts[n] - ts[n - 1] for n in range(1, len(ts))]


def SharpRatio(PnL):

    ret = sum(PnL) / len(PnL)

    var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL))) ** 0.5

    return len(PnL) ** 0.5 * ret / var


rw = rndWalk(10000,100,0.001)

sr = SharpRatio(diff(rw))

print(sr)


plt.plot(rw)

plt.show()


сам код код SharpRatio  всего 3 строчки

def SharpRatio(PnL):

    ret = sum(PnL) / len(PnL)

    var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL))) ** 0.5

    return len(PnL) ** 0.5 * ret / var


Если скините эквити или PnL то разберусь в чем проблема, могу догадываться что если PnL используется "разряженный" то есть с пропусками меду сделками(что разумеется не правильно) от сюда и масштабирование, поставил бы 100$ что в этом проблема.

 
pantural:

Ну что вам сказать уважаемые господа...

Это побочные эффекты использования черных ящиков,  чужих библиотек и тд.

Могу только предложить опубликовать эквити в CSV ваших изысканий и я вам сообщу каков верный Sharp Ratio ваших моделей, можете сами вычислить код прилагается(python)

Как Вам эквити предоставить, по часам по минутам?

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