从期权链中找到最接近当前股票价格的行使价。
Finding the closest strike to current stock price from an option chain.
目标是从期权链中找到最接近的行使价。这是我所了解的。
library(quantmod)
tickers = c("AAPL", "MSFT", "GS")
price = getQuote(tickers)
chains = lapply(tickers, getOptionChain, exp = "2019-01-25")
calls = lapply(chains, function(x) x$calls)
##I was thinking to use a function such as
which.min(abs(calls - price))
但是我不确定如何将其放入 lapply 或者是否有更好的选择。 Price 是一个数据框,calls 是一个列表。提前致谢
要获取相应的行,我们可以使用
Map(function(cl, p) cl[which.min(abs(p - cl$Strike)), ], calls, price$Last)
# [[1]]
# Strike Last Chg Bid Ask Vol OI
# AAPL190104C00148000 148 0.3 0.21 0.24 0.42 43235 4344
#
# [[2]]
# Strike Last Chg Bid Ask Vol OI
# MSFT190104C00102000 102 0.04 0 0.02 0.09 6397 3250
#
# [[3]]
# Strike Last Chg Bid Ask Vol OI
# GS190104C00175000 175 0.25 0.13 0 0.25 2624 678
哪里
price$Last
# [1] 148.26 101.93 175.05
在这种情况下,lapply
不是最佳选择,因为我们必须同时处理两个对象:price
和 calls
。在那种情况下 mapply
和 Map
完成工作,Map
与 mapply
和 SIMPLIFY = FALSE
.
相同
因此,我们同时检查 calls
和 price$Last
并应用
function(cl, p) cl[which.min(abs(p - cl$Strike)), ]
目标是从期权链中找到最接近的行使价。这是我所了解的。
library(quantmod)
tickers = c("AAPL", "MSFT", "GS")
price = getQuote(tickers)
chains = lapply(tickers, getOptionChain, exp = "2019-01-25")
calls = lapply(chains, function(x) x$calls)
##I was thinking to use a function such as
which.min(abs(calls - price))
但是我不确定如何将其放入 lapply 或者是否有更好的选择。 Price 是一个数据框,calls 是一个列表。提前致谢
要获取相应的行,我们可以使用
Map(function(cl, p) cl[which.min(abs(p - cl$Strike)), ], calls, price$Last)
# [[1]]
# Strike Last Chg Bid Ask Vol OI
# AAPL190104C00148000 148 0.3 0.21 0.24 0.42 43235 4344
#
# [[2]]
# Strike Last Chg Bid Ask Vol OI
# MSFT190104C00102000 102 0.04 0 0.02 0.09 6397 3250
#
# [[3]]
# Strike Last Chg Bid Ask Vol OI
# GS190104C00175000 175 0.25 0.13 0 0.25 2624 678
哪里
price$Last
# [1] 148.26 101.93 175.05
在这种情况下,lapply
不是最佳选择,因为我们必须同时处理两个对象:price
和 calls
。在那种情况下 mapply
和 Map
完成工作,Map
与 mapply
和 SIMPLIFY = FALSE
.
因此,我们同时检查 calls
和 price$Last
并应用
function(cl, p) cl[which.min(abs(p - cl$Strike)), ]