2013-10-22 2 views
0

10 개의 포트폴리오에 대해 시간이 지남에 따라 포트폴리오 수익률을 계산하고 싶습니다. 가중치는 고정되어 있으며 매월 다시 균형을 맞 춥니 다.Return.portfolio 및 Return.rebalancing in R

An 'xts' object on 2004-01-30/2013-09-30 containing: 
Data: num [1:117, 1:46] 0.000176 0.000158 0.000207 0.000184 0.000188 ... 
- attr(*, "dimnames")=List of 2 
..$ : NULL 
..$ : chr [1:46] "Cash CHF" "Cash EUR" "Cash USD" "Cash JPY" ... 
Indexed by objects of class: [POSIXct,POSIXt] TZ: UTC 
xts Attributes: 
NULL 

내 무게 (x)는

FI1 FI2 YI1 YI2 BAL1 BAL2 GRO1 GRO2 EQ1 EQ2 
1 0.22 0.15 0.1 0.1 0.05 0.05 0.05 0.05 0.05 0.05 
2 0.00 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 
3 0.00 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 
4 0.00 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 
5 0.00 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 
6 0.00 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 
입니다 다음과 같이

내 데이터 (추출물) (반환 데이터, 변수 이름 returns_xts)

Cash CHF  Cash EUR  Cash USD Cash JPY  Cash GBP  Cash SEK Cash   NOK 
2004-01-30 0.0001758268 0.0069666073 0.0143854541 0.02939934 0.039127564 -0.011597439 -0.03418345 
2004-02-27 0.0001575201 0.0068025711 0.0045099598 -0.02749282 0.030491352 0.006885383 0.00460446 
2004-03-31 0.0002070932 -0.0099222699 0.0041733946 0.05164557 -0.006797264 -0.013120825 0.02877022 
2004-04-30 0.0001835614 -0.0011155096 0.0246020555 -0.03410368 -0.009113713 0.013580744 0.02329576 
2004-05-31 0.0001878767 -0.0143628583 -0.0323057302 -0.02467392 0.001095043 -0.009360966 -0.01190726 
2004-06-30 0.0001861022 -0.0006346109 0.0002228905 0.00000000 -0.006496727 -0.007516115 -0.03100281 

구조가 보인다

그들의 구조는

입니다.

본질적으로 10 가지 포트폴리오에 대해 월간 수익을 117 개월 동안 계산하고 싶습니다. 내가 Return.portfolio 또는 Return.rebalancing으로 이렇게하면

, 나는 다음과 같은 오류 메시지를받을

Error in checkData(weights, method = "xts") : 
The data cannot be converted into a time series. If you are trying to pass in names from a data object with one column, you should use the form 'data[rows, columns, drop = FALSE]'. 
Rownames should have standard date formats, such as '1985-03-15'. 

또는

Error in Return.portfolio(returns_xts, na.rm = TRUE), coredata(x), : 
Use Return.rebalancing for multiple weighting periods. 
This function is for portfolios with a single set of weights. 

다음과 같이 내 코드는 다음과 같습니다

pf_returns=Return.portfolio(returns_xts,coredata(x),wealth.index=FALSE,geometric=TRUE) 

누군가가이 불행에서 나를 도울 수 있습니까? (즉, 체중 매트릭스를 재구성하는 데 도움이됩니까?)

Andreas

답변

3

'체중'개체는 시계열이 아닙니다. 문서에 명시된 바와 같이

은, 무게는 단지 무게의 단일 세트로 처리됩니다로

a time series or single-row matrix/vector containing asset weights, as percentages 

은 하나의 행이나 무게의 벡터, 시계열 할 필요는 없습니다 할 필요가 시계열의 시작 부분에 적용하십시오. 실제로 재조정을 원하는 경우에

, 당신의 포트폴리오의 균형을 하시려면 무엇 Return.rebalancing 기능, 무게는 시계열 (바람직 XTS) 오브젝트를하는 것이 따라서 필요성을 이야기해야합니다.

+0

감사합니다. 이를 쉽게 수행 할 수있는 방법이 있습니까? 즉,이 가중치 벡터를 월별 기준으로 12-87에서 09-13 사이의 xts 시계열로 만들려면 어떻게해야합니까? – user2157086

+0

무게 * 목록 *이 있습니다. 최선의 방법은 먼저 행렬로 변경 한 다음 xts 객체로 변경하는 것입니다. –

+0

또한 질문의 (재현 불가능한) 가중치 객체의 모든 행은 첫 번째 행을 제외하고는 0이라는 것을 알 수 있습니다. 하나의 가중치 세트 만 원할 경우 벡터 또는 단일 행 시간 시리즈를 사용하십시오. –