Блог им. ilyaalex

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

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

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

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

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

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

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

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

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

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

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

Это САМЫЙ популярный язык программирования алготрейдеров на западе. Это передовая того что сейчас доступно в области машинного обучения и статистики.
Язык R - стандарт для обработки данных

Для того чтобы писать программы на R, достаточно скачать R-Studio и всё

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

Некоторое время назад, в рамках популяризации языка, записал мини-курс «R для каждого». Бесплатный. Посмотрите как просто всё это работает и как быстро на нём писать скрипты. Это просто великолепно!

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

Оставляет желать лучшего.

Если на западе 90% всех исследований проводиться с помощью этого языка, то в России редкая неделя проходит на СмартЛабе, в которой можно найти хоть одно упоминание о нём. Т.е. число людей знающих R — критически мало.

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

Важно лишь то, что популярность этого языка в России и СНГ неуклонно растёт.

Российские пользователи устали от неработающих АПИ и дорогих торговых систем. Бесплатный язык R, в контексте трейденга, очень скоро займёт достойное место в их инструментарии. Присоединяйся!

На этом сегодня всё. Надеюсь было интересно.

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

Тестируйте Ваши торговые идеи при помощи лучшего для этого инструмента!

Ссылки:

1) Википедия про R

2) Мой бесплатный мини-курс по R

3) Прекрасная возможность выучить его за два месяца




★70
81 комментарий
саму статистику ведь все равно надо знать?
avatar
Ru-Ticker.com, да, основы статистики и теории вероятности. Все это будет в рамках обучающего курса. 
avatar
love_to_trade, На фига нужен этот курс? Лично мне для исследований рынка до сих пор WLD4 хватает за глаза.
Ru-Ticker.com, не обязательно,
если тестировать какие-нибудь простые стратегии (не статистические), типа купить когда объем болльше такого то, а ма такая-то, то нет необходимости.
avatar
То есть вы хотите сказать, что на нем СУЩЕСТВЕННО легче написать бектестер стратегии с нуля чем скажем на Delphi или C# ?
А что насчет гибкости? обычно ведь когда есть заточенность подо что-то определенное, то гибкость страдает.
Бабёр-Енот, Честно говоря на Дельфи не программировал, поэтому сложно сказать. С нуля писать не придется, в R есть библиотеки (пакеты), который облегчают данную задачу. 
Сравнивать C# и R сложно, R заточен под стат обработку и визуализацию, это его конек. 
avatar
Бабёр-Енот, сам только вчера до R добрался. он больше подходит для тестов стратегии на истории. очень много финансовых формул которых тебе не нужно кодить, дал данные на вход одной строчкой отфильтровал другой и всё. реально быстро получаешь результат. опять же графики строит на раз. в общем сделал вывод интересно, быстро, но синтаксис ужасный, точнее необычный очень сильно отличается от классических языков, попроще конечно чем асемблер от ++ но всё равно, придётся мозг напрягать.
p.s.: вот как после этого не поверишь в теорию заговоров :-)
avatar
Бабёр-Енот, да, бектестеры на нем писать намного проще относительно ЯВУ
avatar
Тормозной только, если понадобится отходить от векторных вычислений
avatar
А вы до R программировали? Если не секрет, сколько лет?
avatar
Андрей К, Андрей не секрет, C#, C++, 3 года
avatar
love_to_trade, я правильно понял. Что с вашим опытом на R ушло несколько месяцев? Я спрашиваю с прицеливанием на себя.

Много вакансий в серьезных структурах стало требовать R
avatar
Андрей К, я не знаю какой у вас опыт в области программирования, в своем курсе мы даем основы программирования и тестирования торговых систем в среде R. 
Насчет вакансий, я особого спроса не заметил. У нас пока все только начинается.
avatar
love_to_trade, Примерно каждая четвертая среди разработчиков алгоритмов.
avatar
love_to_trade, те после 3-х лет уже можно называться old school algo. Ну ок.  ) А ценник на курсы 59р это не в рублях же да?
avatar
вот ещё по R:
1)http://eclass.cc/courses?search=R+progra&category=&certificate=&language=&price=&provider=&fmt=
2)http://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-r-data-science/
3)http://theasder.github.io/learning/2015/04/13/step-by-step-guide-for-learning-data-science-using-r.html
4)https://www.rstudio.com/resources/training/online-learning/
5)https://www.datacamp.com/
6)http://r-analytics.blogspot.co.uk/
7)http://www.skilledup.com/articles/5-free-courses-learning-r-programming
8)http://tryr.codeschool.com/
9)http://rforfinance.ru/

avatar
zip3n, еще посты на хабре, в хабе R
habrahabr.ru/hub/R/
avatar
avatar
Для целей трейдинга, в большинстве случаев, достаточно возможностей питона с его стат. библиотеками, у R порог входа выше, для чистого аналитика данных маст хэв, конечно, но для трейдера с точки зрения время/выхлоп — неочевидный выбор.
avatar
owner, 
для чистого аналитика данных маст хэв, конечно
А почему? Посмотрел пример на википедии, ничего особенного не увидел. Там просматривается заточенность на форматирование текста, на табличное представление. Но это для любой среды тривиальная задача. В целом — не впечатлило. Не понимаю, какие там преимущества в плане аналитики.
avatar
sortarray sortarray, дело в первую очередь в богатой экосистеме R с большим кол-вом библиотек для стат.анализа (там и машинное обучение, датамайнинг,...) — не нужно писать самому, плюс, поскольку это топ язык при работе с данными, вокруг него сформировалось обширное коммьюнити и всегда можно обратиться за помощью.
avatar
owner, не считаю что у R порог выше, чем у python, наоборот.
avatar
а сколько оно оперативки жрет при тестировании/анализе?  
Например на mt4 можно на 3-х выделенных под процесс гигах прогнать бектест на минутках за последние 15 лет...
А вот в tslab может и сам, от нечего делать 3 гига спокойно отожрать… а уж сколько он отожрет при тестированиичего-то вычислительно-ёмкого на минутках за несколько лет мне даже думать не хочется.

как в R c этим обстоят дела?
Бабёр-Енот, все зависит от того сколько бумаг прогоняем... 
avatar
Бабёр-Енот, все расчеты в памяти,
какой у вас объем данных, минимум такой и будет в памяти
прикинул что ваш пример это где-то 200-300 метров, ну вот минимум столько отъест, если еще преобразования будут, то еще а увеличится. Для 99% задач 1 ГБ на обычном компе достаточно.
Если пользоваться экзотикой (caret например), то там надо 2-4 (для выделения памяти)
avatar
R на Западе, конечно, — это стандарт :) в РФ как-то мало кто про него слышал.
avatar
приветствую
у меня прикладная задача
1) искать базы (3-5 свечей ) по 35 инструментам  ММВБ сразу и выводить их в таблицу
2) рисовать базы на графиках
все это надо в моменте делать во время торговли
3) как к нему подключить котировки/датафид?
4) как из него торговать?
а то реально начал под квик что-то делать изучать — так там чтобы линию на графике нанести горизонтальную от свечи до свечи (базу визуализировать ) — еп-ся можно
вот например ответ на мой вопрос - https://forum.quik.ru/forum10/topic1253/
forum.quik.ru/forum10/topic118/

 или тоже танцы с бубнами
кстати 
поиск этого и вывод в таблицу решается в 25 строк атф финам но жутко тормозит
а в thinkscript тоже строчек 15
а здесь как?
avatar
arn11555,
1. брать инструменты можно из разных мест
а. с сайта mfd
б. с сайта finam
в. из базы в которую до этого они будут добавлены каким-то способом
г. из текстового файла, который можно формировать например из quik
все эти способы реализуются из R

2. непосредственно онлайн можно это делать в вариантах в, г,
но это не очень удобно для него, так как основное это офлайн обработка или с небольшим лагом, но не полностью онлайн

3. см. п.1

4. гипотеттически можно сделать и робота, но это не очень верно
avatar
R крут. Но python + pandas + numpy +… Ещё круче
avatar
asteroid, ваще пох какой язык. до того места где они начинают различаться в трейдинге в 99% случаев не доходит.
avatar
Для того чтобы писать программы на R, достаточно скачать R-Studio и всё

А чтобы программировать на C# нужно просто установить вижл студию. лол.
avatar
А про машинное обучение — это откуда такая инфа?
avatar
ну курсере есть хорошие курсы по  R, for free. правда про трейдинг не встречал.
avatar
С матлабом мог ли бы написать сравнение?
avatar

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

Программирование — это особая область решения задач, где требуется определенный склад ума! Но сейчас, к сожалению, многие реализации языков программирования идут по схеме упрощения: так, чтобы «даже школьник смог разобраться». Отсюда и появляются многочисленные фреймворки и огромное количество дилетантов, не понимающих элементарных принципов построения алгоритмов! Что уж говорить про ООП!

Не имею ничего личного против «R» и его создателей. Я против такого количества языков программирования в принципе. Почему бы не написать библиотеку для того же C# или С++ (на asm [шутка]), как вариант? Зачем создавать отдельный язык? Выпендрежники...

P.S.: Негодующий программер с 15-летним стажем. :-(

avatar
Shadow, я так понял это не язык, а нечто вроде маткада или mathematica
avatar
Ru-Ticker.com, нет, это полноценный язык, полный
avatar
AlexeyT, ок, я имел в виду это по крайней мере не язык общего назначения, в любом случае, что штука, которая не работает без внешней среды.
  Или на R пишутся библиотеки и модули для коммерческих приложений?
avatar
Ru-Ticker.com, да, специализированный, но локально или в инете может работать без внешней среды (через свой web-сервер)
для таких же как он (коммерческих приложений — MS SQL, Azure, MS BI, и прочих стат. приложений) есть интеграция с его модулями, функциями.
Ну а так наоборот, для R пишут библиотеки на C (фортране), которыми уже оч. удобно пользоваться в R
avatar
Shadow, в R большая часть высокопроизводительных функций написана на C, да и самому можно их написать, а так в нем намного удобнее.
avatar
Shadow, собственно, хрен редьки не слаще, изучать библиотеки тоже придется. А язык не всгда хорошо подходит, универсальных языков нет. На самом деле, решением этого вопроса мог бы быть такой подход: есть среда, которая предоставляет минимальный АPI — сотню вторую определений, а прогер пишет маленький DSL под задачу. Это было бы идеально, тут выкидывается прослойка необходимости учить язык. Но ясно, что  не взлетит в современных условиях.
avatar
Shadow,
 
Да есть хорошая библиотека: alglib. Немного знаний в теории вероятностей и с ее помощью все, что хочешь можно запрограммировать. Если конечно миллисекунды не важны.
avatar
Shadow, все хотят свой лунапарк, с блэкджэком и шлюхами)
avatar
а как в R с бд, архивами котировок? Данные нужно самому собирать или есть встроенный сервис по закачке?
avatar
Максим Дмитриевский, с бд отлично,
ко всем есть коннекторы,
также есть коннекторы к основным сервисам,
у нас mfd, и finam, а по миру и quandl, и yahoo и все такое
avatar
Максим Дмитриевский, есть пакет для закачки и анализа котировок - http://www.quantmod.com/
avatar
_landy, да, его мы как раз и будем проходить в нашем курсе.
avatar
scala + mlib 
на spot инстансах амазона
меньше чем за бакс прогнать ночью весь сток маркет (интрадэй)
avatar

Если на западе 90% всех исследований проводиться с помощью этого языка

Российские пользователи устали от неработающих АПИ и дорогих торговых систем.

Да ладно… )))

R конечно не для роботов совсем. Для анализа да. Коннектор к плазе на R не написать ;)
avatar
Изя Квикович, да нет, написать можно, но нерационально
avatar
В первую очередь меня интересовал вопрос — как компилируется исходный код на языке «R». Полез в инет, но быстрый поиск ответа не выдал. Зато нашел пару интересных моментов:

1) «R — … в тоже время это свободная программная среда с открытым исходным кодом ...».
Есть отличная бесплатная кроссплатформенная IDE «Eclipse» (почему-то про нее забыли), но надо создать еще одну, свою! :))

2) «R возник как свободный аналог среды S-PLUS, которая в свою очередь является коммерческой реализацией языка расчётов S.»
Вот с этого и нужно начинать. Почему-то вспоминается Microsoft Office и его бесплатный аналог LibreOffice (или OpenOffice).

Ситуация: имеется качественный, но дорогой коммерческий продукт с хорошей поддержкой. Но есть и другие аналоги, со своими особенностями (косяками и прочими «артефактами»), устанавливаемые на свой страх и риск, не имеющие полноценной поддержки на русском языке, но полностью бесплатные! :))

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

R-знатоки, поправьте меня, пожалуйста. :)
avatar
Shadow, он не компилируется, он интерпретируемый,
но он может интерпретироваться и как веб-сервис (как передача в строке, так и полноценный графический)
есть R бесплатный с огромным комьюнити (с вопросами ответами и документацией) и большим числом пакетов, которые решают многое число задач, это более чем достаточно.
и есть R enterpise (есть и бесплатная версия и платная), которую купил год назад Microsoft (и активно интегрирует R в продукты — MS SQL, Azure, BI), в ней большая заточенность на высокопроизводительные вычисления, но по факту, все тоже самое, те же пакеты можно использовать.
А так да, это среда для своих задач (обработка данных, стат. модели, машинное обучение, визуализация)
avatar
AlexeyT, Ок, благодарю за это пояснение. Ну тогда для меня открылся еще один минус: допустим, придумал я некий алгоритм, который своими «инновационными» расчетами экономит массу времени другим людям (аналитикам) и реализовал его через систему «R». В случае с компиляцией в бинарный файл, я, как правообладатель, был бы немного спокоен за свой продукт, ведь его можно продать и заработать! А когда код хранится в виде открытого скрипта — то это мягко говоря, небезопасно. Могут украсть код, переписать и выдать за свой. :( Хотя, проблема авторских прав сейчас мало кого волнует наверное…
avatar
Shadow, а вы можете сделать веб-сервис на R (см. мои посты про анализ ЛЧИ), которым все будут пользоваться, а исходников не видно
avatar
Shadow, это язык созданный статистиками для статистиков. 9 месяцев назад Микрософт приобрела компанию Revolution Analytics,  фокусировавшуюся на коммерциализации языка R и создании программных решений с его использованием. R добавят в Visual Studio. IMHO, у R большие перспективы.
avatar
Вдогонку, вот что еще нашел:

«Есть одна, важная для всех операционных систем особенность: R (в отличие от того же S-PLUS) держит все свои вычисления в оперативной памяти, поэтому если в процессе работы, скажем, выключится питание, то результаты сессии, не записанные явным образом в файл, пропадут.»

— Замечательно! Что тут еще сказать…
avatar
поставил + за Р, но не согласен что не по чем его учить, есть хорошие емкие ресурсы по его изучению, благо язык легкий, и больше запоминать надо чем учить. Есть бесплатные курсы, кому надо — самостоятельно выучить дело плевое, кому не надо тот и не знает про Р
avatar
MTrader, согласен, реклама обучения за 70 тыс НИПРАЙДЁТ)))) 
avatar
zip3n, пожалуйста, у нас есть вариант и за 18 тыс.
avatar
love_to_trade, Может быть ты знаешь: существуют ли какие-нибудь коннекторы R к Quik/SmartCOM/Transaq/Alor/MT5/AlfaDirect...?
avatar
Blade, коннекторов пока нет. По крайней мере, не видел.
avatar
MTrader, тут скорее вопрос рациональности. Как написали выше, есть библиотека «alglib» (спасибо А. Г. за пример) и другие решения.

И тут [внезапно] предлагается что-то новое. Основной вопрос состоит в том, а стоит ли отказываться от старых программ или языков (проверенных временем) и переходить на этот новый продукт (назовем его так). Пусть даже бесплатный. Стоит ли овчинка выделки?

Из плюсов я увидел разве что «продвинутую визуализацию» (как это нам преподносится). Да, с этим бывают сложности на других платформах. Но и они решаются.
avatar
Shadow, это не новое. Уже столько всего написано и переписано. Загляните на cran. Там немеряно либ разного рода. Если нужно крутитьвертеть массивы данных, работать с ними как векторами, то пожалуй лучше и проще чем r или python+numpy+pandas я не встречал. А если конечно делать бэктесты итерациями или на основе событийных моделей то лучше выбрать что-то более быстрое.
avatar
 Я че-то не въезжаю, как он котировки анализирует. Он сам запросы сроит что ли. Вот в базе рутикера миллиарды сделок. Любая внешняя система захлебнется, анализируя их в лоб. Поэтому приходится писать обработку сразу на SQL — таблицы с кешированными данными, строить индексы специальные и т.п.
   
avatar
Ru-Ticker.com, если данных немного, до нескольких гигабайт (чтоб в память поместились), то не захлебнется, так как функции векторизованы с учетом на это, и написаны на С, плюс многоядерность, а если больше, то надо делать map-reduce.
Плюс он может и в себе все это делать, и кешировать и индексировать.
avatar
 Наверное если поставить вопрос более обще, как R заточен на работу с bigdata
avatar
По функционалу R  — аналог Matlab, бесплатный (против 100 000 $), нет многих дополнительных пакетов (качественных,  очень дорогих). Отсюда все понятно.
avatar
R тормознутый… в нем по идее можно подключать собственные модули написанные на С, внутри модуля он обрабатывает данные быстро,  но когда у тебя несколько модулей подключено, и выполняешь скрипт сначала из одного модуля, потом из другого, и все это в цикле то будет тормозить.
Если допустим написать перебор какого нибудь массива данных по индексу с помощью скрипта R то будет в несколько раз тормознутее, чем обычная программа на нормальном языке. Быстро будет только если перебор по индексу сделать внутри модуля какого нибудь.

И потом если без подключения собственных модулей на С не хватит гибкости, а если уж ты пишешь модули на С, то тогда уж можно и собственную программу писать, и R уже особо не нужен
avatar
Скажите, а стратегии на тиковых данных, используя R, можно тестировать? Если да, хотелось бы узнать сколько времени потребуется чтобы протестировать стратегию за 1 год по 1 инструменту на тиках (для Si например)? Спасибо.
avatar
nvse, смотрите, один день тиковых данных (с открытием, мин-макс, закрытием) около 40 МБ, следовательно за год 10 ГБ.
Объем памяти должен быть не меньше, или же если не нужны мин-макс, а только какие-то одни цены, то следовательно раз в 5 поменьше, то 2 ГБ достаточно, или же делать кусками, так что да, даже без увеличения памяти, вполне возможно
avatar
AlexeyT, хм, интересно, а почему думаете весь этот объем данных надо обязатнльно держать в памяти? Можно ведь, например брать данные за какой то интервал (до 1 месяца например, а потом делать сброс данных и брать за следующий месяц, т.е загружать данные кусками) и использовать многопоточность (в случае если алгоритм можно распаралелить по временным промежуткам и они друг от друга никак не завсият). У меня просто сейчас дилема. Либо писать свой тестер-«велосипед» на С#, но на это уйдет время, либо попытаться найти что-то уже готовое. Но R как я понял мне для этого не подойдет, т.к он, как язык интерпретируемый, скорее всего будет проигрывать в скорости + нужно время на его изучение. Но наверное для тестирования свечных стратегий он подойдет. Имхо, конечно.
avatar
nvse, по умолчанию, R все объекты и расчеты держит в памяти (поэтому быстро), поэтому если потоком читать тики (например с finam или mfd) ну или из базы, то весь объект будет в памяти, но разумеется можно делать кусками, как вы пишете. В скорости он проигрывать сильно не будет, так как все такие функции так и так написаны на С или Фортране (и выполняются в памяти), поэтому они выполняются быстро.
Посмотрите посты с блога rforfinance,
rforfinance.ru/
там есть несколько тестов на дневках, но можно их переделать и на тики, там подход похожий.

avatar
nvse, ааа, и помимо варианта как указано в постах rforfinance (добавлять колонки как бы продажи и покупки и по ней считать прибыль), можно делать по другому, к таблице всех сделок (любого типа), сделать отдельную таблицу как бы сделки (по своим условиям), с тем же таймштампом, и функции из пакета blotter их сматчат, и посчитают статистику, графики красивые, так даже намного проще будет (так сделано у меня в анализе ЛЧИ, см. мои пред. посты)
avatar
nvse, вот еще пример, с ручками
profitraders.com/Rlang/CrossMA.html
avatar
AlexeyT, спасибо за информацию. Теперь наверное попробую сделать тестирование одного и того же большого объема данных на R и С#, будет интересно сравнить их результаты. В R как я понял есть много всяких плюшек и это конечно подкупает(открытый, бесплатный, много готовых решений, ui понравился, удобно работать с данными и т.д). Для полноты сравнения наверное имеет смысл потом еще с Python(Cython) сравнение сделать. И уже после этого делать какие либо выводы. Хотя может такие исследования уже проводились, надо поискать будет.
avatar
nvse, да, на R в частности для трейдинга,
есть много полезных пакетов, которые уже все делают,
строят графики, рассчитывают разнообразнейшую статистику, индикаторы и все такое, достачно подать на вход 2 таблички (все сделки и твои сделки), не уверен, что такое, в таком кол-ве есть даже для python, тем более для прочих языков.
в R еще плюс, что он с нуля до конца (web-сервис, например) можно сделать все на нем, в рамках единого синтаксиса, без доп.  фреймворков со своими нюансами
avatar
18р 29р 59р — это что? цены? 
avatar
Ivor, в тысячах рублей
avatar
Как R подключить к торгам на ФОРТС?


теги блога love_to_trade

....все тэги



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