Как стать автором
Обновить

Построение цифровой модели удачной стратегии торговли ценными бумагами. Описание. Доказательство

Время на прочтение5 мин
Количество просмотров4.8K
Как вы догадались по заголовку, мое хобби — алготрейдинг. Решил поделится результатами, чтобы продемонстрировать Вам как многокритериальный анализ и подбор коэффициентов (продажи, покупки) индивидуально для каждого инструмента (акции) может отражаться на результате. Для того, чтобы поразить Ваше воображение, продемонстрирую пример с 500% годовых (на самом деле нет). Анализ на исторических данных я буду проводить с помощью торгового терминала «Альфа-директ», но представленный здесь опыт особо не ограничивает Вас в выборе инструмента.



Суть, философия и детальное описание стратегии


Суть банальна и проста: «Покупаем дешевле продаем дороже». Для упрощения, торговля будет проводится без учета сигналов индикаторов, фундаментального анализа, рекомендаций аналитиков, инсайдов, теорий заговора. Задумка создать простой инструмент, а как/когда/где его использовать — решает пользователь.

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

Описание стратегии


Шаг 1.

  • В зависимости от значения коэффициента (у меня он называется first_buy_ratio) покупаем заданное количество акции. Коэффициент указывается в процентах. Если коэффициент равен 100 — то покупаем по текущей цене, если 101, то покупаем по цене на 1% выше текущей, если, например first_buy_ratio=99, то покупаем по цене на 1% ниже текущей.
  • Запоминаем текущую цену и теперь считаем ее в качестве «цены покупки».
  • Переходим на шаг 2.

Шаг 2.

Здесь используется несколько коэффициентов, сразу опишу их:

first_sell_ratio — насколько дороже продавать акции после первой покупки. Указывается в процентах от цены покупки. Например, если вам хватит 1% прибыли, то ставим 101, если 100.1, то — одна десятая процента.

buy_in_ratio — когда усредняемся? Указываем в процентах от цены покупки. Например, если Вы хотите дозакупать акции после падения цены на 5%, то ставим 95

sec_sell_ratio — насколько дороже продавать акции после падения цены И дозакупки? Этот процент добавляется к first_sell_ratio. Например после первой покупки, Вам хватало 1% прибыли, но цена пошла вниз, вы купили вдвое больше акций и возможно хотите продать весь объем акций уже не на 1% дороже ОТ ЦЕНЫ ДОЗАКУПКИ, а к примеру на 1.5% Тогда ставим sec_sell_ratio = 0.5

Итак, шаг 2:

Если текущая цена стала выше цены покупки на значение first_sell_ratio, то:

  • продаем
  • радостно возвращаемся к шагу 1.

Если текушая цена акции стала ниже цены покупки на значение коэффициента buy_in_ratio, то:

  • Покупаем вдвое больше акций
  • Цена покупки = Цена дозакупки
  • Увеличиваем % продажи всего объема купленных акций на значение коэффициента sec_sell_ratio
  • Остаемся на шаге 2.

Если ни одно из условий шага 2 не случилось, то скрипт продолжает оставаться на данном шаге, проверяя значение цены с заданной частотой (рекомендую с частотой 1 сек)

Вот такая простая стратегия, философия которой реализована в коэффициентах. Ну а теперь, перейдем к волшебству и попытаемся математически разрешить борьбу «жадности со страхом», которые постоянно преследуют трейдера. Говоря проще — просчитаем ответ на вопросы «Когда продавать? Когда дозакупать?»

Доказательство, оно же «тестирование на исторических данных», оно же «построение модели»


Как доказать, в первую очередь самому себе, что твоя стратегия — прибыльная? Правильно, погонять ее на исторических данных. Но не только… помните, как раньше в школе, делали домашку по математике и если не получалось решить задачку, смотрели правильный ответ в конце учебника и подгоняли решение под ответ? :) Оказывается, это называлось не хитростью, а математической дедукцией :) Мы хотим получить максимальную прибыль, а значит можно «подогнать» ну или подобрать значение коэффициентов стратегии которое на выходе даст максимально ожидаемый результат.

Попробуем на примере. Наиболее показательны акции Полиметалла.

Я использую торговый терминал Альфа-директ, там эта функция реализована. Запускаем тестирование.

Устанавливаем скромные коэффициенты. Обратите внимание, на то, что чем меньше таймфрейм, тем больше результат. Есть очень большая разница между тестированием на «дневках» или на «минутках», это вполне очевидно, т.к. порой сильные движения «туда-обратно» происходят в небольшие промежутки времени (привет, HFT). Но, таймфреймы меньше «минутки» Альфа-директ отдает очень долго и неохотно. Поэтому я в тестировании использую «минутки».





Что мы сделали? Мы запустили процесс тестирования стратегии, указав параметры, которые можно расшифровать так:

«Торгуем акциями Полиметалла на минутных таймфреймах. Первая покупка осуществляется от количества в одну акцию, от текущей цены. Продаем первую покупку при росте цены на 0.3%. Докупаемся при падении цены на 2%, причем при докупке увеличиваем процент продажи на 0.5%. Тестируем данную стратегию на исторических данных в период с 16.01.2019 по 02.06.2020. Максимальная просадка в 10000 акций»

Вот что получилось.



Прибыль 17,38% за 505 дней, всего было совершено 1298 сделок, из них 1030 успешные.

Скромненько, но со вкусом. Давайте попробуем поэкспериментировать? Снова запускаем процесс тестирования, и увеличиваем коэффициент sec_sell_ratio до значения sec_sell_ratio=1

Вот что получили:



Прибыль 47.88%. Офигенно? На самом деле не очень, объясню чуть позже. А сейчас постараюсь возбудить Вашу фантазию, снова запускаем процесс тестирования, ставим sec_sell_ratio=5,5



518% за 505 дней, Карл!!! Вау. И это «Вы еще в ракету на заглядывали», не увеличивали число акций для первой покупки. Увеличьте Qty до 10 акций и получите отличную картинку для презентации какого-нить авантюриста. Но, пожалуйста, не занимайтесь самообманом! Посмотрите, на последних двух тестах, график доходности не пологий, а просто в какой-то момент произошел скачок цен на 50% и робот этим воспользовался. Все остальное время робот вел себя достаточно вяло.

Есть один важный нюанс, который необходимо учитывать всегда при использовании данной стратегии: надо очень внимательно относится к коэффициенту buy_in_ratio, т.е. проценту просадки цены для дозакупки. Если Вы выставите его очень большим, например 99.99, то при падении цены акции на 5%, робот очень быстро лишит невинности любой самый большой депозит (читать про притчу о зернах на шахматной доске). Поэтому, настоятельно рекомендую, очень прям прошу: в качестве коэффициента просадки не ставьте число больше 98, а объем акций для первой покупки не должен превышать 1/20 части Вашего депозита.

Полагаю, у Вас сразу возникает резонный вопрос: ну и как торговать с учетом техники безопасности?

Для себя определил следующий подход:

  1. Обсчитываем акции первого эшелона, подбираем самые безопасные и выгодные цифровые модели.
  2. На каждую акцию запускаем робота с соблюдением всех мер предосторожности (минимальное число акций, минимальный процент просадки ну и так далее)
  3. Контролируем свою ферму роботов, чтобы кто-то из них не «выжрал» весь общий депозит
  4. Если Вам этого мало, например сделки проходят успешно, но их частота не высока, тогда «смотрим за границу», например считаем модели по иностранным рынкам.

Надеюсь, я не зря старался и моя статья Вам понравилась. Повторюсь, я использую «Альфа директ» и моя стратегия реализована под него буквально в 80 строк кода. Не думаю, что для других торговых терминалов будет сложно реализовать нечто подобное. Вы можете сделать это самостоятельно (вся стратегия детально описана выше), ну или написать мне свое пожелание.

Дополнительные материалы


Вот ссылка на инструкцию на GitHub.

Выбираем и качаем файлик Greedy.docx

Также свои мысли я опубликовал на форуме, вот здесь.
Теги:
Хабы:
+1
Комментарии21

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн