每年的每日算术和每日几何平均值(AAPL)

时间:2017-09-20 14:15:49

标签: r return quantmod yahoo-finance stock

我试图获得每年的每日算术和每日几何平均值,对于使用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,
             ...
             )

1 个答案:

答案 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参数更改为monthsweeks