Секреты TSLab | Торговые роботы | События
29 Сен

Гладкость эквити в результатах оптимизаци.

Продолжим начатую в предыдущей статье работу. Разберемся как увидеть гладкость эквити в результатах оптимизации, как это использовать и чем данный показатель лучше существующих в TSLab изначально (фактор восстановления). Конечно же, напишем рабочий код для решения нашей задачи. Читать стоит начать с конца предыдущей статьи :).

Выдаем гладкость эквити в результаты оптимизации.

- Ладно, чертяка. Кого хочешь уговоришь. А как насчет выдачи этой цифры в окно результатов оптимизации? Задача исходная была такая. Или опять все забыл?

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

public interface IContext
{
    ...
    ...
    // в таблице результатов оптимизации видим то что записано в это свойство
    double ScriptResult { get; set; }

    ...
    ...
}

Для этой задачи мы тоже нарисуем небольшой кубик, позволяющий в результаты оптимизации выдать одно число. Кубик будет последовательным, и следовательно будет иметь возможность подключаться как к потоковым так и последовательным кубикам, выдающим на выходе числа. Самое последнее число на входе нашего кубика и будет тем числом, что мы увидим в результатах оптимизации в колонке “Результат из скрипта”.

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

    [HandlerCategory("RusAlgo")]
    [HandlerName("ScriptResult")]
    [InputInfo(0, "Данные")]
    public class SaveToScriptResult : IOneSourceHandler, IValuesHandler, IDoubleInputs, IDoubleReturns, IContextUses
    {
        public IContext Context { set; private get; }

        public double Execute(double value, int barNum)
        {
            Context.ScriptResult = value;

            return value;
        }
    }

Как видно, используем совершенно штатные возможности TSLab API в совершенно штатном порядке. Никаких ноу-хау и секретов.

Собираю все воедино и получаю:

Гладкость эквити в результатах оптимизаци.

Рисунок 1. Полный скрипт выдающий гладкость эквити в результаты оптимизации.

Заводим оптимизацию скрипта. Много нам не надо, достаточно нескольких пересчетов чтобы увидеть цифру в целевой колонке. Если у вас нет колонки “Результат из скрипта”, то вам нужно ее включить, используя контекстное меню шапки таблицы.

Гладкость эквити в результатах оптимизаци.

Рисунок 2. Результаты оптимизации с показателем гладкости эквити.

Гладкость эквити в результатах оптимизаци.

Рисунок 3. Эквити с показателем 0.3 и фактором восстановления 2.27

Гладкость эквити в результатах оптимизаци.

Рисунок 4. Эквити с показателем 5,8 и фактором восстановления 0.98

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

Выводы

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

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

 

Послесловие

- А почему не использовать просто фактор восстановления? Зачем эти танцы с бубнами вокруг гладкости эквити если фактор восстановления тоже показывает более волатильную эквити?

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

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

Рисунок 5. Фактор восстановления отличается в 8 раз!

Как видим с Рисунка 5 фактор восстановления двух результатов отличается в 8 раз, а это серьезное различие. При этом, показатель гладкости у нас практически одинаков. Интересная комбинация. Давайте посмотрим на эквити этих двух вариантов, чтобы наглядно увидеть разницу.

Гладкость эквити в результатах оптимизаци.

Рисунок 6. Эквити с фактором восстановления 3.96

Гладкость эквити в результатах оптимизаци.

Рисунок 7. Эквити с фактором восстановления 0.58

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

PS: Вот и все. Кубики которые были использованы теперь можно найти по специальной ссылке.

А напоследок интересное видео по анализу данных


comments powered by HyperComments

Сергей Митко
2014-09-29 19:31:42
Родион как всегда идет на мнооогоо ))) шагов вперед.)))
ra81
2014-09-29 20:10:14
главный и самый интересный вопрос: впереди кого? :)
Сергей Митко
2014-09-29 22:00:37
каждый раз понимаю как мало я понимаю(знаю) :)))
ra81
2014-09-30 08:22:27
такая же ерунда :). Видимо это заразно :)
Andrey Nikitin
2014-10-10 13:37:38
а где взять эти кубики?
ra81
2014-10-10 20:01:07
пока негде. Они не были выложены в публичный доступ. В стадии тестирования среди друзей. Будут выложены в недалеком будущем.
ra81
2014-12-27 11:32:30
Теперь уже можно взять эти кубики на форуме ТСлаб. Ссылка вставлена в статью :)
DenCommander
2015-01-01 17:15:52
Родион, непонятно почему коэффициент волатильности на рисунках 6 и 7 почти одинаковый. На мой взгляд на 6 рисунке кривая эквити хорошая, а на 7 отклонения большие и сама эквити плохая. Если посмотреть на абсолютные значения, то отклонения эквити от средней составляют более 50%. Средняя или медиана находится на уровне 66000 а эквити падает до 25 000. И это не единичный выброс, а она вся такая.
DenCommander
2015-01-01 17:27:28
Хотя, ниже я подразумеваю отклонение от медианы а не гладкость. Кривая может быть очень "шершавой" но при этом четко следовать за медианой. Но, насколько я понял, вы решали проблему оценки отклонения эквити от медианы.
ra81
2015-01-05 18:48:01
с точки зрения абсолютного отклонения обе эквити идентичны. Мы же не оцениваем относительные отклонения в % от чего то там. Мы берем собственно некие конкретные величины, например рубли, затем нормируем все эти величины чтобы избавиться от размерности. Получаем какие то там пункты безразмерные. В этих вот пунктах уже справа на шкале цифры будут приблизительно схожи. Нам ведь нужно просто оценить насколько в рублях эквити отклоняется от медианы. Мы находим это число. Потом чтобы мы могли как то сравнивать между собой разные эквити разных инструментов, это число трансформируется в некую безразмерную величину. Получаем ту цифру что вы видите. Как итог, с точки зрения отклонения, обе эквити совершенно идентичны. Возможно вам смущает медиана нарисованная на графике? там не обращайте на нее внимания она совершенно левую вещь показывает. Наша медиана проходит через кривую эквити несколько иным образом. Почитайте предыдущую статью :). Там есть картинки. Отклонения учитывают не только штучное большое отклонение :).если будет много коротких отклонений они тоже будут давать значительный показатель. Это некая, в общем, достаточно математическая величина, которая помогает выбрать наиболее гладкую эквити относительно прямой линии. Как в выводах написано: если хотите выбирать эквити относительно дохода или просадки, это уже другой параметр :)
Данил
2015-02-13 16:24:12
Не могу понять методику использования этого индикатора в практике: мы должны сначала отсортировать по фактору восстановления (выбрать наибольшие), а далее из наибольших факторов восстановления отсортировать по "Волотильность эквити" и выбрать те значения, где "Волотильности эквити" меньше всего или приближаются к нулю?
ra81
2015-02-16 05:40:07
Вообще, данный индикатор был собран по многочисленным просьбам пользователей ТСЛаб. Суть его в том чтобы выбрать эквити наиболее гладкую. Гладкость должна свидетельствовать о стабильности работы системы. А уж как вы будете использовать дело лично ваше.
Андрей С.
2015-11-17 13:48:45
Воспроизвел элемент скрипта. На график данные выводятся, а в таблице одни нули до 2 знака после запятой, хотя по факту цифры больше 0,3. Двойной кляк на разных строках таблицы результатов оптимизации выдает разные цифры на графике. Разница только в том, что у вас на картинке в методе компрессии стоит HOUR, а у меня по умолчанию стоит 1 и нет никакого развертывающегося списка для выбора вариантов. Ручная замена на hour ничего не дала. Автоматически поменялось на 1.
ra81
2015-11-17 14:30:57
пока до конца не ясно в чем дело. Но Hour - это лишь новая версия кубика более удобная не более того. Будет чуть позже выложена. Статья была изменена слегка под новые реалии а то писалась еще по древней версии и куча вопросов было. Если проблема есть можно это обсудить на форуме тслаба в разделе где выложены собственно эти индкаторы. На сайте особо негде это делать пока :)
Евгений Ворончихин
2016-07-14 22:34:20
Спасибо за полезную статью! Какой физический смысл этой цифры, показывающий гладкость эквити? Не лучше ли использовать R^2, как показатель гладкости?
ra81
2016-07-15 11:45:34
Если честно я без понятия :). Просто очень большие были пожелания на эту тему. Для себя я вывел показатель просадчивости, что куда более полезная информация. И позволяет цифрой оценить насколько часто и глубоко просаживается система.
Расима
2017-01-01 21:14:49
Казино Вулкан раздают деньги сегодня http://cenforce100.ru/casino-vulkan.php
14
Июл
2017

Доверительное управление. Результаты в июне 2017 года.

Доверительное управление. Результаты в июне 2017 года. Июнь индекс РТС вновь провел преимущественно в боковых движениях, а… »

11
Июн
2017

Доверительное управление. Результаты в мае 2017 года.

Доверительное управление. Результаты в мае 2017 года. В мае “болтанка” индекса РТС продолжилась, на паре… »

7
Май
2017

Доверительное управление. Результаты в апреле 2017 года.

Доверительное управление. Результаты в апреле 2017 года. В апреле мы наблюдали очередной месяц “боковика” по… »

2
Апр
2017

Доверительное управление. Результаты в марте 2017 года.

Доверительное управление. Результаты в марте 2017 года. В марте волатильность на рынке несущественно выросла. Все… »

7
Мар
2017

Доверительное управление. Результаты в феврале 2017 года.

Доверительное управление. Результаты в феврале 2017 года. Февраль был самым коротким торговым месяцем, к тому же… »