【问题标题】:Finding the closest strike to current stock price from an option chain.从期权链中找到最接近当前股票价格的行使价。
【发布时间】:2019-05-31 11:27:12
【问题描述】:

目标是从期权链中找到最接近的执行价格。这是我所知道的。

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 是一个列表。提前致谢

【问题讨论】:

    标签: r finance quantmod performanceanalytics


    【解决方案1】:

    为了得到我们可能使用的相应行

    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 不是最佳选择,因为我们必须同时处理两个对象:pricecalls。在这种情况下,mapplyMap 完成这项工作,MapmapplySIMPLIFY = FALSE 相同。

    所以,我们同时检查callsprice$Last 并申请

    function(cl, p) cl[which.min(abs(p - cl$Strike)), ]
    

    【讨论】:

    • 感谢 Julien 的快速反应和直觉,这正是我想要的效果!
    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多