SciFi
SciFi личный блог
11 июня 2016, 14:58

Создание красивых графиков на R для RIM6

На R можно не только делать полезные расчеты, но и представлять их в красивом виде. 

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

Диаграмма размаха дает представление о том, какой будет размер тела свечи с вероятностью 50% — 60 пунктов и какой размер с вероятностью более 95% — не более примерно 250 пунктов. Видно также, что цена может теоретически улететь на 800 пунктов за 5 минут. 

Данные взял за последние 10 дней. Если взять за последние 30, можно увидеть выброс на 1600 пунктов.

Также это можно использовать для расстановки заявок в стакане, если вы используете математическую модель для предсказания цены.

Графики

* нажмите на картинку, чтобы увеличить и более четко увидеть текст и цифры
* синие горизонтальные линии на втором графике — это ± 1 сигма и 2 сигмы.

Создание красивых графиков на R для RIM6

Пояснение


Создание красивых графиков на R для RIM6
Эта картинка из википедии из статьи Квантиль.

Текстовая часть выдачи кода

> source("D://Dropbox//R//earnings-RTS.r")
[1] "sdT =  110.317631956078"
[1] "meanT - 2 * sdT =  -218.883720702279"
[1] "meanT - 1 * sdT =  -108.566088746201"
[1] "meanT + 1 * sdT =  112.069175165954"
[1] "meanT + 2 * sdT =  222.386807122032"


Код на R

#install.packages("tseries")
#install.packages("rusquant", repos="http://R-Forge.R-project.org")
# Установка пакетов. Она не требуется, если уже все установлено.

library(tseries)
library(rusquant)
# Подключение библиотек

if (length (RIM6) == 0) {
  getSymbols("RIM6", src = "Finam", from = Sys.Date() - 10, period = "5min")
}
# Получение данных, если их нет

abs.returns <- Cl(RIM6) - Op(RIM6)
# Абсолютные доходности

dev.off()
# Очистка графика через выключение графического устройства R

par(mfrow=c(3,1))
# Создаем график с 3 строками и 1 столбцом

hist(abs.returns, breaks=100, col = "blue", border = "gray",
     xlab = "Absolute Returns", ylab = "Frequency",
     main = "Histogram of absolute returns for RIM6 (5 min)")
# Гистограмма размеров свечей

axis(1, at = seq(-800, 800, by = 100), las = 1)
# Корректируем значения x-координат

d <- density(abs.returns)
# Функция плотности распределения

plot(d, main = "Density of absolute returns")
# Диаграмма плотности распределения

polygon(d, col="red", border="blue", lwd = 2)
# Закрашиваем диаграмму

axis(1, at = seq(-800, 800, by = 100), las = 1)
# Корректируем значения x-координат

meanT <- as.numeric(mean(abs.returns, na.rm=TRUE))
sdT <- as.numeric(sd(abs.returns, na.rm=TRUE))
abline(v = meanT + 1 * sdT, col = "blue", lwd = 2)
abline(v = meanT + 2 * sdT, col = "blue", lwd = 2)
abline(v = meanT - 1 * sdT, col = "blue", lwd = 2)
abline(v = meanT - 2 * sdT, col = "blue", lwd = 2)

print (paste("sdT = ",sdT))
print (paste("meanT - 2 * sdT = ",meanT - 2 * sdT))
print (paste("meanT - 1 * sdT = ",meanT - 1 * sdT))
print (paste("meanT + 1 * sdT = ",meanT + 1 * sdT))
print (paste("meanT + 2 * sdT = ",meanT + 2 * sdT))

v.abs.returns <- as.vector(abs.returns)
# Получение вектора

boxplot(v.abs.returns , xlab="Absolute returns" , 
        col="green", horizontal = TRUE, outline = TRUE, staplewex = 1)
# Диаграмма размаха, содержит медиану, верхний и нижний квантили, наблюдаемые максимум и минимум и выбросы

axis(1, at = seq(-800, 800, by = 100), las = 1)
# Корректируем значения x-координат

text(x = fivenum(v.abs.returns), labels = fivenum(v.abs.returns), y = 1.3)
# Добавление текста

Список источников

Polygon Drawing

Set or Query Graphical Parameters

How to specify the actual x axis values to plot as x axis ticks in R

Квантиль

Box Plots

2 Комментария
  • INTELLEKTTRADE
    11 июня 2016, 22:08
    Статья про Р? Плюсую не глядя
  • PAVEL VOROBEY
    12 июня 2016, 14:14
    РТС это развод, развод это, разведут вас и всех… все индексы это развод, как хотят так и торгуются, сегодня он копирует сбер завтра газ, через 3 дня нефть, через 4 бакс… неугадайка.
    РТС большой… нет не так… огромный любитель рисовать ДИВЕРЫ в огромных количествах

    на всех таймфреймах

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн