2012-12-21 44 views
5

Hãy xem xét chúng tôi có chuỗi thời gian hàng ngày về giá cổ phiếu (giả sử chỉ số FTSE). Chúng tôi muốn tính toán lợi nhuận hàng ngày, hàng tháng và hàng năm.Tổng hợp chuỗi thời gian thành dữ liệu hàng năm

Để tính toán lợi nhuận hàng tháng và hàng năm, chúng tôi phải tổng hợp dữ liệu chuỗi thời gian thành tháng và năm. Trong gói "sở thú", chúng tôi có hàm tổng hợp có thể giúp chúng tôi tổng hợp dữ liệu theo tần suất hàng tháng. Bên dưới dòng mã sử dụng lớp as.yearmon:

# Computing simple returns 
FTSERet = diff(FTSE)/lag(FTSE,k=-1) 

# Monthly simple returns 
MonRet <- aggregate(FTSERet+1, as.yearmon, prod)-1 

# Quarterly simple returns 
QuartRet <- aggregate(FTSERet+1, as.yearqtr, prod)-1 

tôi đã không tìm thấy một lớp tương đương như as.yearmon cho dữ liệu hàng tháng hoặc as.yearqtr cho dữ liệu quý cho tập hợp số liệu năm. Bạn có bất kỳ gợi ý về những thứ đó?

Trả lời

4

"yearmon""yearqtr" đại diện cho ngày theo năm + phần:

as.year <- function(x) as.integer(as.yearmon(x)) 

Cũng lưu ý cấu trúc này: diff(x, arithmetic = FALSE) - 1

0

Kiểm tra gói chuỗi thời gian here và tìm tùy chọn 'theo mùa' ở đâu đó trong tài liệu. Tôi đoán cho dữ liệu hàng quý bạn đang tìm trong chuỗi thời gian với tính thời vụ là 4, nếu bạn nhìn vào dữ liệu hàng tháng - bạn đang tìm trong chuỗi thời gian với tính thời vụ của các lớp 12.

0

Bạn có thể muốn nhìn vào allReturns chức năng trong gói quantmod.

library(quantmod) 
getSymbols("^FTSE") 
allRet <- allReturns(FTSE) 

Để tính lợi nhuận hàng năm bằng cách sử dụng aggregate.zoo, chỉ cần trích xuất năm từ chỉ mục.

YearRet <- aggregate(FTSERet+1, as.integer(format(index(FTSERet),"%Y")), prod)-1 
+0

Khoảng thời gian chức năngQuay lại yêu cầu "đối tượng giá trạng thái hoặc đối tượng loại OHLC", cách chuyển đổi đối tượng sở thú thành lớp đối tượng được yêu cầu? –

+0

@LorenzoRigamonti: bạn có thể sử dụng 'allReturns (as.xts (zoo_object))'. –

Các vấn đề liên quan