【问题标题】:plotting SPX vs. VIX using quantmod in R在 R 中使用 quantmod 绘制 SPX 与 VIX
【发布时间】:2012-01-24 02:51:23
【问题描述】:

我刚刚被介绍给 quantmod,并在此处查看示例 http://www.r-chart.com/2010/06/stock-analysis-using-r.html 我尝试了以下代码,

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

但是这个图表完全超出了比例,所以我希望这个论坛上的一些专家能告诉我如何正确地绘制这个。

【问题讨论】:

  • 如果您想要烛台图和成交量图,使用单独的图会更具可读性,如上一个问题:stackoverflow.com/questions/8815697/…。如果要比较价格走势,可以将调整后的价格时间序列除以它们的第一个值,使它们从同一点开始。
  • 我只想比较价格走势。我正在寻找一种在 2 个单独的轴上绘制原始时间序列的方法。考虑到这个包有多少功能,我想肯定有一些东西可以处理两个不同的轴。
  • 要拥有两个不同的 y 轴,您可能需要检查:stackoverflow.com/questions/6142944/…

标签: r quantmod


【解决方案1】:

试试这个:

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

您需要使用 OHLC 来从 VIX 中删除音量,因为它始终为零并且似乎会影响自动 ylim 计算。我还加了1000,让两个系列的关卡更接近一点。

【讨论】:

    【解决方案2】:

    这是一个不使用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 2011-12-11
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多