Данное руководство, прежде всего рассчитано для начинающих или тех, кто и слухом не слышал о таком прекрасном языке как R. Из-за своих математических особенностей, этот язык очень удобен для моделирования и анализа различных данных, в частности поведение активов.
На СЛ я часто замечаю, как умные и опытные люди моделируют или вычисляют всё в экселе. Это тоже отличный инструмент, но я думаю им стоит обратить внимание на язык R и попробовать, ничего сложного, как оказалось, там нет. Конечно какие-то базовые навыки программирования всё же потребуются.
Далее я напишу, как бесплатно и легально настроить свой компьютер для запуска среды. Потом приведу пример с подбрасыванием монетки
(
прошу прощения, если такая тема уже была, сделал поиск по сайту, из последних ничего не нашел).
Настройка среды для запуска R
Сразу хочу сказать, что ничего сложного в настройке нет. Нужно скачать пару файлов и последовательно их установить. Никаких особых настроек и сложных выборов, качаем и ставим, всё заработает.
Сначала вам необходимо поставить само ядро для языка R, его можно взять здесь
cran.r-project.org/Там есть версии для всех популярных ОС, но я полагаю здесь большинство использует Windows, тогда переходим на
cran.r-project.org/bin/windows/base/ и кликаем по «Download R 3.5.3 for Windows» (79Мб). Далее устанавливаем этот файл.
Затем нам нужно скачать саму среду разработки на языке R. Их большое множество, платных и бесплатных. Будем использовать самую популярную и бесплатную версию, идём сюда
www.rstudio.com/products/rstudio/download/ и под самой левой опцией FREE, жмем зеленую кнопку Download (около 150Мб). После скачивания, устанавливаем и можно запускать.
Простой пример работы в RStudio
После того как вы открыли R студию, вы увидите открытую консоль слева. Давайте попробуем что-нибудь написать здесь, чтобы подогреть ваш интерес. Введите в консоль rnorm(10) — вы увидите 10 цифр сгенерированных по нормальному распределению. Введите hist(rnorm(100)) — вы увидите гистограмму для 100 цифр сгенерированных по нормальному распределению. Не правда ли удобно? Всего пара команд, одна строка, а у вас уже сгенерированные данные и график. Другие языки для этого требуют гораздо больше времени и умений.
Пример с подбрасыванием монетки
Теперь давайте попробуем подбросить монетку. Скажем мы хотим подбросить монетку N раз, в случае орла мы умножаем результат на 1.01, в случае решки на 0.99. И построим график. Для этого создадим небольшой скрипт. Можно конечно сделать это и в консоли, но для общего развития сделаем скрипт. Выберем File -> New File -> R Script.
В окно скрипта, запишем следующий скрипт (можно скопировать и вставить):
x <- 100 # начальное значение
n <- 100 # количество подбрасываний
a <- array(n) # пустой массив для результата
# lognormal
toss <- function(x)
ifelse(rnorm(1, 0) > 0, x * 1.01, x * 0.99) # если сл. число > 0 то умножаем на 1.01, иначе на 0.99
for (i in 1:n) { # цикл от 1 до n
x <- toss(x) # подбрасываем и записываем результат в x
a[i] <- x # записываем x в массив результатов
}
plot(a, type = «l») # строим график результата
(если плохо копируется, код также есть на гитхабе
https://github.com/dmitryy/finance/blob/master/RScripts/1.%20toss%20the%20coin.r)
Нажмем на кнопку с зеленой стрелочкой Source, это позволяет запустить весь файл. Увидим нечто подобное на графике:
Каждый раз нажимая на кнопку, график будет меняться. Таким образом мы написали небольшую простенькую модель поведения актива, используя до селе нам не известный язык R. Далее попробую написать что-то более сложное и описать, если кому-то будет интересно.
Более подробная документация на русском языке по R
tsamsonov.github.io/r-geo-course/
Также буду благодарен, если подскажите другие источники для обучения, т.к. я сам только начинаю его осваивать.
А тут ещё R какоета
то можно добавить сюда еще и ссылку на R for .NET
https://archive.codeplex.com/?p=rdotnet
Я пару простых примеров запускал. Глубже не копал.
В основном я ориентируюсь на Python.
Но поскольку Microsoft включил поддержку R даже в MSSQL Server https://docs.microsoft.com/ru-ru/sql/advanced-analytics/r/sql-server-r-services?view=sql-server-2017,
то стоит на него обратить более пристальное внимание.
_sg_, у майкрософт Р получится с щупальцами в самых неподходящих местах. Наверное, примерно как они С++ изуродовали...
И опять же: много Вы знаете людей, готовых купить SQL Server? =D
В принципе удобно иметь данные и R — аналитику в одном месте в MSSQL Server.
На сколько качественно сделано сказать ничего не могу.
_sg_, а вообще R — классный для прототипирования статистических алгоритмов.
Но в тот момент, когда надо выходить в продакшен вдруг выясняется, что он на 3 порядка(!) медленнее C#… Уже полгода грущу с этим знанием...
plot(100*cumprod(1+sign(rnorm(100))/100), type = «l»)
В питоне возможно тоже есть среда где графики на лету строятся?
=) Читайте про функцию sample()
С ее помощью можно не только монетку бросить, но и десяток костяшек запульнуть.
Как раз собирался пост наваять для любителей неправильно трактовать ЦПТ.
Если интересно. ;-)
Eugene Logunov, =) уже понял, что Вы эксперт в R. И наверняка умеете его всячески нагибать и раскладывать в удобном и эффективном положении. Да и торговые стратегии могут быть разные.
Но лично я был изрядно разочарован. Все же 3 порядка разницы на сопоставимом коде. Может быть, дело действительно в том, что хранение данных нужно было организовывать в Окружении. Может быть, еще в чем-то. К сожалению, вместо получения искомого результата была получена необходимость дополнительно скакать с бубном вокруг кода и уговаривать его работать чуть пошустрее.
Поэтому чукча сначала сделал в R кластер на snow, потом сделал кластер на C#… =) и тут-то и выяснилось, что никакой кластер, оказывается, не нужен.
https://rextester.com/l/r_online_compiler
https://rextester.com
рассказывается в моих темах