2013-01-07 2 views
2

이것은 중요하지 않은 질문 일 수 있지만 불행히도 해결할 수는 없습니다. 나는 50 개 회사의 주식 포트폴리오를 가지고있다. 나는 각 회사의 해당 날짜에 마감일과 마감 가격을 가지고 있습니다. 각 회사의 데이터는 주식이 거래되는 날짜와 관련하여 다릅니다. 월별 회신 계산 : R

나는 매일 수익을 계산하는이 코드를 사용 :

return=matrix(NA,nrow(companies),ncol(companies)-1) 


for (j in 2:52){ 
    k=0 
    for (i in 1:nrow(companies)){ 
    if (!is.na(companies[i,j]) & k==0) { 
     base= companies[i,j] 
     k=k+1 
    } 
    else {if (k==1) {return[i,j-1] = ((companies[i,j]-base)/base)*100} 
      else {temp=0} 
    } 
    } 
} 
return[1:30,] 

내가 지금 회사의 동일한 포트폴리오의 월별 수익률을 계산합니다. 나는이를 계산하기 위해 사용하고있는 공식은 다음과 같습니다

Return = [(Price on Last day of month) - (Price on other day)]*100/(Price on last day of month) 

내가 (즉 내가 가진 데이터의 기간이기 때문에) 1 년에 12 개월 동안 12 년의 기간 동안이 과정을 반복합니다. 이 계산을 위해 for 루프를 작성할 계획입니다. 누군가 나를 도와주세요. 불행히도, 나는 quantmod가 가격을 읽을 수없는 인도 증권 거래소의 주식 가격이기 때문에 quantmod 패키지를 사용할 수 없습니다.

+6

방법 데이터 날짜가 생겼는데? 2001-09-11? –

+1

'quantomod '로 할 수 있다면, 나의 첫 번째 반사는이 좋은 패키지를 사용하기 위해 데이터를 포맷하는 것입니다. – agstudy

+0

@agstudy가 옳다. IndianStock 형식을 읽고'quantmod '가 인식하는 형식으로 작성하는 두 줄의 코드를 작성하는 것이 훨씬 더 간단 할 것이다. –

답변

1

quantmod을 사용해야하며 그렇게 할 수 있습니다. quantmod 메서드 monthlyReturn, dailyReturn, ..., allReturns은 입력으로 xts 시간 시리즈가 필요합니다. 따라서 일일 데이터 (예 : 마감일)와 해당 날짜가있는 경우 시계열을 구성하여 원하는 quantmod 방법으로 전달할 수 있습니다.

예 :

library(package="quantmod") 

prices <- c(7655.88, 7612.39, 7612.39, 7778.78, 7756.44, 7776.37) 
dates <- as.Date(c("2012-12-26", "2012-12-27", "2012-12-30", "2013-01-01", "2013-01-02", "2013-01-03")) 
ts <- xts(prices, dates) 

dailyReturn(ts) 
monthlyReturn(ts) # this will return bogus data because we don't have one month of data in this example 
+3

실제로'xts' 객체는 필요 없습니다. – GSee

+0

지난 12 년 동안의 기업 (2000 년 이후). 그러나 대부분의 회사에서 사용할 수있는 데이터는 약 2004 년경부터 야후 파이낸스에서 나온 것이므로 패키지를 사용하기가 어렵습니다. 내가 가지고있는 데이터를 CSV 파일에서 quantmod로 사용할 수 있습니까? – PrashanthVajjhala

+0

06-Jan-00 \t 1355.85 \t 내 데이터의 형식입니다. 52 개의 열과 약 3300 개의 데이터 행이 있습니다. – PrashanthVajjhala