Блог им. MrFly

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)



_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
PS. а как ты тестируешь fRTS?

      За последние полтора года, в процессе сильного движения валют, инструменты зависящие от курса непрерывно изменяли некоторые свои важные характеристики. Я имею в виду такие характеристики, как стоимость шага цены и гарантийное обеспечение. (до сентября 2014, пункт ri довльно долго оставался около 0,6 рублей, а го на Si и Eu также были более стабильны)

Само по себе это повлияло на специфику работы, доходность управляющих и на эффективность использования капитала. Для частного алгоТрейдера данная ситуация осложненна еще и тем, что  историческое тестирование становится либо очень сложным, либо не реалистичным.
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

На рисунке изображены изменения стоимости шага цены на fRTS и ниже то, сколько мы могли заработать с 1000 пунктов в тот или иной момент с середины 14 года.

 Данная проблема существует далеко не только на fRTS, для тех, кто не ограничивается торговлей на 2-х инструментах, также почувствовали неудобства на fEu и fSI  -  в связи с динамическим гарантийным обеспечением, на Br, ED и золоте, (из иностранных например — fDAX — eurex/C1), также, как и на fRTS -  в связи с изменяющимся шагом цены.
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

Тесты не верные?
На данный момент, я не знаком ни с одной программой технического анализа, которая бы решала вышеописанные проблемы «из коробки», но пока мы не учитываем в тестах динамическую стоимость шага цены  - таким тестам, по сути, нельзя доверять.

 Относительно недавно и мне были недоступны возможности данного типа тестирования (с пересчитывающейся стоимостью шага цены) и анализа эффективности использования капитала(учитывая гарантийное обеспечение). Это было невозможно до введения в работу собственных поссайзеров. Основные методы управления позицией скрыты в Wealth и добраться до них не получится.

Также, существуют некоторые сложности, при добыче реальных исторических данных о стоимости шага цены и гарантийном обеспечении. Стоимость шага приблизительно можно вычислить, как 2 цента для fRTS и 1 цент для fBR, fGold и т.д., а вот историческое го, только на ftp биржи.

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

Однако были найдены решения, позволяющие это делать, о них и поговорим:

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

  • Необходимые данные находятся на FTP micex. Придется сделать определенное усилие, чтобы научиться пользоваться специальным софтом по работе с ftp(я использую fileZilla) особенно это болезненно для тех, кто не ходил дальше финама

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

  • Данные нужно разархивировать — отдельно каждую папку. Таким образом мы получим несколько сотен папок внутри которых одинаково-называющиеся csv файлы с множеством значений, которые нам в данном случае не нужны, а нужно только несколько строк и столбцов, которые мы должны вычленить.
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
  • Извлечь нужные данные можно несколькими способами, например, можно записать мышку и сделать это в полуавтоматическом режиме, как я показывал вот в этой статье. Также можно это сделать с помощью языка R(на этом не будем останавливаться), 3-ий способ — это написать свой парсер.



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

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

Всю остальную работу имеет смысл проделать только имея свои поссайзеры.

Но даже после всего вышеописанного тестируемые показатели Performance и других визуалайзерсов, типа Equity и просадки будут неверные, потому что Wealth работает с Equity, рассчитываемую с помощью статичной стоимости шага цены (константы из настроек).

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

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
Дело в том, что от изменения стоимости пункта, меняется и прибыль в каждой конкретной сделке — а значит меняется и сумма денег на счету. Так как мы определяем каким количеством контрактов торговать в соответствии с количеством денег на счету (и риском на сделку), оно (кол-во контрактов) будет отличаться от количества контрактов, проторгованного при использовании статичного шага цены. И с каждой сделкой сумма на счете будет изменяться все сильнее.

_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

Расхождения от раза к разу отличаются, иногда больше, иногда меньше. Это зависит от серии положительных/ отрицательных сделок. Когда приходится больше положительных сделок в период максимальной стоимости пункта, стартегия достигала своих максимумов и наоборот.
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

Таким образом, у нас есть возможность намного более реально посмотреть на результаты тестирования. Оптимизировать можно, как вам кажется более рационально (понятно, что алгоритм будет подстраиваться под участки с наибольшей стоимостью шага), но проверить на исторически-правдивых данных — это способ, если не избавиться от иллюзий, то по крайней мере снизить уровень неопределенности. 
_ОДИН НЕВЕРНЫЙ ШАГ (Алго, fRTS)

Добавляйтесь в Skype:   horoshij_den   (Николай Флёров)

★19
16 комментариев
Николай, основательный подход. А как вы учитываете контанго при бэктестинге? Вы ведь склеенные фьючи вроде используете. 
avatar
Artemunak, спасибо большое за комментарий!) стоимость пункта всегда берется по наиболее ликвидному фьючерсу. Сам я перехожу на другой контракт за день до экспирации — таким образом и склеиваю фьючерс. Поскольку я работаю со своим проторговщиком, я могу подкладывать ему любые исторические данные, поэтому значения индикаторов, стопов и т.д. не отличаются на тестах и на реале
Николай Флёров, нипанятна. Допустим есть робот на SI который стоит в лонге почти всегда ( для простоты скажем что шорты он не открывает), в том числе перед экспирой он будет всегда стоять. На склеенном фьюче он будет показывать прибыль за счёт этого грубо 1.5руб*4 экспирации в год. Хотя в реале этой прибыли мы не получим. С этим-то как бороться? А в случае RTS уже всё сложней, там ещё и бэквордация бывает и хз сколько процентов закладывать чтобы это учесть.
avatar
Artemunak, для хеджирования что-ли?)) Нет, нужно выходить всегда перед экспатриацией на тестах и смотреть уже этот результат. Не важно бэквордация или контанго… Нужно прописывать даты выхода и еще несколько защитных методов — на статью наберется материала)))
Николай Флёров, спасибо, будет интересно прочитать про защитные методы. 
Блин, если прописывать даты выхода то это муторно, плюс если брать чужую склейку (Финама например) то там переход будет раньше, в итоге запутаться с датами можно, я думал что у вас что-то похитрее.
avatar
Artemunak, ))) куда уж хитрее)) из тиков S#Data строю свои свечки. Метод выхода перед датой экспирации прописан давно, его одной строчкой переношу из стратегии в стратегию, в формате шаблона! PS. Финам нельзя использовать для серьезных вещей
Отличный пост.
Спасибо.
Рустам TradeInWest.ru, спасибо за хорошее настроение!))
Press, спасибо на добром слове! Желаю и Вам побольше таких комментов!))
Плюсану за пост не про политику. По поводу стоимости пункта фртс. в своих расчетах беру параллельно фрубль и делю на 50000. Грубовато конечно но на градус не влият.
avatar
"… Руслан..", да, конечно — это лучше чем константа))
Много интересного как в статье, так и в комментариях!
А какую чужую склейку посоветуете использовать?
avatar
Dmitriy, спасибо за вопрос! Не вижу причин менять свою систему склейки, последний день экспирации я начинаю со свежего фьючерса — все даты экспирации есть на micex, и в спецификации и в тех файлах, про которые в статье рассказал. Там еще много интересного на ftp, будет полезно посмотреть. ))
фРТС — долларовый актив, для которого нужны рубли. Такое может быть только в нашей стране)) 

Варианты:

относиться к прибылям — как к заработку в долларах. Но возникает проблема при оценке просадок. 

Считать в %% движения самого инструмента. то есть 1000 пунктов движения от 100 до 101 тысяч = 1%, который принесет 1% капиталу при торговле без плечей — а по сути из-за скачков курса меняется плечо, с которым надо торговать, чтобы получать одинаковые результаты, а не сам актив и его шаг цены.

Так. Полуночные мысли вслух.

Сам это делал в экселе. Скачал таблицу изменений usd по цб с сайта cbr.ru Затем в эксель копировал сделки из wld и уже в экселе просчитывал кол-во реальных контрактов, которые нужно торговать по манименеджменту в сделке в зависимости от стоимости фьючерса РТС в рублях
avatar

теги блога Николай Флёров

....все тэги



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