Блог им. Danri
Продолжаю серию публикаций о своем приключении в C2.
Все публикации на эту тему: https://smart-lab.ru/my/Danri/tree/#category_2090
Инвестор заказывает музыку.
Collective2 создан прежде всего для инвесторов из США, под их возможности и потребности.
Учитывая что С2 не является брокером, и весь доход генерируется от подписок, то закрыть потребность инвестора это самое важное. Не будет инвесторов -> не будет трейдеров -> не будет дохода.
В привлечении инвесторов помогает работа в законодательном поле США, малый порог входа (в сравнении с классическим хедж-фондом) и конечно же маркетинг.
Удержать инвестора может только закрытие его потребности, а это безусловно доход.
Для того чтобы инвестору было проще выбрать стратегию имеется подробная статистика по стратегиям трейдеров и основанный на ней метод ранжирования.
И вот двигаясь в сторону удовлетворения потребности инвестора, 30 октября 2020г был представлен новый сервис SmartPortfolios. (Собственно с него и началось мое приключение в С2, об этом писал тут: smart-lab)
Что такое Смарт-портфель Collective2.
Если кратко, то это инструмент полной автоматизации инвестирования.
На мой взгляд идея очень крутая, выбираем:Чтобы это работало необходимо два фактора:
1. Прогностическая ценность метода ранжирования и собственно сами методы ранжирования.
2. Техническая реализация.
На технической части останавливаться не буду, инструмент в стадии бета тестирования, бывает баг преждевременного исключения стратегий из портфеля, но в целом все работает.
Прогностическая ценность метода ранжирования.
Кто делал пошаговую оптимизацию (walk forward optimization) при разработке торговых стратегий, сразу понимает эту боль.
Для тех кто не в курсе что это такое.
Пошаговая оптимизация, это когда:
1. Берем набор исторических данных, скажем год, и перебираем комбинации параметров стратегий на этом участке.
Это называется оптимизационное окно.
2. Далее выбирается лучший результат по какому нибудь параметру: профит фактор, шарп ратио и т.п. (это метод ранжирования) и прогоняется бэктест на следующих неизвестных данных, скажем 3 месяца.
Это называется тестовым окном.
3. Затем сдвигаем оптимизационное окно на размер тестового окна и повторяем пункты 1 и 2.
На выходе получаем реалистичный бэктест с учетом оптимизаций: что было бы, если бы мы выбирали лучший результат (топ 1) оптимизации по такому-то параметру и торговали.
Так вот, хотите разочароваться в алгоритмических стратегиях — начните делать пошаговую оптимизацию.
Даже если вы получали великолепные результаты оптимизации на всей выборке, то при пошаговой оптимизации зачастую это тоска и печаль.
Так что же это: не состоятельность стратегии или метода выбора параметров (ранжирования) для тестового окна?
Стоп! А чего это я вообще пишу о трейдинге, если речь о ранжировании в Collective2?
Ответ прост, я рассматриваю ранжирование на С2, как оптимизацию стратегии, только в роли параметров используются стратегии трейдеров Collective2.
Даже оценка происходит по похожему набору статистик: Sharp Ratio, Sortino Ratio, Win Rate, Max Drawdown и т.д.
Следовательно мне надо было ответить на тот же вопрос, что и при разработке торговой стратегии: можно ли предсказать результат стратегии(параметров стратегии) на следующий период?
Мой подход.
К задаче разработки метода ранжирования для С2 я подошел как к разработке торговых стратегий: идея -> разработка -> оптимизация (чтобы вообще посмотреть жизнеспособность идеи) -> пошаговая оптимизация -> тестирование в реальном времени -> запуск на реальных деньгах.
Идея.
Определить статистические данные которые несут в себе прогностическую ценность.
Присвоить веса стат данным (баллы скоринга).
Суммировать все баллы.
Отсортировать по сумме баллов.
Провести пошаговый бэктест портфеля из топ 5 стратегий.
Далее стат данные стратегий буду называть атрибутами.
Разработка.
Сперва было необходимо определить граничные значения атрибутов, например
if *SharpRatio* >= 2, 10(scores)
В данном примере граничное значение это 2.
Это необходимо, чтобы установить для каждого атрибута строго определенное максимальное количество баллов и избежать перекоса в финальном подсчете.
Дело в том что чем меньше данных, тем больше разброс значений атрибутов. Для стратегий 4 месяцев от роду, можно увидеть шарп и выше 5, но для 2х летних уже нет.
Именно поэтому оценку по одному атрибуту сделать не возможно.
Как же определить граничные значения атрибутов?
На первых порах я опирался на свой опыт в трейдинге, поэтому эти значения были эмпирическими.
Вот некоторые:
— ShartRatio = 2
— SortinoRatio = 5
— AnnualReturn = 1
— MaxDrawdrown = 0.3
— MaxOpenLoss = 0.05
На данный момент доступно отличное исследование атрибутов от команды С2 на github: https://github.com/collective2/StrategyStats/blob/main/START_HERE.ipynb
Далее пишем формулу и делаем бектест.
Для написания формул ранжирования и их тестирования в С2 реализован “Верстак” (Strategy Scoring Workbench).
Он позволяет простым языком написать формулу с использованием атрибутов стратегий и затем провести бэктест на любом (в рамках доступных данных) участке данных.
Это аналог пошаговой оптимизации описанной выше, только с помощью скоринг формулы мы перебираем стратегии. А затем получаем их результат на следующем периоде данных (тестовое окно).
Выглядит это так:
Пишем формулу, указываем тестовое окно и запускаем
Пошаговый бэктест.
К сожалению в самом “Верстаке” пока не реализовано пошаговое тестирование.
Приходилось двигать окно вручную, сохраняя все данные.
В дальнейшем я написал свой инструмент для бэктестов, чтобы ускорить разработку, но сам “Верстак” это отличный инструмент написания своих формул и их тестирования, не требующих особых навыков.
Формулы написанные в “Верстаке” можно использовать как метод ранжирования в Смарт-Портфелях.
И так, присвоив граничные значения атрибутов, я принялся определять их прогностическую ценность.
Добавить атрибут -> Пошаговая оптимизация -> Сравнить с эталоном.
Если результат улучшается, то добавляем в формулу.
Следующим шагом после отбора атрибутов с прогностической ценностью — был подбор их весов в общей формуле. Процесс получился долгий и достаточно творческий, и все еще не совершенен.
Что получилось.
Пошаговый бэктест с 01-01-2018 по 31-05-2021.Симуляция портфеля в реальном времени.
Период: с 13-07-2021 по 08-09-2021.Дальнейшие планы.
Прежде всего продолжать тестирование в реальном времени текущей скоринг формулы.
Хочу сделать еще один заход на разработку формулы отбирающей более агрессивные стратегии. Для этого потребуются внедрить новые атрибуты оценки стратегий.
Цель увеличить возврат от инвестиций, пусть даже с увеличением просадки, но главное при этом сохранить стабильность эквити портфеля.
Совершенствовать в целом модель оценки, улучшить методологию подбора весов.
Заключение.
Эта статья завершает серию “Мои приключения в С2”. Думаю что продолжить ее можно будет не раньше чем через пол года, когда накопиться больше данных.
У меня есть мысли по материалу вне этой истории, на стыке опыта полученного в трейдинге и в С2.
Так что публикации еще будут, не спешите отписываться :)
Еще хотел бы сказать почему я вообще решил рассказать о своем приключении.
Дело в том, что мне очень нравится идеология Collective2, а именно:
— ориентация на доход инвесторов;
— не брокер, нет конфликта интересов (например зарабатывать на комиссии и стимулировать большее количество сделок);
— открытые базы данных;
— обширная статистика по стратегиям;
— регистрация в США, SEC, NFA;
— программа C2Star для трейдеров;
— акции, фьючерсы, форекс, опционы.
В общем для меня, как трейдера, это был глоток свежего воздуха из болота “проп” контор, всяких etoro, zulu и других проектов с регистрацией в оффшоре.
Стал бы я инвестором в С2?
Пожалуй да, технология копи-трейдинга работает хорошо, все сделки по стратегиям можно скачать и проанализировать, нет конфликта интересов, полный контроль над своим счетом.
Если обладаешь достаточным опытом в оценке торговых стратегий, то сможешь найти хорошие варианты.
А вот если не обладаешь, то именно для этого задуман смарт-портфель и ведётся работа над методами ранжирования. Пассивно-активное инвестирование — настроил и забыл.
Я очень рад, что узнал о Collective2 в 2019 году, и хотел рассказать вам об этом со всех доступных мне сторон.
С уважением к сообществу,
Даниил.
Можете немного пояснить смысл этого теста? Это имеется в виду если хочется постоянно менять параметры стратегии в будущем?
Если в стратегии есть параметры, которые можно перебирать, то такие тесты обязательны.
Альтернатива это стратегия без параметров, с внутренней адаптацией к рынку, например по волатильности. В таком случае достаточно простого бектеста.
Но в вашем примере я бы после оптимизации за 10 лет, сделал бы потом бектест полученных параметров за последующих года два.
И если результаты остаются в рамках полученных при оптимизации, то тогда да, можно просто их использовать и все.
Это получится простой look-forward backtest.
Круто если у вас такое имеется :)