Нормальный и лог возвратный график в R и соответствующие возвраты
У меня есть лист данных, с большим количеством вар. компании с индексом DAX. Я пытаюсь получить временные ряды для BMW и SIEMENS, а также возврат журналов от них. Извините, не могу прикрепить фото... Образец:
Positions ALLIANZ.HLDG. COMMERZBANK DRESDNER.BANK BMW SCHERING BASF
01/01/1973 155.51 147.41 18.40 103.97 36.88 14.96
01/02/1973 155.51 147.41 18.40 109.05 37.44 15.43
01/03/1973 160.58 149.14 18.80 109.83 37.79 15.61
01/04/1973 162.27 152.05 18.91 110.81 37.86 15.85
01/05/1973 164.30 152.05 18.89 109.44 37.44 15.75
01/08/1973 164.30 152.25 18.99 109.05 37.79 15.80
Данные датируются 197X г., но мне нужны данные только с 02.01.1989 г. до конца листа.
Другой - извлечь данные за 1996 год (BMW, SIEMENS). И рассчитать соответствующую прибыль за этот конкретный год. Я полностью застрял и был бы признателен за помощь. Спасибо!
Пожалуйста, помогите мне, как рассчитать это в R.
1 ответ
Вы можете сделать это с quantmod
пакет. Вызывая ваш стол выше df
,
library(quantmod)
df$Positions <- as.Date(df$Positions, format="%m/%d/%Y")
rownames(df) <- df$Positions
bmw.xts <- xts(df$BMW,order.by=df$Positions)
periodReturn(bmw.xts,period="daily")
# daily.returns
# 1973-01-01 0.000000000
# 1973-01-02 0.048860248
# 1973-01-03 0.007152682
# 1973-01-04 0.008922881
# 1973-01-05 -0.012363505
# 1973-01-08 -0.003563596
periodReturn(bmw.xts,period="daily", type="log")
# daily.returns
# 1973-01-01 0.000000000
# 1973-01-02 0.047704097
# 1973-01-03 0.007127223
# 1973-01-04 0.008883307
# 1973-01-05 -0.012440569
# 1973-01-08 -0.003569961
periodReturn(bmw.xts,period="daily", subset="1973-01-03::")
# daily.returns
# 1973-01-03 0.007152682
# 1973-01-04 0.008922881
# 1973-01-05 -0.012363505
# 1973-01-08 -0.003563596
При настройке таблицы первый столбец, содержащий даты, загружается в столбец. Positions
что, вероятно, не то, что вы хотите. Тем не менее я оставил это таким образом, чтобы избежать путаницы. Так Positions
это временная метка в этом примере. Они должны быть преобразованы в даты с as.Date(...)
функция. Затем мы создаем временной ряд XTS, bmw.xts
от BMW
колонка. Тогда мы можем использовать функцию QuantMod periodReturn(...)
генерировать прибыль. subset=
строка отформатирована как "start::end"
, Если конец отсутствует, временной ряд переносится в последнюю строку.
Наконец, пример построения
library(ggplot2)
library(reshape2) # for melt(...)
basf.xts <- xts(df$BASF,order.by=df$Positions)
returns <- data.frame(df$Positions,
periodReturn(bmw.xts,period="daily",type="log"),
periodReturn(basf.xts,period="daily",type="log"))
colnames(returns)=c("Date","BMW","BASF")
gg <- melt(returns, id="Date", variable.name="Stock", value.name="Log.Return")
ggplot(gg, aes(x=Date, y=Log.Return, color=Stock))+
geom_point()+ geom_line()