SciFi

Читают

User-icon
222

Записи

221

Мои шаги в сторону машинного обучения на R и немного про Si, Brent

    • 15 апреля 2016, 21:14
    • |
    • SciFi
  • Еще

Копался в статьях по алготрейдингу, решил присмотреться в сторону машинного обучения. Но это в моем случае не про какой-то искусственный интеллект с нейросетями, в нейросети пока не хочу лезть, слишком сложно. Для начала хочу использовать простые алгоритмы для классификации и оценки хороших точек входа на основе обучения модели на истории.

Я исходил из того, как сам разрабатываю обычно торговую систему: ищу хорошие точки входа на истории и классифицирую их. Но так как человеческие возможности ограничены, использую только 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. Также делюсь элементарным кодом. 

Я взял данные за последние 15 дней для BRK6 и 30 дней для SiM6. Затем посчитал доходности и их среднеквадратичное отклонение. Затем отклонение умножил на среднюю цену. 

Получилось:

Brent
за час: 0.25$
за день: 1.15$

Si
за час: 235 руб.
за день: 757 руб. 

Код на 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. 

Главный плюс системного трейдинга и алготрейдинга

    • 13 апреля 2016, 19:04
    • |
    • SciFi
  • Еще
Я уже писал о том, что при трейдинге имеет значение не только % прибыли, но и затраченное время и внимание. Внимание — это тоже сущность, которая имеется у каждого человека в ограниченном количестве. И нельзя им раскидываться. Пассивный доход не равен активному, даже если они равны по модулю. Так как при пассивном доходе тратится меньше времени и внимания.

На мой взгляд, главное преимущество системного трейдинга в том, что высвобождается огромное количество времени и внимания. Мы не думаем, о том, открывать ли нам сделку, на какой объем ее открывать, какой ставить стоп и как управлять позицией. Мы просто исполняем то, о чем хорошо подумали до этого. В таком случае мы экономим время своего мышления и свое внимание, которое можно направить на что-то другое. В случае алготрейдинга мы не тратим время даже на исполнение сделок. 

На что высвобождается время. Например, на:
1. читаем новости

( Читать дальше )

Одна поездка в такси

    • 07 апреля 2016, 23:14
    • |
    • SciFi
  • Еще
Сегодня я по ошибке сел в чужую машину. Просто подошел, открыл дверь и сел рядом с водителем. Чел, водитель, поворачивается ко мне и говорит «Эээй!». Я такой — «А вы не таксист». Он:«А что, похож?». Я искал такси, Яндекс указало, что мне нужен белый седан с номерами заканчивающими ся на 777. Я не обратил внимания на сам номер, а только на код региона. Машина располагалась посреди улицы и пиликала. Я подумал, что это мое такси. И ошибся. Хорошо, что он меня не пристрелил на месте за покушение на его частную собственность! 

У меня нет автомобиля, но это не означает, что я не езжу на них. Суслика не видно, а он есть. 

Чем ехать на маршрутке, лучше взять такси и поторговать через iQUIK. Взял 2 цента 60 лотами Brent. См. сделку справа графика. Этого как раз хватает на такси и хорошие чаевые таксисту. Ну я и взял. 

Одна поездка в такси

См. сделку справа. Просто встал на небольшом откате по локальному тренду, когда началась какая-то активность, и все. 

Прибыль = 0.02 * 600 * 68 — 120 = 700 р с учетом комиссии. Таксисту отдал 400, в которых 130 р чаевых.

Опыт после проведения собеседования

    • 06 апреля 2016, 12:41
    • |
    • SciFi
  • Еще
Сегодня провел первое в своей жизни собеседование. Когда оказываешься по ту сторону, многое понимаешь. Особенно в плане оценки стоимости собственных навыков и опыта. Хочу этим поделиться. Может быть, кому-то поможет найти работу трейдером. К трейдингу имеет вот такое отношение.

Собеседование было на должность ведущего разработчика в IT компанию. Не суть. Я выступал в качестве того самого негодяя, который проверяет ваши технические навыки и знания, задает каверзные вопросы и унижает ваше достоинство. Шучу. Я составил список из 18 достаточно простых вопросов, чтобы дать беспристрастную оценку каждому кандидату. Ковыряться в деталях планировал только в том случае, если кандидат будет все знать на отлично, чтобы отличить одного эксперта от другого. Но не пришлось.

Пришёл новичок. Как человек он неплохой. Но его не взяли и скорее всего не возьмут, так как не соответствуют его ожидания по зарплате его навыкам. 

И я понял — в большинстве случаев вас не берут именно по этой причине. Если бы он попросил меньше для Junior, то, возможно, его взяли бы. Но он четко поставил нижнюю границу, которая заведомо завышена для его уровня. 

( Читать дальше )

Как воруют деньги на бирже

    • 06 апреля 2016, 01:38
    • |
    • SciFi
  • Еще
Фронтраннинг — когда HFT роботы видят поток ордеров и исполняют сделки чуть раньше чем ты. Они могут стоять даже у брокера. По идее это обычное воровство, за которое следовало бы сажать в тюрьму.

Как воруют деньги на бирже



О соотношении стопа к профиту

    • 05 апреля 2016, 19:17
    • |
    • SciFi
  • Еще
Прочитал такую интересную статью на английском о том, как ставить стопы и тейки. Вообще, в последнее время меня заботит вопрос — как взять максимум от движения. 

Еще раз убедился в том, что я правильно сомневался в мифе о том, что тейк-профит всегда должен быть больше стоп-лосса в 2-3 и более раз.

Рассматривается такой пример. Пусть есть лотерея, которая стоит 1$, а выигрыш в ней 1000 000$. Казалось бы, соотношение 1: 1000 000 риск к доходности — это фантастика для трейдера и выгодная сделка. Но это не так. Дело в том, что если 2 миллиона человек купят такую лотерею, то мат. ожидание выигрыша составит: (1 / 2000 000) * 1000 000 — 1 = 0,5 — 1 = — 0,5. То есть покупая за 1$ лотерею, нам в долгосрочной перспективе будет возвращаться только 0,5$.

То же самое и в трейдинге. Ваш тейк профит может быть далеко от стопа, но какова вероятность того, что этот тейк профит будет достигнут до того, как снимут ваш стоп? Особенно, если ваш стоп меньше волатильности на этом таймфрейме? Я думаю, вероятность будет сильно меньше 1. А вот вероятность снятия стопа, который меньше волатильности — около 1.

То есть этот немаловажный аспект тоже надо учитывать. Не все это знают, надеюсь, будет полезно.

Основная психологическая ловушка в трейдинге

    • 31 марта 2016, 11:14
    • |
    • SciFi
  • Еще
На мой взгляд самая главная психологическая ловушка в трейдинге следующая. 

После нескольких убыточных сделок подряд хочется закрыть хотя бы одну сделку в плюс. После получения большого минуса и выхода из него рад закрыть даже маленький плюс к счету. 

Вижу это по себе и своему знакомому, который торгует только 2-ой месяц на бирже тогда как я 2-ой год. У нас одинаковая поза. Он открылся по моему сигналу. Он знает, почему я открылся именно по этой цене и именно в это время. Он знает все новости, что и я — я ему все рассказал. Но я держу позицию, а он закрылся. Потому что прежде чем зайти в эту сделку, мы получили несколько убыточных сделок подряд. Я спросил — почему. Он ответил — вчера был лось, хочется хоть сегодня в плюс закрыться. 

Вся разница между ним и мной только в способности верить в систему и не бояться терять

Вспомните Майкла Бьюрри и других героев «Игры на понижение». Они держали до посинения. Майкл Бьюрри ушел со своим хедж-фондом в минус 20% и 1-2 года терпел этот минус! И все равно после выхода в плюс, он не закрылся в нуле, а дождался +5000%. А те ребята, которые купили дефолтные свопы по совету банковского сотрудника так вообще закрылись последними. 

Основная психологическая ловушка в трейдинге

Он случаем не на смартлабе сидит? ) 


Построение модели для парной торговли акциями Google и Apple на R

    • 28 марта 2016, 18:51
    • |
    • SciFi
  • Еще

Посчитал на R спред между акциями Google и Apple с учётом соотношения (hedge ratio). И нанёс среднюю линию с двумя среднеквадратичными отклонениями сверху и снизу. Красота. 

Построение модели для парной торговли акциями Google и Apple на R

Делается на R это очень просто, код ниже. 

require(quantmod)
> startT <- «2015-01-01»
> endT <- «2016-01-01»
> rangeT <- paste(startT, "::", endT, sep="")
> symbols <- c(«AAPL», «GOOG»)
> getSymbols(symbols)
[1] «AAPL» «GOOG»
> tGOOG <- GOOG[,6][rangeT]
> pdtGOOG <- diff(tGOOG)[-1]
> tAAPL <- AAPL[,6][rangeT]
> pdtAAPL <- diff(tAAPL)[-1]
> model <- lm(pdtAAPL ~ pdtGOOG)
> hr <- as.numeric(model$coefficients[1])
> spreadT <- tAAPL — hr * tGOOG
> meanT <- as.numeric(mean(spreadT, na.rm=TRUE))
> sdT <- as.numeric(sd(spreadT, na.rm=TRUE))
> par(mfrow = c(2,1))
> hist(spreadT, col=«blue», breaks = 100, main = «Spread Histogram (AAPL vs GOOG)»)
> plot(spreadT, main=«AAPL vs GOOG spread (in-sample period)»)
> abline(h = meanT, col = «red», lwd = 2)
> abline(h = meanT + 1 * sdT, col = «blue», lwd = 2)
> abline(h = meanT — 1 * sdT, col = «blue», lwd = 2)

Здесь: 

meanT — среднее
sdT — среднекв. отклонение
spreadT — спред
par — график с двумя секциями
plot — график
hist — гистограмма
abline — линия поверх графика
model — линейная зависимость модель, МНК
quantmod — библиотека для получения исторических данных
rangeT — временной диапазон

Хотите попросить сделать количественный анализ чего-нибудь? Пишите в личку или в комментариях.

Гистограммы доходностей разных активов

    • 25 марта 2016, 19:15
    • |
    • SciFi
  • Еще
Ранее выложил гистограмму для нефти. Выкладываю остальные гистограммы по просьбам читавших тот пост. Таймфрейм 5 мин. ES не нашел на Финаме и не торгую их. Сделал для S&P и NASDAQ. Ну и для остального. Использую свойство логарифмов что log(1+x) ~ x при малых x, которое позволяет считать доходность простым вычитанием логарифмов цен. 

Гистограммы доходностей разных активов

( Читать дальше )

теги блога SciFi

....все тэги



UPDONW
Новый дизайн