Цикл создания новых групп данных путем объединения различных столбцов в R (анализ портфеля) - PullRequest
1 голос
/ 03 октября 2019

У меня есть простая проблема, и я был бы признателен за чей-либо совет.

Я работаю над проблемой анализа инвестиционного портфеля и создал объект временного ряда, который включает данные ежедневной доходности 100 акций. Я пытаюсь создать 100 портфелей, каждый из которых содержит k акций (т.е. портфель 1 включает только акции 1, портфель 2 включает акции 1 и 2, портфель 3 включает акции 1, 2 и 3 и т. Д.). Моя идея состоит в том, чтобы написать цикл for с использованием cbind для определения каждого портфеля (поскольку каждый столбец представляет одну акцию, мы можем сгруппировать столбцы, чтобы создать новый объект, который включает данные о возвратах для каждой акции в этом портфеле). К сожалению, мой код не работает, и я был бы признателен за помощь в исправлении моего кода или предложении лучшего способа достижения того же результата.

Это код, который я пробовал:

port1 <- returns$X1 #defines the first portfolio, which only includes data from the first column (stock 1)

for(i in 2:100) 
{port[i] <- cbind(port[i-1],returns$Xi)}

Пожалуйста, найдите ниже мой начальный код:

prices <- read.csv("ass2data.csv") #import data
prices$Date <- as.Date(prices$Date, format("%d/%m/%Y"))
prices <- prices[order(prices$Date), ]
prices <- as.xts(prices[, 2:101], order.by = prices$Date) #transform data table into time series in order to conduct returns analysis
returns <- Return.calculate(prices) #create variable returns
returns <- returns[-1, ] #remove the first row of returns (which are NA)
colnames(returns) <- paste0("X", 1:100) #update column names

Это снимок данных о доходах для первых пяти акций:

> head(returns)
                     X1           X2           X3           X4           X5
2014-01-02  0.003270007  0.003266847  0.002258356  0.002421568  0.003186671
2014-01-03 -0.018734046 -0.019517029 -0.021293375 -0.016185312 -0.018242174
2014-01-06 -0.001660788 -0.002475299 -0.003453436 -0.014787330 -0.002424078
2014-01-07  0.009156889 -0.001674973 -0.006930807 -0.013347733 -0.002429969
2014-01-08  0.002465390  0.006669705 -0.002210073  0.004210054  0.004871776
2014-01-09 -0.013155214 -0.006625514 -0.003497319 -0.004192403 -0.008884820

И это образецкаким должен быть результат для третьего портфеля:

                     X1           X2           X3
2014-01-02  0.003270007  0.003266847  0.002258356
2014-01-03 -0.018734046 -0.019517029 -0.021293375
2014-01-06 -0.001660788 -0.002475299 -0.003453436
2014-01-07  0.009156889 -0.001674973 -0.006930807
2014-01-08  0.002465390  0.006669705 -0.002210073
2014-01-09 -0.013155214 -0.006625514 -0.003497319

Спасибо !!

...