M = (H + L)*0.5; BlaBlaMagic(M);
M = Ref((H + L)*0.5, -1); // сдвиг вектора на 1 бар назад BlaBlaMagic(M);
Идея не нова, вопрос был только в реализации.
Платформа MetaTrader 5 обладает возможностями автоматизации Тестера. Расчет огромного количества данных на истории реальных тиков — обыденность.
Проверка адаптивности ТС — аналогично.
Однако, при большом количестве уже проведенных вычислений требуется разобрать эту кучу данных и найти в ней что-то, действительно, интересное.
Это можно делать двумя способами:
В первом случае получается быстро, но можно легко что-то упустить, действительно, важное.
Во втором случае все гораздо тщательнее, но очень много времени на это уходит. Элементарно утомить природную машину настолько, что больше никогда не захочется к этому возвращаться.
Привет всем. Чтобы не изобретать велосипеды #софты для просмотра структуры портфеля#.
Скачиваем R, RStduio. В RStudio устанавливаем библиотеки: rusquant, PerformanceAnalytics, PerformanceAnalytics.
Добавляем следующий код в RStudio.
Подключаем библиотеки:
library(rusquant) library(PerformanceAnalytics) library(PortfolioAnalytics)
tickers <- c("FXGD","IRAO") weights <- c(.5,.5) start_data <- "2014-01-01" PortPrices <- NULL
for(curr in tickers) { PortPrices <- cbind(PortPrices, getSymbols(curr, src = 'Finam', auto.assign = FALSE)[,4]) }
benchmark <- getSymbols("MICEX", src = "Finam", auto.assign = FALSE)[,4] benchmarkRet <- na.omit(ROC(benchmark))Тоже самое для портфеля акций, плюс считаем портфель и включаем ребалансировку каждый месяц.
PortReturn <- na.omit(ROC(PortPrices)) PortRet <- Return.portfolio(PortReturn, weights = weights, rebalance_on = "month")
PortCum <- cumsum(PortRet) Micex <- cumsum(benchmarkRet)
Ничего удивительного, когда MT5-версия советника проверяется на реальных тиках в MT5-тестере, но отчет выкладывается из MT4, где котировки совсем другие. Въехать в стиль торговли советника возможно только по MT4-statement.
Предлагаю использовать скрипт TesterReport, который создает html-отчет для одиночного прогона MT5-тестера.
В этом посте я хочу рассмотреть вариант арбитражной стратегии, и протестировать его на чувствительность к проскальзыванию, чтобы понять возможность применения.
Далее будут приведены мои субъективные умозаключения.
Для начала перечислю виды арбитража, которые я знаю:
Момент, который объединяет эти стратегии, состоит в том, что торговая позиция выставляется всегда одновременно по двум инструментам в противоположные стороны (если активы прямо скоррелированы, и в одинаковые стороны в ином случае).
Все эти арбитражные стратегии в основном относятся к классу рыночно-нейтральных «mean reversing» стратегий, потому что не следуют за трендом, а пытаются вернуться к некой справедливой цене актива (та же трендовая составляющая), выставляя позиции против отклонения от тренда, хотя, конечно, можно придумать и трендовые стратегии, использующие актив-«поводырь» для прогнозирования тренда.
Привет, почти 2 месяца назад мы запустили первую версию нашей библиотеки PQR для тестирования инвестиционных идей. Основная суть: системно проверять аномалии на большой группе акций. Например, вы ведете таблицы с мультипликаторами компаний и биржевых котировок. Цель — покупать 10% недооцененных бумаг с наименьшим значение P/E и ребалансировать портфель раз в месяц.
Разделов для улучшения было так много, что Андрей (github.com/eura17) почти полностью переписал все функции. Основные изменения:
1) Переход к объектно-ориентированному программированию. Код легче читается и занимает меньше места.
2) Добавили функцию correct_matrices — она приравнивает матрицы с исходными данными к одному виду. Сортирует и удаляет отсутствующие в остальных матрицах столбцы (акции) и строки (периоды);
3) Появилась документация на readthedocs: pqr.readthedocs.io/en/latest/index.html
4) Возможность перебора параметров стратегии через grid_search. Быстрый вывод таблицы с результатами или отдельного параметра (например, Шарп) для стратегий с разными периодами наблюдения, удержания и лагом;