Кубик "Period Statistic"

Кубик предоставляет разного рода статистику, которой имхо не хватает в ТСЛаб:
=============================================================================
  • отображает доходность стратегии в расчете на период (год, месяц). Доходность отображается как в процентах, так пунктах. На мой взгляд, доходность разных периодов для возможности корректного сравнения должна считаться в процентах за период, т.к. цена инструмента изменяется, порой значительно, соответственно, сравнивать условные 10 пунктов доходности при цене инструмента 20 пунктов и при цене инструмента 40 пунктов - некорректно, именно поэтому настройка "База расчета" по умолчанию установлена для расчета именно процентов. Настройка "Период расчета" по умолчанию установлена в "Год". На график доходности выведен график инструмента, который позволяет сравнивать доходность с состоянием рынка в этот период, по умолчанию график инструмента окрашен в черный цвет. Для тех, кто использует черную тему ТСЛаб имеется настройка "Цвет свечей графика", где можно выбрать более комфортный цвет отображения графика инструмента.
  • отображает просадку кривой эквити в днях по каждому периоду просадки, максимальную зарегистрированную просадку в днях и общее накопленное значение кол-ва дней просадки в днях. Данный параметр позволяет сравнить стратегии между собой по кол-ву дней, когда наблюдалось просадка эквити. Данные выведены на график. Просадка как и доходность в настоящий момент считается от фиксированной прибыли за соответствующий период (расчет не фиксированной прибыли в текущее версии пока не производится, т.к. довольно серьезно нагружает систему, в будущем будет добавлен после оптимизации расчета). Просадка рассчитывается следующим образом: в случае если предыдущее значение эквити больше, чем текущее значение, то начинается отсчета баров просадки, как только кол-во времени, между барами равняется одним суткам, то считается, что просадка просуществовала один день. Расчет каждого периода просадки ведется вплоть до момента пока эквити не превысила ранее достигнутое значение. Максимальная просадка рассчитывается как максимально достигнутая продолжительность просадки по всем периодам. Общая продолжительность просадки, соответственно, как сумма продолжительности просадок по всем периодам.
  • производит расчет гладкости эквити вдоль медианы, то есть рассчитывает насколько кучно результаты работы стратегии располагаются вдоль ее медианы, чем данный коэффициент ниже, тем эквити наиболее точно повторяет медиану. Расчет производится по кривой фиксированной прибыли. Чем выше коэффициент, тем менее гладкой будет эквити вокруг своей медианы. В случае если эквити нулевое, либо отрицательное, то коэффициент не рассчитывается и устанавливается в значение 100.000, в случае если по данному набору параметров при оптимизации нет ни одной сделки, то коэффициент устанавливается в значение 200.000, сделано это для того, чтобы наиболее плохие результаты при сортировке всегда располагались в конце списка и на них не надо было останавливать свое внимание.
    По умолчанию в расчет принимаются только те значения, которые ниже медианы, т.к в большинстве случаев именно этот параметр наиболее интересен для анализа. Если необходимо анализировать разброс значений эквити в обе стороны от медианы, то необходимо отключить опцию "Использовать значения ниже медианы", в этом случае в расчет будут приниматься значения по обе стороны от медианы, что покажет общую кучность результатов вокруг нее.
    Настройка "Период PTMKoef" устанавливается в днях, отвечает за качество измерения данных, то есть задает период между расчетными точками для контроля отклонения кривой эквити от медианы в днях, по умолчанию 7 дней. Настройка сделана для целей уменьшения нагрузки на ПК и увеличения скорости расчетов. На медленных ПК необходимо увеличивать данную настройку до получения приемлемых результатов (стоит понимать, что чем больше установлено данное значение, тем хуже будет результат измерения). В случае установки значения, меньше чем 7 или большего, чем 50% от кол-во дней в загруженной истории, автоматически применяется 7.
    Для возможности оценки разных стратегий между собой когда медиана одной стратегии начинается с нулевой точки в левой стороне графика доходности, а медиана другой - с какого-то отрицательного значения все медианы приводятся к нулевой точке, то есть по-простому сдвигаются в нулевую точку вместе с образующей медиану эквити, в этом случае можно говорить об идентичности расчета и сравниваемости показателей. Для целей отключения данного механизма имеется настройка "Рассчитывать когда медиана выше нуля", при установке данной опции расчет оценки ровности будет производиться только в том случае, если медиана выше нулевого значения доходности, когда медиана ниже нуля, то расчет не производится. Побочным эффектом такого расчета будет то, что системы, которые определенное время находились в просадке и их медиана не поднималась выше нуля будут ранжированы выше (то есть получат более низкий коэффициент), чем если бы ранжировалось на "общих основаниях", т.к. в этом случае их негативный период попросту не анализируется. В отдельных случаях оценка может наоборот ухудшиться, т.к. в расчет будет получен только период когда медиана была выше нуля, в котором будет большое количество просадок.
  • рассчитывает коэффициент MAR, то есть отношение максимальной просадки эквити в процентах к среднегодовой доходности, данный коэффициент важен с точки зрения определения риска за получение единицы профита. Рекомендуемые большинством источников для дневных и среднесрочных стратегий значения: "минимум" от 1.5, "оптимально" от 2.0, "идеально" от 3.0. В настоящий момент коэффициент рассчитывается как как общая среднегодовая доходность, деленная на максимальную просадку, рассчитываемую платформой ТСЛаб. В будущем расчет будет несколько переделан на получение значений доходности/просадки за каждый расчетный период и их усреднения за время работы стратегии.
  • рассчитывает коэффициент WLBarsRatio, как отношение средней продолжительности выигрышных и проигрышных сделок. Данный коэффициент характеризует стратегию с точки зрения одного из "основных правила" трейдинга "Режь убытки, дай прибыли течь", добавлен в расчет по мотивам прочтения статьи "Грааль не нужен!" на "Смартлабе".

Примечания:
===========
  • Данные по кубику отображаются в дополнительном окне в виде графиков, в результатах оптимизации в виде дополнительных столбцов окна оптимизации, в коне "Результаты" в разделе "Пользовательские".
  • Окно, выводимое кубиком удобно располагать в какой-либо части экрана под основным штатным окном "Доход", таким образом можно удобно просматривать параметры работы стратегии за текущий период. Есть один нюанс ТСЛаб, о котором имеется тикет в тех.поддержке: при настроенном расположении окон если в скрипте при запуске ТСЛаб или нажатии кнопки "Сохранить и выполнить" имеется ошибка сборки, то настроенной расположение окон сбивается. Это "особенность" платформы ТСЛаб, которая в будущее, вероятно, будут поправлена.
  • Кубик собран для тестирования стратегий на одном инструменте, под стратегии на двух и более инструментах пока не было необходимо, как такая необходимость наступит, то соответствующий функционал будет добавлен.
  • Код кубика к настоящему посту не прикладывается, т.к. кубик еще в процесс доработки и код надо причесать (оптимизировать, что-то переписать в более лаконичные формы, убрать ненужные комменты и т.д.), как кубик приобретет окончательную форму, то код также будет выложен.
  • Расчет коэффициентов при оптимизации можно отключить сняв соответствующие галочки в настройках кубика.
  • Настройка "Показывать графики эквити" включает отображение в окне графиков панели эквити. В настоящий момент выводится только эквити, рассчитанная на основании фиксированной прибыли. Особого практического интереса не представляет, т.к. полностью повторяет соответствующую кривую базового функционала платформы ТСЛаб. Для чего сделана: в дальнейшем будут добавлены расчеты: эквити на основе внутренней нормы доходности (почитать можно по ссылкам: Как правильно рассчитать доходность?, Внутренняя норма доходности, РАСЧЕТ IRR В EXCEL ), которая будет корректной в том числе в случае работы с блоком изменения позиции, эквити БайЭндХолд, которая будет рассчитываться исходя из фактической "загрузки" денежных средств в тестируемой стратегии в соответствии с реальной используемой лотностью и начальным депо, расчет эквити фиксированной прибыли в процентах и т.д. О проблемных местах в расчетах платформы ТСЛаб можно почитать по ссылкам в группе ТСЛаб в телеграм: расчет показателей и блок изменения позиции, расчет результатов стратегии.
  • Какие-либо доработки делаются на основе личного энтузиазма в изучении тематики, поэтому добавлен только используемый мною функционал. Все дальнейшие мысли будут также добавляться в функционал кубика. Если есть какие-то идеи, просьба писать в посте, общими усилиями можно собрать неплохой инструмент для тестирования.

Общая информация по доп.кубикам:
================================
Для корректной работы кубика необходимо в папку Handlers также поместить общую библиотеку для кубиков. Библиотека содержит методы логирования, расчета и т.д., которые применяются в разных кубиках, поэтому весь этот функционал вынесен в отдельную dll, чтобы не повторяться и всегда иметь "свежие" версии кода
побарный (не потоковый) кубик: https://docs.tslab.pro/pages/viewpage.action?pageId=38961293
папка Handlers и создание индикаторов на API: https://docs.tslab.pro/pages/viewpage.action?pageId=20185716


Attachments
gaaCommon_ServiceLib.zip (90 downloads)
gaaStatData_PeriodStatistic.zip (76 downloads)