http://rmid-oecd.asean.org/situs slot gacorlink slot gacorslot gacorslot88slot gacorslot gacor hari inilink slot gacorslot88judi slot onlineslot gacorsitus slot gacor 2022https://www.dispuig.com/-/slot-gacor/https://www.thungsriudomhospital.com/web/assets/slot-gacor/slot88https://omnipacgroup.com/slot-gacor/https://viconsortium.com/slot-online/http://soac.abejor.org.br/http://oard3.doa.go.th/slot-deposit-pulsa/https://www.moodle.wskiz.edu/http://km87979.hekko24.pl/https://apis-dev.appraisal.carmax.com/https://sms.tsmu.edu/slot-gacor/http://njmr.in/public/slot-gacor/https://devnzeta.immigration.govt.nz/http://ttkt.tdu.edu.vn/-/slot-deposit-dana/https://ingenieria.unach.mx/media/slot-deposit-pulsa/https://www.hcu-eng.hcu.ac.th/wp-content/uploads/2019/05/-/slot-gacor/https://euromed.com.eg/-/slot-gacor/http://www.relise.eco.br/public/journals/1/slot-online/https://research.uru.ac.th/file/slot-deposit-pulsa-tanpa-potongan/http://journal-kogam.kisi.kz/public/journals/1/slot-online/https://aeeid.asean.org/wp-content/https://karsu.uz/wp-content/uploads/2018/04/-/slot-deposit-pulsa/https://zfk.katecheza.radom.pl/public/journals/1/slot-deposit-pulsa/https://science.karsu.uz/public/journals/1/slot-deposit-pulsa/ Московский экономический журнал 3/2016 - Московский Экономический Журнал1

Московский экономический журнал 3/2016

УДК 336.76

Безымянный 12

Колмахидзе Нодари Григорьевич

ГБОУ ВПО «Финансовый университет при Правительстве РФ»

Кредитно-экономический факультет

Направление подготовки 38.04.08 «Финансы и кредит»

Программа «Финансовая математика и анализ рынков»

Студент

Москва, Российская Федерация

Москва, ГСП-3, 125993, Ленинградский проспект, д. 49

kolmakhidze.nodari@gmail.com

ПРОВЕРКА РЕЗУЛЬТАТИВНОСТИ ТОРГОВОЙ СТРАТЕГИИ С ИСПОЛЬЗОВАНИЕМ ИНСТРУМЕНТАРИЯ MATLAB

Аннотация. В статье показан способ осуществления проверки результативности торговой стратегии с использованием пакета прикладных программ Matlab.

Ключевые слова: бэктестинг, Matlab, торговые стратегии.

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

Индикатор «скользящее среднее» представляет собой усредненное значение цены актива за некоторый период времени. Существует несколько видов скользящих: арифметическое или простое скользящее среднее, экспоненциальное, сглаженное и т.д. Они отличаются друг от друга разными весами для цен каждого из периодов. Кроме того, скользящее среднее можно рассчитывать для любого набора данных, например, объема торгов, цен открытия, закрытия и т.д.

Для целей настоящей статьи возьмем простое скользящее среднее цен закрытия торговых дней актива, поскольку эта стратегия является наиболее часто упоминаемой. В качестве проверяемого актива выберем цены фонда ETF («Exchange Traded Fund» – торгуемый на бирже фонд) на индекс S&P500 за последние пять лет.

В стратегии используются две скользящих средних, одна из них «короткая», рассчитываемая как арифметическое среднее цен закрытия последних торговых 15 дней; вторая – «длинная», 50 дней. Расчет проводится по формуле [1]:

Безымянный

где:

 P – цена закрытия i-го торгового дня актива;

 n – количество дней.

Принцип использования стратегии следующий: при пересечении «короткой» скользящей средней снизу-вверх «длинную» – покупаем актив. При пересечении сверху-вниз  –   продаем актив.

Итак, для проведения проверки результативности торговой стратегии необходимо использовать скрипт для пакета прикладных программ Matlab. Скрипт должен подгрузить из Интернета цены актива, рассчитать скользящие средние на основании этих цен, затем выдать сигнал к покупке или продаже актива и осуществить виртуальную сделку. После этого доходности каждой сделки отображаются на общем графике, где по оси абсцисс располагается количество дней работы стратегии, а по оси ординат – доходность в процентах.

Приведем пример создания подобного скрипта, однако при этом будем использовать и комбинировать некоторые тривиальные функции, уже реализованные другими участниками сообщества Matlab. Необходимо загрузить в корневую папку следующие функции: GetTickerV.m, Cross.m, sma.m, backtestlongAmount.m, iif.m, stock.m [2].

Первоначально решим задачу получения исходных данных для бэктестинга. Нам необходимо получить значения ETF на индекс S&P500 за последние пять лет. Для этого используем функцию GetTickerV, которая выгрузит данные из сервиса Yahoo Finance. В этих данных будет содержаться дата, цена открытия, цена закрытия, максимальная и минимальная цены актива за выбранный торговый период. Итак, функция примет вид:

Безымянный

Во-вторых, необходимо из полученного массива данных выбрать цены закрытия и цены открытия и создать из цен вектор. Последние необходимы для того, чтобы осуществлять покупку или продажу актива – в случае, если торговая система после анализа цен закрытия в периоде n дает сигнал на действие с активом, это действие будет осуществлено на следующий (n+1) день по цене открытия. Строчка кода примет вид:

close=fts2mat(ticker_fints.close);

open=fts2mat(ticker_fints.open);

где fts2mat – стандартная функция Matlab для конвертации ценового ряда в матрицу [3];

ticker_fints.close – сгенерированные на предыдущем этапе цены закрытия;

ticker_fints.open – сгенерированные на предыдущем этапе цены открытия.

Следующим шагом приведем функции простых скользящих средних: «короткой» – с периодом 15 дней, и «длинной» – с периодом 50 дней:

sma15=sma(close,15);

sma50=sma(close,50);

где sma(close,n) – произвольная функция расчета скользящей средней арифметической цен закрытия последних n торговых дней (в нашем примере 15 и 50 дней).

Затем необходимо ввести функции сигналов на покупку и на продажу базового актива. Для этого воспользуемся функцией Cross, которая позволяет найти точку пересечения двух скользящих средних. Важно то, что здесь используется произвольная функция “Cross”, а не встроенная в Matlab функция “Cross”. Сигнал очень прост – при пересечении «короткой» скользящей «длинной» (имеется в виду пересечение снизу-вверх) производим покупку, наоборот – продажу:

buy=Cross(sma15,sma50);

sell=Cross(sma50,sma15);

где Cross() – произвольная функция пересечения двух скользящих средних;

sma15 – простая скользящая средняя за 15 торговых дней;

sma50 – простая скользящая средняя за 50 торговых дней.

Теперь создадим условную переменную signal, которая объединит полученные в предыдущем пункте условия для покупки (сигнал принимает значение 1) либо продажи актива (сигнал становится -1). Третий вариант – бездействие либо удержание позиции (в таком случае сигнал принимает значение 0):

signal= iif(buy==1,1,iif(sell==1,-1,0));

где iif() – произвольная функция в Matlab, позволяющая создать условную матрицу.

Наконец введем функцию расчета ожидаемой доходности стратегии. Эта произвольная функция зависит от совокупности полученных сигналов на покупку либо продажу. Как уже упоминалось, если по цене закрытия в периоде n поступает сигнал на действие с активом, само действие осуществляется на следующий день по цене открытия торгов. Итак,

[PL,PLvector, sh]= backtestlongAmount(close,signal,open,1,100000);

где backtestlongAmount () – произвольная функция расчета прибыли или убытка, которая зависит от следующих переменных:

close цена закрытия актива, по которой ведется расчет входного сигнала;

signalполученная ранее переменная, означающая действие с активом;

openцена открытия актива, то есть цена по которой произойдет сделка;

100000 – произвольное значение начальной суммы денежных средств на счете.

Заключительным этапом отобразим рассчитанную доходность на графике для наглядности. Для этого используем следующую функцию:

plot(PL,’DisplayName‘,’PL‘,’YDataSource‘,’PL‘);figure(gcf),

где plot () – встроенная в Matlab функция, позволяющая нарисовать график [4];

figure(gcf) – встроенная в Matlab функция, позволяющая получить описатель текущего графического окна [5].

В итоге пакет прикладных программ Matlab отобразит график доходности выбранной стратегии при торговле в течение пяти лет выбранным инструментом – ETF на индекс S&P500. Очевидно, что пересечение простых скользящих средних дает практически нулевую доходность с максимальной просадкой 30% при условии, что «короткая» средняя строится на интервале 15 торговых дней, а «длинная» – 50 дней (рисунок 1). За пять лет максимальный убыток по стратегии составил 30%.

Рисунок 1. Доходность стратегии пересечение простых скользящих средних, «короткая» – 15 дней, «длинная» – 50 дней

Безымянный

Справедливости ради отметим, что, выбрав другие параметры расчета скользящих, можно добиться более впечатляющих результатов. В частности, если «короткая» средняя будет строиться исходя из цен закрытия последних 50 дней, а «длинная» 200 дней, то доходность стратегии за пять лет составит порядка 60% (рисунок 2).

Рисунок 2. Доходность стратегии пересечение простых скользящих средних, «короткая» – 50 дней, «длинная» – 200 дней

Безымянный

Таким образом, в настоящей статье мы показали, как можно проводить проверку результативности торговой стратегии с использованием пакета Matlab. При необходимости можно легко заменить как саму стратегию (созданием новой функции), так и входные данные, например, выбрать другой биржевой актив или период расчета.

Список литературы

  1. Steven B. Achelis. Technical Analysis from A to Z: Covers Every Trading Tool… from the Absolute Breadth Index to the Zig Zag / Пер. с англ. М. Волкова, А. Лебедева.  М.: Диаграмма, 1999.  С. 14, 224-225.  376 с.
  2. Sanz Matlab Function [Электронный ресурс] / Sanz Prophet, 2012. URL: https://docs.google.com/folderview?id=0B7JFTyYxlFOldGVPdHFZMEFOOFE (дата обращения: 15.02.2016).
  3. Function fts2mat [Электронный ресурс] / Matlab Documentation. 1994-201 The MathWorks, Inc. URL: http://www.mathworks.com/help/finance/fts2mat.html
  4. Function plot [Электронный ресурс] / Matlab Documentation. 1994-201 The MathWorks, Inc. URL: http://www.mathworks.com/help/finance/plot.html (дата обращения: 15.02.2016).
  5. Задорожный С.С. Графические окна системы MATLAB и элементы управления [Электронный ресурс] / Программирование в системе Matlab. URL: http://www.butovo.com/~zss/matlab/4/1.htm (дата обращения: 15.02.2016).