Нормальный и лог возвратный график в 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()

Другие вопросы по тегам