Избранное трейдера chuikapridi

по

Мои шаги в сторону машинного обучения на 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. 

Построение модели для парной торговли акциями 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 — временной диапазон

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

Stock Pattern Viewer - начинаю разработку версии 2.0

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

За последние пару лет его скачали больше 10 к. человек. Уважаемые пользователи, пишите, что бы Вы хотели ещё в нём увидеть. В пост, мне на почту, на домашний форум программы. Буду расширять список изменений.

Для всех остальных, небольшой обзор программы. С чего всё начиналось и что есть сегодня.

Stock Pattern Viewer - начинаю разработку версии 2.0


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



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

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

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

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

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

Полезная информация для коротышек-оптимизаторов индикаторов

Друзья,
я последнее время искал граали в подборе правильных индикаторов на разных таймфреймах и инструментах.
Данное занятие меня несколько утомило. И чтобы не фантазировать на тему «а что если скрестить MACD на дневках с Параболиком на 15-ти минутках», я применил приблуду в виде тестера, который перебирает различные комбинации индикаторов, причем по разным таймфреймам.
Нажимаешь перебор и тестер лепит все комбинации заданных индикаторов (т.е. генерит множество систем), а результаты пишет в таблицу.
Сейчас я получил тесты порядка 3000 систем.
Полезная информация для коротышек-оптимизаторов индикаторов

Собственно перехожу к предварительным выводам, которые могут быть полезны:
1. Как не переставляй кубики индюков, грааля в чистом виде нет.
2. Я не увидел большого преимущества, когда система слеплена из индикатора на дневках с индикатором на интрадее
3. Нет системы, которая уверенно бы работала на большом количестве тикеров (какие-то неплохо работают на валюте, но на Ри плохо и наоборот).
4. Ну и крайний вывод, даже лучшие системы не сильно далеко ушли от простой торговли от скользяшек.

...Разбиваясь головой об код

Третья неделя хаотичного боя с освоением программирования. Большое спасибо Тимофей Мартынов за скурпулезное описание пути гуманитария в дебри кодинга. ) Реально ободряет.

Но задался я вопросом, а почему нет до сих пор труда по поводу «Алготрейдинг для начинающих»? То, что есть в сети, мягко говоря не соответствует действительности. Нет книги, которая бы рассматривала примеры не со стоимостью пирожков на количество гостей, а сразу — СРАЗУ — давала бы примеры работы с биржевыми данными. Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу. Нафига мне пирожки с гостями? Или тангенсы с квадратными корнями?

ИМХО, что должно быть в таком учебнике, может кто психанет да напишет. )))

1. Языки, на которых программируют алгоритмы. Кто, когда, где, зачем, почему. Короткая вводная. Мол, R для дата майнинга, что такое C# и C++, причины их доминирования, новые языки в алготрейдинге — python/ruby, специфические языки, которые есть в платформах типа Метатрейдер или ТОС. В общем, краткая вводная.

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

Хороший курс макроэкономики от MIT

Неплохой открытый курс от MIT. Курс с 2013 года и лежит на ютубе. Все четко и понятно в курсе, единственное нет аннотаций на русском языке.



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

Программирование, боль, отчаяние. И мы - Смарт Лаб.

Недавние посты о программировании, а также собственное увлечение сабжем (что презабавно, — популярным у трейдеров подвидом C#), сподвигли творческую мысль на рождение; вследствие зачатия весьма порочного, к слову.

В коллективе — сила, в обмене идеям — сила, в общении - сила. То, что не подвластной одному — легко решается в коллективе. В большинство великих свершений человечество вляпалось благодаря коллективам.

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

Игры разума с ММ - 5. Симулятор ММ и "оптимальный" риск в трейдинге.

Игры разума с ММ - 5. Симулятор ММ и "оптимальный" риск в трейдинге.

Заключительная публикация цикла.
Первое, что мы делаем, это тестируем торговую стратегию с фиксированным объемом сделки, т.е. проверяем работоспособность алгоритма в чистом виде.
Объем сделки выбирается таким, чтобы исключить крах, т.е. стратегия должна оставаться в рынке на протяжении всего интервала тестирования.
Если тест оказался убыточным, дальнейшее исследование бессмысленно.

На рисунке 1 приведены результаты теста.

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

....все тэги
UPDONW
Новый дизайн