从 getOptionChain 结果中过滤罢工和溢价

Filtering strikes and premiums from getOptionChain results

我 运行 以下代码可以正常工作:

library(quantmod)
Symbols<-c  ("AA","AAL","AAOI","ABBV","ABC","ABNB","ABT","ACAD","ACB","ACN",
     "ADBE","ADI","ADM","ADP","ADS","ADSK","AEO","AFL","AFRM","AAPL",
     "XOM","MSFT","JNJ")
Options.20220408 <- lapply(Symbols, getOptionChain)
names(Options.20220408) <- Symbols

我想知道如何创建一个仅包含看跌期权的新数据集,并通过定义溢价范围值 (premium_range) 过滤器提供预先定义的看跌期权溢价 (premium_range) premium_range)

例如,我想知道哪些看跌期权行使价的溢价在(0.8 到 1.2)之间

premium_range <-(>= 0.8 ,<=1.2)

期望的结果是了解哪些代码及其行使价当前提供的溢价介于 (premium_range)

中的指定值之间

为了过滤溢价,我考虑在“最后”列中,但也许“询问”列也可以。

在要价上完成选择的简短示例。我只是将它打印到控制台,但如果你愿意,你可以将结果保存在列表中。

library(quantmod)
Symbols<-c  ("AA","AAPL")
Options.20220408 <- lapply(Symbols, getOptionChain)
names(Options.20220408) <- Symbols


premium_range <- c(0.8, 1.2)

lapply(Options.20220408, function(x) subset(x$puts, x$puts$Ask >= premium_range[1] & x$puts$Ask <= premium_range[2] ))

$AA
                  Strike Last        Chg  Bid  Ask Vol  OI       LastTradeTime        IV   ITM
AA220408P00086000     86 0.90 -0.6500000 0.73 0.87  32 421 2022-04-06 11:50:01 0.5693402 FALSE
AA220408P00087000     87 1.06 -0.8100001 1.06 1.17 222 195 2022-04-06 12:07:18 0.5625044 FALSE

$AAPL
                    Strike Last  Chg  Bid  Ask   Vol    OI       LastTradeTime        IV   ITM
AAPL220408P00170000    170 1.12 0.74 1.11 1.12 75129 32287 2022-04-06 12:08:36 0.2539137 FALSE