Избранное трейдера Алексей 888
Первую часть интервью смотрите здесь.
Что нужно учесть при запуске стратегии в производство?
Новичкам нужно обратить внимание на соответствие «реальному миру» — на нюансы типа дней экспирации и праздников. Когда вы калибруете систему на исторических данных, можно допускать аппроксимацию без таких дней. Но когда вы переходите к реальной торговле, то не можете быть небрежным, все должно быть максимально точно.
Другой аспект заключается в том, что скорость критична. Я не могу рассчитывать модель в реальном времени (градиентный поиск очень медленный), поэтому нужно все сократить до линейных аппроксимаций изменений. Все это влечет за собой много матричных манипуляций.
Обычно создается исполнительный прототип, который делает все правильно, но не очень эффективно. Затем я поручаю моим сотрудникам-инженерам сделать производительную версию стратегии на языке Python или даже С, используя библиотеки для реального рынка, которые они создавали и совершенствовали годами. И эта версия подключается к моей торговой системе, для запуска данной стратегии «в бой».
Копался в статьях по алготрейдингу, решил присмотреться в сторону машинного обучения. Но это в моем случае не про какой-то искусственный интеллект с нейросетями, в нейросети пока не хочу лезть, слишком сложно. Для начала хочу использовать простые алгоритмы для классификации и оценки хороших точек входа на основе обучения модели на истории.
Я исходил из того, как сам разрабатываю обычно торговую систему: ищу хорошие точки входа на истории и классифицирую их. Но так как человеческие возможности ограничены, использую только 3 таймфрейма и около 10 индикаторов в сумме. Кроме этого, история в точности никогда не повторяется и нужна какая-то более умная модель, которая не просто сравнивает индикаторы, как делают сейчас мои роботы, а дает оценку данной рыночной ситуации на основе всей совокупности индикаторов.
С помощью машинного обучения можно создать и обучить много моделей по разным алгоритмам, эта область уже хорошо развита (Logistic regression, Linear discriminate analysis, Stochastic gradient boosting, Decision trees, Support Vector Machine, KNN и другие). Можно быстро попробовать разные модели (Spot-checking algorithms). Модели могут работать вместе и делать предсказания. Можно улучшать точность моделей (Algorithm parameter tuning, Ensemble methods). Можно посчитать точность предсказаний по модели, обучив сначала модель на части выборки, а затем протестировав ее на другой части выборки (resampling).
Как я понял, R для машинного обучения идеально подходит. Сделал первые шаги сегодня: cоздал модель по туториалу, которая определяет по размеру чашелистиков и лепестков растения ирис точный вид (всего 4 вида) какого-то одного растения(особи) на основе обучения по выборке из 500 других растений(особей).
Код:
# Скачивание и инициализация библиотек mlbench(используется для machine learning), caret (используется для нормализации данных)
install.packages("mlbench")
library(mlbench)
install.packages("caret")
library(caret)
# Краткая информация про базу данных iris
data(iris)
summary(iris)
# Определение тренировочной выборки
trainControl <- trainControl(method="cv", number=10)
# Оценка точности алгоритма Naive Bayes на данном dataset
fit <- train(Species~., data=iris, trControl=trainControl, method="nb")
# Вывод оценки точности
print(fit)
Сейчас я точно так же хочу сделать модель, которая на основе 30-300 хороших точек входа на истории определяет, насколько хороша данная пятиминутка для входа в лонг или шорт.
Что скажете? Есть ли там грааль? Есть ли у кого-то опыт использования машинного обучения для торговли? Что посоветуете?
Также представляю вашему вниманию грубую оценку того, на сколько в среднем ходят нефть Brent и Si за час и 1 день. Посчитал с использованием библиотеки rusquant на R. Также делюсь элементарным кодом.
# Инициализация библиотеки rusquant (русская версия от quantmod, поддерживает все функции quantmod)
library(rusquant)
# Получение исторических данных с Финама
getSymbols("SiM6", from=Sys.Date()-30, src="Finam", period="day")
# Рисуем график, чтобы увидеть данные
candleChart(SIM6)
# Расчет доходностей встроенной функцией библиотеки rusquant (унаследована от quantmod)
rr <- OpCl(SIM6)
# Цены закрытия
p <- Cl(SIM6)
# Получение абсолютного значения среднеквадратичного отклонения доходности
sd(rr)*mean(p)
[1] 757.7013
# Аналогично для часовика
getSymbols("SiM6", from=Sys.Date()-30, src="Finam", period="hour")
candleChart(SIM6)
rr <- OpCl(SIM6)
p <- Cl(SIM6)
sd(rr)*mean(p)
[1] 234.9929
#Аналогично для BRK6.
Статья с аггрегатора Quandl Resource Hub.
Quandl взял интервью у старшего менеджера по алгоритмическим стратегиям одного из больших хеджевых фондов. Мы говорили о создании торговых стратегий — от абстрактного представления рынка до конкретного воплощения в стратегию с оригинальной предсказательной способностью.
Можете вы рассказать, как создаются новые торговые стратегии?
Все начинается с гипотезы.Я предполагаю, что может существовать взаимоотношение между двумя инструментами, или появился новый инструмент на рынке, набирающий популярность, или возник необычный макроэкономический фактор, который влияет на микроструктурное поведение цены. Затем я записываю уравнение — или создаю модель, если вам угодно — с целью описания этого взаимоотношения. Обычно это некое уравнение процесса, показывающее изменение переменных во времени, со случайным (статистическим) компонентом.
В основе этой стратегии лежат дуги Коуэна, волны Элиота, углы и циклы Ганна. Каждый из этих авторов смог постичь только часть рыночных закономерностей. Мне удалось совместить их наработки в единую систему рыночного анализа.
В основе стратегии лежит графическая фигура, построенная по дугам Коуэна. Это один из тайных масонских символов (Коуэн является членом масонского ордена). Также этот символ отражает суть многих рыночных процессов.
https://gyazo.com/877a284641a1c2615f4bb0e458e8fbb0
Фигура универсальная и дает сигналы как на шорт, так и в лонг. Изначально, эта фигура для лонга (если нет пробоя вниз).
В нашем случае произошел пробой вниз, что явилось сигналом для входа в шорт на ретесте фигуры. Стоп ставим на тик выше предыдущего фрактала (в нашем случае 7 тиков). Выход из шорта – как только длина импульса будет равна ширине фигуры (здесь использован синтез волн Элиота и углов Ганна). Профит составил 95 пунктов! Соотношение риск–ревард 1к13, что тоже не случайно, т к 13 – это число из ряда Фибоначи.
Начинаю разработку бесплатного майнера паттернов — второй версии. Пока собираюсь с мыслями и готовлю возможную архитектуру. К лету начну работы.
За последние пару лет его скачали больше 10 к. человек. Уважаемые пользователи, пишите, что бы Вы хотели ещё в нём увидеть. В пост, мне на почту, на домашний форум программы. Буду расширять список изменений.
Для всех остальных, небольшой обзор программы. С чего всё начиналось и что есть сегодня.

Stock Pattern Viewer — Уникальная программа для автоматического анализа котировок на предмет формализуемых паттернов и сбора статистики по ним. Data Mining с человеческим лицом.
Программа полезна в качестве станции поиска формаций для системного трейдинга.

Пока весь смартлаб орет о ставках/нефти/рубле/улюкаеве/горепрогнозистах/подливных гуру и тд — я подготовил, как мне кажется, норм постецкий. Вашему вниманию тщательно сцеженная, рассортированная по тематикам мякотка для работы, учебы и отдыха в нашей общей интернет-помойке:
Сайты и приложухи для трейдинга:
finviz.com — это божественно! Бэнчмарк всех фин сайтов по интерфейсу и удобству навигации, множество плюшек отбора акции для домашки, и визуальной подачи инфы. Бесит, что календарь только для амеров и на текущую неделю.
forexpf.ru — 1 год назад этот сайт лежал когда на него ринулась каждая домохозяйка отслеживать курс рубля. Нормальный ресурсоёмкий сайт, чтобы попырому прочекать нефтянку, голду или бакс.
freestockcharts.com — если вдруг упал tradingview.com.