Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Создание, тестирование и оптимизация торговых систем с использованием программы Metastok и языка R. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
11. Итоговую статистическую информацию по тестируемой страте-
гии можно получить с помощью команды:
summary(as.ts(trade_return))
На экран будут выведены квантильные характеристики доходностей
торговой стратегии.
Примечание.
Вы можете в условии сигнала заменить числовые пара-
метры переменными и сравнить результаты работы системы для различ­ных значений параметров.
2.7. Создание и оптимизация модельных портфелей
Пакет PortfolioAnalytics позволяет задавать различные виды ограни­чений и целевые функции для создания и оптимизации портфелей цен­ных бумаг (Bennett, 2014).
Поиск оптимального портфеля. Для поиска оптимального портфеля
будем использовать ограничения: сумма долей должна быть равна 1 (weight_sum constraint), доля каждого актива должна лежать в определен­ном интервале (box constraint). В качестве целевой функции будем мини­мизировать условную меру под риском (ES). В иллюстративном примере будем использовать временные ряды, составленные из доходностей четы­рех активов:
CA (Convertible Arbitrage), CTAG (CTA Global), DS
(Distressed Securities), EM (Emerging Markets). Для проведения моделиро­вания необходимо выполнить:
1. Подключить необходимые (предварительно установленные)
библиотеки:
library(PortfolioAnalytics) library(PerformanceAnalytics)
2. Подключить встроенный набор данных edhec, указать необхо-
димые активы:
data(edhec) R <- edhec[, 1:4] colnames(R) <- c("CA", "CTAG", "DS", "EM") funds <- colnames(R)
3. Вывести в консоль по пять записей с начала и конца временных
рядов, которые мы будем использовать при моделировании:
head(R, n=5); tail(R, n=5)
51
4. Создать портфель portf.init и добавить два ограничения: сумма
долей должна быть равна 1 и доля каждого актива должна лежать в ин­тервале [0.05; 0.4]:
portf.init <- portfolio.spec(funds) portf.init <- add.constraint(portf.init, type="weight_sum",
min_sum=0.99, max_sum=1.01)
portf.init <- add.constraint(portf.init,
type="box", min=0.05, max=0.4)
5. Дополнительно добавить условие, которое позволит вычислить
доходность (mean), но не будет задействовано в оптимизации
(multiplier=0):
portf.init <- add.objective(portf.init, type="return", name="mean", multiplier=0)
6. Задать целевую функцию оптимизации – будем минимизировать
условную меру под риском (expected shortfall):
portf.minES <- add.objective(portf.init, type="risk", name="ES")
7. Провести оптимизацию и вывести решение на экран:
opt.minES <- optimize.portfolio(R, portf.minES, optimize_method="DEoptim", search_size=1000,
trace=TRUE, traceDE=0);
opt.minES
В результате выполнения кода будет сформирован портфель с опти­мальными долями: 0.148, 0.398, 0.398, 0.050 для рядов CA, CTAG, DS, EM соответственно и характеристиками: доходность (mean) 0.007109, риск (ES) 0.02675.
Сравнение методов для создания случайных инвестиционных
портфелей.
менные ряды, составленные из доходностей четырех активов:
Для создания модельных портфелей будем применять вре-
CA
(Convertible Arbitrage), CTAG (CTA Global), DS (Distressed Securities),
EM
(Emerging Markets). Используем два типа ограничений: заемные средства (leverage constraint) и допустимые доли активов в портфеле (box constraint). Приведем графическое сравнение результатов моделирования с использованием методов генерации портфелей – sample, simplex и grid. Для проведения моделирования необходимо:
52
1. Подключить необходимые (предварительно установленные)
библиотеки:
library(PortfolioAnalytics) library(PerformanceAnalytics)
2. Подключить встроенный набор данных, указать необходимые
активы:
data(edhec) R <- edhec[, 1:4] colnames(R) <- c("CA", "CTAG", "DS", "EM")
3. Создать модельный портфель pspec и добавить два ограничения: использование заемных средств не допускается, доли активов не ограни­чены:
pspec <- portfolio.spec(assets=colnames(R)) pspec <- add.constraint(portfolio=pspec, type="leverage", min_sum=0.99, max_sum=1.01) pspec <- add.constraint(portfolio=pspec,
type="box", min=0, max=1)
4. Используя три различных метода (sample, simplex и grid) сгене­рировать 1000 случайных портфелей
rp1 <- random_portfolios(portfolio=pspec, permutations=1000, rp_method='sample') rp2 <- random_portfolios(portfolio=pspec, permutations=1000, rp_method='simplex') rp3 <- random_portfolios(portfolio=pspec, permutations=1000, rp_method='grid')
5. Для вывода квантильных характеристик сгенерированных слу­чайных портфелей по каждому методу можно использовать команды:
summary(rp1); summary(rp2); summary(rp3)
6. Для каждого метода генерации портфелей вычислить статисти­ческие характеристики, которые будут определять положение конкрет­ного портфеля на графике:
tmp1.mean <- apply(rp1, 1, function(x) mean(R %*% x)) tmp1.StdDev <- apply(rp1, 1, function(x) StdDev(R=R, weights=x))
tmp2.mean <- apply(rp2, 1, function(x) mean(R %*% x)) tmp2.StdDev <- apply(rp2, 1, function(x) StdDev(R=R, weights=x))
53
tmp3.mean <- apply(rp3, 1, function(x) mean(R %*% x)) tmp3.StdDev <- apply(rp3, 1, function(x) StdDev(R=R, weights=x))
7. Построим график для сравнения методов генерирования модель­ных портфелей:
plot(x=tmp1.StdDev, y=tmp1.mean, col="blue", main="Random Portfolio Methods", ylab="mean", xlab="StdDev")
points(x=tmp2.StdDev, y=tmp2.mean,
col="red", pch=2)
points(x=tmp3.StdDev, y=tmp3.mean,
col="lightgreen", pch=5)
legend("bottomright", legend=c("sample", "sim­plex", "grid"),col=c("blue", "red", "light­green"),pch=c(1, 2, 5), bty="n")
В результате выполнения этой команды на экране графическое окно с характеристиками (риск – StdDev, доходность – mean) сформированных портфелей (рис. 31).
Рис. 31. Сравнение модельных (случайных) портфелей для четырех рядов
Для того чтобы каждый раз при использовании генератора случай­ных чисел в R получать идентичные последовательности чисел, можно использовать функцию set.seed(), которая фиксирует число, служащее начальной точкой для запуска алгоритма генерации (псевдо-)случайных чисел. В качестве аргумента функции указывают любое целое число, например set.seed(42).
54
Задания для самостоятельной работы
1. Скачать котировки Microsoft (MSFT) c yahoo за последние 6 ме­сяцев. Конвертировать котировки в формат xts. Установить период 1 не­деля. Построить график цены в виде японских свечей: рост – зеленый цвет, падение – красный цвет.
2. Построить линейный график цен ПАО «Газпром» (GAZP) за по­следний год, период – 1 день. Добавить простую (SMA) и экспоненциаль­ную (EMA) скользящую среднюю с окном сглаживания 21 день закрытия (Close). Установить зеленый цвет для SMA, красный – EMA. Определить количество и даты пересечения индикаторов на графике.
3. Провести тестирования торговых стратегий, предложенных в первом разделе. Оформить отчет о тестировании по требованиям, указан­ным в первом разделе.
4. Для временного ряда цен закрытия (Close) ПАО «Сбербанк» (SBER) построить технический индикатор – индекс относительной силы
использованием встроенной функции RSI() пакета TTR. Период –
с 14 дней. Записать условия формирования сигналов для открытия и за­крытия позиций при пересечении сигнальных линий 20 и 80.
5. Провести оценку функции плотности распределения логарифми­ческих доходностей для индекса Доу Джонса за период с 2017 по 2018 год с помощью полигона гистограмм и построить график распределения вероятностей.
6. Провести проверку
гипотезы о нормальности распределения ло­гарифмических доходностей для временного ряда котировок Apple (AAPL) для периода 1 неделя и 1 месяц. Сравнить результаты, сделать выводы.
7. Построить нелинейную регрессию для временного ряда индекса Доу Джонса (DJIA) и проверить ее качество. Вычислить границы 0,95–доверительного интервала для уравнения регрессии и наложить их на график регрессии.
8. Для индекса RTS
вычислить логарифмические доходности за по­следние 252 торговых сессий, построить гистограмму логарифмических доходностей и вычислить центральные моменты (математическое ожи­дание, дисперсию, коэффициент асимметрии и эксцесса).
9. Загрузите данные с сервера yahoo для котировок акций GE, KO,
AAPL, MCD за последний год. По ценам закрытия вычислите логариф-
мические доходности и для полученных временных рядов сформируете портфель с ограничением
долей: инвестиции в каждый актив не менее
15 %. Сделайте выводы.
по ценам
55
Заключение
В пособии кратко рассмотрены возможности программы Metastock и языка программирования R для проведения статистического тестиро­вания торговых стратегий. Для принятия решения о целесообразности использования тестируемой торговой стратегии необходимо рассматри­вать множество параметров. В пособии приведены иллюстративные примеры для оценки эффективности торговых сигналов, текущих и за­фиксированных убытков, волатильности рынка с использованием как графического языка программирования.
Для практического закрепления представленного материала в каж­дом разделе приведены задания для самостоятельной работы.
Для дальнейшего самостоятельного изучения вопросов создания и те­стирования торговых стратегий следует обратиться к специальной литера­туре, а также интернет-ресурсам, рекомендованным в конце пособия.
В качестве перспективного программного чётов выделим язык программирования Python, которому будет посвящено следующее пособие.
интерфейса программы Metastock, так и скриптового
языка для проведения рас-
56
Список литературы
1. Pfaff B. Financial Risk Modelling and Portfolio Optimization with R /
B. Pfaff. – Chichester : John Wiley & Sons, 2016. − 437 p.
Georgakopoulos Н. Quantitative Trading with R. Understanding
2. Mathematical and Computational Tools from a Quant’s Perspective / Н. Georgakopoulos. − New York : Folk Creations, 2015. − 291 p.
3.
Mastering R for Quantitative Finance / E. Berlinger, F. Illes,
M. Badics, A. Banai, G. Daroczi. – 346 p.
Backtesting Trading Strategy in R. – URL: https://analyticsprofile.com/
4. algo-trading/backtesting-trading-strategy-in-r/ (дата обращения: 03.12.2019).
Сафин В.И. Создание и оптимизация торговых систем
5. в Metastock / В.И. Сафин. – Москва : Форекс-Клуб, 2004. – 180 с.
Шарп У. Инвестиции / У. Шарп, Г. Александер, Дж. Бейли. –
6. Москва : Инфра-М, 2014. – 1028 с.
Швагер Дж. Технический анализ. Полный курс / Дж. Шварер. –
7. Москва : Альпина Бизнес Букс, 2006. – 806 c.
Семёнов М.Е. Исследование операций на рынке ценных бумаг:
8. учебное пособие / М.Е. Семёнов. – Томск : Изд-во ТУСУРа, 2007. – 180 с.
Колби Р. Энциклопедия технических индикаторов / Р. Колби. –
9. Москва : Альпина Бизнес Букс, 2004. – 837 с.
Shamsieva A. Validation of Optimal Strategy for Portfolio Management
10. Using Technical Analysis. IFAC Proceedings / A. Shamsieva. − Vol. 45 (2). – P. 1313–1318.
11.
Burghardt G. Deciphering Drawdowns / G. Burghardt, R. Duncan, L.
Liu // Risk magazine, Risk management for investors. – 2003. – P. 16−20.
Pardo R. The Evaluation and Optimization of Trading Strategies /
12. R. Pardo. − New Jersey : Wiley & Sons, 2008. – 431 p.
Portfolio optimization with R/Rmetrics / D. Wurtz, Y. Chalabi,
13. W. Chen, A. Ellis. – Zurich : Rmetrics Association and Finance Online Pub­lishing, 2009. – 274 p.
Семёнов М.Е. Создание и оптимизация торговых систем
14. в Metastock : учебное пособие / М.Е. Семёнов. – Томск : Изд-во ТУСУРа,
2009. – 30 с.
Щербицкий С.Г. Статистическое оценивание торговых стратегий /
15.
С.Г. Щербицкий, М.Е. Семёнов // Перспективы развития фундаментальных наук : труды XI Международной конференции студентов и молодых учёных. Россия, Томск, 22–25 апреля 2014 г., Национальный исследовательский Том­ский политехнический университет. − Томск, 2014. – С. 703–706.
Birmingham : Packt Publishing, 2015. −
57
16. Шитиков В.К. Классификация, регрессия, алгоритмы Data Min- ing с использованием R / В.К. Шитиков, С.Э. Мастицкий. − URL: https://github.com/ ranalytics/data-mining (дата обращения: 03.12.2019).
Sharipova A.M. Robustness Measure for Portfolio Management
17. Strategy / A.M. Sharipova, V.Yu. Arkov // Bulletin of the South State Ural University. Ser. Computer Technologies, Automatic Control, Radio Electron­ics. – 2017. – Vol. 17, no. 3. – P. 88–98.
18.
Bennett R. Portfolio Optimization Objectives with Portfolio Analyt-
ics. R/Finance / Bennett R. – URL: http://past.rinfinance.com/agenda/ 2014/workshop/RossBennett.pdf (дата обращения: 03.12.2019).
Cross Validated. – URL: https://stats.stackexchange.com/ (дата
19. обращения: 03.12.2019).
Quantitative Finance. – URL: https://quant.stackexchange.com/ (дата
20. обращения: 03.12.2019).
21. Metastock online community. – URL: http://forum.metastock.com/ (дата обращения: 03.12.2019).
58
Учебное издание
СЕМЁНОВ Михаил Евгеньевич
СОЗДАНИЕ, ТЕСТИРОВАНИЕ И ОПТИМИЗАЦИЯ
ТОРГОВЫХ СИСТЕМ С ИСПОЛЬЗОВАНИЕМ
ПРОГРАММЫ METASTOK И ЯЗЫКА R
Учебное пособие
Корректура Е.Л. Тен
Компьютерная верстка Д.В. Сотникова
Дизайн обложки Т.В. Буланова
Подписано к печати 05.12.2019. Формат 60х84/16. Бумага «Снегурочка».
Печать CANON. Усл. печ. л. 3,43. Уч.-изд. л. 3,10.
Заказ 262-19. Тираж 100 экз.
3
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]