Избранное трейдера Ostap Bander
Предыдущий обзор от 04.04.16 дал нам возможность защитить прибыль по длинным позициям, но направление среднесрочных сделок вновь под вопросом. В недельном и дневном масштабах времени сложилась интересная картина — разнонаправленные сигналы в разных масштабах времени. Но и такую ситуацию тоже можно торговать — главное, вовремя, в нужном тамфрейме фиксировать прибыль. Рассмотрим подробнее.
Month. Месяц март закрылся скорее в пользу длинных позиций, и в этом масштабе времени какие-либо изменения можно будет увидеть лишь по окончании апреля. А они могут быть, если недельная попытка снижения, о которой расскажем ниже, продолжится и далее.
Week. В недельном масштабе мы видим попытку разворота вниз: позапрошлая неделя закрыта доджем, а прошлая — разворотной свечой, подтверждающей снижение. Недельный стохастик пробует развернуться из области перекупленности. В этом масштабе времени возможно продолжение. Но снижение остановилось на сильной поддержке недельного таймфрейма. Поэтому короткие позиции можно рассматривать лишь по окончании дневного укрепления, которое сейчас имеет место.
Копался в статьях по алготрейдингу, решил присмотреться в сторону машинного обучения. Но это в моем случае не про какой-то искусственный интеллект с нейросетями, в нейросети пока не хочу лезть, слишком сложно. Для начала хочу использовать простые алгоритмы для классификации и оценки хороших точек входа на основе обучения модели на истории.
Я исходил из того, как сам разрабатываю обычно торговую систему: ищу хорошие точки входа на истории и классифицирую их. Но так как человеческие возможности ограничены, использую только 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.

Пока не пробили барьер из сильных оферов в евро выше 1.1440 и оттолкнулись. Не хватило всё-таки топлива для взятия препятствия, но внизу находится несколько баз для дозаправки. Не скажу, что биды сильные, большинство покупателей евро сгорело в в битве за рубеж. Нет, не так. Позиции, открытые участниками рынка форекс по главной паре пока не закрыты, многие входили в рынок с дальним прицелом на восходящий тренд, так что война не окончена, она никогда не прекращалась. Напомню собственные слова о том, что как раз на этих уровнях идёт настоящая битва за слом тренда. Многие продолжают верить в паритет евро и доллара, а кто-то готов лечь костьми за новые вершины. Правильно было подмечено в комментариях, что после 1.15 практически открыт путь на 1.25, но и на этом пути множество подводных и надводных камней.Всех приветствую.
S&P500 выполнил пробил нижнюю границу боковика. Пока что боковик продолжается. Сегодня жду возврата в боковик и, после закрепления внутри, жду движения к верхней границе боковика.
РТС пока что в середине боковика. Да, он попытался пойти по стрелочке вчерашнего обзора, но пока что признака выхода вниз нет. Я все же жду движения к нижней границе, но возможен еще один рывок к верхней границе.