рекомендации

четверг, 8 октября 2020 г.

Тестирование торговых стратегий на исторических данных с помощью Quantstrat. Часть 1. Подготовительные действия.

 В данной серии статей мы попробуем протестировать торговую стратегию на исторических данных с помощью языка программирования R, в частности с помощью библиотеки Quantstrat.


1. Что такое Quantstrat?


Quantstrat предоставляет общую инфраструктуру для моделирования и тестирования количественных стратегий на основе сигналов. Это уровень абстракции высокого уровня (построенный на базе xts, FinancialInstrument, blotter и т. д.), который позволяет создавать и тестировать стратегии в несколько строк кода.


Ключевые особенности:

- поддерживает стратегии, которые включают в себя индикаторы, сигналы и правила;

- позволяет применять стратегии к портфелям с несколькими активами;

- поддерживает рыночные, лимитные, стоп-лимитные и стоп-трейлинговые ордера;

- поддерживает определение размера ордера и оптимизацию параметров.


2. Установка необходимых пакетов


Единственная библиотека, которая требуется для тестирования стратегий - это quantstrat. Она автоматически загрузит нужные ей библиотеки. quantstrat, помимо прочего, включает следующие пакеты: blotter, quantmod и TTR. Это все, что нам нужно для тестирования торговых стратегий.


Установить пакет можно с помощью команды:


install.packages(“quantstrat”)


Необходимо однако отметить, что в последних версиях R при попытке его установки вы можете увидеть сообщение об ошибке:

 

Warning in install.packages :

  package ‘quantstrat’ is not available (for R version 3.4.1)

 

Поскольку разработчики пакета переместили его из R-Forge на github, теперь необходимо собирать его из исходного кода, размещенного на github. Сначала необходимо установить инструменты разработчика:

 

install.packages("devtools")

require(devtools)

 

Затем устанавливаем пакет blotter, который является необходимой зависимостью (его мы также собираем из исходного кода), и, наконец, quantstrat:

 

install_github("braverock/blotter")

install_github("braverock/quantstrat")

 

Для работы на российском фондовом рынке добрые люди написали отличное расширение rusquant, которое позволяет скачивать котировки с сайта Финама и Московской биржи. Установить его можно с помощью команды: 

 

install.packages("rusquant", repos="http://R-Forge.R-project.org"

 

Подробнее о работе с rusquant можно почитать здесь

Далее, еще несколько пакетов нам потребуется для визуализации результатов наших тестов. Все эти библиотеки загружаются с помощью следующих команд:


# Загружаем необходимые библиотеки

library("blotter")

library("quantstrat")

library("rusquant")

library("knitr")

library("kableExtra")

library("dplyr")

library("lattice")

 

3. Торговая стратегия

 

Перед началом работы с библиотекой Quantstrat необходимо сформулировать саму стратегию, которую мы будем кодировать.

С давних пор все программисты начинают изучение программирование с написания программы, которая выводит на экран приветствие “Hello, World”. В мире механических торговых систем аналогом такой программы является стратегия пересечения двух скользящих средних. Мы также не будем отступать от традиции и начнем с нее.

 

Давайте сформулируем нашу стратегию:

 

Концепция

 

Добавляем на график простую скользящую среднюю с периодом x и применением к цене закрытия (Close). Назовем ее быстрой простой скользящей средней (Fast Simple Moving Average) – FSMA

 

Добавляем на график простую скользящую среднюю с периодом y (y>x) и применением к цене закрытия (Close). Назовем ее медленной простой скользящей средней (Slow Simple Moving Average) – SSMA

 

Условия открытия и закрытия позиций

 

Когда FSMA пересекает SSMA снизу вверх, открываем длинную позицию.

Когда FSMA пересекает SSMA сверху вниз, закрываем длинную позицию.

 

Пока на этом все. Сначала мы будем использовать простейшую стратегию, без стоп-лоссов, тейк-профитов, фильтров и т.д. Все это мы будем вводить позже.

Зададим значения наших скользящих средних, возьмем один из классических вариантов: 

FSMA = 7

SSMA = 21 

Далее, выберем остальные показатели тестирования:

Период тестирования стратегии:

начало - 01.01.2012

конец - 31.12.2016

Таймфрейм - 1 день

Инструмент -  обыкновенные акции Сбербанка (тикер SBER).

Риск-менеджмент пока оставим в зачаточном состоянии: 

- примем величину начального депозита в 100 000 рублей.

- размер позиции -  100 акций, или, при цене около 100 руб за акцию на время тестирования - примерно 10% от депозита.

- комиссия за сделку - 20 руб.

На этом пока все. Более продвинутые схемы риск-менеджмента с ограничением рисков и т.д. оставим на потом.


Источники:

1. Backtesting Strategies with R

2. Trading Basics

3. Introduction to Trading Systems

4. Algotrading with R — Quantstrat

5. Nuts and Bolts of Quantstrat, Part I

6. Nuts and Bolts of Quantstrat, Part II

7. Nuts and Bolts of Quantstrat, Part III

8. Nuts and Bolts of Quantstrat, Part IV

Комментариев нет:

Отправить комментарий