Избранное трейдера Роман Давыдов

по

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

R. Считаем корреляцию.

Вчера на СмартЛабе  был размещен пост Как построить корреляционную матрицу (для парной торговли) в Excel, собравший аж 150 "+".
Решил тоже попрактиковаться и написать под эту задачу код в R. Важным преимуществом R является наличие пакета rusquant, который позволяет автоматически получать котировки с Финам в любом таймфрейме (в т.ч. в тиках), что существенно экономит время по сравнению с ручной обработкой в Excel.

Код на R приведен ниже:

R. Считаем корреляцию.

  • Файл c кодом можно скачать тут.
  • Файл с названиями тикеров: для примера 1 тут, для примера 2 тутЭти файлы используется для ввода тикеров в программу, т.к. прописывать тикеры вручную непосредственно в коде при их большом количестве не удобно. 
  • Время загрузки данных с Финам по 79 тикерам составило 84 секунды, т.е. примерно по 1 сек. на тикер. А сколько бы ушло на ручную загрузку для Excel сложно представать.

 

Результаты:



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

Как получить налоговый вычет по ИИС: пошаговая инструкция

В этом году россияне, открывшие индивидуальный инвестиционный счет, впервые могут оформить налоговый вычет по взносам на ИИС за предыдущий календарный год. Для этого владельцы счетов должны с 1 января по 30 апреля подать необходимые документы в налоговую инспекцию. В помощь частным инвесторам, которые пожелают вернуть заветные 13% по льготе в этом году, Financial One подготовил краткую инструкцию по оформлению налогового вычета.

Прежде всего, напомним, что у владельца ИИС есть два способа воспользоваться налоговой льготой, предусмотренной законодательством. Первый подразумевает, что частный инвестор оформит налоговый вычет по окончании календарного года, в который он сделал взнос на свой инвестиционный счет. Доходность операций по ИИС при этом не учитывается. То есть если в декабре 2015 года россиянин открыл ИИС и внес на него 400 тысяч рублей, то уже в январе текущего года он имеет право подать соответствующие документы в налоговую инспекцию и вернуть себе 13% от этой суммы – 52 тысячи рублей.



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

Язык R - стандарт для обработки данных

Недавно столкнулся с таким феноменом — про язык программирования R слышали многие. Но знают что это такое очень мало людей.

Язык R - стандарт для обработки данных

Поскольку являюсь носителем этого языка и заинтересован в его популяризации, попытаюсь немного раскрыть тему в этом посте. Будет интересно!

План простой:

1) Что такое язык R

2) Популярность в России

Что такое язык R

R (вики) — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU.

По нашему: Язык идеально подходящий для поиска рыночных закономерностей. Бесплатный, быстрый и свободный.

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



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

Как стать миллионером инвестируя в Сбербанк.

Открою инвестиционный грааль :) Покупайте Сбер когда цена акции падает ниже 80% от собственного капитала на 1 акцию.
Почему именно Сбер? Это качественная компания которую можно покупать на десятилетия.

Как стать миллионером инвестируя в Сбербанк.

Это происходит редко, но приносит хорошую доходность.
янв-март 2008 цена покупки ниже 23,6 руб.
март 2014 цена покупки ниже 69,7 руб.
первое полугодие 2015 цена покупки ниже 74,8 руб.

А все остальной время откладывайте деньги на депозите или инвестируйте в ОФЗ.

Тест простых опционных конструкций. Стратегия 2

Здравствуйте дорогие друзья! 

Разберем стратегию 2.
Краткое описание всех систем с пояснениями по тесту http://smart-lab.ru/blog/269275.php
Тест тистемы 1 http://smart-lab.ru/blog/272107.php (тамже описание систем управления капиталлом (СУК))

Условия входа:
Покупка стратегии за 30 дней до экспирации.
+1 шт. CALL страйк 0
+1 шт. PUT страйк 0
-1 шт. CALL страйк +4
-1 шт. PUT страйк -4

Условия выхода:
— если цена фьючерса ушла более чем на 8 % от цены фьючерса на момент создания стратегии в любую сторону.
— или за 1 день до экспирации.

Профиль:
Тест простых опционных конструкций. Стратегия 2

Тест без применения СУК:

Тест простых опционных конструкций. Стратегия 2



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

Тест простых опционных конструкций. Стратегия 1

Здравствуйте дорогие друзья!

Предвосхищая дурацкие вопросы и упреки, говорю, что цель данных исследований (этой и последующих статей из этой серии) не предоставить вам грааль, а провести исследование наиболее интересных мне стратегий с целью:
— отбраковать явно негодные подходы к торговле опционами в конкретных стратегиях.
— создать базу, фундамент, для дальнейшего улучшения подходов применимо к стратегиям. Это добавление методов роллирования и введения фильтров на вход и выход из позиции.

В этой статье я более подробно остановлюсь на тесте стратегии 1.
Номера стратегий, нюансы и параметры тестов указаны в предыдущей статье, тут.

Чтобы определить оптимальные параметры, данной стратегии, протестируем его без системы управления капиталлом, тоесть при постоянном количестве опционов.
Почему так? Просто хочется, чтобы система показывала доход в чистом виде, без способов вытягивания баланса в плюс с помощью системы управления капиталлом.



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

Линейная регрессия с использованием фильтра Калмана

    • 23 апреля 2015, 10:12
    • |
    • uralpro
  • Еще

price_corr

Линейная регрессия часто используется для вычисления пропорции хеджирования в парном трейдинге. В идеальной ситуации коэффициенты этой регрессии — наклон линии регрессии и свободный член (пересечение) остаются всегда постоянными. Однако в реальности все, конечно, не так радужно, и значения этих параметров постоянно меняются во времени. Как правильно вычислять коэффициенты регрессии, чтобы избежать подгонки к текущей ситуации, рассматривается в статье "Online Linear Regression using a Kalman Filter". Для этой цели в данной публикации используется фильтр Калмана. 

Для тестирования берутся исторические цены закрытия двух биржевых фондов ETF — австралийского EWA и канадского EWC с 2010 по 2014 год. Динамика цен этих фондов показывает взаимосвязь, что продемонстрировано на  диаграмме рассеивания в заглавии поста. Однако по этому же графику видно, что эту взаимосвязь невозможно описать с помощью линейной регрессии с постоянными коэффициентами. 



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

Бэнкинг по-русски: Еще один региональный банк катится в пропасть - 16 ярдов вкладов!!!

Вот как-то так...

тезисы:

— необеспеченный залогами кредитный портфель юрикам

— 80% — фондирования вклады физлиц

— «агрегированный транзит» (предписание местного ТУ)

— ограничения на платежи...


Бэнкинг по-русски: Еще один региональный банк катится в пропасть - 16 ярдов вкладов!!!
Бэнкинг по-русски: Еще один региональный банк катится в пропасть - 16 ярдов вкладов!!!


И доначислили почти 5 ярдов РВПС… +

ИНФОРМАЦИЯ ОБ УЧАСТНИКАХ СИСТЕМЫ БЭСП

Электронное сообщение № 1020962 от 06.04.2015
Идентификатор составителя: 4583001999

Вид справочника: по завершению предварительного сеанса

--------------------------------------------------------------------------------------------------------
Вид ограничения участия: полное
Дата установки ограничения участия: 03.04.2015
Разрешение проведения платежей на основании ЭПС-получателя: разрешения нет
Наименование клиента: ЗАО «ИПОТЕК БАНК» 

----
Вид ограничения участия: полное
Дата установки ограничения участия: 03.04.2015
Разрешение проведения платежей на основании ЭПС-получателя: разрешение есть
Наименование клиента: ФКБ «ТРАНСНАЦИОНАЛЬНЫЙ БАНК» (ООО)«ВОЛГОГРАД»
---
Вид ограничения участия: полное
Дата установки ограничения участия: 03.04.2015

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

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