2013-11-20 55 views
1

我想要做的與R.包TSERIES一個簡單的回溯測試讓我給你一個小例子組合優化TSERIES [R

還有就是在樣本數據的時間序列,並進行樣本數據的時間序列,它包含2個股票和3個回報。

isd<-as.timeSeries(matrix(c(0.02,0.01,0.03,0.021,0.031,0.014),nrow=3,ncol=2)) 

出樣本數據:

樣本數據

oosd<-as.timeSeries(matrix(c(0.015,0.029,0.036,0.027,0.042,0.023),nrow=3,ncol=2)) 

現在我計算一環內搭的樣本數據,並從出一個新行添加到該數據在循環的每個步驟中採樣數據。然後,每次使用新的時間序列時,它都會優化我的投資組合。

for(i in 1:3){ 
x<-rbind(isd,oosd[1:i,]) 
print(portfolio.optim(x))} 

我得到以下輸出與$ PW =的最優權重,$ PX =每天的投資組合的收益,$ PS =平均投資組合中完全periode回報,$ PS =標準偏差對整個投資組合periode

樣本數據加上第一天的數據進行樣本數據的

出樣本數據的

$pw 
[1] 0.5 0.5 

$px 
[1] 0.0205 0.0205 0.0220 0.0210 

$pm 
[1] 0.021 

$ps 
[1] 0.0007071068 

樣本數據加上2天

$pw 
[1] 0.5 0.5 

$px 
[1] 0.0205 0.0205 0.0220 0.0210 0.0355 

$pm 
[1] 0.0239 

$ps 
[1] 0.006513448 

樣本數據加上3天后取出樣本數據

$pw 
[1] 0.5 0.5 

$px 
[1] 0.0205 0.0205 0.0220 0.0210 0.0355 0.0295 

$pm 
[1] 0.02483333 

$ps 
[1] 0.006258328 

所以現在我的問題的。是否有可能在每個循環步驟中提取$ px的最後一個數字並將其存儲在空向量中。

如果我這樣做了,整個投資組合的優化得到薩法德在矢量

a<-NULL 
for(i in 1:3){ 
x<-rbind(isd,oosd[1:i,]) 
a<-c(a,portfolio.optim(x))} 

我想做的事情上與樣本數據257和253一個時間序列是回測出樣本數據,以便該提取是一種必要的

我希望你能幫助我與我的問題

問候

回答

1

您可以訪問最後px as a$px[length(a$px)]。在循環中使用rbind並不是一個好習慣,如果你不能避免循環,預先分配一個向量,然後填充它,那麼對於更大的數據集,事情會變得非常緩慢。我會完全消除循環..

require(timeSeries) 
isd<-as.timeSeries(matrix(c(0.02,0.01,0.03,0.021,0.031,0.014),nrow=3,ncol=2)) 
oosd<-as.timeSeries(matrix(c(0.015,0.029,0.036,0.027,0.042,0.023),nrow=3,ncol=2)) 
mydata <- rbind(isd,oosd) 
sapply(4:dim(mydata)[1], function(ind, mydata) portfolio.optim(mydata[1:ind,])$px[ind], mydata=mydata)