построение графика SPX и VIX с использованием квантомода в R - PullRequest
3 голосов
/ 23 января 2012

Я только что познакомился с QuantMod и посмотрел примеры здесь http://www.r -chart.com / 2010/06 / фондовый анализ, используя-r.html Я попробовал следующий код,

getSymbols(c("^GSPC","^VIX"))
head(as.xts(merge(GSPC,VIX)))
chartSeries(c(GSPC, VIX), subset='last 3 months')

но график был совершенно не в масштабе, поэтому я надеюсь, что некоторые эксперты на этом форуме покажут мне, как правильно построить это.

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Попробуйте:

chart_Series(GSPC)
add_Series(OHLC(VIX)+1000,on=1)

Вам нужно использовать OHLC, чтобы удалить объем из VIX, поскольку он всегда равен нулю и, кажется, запутывает автоматический расчет ylim.Я также добавил 1000, чтобы сделать уровни двух серий немного ближе друг к другу.

2 голосов
/ 23 января 2012

Вот пример, который не использует chartSeries.

ind <- function(x) {
  # Divide each column by the first non-NA value
  # (There may already be a function to do that.)
  coredata(x) <- t(t(coredata(x)) / apply(coredata(x),2,function(u){ c(u[!is.na(u)&u!=0],NA)[1] }))
  x
}
x <- cbind( Ad(GSPC), Ad(VIX) )
x <- x["2011-11::"]

# Using base graphics
matplot( 
  index(x), coredata(ind(x)), 
  xlab="", ylab="", main="",
  type="l", lty=1, lwd=3, axes=FALSE 
)
abline(h=1, lty=3, col="lightgrey")
axis(2, las=1)
axis.Date(1, index(x))
box()
legend( "topleft", gsub("\\..*", "", names(x)), lty=1, lwd=3, col=1:2 )

# If you prefer ggplot2
library(ggplot2)
library(reshape2)
d <- data.frame( date = index(x), coredata(ind(x)) )
names(d) <- gsub("\\..*", "", names(d))
d <- melt(d, id.vars="date")
ggplot(d, aes(date, value, color=variable)) + geom_line(size=2)
...