首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IBrokers将隐含波动率从TWS转换为R?

如何使用IBrokers将隐含波动率从TWS转换为R?
EN

Stack Overflow用户
提问于 2020-05-28 00:52:30
回答 1查看 76关注 0票数 0

目前,我已经修改了在这里找到的一些代码,以读取R中期权的出价/要价,然后我使用calculateImpliedVolatility将这些价格反馈给TWS,以获得隐含波动率。看起来我不需要第二步就可以使用.twsTickType$MODEL_OPTION来获取它们。我试图修改相同的代码,我用于出价/要价,但一直无法让它工作。这是我尝试过的:

代码语言:javascript
复制
eWrapper.data.Opt_Model <- function(n) {
  eW <- eWrapper(NULL)  # use basic template
  eW$assign.Data("data", rep(list(structure(.xts(matrix(rep(NA_real_,8),nc=8),0),
                                            .Dimnames=list(NULL,c("ImpVol","Delta","tv","pvdiv","gamma","vega",'theta','spot')))),n))

  eW$tickPrice <- function(curMsg, msg, timestamp, file, ...) 
  {
    tickType = msg[3]
    msg <- as.numeric(msg)
    id <- msg[2] #as.numeric(msg[2])
    data <- eW$get.Data("data") #[[1]]  # list position of symbol (by id == msg[2])
    attr(data[[id]],"index") <- as.numeric(Sys.time())
    nr.data <- NROW(data[[id]])
    if(tickType == .twsTickType$MODEL_OPTION) {
      data[[id]][nr.data,1:8] <- msg[4:11]
    } 
    #else
    # if(tickType == .twsTickType$ASK) {
    #    data[[id]][nr.data,2] <- msg[4]
    #  } 
    eW$assign.Data("data", data)
    c(curMsg, msg)
  }

  return(eW)
}
EN

回答 1

Stack Overflow用户

发布于 2020-08-01 03:03:33

它花了一些时间,但我得到了它的工作。

代码语言:javascript
复制
> eWrapper.data.Opt_Model <- function(n) {   eW <- eWrapper(NULL)  # use
> basic template   eW$assign.Data("data",
> rep(list(structure(.xts(matrix(rep(NA_real_,8),nc=8),0),
>                                             .Dimnames=list(NULL,c('modelOption: impVol: ',' delta: ',' modelPrice:
> ',' pvDiv ',' gamma: ',' vega: ',' theta: ',' undPrice: ')))),n))
>      eW$tickOptionComputation <- function(curMsg, msg, timestamp, file, ...)    {
>     tickType = msg[3]
>     msg <- as.numeric(msg)
>     id <- msg[2] #as.numeric(msg[2])
>     data <- eW$get.Data("data") #[[1]]  # list position of symbol (by id == msg[2])
>     attr(data[[id]],"index") <- as.numeric(Sys.time())
>     nr.data <- NROW(data[[id]])
>     if(tickType == .twsTickType$MODEL_OPTION) {
>       data[[id]][nr.data,1:8] <- msg[4:11]
>     } 
>     #else
>     # if(tickType == .twsTickType$ASK) {
>     #    data[[id]][nr.data,2] <- msg[4]
>     #  } 
>     eW$assign.Data("data", data)
>     c(curMsg, msg)   }
>      return(eW) }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62048512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档