Как объединить ежемесячные и ежедневные данные xts для использования с PerformanceAnalytics?

У меня есть несколько объектов xts, большинство из которых - ежедневные наблюдения. У меня один ежемесячный. Я хотел бы объединить три из них в один объект xts, который затем можно использовать в пакете PerfrormanceAnalytics (например, charts.PerformanceSummary). Имею следующее:

Ret <- merge.xts(dailyReturns[,3], 
       shortBothDaily[,3], 
       shortBothMonthly[,3])

Приведенный выше код дает мне объект xts с ежемесячными доходами, заполненными «NA». Я могу сделать эту заливку равной нулю, что затем позволяет мне строить график, но при этом получается пошаговая функция:

charts.PerformanceSummary(Ret)

введите описание изображения здесь

Я бы хотел что-то подобное, но с типичной совокупной доходностью для ежемесячных данных.

Я могу преобразовать две дневные серии в ежемесячные (to.monthly ()), но не хочу терять детальность в ежедневных доходах.

Есть ли элегантный способ сделать это? Может быть, заполнить смоделированными данными возврата? Или PerformanceAnalytics распознает ежемесячные данные о доходности и строит их соответствующим образом?

Я бы хотел увидеть что-то подобное (через Bloomberg):

введите описание изображения здесь

Как видите, у нас есть серия ежедневных доходностей, а другая серия ежемесячных доходностей нанесена на тот же период времени.

Это не так уж важно, но кажется довольно простым и, как если бы это было обычным делом. Я надеялся, что есть какой-то способ PerformanceAnalytics для построения ежемесячных и дневных значений вместе.


person lukehawk    schedule 06.04.2015    source источник
comment
Мне непонятно, что вы ищете. Ваши ежемесячные данные отображаются с правильным временным индексом. Если вы получаете доход на ежемесячной основе, то это пошаговая функция. Так что я действительно не понимаю, что, по вашему мнению, вы должны получить, или как, по вашему мнению, это должно выглядеть. Мы не можем угадать, что вы хотите, и PerformanceAnalytics не составляет данных.   -  person Brian G. Peterson    schedule 11.04.2015
comment
Вы грубы. Кроме того, я хорошо знаю, что это пошаговая функция, но я создал ее как обходной путь. Я полностью понимаю, ПОЧЕМУ я получил то, что получил, но то, что я получил, - это не то, что я хочу. Я спрашиваю вас всех, есть ли способ сделать что-то иное, чем это. Я бы предпочел увидеть   -  person lukehawk    schedule 15.04.2015
comment
Прошу прощения, если я был не совсем ясен, но я добавил диаграмму, чтобы показать, что я имею в виду.   -  person lukehawk    schedule 15.04.2015


Ответы (1)


График Bloomberg ошибочен. Он интерполирует данные там, где их нет.

Я предполагаю, что вам нужен cbind.

require(quantmod)
require(PerformanceAnalytics)
data(managers)
getSymbols.yahoo('IBM',from='1996-01-01',to='2006-12-31',env=.GlobalEnv)
IBM.r <- Return.calculate(Ad(IBM))
monthly.r<-cbind(IBM.r,managers[,c(8,10)],fill=0)
charts.PerformanceSummary(monthly.r)

вывод диаграммы

Если вы хотите составить данные, как это делает диаграмма Bloomberg, вы можете сделать это через na.approx, но, пожалуйста, не путайте это с реальными данными.

person Brian G. Peterson    schedule 24.04.2015
comment
Я хотел бы указать, что вам нужно будет использовать na.approx на совокупном капитале, а затем разложить прибыль от этого. - person Joshua Ulrich; 25.04.2015