Блог им. Svips

Делимся секретами алготрейдинга.

    • 29 июля 2013, 15:00
    • |
    • Svips
  • Еще
 
      Все кто когда-либо писал стратегии и тестировал их, наверное замечал, что сложно получить однонаправленную стратегию. Как правило, стратегия зарабатывает, потом теряет, потом снова зарабатывает и снова теряет. Хорошо если потери меньше прибыли, тогда мы получаем устойчивый тренд растущей эквити.  А что делать, если стратегия после длительного роста начала сливать? Или ее взлеты и падения равны друг другу и она торгуется около нуля? Как из нулевой стратегии сделать прибыльную? Как уменьшить просадки прибыльной стратегии и увеличить ее доходность? Все это вы можете узнать из этой статьи.
    Мы решили поделиться своим опытом и одним из методов в этом направлении. Многим известно, что если у вас есть стратегия, которая стабильно теряет деньги, то вам больше ничего не надо. Не изменяя  алгоритма стратегии, вы просто инвертируйте сигналы на вход и у вас мега прибыльная система. Именно так мы и поступаем. Когда стратегия зарабатывает, мы ничего не делаем, как только она начинает терять, мы начинаем инвертировать ее сигналы, и снова зарабатываем. Все просто? Не совсем. Как узнать когда начинать инвертировать, а когда возвращать работу во фронте?



    В свое время не один десяток хороших стратегий оказался за бортом, только потому, что у нас не было подобного алгоритма, по которому можно определить момент когда пора инвертировать сигналы стратегии. Затем, в один прекрасный день мы его обрели… С этого дня даже самые флетовые стратегии стали приносить хоть какую то но прибыль.
    Давайте определим стратегию торгующую всегда в ноль. Т.е. при любых обстоятельствах, на любом рынке сумма ее доходов равна сумме ее убытков. В этом случае при любом соотношении прибыльных сделок к убыточным, эта стратегия должна уравновешивать все так, что бы всегда оставаться в прибыли равной нулю. С точки зрения математики, это скорее всего выглядело бы так:
Коэффициент прибыльности стратегии
    Решив это уравнение для различных %Прибыльных сделок и нанеся значения на график мы получим некий коэффициент прибыльности стратегии, при котором мы можем однозначно трактовать насколько стратегия прибыльна в текущий момент.
Коэффициент прибыльности стратегии
       На этом графике по оси абсцисс мы имеем процент прибыльных сделок к убыточным, а по оси ординат соотношение прибыли к убытку. В итоге, мы имеем некую кривую, анализируя значение стратегии относительно которой, мы получим хороший сигнал на инвертирование входов в позиции.
      Как это работает? Давайте разберем на примере. Мы взяли один из торговых дней нашего робота, когда он отторговал в ноль. Это 24.07.2013, история сделок тут http://dirextrade.com/hystory.php
 
dirextrade.com
 
     Как видим, робот сначала заработал, потом отдал, потом снова чуть взял, но в целом день для него не очень. Робот весь день проработал без реверса. Теперь берем, наш «анализатор стратегии» и попробуем проторговать те же самые сигналы, только уже инвертируя сигнал, когда нам это покажет наш график.
    В данном случае, мы будем анализировать последние десять трейдов, и отмечать значение на графике. Условимся, что если оно будет выше зеленой линии на 2 единицы, то мы будем работать во фронте, т.е. не инвертируя сигналы. Если же значение будет ниже зеленой линии или меньше 2 единиц, то мы будем работать в реверсе, т.е. за место продажи покупать, за место покупки продавать.
    Итак, изначально стратегия запускается во фронте и мы получаем первые десять трейдов и прогоняем их через анализатор.
 
Коэффициент прибыльности стратегии
 
В данной таблице мы видим:
  • Первый столбец – Номер сделки
  • Второй столбец – ПЛ в сделке без учета реверсов
  • Третий столбец – ПЛ по дню без учета реверсов
  • График – Значение прибыльности стратегии
  • Четвертый столбец – ПЛ в сделке с учетом реверса
  • Пятый столбец – ПЛ по дню с учетом реверса
    Итак, мы видим, что коэффициент прибыльности стратегии равен трем, и при этом он находится выше зеленой линии. При таких условиях, мы оставляем все как есть и продолжаем торговать следующие десять трейдов.


Коэффицинет прибыльности стратегии


    Следующие десять трейдов показывают коэффициент прибыльности равный единице, и значение еще выше зеленой линии. Как мы условились, при таких значениях мы включаем реверс. Наверное стоит запомнить на данный момент, что прибыль по дню составляет 980пунктов РТС. Торгуем следующие десять трейдов уже в реверсе, но значение коэффициента прибыльности считаем без реверса. Это важно
 
Коэффициент прибыльности стратегии
   
    Серым цветом, мы тут выделили что бы было понятно, что тут мы работали в реверсе. Итак, коэффициент прибыльности показывает ноль, и мы опустились ниже зеленой линии, что говорит нам о том, что мы верно торгуем в реверсе, и так надо продолжать. Прибыль по дню без реверса равна 510пунктов, а с реверсом уже 1450, не плохо, согласитесь? Торгуем дальше в реверсе.
 
Коэффициент прибыльности стратегии
 
    Значение коэффициента по прежнему ниже зеленой линии и равно нулю. Продолжаем торговать в реверсе. При этом, без реверса прибыль по дню уже -130 а с реверсом +2090пунктов РТС.
 
Коэффициент прибыльности стратегии.
   Коэффициент стал равен единицы и поднялся выше зеленой, но значения еще не достаточно что бы выключать реверс, поэтому ничего не меняем и проторгуем дальше.
 
Коэффициент прибыльности стратегии

      Итак, последние трейды… День закрыт. Что мы имеем. Если бы мы просто торговали сигналы стратегии, то мы бы получили итог дня +50пунктов РТС. А если бы мы применили наш коэффициент прибыльности стратегии, то при тех же самых сигналах, мы закрыли бы день в +1910пунктов, всего лишь в определенный момент включив реверсивное исполнение сделок
    Надеемся, что данный алгоритм поможет вам превратить нулевые и убыточные стратегии в прибыльные! И для большей помощи, прилагаем исходный код данной программки для анализа коэффициента прибыльности стратегии. Те кто умеет программировать, могут взять класс из данной программы и подключить его к своим роботам.  
Скачать исходники данной программы.
Если вам это помогло, плюсаните, мы будем благодарны. )
 
Успешной торговли!
.


★17
25 комментариев
А исходники на чем?
avatar
HPotter, C#
avatar
Сколько робот стоит?
Профессор Преображенский, Не продается )
avatar
Svips, даже за стотыщмильёнов?
avatar
pXhXXst, За такую сумму не найдется покупателя )))
avatar
тестировать робота на истории очень глупо на мой взгляд. робот должен приносить прибыль в будущем, а не показывать что мог получить когда-то прибыль
avatar
SHCHUTUSHCHA, Это трейды реальной торговли, не история. Робот входит по лучшей цене, выставляясь в стакан. Соответственно если его реверсировать, то исполнение будет 100%, так как вам не нужно уже становиться лучшим что бы получить цену сигнала, а достаточно ударить в противоположную котировку. Отсюда, практически нет разницы когда проверены результаты.
avatar
Svips, я не имею ввиду данный конкретный случай, я к примеру на истории никогда не проверял те алгоритмы которые программировал. Не важно сливала ли система в прошлом, а важно то как она будет торговать в будущем
avatar
SHCHUTUSHCHA, Согласны с вами полностью. У нас тоже почти все алгоритмы проверяются в реалтайме на реальном рынке. Но ничего не мешает, имея алгоритм стратегии, которая уже пару месяцев торгует в ноль, вместо того что бы ее выкинуть подключить к ней этот реверс и посмотреть )) Глядишь чего и выйдет.
avatar
SHCHUTUSHCHA, Не подскажите как протестировать робота на будущих данных?)
avatar
Gypsy, все просто, предсказываете движение рынка, пишете под него робота, получаете прибыль. Лично я действую именно так.
avatar
SHCHUTUSHCHA, А зачем робота тогда писать? Можно открыть позицию и все.
avatar
Svips, робот действует в то время когда меня нет у терминала, а так я больше сам люблю кнопки нажимать, получая моральное удовлетворение от совершенной сделки
avatar
SHCHUTUSHCHA, я спросил как тестировать. А вы получается не тестируете, а сразу в бой. Мы так не играем)
avatar
SHCHUTUSHCHA, «история повторяется». Ну, или, почти повторяется, что в принципе не важно. Любой робот, любое тестирование, имеют статистический характер. То есть прибыль на конкретном отрезке времени (например день) не гарантируется, но на серии дней должна быть. Если стратегия правильная и соответствует текущему характеру рынка.
avatar
Hedgehog, Все верно. А когда стратегия не соответствет характеру рынка и начнет сливать, вот тут то этот алгоритм ее и ревертнет. Главное правильно подобрать параметр количества анализируемых трейдов.
avatar
Hedgehog, по статистике если робот долго торгует в плюс, то рано или поздно он начнет сливать, потому что математическое ожидание всех роботов стремится к нулю.
avatar
SHCHUTUSHCHA, Именно в этот момент и нужно начать его инвертировать, что бы изменить мат.ожидание на положительное не меняя алгоритма робота.
avatar
Svips, рано или поздно ваш робот будет неправильно менять алгоритм робота.
avatar
SHCHUTUSHCHA, Он не меняет алгоритм, он просто меняет направление сделки, если видит, что робот начинает сливать. Но если в общем, то может конечно и так быть. Это просто один из способов, который можно применить.
avatar
Тут суть больше в том, что есть трендовые стратегии, а есть флетовые, вот каждая не на своем рынке сливает. Поэтому просто в не ее рынок, можно врубать реверс. И это один из способов распознать, когда рынок не для данной стратегии.
avatar
>одним из методов в этом направлении
Надеюсь это не единственный ваш метод.
Cilez, Нет конечно )
avatar
Где сейчас исходники. По ссылке в описании их уже нет. Вернее страницы такой нет. Просьба сюда еще раз выложить работающую ссылку. Спасибо.

теги блога Svips

....все тэги



UPDONW
Новый дизайн