我试图获得每年的每日算术和每日几何平均值,对于使用R的APPL股票数据。我对此的实现将是最后几行中的periodReturn函数,但它似乎没有工作和错误:' ...'在不正确的背景下使用。
如何修改我的代码,以便获得所需的输出?一些帮助将深受赞赏。
# Get historical price data (daily)
getSymbols('AAPL', from = "2005-01-01")
AAPLdaily <- as.data.frame(AAPL)
head(AAPLdaily)
?to.period
# AAPLweekly <- to.weekly(to.weekly(AAPL, indexAt = 'endof'))
# AAPLweekly <- as.data.frame(AAPLweekly)
# Better to do it in one step like this:
AAPLweekly <- as.data.frame( to.weekly(AAPL, indexAt = 'endof') )
head(AAPLweekly)
AAPLmonthly <- as.data.frame( to.monthly(AAPL, indexAt = 'endof') )
head(AAPLmonthly)
AAPLyearly <- as.data.frame( to.yearly(AAPL, indexAt = 'endof') )
AAPLyearly
# Another way to do this
AAPLweekly1 <- as.data.frame(to.period(AAPL, period = 'weeks', indexAt = 'endof'))
head(AAPLweekly1)
AAPLmonthly1 <- as.data.frame(to.period(AAPL, period = 'months', indexAt = 'endof'))
head(AAPLmonthly1)
AAPLyearly1 <- as.data.frame(to.period(AAPL, period = 'years', indexAt = 'endof'))
head(AAPLyearly1)
########## Another possible method #########
# Change to data.frames
AAPL = as.data.frame(AAPL)
head(AAPL)
# Get Dates
dates <- as.Date(row.names(AAPL))
head(dates)
# Create a cloumn in APPL data frame with the dates
AAPL$dates <- as.Date(row.names(AAPL))
?aggregate
?substr
# Last Day of month
lastDayofMonth <- aggregate(AAPL["dates"], list(month = substr(AAPL$dates, 1, 7)), max)
head(lastDayofMonth)
AAPLmonth <- AAPL[dates %in% lastDayofMonth$dates, ]
head(AAPLmonth)
# Last day of year
lastDayofYear <- aggregate(AAPL["dates"], list(month = substr(AAPL$dates, 1, 4)), max)
head(lastDayofYear)
AAPLyear <- AAPL[dates %in% lastDayofYear$dates, ]
AAPLmonth
AAPLdaily <- as.data.frame( to.daily(AAPL, indexAt = 'endof') )
AAPLdaily
dailyReturn(AAPLdaily)
periodReturn(AAPL,
period='daily',
subset=NULL,
type='arithmetic',
leading=TRUE,
...
)
答案 0 :(得分:1)
如果你要求的是年度,月度,每周算术/几何回报,你所要做的就是:
getSymbols('AAPL',from= '2010-01-01')
ROC(AAPL[endpoints(AAPL,on = 'years'),"AAPL.Adjusted"],type='discrete’)
2012-12-31 0.32566879
2013-12-31 0.08069493
2014-12-31 0.40622488
2015-12-31 -0.03013708
2016-12-30 0.12480425
2017-09-20 0.36428706
对于几何(log)返回,将ROC
参数更改为'continuous':
ROC(AAPL[endpoints(AAPL,on = 'years'),"AAPL.Adjusted"],type='continuous’)
2012-12-31 0.28191708
2013-12-31 0.07760429
2014-12-31 0.34090873
2015-12-31 -0.03060053
2016-12-30 0.11760902
2017-09-20 0.31063199
对于其他时段,将endpoints
参数更改为months
或weeks
。