应用ROC函数计较多支股票收益率
当前位置:以往代写 > 其他教程 >应用ROC函数计较多支股票收益率
2019-06-14

应用ROC函数计较多支股票收益率

应用ROC函数计较多支股票收益率

有时候需要计较同一个data frame中的多支股票的收益率,实现这一目标最冒失的做法是对罗列办轮回。这个要领有失雅观且不足高效。显式轮回是应用R语言的大忌之一,所以才有了*apply族函数的降生,但是有时候,*apply函数也不是须要的。好比在计较多支股票收益率的时候,就可以用TTR包中的ROC函数取代。

> require(quantmod)
> symbols < -c(‘FNMIX’,’DBLTX’,’AGG’,’^GSPC’)
> getSymbols(symbols, src=”yahoo”, from=”2012-01-01″, to=Sys.Date())
[1] “FNMIX” “DBLTX” “AGG” “GSPC”
> y < – merge(Ad(FNMIX), Ad(DBLTX), Ad(AGG), Ad(GSPC))
> head(ROC(y))
FNMIX.Adjusted DBLTX.Adjusted AGG.Adjusted GSPC.Adjusted
2012-01-02 NA NA NA NA
2012-01-03 -0.001278773 0.000000000 -0.0013740670 0.000187914
2012-01-04 -0.001280410 0.000000000 0.0013740670 0.002939385
2012-01-05 -0.001282051 0.000922084 0.0008235348 -0.002540185
2012-01-08 -0.001283697 0.000000000 -0.0008235348 0.002259128
2012-01-09 -0.001285347 0.001841621 -0.0002746624 0.008846519

假如你细看ROC函数的内容:

> ROC
function (x, n = 1, type = c(“continuous”, “discrete”), na.pad = TRUE)
{
x < – try.xts(x, error = as.matrix)
type <- match.arg(type)
if (is.xts(x)) {
if (type == “discrete”) {
roc <- x/lag(x, n, na.pad = na.pad) – 1
}
if (type == “continuous”) {
roc <- diff(log(x), n, na.pad = na.pad)
}
reclass(roc, x)
}
else {
NAs <- NULL
if (na.pad) {
NAs <- rep(NA, n)
}
if (type == “discrete”) {
roc <- c(NAs, x[(n + 1):NROW(x)]/x[1:(NROW(x) – n)] –
1)
}
if (type == “continuous”) {
roc <- c(NAs, diff(log(x), n))
}
return(roc)
}
}


会发明ROC主要挪用了base包中的log函数和diff函数。

    关键字:

在线提交作业