Блог им. hannimed

Подбрасываем монетку с помощью языка R

    • 25 апреля 2019, 22:09
    • |
    • Dmitryy
  • Еще
Данное руководство, прежде всего рассчитано для начинающих или тех, кто и слухом не слышал о таком прекрасном языке как 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 цифр сгенерированных по нормальному распределению. Не правда ли удобно? Всего пара команд, одна строка, а у вас уже сгенерированные данные и график. Другие языки для этого требуют гораздо больше времени и умений.
Подбрасываем монетку с помощью языка R


Пример с подбрасыванием монетки

Теперь давайте попробуем подбросить монетку. Скажем мы хотим подбросить монетку 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. Далее попробую написать что-то более сложное и описать, если кому-то будет интересно.


Более подробная документация на русском языке по R tsamsonov.github.io/r-geo-course/ 

Также буду благодарен, если подскажите другие источники для обучения, т.к. я сам только начинаю его осваивать.
5.1К | ★37
20 комментариев
Тьфу, блин… Я монетку при помощи языка подбрасываю до небес
А тут ещё R какоета
avatar
Поскольку на этом сайте обитает много любителей С Диез,
то можно добавить сюда еще и ссылку на R for .NET

https://archive.codeplex.com/?p=rdotnet
avatar
_sg_, он фиговато работает насколько мне известно. Особенно с новыми версиями R. А у Вас получилось раскочегарить rdotnet?
avatar
ch5oh, 
Я пару простых примеров запускал. Глубже не копал.
В основном я ориентируюсь на Python.
Но поскольку Microsoft включил поддержку R даже в MSSQL Server https://docs.microsoft.com/ru-ru/sql/advanced-analytics/r/sql-server-r-services?view=sql-server-2017,
то стоит на него обратить более пристальное внимание.
avatar

_sg_, у майкрософт Р получится с щупальцами в самых неподходящих местах. Наверное, примерно как они С++ изуродовали...

 

И опять же: много Вы знаете людей, готовых купить SQL Server? =D

avatar
ch5oh,
В принципе удобно иметь данные и R — аналитику в одном месте в MSSQL Server.
На сколько качественно сделано сказать ничего не могу.
 
avatar

_sg_, а вообще R — классный для прототипирования статистических алгоритмов.

Но в тот момент, когда надо выходить в продакшен вдруг выясняется, что он на 3 порядка(!) медленнее C#… Уже полгода грущу с этим знанием...

avatar
Достоинство R в том, что все вышеизложенное можно написать просто в одну строчку так;)
plot(100*cumprod(1+sign(rnorm(100))/100), type = «l»)   
avatar
AlexeyTikhonov, очень круто, именно из-за ожидания таких каментов и отважился запилить пост :)
avatar
AlexeyTikhonov, как человек, который виртуально подбрасывал монетки в экселе, вижуал бейсике, паскале, сишарпе, и питоне должен признать, что это строка мне нравится :)
avatar
Почему R а не Python?
avatar
Value, питон сакс. =)
avatar
Value, я и на питон смотрю, но R мне показался интересным именно из-за того, что строит графики на лету и имеет кучу встроенных математических функций. Например, можно зайти на сайт мосбиржи, экспортнуть историю фьюча, импортнуть в РСтудии, и уже строить графики, искать волу, доходности и прочее, без танцев с бубнами, как будто бы в самом экселе работаешь. Но, конечно, приходится по началу много гуглить :)

В питоне возможно тоже есть среда где графики на лету строятся? 
avatar
Dmitryy, справедливости ради стоит отметить, что у питона есть оболочка Jupiter Notebook, где графики выводить ненамного сложнее
avatar

=) Читайте про функцию sample()

С ее помощью можно не только монетку бросить, но и десяток костяшек запульнуть.

 

Как раз собирался пост наваять для любителей неправильно трактовать ЦПТ.

 

Если интересно. ;-)

avatar
ch5oh, супер, буду ждать пост :)
avatar

Eugene Logunov, =) уже понял, что Вы эксперт в R. И наверняка умеете его всячески нагибать и раскладывать в удобном и эффективном положении. Да и торговые стратегии могут быть разные.

 

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

 

Поэтому чукча сначала сделал в R кластер на snow, потом сделал кластер на C#… =) и тут-то и выяснилось, что никакой кластер, оказывается, не нужен.

avatar
онлайн компилятор многих языков

https://rextester.com/l/r_online_compiler
https://rextester.com

рассказывается в моих темах


Читайте на SMART-LAB:
Фото
Макро индикаторы по США подкрепляют кейс дальнейшего роста доллара
Европейские валюты активно сдают позиции после публикации ряда индикаторов по рынку труда, внешней торговле и производственной активности в...
🖥 Софтлайн накопил долги
Разработчик ПО отчитался за 4 квартал и весь прошлый год   Софтлайн (SOFL) ➡️ Инфо и показатели     Результаты за 4 квартал —...
Фото
🔔 Информация о выплате купонного дохода для наших инвесторов
Сегодня, 19 февраля, ООО МФК «ПСБ Финанс» выплатило купонный доход по облигациям ПСБ Фин2P2 (RU000A10E4G8) за купонный период с...
Фото
Россети Ленэнерго. Отчет об исполнении инвестпрограммы за Q4 2025г. Опасения оправдались - обесценение съело прибыль
Компания Россети Ленэнерго опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по...

теги блога Dmitryy

....все тэги



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